diff -pruN 2.14.6+dfsg-0.1/CMakeLists.txt 2.15.0+dfsg-0.3/CMakeLists.txt
--- 2.14.6+dfsg-0.1/CMakeLists.txt	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/CMakeLists.txt	2025-09-15 11:55:59.000000000 +0000
@@ -20,25 +20,26 @@ include(CheckStructHasMember)
 include(CheckSymbolExists)
 include(CMakeDependentOption)
 include(CMakePackageConfigHelpers)
+include(CMakePushCheckState)
 include(FindPkgConfig)
 include(GNUInstallDirs)
 
 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(LIBXML2_WITH_CATALOG "Add the Catalog support" ON)
 option(LIBXML2_WITH_DEBUG "Add the debugging module" ON)
+option(LIBXML2_WITH_DOCS "Build documentation" OFF)
 option(LIBXML2_WITH_HTML "Add the HTML support" ON)
-option(LIBXML2_WITH_HTTP "Add the HTTP support" OFF)
+option(LIBXML2_WITH_HTTP "ABI compatibility for removed HTTP support" OFF)
 option(LIBXML2_WITH_ICONV "Add ICONV support" ON)
 option(LIBXML2_WITH_ICU "Add ICU support" OFF)
 option(LIBXML2_WITH_ISO8859X "Add ISO8859X support if no iconv" ON)
 option(LIBXML2_WITH_LEGACY "Add deprecated APIs for compatibility" OFF)
-option(LIBXML2_WITH_LZMA "Use liblzma" OFF)
 option(LIBXML2_WITH_MODULES "Add the dynamic modules support" ON)
 option(LIBXML2_WITH_OUTPUT "Add the serialization support" ON)
 option(LIBXML2_WITH_PATTERN "Add the xmlPattern selection interface" ON)
 option(LIBXML2_WITH_PROGRAMS "Build programs" ON)
 option(LIBXML2_WITH_PUSH "Add the PUSH parser interfaces" ON)
-option(LIBXML2_WITH_PYTHON "Build Python bindings" ON)
+option(LIBXML2_WITH_PYTHON "Build Python bindings" OFF)
 option(LIBXML2_WITH_READLINE "readline support for xmllint shell" OFF)
 option(LIBXML2_WITH_REGEXPS "Add Regular Expressions support" ON)
 option(LIBXML2_WITH_SAX1 "Add the older SAX1 interface" ON)
@@ -66,7 +67,7 @@ cmake_dependent_option(
     LIBXML2_WITH_SCHEMAS "Add XML Schemas 1.0 support" ON
     "LIBXML2_WITH_PATTERN;LIBXML2_WITH_REGEXPS" OFF)
 cmake_dependent_option(
-    LIBXML2_WITH_SCHEMATRON "Add Schematron support" ON
+    LIBXML2_WITH_SCHEMATRON "Add Schematron support" OFF
     "LIBXML2_WITH_PATTERN;LIBXML2_WITH_XPATH" OFF)
 cmake_dependent_option(
     LIBXML2_WITH_THREAD_ALLOC "Add per-thread malloc hooks" OFF
@@ -83,13 +84,13 @@ cmake_dependent_option(
     "LIBXML2_WITH_REGEXPS;LIBXML2_WITH_SCHEMAS" OFF)
 
 if(LIBXML2_WITH_PYTHON)
-    find_package(Python COMPONENTS Interpreter Development REQUIRED)
-    #set(LIBXML2_PYTHON_INSTALL_DIR ${Python_SITEARCH} CACHE PATH "Python bindings install directory")
+    find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
+    #set(LIBXML2_PYTHON_INSTALL_DIR ${Python3_SITEARCH} CACHE PATH "Python bindings install directory")
     set(LIBXML2_PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/python"
         CACHE PATH "Python bindings install directory")
 endif()
 
-foreach(VARIABLE IN ITEMS WITH_C14N WITH_CATALOG WITH_DEBUG WITH_HTML WITH_HTTP WITH_ICONV WITH_ICU WITH_ISO8859X WITH_LZMA WITH_MODULES WITH_OUTPUT WITH_PATTERN WITH_PUSH WITH_READER WITH_REGEXPS WITH_RELAXNG WITH_SAX1 WITH_SCHEMAS WITH_SCHEMATRON WITH_THREADS WITH_THREAD_ALLOC WITH_VALID WITH_WRITER WITH_XINCLUDE WITH_XPATH WITH_XPTR WITH_ZLIB)
+foreach(VARIABLE IN ITEMS WITH_C14N WITH_CATALOG WITH_DEBUG WITH_HTML WITH_HTTP WITH_ICONV WITH_ICU WITH_ISO8859X WITH_MODULES WITH_OUTPUT WITH_PATTERN WITH_PUSH WITH_READER WITH_REGEXPS WITH_RELAXNG WITH_SAX1 WITH_SCHEMAS WITH_SCHEMATRON WITH_THREADS WITH_THREAD_ALLOC WITH_VALID WITH_WRITER WITH_XINCLUDE WITH_XPATH WITH_XPTR WITH_ZLIB)
     if(LIBXML2_${VARIABLE})
         set(${VARIABLE} 1)
     else()
@@ -115,10 +116,6 @@ if(LIBXML2_WITH_ICU)
     find_package(ICU REQUIRED COMPONENTS uc)
 endif()
 
-if(LIBXML2_WITH_LZMA)
-    find_package(LibLZMA REQUIRED)
-endif()
-
 if(LIBXML2_WITH_THREADS)
     find_package(Threads REQUIRED)
     set(THREAD_LIBS ${CMAKE_THREAD_LIBS_INIT})
@@ -146,10 +143,6 @@ if(LIBXML2_WITH_READLINE)
     endif()
 endif()
 
-if(LIBXML2_WITH_HTTP)
-    check_include_files(poll.h HAVE_POLL_H)
-endif()
-
 if(LIBXML2_WITH_TLS)
     check_c_source_compiles(
         "_Thread_local int v; int main(){return 0;}"
@@ -262,9 +255,6 @@ endif()
 if(LIBXML2_WITH_HTTP)
     list(APPEND LIBXML2_SRCS nanohttp.c)
 endif()
-if(LIBXML2_WITH_LZMA)
-    list(APPEND LIBXML2_SRCS xzlib.c)
-endif()
 if(LIBXML2_WITH_MODULES)
     list(APPEND LIBXML2_SRCS xmlmodule.c)
 endif()
@@ -278,7 +268,7 @@ if(LIBXML2_WITH_READER)
     list(APPEND LIBXML2_SRCS xmlreader.c)
 endif()
 if(LIBXML2_WITH_REGEXPS)
-    list(APPEND LIBXML2_SRCS xmlregexp.c xmlunicode.c)
+    list(APPEND LIBXML2_SRCS xmlregexp.c)
 endif()
 if(LIBXML2_WITH_RELAXNG)
     list(APPEND LIBXML2_SRCS relaxng.c)
@@ -326,10 +316,13 @@ target_include_directories(
 )
 
 if(LIBXML2_WITH_MODULES)
-    check_library_exists(dl dlopen "" HAVE_DLOPEN)
+    cmake_push_check_state(RESET)
+        set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
+        check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN)
+    cmake_pop_check_state()
     if(HAVE_DLOPEN)
-        target_link_libraries(LibXml2 PRIVATE dl)
-        set(MODULE_LIBS "-ldl")
+        target_link_libraries(LibXml2 PRIVATE ${CMAKE_DL_LIBS})
+        list(TRANSFORM CMAKE_DL_LIBS PREPEND "-l" REGEX "^[^-]" OUTPUT_VARIABLE MODULE_LIBS)
     else()
         check_library_exists(dld shl_load "" HAVE_SHLLOAD)
         if(HAVE_SHLLOAD)
@@ -347,10 +340,6 @@ endif()
 if(WIN32)
     target_link_libraries(LibXml2 PRIVATE bcrypt)
     set(CRYPTO_LIBS "-lbcrypt")
-    if(LIBXML2_WITH_HTTP)
-        target_link_libraries(LibXml2 PRIVATE ws2_32)
-        set(WINSOCK_LIBS "-lws2_32")
-    endif()
 endif()
 
 if(LIBXML2_WITH_ICONV)
@@ -372,18 +361,6 @@ if(LIBXML2_WITH_ICU)
     endif()
 endif()
 
-if(LIBXML2_WITH_LZMA)
-    target_link_libraries(LibXml2 PRIVATE LibLZMA::LibLZMA)
-    set(LibLZMA_LDFLAGS "-llzma")
-    list(APPEND XML_PRIVATE_LIBS "${LibLZMA_LDFLAGS}")
-    pkg_check_modules(LibLZMA_PC IMPORTED_TARGET liblzma)
-    if(LibLZMA_PC_FOUND)
-        list(APPEND XML_PC_REQUIRES liblzma)
-    else()
-        list(APPEND XML_PC_LIBS "${LibLZMA_LDFLAGS}")
-    endif()
-endif()
-
 if(LIBXML2_WITH_THREADS)
     target_link_libraries(LibXml2 PRIVATE Threads::Threads)
 endif()
@@ -509,29 +486,44 @@ if(LIBXML2_WITH_TESTS)
     if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/xmlconf/xmlconf.xml)
         add_test(NAME runxmlconf COMMAND runxmlconf WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
     endif()
-    if(NOT WIN32)
-        add_test(NAME testapi COMMAND testapi)
-    endif()
+    add_test(NAME testapi COMMAND testapi)
     add_test(NAME testchar COMMAND testchar)
     add_test(NAME testdict COMMAND testdict)
     add_test(NAME testparser COMMAND testparser WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
     add_test(NAME testrecurse COMMAND testrecurse WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
 endif()
 
+if(LIBXML2_WITH_DOCS OR LIBXML2_WITH_PYTHON)
+    set(DOXYFILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile)
+    add_custom_command(
+        OUTPUT doc/html doc/xml
+        COMMAND ${CMAKE_COMMAND} -E env
+            SOURCE_ROOT=${CMAKE_CURRENT_SOURCE_DIR}/
+            BUILD_ROOT=${CMAKE_CURRENT_BINARY_DIR}/
+            doxygen -q ${DOXYFILE}
+        MAIN_DEPENDENCY ${DOXYFILE}
+        DEPENDS ${LIBXML2_HDRS} ${LIBXML2_SRCS}
+    )
+    add_custom_target(Doxygen ALL DEPENDS doc/html doc/xml)
+endif()
+
 if(LIBXML2_WITH_PYTHON)
-    execute_process(
+    add_custom_command(
+        OUTPUT
+            libxml2-py.c
+            libxml2-py.h
+            libxml2.py
         COMMAND
-        ${Python_EXECUTABLE}
-        ${CMAKE_CURRENT_SOURCE_DIR}/python/generator.py
-        ${CMAKE_CURRENT_BINARY_DIR}
-    )
-    file(READ python/libxml.py LIBXML_PY)
-    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in "${LIBXML_PY}")
-    file(READ ${CMAKE_CURRENT_BINARY_DIR}/libxml2class.py LIBXML2CLASS_PY)
-    file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in "${LIBXML2CLASS_PY}")
-    configure_file(${CMAKE_CURRENT_BINARY_DIR}/libxml2.py.in libxml2.py COPYONLY)
-    add_library(
-        LibXml2Mod SHARED
+            ${Python3_EXECUTABLE}
+            ${CMAKE_CURRENT_SOURCE_DIR}/python/generator.py
+            ${CMAKE_CURRENT_BINARY_DIR}
+        DEPENDS
+            python/generator.py
+            Doxygen
+    )
+
+    Python3_add_library(
+        LibXml2Mod MODULE WITH_SOABI
         libxml2-py.c
         libxml2-py.h
         python/libxml.c
@@ -540,21 +532,17 @@ if(LIBXML2_WITH_PYTHON)
     )
     target_include_directories(
         LibXml2Mod
-        PUBLIC
+        PRIVATE
         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/python>
     )
-    target_link_libraries(LibXml2Mod LibXml2 Python::Python)
+    target_link_libraries(LibXml2Mod PRIVATE LibXml2)
     set_target_properties(
         LibXml2Mod
         PROPERTIES
         IMPORT_PREFIX lib
         OUTPUT_NAME xml2mod
         PREFIX lib
-        VERSION ${PROJECT_VERSION}
     )
-    if (WIN32)
-        set_target_properties(LibXml2Mod PROPERTIES SUFFIX ".pyd")
-    endif()
     install(
         TARGETS    LibXml2Mod
         ARCHIVE DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT development
@@ -568,28 +556,70 @@ if(LIBXML2_WITH_PYTHON)
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2.py DESTINATION ${LIBXML2_PYTHON_INSTALL_DIR} COMPONENT runtime)
 endif()
 
-install(FILES doc/xml2-config.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
-if(LIBXML2_WITH_PROGRAMS)
-    install(FILES doc/xmlcatalog.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
-    install(FILES doc/xmllint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
+if (LIBXML2_WITH_DOCS)
+    set(MAN_PAGES doc/xml2-config.1)
+
+    if(LIBXML2_WITH_PROGRAMS)
+        set(PROGNAMES xmllint)
+        if(LIBXML2_WITH_CATALOG AND LIBXML2_WITH_OUTPUT)
+            list(APPEND PROGNAMES xmlcatalog)
+        endif()
+        foreach(PROG IN ITEMS ${PROGNAMES})
+            set(XML_SRC ${CMAKE_CURRENT_SOURCE_DIR}/doc/${PROG}.xml)
+
+            add_custom_command(
+                OUTPUT ${PROG}.1
+                COMMAND xsltproc
+                    --nonet --novalid
+                    --param man.output.quietly 1
+                    -o ${PROG}.1
+                    http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+                    ${XML_SRC}
+                MAIN_DEPENDENCY ${XML_SRC}
+            )
+            list(APPEND MAN_PAGES ${CMAKE_CURRENT_BINARY_DIR}/${PROG}.1)
+
+            add_custom_command(
+                OUTPUT ${PROG}.html
+                COMMAND xsltproc
+                    --nonet --novalid
+                    -o ${PROG}.html
+                    http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
+                    ${XML_SRC}
+                MAIN_DEPENDENCY ${XML_SRC}
+            )
+            list(APPEND HTML_PAGES ${CMAKE_CURRENT_BINARY_DIR}/${PROG}.html)
+        endforeach()
+
+        add_custom_target(DocBook ALL DEPENDS ${MAN_PAGES} ${HTML_PAGES})
+
+        install(
+            FILES ${HTML_PAGES}
+            DESTINATION ${CMAKE_INSTALL_DOCDIR}
+            COMPONENT documentation
+        )
+    endif()
+
+    install(
+        FILES ${MAN_PAGES}
+        DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
+        COMPONENT documentation
+    )
+    install(
+        DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}
+        COMPONENT documentation
+    )
 endif()
-install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT documentation
-    PATTERN "Makefile.*" EXCLUDE
-    PATTERN "meson.build" EXCLUDE
-    PATTERN "*.1" EXCLUDE
-    PATTERN "*.py" EXCLUDE
-    PATTERN "*.res" EXCLUDE
-    PATTERN "*.xml" EXCLUDE
-    PATTERN "*.xsl" EXCLUDE)
 
 configure_package_config_file(
     libxml2-config.cmake.cmake.in libxml2-config.cmake
-    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION}
+    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2
 )
 
 install(
     FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2-config.cmake
-    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION}
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2
     COMPONENT development
 )
 
@@ -601,13 +631,13 @@ write_basic_package_version_file(
 
 install(
     FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml2-config-version.cmake
-    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION}
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2
     COMPONENT development
 )
 
 install(
     EXPORT LibXml2
-    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2-${PROJECT_VERSION}
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libxml2
     NAMESPACE LibXml2::
     FILE libxml2-export.cmake
     COMPONENT development
diff -pruN 2.14.6+dfsg-0.1/HTMLparser.c 2.15.0+dfsg-0.3/HTMLparser.c
--- 2.14.6+dfsg-0.1/HTMLparser.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/HTMLparser.c	2025-09-15 11:55:59.000000000 +0000
@@ -12,7 +12,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -50,10 +50,6 @@
 #define HTML_PARSER_BIG_BUFFER_SIZE 1000
 #define HTML_PARSER_BUFFER_SIZE 100
 
-#define IS_WS_HTML(c) \
-    (((c) == 0x20) || \
-     (((c) >= 0x09) && ((c) <= 0x0D) && ((c) != 0x0B)))
-
 #define IS_HEX_DIGIT(c) \
     ((IS_ASCII_DIGIT(c)) || \
      ((((c) | 0x20) >= 'a') && (((c) | 0x20) <= 'f')))
@@ -113,11 +109,9 @@ htmlParseElementInternal(htmlParserCtxtP
  ************************************************************************/
 
 /**
- * htmlErrMemory:
- * @ctxt:  an HTML parser context
- * @extra:  extra information
+ * Handle an out-of-memory error
  *
- * Handle a redefinition of attribute error
+ * @param ctxt  an HTML parser context
  */
 static void
 htmlErrMemory(xmlParserCtxtPtr ctxt)
@@ -126,14 +120,13 @@ htmlErrMemory(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlParseErr:
- * @ctxt:  an HTML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  string infor
- * @str2:  string infor
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an HTML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  string infor
+ * @param str2  string infor
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 htmlParseErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -150,13 +143,11 @@ htmlParseErr(xmlParserCtxtPtr ctxt, xmlP
  ************************************************************************/
 
 /**
- * htmlnamePush:
- * @ctxt:  an HTML parser context
- * @value:  the element name
- *
  * Pushes a new element name on top of the name stack
  *
- * Returns -1 in case of error, the index in the stack otherwise
+ * @param ctxt  an HTML parser context
+ * @param value  the element name
+ * @returns -1 in case of error, the index in the stack otherwise
  */
 static int
 htmlnamePush(htmlParserCtxtPtr ctxt, const xmlChar * value)
@@ -188,12 +179,10 @@ htmlnamePush(htmlParserCtxtPtr ctxt, con
     return (ctxt->nameNr++);
 }
 /**
- * htmlnamePop:
- * @ctxt: an HTML parser context
- *
  * Pops the top element name from the name stack
  *
- * Returns the name just removed
+ * @param ctxt  an HTML parser context
+ * @returns the name just removed
  */
 static const xmlChar *
 htmlnamePop(htmlParserCtxtPtr ctxt)
@@ -215,13 +204,11 @@ htmlnamePop(htmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlNodeInfoPush:
- * @ctxt:  an HTML parser context
- * @value:  the node info
- *
  * Pushes a new element name on top of the node info stack
  *
- * Returns 0 in case of error, the index in the stack otherwise
+ * @param ctxt  an HTML parser context
+ * @param value  the node info
+ * @returns 0 in case of error, the index in the stack otherwise
  */
 static int
 htmlNodeInfoPush(htmlParserCtxtPtr ctxt, htmlParserNodeInfo *value)
@@ -250,12 +237,10 @@ htmlNodeInfoPush(htmlParserCtxtPtr ctxt,
 }
 
 /**
- * htmlNodeInfoPop:
- * @ctxt:  an HTML parser context
- *
  * Pops the top element name from the node info stack
  *
- * Returns 0 in case of error, the pointer to NodeInfo otherwise
+ * @param ctxt  an HTML parser context
+ * @returns 0 in case of error, the pointer to NodeInfo otherwise
  */
 static htmlParserNodeInfo *
 htmlNodeInfoPop(htmlParserCtxtPtr ctxt)
@@ -325,18 +310,15 @@ htmlNodeInfoPop(htmlParserCtxtPtr ctxt)
 #define CUR (*ctxt->input->cur)
 
 /**
- * htmlFindEncoding:
- * @the HTML parser context
+ * Prescan to find encoding.
+ *
+ * Try to find an encoding in the current data available in the input
+ * buffer.
  *
- * Ty to find and encoding in the current data available in the input
- * buffer this is needed to try to switch to the proper encoding when
- * one face a character error.
- * That's an heuristic, since it's operating outside of parsing it could
- * try to use a meta which had been commented out, that's the reason it
- * should only be used in case of error, not as a default.
+ * TODO: Implement HTML5 prescan algorithm.
  *
- * Returns an encoding string or NULL if not found, the string need to
- *   be freed
+ * @param ctxt  the HTML parser context
+ * @returns  an encoding string or NULL if not found
  */
 static xmlChar *
 htmlFindEncoding(xmlParserCtxtPtr ctxt) {
@@ -446,12 +428,10 @@ invalid:
 }
 
 /**
- * htmlSkipBlankChars:
- * @ctxt:  the HTML parser context
- *
  * skip all blanks character found at that point in the input streams.
  *
- * Returns the number of space chars skipped
+ * @param ctxt  the HTML parser context
+ * @returns the number of space chars skipped
  */
 
 static int
@@ -519,13 +499,6 @@ htmlSkipBlankChars(xmlParserCtxtPtr ctxt
  * Name,Start Tag,End Tag,Save End,Empty,Deprecated,DTD,inline,Description
  */
 
-#define DATA_RCDATA         1
-#define DATA_RAWTEXT        2
-#define DATA_PLAINTEXT      3
-#define DATA_SCRIPT         4
-#define DATA_SCRIPT_ESC1    5
-#define DATA_SCRIPT_ESC2    6
-
 static const htmlElemDesc
 html40ElementTable[] = {
 { "a",		0, 0, 0, 0, 0, 0, 1, "anchor ",
@@ -568,6 +541,10 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
+{ "bgsound",	0, 0, 2, 1, 0, 0, 0, "",
+	NULL, NULL, NULL, NULL, NULL,
+	0
+},
 { "big",	0, 3, 0, 0, 0, 0, 1, "large text style",
 	NULL, NULL, NULL, NULL, NULL,
 	0
@@ -644,7 +621,7 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
-{ "embed",	0, 1, 0, 0, 1, 1, 1, "generic embedded object ",
+{ "embed",	0, 1, 2, 1, 1, 1, 1, "generic embedded object ",
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
@@ -732,6 +709,10 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
+{ "keygen",	0, 0, 2, 1, 0, 0, 0, "",
+	NULL, NULL, NULL, NULL, NULL,
+	0
+},
 { "label",	0, 0, 0, 0, 0, 0, 1, "form field label text ",
 	NULL, NULL, NULL, NULL, NULL,
 	0
@@ -828,6 +809,10 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
+{ "source",	0, 0, 2, 1, 0, 0, 0, "",
+	NULL, NULL, NULL, NULL, NULL,
+	0
+},
 { "span",	0, 0, 0, 0, 0, 0, 1, "generic language/style container ",
 	NULL, NULL, NULL, NULL, NULL,
 	0
@@ -888,6 +873,10 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
+{ "track",	0, 0, 2, 1, 0, 0, 0, "",
+	NULL, NULL, NULL, NULL, NULL,
+	0
+},
 { "tt",		0, 3, 0, 0, 0, 0, 1, "teletype or monospaced text style",
 	NULL, NULL, NULL, NULL, NULL,
 	0
@@ -904,6 +893,10 @@ html40ElementTable[] = {
 	NULL, NULL, NULL, NULL, NULL,
 	0
 },
+{ "wbr",	0, 0, 2, 1, 0, 0, 0, "",
+	NULL, NULL, NULL, NULL, NULL,
+	0
+},
 { "xmp",	0, 0, 0, 0, 0, 0, 1, "",
 	NULL, NULL, NULL, NULL, NULL,
 	DATA_RAWTEXT
@@ -1172,7 +1165,7 @@ static const htmlStartCloseEntry htmlSta
 
 /*
  * The list of HTML attributes which are of content %Script;
- * NOTE: when adding ones, check htmlIsScriptAttribute() since
+ * NOTE: when adding ones, check #htmlIsScriptAttribute since
  *       it assumes the name starts with 'on'
  */
 static const char *const htmlScriptAttributes[] = {
@@ -1246,9 +1239,7 @@ htmlParserFinishElementParsing(htmlParse
 }
 
 /**
- * htmlInitAutoClose:
- *
- * DEPRECATED: This is a no-op.
+ * @deprecated This is a no-op.
  */
 void
 htmlInitAutoClose(void) {
@@ -1263,12 +1254,12 @@ htmlCompareTags(const void *key, const v
 }
 
 /**
- * htmlTagLookup:
- * @tag:  The tag name in lowercase
- *
  * Lookup the HTML tag in the ElementTable
  *
- * Returns the related htmlElemDescPtr or NULL if not found.
+ * @deprecated Only supports HTML 4.
+ *
+ * @param tag  The tag name in lowercase
+ * @returns the related htmlElemDesc or NULL if not found.
  */
 const htmlElemDesc *
 htmlTagLookup(const xmlChar *tag) {
@@ -1281,10 +1272,8 @@ htmlTagLookup(const xmlChar *tag) {
 }
 
 /**
- * htmlGetEndPriority:
- * @name: The name of the element to look up the priority for.
- *
- * Return value: The "endtag" priority.
+ * @param name  The name of the element to look up the priority for.
+ * @returns value: The "endtag" priority.
  **/
 static int
 htmlGetEndPriority (const xmlChar *name) {
@@ -1312,14 +1301,12 @@ htmlCompareStartClose(const void *vkey,
 }
 
 /**
- * htmlCheckAutoClose:
- * @newtag:  The new tag name
- * @oldtag:  The old tag name
- *
  * Checks whether the new tag is one of the registered valid tags for
  * closing old.
  *
- * Returns 0 if no, 1 if yes.
+ * @param newtag  The new tag name
+ * @param oldtag  The old tag name
+ * @returns 0 if no, 1 if yes.
  */
 static int
 htmlCheckAutoClose(const xmlChar * newtag, const xmlChar * oldtag)
@@ -1336,12 +1323,10 @@ htmlCheckAutoClose(const xmlChar * newta
 }
 
 /**
- * htmlAutoCloseOnClose:
- * @ctxt:  an HTML parser context
- * @newtag:  The new tag name
- * @force:  force the tag closure
- *
  * The HTML DTD allows an ending tag to implicitly close other tags.
+ *
+ * @param ctxt  an HTML parser context
+ * @param newtag  The new tag name
  */
 static void
 htmlAutoCloseOnClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag)
@@ -1385,10 +1370,9 @@ htmlAutoCloseOnClose(htmlParserCtxtPtr c
 }
 
 /**
- * htmlAutoCloseOnEnd:
- * @ctxt:  an HTML parser context
- *
  * Close all remaining tags at the end of the stream
+ *
+ * @param ctxt  an HTML parser context
  */
 static void
 htmlAutoCloseOnEnd(htmlParserCtxtPtr ctxt)
@@ -1409,16 +1393,15 @@ htmlAutoCloseOnEnd(htmlParserCtxtPtr ctx
 }
 
 /**
- * htmlAutoClose:
- * @ctxt:  an HTML parser context
- * @newtag:  The new tag name or NULL
- *
  * The HTML DTD allows a tag to implicitly close other tags.
  * The list is kept in htmlStartClose array. This function is
  * called when a new tag has been detected and generates the
  * appropriates closes if possible/needed.
  * If newtag is NULL this mean we are at the end of the resource
  * and we should check
+ *
+ * @param ctxt  an HTML parser context
+ * @param newtag  The new tag name or NULL
  */
 static void
 htmlAutoClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag)
@@ -1439,22 +1422,20 @@ htmlAutoClose(htmlParserCtxtPtr ctxt, co
 }
 
 /**
- * htmlAutoCloseTag:
- * @doc:  the HTML document
- * @name:  The tag name
- * @elem:  the HTML element
- *
- * DEPRECATED: Internal function, don't use.
- *
  * 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's children would autoclose the
  * given tag.
  *
- * Returns 1 if autoclose, 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param doc  the HTML document
+ * @param name  The tag name
+ * @param elem  the HTML element
+ * @returns 1 if autoclose, 0 otherwise
  */
 int
-htmlAutoCloseTag(htmlDocPtr doc, const xmlChar *name, htmlNodePtr elem) {
+htmlAutoCloseTag(xmlDoc *doc, const xmlChar *name, xmlNode *elem) {
     htmlNodePtr child;
 
     if (elem == NULL) return(1);
@@ -1469,20 +1450,18 @@ htmlAutoCloseTag(htmlDocPtr doc, const x
 }
 
 /**
- * htmlIsAutoClosed:
- * @doc:  the HTML document
- * @elem:  the HTML element
- *
- * DEPRECATED: Internal function, don't use.
- *
  * 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's child
  *
- * Returns 1 if autoclosed, 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param doc  the HTML document
+ * @param elem  the HTML element
+ * @returns 1 if autoclosed, 0 otherwise
  */
 int
-htmlIsAutoClosed(htmlDocPtr doc, htmlNodePtr elem) {
+htmlIsAutoClosed(xmlDoc *doc, xmlNode *elem) {
     htmlNodePtr child;
 
     if (elem == NULL) return(1);
@@ -1495,13 +1474,12 @@ htmlIsAutoClosed(htmlDocPtr doc, htmlNod
 }
 
 /**
- * htmlCheckImplied:
- * @ctxt:  an HTML parser context
- * @newtag:  The new tag name
- *
  * The HTML DTD allows a tag to exists only implicitly
  * called when a new tag has been detected and generates the
  * appropriates implicit tags if missing
+ *
+ * @param ctxt  an HTML parser context
+ * @param newtag  The new tag name
  */
 static void
 htmlCheckImplied(htmlParserCtxtPtr ctxt, const xmlChar *newtag) {
@@ -1561,10 +1539,9 @@ htmlCheckImplied(htmlParserCtxtPtr ctxt,
 }
 
 /**
- * htmlStartCharData
- * @ctxt:  an HTML parser context
- *
  * Prepare for non-whitespace character data.
+ *
+ * @param ctxt  an HTML parser context
  */
 
 static void
@@ -1580,12 +1557,12 @@ htmlStartCharData(htmlParserCtxtPtr ctxt
 }
 
 /**
- * htmlIsScriptAttribute:
- * @name:  an attribute name
- *
  * Check if an attribute is of content type Script
  *
- * Returns 1 is the attribute is a script 0 otherwise
+ * @deprecated Only supports HTML 4.
+ *
+ * @param name  an attribute name
+ * @returns 1 is the attribute is a script 0 otherwise
  */
 int
 htmlIsScriptAttribute(const xmlChar *name) {
@@ -1904,14 +1881,14 @@ static const htmlEntityDesc  html40Entit
  ************************************************************************/
 
 /**
- * htmlEntityLookup:
- * @name: the entity name
- *
  * Lookup the given entity in EntitiesTable
  *
+ * @deprecated Only supports HTML 4.
+ *
  * TODO: the linear scan is really ugly, an hash table is really needed.
  *
- * Returns the associated htmlEntityDescPtr if found, NULL otherwise.
+ * @param name  the entity name
+ * @returns the associated htmlEntityDesc if found, NULL otherwise.
  */
 const htmlEntityDesc *
 htmlEntityLookup(const xmlChar *name) {
@@ -1935,14 +1912,14 @@ htmlCompareEntityDesc(const void *vkey,
 }
 
 /**
- * htmlEntityValueLookup:
- * @value: the entity's unicode value
- *
  * Lookup the given entity in EntitiesTable
  *
+ * @deprecated Only supports HTML 4.
+ *
  * TODO: the linear scan is really ugly, an hash table is really needed.
  *
- * Returns the associated htmlEntityDescPtr if found, NULL otherwise.
+ * @param value  the entity's unicode value
+ * @returns the associated htmlEntityDesc if found, NULL otherwise.
  */
 const htmlEntityDesc *
 htmlEntityValueLookup(unsigned int value) {
@@ -1957,19 +1934,19 @@ htmlEntityValueLookup(unsigned int value
 }
 
 /**
- * htmlUTF8ToHtml:
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of UTF-8 chars
- * @inlen:  the length of @in
- *
  * Take a block of UTF-8 chars in and try to convert it to an ASCII
  * plus HTML entities block of chars out.
  *
- * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
- * The value of @inlen after return is the number of octets consumed
+ * @deprecated Internal function, don't use.
+ *
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of UTF-8 chars
+ * @param inlen  the length of `in`
+ * @returns 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.
+ * The value of `outlen` after return is the number of octets consumed.
  */
 int
 htmlUTF8ToHtml(unsigned char* out, int *outlen,
@@ -2057,20 +2034,20 @@ done:
 }
 
 /**
- * htmlEncodeEntities:
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of UTF-8 chars
- * @inlen:  the length of @in
- * @quoteChar: the quote character to escape (' or ") or zero.
- *
  * Take a block of UTF-8 chars in and try to convert it to an ASCII
  * plus HTML entities block of chars out.
  *
- * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
- * The value of @inlen after return is the number of octets consumed
+ * @deprecated Only supports HTML 4.
+ *
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of UTF-8 chars
+ * @param inlen  the length of `in`
+ * @param quoteChar  the quote character to escape (' or ") or zero.
+ * @returns 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.
+ * The value of `outlen` after return is the number of octets consumed.
  */
 int
 htmlEncodeEntities(unsigned char* out, int *outlen,
@@ -2166,7 +2143,7 @@ htmlEncodeEntities(unsigned char* out, i
  * into the html40ElementTable array but I don't want to risk any
  * binary incompatibility
  */
-static const char *allowPCData[] = {
+static const char *const allowPCData[] = {
     "a", "abbr", "acronym", "address", "applet", "b", "bdo", "big",
     "blockquote", "body", "button", "caption", "center", "cite", "code",
     "dd", "del", "dfn", "div", "dt", "em", "font", "form", "h1", "h2",
@@ -2176,14 +2153,12 @@ static const char *allowPCData[] = {
 };
 
 /**
- * areBlanks:
- * @ctxt:  an HTML parser context
- * @str:  a xmlChar *
- * @len:  the size of @str
- *
  * Is this a sequence of blank chars that one can ignore ?
  *
- * Returns 1 if ignorable 0 if whitespace, -1 otherwise.
+ * @param ctxt  an HTML parser context
+ * @param str  a xmlChar *
+ * @param len  the size of `str`
+ * @returns 1 if ignorable 0 if whitespace, -1 otherwise.
  */
 
 static int areBlanks(htmlParserCtxtPtr ctxt, const xmlChar *str, int len) {
@@ -2243,17 +2218,15 @@ static int areBlanks(htmlParserCtxtPtr c
 }
 
 /**
- * htmlNewDocNoDtD:
- * @URI:  URI for the dtd, or NULL
- * @ExternalID:  the external ID of the DTD, or NULL
- *
- * Creates a new HTML document without a DTD node if @URI and @ExternalID
+ * Creates a new HTML document without a DTD node if `URI` and `publicId`
  * are NULL
  *
- * Returns a new document, do not initialize the DTD if not provided
+ * @param URI  system ID (URI) of the DTD (optional)
+ * @param publicId  public ID of the DTD (optional)
+ * @returns a new document, do not initialize the DTD if not provided
  */
-htmlDocPtr
-htmlNewDocNoDtD(const xmlChar *URI, const xmlChar *ExternalID) {
+xmlDoc *
+htmlNewDocNoDtD(const xmlChar *URI, const xmlChar *publicId) {
     xmlDocPtr cur;
 
     /*
@@ -2280,11 +2253,11 @@ htmlNewDocNoDtD(const xmlChar *URI, cons
     cur->_private = NULL;
     cur->charset = XML_CHAR_ENCODING_UTF8;
     cur->properties = XML_DOC_HTML | XML_DOC_USERBUILT;
-    if ((ExternalID != NULL) ||
+    if ((publicId != NULL) ||
 	(URI != NULL)) {
         xmlDtdPtr intSubset;
 
-	intSubset = xmlCreateIntSubset(cur, BAD_CAST "html", ExternalID, URI);
+	intSubset = xmlCreateIntSubset(cur, BAD_CAST "html", publicId, URI);
         if (intSubset == NULL) {
             xmlFree(cur);
             return(NULL);
@@ -2296,22 +2269,20 @@ htmlNewDocNoDtD(const xmlChar *URI, cons
 }
 
 /**
- * htmlNewDoc:
- * @URI:  URI for the dtd, or NULL
- * @ExternalID:  the external ID of the DTD, or NULL
- *
  * Creates a new HTML document
  *
- * Returns a new document
- */
-htmlDocPtr
-htmlNewDoc(const xmlChar *URI, const xmlChar *ExternalID) {
-    if ((URI == NULL) && (ExternalID == NULL))
+ * @param URI  system ID (URI) of the DTD (optional)
+ * @param publicId  public ID of the DTD (optional)
+ * @returns a new document
+ */
+xmlDoc *
+htmlNewDoc(const xmlChar *URI, const xmlChar *publicId) {
+    if ((URI == NULL) && (publicId == NULL))
 	return(htmlNewDocNoDtD(
 		    BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd",
 		    BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN"));
 
-    return(htmlNewDocNoDtD(URI, ExternalID));
+    return(htmlNewDocNoDtD(URI, publicId));
 }
 
 
@@ -2329,13 +2300,12 @@ htmlNewDoc(const xmlChar *URI, const xml
  ************************************************************************/
 
 /**
- * htmlParseHTMLName:
- * @ctxt:  an HTML parser context
- *
  * parse an HTML tag or attribute name, note that we convert it to lowercase
  * since HTML names are not case-sensitive.
  *
- * Returns the Tag Name parsed or NULL
+ * @param ctxt  an HTML parser context
+ * @param attr  whether this is an attribute name
+ * @returns the Tag Name parsed or NULL
  */
 
 static xmlHashedString
@@ -2462,7 +2432,7 @@ htmlCodePointToUtf8(int c, xmlChar *out,
     return(out);
 }
 
-#include "html5ent.inc"
+#include "codegen/html5ent.inc"
 
 #define ENT_F_SEMICOLON 0x80u
 #define ENT_F_SUBTABLE  0x40u
@@ -2565,16 +2535,14 @@ htmlFindEntityPrefix(const xmlChar *stri
 }
 
 /**
- * htmlParseData:
- * @ctxt:  an HTML parser context
- * @mask:  mask of terminating characters
- * @comment:  true if parsing a comment
- * @refs:  true if references are allowed
- * @maxLength:  maximum output length
- *
  * Parse data until terminator is reached.
  *
- * Returns the parsed string or NULL in case of errors.
+ * @param ctxt  an HTML parser context
+ * @param mask  mask of terminating characters
+ * @param comment  true if parsing a comment
+ * @param refs  true if references are allowed
+ * @param maxLength  maximum output length
+ * @returns the parsed string or NULL in case of errors.
  */
 
 static xmlChar *
@@ -2777,7 +2745,8 @@ htmlParseData(htmlParserCtxtPtr ctxt, ht
                     guess = htmlFindEncoding(ctxt);
 #endif
                     if (guess == NULL) {
-                        xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1);
+                        xmlSwitchEncoding(ctxt,
+                                XML_CHAR_ENCODING_WINDOWS_1252);
                     } else {
                         xmlSwitchEncodingName(ctxt, (const char *) guess);
                         xmlFree(guess);
@@ -2879,30 +2848,26 @@ error:
 }
 
 /**
- * htmlParseEntityRef:
- * @ctxt:  an HTML parser context
- * @str:  location to store the entity name
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns NULL.
+ * @param ctxt  an HTML parser context
+ * @param str  location to store the entity name
+ * @returns NULL.
  */
 const htmlEntityDesc *
-htmlParseEntityRef(htmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
+htmlParseEntityRef(htmlParserCtxt *ctxt ATTRIBUTE_UNUSED,
                    const xmlChar **str ATTRIBUTE_UNUSED) {
     return(NULL);
 }
 
 /**
- * htmlParseAttValue:
- * @ctxt:  an HTML parser context
- *
  * parse a value for an attribute
  * Note: the parser won't do substitution of entities here, this
- * will be handled later in xmlStringGetNodeList, unless it was
+ * will be handled later in #xmlStringGetNodeList, unless it was
  * asked for ctxt->replaceEntities != 0
  *
- * Returns the AttValue parsed or NULL.
+ * @param ctxt  an HTML parser context
+ * @returns the AttValue parsed or NULL.
  */
 
 static xmlChar *
@@ -2989,13 +2954,11 @@ htmlCharDataSAXCallback(htmlParserCtxtPt
 }
 
 /**
- * htmlParseCharData:
- * @ctxt:  an HTML parser context
- * @partial: true if the input buffer is incomplete
- *
  * Parse character data and references.
  *
- * Returns 1 if all data was parsed, 0 otherwise.
+ * @param ctxt  an HTML parser context
+ * @param partial  true if the input buffer is incomplete
+ * @returns 1 if all data was parsed, 0 otherwise.
  */
 
 static int
@@ -3271,8 +3234,25 @@ htmlParseCharData(htmlParserCtxtPtr ctxt
 
             case '\0':
                 skip = 1;
-                repl = BAD_CAST "\xEF\xBF\xBD";
-                replSize = 3;
+
+                if (mode == 0) {
+                    /*
+                     * The HTML5 spec says that the tokenizer should
+                     * pass on U+0000 unmodified in normal data mode.
+                     * These characters should then be ignored in body
+                     * and other text, but should be replaced with
+                     * U+FFFD in foreign content.
+                     *
+                     * At least for now, we always strip U+0000 when
+                     * tokenizing.
+                     */
+                    repl = BAD_CAST "";
+                    replSize = 0;
+                } else {
+                    repl = BAD_CAST "\xEF\xBF\xBD";
+                    replSize = 3;
+                }
+
                 goto next_chunk;
 
             case '\n':
@@ -3309,7 +3289,8 @@ htmlParseCharData(htmlParserCtxtPtr ctxt
                     guess = htmlFindEncoding(ctxt);
 #endif
                     if (guess == NULL) {
-                        xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1);
+                        xmlSwitchEncoding(ctxt,
+                                XML_CHAR_ENCODING_WINDOWS_1252);
                     } else {
                         xmlSwitchEncodingName(ctxt, (const char *) guess);
                         xmlFree(guess);
@@ -3380,11 +3361,10 @@ restart:
 }
 
 /**
- * htmlParseComment:
- * @ctxt:  an HTML parser context
- * @bogus:  true if this is a bogus comment
- *
  * Parse an HTML comment
+ *
+ * @param ctxt  an HTML parser context
+ * @param bogus  true if this is a bogus comment
  */
 static void
 htmlParseComment(htmlParserCtxtPtr ctxt, int bogus) {
@@ -3400,6 +3380,10 @@ htmlParseComment(htmlParserCtxtPtr ctxt,
             SKIP(1);
         comment = buf;
     } else {
+        if ((!PARSER_PROGRESSIVE(ctxt)) &&
+            (ctxt->input->end - ctxt->input->cur < 2))
+            xmlParserGrow(ctxt);
+
         if (CUR == '>') {
             SKIP(1);
         } else if ((CUR == '-') && (NXT(1) == '>')) {
@@ -3421,26 +3405,22 @@ htmlParseComment(htmlParserCtxtPtr ctxt,
 }
 
 /**
- * htmlParseCharRef:
- * @ctxt:  an HTML parser context
+ * @deprecated Internal function, don't use.
  *
- * DEPRECATED: Internal function, don't use.
- *
- * Returns 0
+ * @param ctxt  an HTML parser context
+ * @returns 0
  */
 int
-htmlParseCharRef(htmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) {
+htmlParseCharRef(htmlParserCtxt *ctxt ATTRIBUTE_UNUSED) {
     return(0);
 }
 
 
 /**
- * htmlParseDoctypeLiteral:
- * @ctxt:  an HTML parser context
- *
  * Parse a DOCTYPE SYTSTEM or PUBLIC literal.
  *
- * Returns the literal or NULL in case of error.
+ * @param ctxt  an HTML parser context
+ * @returns the literal or NULL in case of error.
  */
 
 static xmlChar *
@@ -3523,10 +3503,9 @@ htmlSkipBogusDoctype(htmlParserCtxtPtr c
 }
 
 /**
- * htmlParseDocTypeDecl:
- * @ctxt:  an HTML parser context
- *
  * Parse a DOCTYPE declaration.
+ *
+ * @param ctxt  an HTML parser context
  */
 
 static void
@@ -3597,10 +3576,6 @@ bogus:
 }
 
 /**
- * htmlParseAttribute:
- * @ctxt:  an HTML parser context
- * @value:  a xmlChar ** used to store the value of the attribute
- *
  * parse an attribute
  *
  * [41] Attribute ::= Name Eq AttValue
@@ -3614,7 +3589,9 @@ bogus:
  * Also the case QName == xmlns:??? is handled independently as a namespace
  * definition.
  *
- * Returns the attribute name, and the value in *value.
+ * @param ctxt  an HTML parser context
+ * @param value  a xmlChar ** used to store the value of the attribute
+ * @returns the attribute name, and the value in *value.
  */
 
 static xmlHashedString
@@ -3641,55 +3618,59 @@ htmlParseAttribute(htmlParserCtxtPtr ctx
     return(hname);
 }
 
-/**
- * htmlCheckEncoding:
- * @ctxt:  an HTML parser context
- * @attvalue: the attribute value
- *
- * Checks an http-equiv attribute from a Meta tag to detect
- * the encoding
- * If a new encoding is detected the parser is switched to decode
- * it and pass UTF8
- */
-static void
-htmlCheckEncoding(htmlParserCtxtPtr ctxt, const xmlChar *attvalue) {
-    const xmlChar *encoding;
-    xmlChar *copy;
+static int
+htmlCharEncCheckAsciiCompatible(htmlParserCtxt *ctxt,
+                                const xmlChar *encoding) {
+    xmlCharEncodingHandler *handler;
+    xmlChar in[9] = "<a A=\"/>";
+    xmlChar out[9];
+    int inlen, outlen;
+    int res;
+
+    res = xmlCreateCharEncodingHandler(
+            (const char *) encoding,
+            XML_ENC_INPUT | XML_ENC_HTML,
+            ctxt->convImpl, ctxt->convCtxt,
+            &handler);
+    if (res != XML_ERR_OK) {
+        xmlFatalErr(ctxt, res, (const char *) encoding);
+        return(-1);
+    }
 
-    if (!attvalue)
-	return;
+    /* UTF-8 */
+    if (handler == NULL)
+        return(0);
 
-    encoding = xmlStrcasestr(attvalue, BAD_CAST"charset");
-    if (encoding != NULL) {
-	encoding += 7;
-    }
-    /*
-     * skip blank
-     */
-    if (encoding && IS_WS_HTML(*encoding))
-	encoding = xmlStrcasestr(attvalue, BAD_CAST"=");
-    if (encoding && *encoding == '=') {
-	encoding ++;
-        copy = xmlStrdup(encoding);
-        if (copy == NULL)
-            htmlErrMemory(ctxt);
-	xmlSetDeclaredEncoding(ctxt, copy);
+    inlen = 8;
+    outlen = 8;
+    res = xmlEncInputChunk(handler, out, &outlen, in, &inlen, /* flush */ 1);
+
+    xmlCharEncCloseFunc(handler);
+
+    if ((res != XML_ENC_ERR_SUCCESS) ||
+        (inlen != 8) || (outlen != 8) ||
+        (memcmp(in, out, 8) != 0)) {
+        htmlParseErr(ctxt, XML_ERR_UNSUPPORTED_ENCODING,
+                     "Encoding %s isn't ASCII-compatible", encoding, NULL);
+        return(-1);
     }
+
+    return(0);
 }
 
 /**
- * htmlCheckMeta:
- * @ctxt:  an HTML parser context
- * @atts:  the attributes values
+ * Handle charset encoding in meta tag.
  *
- * Checks an attributes from a Meta tag
+ * @param ctxt  an HTML parser context
+ * @param atts  the attributes values
  */
 static void
 htmlCheckMeta(htmlParserCtxtPtr ctxt, const xmlChar **atts) {
     int i;
     const xmlChar *att, *value;
-    int http = 0;
+    int isContentType = 0;
     const xmlChar *content = NULL;
+    xmlChar *encoding = NULL;
 
     if ((ctxt == NULL) || (atts == NULL))
 	return;
@@ -3701,36 +3682,48 @@ htmlCheckMeta(htmlParserCtxtPtr ctxt, co
         if (value != NULL) {
             if ((!xmlStrcasecmp(att, BAD_CAST "http-equiv")) &&
                 (!xmlStrcasecmp(value, BAD_CAST "Content-Type"))) {
-                http = 1;
+                isContentType = 1;
             } else if (!xmlStrcasecmp(att, BAD_CAST "charset")) {
-                xmlChar *copy;
-
-                copy = xmlStrdup(value);
-                if (copy == NULL)
+                encoding = xmlStrdup(value);
+                if (encoding == NULL)
                     htmlErrMemory(ctxt);
-                xmlSetDeclaredEncoding(ctxt, copy);
+                break;
             } else if (!xmlStrcasecmp(att, BAD_CAST "content")) {
                 content = value;
             }
         }
 	att = atts[i++];
     }
-    if ((http) && (content != NULL))
-	htmlCheckEncoding(ctxt, content);
 
+    if ((encoding == NULL) && (isContentType) && (content != NULL)) {
+        htmlMetaEncodingOffsets off;
+
+        if (htmlParseContentType(content, &off)) {
+            encoding = xmlStrndup(content + off.start, off.end - off.start);
+            if (encoding == NULL)
+                htmlErrMemory(ctxt);
+        }
+    }
+
+    if (encoding != NULL) {
+        if (htmlCharEncCheckAsciiCompatible(ctxt, encoding) < 0) {
+            xmlFree(encoding);
+            return;
+        }
+
+        xmlSetDeclaredEncoding(ctxt, encoding);
+    }
 }
 
 /**
- * htmlAttrHashInsert:
- * @ctxt: parser context
- * @size: size of the hash table
- * @name: attribute name
- * @hashValue: hash value of name
- * @aindex: attribute index (this is a multiple of 5)
- *
  * Inserts a new attribute into the hash table.
  *
- * Returns INT_MAX if no existing attribute was found, the attribute
+ * @param ctxt  parser context
+ * @param size  size of the hash table
+ * @param name  attribute name
+ * @param hashValue  hash value of name
+ * @param aindex  attribute index (this is a multiple of 5)
+ * @returns INT_MAX if no existing attribute was found, the attribute
  * index if an attribute was found, -1 if a memory allocation failed.
  */
 static int
@@ -3763,9 +3756,6 @@ htmlAttrHashInsert(xmlParserCtxtPtr ctxt
 }
 
 /**
- * htmlParseStartTag:
- * @ctxt:  an HTML parser context
- *
  * parse a start of tag either for rule element or
  * EmptyElement. In both case we don't parse the tag closing chars.
  *
@@ -3779,7 +3769,8 @@ htmlAttrHashInsert(xmlParserCtxtPtr ctxt
  *
  * [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>'
  *
- * Returns 0 in case of success, -1 in case of error and 1 if discarded
+ * @param ctxt  an HTML parser context
+ * @returns 0 in case of success, -1 in case of error and 1 if discarded
  */
 
 static void
@@ -3790,7 +3781,6 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt
     const xmlChar **atts;
     int nbatts = 0;
     int maxatts;
-    int meta = 0;
     int i;
     int discardtag = 0;
 
@@ -3805,8 +3795,6 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt
     name = htmlParseHTMLName(ctxt, 0).name;
     if (name == NULL)
         return;
-    if (xmlStrEqual(name, BAD_CAST"meta"))
-	meta = 1;
 
     if ((ctxt->options & HTML_PARSE_HTML5) == 0) {
         /*
@@ -4002,8 +3990,10 @@ failed:
         /*
          * Handle specific association to the META tag
          */
-        if (meta)
+        if (((ctxt->input->flags & XML_INPUT_HAS_ENCODING) == 0) &&
+            (strcmp((char *) name, "meta") == 0)) {
             htmlCheckMeta(ctxt, atts);
+        }
 #endif
     }
 
@@ -4035,9 +4025,6 @@ done:
 }
 
 /**
- * htmlParseEndTag:
- * @ctxt:  an HTML parser context
- *
  * parse an end of tag
  *
  * [42] ETag ::= '</' Name S? '>'
@@ -4046,7 +4033,8 @@ done:
  *
  * [NS 9] ETag ::= '</' QName S? '>'
  *
- * Returns 1 if the current level should be closed.
+ * @param ctxt  an HTML parser context
+ * @returns 1 if the current level should be closed.
  */
 
 static void
@@ -4178,11 +4166,10 @@ htmlParseEndTag(htmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlParseContent:
- * @ctxt:  an HTML parser context
- *
  * Parse a content: comment, sub-element, reference or text.
  * New version for non recursive htmlParseElementInternal
+ *
+ * @param ctxt  an HTML parser context
  */
 
 static void
@@ -4239,16 +4226,10 @@ htmlParseContent(htmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlParseElementInternal:
- * @ctxt:  an HTML parser context
- *
- * parse an HTML element, new version, non recursive
+ * Parse an HTML element, new version, non recursive
  *
- * [39] element ::= EmptyElemTag | STag content ETag
- *
- * [41] Attribute ::= Name Eq AttValue
+ * @param ctxt  an HTML parser context
  */
-
 static int
 htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
     const xmlChar *name;
@@ -4316,21 +4297,14 @@ htmlParseElementInternal(htmlParserCtxtP
 }
 
 /**
- * htmlParseElement:
- * @ctxt:  an HTML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
- * parse an HTML element, this is highly recursive
- * this is kept for compatibility with previous code versions
+ * This is kept for compatibility with previous code versions
  *
- * [39] element ::= EmptyElemTag | STag content ETag
+ * @deprecated Internal function, don't use.
  *
- * [41] Attribute ::= Name Eq AttValue
+ * @param ctxt  an HTML parser context
  */
-
 void
-htmlParseElement(htmlParserCtxtPtr ctxt) {
+htmlParseElement(htmlParserCtxt *ctxt) {
     const xmlChar *oldptr;
     int depth;
 
@@ -4357,14 +4331,12 @@ htmlParseElement(htmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlCtxtParseContentInternal:
- * @ctxt:  parser context
- * @input:  parser input
- *
- * Returns a node list.
+ * @param ctxt  parser context
+ * @param input  parser input
+ * @returns a node list.
  */
-xmlNodePtr
-htmlCtxtParseContentInternal(htmlParserCtxtPtr ctxt, xmlParserInputPtr input) {
+xmlNode *
+htmlCtxtParseContentInternal(htmlParserCtxt *ctxt, xmlParserInput *input) {
     xmlNodePtr root;
     xmlNodePtr list = NULL;
     xmlChar *rootName = BAD_CAST "#root";
@@ -4414,20 +4386,15 @@ htmlCtxtParseContentInternal(htmlParserC
 }
 
 /**
- * htmlParseDocument:
- * @ctxt:  an HTML parser context
- *
  * Parse an HTML document and invoke the SAX handlers. This is useful
  * if you're only interested in custom SAX callbacks. If you want a
- * document tree, use htmlCtxtParseDocument.
+ * document tree, use #htmlCtxtParseDocument.
  *
- * Returns 0, -1 in case of error.
+ * @param ctxt  an HTML parser context
+ * @returns 0, -1 in case of error.
  */
-
 int
-htmlParseDocument(htmlParserCtxtPtr ctxt) {
-    xmlDtdPtr dtd;
-
+htmlParseDocument(htmlParserCtxt *ctxt) {
     if ((ctxt == NULL) || (ctxt->input == NULL))
 	return(-1);
 
@@ -4461,43 +4428,25 @@ htmlParseDocument(htmlParserCtxtPtr ctxt
 	ctxt->sax->startDocument(ctxt->userData);
 
     /*
-     * Parse possible comments and PIs before any content
-     */
-    while (CUR == '<') {
-        if ((NXT(1) == '!') && (NXT(2) == '-') && (NXT(3) == '-')) {
-            SKIP(4);
-            htmlParseComment(ctxt, /* bogus */ 0);
-        } else if (NXT(1) == '?') {
-            SKIP(1);
-            htmlParseComment(ctxt, /* bogus */ 1);
-        } else {
-            break;
-        }
-	SKIP_BLANKS;
-    }
-
-    /*
-     * Then possibly doc type declaration(s) and more Misc
-     * (doctypedecl Misc*)?
+     * Parse possible comments, PIs or doctype declarations
+     * before any content.
      */
-    if ((CUR == '<') && (NXT(1) == '!') &&
-	(UPP(2) == 'D') && (UPP(3) == 'O') &&
-	(UPP(4) == 'C') && (UPP(5) == 'T') &&
-	(UPP(6) == 'Y') && (UPP(7) == 'P') &&
-	(UPP(8) == 'E')) {
-        ctxt->instate = XML_PARSER_MISC;
-	htmlParseDocTypeDecl(ctxt);
-    }
-    SKIP_BLANKS;
-
-    /*
-     * Parse possible comments and PIs before any content
-     */
-    ctxt->instate = XML_PARSER_PROLOG;
+    ctxt->instate = XML_PARSER_MISC;
     while (CUR == '<') {
-        if ((NXT(1) == '!') && (NXT(2) == '-') && (NXT(3) == '-')) {
-            SKIP(4);
-            htmlParseComment(ctxt, /* bogus */ 0);
+        if (NXT(1) == '!') {
+            if ((NXT(2) == '-') && (NXT(3) == '-')) {
+                SKIP(4);
+                htmlParseComment(ctxt, /* bogus */ 0);
+            } else if ((UPP(2) == 'D') && (UPP(3) == 'O') &&
+                       (UPP(4) == 'C') && (UPP(5) == 'T') &&
+                       (UPP(6) == 'Y') && (UPP(7) == 'P') &&
+                       (UPP(8) == 'E')) {
+                htmlParseDocTypeDecl(ctxt);
+                ctxt->instate = XML_PARSER_PROLOG;
+            } else {
+                SKIP(2);
+                htmlParseComment(ctxt, /* bogus */ 1);
+            }
         } else if (NXT(1) == '?') {
             SKIP(1);
             htmlParseComment(ctxt, /* bogus */ 1);
@@ -4505,6 +4454,7 @@ htmlParseDocument(htmlParserCtxtPtr ctxt
             break;
         }
 	SKIP_BLANKS;
+        GROW;
     }
 
     /*
@@ -4524,17 +4474,6 @@ htmlParseDocument(htmlParserCtxtPtr ctxt
     if ((ctxt->sax) && (ctxt->sax->endDocument != NULL))
         ctxt->sax->endDocument(ctxt->userData);
 
-    if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) && (ctxt->myDoc != NULL)) {
-	dtd = xmlGetIntSubset(ctxt->myDoc);
-	if (dtd == NULL) {
-	    ctxt->myDoc->intSubset =
-		xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html",
-		    BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
-		    BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
-            if (ctxt->myDoc->intSubset == NULL)
-                htmlErrMemory(ctxt);
-        }
-    }
     if (! ctxt->wellFormed) return(-1);
     return(0);
 }
@@ -4547,16 +4486,13 @@ htmlParseDocument(htmlParserCtxtPtr ctxt
  ************************************************************************/
 
 /**
- * htmlInitParserCtxt:
- * @ctxt:  an HTML parser context
- * @sax:  SAX handler
- * @userData:  user data
- *
  * Initialize a parser context
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param ctxt  an HTML parser context
+ * @param sax  SAX handler
+ * @param userData  user data
+ * @returns 0 in case of success and -1 in case of error
  */
-
 static int
 htmlInitParserCtxt(htmlParserCtxtPtr ctxt, const htmlSAXHandler *sax,
                    void *userData)
@@ -4623,7 +4559,6 @@ htmlInitParserCtxt(htmlParserCtxtPtr ctx
     ctxt->myDoc = NULL;
     ctxt->wellFormed = 1;
     ctxt->replaceEntities = 0;
-    ctxt->linenumbers = xmlLineNumbersDefaultValue;
     ctxt->keepBlanks = xmlKeepBlanksDefaultValue;
     ctxt->html = INSERT_INITIAL;
     ctxt->vctxt.flags = XML_VCTXT_USE_PCTXT;
@@ -4639,60 +4574,53 @@ htmlInitParserCtxt(htmlParserCtxtPtr ctx
 }
 
 /**
- * htmlFreeParserCtxt:
- * @ctxt:  an HTML parser context
- *
  * Free all the memory used by a parser context. However the parsed
- * document in ctxt->myDoc is not freed.
+ * document in `ctxt->myDoc` is not freed.
+ *
+ * @param ctxt  an HTML parser context
  */
-
 void
-htmlFreeParserCtxt(htmlParserCtxtPtr ctxt)
+htmlFreeParserCtxt(htmlParserCtxt *ctxt)
 {
     xmlFreeParserCtxt(ctxt);
 }
 
 /**
- * htmlNewParserCtxt:
- *
  * Allocate and initialize a new HTML parser context.
  *
  * This can be used to parse HTML documents into DOM trees with
- * functions like xmlCtxtReadFile or xmlCtxtReadMemory.
+ * functions like #xmlCtxtReadFile or #xmlCtxtReadMemory.
  *
- * See htmlCtxtUseOptions for parser options.
+ * See #htmlCtxtUseOptions for parser options.
  *
- * See xmlCtxtSetErrorHandler for advanced error handling.
+ * See #xmlCtxtSetErrorHandler for advanced error handling.
  *
- * See htmlNewSAXParserCtxt for custom SAX parsers.
+ * See #htmlNewSAXParserCtxt for custom SAX parsers.
  *
- * Returns the htmlParserCtxtPtr or NULL in case of allocation error
+ * @returns the htmlParserCtxt or NULL in case of allocation error
  */
-
-htmlParserCtxtPtr
+htmlParserCtxt *
 htmlNewParserCtxt(void)
 {
     return(htmlNewSAXParserCtxt(NULL, NULL));
 }
 
 /**
- * htmlNewSAXParserCtxt:
- * @sax:  SAX handler
- * @userData:  user data
- *
- * Allocate and initialize a new HTML SAX parser context. If userData
+ * Allocate and initialize a new HTML SAX parser context. If `userData`
  * is NULL, the parser context will be passed as user data.
  *
- * Available since 2.11.0. If you want support older versions,
- * it's best to invoke htmlNewParserCtxt and set ctxt->sax with
- * struct assignment.
+ * @since 2.11.0
+ *
+ * If you want support older versions, it's best to invoke
+ * #htmlNewParserCtxt and set `ctxt->sax` with struct assignment.
  *
- * Also see htmlNewParserCtxt.
+ * Also see #htmlNewParserCtxt.
  *
- * Returns the htmlParserCtxtPtr or NULL in case of allocation error
+ * @param sax  SAX handler
+ * @param userData  user data
+ * @returns the htmlParserCtxt or NULL in case of allocation error
  */
-
-htmlParserCtxtPtr
+htmlParserCtxt *
 htmlNewSAXParserCtxt(const htmlSAXHandler *sax, void *userData)
 {
     xmlParserCtxtPtr ctxt;
@@ -4740,18 +4668,16 @@ htmlCreateMemoryParserCtxtInternal(const
 }
 
 /**
- * htmlCreateMemoryParserCtxt:
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- *
- * DEPRECATED: Use htmlNewParserCtxt and htmlCtxtReadMemory.
- *
  * Create a parser context for an HTML in-memory document. The input
  * buffer must not contain any terminating null bytes.
  *
- * Returns the new parser context or NULL
+ * @deprecated Use #htmlNewParserCtxt and #htmlCtxtReadMemory.
+ *
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @returns the new parser context or NULL
  */
-htmlParserCtxtPtr
+htmlParserCtxt *
 htmlCreateMemoryParserCtxt(const char *buffer, int size) {
     if (size <= 0)
 	return(NULL);
@@ -4760,13 +4686,12 @@ htmlCreateMemoryParserCtxt(const char *b
 }
 
 /**
- * htmlCreateDocParserCtxt:
- * @str:  a pointer to an array of xmlChar
- * @encoding:  encoding (optional)
- *
  * Create a parser context for a null-terminated string.
  *
- * Returns the new parser context or NULL if a memory allocation failed.
+ * @param str  a pointer to an array of xmlChar
+ * @param url  URL of the document (optional)
+ * @param encoding  encoding (optional)
+ * @returns the new parser context or NULL if a memory allocation failed.
  */
 static htmlParserCtxtPtr
 htmlCreateDocParserCtxt(const xmlChar *str, const char *url,
@@ -4816,11 +4741,10 @@ typedef enum {
 } xmlLookupStates;
 
 /**
- * htmlParseLookupGt:
- * @ctxt:  an HTML parser context
- *
  * Check whether there's enough data in the input buffer to finish parsing
  * a tag. This has to take quotes into account.
+ *
+ * @param ctxt  an HTML parser context
  */
 static int
 htmlParseLookupGt(xmlParserCtxtPtr ctxt) {
@@ -4914,13 +4838,13 @@ htmlParseLookupGt(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * htmlParseLookupString:
- * @ctxt:  an XML parser context
- * @startDelta: delta to apply at the start
- * @str:  string
- * @strLen:  length of string
- *
  * Check whether the input buffer contains a string.
+ *
+ * @param ctxt  an XML parser context
+ * @param startDelta  delta to apply at the start
+ * @param str  string
+ * @param strLen  length of string
+ * @param extraLen  extra length
  */
 static int
 htmlParseLookupString(xmlParserCtxtPtr ctxt, size_t startDelta,
@@ -4968,17 +4892,13 @@ htmlParseLookupString(xmlParserCtxtPtr c
 }
 
 /**
- * htmlParseLookupCommentEnd:
- * @ctxt: an HTML parser context
- *
  * Try to find a comment end tag in the input stream
- * The search includes "-->" as well as WHATWG-recommended incorrectly-closed tags.
- * (See https://html.spec.whatwg.org/multipage/parsing.html#parse-error-incorrectly-closed-comment)
- * This function has a side effect of (possibly) incrementing ctxt->checkIndex
- * to avoid rescanning sequences of bytes, it DOES change the state of the
- * parser, do not use liberally.
+ * The search includes "-->" as well as WHATWG-recommended
+ * incorrectly-closed tags.
  *
- * Returns the index to the current parsing point if the full sequence is available, -1 otherwise.
+ * @param ctxt  an HTML parser context
+ * @returns the index to the current parsing point if the full
+ * sequence is available, -1 otherwise.
  */
 static int
 htmlParseLookupCommentEnd(htmlParserCtxtPtr ctxt)
@@ -5013,13 +4933,11 @@ htmlParseLookupCommentEnd(htmlParserCtxt
 
 
 /**
- * htmlParseTryOrFinish:
- * @ctxt:  an HTML parser context
- * @terminate:  last chunk indicator
- *
  * Try to progress on parsing
  *
- * Returns zero if no parsing was possible
+ * @param ctxt  an HTML parser context
+ * @param terminate  last chunk indicator
+ * @returns zero if no parsing was possible
  */
 static void
 htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
@@ -5148,10 +5066,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr c
                             htmlParseDocTypeDecl(ctxt);
                             if (ctxt->instate == XML_PARSER_MISC)
                                 ctxt->instate = XML_PARSER_PROLOG;
-                            else
-                                ctxt->instate = XML_PARSER_CONTENT;
                         } else {
-                            ctxt->instate = XML_PARSER_CONTENT;
                             if ((!terminate) &&
                                 (htmlParseLookupString(ctxt, 2, ">", 1, 0) < 0))
                                 return;
@@ -5217,28 +5132,29 @@ htmlParseTryOrFinish(htmlParserCtxtPtr c
 }
 
 /**
- * htmlParseChunk:
- * @ctxt:  an HTML parser context
- * @chunk:  chunk of memory
- * @size:  size of chunk in bytes
- * @terminate:  last chunk indicator
- *
  * Parse a chunk of memory in push parser mode.
  *
  * Assumes that the parser context was initialized with
- * htmlCreatePushParserCtxt.
+ * #htmlCreatePushParserCtxt.
  *
  * The last chunk, which will often be empty, must be marked with
- * the @terminate flag. With the default SAX callbacks, the resulting
- * document will be available in ctxt->myDoc. This pointer will not
+ * the `terminate` flag. With the default SAX callbacks, the resulting
+ * document will be available in `ctxt->myDoc`. This pointer will not
  * be freed by the library.
  *
- * If the document isn't well-formed, ctxt->myDoc is set to NULL.
+ * If the document isn't well-formed, `ctxt->myDoc` is set to NULL.
  *
- * Returns an xmlParserErrors code (0 on success).
+ * Since 2.14.0, #xmlCtxtGetDocument can be used to retrieve the
+ * result document.
+ *
+ * @param ctxt  an HTML parser context
+ * @param chunk  chunk of memory
+ * @param size  size of chunk in bytes
+ * @param terminate  last chunk indicator
+ * @returns an xmlParserErrors code (0 on success).
  */
 int
-htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size,
+htmlParseChunk(htmlParserCtxt *ctxt, const char *chunk, int size,
               int terminate) {
     if ((ctxt == NULL) ||
         (ctxt->input == NULL) || (ctxt->input->buf == NULL) ||
@@ -5257,7 +5173,6 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, c
 	if (res < 0) {
             htmlParseErr(ctxt, ctxt->input->buf->error,
                          "xmlParserInputBufferPush failed", NULL, NULL);
-            xmlHaltParser(ctxt);
 	    return (ctxt->errNo);
 	}
     }
@@ -5275,20 +5190,6 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, c
         if ((ctxt->sax) && (ctxt->sax->endDocument != NULL))
             ctxt->sax->endDocument(ctxt->userData);
 
-        if ((!(ctxt->options & HTML_PARSE_NODEFDTD)) &&
-            (ctxt->myDoc != NULL)) {
-            xmlDtdPtr dtd;
-            dtd = xmlGetIntSubset(ctxt->myDoc);
-            if (dtd == NULL) {
-                ctxt->myDoc->intSubset =
-                    xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html",
-                        BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
-                        BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
-                if (ctxt->myDoc->intSubset == NULL)
-                    htmlErrMemory(ctxt);
-            }
-        }
-
 	ctxt->instate = XML_PARSER_EOF;
     }
 
@@ -5302,21 +5203,19 @@ htmlParseChunk(htmlParserCtxtPtr ctxt, c
  ************************************************************************/
 
 /**
- * htmlCreatePushParserCtxt:
- * @sax:  a SAX handler (optional)
- * @user_data:  The user data returned on SAX callbacks (optional)
- * @chunk:  a pointer to an array of chars (optional)
- * @size:  number of chars in the array
- * @filename:  only used for error reporting (optional)
- * @enc:  encoding (deprecated, pass XML_CHAR_ENCODING_NONE)
- *
  * Create a parser context for using the HTML parser in push mode.
  *
- * Returns the new parser context or NULL if a memory allocation
+ * @param sax  a SAX handler (optional)
+ * @param user_data  The user data returned on SAX callbacks (optional)
+ * @param chunk  a pointer to an array of chars (optional)
+ * @param size  number of chars in the array
+ * @param filename  only used for error reporting (optional)
+ * @param enc  encoding (deprecated, pass XML_CHAR_ENCODING_NONE)
+ * @returns the new parser context or NULL if a memory allocation
  * failed.
  */
-htmlParserCtxtPtr
-htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data,
+htmlParserCtxt *
+htmlCreatePushParserCtxt(htmlSAXHandler *sax, void *user_data,
                          const char *chunk, int size, const char *filename,
 			 xmlCharEncoding enc) {
     htmlParserCtxtPtr ctxt;
@@ -5348,25 +5247,23 @@ htmlCreatePushParserCtxt(htmlSAXHandlerP
 #endif /* LIBXML_PUSH_ENABLED */
 
 /**
- * htmlSAXParseDoc:
- * @cur:  a pointer to an array of xmlChar
- * @encoding:  a free form C string describing the HTML document encoding, or NULL
- * @sax:  the SAX handler block
- * @userData: if using SAX, this pointer will be provided on callbacks.
- *
- * DEPRECATED: Use htmlNewSAXParserCtxt and htmlCtxtReadDoc.
- *
  * 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.
  *
- * Returns the resulting document tree unless SAX is NULL or the document is
+ * @deprecated Use #htmlNewSAXParserCtxt and #htmlCtxtReadDoc.
+ *
+ * @param cur  a pointer to an array of xmlChar
+ * @param encoding  a free form C string describing the HTML document encoding, or NULL
+ * @param sax  the SAX handler block
+ * @param userData  if using SAX, this pointer will be provided on callbacks.
+ * @returns the resulting document tree unless SAX is NULL or the document is
  *     not well formed.
  */
 
-htmlDocPtr
+xmlDoc *
 htmlSAXParseDoc(const xmlChar *cur, const char *encoding,
-                htmlSAXHandlerPtr sax, void *userData) {
+                htmlSAXHandler *sax, void *userData) {
     htmlDocPtr ret;
     htmlParserCtxtPtr ctxt;
 
@@ -5390,42 +5287,38 @@ htmlSAXParseDoc(const xmlChar *cur, cons
 }
 
 /**
- * htmlParseDoc:
- * @cur:  a pointer to an array of xmlChar
- * @encoding:  the encoding (optional)
- *
- * DEPRECATED: Use htmlReadDoc.
- *
  * Parse an HTML in-memory document and build a tree.
  *
+ * @deprecated Use #htmlReadDoc.
+ *
  * This function uses deprecated global parser options.
  *
- * Returns the resulting document tree
+ * @param cur  a pointer to an array of xmlChar
+ * @param encoding  the encoding (optional)
+ * @returns the resulting document tree
  */
 
-htmlDocPtr
+xmlDoc *
 htmlParseDoc(const xmlChar *cur, const char *encoding) {
     return(htmlSAXParseDoc(cur, encoding, NULL, NULL));
 }
 
 
 /**
- * htmlCreateFileParserCtxt:
- * @filename:  the filename
- * @encoding:  optional encoding
- *
- * DEPRECATED: Use htmlNewParserCtxt and htmlCtxtReadFile.
- *
  * Create a parser context to read from a file.
  *
+ * @deprecated Use #htmlNewParserCtxt and #htmlCtxtReadFile.
+ *
  * A non-NULL encoding overrides encoding declarations in the document.
  *
  * Automatic support for ZLIB/Compress compressed document is provided
  * by default if found at compile-time.
  *
- * Returns the new parser context or NULL if a memory allocation failed.
+ * @param filename  the filename
+ * @param encoding  optional encoding
+ * @returns the new parser context or NULL if a memory allocation failed.
  */
-htmlParserCtxtPtr
+htmlParserCtxt *
 htmlCreateFileParserCtxt(const char *filename, const char *encoding)
 {
     htmlParserCtxtPtr ctxt;
@@ -5454,25 +5347,23 @@ htmlCreateFileParserCtxt(const char *fil
 }
 
 /**
- * htmlSAXParseFile:
- * @filename:  the filename
- * @encoding:  encoding (optional)
- * @sax:  the SAX handler block
- * @userData: if using SAX, this pointer will be provided on callbacks.
- *
- * DEPRECATED: Use htmlNewSAXParserCtxt and htmlCtxtReadFile.
- *
  * 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.
  *
- * Returns the resulting document tree unless SAX is NULL or the document is
+ * @deprecated Use #htmlNewSAXParserCtxt and #htmlCtxtReadFile.
+ *
+ * @param filename  the filename
+ * @param encoding  encoding (optional)
+ * @param sax  the SAX handler block
+ * @param userData  if using SAX, this pointer will be provided on callbacks.
+ * @returns the resulting document tree unless SAX is NULL or the document is
  *     not well formed.
  */
 
-htmlDocPtr
-htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax,
+xmlDoc *
+htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandler *sax,
                  void *userData) {
     htmlDocPtr ret;
     htmlParserCtxtPtr ctxt;
@@ -5499,29 +5390,25 @@ htmlSAXParseFile(const char *filename, c
 }
 
 /**
- * htmlParseFile:
- * @filename:  the filename
- * @encoding:  encoding (optional)
- *
  * Parse an HTML file and build a tree.
  *
- * Returns the resulting document tree
+ * @param filename  the filename
+ * @param encoding  encoding (optional)
+ * @returns the resulting document tree
  */
 
-htmlDocPtr
+xmlDoc *
 htmlParseFile(const char *filename, const char *encoding) {
     return(htmlSAXParseFile(filename, encoding, NULL, NULL));
 }
 
 /**
- * htmlHandleOmittedElem:
- * @val:  int 0 or 1
- *
- * DEPRECATED: Use HTML_PARSE_NOIMPLIED
- *
  * Set and return the previous value for handling HTML omitted tags.
  *
- * Returns the last value for 0 for no handling, 1 for auto insertion.
+ * @deprecated Use HTML_PARSE_NOIMPLIED
+ *
+ * @param val  int 0 or 1
+ * @returns the last value for 0 for no handling, 1 for auto insertion.
  */
 
 int
@@ -5533,13 +5420,11 @@ htmlHandleOmittedElem(int val) {
 }
 
 /**
- * htmlElementAllowedHere:
- * @parent: HTML parent element
- * @elt: HTML element
+ * @deprecated Don't use.
  *
- * DEPRECATED: Don't use.
- *
- * Returns 1
+ * @param parent  HTML parent element
+ * @param elt  HTML element
+ * @returns 1
  */
 int
 htmlElementAllowedHere(const htmlElemDesc* parent ATTRIBUTE_UNUSED,
@@ -5548,13 +5433,11 @@ htmlElementAllowedHere(const htmlElemDes
 }
 
 /**
- * htmlElementStatusHere:
- * @parent: HTML parent element
- * @elt: HTML element
- *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Returns HTML_VALID
+ * @param parent  HTML parent element
+ * @param elt  HTML element
+ * @returns HTML_VALID
  */
 htmlStatus
 htmlElementStatusHere(const htmlElemDesc* parent ATTRIBUTE_UNUSED,
@@ -5563,14 +5446,12 @@ htmlElementStatusHere(const htmlElemDesc
 }
 
 /**
- * htmlAttrAllowed:
- * @elt: HTML element
- * @attr: HTML attribute
- * @legacy: whether to allow deprecated attributes
+ * @deprecated Don't use.
  *
- * DEPRECATED: Don't use.
- *
- * Returns HTML_VALID
+ * @param elt  HTML element
+ * @param attr  HTML attribute
+ * @param legacy  whether to allow deprecated attributes
+ * @returns HTML_VALID
  */
 htmlStatus
 htmlAttrAllowed(const htmlElemDesc* elt ATTRIBUTE_UNUSED,
@@ -5580,17 +5461,15 @@ htmlAttrAllowed(const htmlElemDesc* elt
 }
 
 /**
- * htmlNodeStatus:
- * @node: an htmlNodePtr in a tree
- * @legacy: whether to allow deprecated elements (YES is faster here
- *	for Element nodes)
- *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Returns HTML_VALID
+ * @param node  an xmlNode in a tree
+ * @param legacy  whether to allow deprecated elements (YES is faster here
+ *	for Element nodes)
+ * @returns HTML_VALID
  */
 htmlStatus
-htmlNodeStatus(htmlNodePtr node ATTRIBUTE_UNUSED,
+htmlNodeStatus(xmlNode *node ATTRIBUTE_UNUSED,
                int legacy ATTRIBUTE_UNUSED) {
     return(HTML_VALID);
 }
@@ -5600,112 +5479,18 @@ htmlNodeStatus(htmlNodePtr node ATTRIBUT
  *	New set (2.6.0) of simpler and more flexible APIs		*
  *									*
  ************************************************************************/
-/**
- * DICT_FREE:
- * @str:  a string
- *
- * Free a string if it is not owned by the "dict" dictionary in the
- * current scope
- */
-#define DICT_FREE(str)						\
-	if ((str) && ((!dict) ||				\
-	    (xmlDictOwns(dict, (const xmlChar *)(str)) == 0)))	\
-	    xmlFree((char *)(str));
 
 /**
- * htmlCtxtReset:
- * @ctxt: an HTML parser context
- *
  * Reset a parser context
+ *
+ * Same as #xmlCtxtReset.
+ *
+ * @param ctxt  an HTML parser context
  */
 void
-htmlCtxtReset(htmlParserCtxtPtr ctxt)
+htmlCtxtReset(htmlParserCtxt *ctxt)
 {
-    xmlParserInputPtr input;
-    xmlDictPtr dict;
-
-    if (ctxt == NULL)
-        return;
-
-    dict = ctxt->dict;
-
-    while ((input = xmlCtxtPopInput(ctxt)) != NULL) { /* Non consuming */
-        xmlFreeInputStream(input);
-    }
-    ctxt->inputNr = 0;
-    ctxt->input = NULL;
-
-    ctxt->spaceNr = 0;
-    if (ctxt->spaceTab != NULL) {
-	ctxt->spaceTab[0] = -1;
-	ctxt->space = &ctxt->spaceTab[0];
-    } else {
-	ctxt->space = NULL;
-    }
-
-
-    ctxt->nodeNr = 0;
-    ctxt->node = NULL;
-
-    ctxt->nameNr = 0;
-    ctxt->name = NULL;
-
-    ctxt->nsNr = 0;
-
-    DICT_FREE(ctxt->version);
-    ctxt->version = NULL;
-    DICT_FREE(ctxt->encoding);
-    ctxt->encoding = NULL;
-    DICT_FREE(ctxt->extSubURI);
-    ctxt->extSubURI = NULL;
-    DICT_FREE(ctxt->extSubSystem);
-    ctxt->extSubSystem = NULL;
-
-    if (ctxt->directory != NULL) {
-        xmlFree(ctxt->directory);
-        ctxt->directory = NULL;
-    }
-
-    if (ctxt->myDoc != NULL)
-        xmlFreeDoc(ctxt->myDoc);
-    ctxt->myDoc = NULL;
-
-    ctxt->standalone = -1;
-    ctxt->hasExternalSubset = 0;
-    ctxt->hasPErefs = 0;
-    ctxt->html = INSERT_INITIAL;
-    ctxt->instate = XML_PARSER_START;
-
-    ctxt->wellFormed = 1;
-    ctxt->nsWellFormed = 1;
-    ctxt->disableSAX = 0;
-    ctxt->valid = 1;
-    ctxt->vctxt.userData = ctxt;
-    ctxt->vctxt.flags = XML_VCTXT_USE_PCTXT;
-    ctxt->vctxt.error = xmlParserValidityError;
-    ctxt->vctxt.warning = xmlParserValidityWarning;
-    ctxt->record_info = 0;
-    ctxt->checkIndex = 0;
-    ctxt->endCheckState = 0;
-    ctxt->inSubset = 0;
-    ctxt->errNo = XML_ERR_OK;
-    ctxt->depth = 0;
-    ctxt->catalogs = NULL;
-    xmlInitNodeInfoSeq(&ctxt->node_seq);
-
-    if (ctxt->attsDefault != NULL) {
-        xmlHashFree(ctxt->attsDefault, xmlHashDefaultDeallocator);
-        ctxt->attsDefault = NULL;
-    }
-    if (ctxt->attsSpecial != NULL) {
-        xmlHashFree(ctxt->attsSpecial, NULL);
-        ctxt->attsSpecial = NULL;
-    }
-
-    ctxt->nbErrors = 0;
-    ctxt->nbWarnings = 0;
-    if (ctxt->lastError.code != XML_ERR_OK)
-        xmlResetError(&ctxt->lastError);
+    xmlCtxtReset(ctxt);
 }
 
 static int
@@ -5759,8 +5544,6 @@ htmlCtxtSetOptionsInternal(xmlParserCtxt
      */
     ctxt->dictNames = 0;
 
-    ctxt->linenumbers = 1;
-
     /*
      * Allow XML_PARSE_NOENT which many users set on the HTML parser.
      */
@@ -5768,132 +5551,46 @@ htmlCtxtSetOptionsInternal(xmlParserCtxt
 }
 
 /**
- * htmlCtxtSetOptions:
- * @ctxt: an HTML parser context
- * @options:  a bitmask of xmlParserOption values
- *
  * Applies the options to the parser context. Unset options are
  * cleared.
  *
- * Available since 2.14.0. With older versions, you can use
- * htmlCtxtUseOptions.
- *
- * HTML_PARSE_RECOVER
- *
- * No effect as of 2.14.0.
- *
- * HTML_PARSE_HTML5
- *
- * Make the tokenizer emit a SAX callback for each token. This results
- * in unbalanced invocations of startElement and endElement.
- *
- * For now, this is only usable with custom SAX callbacks.
- *
- * HTML_PARSE_NODEFDTD
- *
- * Do not default to a doctype if none was found.
- *
- * HTML_PARSE_NOERROR
- *
- * Disable error and warning reports to the error handlers.
- * Errors are still accessible with xmlCtxtGetLastError.
+ * @since 2.14.0
  *
- * HTML_PARSE_NOWARNING
+ * With older versions, you can use #htmlCtxtUseOptions.
  *
- * Disable warning reports.
- *
- * HTML_PARSE_PEDANTIC
- *
- * No effect.
- *
- * HTML_PARSE_NOBLANKS
- *
- * Remove some text nodes containing only whitespace from the
- * result document. Which nodes are removed depends on a conservative
- * heuristic. The reindenting feature of the serialization code relies
- * on this option to be set when parsing. Use of this option is
- * DISCOURAGED.
- *
- * HTML_PARSE_NONET
- *
- * No effect.
- *
- * HTML_PARSE_NOIMPLIED
- *
- * Do not add implied html, head or body elements.
- *
- * HTML_PARSE_COMPACT
- *
- * Store small strings directly in the node struct to save
- * memory.
- *
- * HTML_PARSE_HUGE
- *
- * Relax some internal limits.
- *
- * Available since 2.14.0. Use XML_PARSE_HUGE works with older
- * versions.
- *
- * Maximum size of text nodes, tags, comments, CDATA sections
- *
- * normal: 10M
- * huge:    1B
- *
- * Maximum size of names, system literals, pubid literals
- *
- * normal: 50K
- * huge:   10M
- *
- * Maximum nesting depth of elements
- *
- * normal:  256
- * huge:   2048
- *
- * HTML_PARSE_IGNORE_ENC
- *
- * Ignore the encoding in the HTML declaration. This option is
- * mostly unneeded these days. The only effect is to enforce
- * UTF-8 decoding of ASCII-like data.
- *
- * HTML_PARSE_BIG_LINES
- *
- * Enable reporting of line numbers larger than 65535.
- *
- * Available since 2.14.0.
- *
- * Returns 0 in case of success, the set of unknown or unimplemented options
+ * @param ctxt  an HTML parser context
+ * @param options  a bitmask of htmlParserOption values
+ * @returns 0 in case of success, the set of unknown or unimplemented options
  *         in case of error.
  */
 int
-htmlCtxtSetOptions(xmlParserCtxtPtr ctxt, int options)
+htmlCtxtSetOptions(htmlParserCtxt *ctxt, int options)
 {
     return(htmlCtxtSetOptionsInternal(ctxt, options, 0));
 }
 
 /**
- * htmlCtxtUseOptions:
- * @ctxt: an HTML parser context
- * @options:  a combination of htmlParserOption(s)
- *
- * DEPRECATED: Use htmlCtxtSetOptions.
- *
  * Applies the options to the parser context. The following options
  * are never cleared and can only be enabled:
  *
- * HTML_PARSE_NODEFDTD
- * HTML_PARSE_NOERROR
- * HTML_PARSE_NOWARNING
- * HTML_PARSE_NOIMPLIED
- * HTML_PARSE_COMPACT
- * HTML_PARSE_HUGE
- * HTML_PARSE_IGNORE_ENC
- * HTML_PARSE_BIG_LINES
+ * @deprecated Use #htmlCtxtSetOptions.
  *
- * Returns 0 in case of success, the set of unknown or unimplemented options
+ * - HTML_PARSE_NODEFDTD
+ * - HTML_PARSE_NOERROR
+ * - HTML_PARSE_NOWARNING
+ * - HTML_PARSE_NOIMPLIED
+ * - HTML_PARSE_COMPACT
+ * - HTML_PARSE_HUGE
+ * - HTML_PARSE_IGNORE_ENC
+ * - HTML_PARSE_BIG_LINES
+ *
+ * @param ctxt  an HTML parser context
+ * @param options  a combination of htmlParserOption values
+ * @returns 0 in case of success, the set of unknown or unimplemented options
  *         in case of error.
  */
 int
-htmlCtxtUseOptions(htmlParserCtxtPtr ctxt, int options)
+htmlCtxtUseOptions(htmlParserCtxt *ctxt, int options)
 {
     int keepMask;
 
@@ -5913,18 +5610,16 @@ htmlCtxtUseOptions(htmlParserCtxtPtr ctx
 }
 
 /**
- * htmlCtxtParseDocument:
- * @ctxt:  an HTML parser context
- * @input:  parser input
- *
  * Parse an HTML document and return the resulting document tree.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns the resulting document tree or NULL
+ * @param ctxt  an HTML parser context
+ * @param input  parser input
+ * @returns the resulting document tree or NULL
  */
-htmlDocPtr
-htmlCtxtParseDocument(htmlParserCtxtPtr ctxt, xmlParserInputPtr input)
+xmlDoc *
+htmlCtxtParseDocument(htmlParserCtxt *ctxt, xmlParserInput *input)
 {
     htmlDocPtr ret;
 
@@ -5956,20 +5651,18 @@ htmlCtxtParseDocument(htmlParserCtxtPtr
 }
 
 /**
- * htmlReadDoc:
- * @str:  a pointer to a zero terminated string
- * @url:  only used for error reporting (optoinal)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of htmlParserOptions
- *
  * Convenience function to parse an HTML document from a zero-terminated
  * string.
  *
- * See htmlCtxtReadDoc for details.
+ * See #htmlCtxtReadDoc for details.
  *
- * Returns the resulting document tree.
+ * @param str  a pointer to a zero terminated string
+ * @param url  only used for error reporting (optoinal)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree.
  */
-htmlDocPtr
+xmlDoc *
 htmlReadDoc(const xmlChar *str, const char *url, const char *encoding,
             int options)
 {
@@ -5994,19 +5687,17 @@ htmlReadDoc(const xmlChar *str, const ch
 }
 
 /**
- * htmlReadFile:
- * @filename:  a file or URL
- * @encoding:  the document encoding (optional)
- * @options:  a combination of htmlParserOptions
- *
  * Convenience function to parse an HTML file from the filesystem,
  * the network or a global user-defined resource loader.
  *
- * See htmlCtxtReadFile for details.
+ * See #htmlCtxtReadFile for details.
  *
- * Returns the resulting document tree.
+ * @param filename  a file or URL
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree.
  */
-htmlDocPtr
+xmlDoc *
 htmlReadFile(const char *filename, const char *encoding, int options)
 {
     htmlParserCtxtPtr ctxt;
@@ -6029,21 +5720,19 @@ htmlReadFile(const char *filename, const
 }
 
 /**
- * htmlReadMemory:
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @url:  only used for error reporting (optional)
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of htmlParserOption(s)
- *
  * Convenience function to parse an HTML document from memory.
  * The input buffer must not contain any terminating null bytes.
  *
- * See htmlCtxtReadMemory for details.
+ * See #htmlCtxtReadMemory for details.
  *
- * Returns the resulting document tree
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param url  only used for error reporting (optional)
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
+xmlDoc *
 htmlReadMemory(const char *buffer, int size, const char *url,
                const char *encoding, int options)
 {
@@ -6071,23 +5760,21 @@ htmlReadMemory(const char *buffer, int s
 }
 
 /**
- * htmlReadFd:
- * @fd:  an open file descriptor
- * @url:  only used for error reporting (optional)
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of htmlParserOptions
- *
  * Convenience function to parse an HTML document from a
  * file descriptor.
  *
  * NOTE that the file descriptor will not be closed when the
  * context is freed or reset.
  *
- * See htmlCtxtReadFd for details.
+ * See #htmlCtxtReadFd for details.
  *
- * Returns the resulting document tree
+ * @param fd  an open file descriptor
+ * @param url  only used for error reporting (optional)
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
+xmlDoc *
 htmlReadFd(int fd, const char *url, const char *encoding, int options)
 {
     htmlParserCtxtPtr ctxt;
@@ -6110,22 +5797,20 @@ htmlReadFd(int fd, const char *url, cons
 }
 
 /**
- * htmlReadIO:
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function (optional)
- * @ioctx:  an I/O handler
- * @url:  only used for error reporting (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of htmlParserOption(s)
- *
  * Convenience function to parse an HTML document from I/O functions
  * and context.
  *
- * See htmlCtxtReadIO for details.
+ * See #htmlCtxtReadIO for details.
  *
- * Returns the resulting document tree
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function (optional)
+ * @param ioctx  an I/O handler
+ * @param url  only used for error reporting (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
+xmlDoc *
 htmlReadIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
           void *ioctx, const char *url, const char *encoding, int options)
 {
@@ -6150,21 +5835,19 @@ htmlReadIO(xmlInputReadCallback ioread,
 }
 
 /**
- * htmlCtxtReadDoc:
- * @ctxt:  an HTML parser context
- * @str:  a pointer to a zero terminated string
- * @URL:  only used for error reporting (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of htmlParserOptions
- *
  * Parse an HTML in-memory document and build a tree.
  *
- * See htmlCtxtUseOptions for details.
+ * See #htmlCtxtUseOptions for details.
  *
- * Returns the resulting document tree
+ * @param ctxt  an HTML parser context
+ * @param str  a pointer to a zero terminated string
+ * @param URL  only used for error reporting (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
-htmlCtxtReadDoc(htmlParserCtxtPtr ctxt, const xmlChar *str,
+xmlDoc *
+htmlCtxtReadDoc(xmlParserCtxt *ctxt, const xmlChar *str,
                 const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -6184,21 +5867,19 @@ htmlCtxtReadDoc(htmlParserCtxtPtr ctxt,
 }
 
 /**
- * htmlCtxtReadFile:
- * @ctxt:  an HTML parser context
- * @filename:  a file or URL
- * @encoding:  the document encoding (optional)
- * @options:  a combination of htmlParserOptions
- *
  * Parse an HTML file from the filesystem, the network or a
  * user-defined resource loader.
  *
- * See htmlCtxtUseOptions for details.
+ * See #htmlCtxtUseOptions for details.
  *
- * Returns the resulting document tree
+ * @param ctxt  an HTML parser context
+ * @param filename  a file or URL
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
-htmlCtxtReadFile(htmlParserCtxtPtr ctxt, const char *filename,
+xmlDoc *
+htmlCtxtReadFile(xmlParserCtxt *ctxt, const char *filename,
                 const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -6217,23 +5898,21 @@ htmlCtxtReadFile(htmlParserCtxtPtr ctxt,
 }
 
 /**
- * htmlCtxtReadMemory:
- * @ctxt:  an HTML parser context
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @URL:  only used for error reporting (optional)
- * @encoding:  the document encoding (optinal)
- * @options:  a combination of htmlParserOptions
- *
  * Parse an HTML in-memory document and build a tree. The input buffer must
  * not contain any terminating null bytes.
  *
- * See htmlCtxtUseOptions for details.
+ * See #htmlCtxtUseOptions for details.
  *
- * Returns the resulting document tree
+ * @param ctxt  an HTML parser context
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param URL  only used for error reporting (optional)
+ * @param encoding  the document encoding (optinal)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
-htmlCtxtReadMemory(htmlParserCtxtPtr ctxt, const char *buffer, int size,
+xmlDoc *
+htmlCtxtReadMemory(xmlParserCtxt *ctxt, const char *buffer, int size,
                   const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -6253,24 +5932,22 @@ htmlCtxtReadMemory(htmlParserCtxtPtr ctx
 }
 
 /**
- * htmlCtxtReadFd:
- * @ctxt:  an HTML parser context
- * @fd:  an open file descriptor
- * @URL:  only used for error reporting (optional)
- * @encoding:  the document encoding (optinal)
- * @options:  a combination of htmlParserOptions
- *
  * Parse an HTML from a file descriptor and build a tree.
  *
- * See htmlCtxtUseOptions for details.
+ * See #htmlCtxtUseOptions for details.
  *
  * NOTE that the file descriptor will not be closed when the
  * context is freed or reset.
  *
- * Returns the resulting document tree
+ * @param ctxt  an HTML parser context
+ * @param fd  an open file descriptor
+ * @param URL  only used for error reporting (optional)
+ * @param encoding  the document encoding (optinal)
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
-htmlCtxtReadFd(htmlParserCtxtPtr ctxt, int fd,
+xmlDoc *
+htmlCtxtReadFd(xmlParserCtxt *ctxt, int fd,
               const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -6289,23 +5966,21 @@ htmlCtxtReadFd(htmlParserCtxtPtr ctxt, i
 }
 
 /**
- * htmlCtxtReadIO:
- * @ctxt:  an HTML parser context
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of htmlParserOption(s)
- *
  * Parse an HTML document from I/O functions and source and build a tree.
  *
- * See htmlCtxtUseOptions for details.
+ * See #htmlCtxtUseOptions for details.
  *
- * Returns the resulting document tree
+ * @param ctxt  an HTML parser context
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of htmlParserOption values
+ * @returns the resulting document tree
  */
-htmlDocPtr
-htmlCtxtReadIO(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
+xmlDoc *
+htmlCtxtReadIO(xmlParserCtxt *ctxt, xmlInputReadCallback ioread,
               xmlInputCloseCallback ioclose, void *ioctx,
 	      const char *URL,
               const char *encoding, int options)
diff -pruN 2.14.6+dfsg-0.1/HTMLtree.c 2.15.0+dfsg-0.3/HTMLtree.c
--- 2.14.6+dfsg-0.1/HTMLtree.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/HTMLtree.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 
@@ -24,9 +24,12 @@
 #include <libxml/uri.h>
 
 #include "private/buf.h"
+#include "private/html.h"
 #include "private/error.h"
+#include "private/html.h"
 #include "private/io.h"
 #include "private/save.h"
+#include "private/tree.h"
 
 /************************************************************************
  *									*
@@ -34,300 +37,405 @@
  *									*
  ************************************************************************/
 
-/**
- * htmlGetMetaEncoding:
- * @doc:  the document
- *
- * Encoding definition lookup in the Meta tags
- *
- * Returns the current encoding as flagged in the HTML source
- */
-const xmlChar *
-htmlGetMetaEncoding(htmlDocPtr doc) {
-    htmlNodePtr cur;
-    const xmlChar *content;
-    const xmlChar *encoding;
+typedef struct {
+    xmlAttrPtr attr; /* charset or content */
+    const xmlChar *attrValue;
+    htmlMetaEncodingOffsets off;
+} htmlMetaEncoding;
+
+static htmlNodePtr
+htmlFindFirstChild(htmlNodePtr parent, const char *name) {
+    htmlNodePtr child;
+
+    for (child = parent->children; child != NULL; child = child->next) {
+        if ((child->type == XML_ELEMENT_NODE) &&
+            (xmlStrcasecmp(child->name, BAD_CAST name) == 0))
+            return(child);
+    }
+
+    return(NULL);
+}
+
+static htmlNodePtr
+htmlFindHead(htmlDocPtr doc) {
+    htmlNodePtr html;
 
     if (doc == NULL)
-	return(NULL);
-    cur = doc->children;
+        return(NULL);
 
-    /*
-     * Search the html
-     */
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrEqual(cur->name, BAD_CAST"html"))
-		break;
-	    if (xmlStrEqual(cur->name, BAD_CAST"head"))
-		goto found_head;
-	    if (xmlStrEqual(cur->name, BAD_CAST"meta"))
-		goto found_meta;
-	}
-	cur = cur->next;
-    }
-    if (cur == NULL)
-	return(NULL);
-    cur = cur->children;
+    html = htmlFindFirstChild((htmlNodePtr) doc, "html");
+    if (html == NULL)
+        return(NULL);
 
-    /*
-     * Search the head
-     */
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrEqual(cur->name, BAD_CAST"head"))
-		break;
-	    if (xmlStrEqual(cur->name, BAD_CAST"meta"))
-		goto found_meta;
-	}
-	cur = cur->next;
-    }
-    if (cur == NULL)
-	return(NULL);
-found_head:
-    cur = cur->children;
+    return(htmlFindFirstChild(html, "head"));
+}
 
-    /*
-     * Search the meta elements
-     */
-found_meta:
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrEqual(cur->name, BAD_CAST"meta")) {
-		xmlAttrPtr attr = cur->properties;
-		int http;
-		const xmlChar *value;
-
-		content = NULL;
-		http = 0;
-		while (attr != NULL) {
-		    if ((attr->children != NULL) &&
-		        (attr->children->type == XML_TEXT_NODE) &&
-		        (attr->children->next == NULL)) {
-			value = attr->children->content;
-			if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
-			 && (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
-			    http = 1;
-			else if ((value != NULL)
-			 && (!xmlStrcasecmp(attr->name, BAD_CAST"content")))
-			    content = value;
-			if ((http != 0) && (content != NULL))
-			    goto found_content;
-		    }
-		    attr = attr->next;
-		}
-	    }
-	}
-	cur = cur->next;
+int
+htmlParseContentType(const xmlChar *val, htmlMetaEncodingOffsets *off) {
+    const xmlChar *p = val;
+
+    while (1) {
+        size_t start, end;
+
+        while ((*p != 'c') && (*p != 'C')) {
+            if (*p == 0)
+                return(0);
+            p += 1;
+        }
+        p += 1;
+
+        if (xmlStrncasecmp(p, BAD_CAST "harset", 6) != 0)
+            continue;
+
+        p += 6;
+        while (IS_WS_HTML(*p)) p += 1;
+
+        if (*p != '=')
+            continue;
+
+        p += 1;
+        while (IS_WS_HTML(*p)) p += 1;
+
+        if (*p == 0)
+            return(0);
+
+        if ((*p == '"') || (*p == '\'')) {
+            int quote = *p;
+
+            p += 1;
+            while (IS_WS_HTML(*p)) p += 1;
+
+            start = p - val;
+            end = start;
+
+            while (*p != quote) {
+                if (*p == 0)
+                    return(0);
+                if (!IS_WS_HTML(*p))
+                    end = p + 1 - val;
+                p += 1;
+            }
+        } else {
+            start = p - val;
+
+            while ((*p != 0) && (*p != ';') && (!IS_WS_HTML(*p)))
+                p += 1;
+
+            end = p - val;
+        }
+
+        off->start = start;
+        off->end = end;
+        off->size = p - val + strlen((char *) p);
+
+        return(1);
     }
-    return(NULL);
 
-found_content:
-    encoding = xmlStrstr(content, BAD_CAST"charset=");
-    if (encoding == NULL)
-	encoding = xmlStrstr(content, BAD_CAST"Charset=");
-    if (encoding == NULL)
-	encoding = xmlStrstr(content, BAD_CAST"CHARSET=");
-    if (encoding != NULL) {
-	encoding += 8;
-    } else {
-	encoding = xmlStrstr(content, BAD_CAST"charset =");
-	if (encoding == NULL)
-	    encoding = xmlStrstr(content, BAD_CAST"Charset =");
-	if (encoding == NULL)
-	    encoding = xmlStrstr(content, BAD_CAST"CHARSET =");
-	if (encoding != NULL)
-	    encoding += 9;
+    return(0);
+}
+
+static xmlAttrPtr
+htmlFindMetaEncodingAttr(htmlNodePtr elem, int *outIsContentType) {
+    xmlAttrPtr attr, contentAttr = NULL;
+    int isContentType = 0;
+
+    if (xmlStrcasecmp(elem->name, BAD_CAST "meta") != 0)
+        return(NULL);
+
+    for (attr = elem->properties; attr != NULL; attr = attr->next) {
+        if (attr->ns != NULL)
+            continue;
+        if (xmlStrcasecmp(attr->name, BAD_CAST "charset") == 0) {
+            *outIsContentType = 0;
+            return(attr);
+        }
+        if (xmlStrcasecmp(attr->name, BAD_CAST "content") == 0)
+            contentAttr = attr;
+        if ((xmlStrcasecmp(attr->name, BAD_CAST "http-equiv") == 0) &&
+            (attr->children != NULL) &&
+            (attr->children->type == XML_TEXT_NODE) &&
+            (attr->children->next == NULL) &&
+            (xmlStrcasecmp(attr->children->content,
+                           BAD_CAST "Content-Type") == 0))
+            isContentType = 1;
     }
-    if (encoding != NULL) {
-	while ((*encoding == ' ') || (*encoding == '\t')) encoding++;
+
+    if ((isContentType) && (contentAttr != NULL)) {
+        *outIsContentType = 1;
+        return(contentAttr);
     }
-    return(encoding);
+
+    return(NULL);
 }
 
-/**
- * htmlSetMetaEncoding:
- * @doc:  the document
- * @encoding:  the encoding string
- *
- * Sets the current encoding in the Meta tags
- * NOTE: this will not change the document content encoding, just
- * the META flag associated.
- *
- * Returns 0 in case of success and -1 in case of error
- */
-int
-htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) {
-    htmlNodePtr cur, meta = NULL, head = NULL;
-    const xmlChar *content = NULL;
-    char newcontent[100];
+static int
+htmlParseMetaEncoding(htmlNodePtr elem, htmlMetaEncoding *menc) {
+    xmlAttrPtr attr;
+    const xmlChar *val = NULL;
+    int isContentType;
 
-    newcontent[0] = 0;
+    if ((elem->type != XML_ELEMENT_NODE) ||
+        (xmlStrcasecmp(elem->name, BAD_CAST "meta") != 0))
+        return(0);
 
-    if (doc == NULL)
-	return(-1);
+    attr = htmlFindMetaEncodingAttr(elem, &isContentType);
+    if (attr == NULL)
+        return(0);
 
-    /* html isn't a real encoding it's just libxml2 way to get entities */
-    if (!xmlStrcasecmp(encoding, BAD_CAST "html"))
-        return(-1);
+    if ((attr->children != NULL) &&
+        (attr->children->type == XML_TEXT_NODE) &&
+        (attr->children->next == NULL) &&
+        (attr->children->content != NULL))
+        val = attr->children->content;
+    else
+        val = BAD_CAST "";
 
-    if (encoding != NULL) {
-	snprintf(newcontent, sizeof(newcontent), "text/html; charset=%s",
-                (char *)encoding);
-	newcontent[sizeof(newcontent) - 1] = 0;
-    }
 
-    cur = doc->children;
+    if (!isContentType) {
+        size_t size = strlen((char *) val);
+        size_t start = 0;
+        size_t end = size;
 
-    /*
-     * Search the html
-     */
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"html") == 0)
-		break;
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0)
-		goto found_head;
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0)
-		goto found_meta;
-	}
-	cur = cur->next;
-    }
-    if (cur == NULL)
-	return(-1);
-    cur = cur->children;
+        while ((start < size) && (IS_WS_HTML(val[start])))
+            start += 1;
 
-    /*
-     * Search the head
-     */
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0)
-		break;
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) {
-                head = cur->parent;
-		goto found_meta;
-            }
-	}
-	cur = cur->next;
+        while ((end > 0) && (IS_WS_HTML(val[end-1])))
+            end -= 1;
+
+        menc->attr = attr;
+        menc->attrValue = val;
+        menc->off.start = start;
+        menc->off.end = end;
+        menc->off.size = size;
+
+        return(1);
+    } else {
+        if (htmlParseContentType(val, &menc->off)) {
+            menc->attr = attr;
+            menc->attrValue = val;
+
+            return(1);
+        }
     }
-    if (cur == NULL)
-	return(-1);
-found_head:
-    head = cur;
-    if (cur->children == NULL)
-        goto create;
-    cur = cur->children;
 
-found_meta:
+    return(0);
+}
+
+static xmlChar *
+htmlUpdateMetaEncoding(htmlMetaEncoding *menc, const char *encoding) {
+    xmlChar *newVal, *p;
+    size_t size, oldEncSize, newEncSize;
+
     /*
-     * Search and update all the remaining the meta elements carrying
-     * encoding information
+     * The pseudo "HTML" encoding only produces ASCII.
      */
-    while (cur != NULL) {
-	if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) {
-	    if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) {
-		xmlAttrPtr attr = cur->properties;
-		int http;
-		const xmlChar *value;
-
-		content = NULL;
-		http = 0;
-		while (attr != NULL) {
-		    if ((attr->children != NULL) &&
-		        (attr->children->type == XML_TEXT_NODE) &&
-		        (attr->children->next == NULL)) {
-			value = attr->children->content;
-			if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
-			 && (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
-			    http = 1;
-			else
-                        {
-                           if ((value != NULL) &&
-                               (!xmlStrcasecmp(attr->name, BAD_CAST"content")))
-			       content = value;
-                        }
-		        if ((http != 0) && (content != NULL))
-			    break;
-		    }
-		    attr = attr->next;
-		}
-		if ((http != 0) && (content != NULL)) {
-		    meta = cur;
-		    break;
-		}
+    if (xmlStrcasecmp(BAD_CAST encoding, BAD_CAST "HTML") == 0)
+        encoding = "ASCII";
 
-	    }
-	}
-	cur = cur->next;
-    }
-create:
-    if (meta == NULL) {
-        if ((encoding != NULL) && (head != NULL)) {
+    oldEncSize = menc->off.end - menc->off.start;
+    newEncSize = strlen((char *) encoding);
+    size = menc->off.size - oldEncSize + newEncSize;
+    newVal = xmlMalloc(size + 1);
+    if (newVal == NULL)
+        return(NULL);
+
+    p = newVal;
+    memcpy(p, menc->attrValue, menc->off.start);
+    p += menc->off.start;
+    memcpy(p, encoding, newEncSize);
+    p += newEncSize;
+    memcpy(p, menc->attrValue + menc->off.end, menc->off.size - menc->off.end);
+    newVal[size] = 0;
+
+    return(newVal);
+}
+
+/**
+ * Look up and encoding declaration in the meta tags.
+ *
+ * The returned string points into attribute content and can contain
+ * trailing garbage. It should be copied before modifying or freeing
+ * nodes.
+ *
+ * @param doc  the document
+ * @returns the encoding ot NULL if not found.
+ */
+const xmlChar *
+htmlGetMetaEncoding(xmlDoc *doc) {
+    htmlNodePtr head, node;
+
+    head = htmlFindHead(doc);
+    if (head == NULL)
+        return(NULL);
+
+    for (node = head->children; node != NULL; node = node->next) {
+        htmlMetaEncoding menc;
+
+        if (htmlParseMetaEncoding(node, &menc)) {
             /*
-             * Create a new Meta element with the right attributes
+             * Returning a `const xmlChar *` only allows to return
+             * a suffix. In http-equiv meta tags, there could be
+             * more data after the charset, although it's probably
+             * rare in practice.
              */
-
-            meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL);
-            if (head->children == NULL)
-                xmlAddChild(head, meta);
-            else
-                xmlAddPrevSibling(head->children, meta);
-            xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type");
-            xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent);
-        }
-    } else {
-        /* remove the meta tag if NULL is passed */
-        if (encoding == NULL) {
-            xmlUnlinkNode(meta);
-            xmlFreeNode(meta);
-        }
-        /* change the document only if there is a real encoding change */
-        else if (xmlStrcasestr(content, encoding) == NULL) {
-            xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent);
+            return(menc.attrValue + menc.off.start);
         }
     }
 
-
-    return(0);
+    return(NULL);
 }
 
 /**
- * booleanHTMLAttrs:
+ * Creates or updates a meta tag with an encoding declaration.
  *
- * These are the HTML attributes which will be output
- * in minimized form, i.e. <option selected="selected"> will be
- * output as <option selected>, as per XSLT 1.0 16.2 "HTML Output Method"
+ * NOTE: This will not change the document content encoding.
  *
+ * @param doc  the document
+ * @param encoding  the encoding string
+ * @returns 0 in case of success, 1 if no head element was found or
+ * arguments are invalid and -1 if memory allocation failed.
  */
-static const char* const htmlBooleanAttrs[] = {
-  "checked", "compact", "declare", "defer", "disabled", "ismap",
-  "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly",
-  "selected", NULL
-};
+int
+htmlSetMetaEncoding(xmlDoc *doc, const xmlChar *encoding) {
+    htmlNodePtr head, meta;
+    int found = 0;
 
+    if (encoding == NULL)
+        return(1);
+
+    head = htmlFindHead(doc);
+    if (head == NULL)
+        return(1);
+
+    for (meta = head->children; meta != NULL; meta = meta->next) {
+        htmlMetaEncoding menc;
+
+        if (htmlParseMetaEncoding(meta, &menc)) {
+            xmlChar *newVal;
+            int ret;
+
+            found = 1;
+
+            newVal = htmlUpdateMetaEncoding(&menc, (char *) encoding);
+            if (newVal == NULL)
+                return(-1);
+            xmlNodeSetContent((xmlNodePtr) menc.attr, NULL);
+            ret = xmlNodeAddContent((xmlNodePtr) menc.attr, newVal);
+            xmlFree(newVal);
+
+            if (ret < 0)
+                return(-1);
+        }
+    }
+
+    if (found)
+        return(0);
+
+    meta = xmlNewDocNode(head->doc, NULL, BAD_CAST "meta", NULL);
+    if (meta == NULL)
+        return(-1);
+
+    if (xmlNewProp(meta, BAD_CAST "charset", encoding) == NULL) {
+        xmlFreeNode(meta);
+        return(-1);
+    }
+
+    if (head->children == NULL)
+        xmlAddChild(head, meta);
+    else
+        xmlAddPrevSibling(head->children, meta);
+
+    return(0);
+}
 
 /**
- * htmlIsBooleanAttr:
- * @name:  the name of the attribute to check
- *
- * DEPRECATED: Internal function, don't use.
+ * Determine if a given attribute is a boolean attribute. This
+ * doesn't handle HTML5.
  *
- * Determine if a given attribute is a boolean attribute.
+ * @deprecated Internal function, don't use.
  *
- * returns: false if the attribute is not boolean, true otherwise.
+ * @param name  the name of the attribute to check
+ * @returns false if the attribute is not boolean, true otherwise.
  */
 int
 htmlIsBooleanAttr(const xmlChar *name)
 {
-    int i = 0;
+    const char *str = NULL;
+
+    if (name == NULL)
+        return(0);
 
-    while (htmlBooleanAttrs[i] != NULL) {
-        if (xmlStrcasecmp((const xmlChar *)htmlBooleanAttrs[i], name) == 0)
-            return 1;
-        i++;
+    /*
+     * These are the HTML attributes which will be output
+     * in minimized form, i.e. `<option selected="selected">` will be
+     * output as `<option selected>`, as per XSLT 1.0 16.2 "HTML Output
+     * Method":
+     *
+     * "checked", "compact", "declare", "defer", "disabled", "ismap",
+     * "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly",
+     * "selected"
+     *
+     * Additional attributes from HTML5 (not implemented yet):
+     *
+     * "allowfullscreen", "alpha", "async", "autofocus", "autoplay",
+     * "controls", "default", "formnovalidate", "inert", "itemscope",
+     * "loop", "muted", "nomodule", "novalidate", "open", "playsinline",
+     * "required", "reversed", "shadowrootdelegatesfocus",
+     * "shadowrootclonable", "shadowrootserializable",
+     * "shadowrootcustomelementregistry", "truespeed"
+     */
+
+    switch (name[0] | 0x20) {
+        case 'c':
+            name += 1;
+            switch (name[0] | 0x20) {
+                case 'h': str = "ecked"; break;
+                case 'o': str = "mpact"; break;
+            }
+            break;
+        case 'd':
+            name += 1;
+            switch (name[0] | 0x20) {
+                case 'e':
+                    name += 1;
+                    switch (name[0] | 0x20) {
+                        case 'c': str = "lare"; break;
+                        case 'f': str = "er"; break;
+                    }
+                    break;
+                case 'i': str = "sabled"; break;
+            }
+            break;
+        case 'i':
+            str = "smap";
+            break;
+        case 'm':
+            str = "ultiple";
+            break;
+        case 'n':
+            name += 1;
+            if ((name[0] | 0x20) != 'o')
+                break;
+            name += 1;
+            switch (name[0] | 0x20) {
+                case 'h': str = "ref"; break;
+                case 'r': str = "esize"; break;
+                case 's': str = "hade"; break;
+                case 'w': str = "rap"; break;
+            }
+            break;
+        case 'r':
+            str = "eadonly";
+            break;
+        case 's':
+            str = "elected";
+            break;
     }
-    return 0;
+
+    if (str == NULL)
+        return(0);
+
+    return(xmlStrcasecmp(name + 1, BAD_CAST str) == 0);
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
@@ -349,19 +457,17 @@ htmlFindOutputEncoder(const char *encodi
 }
 
 /**
- * htmlBufNodeDumpFormat:
- * @buf:  the xmlBufPtr output
- * @doc:  the document
- * @cur:  the current node
- * @format:  should formatting spaces been added
+ * Serialize an HTML document to an xmlBuf.
  *
- * Dump an HTML node, recursive behaviour,children are printed too.
- *
- * Returns the number of byte written or -1 in case of error
+ * @param buf  the xmlBuf output
+ * @param doc  the document (unused)
+ * @param cur  the current node
+ * @param format  should formatting newlines been added
+ * @returns the number of bytes written or -1 in case of error
  */
 static size_t
-htmlBufNodeDumpFormat(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur,
-	           int format) {
+htmlBufNodeDumpFormat(xmlBufPtr buf, xmlDocPtr doc ATTRIBUTE_UNUSED,
+                      xmlNodePtr cur, int format) {
     size_t use;
     size_t ret;
     xmlOutputBufferPtr outbuf;
@@ -384,7 +490,7 @@ htmlBufNodeDumpFormat(xmlBufPtr buf, xml
     outbuf->written = 0;
 
     use = xmlBufUse(buf);
-    htmlNodeDumpFormatOutput(outbuf, doc, cur, NULL, format);
+    htmlNodeDumpInternal(outbuf, cur, NULL, format);
     if (outbuf->error)
         ret = (size_t) -1;
     else
@@ -394,18 +500,15 @@ htmlBufNodeDumpFormat(xmlBufPtr buf, xml
 }
 
 /**
- * htmlNodeDump:
- * @buf:  the HTML buffer output
- * @doc:  the document
- * @cur:  the current node
- *
- * Dump an HTML node, recursive behaviour,children are printed too,
- * and formatting returns are added.
+ * Serialize an HTML node to an xmlBuffer. Always uses UTF-8.
  *
- * Returns the number of byte written or -1 in case of error
+ * @param buf  the HTML buffer output
+ * @param doc  the document
+ * @param cur  the current node
+ * @returns the number of bytes written or -1 in case of error
  */
 int
-htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) {
+htmlNodeDump(xmlBuffer *buf, xmlDoc *doc, xmlNode *cur) {
     xmlBufPtr buffer;
     size_t ret1;
     int ret2;
@@ -428,22 +531,22 @@ htmlNodeDump(xmlBufferPtr buf, xmlDocPtr
 }
 
 /**
- * htmlNodeDumpFileFormat:
- * @out:  the FILE pointer
- * @doc:  the document
- * @cur:  the current node
- * @encoding: the document encoding
- * @format:  should formatting spaces been added
+ * Serialize an HTML node to an xmlBuffer.
  *
- * Dump an HTML node, recursive behaviour,children are printed too.
- *
- * TODO: if encoding == NULL try to save in the doc encoding
- *
- * returns: the number of byte written or -1 in case of failure.
+ * If encoding is NULL, ASCII with HTML 4.0 named character entities
+ * will be used. This is inefficient compared to UTF-8 and might be
+ * changed in a future version.
+ *
+ * @param out  the FILE pointer
+ * @param doc  the document (unused)
+ * @param cur  the current node
+ * @param encoding  the document encoding (optional)
+ * @param format  should formatting newlines been added
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-htmlNodeDumpFileFormat(FILE *out, xmlDocPtr doc,
-	               xmlNodePtr cur, const char *encoding, int format) {
+htmlNodeDumpFileFormat(FILE *out, xmlDoc *doc ATTRIBUTE_UNUSED,
+	               xmlNode *cur, const char *encoding, int format) {
     xmlOutputBufferPtr buf;
     xmlCharEncodingHandlerPtr handler;
     int ret;
@@ -461,41 +564,44 @@ htmlNodeDumpFileFormat(FILE *out, xmlDoc
         return(-1);
     }
 
-    htmlNodeDumpFormatOutput(buf, doc, cur, NULL, format);
+    htmlNodeDumpInternal(buf, cur, NULL, format);
 
     ret = xmlOutputBufferClose(buf);
     return(ret);
 }
 
 /**
- * htmlNodeDumpFile:
- * @out:  the FILE pointer
- * @doc:  the document
- * @cur:  the current node
- *
- * Dump an HTML node, recursive behaviour,children are printed too,
- * and formatting returns are added.
+ * Same as #htmlNodeDumpFileFormat with `format` set to 1 which is
+ * typically undesired. Use of this function is DISCOURAGED in favor
+ * of #htmlNodeDumpFileFormat.
+ *
+ * @param out  the FILE pointer
+ * @param doc  the document
+ * @param cur  the current node
  */
 void
-htmlNodeDumpFile(FILE *out, xmlDocPtr doc, xmlNodePtr cur) {
+htmlNodeDumpFile(FILE *out, xmlDoc *doc, xmlNode *cur) {
     htmlNodeDumpFileFormat(out, doc, cur, NULL, 1);
 }
 
 /**
- * htmlDocDumpMemoryFormat:
- * @cur:  the document
- * @mem:  OUT: the memory pointer
- * @size:  OUT: the memory length
- * @format:  should formatting spaces been added
+ * Serialize an HTML node to a memory, also returning the size of
+ * the result. It's up to the caller to free the memory.
  *
- * Dump an HTML document in memory and return the xmlChar * and it's size.
- * It's up to the caller to free the memory.
+ * Uses the encoding of the document. If the document has no
+ * encoding, ASCII with HTML 4.0 named character entities will
+ * be used. This is inefficient compared to UTF-8 and might be
+ * changed in a future version.
+ *
+ * @param cur  the document
+ * @param mem  OUT: the memory pointer
+ * @param size  OUT: the memory length
+ * @param format  should formatting newlines been added
  */
 void
-htmlDocDumpMemoryFormat(xmlDocPtr cur, xmlChar**mem, int *size, int format) {
+htmlDocDumpMemoryFormat(xmlDoc *cur, xmlChar**mem, int *size, int format) {
     xmlOutputBufferPtr buf;
     xmlCharEncodingHandlerPtr handler = NULL;
-    const char *encoding;
 
     xmlInitParser();
 
@@ -506,8 +612,7 @@ htmlDocDumpMemoryFormat(xmlDocPtr cur, x
     if (cur == NULL)
 	return;
 
-    encoding = (const char *) htmlGetMetaEncoding(cur);
-    if (htmlFindOutputEncoder(encoding, &handler) != XML_ERR_OK)
+    if (htmlFindOutputEncoder((char *) cur->encoding, &handler) != XML_ERR_OK)
         return;
     buf = xmlAllocOutputBuffer(handler);
     if (buf == NULL) {
@@ -533,17 +638,18 @@ htmlDocDumpMemoryFormat(xmlDocPtr cur, x
 }
 
 /**
- * htmlDocDumpMemory:
- * @cur:  the document
- * @mem:  OUT: the memory pointer
- * @size:  OUT: the memory length
- *
- * Dump an HTML document in memory and return the xmlChar * and it's size.
- * It's up to the caller to free the memory.
+ * Same as #htmlDocDumpMemoryFormat with `format` set to 1 which
+ * is typically undesired. Also see the warnings there. Use of
+ * this function is DISCOURAGED in favor of
+ * #htmlDocContentDumpFormatOutput.
+ *
+ * @param cur  the document
+ * @param mem  OUT: the memory pointer
+ * @param size  OUT: the memory length
  */
 void
-htmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int *size) {
-	htmlDocDumpMemoryFormat(cur, mem, size, 1);
+htmlDocDumpMemory(xmlDoc *cur, xmlChar**mem, int *size) {
+    htmlDocDumpMemoryFormat(cur, mem, size, 1);
 }
 
 
@@ -554,14 +660,13 @@ htmlDocDumpMemory(xmlDocPtr cur, xmlChar
  ************************************************************************/
 
 /**
- * htmlDtdDumpOutput:
- * @buf:  the HTML buffer output
- * @doc:  the document
- * @encoding:  the encoding string
+ * Serialize the HTML document's DTD, if any.
  *
- * TODO: check whether encoding is needed
+ * Ignores `encoding` and uses the encoding of the output buffer.
  *
- * Dump the HTML document DTD, if any.
+ * @param buf  the HTML buffer output
+ * @param doc  the document
+ * @param encoding  the encoding string (unused)
  */
 static void
 htmlDtdDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
@@ -570,110 +675,166 @@ htmlDtdDumpOutput(xmlOutputBufferPtr buf
 
     if (cur == NULL)
 	return;
-    xmlOutputBufferWriteString(buf, "<!DOCTYPE ");
+    xmlOutputBufferWrite(buf, 10, "<!DOCTYPE ");
     xmlOutputBufferWriteString(buf, (const char *)cur->name);
     if (cur->ExternalID != NULL) {
-	xmlOutputBufferWriteString(buf, " PUBLIC ");
+	xmlOutputBufferWrite(buf, 8, " PUBLIC ");
 	xmlOutputBufferWriteQuotedString(buf, cur->ExternalID);
 	if (cur->SystemID != NULL) {
-	    xmlOutputBufferWriteString(buf, " ");
+	    xmlOutputBufferWrite(buf, 1, " ");
 	    xmlOutputBufferWriteQuotedString(buf, cur->SystemID);
 	}
     } else if (cur->SystemID != NULL &&
 	       xmlStrcmp(cur->SystemID, BAD_CAST "about:legacy-compat")) {
-	xmlOutputBufferWriteString(buf, " SYSTEM ");
+	xmlOutputBufferWrite(buf, 8, " SYSTEM ");
 	xmlOutputBufferWriteQuotedString(buf, cur->SystemID);
     }
-    xmlOutputBufferWriteString(buf, ">\n");
+    xmlOutputBufferWrite(buf, 2, ">\n");
 }
 
-/**
- * htmlAttrDumpOutput:
- * @buf:  the HTML buffer output
- * @doc:  the document
- * @cur:  the attribute pointer
- *
- * Dump an HTML attribute
- */
 static void
-htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur) {
-    xmlChar *value;
+htmlSerializeUri(xmlOutputBufferPtr buf, const xmlChar *content) {
+    const xmlChar *tmp = content;
 
     /*
-     * The html output method should not escape a & character
-     * occurring in an attribute value immediately followed by
-     * a { character (see Section B.7.1 of the HTML 4.0 Recommendation).
-     * This is implemented in xmlEncodeEntitiesReentrant
+     * See appendix "B.2.1 Non-ASCII characters in URI attribute
+     * values" in the HTML 4.01 spec. This is also recommended
+     * by the HTML output method of the XSLT 1.0 spec.
+     *
+     * We also escape space and control chars.
      */
 
-    if (cur == NULL) {
-	return;
+    /* Skip over initial whitespace */
+    while (IS_WS_HTML(*tmp)) tmp++;
+    if (tmp > content) {
+        xmlOutputBufferWrite(buf, tmp - content, (char *) content);
+        content = tmp;
+    }
+
+    while (1) {
+        char escbuf[3];
+        const char *repl;
+        int replSize;
+        int c = *tmp;
+
+        while ((c > 0x20) && (c < 0x7F) && (c != '"') && (c != '&')) {
+            tmp += 1;
+            c = *tmp;
+        }
+
+        if (tmp > content)
+            xmlOutputBufferWrite(buf, tmp - content, (char *) content);
+
+        if ((c <= 0x20) || (c >= 0x7F)) {
+            static const char hex[16] = {
+                '0', '1', '2', '3', '4', '5', '6', '7',
+                '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+            };
+
+            if (c == 0)
+                break;
+
+            escbuf[0] = '%';
+            escbuf[1] = hex[(c >> 4) & 0x0F];
+            escbuf[2] = hex[c & 0x0F];
+            repl = escbuf;
+            replSize = 3;
+        } else if (c == '"') {
+            repl = "&quot;";
+            replSize = 6;
+        } else {
+            repl = "&amp;";
+            replSize = 5;
+        }
+
+        xmlOutputBufferWrite(buf, replSize, repl);
+        tmp += 1;
+        content = tmp;
     }
-    xmlOutputBufferWriteString(buf, " ");
+}
+
+/**
+ * Serialize an HTML attribute.
+ *
+ * @param buf  the HTML buffer output
+ * @param cur  the attribute pointer
+ */
+static void
+htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlAttrPtr cur) {
+    xmlOutputBufferWrite(buf, 1, " ");
+
     if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
         xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
-	xmlOutputBufferWriteString(buf, ":");
+        xmlOutputBufferWrite(buf, 1, ":");
     }
     xmlOutputBufferWriteString(buf, (const char *)cur->name);
+
+    /*
+     * The HTML5 spec requires to always serialize empty attribute
+     * values as `=""`. We should probably align with HTML5 at some
+     * point.
+     */
     if ((cur->children != NULL) && (!htmlIsBooleanAttr(cur->name))) {
-	value = xmlNodeListGetString(doc, cur->children, 0);
-	if (value) {
-	    xmlOutputBufferWriteString(buf, "=");
-	    if ((cur->ns == NULL) && (cur->parent != NULL) &&
-		(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 "name")) &&
-		  (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) {
-		xmlChar *escaped;
-		xmlChar *tmp = value;
-
-		while (IS_BLANK_CH(*tmp)) tmp++;
-
-		/*
-                 * Angle brackets are technically illegal in URIs, but they're
-                 * used in server side includes, for example. Curly brackets
-                 * are illegal as well and often used in templates.
-                 * Don't escape non-whitespace, printable ASCII chars for
-                 * improved interoperability. Only escape space, control
-                 * and non-ASCII chars.
-		 */
-		escaped = xmlURIEscapeStr(tmp,
-                        BAD_CAST "\"#$%&+,/:;<=>?@[\\]^`{|}");
-		if (escaped != NULL) {
-		    xmlOutputBufferWriteQuotedString(buf, escaped);
-		    xmlFree(escaped);
-		} else {
-                    buf->error = XML_ERR_NO_MEMORY;
-		}
-	    } else {
-		xmlOutputBufferWriteQuotedString(buf, value);
-	    }
-	    xmlFree(value);
-	} else  {
-            buf->error = XML_ERR_NO_MEMORY;
-	}
+        xmlNodePtr child;
+        int isUri;
+
+        xmlOutputBufferWrite(buf, 2, "=\"");
+
+        /*
+         * Special handling of URIs doesn't conform to HTML5 and
+         * should probably be removed at some point.
+         */
+        isUri = (cur->ns == NULL) && (cur->parent != NULL) &&
+                (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 "name")) &&
+                  (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))));
+
+        for (child = cur->children; child != NULL; child = child->next) {
+            if (child->type == XML_TEXT_NODE) {
+                const xmlChar *content = child->content;
+
+                if (content == NULL)
+                    continue;
+
+                if (isUri) {
+                    htmlSerializeUri(buf, content);
+                } else {
+                    xmlSerializeText(buf, content, SIZE_MAX,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                }
+            } else if (child->type == XML_ENTITY_REF_NODE) {
+                /* TODO: We should probably expand entity refs */
+                xmlOutputBufferWrite(buf, 1, "&");
+                xmlOutputBufferWriteString(buf, (char *) child->name);
+                xmlOutputBufferWrite(buf, 1, ";");
+            }
+        }
+
+        xmlOutputBufferWrite(buf, 1, "\"");
     }
 }
 
 /**
- * htmlNodeDumpFormatOutput:
- * @buf:  the HTML buffer output
- * @doc:  the document
- * @cur:  the current node
- * @encoding:  the encoding string (unused)
- * @format:  should formatting spaces been added
+ * Serialize an HTML node to an output buffer.
+ *
+ * If `encoding` is specified, it is used to create or update meta
+ * tags containing the character encoding.
  *
- * Dump an HTML node, recursive behaviour,children are printed too.
+ * @param buf  the HTML buffer output
+ * @param cur  the current node
+ * @param encoding  the encoding string (optional)
+ * @param format  should formatting newlines been added
  */
 void
-htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-	                 xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED,
-                         int format) {
-    xmlNodePtr root, parent;
+htmlNodeDumpInternal(xmlOutputBuffer *buf, xmlNode *cur,
+                     const char *encoding, int format) {
+    xmlNodePtr root, parent, metaHead = NULL;
     xmlAttrPtr attr;
     const htmlElemDesc * info;
+    int isRaw = 0;
 
     xmlInitParser();
 
@@ -698,18 +859,22 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
                     continue;
                 }
             } else {
-                xmlOutputBufferWriteString(buf, "\n");
+                xmlOutputBufferWrite(buf, 1, "\n");
             }
             break;
 
-        case XML_ELEMENT_NODE:
+        case XML_ELEMENT_NODE: {
+            htmlMetaEncoding menc;
+            int isMeta = 0;
+            int addMeta = 0;
+
             /*
              * Some users like lxml are known to pass nodes with a corrupted
              * tree structure. Fall back to a recursive call to handle this
              * case.
              */
             if ((cur->parent != parent) && (cur->children != NULL)) {
-                htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
+                htmlNodeDumpInternal(buf, cur, encoding, format);
                 break;
             }
 
@@ -721,46 +886,109 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
             else
                 info = NULL;
 
-            xmlOutputBufferWriteString(buf, "<");
+            if (encoding != NULL) {
+                isMeta = htmlParseMetaEncoding(cur, &menc);
+
+                /*
+                 * Don't add meta tag for "HTML" encoding.
+                 */
+                if ((xmlStrcasecmp(BAD_CAST encoding,
+                                   BAD_CAST "HTML") != 0) &&
+                    (xmlStrcasecmp(cur->name, BAD_CAST "head") == 0) &&
+                    (parent != NULL) &&
+                    (xmlStrcasecmp(parent->name, BAD_CAST "html") == 0) &&
+                    (parent->parent != NULL) &&
+                    (parent->parent->parent == NULL) &&
+                    (metaHead == NULL)) {
+                    xmlNodePtr n;
+
+                    metaHead = cur;
+                    addMeta = 1;
+
+                    for (n = cur->children; n != NULL; n = n->next) {
+                        int unused;
+
+                        if (htmlFindMetaEncodingAttr(n, &unused) != NULL) {
+                            metaHead = NULL;
+                            addMeta = 0;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            xmlOutputBufferWrite(buf, 1, "<");
             if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
                 xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
-                xmlOutputBufferWriteString(buf, ":");
+                xmlOutputBufferWrite(buf, 1, ":");
             }
             xmlOutputBufferWriteString(buf, (const char *)cur->name);
             if (cur->nsDef)
                 xmlNsListDumpOutput(buf, cur->nsDef);
             attr = cur->properties;
             while (attr != NULL) {
-                htmlAttrDumpOutput(buf, doc, attr);
+                if ((!isMeta) || (attr != menc.attr)) {
+                    htmlAttrDumpOutput(buf, attr);
+                } else {
+                    xmlOutputBufferWrite(buf, 1, " ");
+                    xmlOutputBufferWriteString(buf, (char *) attr->name);
+
+                    xmlOutputBufferWrite(buf, 2, "=\"");
+                    xmlSerializeText(buf, menc.attrValue, menc.off.start,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                    xmlSerializeText(buf, BAD_CAST encoding, SIZE_MAX,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                    xmlSerializeText(buf, menc.attrValue + menc.off.end,
+                                     menc.off.size - menc.off.end,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                    xmlOutputBufferWrite(buf, 1, "\"");
+                }
                 attr = attr->next;
             }
 
             if ((info != NULL) && (info->empty)) {
-                xmlOutputBufferWriteString(buf, ">");
+                xmlOutputBufferWrite(buf, 1, ">");
             } else if (cur->children == NULL) {
-                if ((info != NULL) && (info->saveEndTag != 0) &&
-                    (xmlStrcmp(BAD_CAST info->name, BAD_CAST "html")) &&
-                    (xmlStrcmp(BAD_CAST info->name, BAD_CAST "body"))) {
-                    xmlOutputBufferWriteString(buf, ">");
+                if (addMeta) {
+                    xmlOutputBufferWrite(buf, 16, "><meta charset=\"");
+                    xmlSerializeText(buf, BAD_CAST encoding, SIZE_MAX,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                    xmlOutputBufferWrite(buf, 4, "\"></");
                 } else {
-                    xmlOutputBufferWriteString(buf, "></");
-                    if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
-                        xmlOutputBufferWriteString(buf,
-                                (const char *)cur->ns->prefix);
-                        xmlOutputBufferWriteString(buf, ":");
-                    }
-                    xmlOutputBufferWriteString(buf, (const char *)cur->name);
-                    xmlOutputBufferWriteString(buf, ">");
+                    xmlOutputBufferWrite(buf, 3, "></");
                 }
+                if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
+                    xmlOutputBufferWriteString(buf,
+                            (const char *)cur->ns->prefix);
+                    xmlOutputBufferWrite(buf, 1, ":");
+                }
+                xmlOutputBufferWriteString(buf, (const char *)cur->name);
+                xmlOutputBufferWrite(buf, 1, ">");
             } else {
-                xmlOutputBufferWriteString(buf, ">");
-                if ((format) && (info != NULL) && (!info->isinline) &&
-                    (cur->children->type != HTML_TEXT_NODE) &&
-                    (cur->children->type != HTML_ENTITY_REF_NODE) &&
-                    (cur->children != cur->last) &&
-                    (cur->name != NULL) &&
-                    (cur->name[0] != 'p')) /* p, pre, param */
-                    xmlOutputBufferWriteString(buf, "\n");
+                xmlOutputBufferWrite(buf, 1, ">");
+                if ((format) &&
+                    ((addMeta) ||
+                     ((info != NULL) && (!info->isinline) &&
+                      (cur->children->type != HTML_TEXT_NODE) &&
+                      (cur->children->type != HTML_ENTITY_REF_NODE) &&
+                      (cur->children != cur->last) &&
+                      (cur->name != NULL) &&
+                      (cur->name[0] != 'p')))) /* p, pre, param */
+                    xmlOutputBufferWrite(buf, 1, "\n");
+                if (addMeta) {
+                    xmlOutputBufferWrite(buf, 15, "<meta charset=\"");
+                    xmlSerializeText(buf, BAD_CAST encoding, SIZE_MAX,
+                                     XML_ESCAPE_HTML | XML_ESCAPE_ATTR);
+                    xmlOutputBufferWrite(buf, 2, "\">");
+                    if ((format) &&
+                        (cur->children->type != HTML_TEXT_NODE) &&
+                        (cur->children->type != HTML_ENTITY_REF_NODE))
+                        xmlOutputBufferWrite(buf, 1, "\n");
+                }
+
+                if ((info != NULL) && (info->dataMode >= DATA_RAWTEXT))
+                    isRaw = 1;
+
                 parent = cur;
                 cur = cur->children;
                 continue;
@@ -773,62 +1001,52 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
                     (parent != NULL) &&
                     (parent->name != NULL) &&
                     (parent->name[0] != 'p')) /* p, pre, param */
-                    xmlOutputBufferWriteString(buf, "\n");
+                    xmlOutputBufferWrite(buf, 1, "\n");
             }
 
             break;
+        }
 
         case XML_ATTRIBUTE_NODE:
-            htmlAttrDumpOutput(buf, doc, (xmlAttrPtr) cur);
+            htmlAttrDumpOutput(buf, (xmlAttrPtr) cur);
             break;
 
         case HTML_TEXT_NODE:
             if (cur->content == NULL)
                 break;
-            if (((cur->name == (const xmlChar *)xmlStringText) ||
-                 (cur->name != (const xmlChar *)xmlStringTextNoenc)) &&
-                ((parent == NULL) ||
-                 ((xmlStrcasecmp(parent->name, BAD_CAST "script")) &&
-                  (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) {
-                xmlChar *buffer;
-
-                buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-                if (buffer == NULL) {
-                    buf->error = XML_ERR_NO_MEMORY;
-                    return;
-                }
-                xmlOutputBufferWriteString(buf, (const char *)buffer);
-                xmlFree(buffer);
-            } else {
+            if ((cur->name == (const xmlChar *)xmlStringTextNoenc) ||
+                (isRaw)) {
                 xmlOutputBufferWriteString(buf, (const char *)cur->content);
+            } else {
+                xmlSerializeText(buf, cur->content, SIZE_MAX, XML_ESCAPE_HTML);
             }
             break;
 
         case HTML_COMMENT_NODE:
             if (cur->content != NULL) {
-                xmlOutputBufferWriteString(buf, "<!--");
+                xmlOutputBufferWrite(buf, 4, "<!--");
                 xmlOutputBufferWriteString(buf, (const char *)cur->content);
-                xmlOutputBufferWriteString(buf, "-->");
+                xmlOutputBufferWrite(buf, 3, "-->");
             }
             break;
 
         case HTML_PI_NODE:
             if (cur->name != NULL) {
-                xmlOutputBufferWriteString(buf, "<?");
+                xmlOutputBufferWrite(buf, 2, "<?");
                 xmlOutputBufferWriteString(buf, (const char *)cur->name);
                 if (cur->content != NULL) {
-                    xmlOutputBufferWriteString(buf, " ");
+                    xmlOutputBufferWrite(buf, 1, " ");
                     xmlOutputBufferWriteString(buf,
                             (const char *)cur->content);
                 }
-                xmlOutputBufferWriteString(buf, ">");
+                xmlOutputBufferWrite(buf, 1, ">");
             }
             break;
 
         case HTML_ENTITY_REF_NODE:
-            xmlOutputBufferWriteString(buf, "&");
+            xmlOutputBufferWrite(buf, 1, "&");
             xmlOutputBufferWriteString(buf, (const char *)cur->name);
-            xmlOutputBufferWriteString(buf, ";");
+            xmlOutputBufferWrite(buf, 1, ";");
             break;
 
         case HTML_PRESERVE_NODE:
@@ -849,13 +1067,15 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
                 break;
             }
 
+            isRaw = 0;
+
             cur = parent;
             /* cur->parent was validated when descending. */
             parent = cur->parent;
 
             if ((cur->type == XML_HTML_DOCUMENT_NODE) ||
                 (cur->type == XML_DOCUMENT_NODE)) {
-                xmlOutputBufferWriteString(buf, "\n");
+                xmlOutputBufferWrite(buf, 1, "\n");
             } else {
                 if ((format) && (cur->ns == NULL))
                     info = htmlTagLookup(cur->name);
@@ -865,18 +1085,18 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
                 if ((format) && (info != NULL) && (!info->isinline) &&
                     (cur->last->type != HTML_TEXT_NODE) &&
                     (cur->last->type != HTML_ENTITY_REF_NODE) &&
-                    (cur->children != cur->last) &&
+                    ((cur->children != cur->last) || (cur == metaHead)) &&
                     (cur->name != NULL) &&
                     (cur->name[0] != 'p')) /* p, pre, param */
-                    xmlOutputBufferWriteString(buf, "\n");
+                    xmlOutputBufferWrite(buf, 1, "\n");
 
-                xmlOutputBufferWriteString(buf, "</");
+                xmlOutputBufferWrite(buf, 2, "</");
                 if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
                     xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
-                    xmlOutputBufferWriteString(buf, ":");
+                    xmlOutputBufferWrite(buf, 1, ":");
                 }
                 xmlOutputBufferWriteString(buf, (const char *)cur->name);
-                xmlOutputBufferWriteString(buf, ">");
+                xmlOutputBufferWrite(buf, 1, ">");
 
                 if ((format) && (info != NULL) && (!info->isinline) &&
                     (cur->next != NULL)) {
@@ -885,64 +1105,76 @@ htmlNodeDumpFormatOutput(xmlOutputBuffer
                         (parent != NULL) &&
                         (parent->name != NULL) &&
                         (parent->name[0] != 'p')) /* p, pre, param */
-                        xmlOutputBufferWriteString(buf, "\n");
+                        xmlOutputBufferWrite(buf, 1, "\n");
                 }
+
+                if (cur == metaHead)
+                    metaHead = NULL;
             }
         }
     }
 }
 
 /**
- * htmlNodeDumpOutput:
- * @buf:  the HTML buffer output
- * @doc:  the document
- * @cur:  the current node
- * @encoding:  the encoding string (unused)
+ * Serialize an HTML node to an output buffer.
  *
- * Dump an HTML node, recursive behaviour,children are printed too,
- * and formatting returns/spaces are added.
+ * @param buf  the HTML buffer output
+ * @param doc  the document (unused)
+ * @param cur  the current node
+ * @param encoding  the encoding string (unused)
+ * @param format  should formatting newlines been added
  */
 void
-htmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
-	           xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED) {
-    htmlNodeDumpFormatOutput(buf, doc, cur, NULL, 1);
+htmlNodeDumpFormatOutput(xmlOutputBuffer *buf,
+                         xmlDoc *doc ATTRIBUTE_UNUSED, xmlNode *cur,
+                         const char *encoding ATTRIBUTE_UNUSED, int format) {
+    htmlNodeDumpInternal(buf, cur, NULL, format);
 }
 
 /**
- * htmlDocContentDumpFormatOutput:
- * @buf:  the HTML buffer output
- * @cur:  the document
- * @encoding:  the encoding string (unused)
- * @format:  should formatting spaces been added
+ * Same as #htmlNodeDumpFormatOutput with `format` set to 1 which is
+ * typically undesired. Use of this function is DISCOURAGED in favor
+ * of #htmlNodeDumpFormatOutput.
+ *
+ * @param buf  the HTML buffer output
+ * @param doc  the document (unused)
+ * @param cur  the current node
+ * @param encoding  the encoding string (unused)
+ */
+void
+htmlNodeDumpOutput(xmlOutputBuffer *buf, xmlDoc *doc ATTRIBUTE_UNUSED,
+                   xmlNode *cur, const char *encoding ATTRIBUTE_UNUSED) {
+    htmlNodeDumpInternal(buf, cur, NULL, 1);
+}
+
+/**
+ * Serialize an HTML document to an output buffer.
  *
- * Dump an HTML document.
+ * @param buf  the HTML buffer output
+ * @param cur  the document
+ * @param encoding  the encoding string (unused)
+ * @param format  should formatting newlines been added
  */
 void
-htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr cur,
+htmlDocContentDumpFormatOutput(xmlOutputBuffer *buf, xmlDoc *cur,
 	                       const char *encoding ATTRIBUTE_UNUSED,
                                int format) {
-    int type = 0;
-    if (cur) {
-        type = cur->type;
-        cur->type = XML_HTML_DOCUMENT_NODE;
-    }
-    htmlNodeDumpFormatOutput(buf, cur, (xmlNodePtr) cur, NULL, format);
-    if (cur)
-        cur->type = (xmlElementType) type;
+    htmlNodeDumpInternal(buf, (xmlNodePtr) cur, NULL, format);
 }
 
 /**
- * htmlDocContentDumpOutput:
- * @buf:  the HTML buffer output
- * @cur:  the document
- * @encoding:  the encoding string (unused)
- *
- * Dump an HTML document. Formatting return/spaces are added.
+ * Same as #htmlDocContentDumpFormatOutput with `format` set to 1
+ * which is typically undesired. Use of this function is DISCOURAGED
+ * in favor of #htmlDocContentDumpFormatOutput.
+ *
+ * @param buf  the HTML buffer output
+ * @param cur  the document
+ * @param encoding  the encoding string (unused)
  */
 void
-htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur,
+htmlDocContentDumpOutput(xmlOutputBuffer *buf, xmlDoc *cur,
 	                 const char *encoding ATTRIBUTE_UNUSED) {
-    htmlNodeDumpFormatOutput(buf, cur, (xmlNodePtr) cur, NULL, 1);
+    htmlNodeDumpInternal(buf, (xmlNodePtr) cur, NULL, 1);
 }
 
 /************************************************************************
@@ -952,19 +1184,27 @@ htmlDocContentDumpOutput(xmlOutputBuffer
  ************************************************************************/
 
 /**
- * htmlDocDump:
- * @f:  the FILE*
- * @cur:  the document
+ * Serialize an HTML document to an open `FILE`.
  *
- * Dump an HTML document to an open FILE.
- *
- * returns: the number of byte written or -1 in case of failure.
+ * Uses the encoding of the document. If the document has no
+ * encoding, ASCII with HTML 4.0 named character entities will
+ * be used. This is inefficient compared to UTF-8 and might be
+ * changed in a future version.
+ *
+ * Enables "formatting" unconditionally which is typically
+ * undesired.
+ *
+ * Use of this function is DISCOURAGED in favor of
+ * #htmlNodeDumpFileFormat.
+ *
+ * @param f  the FILE*
+ * @param cur  the document
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-htmlDocDump(FILE *f, xmlDocPtr cur) {
+htmlDocDump(FILE *f, xmlDoc *cur) {
     xmlOutputBufferPtr buf;
     xmlCharEncodingHandlerPtr handler = NULL;
-    const char *encoding;
     int ret;
 
     xmlInitParser();
@@ -973,8 +1213,7 @@ htmlDocDump(FILE *f, xmlDocPtr cur) {
 	return(-1);
     }
 
-    encoding = (const char *) htmlGetMetaEncoding(cur);
-    if (htmlFindOutputEncoder(encoding, &handler) != XML_ERR_OK)
+    if (htmlFindOutputEncoder((char *) cur->encoding, &handler) != XML_ERR_OK)
         return(-1);
     buf = xmlOutputBufferCreateFile(f, handler);
     if (buf == NULL) {
@@ -988,52 +1227,43 @@ htmlDocDump(FILE *f, xmlDocPtr cur) {
 }
 
 /**
- * htmlSaveFile:
- * @filename:  the filename (or URL)
- * @cur:  the document
- *
- * Dump an HTML document to a file. If @filename is "-" the stdout file is
- * used.
- * returns: the number of byte written or -1 in case of failure.
+ * Serialize an HTML document to a file.
+ *
+ * Same as #htmlSaveFileFormat with `encoding` set to NULL and
+ * `format` set to 1 which is typically undesired.
+ *
+ * Use of this function is DISCOURAGED in favor of
+ * #htmlSaveFileFormat.
+ *
+ * @param filename  the filename (or URL)
+ * @param cur  the document
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-htmlSaveFile(const char *filename, xmlDocPtr cur) {
-    xmlOutputBufferPtr buf;
-    xmlCharEncodingHandlerPtr handler = NULL;
-    const char *encoding;
-    int ret;
-
-    if ((cur == NULL) || (filename == NULL))
-        return(-1);
-
-    xmlInitParser();
-
-    encoding = (const char *) htmlGetMetaEncoding(cur);
-    if (htmlFindOutputEncoder(encoding, &handler) != XML_ERR_OK)
-        return(-1);
-    buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
-    if (buf == NULL)
-        return(-1);
-
-    htmlDocContentDumpOutput(buf, cur, NULL);
-
-    ret = xmlOutputBufferClose(buf);
-    return(ret);
+htmlSaveFile(const char *filename, xmlDoc *cur) {
+    return(htmlSaveFileFormat(filename, cur, NULL, 1));
 }
 
 /**
- * htmlSaveFileFormat:
- * @filename:  the filename
- * @cur:  the document
- * @format:  should formatting spaces been added
- * @encoding: the document encoding
+ * Serialize an HTML document to a file using a given encoding.
  *
- * Dump an HTML document to a file using a given encoding.
+ * If `filename` is `"-"`, stdout is used. This is potentially
+ * insecure and might be changed in a future version.
  *
- * returns: the number of byte written or -1 in case of failure.
+ * If encoding is NULL, ASCII with HTML 4.0 named character entities
+ * will be used. This is inefficient compared to UTF-8 and might be
+ * changed in a future version.
+ *
+ * Sets or updates meta tags containing the character encoding.
+ *
+ * @param filename  the filename
+ * @param cur  the document
+ * @param format  should formatting newlines been added
+ * @param encoding  the document encoding (optional)
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-htmlSaveFileFormat(const char *filename, xmlDocPtr cur,
+htmlSaveFileFormat(const char *filename, xmlDoc *cur,
 	           const char *encoding, int format) {
     xmlOutputBufferPtr buf;
     xmlCharEncodingHandlerPtr handler = NULL;
@@ -1046,15 +1276,11 @@ htmlSaveFileFormat(const char *filename,
 
     if (htmlFindOutputEncoder(encoding, &handler) != XML_ERR_OK)
         return(-1);
-    if (handler != NULL)
-        htmlSetMetaEncoding(cur, (const xmlChar *) handler->name);
-    else
-	htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8");
 
     /*
      * save the content to a temp buffer.
      */
-    buf = xmlOutputBufferCreateFilename(filename, handler, 0);
+    buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
     if (buf == NULL) {
         xmlCharEncCloseFunc(handler);
         return(0);
@@ -1067,18 +1293,19 @@ htmlSaveFileFormat(const char *filename,
 }
 
 /**
- * htmlSaveFileEnc:
- * @filename:  the filename
- * @cur:  the document
- * @encoding: the document encoding
- *
- * Dump an HTML document to a file using a given encoding
- * and formatting returns/spaces are added.
+ * Serialize an HTML document to a file.
  *
- * returns: the number of byte written or -1 in case of failure.
+ * Same as #htmlSaveFileFormat with `format` set to 1 which is
+ * typically undesired. Also see the warnings there. Use of this
+ * function is DISCOURAGED in favor of #htmlSaveFileFormat.
+ *
+ * @param filename  the filename
+ * @param cur  the document
+ * @param encoding  the document encoding
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-htmlSaveFileEnc(const char *filename, xmlDocPtr cur, const char *encoding) {
+htmlSaveFileEnc(const char *filename, xmlDoc *cur, const char *encoding) {
     return(htmlSaveFileFormat(filename, cur, encoding, 1));
 }
 
diff -pruN 2.14.6+dfsg-0.1/Makefile.am 2.15.0+dfsg-0.3/Makefile.am
--- 2.14.6+dfsg-0.1/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -2,7 +2,10 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = include . doc example xstc
+SUBDIRS = include . example
+if WITH_DOXYGEN
+SUBDIRS += doc
+endif
 if WITH_PYTHON
 SUBDIRS += python
 endif
@@ -10,9 +13,9 @@ if WITH_GLOB
 SUBDIRS += fuzz
 endif
 
-DIST_SUBDIRS = include . doc example fuzz python xstc
+DIST_SUBDIRS = include . doc example fuzz python
 
-AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include -DSYSCONFDIR='"$(sysconfdir)"'
+AM_CPPFLAGS = -I$(builddir)/include -I$(srcdir)/include
 
 check_PROGRAMS = \
 	runsuite \
@@ -49,7 +52,7 @@ if WITH_OUTPUT_SOURCES
 bin_PROGRAMS += xmlcatalog
 
 xmlcatalog_SOURCES = xmlcatalog.c
-xmlcatalog_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS) $(ICONV_CFLAGS)
+xmlcatalog_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS)
 xmlcatalog_DEPENDENCIES = $(DEPS)
 xmlcatalog_LDADD = $(RDL_LIBS) $(LDADDS)
 endif
@@ -65,9 +68,6 @@ endif
 if WITH_HTTP_SOURCES
 libxml2_la_SOURCES += nanohttp.c
 endif
-if WITH_LZMA_SOURCES
-libxml2_la_SOURCES += xzlib.c
-endif
 if WITH_MODULES_SOURCES
 libxml2_la_SOURCES += xmlmodule.c
 endif
@@ -81,7 +81,7 @@ if WITH_READER_SOURCES
 libxml2_la_SOURCES += xmlreader.c
 endif
 if WITH_REGEXPS_SOURCES
-libxml2_la_SOURCES += xmlregexp.c xmlunicode.c
+libxml2_la_SOURCES += xmlregexp.c
 endif
 if WITH_RELAXNG_SOURCES
 libxml2_la_SOURCES += relaxng.c
@@ -137,7 +137,7 @@ runsuite_DEPENDENCIES = $(DEPS)
 runsuite_LDADD= $(LDADDS)
 
 xmllint_SOURCES = xmllint.c shell.c lintmain.c
-xmllint_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS) $(ICONV_CFLAGS)
+xmllint_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS)
 xmllint_DEPENDENCIES = $(DEPS)
 xmllint_LDADD=  $(RDL_LIBS) $(LDADDS)
 
@@ -150,10 +150,8 @@ testdso_la_SOURCES = testdso.c
 testdso_la_LDFLAGS = $(AM_LDFLAGS) \
 		     -module -no-undefined -avoid-version -rpath $(libdir)
 
-# that one forces the rebuild when "make rebuild" is run on doc/
 rebuild_testapi:
-	-@(if [ "$(PYTHON)" != "" ] ; then \
-	    $(PYTHON) $(srcdir)/tools/gentest.py $(srcdir) ; fi )
+	cd $(srcdir) && python3 codegen/genTestApi.py $(abs_builddir)
 
 testapi_SOURCES=testapi.c
 testapi_DEPENDENCIES = $(DEPS)
@@ -175,12 +173,13 @@ check-local:
 	$(CHECKER) ./testModule$(EXEEXT)
 	$(CHECKER) ./runxmlconf$(EXEEXT) -d $(srcdir)/xmlconf
 	$(CHECKER) ./runsuite$(EXEEXT)
+if WITH_OUTPUT_SOURCES
 if WITH_DEBUG_SOURCES
 	test/scripts/test.sh ./xmllint$(EXEEXT)
 endif
 if WITH_CATALOG_SOURCES
-if WITH_OUTPUT_SOURCES
 	ASAN_OPTIONS=detect_leaks=0 test/catalogs/test.sh ./xmlcatalog$(EXEEXT)
+	ASAN_OPTIONS=detect_leaks=0 test/catalogs/test_sgml.sh ./xmlcatalog$(EXEEXT)
 endif
 endif
 
@@ -192,65 +191,36 @@ check-valgrind valgrind:
 	@echo '## Go get a cup of coffee it is gonna take a while ...'
 	$(MAKE) CHECKER='valgrind -q' check
 
-asan:
-	@echo '## rebuilding for ASAN'
-	./configure CFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" CXXFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined" CC="clang" CXX="clang++" --disable-shared ; OptimOff  ; $(MAKE) clean ; $(MAKE)
-
-cleanup:
-	-@(find . -name .\#\* -exec rm {} \;)
-	-@(find . -name \*.gcda -o -name \*.gcno -exec rm -f {} \;)
-	-@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm -f {} \;)
-
-dist-hook: cleanup
+dist-hook:
 	(cd $(srcdir) ; tar -cf - --exclude .git win32 test result) | (cd $(distdir); tar xf -)
 
-CLEANFILES = runsuite.log runxmlconf.log test.out *.gcda *.gcno *.res
-DISTCLEANFILES = COPYING missing.lst
+CLEANFILES = missing.lst runsuite.log runxmlconf.log test.out \
+	     *.gcda *.gcno *.res
 
 EXTRA_DIST = Copyright libxml2-config.cmake.in autogen.sh \
 	     libxml.h \
-	     html5ent.inc iso8859x.inc \
-	     tools/gentest.py \
-	     tools/genChRanges.py tools/genEscape.py tools/genUnicode.py \
+	     codegen/charset.inc \
+	     codegen/escape.inc \
+	     codegen/genCharset.py \
+	     codegen/genEscape.py \
+	     codegen/genHtml5Ent.py \
+	     codegen/genHtml5LibTests.py \
+	     codegen/genRanges.py \
+	     codegen/genTestApi.py \
+	     codegen/genUnicode.py \
+	     codegen/html5ent.inc \
+	     codegen/ranges.def \
+	     codegen/ranges.inc \
+	     codegen/rangetab.py \
+	     codegen/unicode.inc \
+	     codegen/xmlmod.py \
 	     timsort.h \
 	     README.zOS README.md \
 	     CMakeLists.txt config.h.cmake.in libxml2-config.cmake.cmake.in \
 	     meson.build meson_options.txt xml2-config-meson
 
-
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libxml-2.0.pc
 
 cmakedir = $(libdir)/cmake/libxml2
 cmake_DATA = libxml2-config.cmake
-
-tst: tst.c
-	$(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz -llzma
-
-sparse: clean
-	$(MAKE) CC=cgcc
-
-#
-# Coverage support, largely borrowed from libvirt
-# Both binaries comes from the lcov package in Fedora
-#
-LCOV = /usr/bin/lcov
-GENHTML = /usr/bin/genhtml
-
-cov: clean-cov
-	if [ "`echo $(AM_LDFLAGS) | grep coverage`" = "" ] ; then \
-	    echo not configured with coverage; exit 1 ; fi
-	if [ ! -x $(LCOV) -o ! -x $(GENHTML) ] ; then \
-	    echo Need $(LCOV) and $(GENHTML) excecutables; exit 1 ; fi
-	-@($(MAKE) check)
-	-@(./runsuite$(EXEEXT))
-	mkdir $(top_builddir)/coverage
-	$(LCOV) -c -o $(top_builddir)/coverage/libxml2.info.tmp -d $(top_srcdir)
-	$(LCOV) -r $(top_builddir)/coverage/libxml2.info.tmp -o $(top_builddir)/coverage/libxml2.info *usr*
-	rm $(top_builddir)/coverage/libxml2.info.tmp
-	$(GENHTML) -s -t "libxml2" -o $(top_builddir)/coverage --legend $(top_builddir)/coverage/libxml2.info
-	echo "Coverage report is in $(top_builddir)/coverage/index.html"
-
-clean-cov:
-	rm -rf $(top_builddir)/coverage
-
diff -pruN 2.14.6+dfsg-0.1/Makefile.in 2.15.0+dfsg-0.3/Makefile.in
--- 2.14.6+dfsg-0.1/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -91,25 +91,25 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@WITH_PYTHON_TRUE@am__append_1 = python
-@WITH_GLOB_TRUE@am__append_2 = fuzz
+@WITH_DOXYGEN_TRUE@am__append_1 = doc
+@WITH_PYTHON_TRUE@am__append_2 = python
+@WITH_GLOB_TRUE@am__append_3 = fuzz
 check_PROGRAMS = runsuite$(EXEEXT) runtest$(EXEEXT) \
 	runxmlconf$(EXEEXT) testModule$(EXEEXT) testapi$(EXEEXT) \
 	testchar$(EXEEXT) testdict$(EXEEXT) testlimits$(EXEEXT) \
 	testparser$(EXEEXT) testrecurse$(EXEEXT)
 bin_PROGRAMS = xmllint$(EXEEXT) $(am__EXEEXT_1)
-@WITH_C14N_SOURCES_TRUE@am__append_3 = c14n.c
-@WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@am__append_4 = xmlcatalog
-@WITH_CATALOG_SOURCES_TRUE@am__append_5 = catalog.c
-@WITH_DEBUG_SOURCES_TRUE@am__append_6 = debugXML.c
-@WITH_HTML_SOURCES_TRUE@am__append_7 = HTMLparser.c HTMLtree.c
-@WITH_HTTP_SOURCES_TRUE@am__append_8 = nanohttp.c
-@WITH_LZMA_SOURCES_TRUE@am__append_9 = xzlib.c
+@WITH_C14N_SOURCES_TRUE@am__append_4 = c14n.c
+@WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@am__append_5 = xmlcatalog
+@WITH_CATALOG_SOURCES_TRUE@am__append_6 = catalog.c
+@WITH_DEBUG_SOURCES_TRUE@am__append_7 = debugXML.c
+@WITH_HTML_SOURCES_TRUE@am__append_8 = HTMLparser.c HTMLtree.c
+@WITH_HTTP_SOURCES_TRUE@am__append_9 = nanohttp.c
 @WITH_MODULES_SOURCES_TRUE@am__append_10 = xmlmodule.c
 @WITH_OUTPUT_SOURCES_TRUE@am__append_11 = xmlsave.c
 @WITH_PATTERN_SOURCES_TRUE@am__append_12 = pattern.c
 @WITH_READER_SOURCES_TRUE@am__append_13 = xmlreader.c
-@WITH_REGEXPS_SOURCES_TRUE@am__append_14 = xmlregexp.c xmlunicode.c
+@WITH_REGEXPS_SOURCES_TRUE@am__append_14 = xmlregexp.c
 @WITH_RELAXNG_SOURCES_TRUE@am__append_15 = relaxng.c
 @WITH_SCHEMAS_SOURCES_TRUE@am__append_16 = xmlschemas.c xmlschemastypes.c
 @WITH_SCHEMATRON_SOURCES_TRUE@am__append_17 = schematron.c
@@ -174,32 +174,30 @@ am__libxml2_la_SOURCES_DIST = buf.c chva
 	encoding.c error.c globals.c hash.c list.c parser.c \
 	parserInternals.c SAX2.c threads.c tree.c uri.c valid.c \
 	xmlIO.c xmlmemory.c xmlstring.c c14n.c catalog.c debugXML.c \
-	HTMLparser.c HTMLtree.c nanohttp.c xzlib.c xmlmodule.c \
-	xmlsave.c pattern.c xmlreader.c xmlregexp.c xmlunicode.c \
-	relaxng.c xmlschemas.c xmlschemastypes.c schematron.c \
-	xmlwriter.c xinclude.c xpath.c xlink.c xpointer.c
+	HTMLparser.c HTMLtree.c nanohttp.c xmlmodule.c xmlsave.c \
+	pattern.c xmlreader.c xmlregexp.c relaxng.c xmlschemas.c \
+	xmlschemastypes.c schematron.c xmlwriter.c xinclude.c xpath.c \
+	xlink.c xpointer.c
 @WITH_C14N_SOURCES_TRUE@am__objects_1 = libxml2_la-c14n.lo
 @WITH_CATALOG_SOURCES_TRUE@am__objects_2 = libxml2_la-catalog.lo
 @WITH_DEBUG_SOURCES_TRUE@am__objects_3 = libxml2_la-debugXML.lo
 @WITH_HTML_SOURCES_TRUE@am__objects_4 = libxml2_la-HTMLparser.lo \
 @WITH_HTML_SOURCES_TRUE@	libxml2_la-HTMLtree.lo
 @WITH_HTTP_SOURCES_TRUE@am__objects_5 = libxml2_la-nanohttp.lo
-@WITH_LZMA_SOURCES_TRUE@am__objects_6 = libxml2_la-xzlib.lo
-@WITH_MODULES_SOURCES_TRUE@am__objects_7 = libxml2_la-xmlmodule.lo
-@WITH_OUTPUT_SOURCES_TRUE@am__objects_8 = libxml2_la-xmlsave.lo
-@WITH_PATTERN_SOURCES_TRUE@am__objects_9 = libxml2_la-pattern.lo
-@WITH_READER_SOURCES_TRUE@am__objects_10 = libxml2_la-xmlreader.lo
-@WITH_REGEXPS_SOURCES_TRUE@am__objects_11 = libxml2_la-xmlregexp.lo \
-@WITH_REGEXPS_SOURCES_TRUE@	libxml2_la-xmlunicode.lo
-@WITH_RELAXNG_SOURCES_TRUE@am__objects_12 = libxml2_la-relaxng.lo
-@WITH_SCHEMAS_SOURCES_TRUE@am__objects_13 = libxml2_la-xmlschemas.lo \
+@WITH_MODULES_SOURCES_TRUE@am__objects_6 = libxml2_la-xmlmodule.lo
+@WITH_OUTPUT_SOURCES_TRUE@am__objects_7 = libxml2_la-xmlsave.lo
+@WITH_PATTERN_SOURCES_TRUE@am__objects_8 = libxml2_la-pattern.lo
+@WITH_READER_SOURCES_TRUE@am__objects_9 = libxml2_la-xmlreader.lo
+@WITH_REGEXPS_SOURCES_TRUE@am__objects_10 = libxml2_la-xmlregexp.lo
+@WITH_RELAXNG_SOURCES_TRUE@am__objects_11 = libxml2_la-relaxng.lo
+@WITH_SCHEMAS_SOURCES_TRUE@am__objects_12 = libxml2_la-xmlschemas.lo \
 @WITH_SCHEMAS_SOURCES_TRUE@	libxml2_la-xmlschemastypes.lo
-@WITH_SCHEMATRON_SOURCES_TRUE@am__objects_14 =  \
+@WITH_SCHEMATRON_SOURCES_TRUE@am__objects_13 =  \
 @WITH_SCHEMATRON_SOURCES_TRUE@	libxml2_la-schematron.lo
-@WITH_WRITER_SOURCES_TRUE@am__objects_15 = libxml2_la-xmlwriter.lo
-@WITH_XINCLUDE_SOURCES_TRUE@am__objects_16 = libxml2_la-xinclude.lo
-@WITH_XPATH_SOURCES_TRUE@am__objects_17 = libxml2_la-xpath.lo
-@WITH_XPTR_SOURCES_TRUE@am__objects_18 = libxml2_la-xlink.lo \
+@WITH_WRITER_SOURCES_TRUE@am__objects_14 = libxml2_la-xmlwriter.lo
+@WITH_XINCLUDE_SOURCES_TRUE@am__objects_15 = libxml2_la-xinclude.lo
+@WITH_XPATH_SOURCES_TRUE@am__objects_16 = libxml2_la-xpath.lo
+@WITH_XPTR_SOURCES_TRUE@am__objects_17 = libxml2_la-xlink.lo \
 @WITH_XPTR_SOURCES_TRUE@	libxml2_la-xpointer.lo
 am_libxml2_la_OBJECTS = libxml2_la-buf.lo libxml2_la-chvalid.lo \
 	libxml2_la-dict.lo libxml2_la-entities.lo \
@@ -214,7 +212,7 @@ am_libxml2_la_OBJECTS = libxml2_la-buf.l
 	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
 	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
 	$(am__objects_13) $(am__objects_14) $(am__objects_15) \
-	$(am__objects_16) $(am__objects_17) $(am__objects_18)
+	$(am__objects_16) $(am__objects_17)
 libxml2_la_OBJECTS = $(am_libxml2_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -311,11 +309,9 @@ am__depfiles_remade = ./$(DEPDIR)/libxml
 	./$(DEPDIR)/libxml2_la-xmlschemas.Plo \
 	./$(DEPDIR)/libxml2_la-xmlschemastypes.Plo \
 	./$(DEPDIR)/libxml2_la-xmlstring.Plo \
-	./$(DEPDIR)/libxml2_la-xmlunicode.Plo \
 	./$(DEPDIR)/libxml2_la-xmlwriter.Plo \
 	./$(DEPDIR)/libxml2_la-xpath.Plo \
-	./$(DEPDIR)/libxml2_la-xpointer.Plo \
-	./$(DEPDIR)/libxml2_la-xzlib.Plo ./$(DEPDIR)/runsuite.Po \
+	./$(DEPDIR)/libxml2_la-xpointer.Plo ./$(DEPDIR)/runsuite.Po \
 	./$(DEPDIR)/runtest.Po ./$(DEPDIR)/runxmlconf.Po \
 	./$(DEPDIR)/testModule.Po ./$(DEPDIR)/testapi.Po \
 	./$(DEPDIR)/testchar.Po ./$(DEPDIR)/testdict.Po \
@@ -463,6 +459,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -502,8 +499,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,10 +536,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -553,7 +546,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -640,9 +632,10 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = include . doc example xstc $(am__append_1) $(am__append_2)
-DIST_SUBDIRS = include . doc example fuzz python xstc
-AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include -DSYSCONFDIR='"$(sysconfdir)"'
+SUBDIRS = include . example $(am__append_1) $(am__append_2) \
+	$(am__append_3)
+DIST_SUBDIRS = include . doc example fuzz python
+AM_CPPFLAGS = -I$(builddir)/include -I$(srcdir)/include
 bin_SCRIPTS = xml2-config
 lib_LTLIBRARIES = libxml2.la
 libxml2_la_CFLAGS = $(AM_CFLAGS) $(XML_PRIVATE_CFLAGS)
@@ -653,14 +646,14 @@ libxml2_la_LDFLAGS = $(AM_LDFLAGS) -no-u
 libxml2_la_SOURCES = buf.c chvalid.c dict.c entities.c encoding.c \
 	error.c globals.c hash.c list.c parser.c parserInternals.c \
 	SAX2.c threads.c tree.c uri.c valid.c xmlIO.c xmlmemory.c \
-	xmlstring.c $(am__append_3) $(am__append_5) $(am__append_6) \
-	$(am__append_7) $(am__append_8) $(am__append_9) \
-	$(am__append_10) $(am__append_11) $(am__append_12) \
-	$(am__append_13) $(am__append_14) $(am__append_15) \
-	$(am__append_16) $(am__append_17) $(am__append_18) \
-	$(am__append_19) $(am__append_20) $(am__append_21)
+	xmlstring.c $(am__append_4) $(am__append_6) $(am__append_7) \
+	$(am__append_8) $(am__append_9) $(am__append_10) \
+	$(am__append_11) $(am__append_12) $(am__append_13) \
+	$(am__append_14) $(am__append_15) $(am__append_16) \
+	$(am__append_17) $(am__append_18) $(am__append_19) \
+	$(am__append_20) $(am__append_21)
 @WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@xmlcatalog_SOURCES = xmlcatalog.c
-@WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@xmlcatalog_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS) $(ICONV_CFLAGS)
+@WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@xmlcatalog_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS)
 @WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@xmlcatalog_DEPENDENCIES = $(DEPS)
 @WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@xmlcatalog_LDADD = $(RDL_LIBS) $(LDADDS)
 DEPS = libxml2.la
@@ -687,7 +680,7 @@ runsuite_SOURCES = runsuite.c
 runsuite_DEPENDENCIES = $(DEPS)
 runsuite_LDADD = $(LDADDS)
 xmllint_SOURCES = xmllint.c shell.c lintmain.c
-xmllint_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS) $(ICONV_CFLAGS)
+xmllint_CFLAGS = $(AM_CFLAGS) $(RDL_CFLAGS)
 xmllint_DEPENDENCIES = $(DEPS)
 xmllint_LDADD = $(RDL_LIBS) $(LDADDS)
 testModule_SOURCES = testModule.c
@@ -704,13 +697,26 @@ testapi_LDADD = $(LDADDS)
 runxmlconf_SOURCES = runxmlconf.c
 runxmlconf_DEPENDENCIES = $(DEPS)
 runxmlconf_LDADD = $(LDADDS)
-CLEANFILES = runsuite.log runxmlconf.log test.out *.gcda *.gcno *.res
-DISTCLEANFILES = COPYING missing.lst
+CLEANFILES = missing.lst runsuite.log runxmlconf.log test.out \
+	     *.gcda *.gcno *.res
+
 EXTRA_DIST = Copyright libxml2-config.cmake.in autogen.sh \
 	     libxml.h \
-	     html5ent.inc iso8859x.inc \
-	     tools/gentest.py \
-	     tools/genChRanges.py tools/genEscape.py tools/genUnicode.py \
+	     codegen/charset.inc \
+	     codegen/escape.inc \
+	     codegen/genCharset.py \
+	     codegen/genEscape.py \
+	     codegen/genHtml5Ent.py \
+	     codegen/genHtml5LibTests.py \
+	     codegen/genRanges.py \
+	     codegen/genTestApi.py \
+	     codegen/genUnicode.py \
+	     codegen/html5ent.inc \
+	     codegen/ranges.def \
+	     codegen/ranges.inc \
+	     codegen/rangetab.py \
+	     codegen/unicode.inc \
+	     codegen/xmlmod.py \
 	     timsort.h \
 	     README.zOS README.md \
 	     CMakeLists.txt config.h.cmake.in libxml2-config.cmake.cmake.in \
@@ -720,13 +726,6 @@ pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libxml-2.0.pc
 cmakedir = $(libdir)/cmake/libxml2
 cmake_DATA = libxml2-config.cmake
-
-#
-# Coverage support, largely borrowed from libvirt
-# Both binaries comes from the lcov package in Fedora
-#
-LCOV = /usr/bin/lcov
-GENHTML = /usr/bin/genhtml
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -1022,11 +1021,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xmlschemas.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xmlschemastypes.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xmlstring.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xmlunicode.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xmlwriter.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xpath.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xpointer.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxml2_la-xzlib.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runsuite.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtest.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runxmlconf.Po@am__quote@ # am--include-marker
@@ -1248,13 +1245,6 @@ libxml2_la-nanohttp.lo: nanohttp.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -c -o libxml2_la-nanohttp.lo `test -f 'nanohttp.c' || echo '$(srcdir)/'`nanohttp.c
 
-libxml2_la-xzlib.lo: xzlib.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -MT libxml2_la-xzlib.lo -MD -MP -MF $(DEPDIR)/libxml2_la-xzlib.Tpo -c -o libxml2_la-xzlib.lo `test -f 'xzlib.c' || echo '$(srcdir)/'`xzlib.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libxml2_la-xzlib.Tpo $(DEPDIR)/libxml2_la-xzlib.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='xzlib.c' object='libxml2_la-xzlib.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -c -o libxml2_la-xzlib.lo `test -f 'xzlib.c' || echo '$(srcdir)/'`xzlib.c
-
 libxml2_la-xmlmodule.lo: xmlmodule.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -MT libxml2_la-xmlmodule.lo -MD -MP -MF $(DEPDIR)/libxml2_la-xmlmodule.Tpo -c -o libxml2_la-xmlmodule.lo `test -f 'xmlmodule.c' || echo '$(srcdir)/'`xmlmodule.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libxml2_la-xmlmodule.Tpo $(DEPDIR)/libxml2_la-xmlmodule.Plo
@@ -1290,13 +1280,6 @@ libxml2_la-xmlregexp.lo: xmlregexp.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -c -o libxml2_la-xmlregexp.lo `test -f 'xmlregexp.c' || echo '$(srcdir)/'`xmlregexp.c
 
-libxml2_la-xmlunicode.lo: xmlunicode.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -MT libxml2_la-xmlunicode.lo -MD -MP -MF $(DEPDIR)/libxml2_la-xmlunicode.Tpo -c -o libxml2_la-xmlunicode.lo `test -f 'xmlunicode.c' || echo '$(srcdir)/'`xmlunicode.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libxml2_la-xmlunicode.Tpo $(DEPDIR)/libxml2_la-xmlunicode.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='xmlunicode.c' object='libxml2_la-xmlunicode.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -c -o libxml2_la-xmlunicode.lo `test -f 'xmlunicode.c' || echo '$(srcdir)/'`xmlunicode.c
-
 libxml2_la-relaxng.lo: relaxng.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxml2_la_CFLAGS) $(CFLAGS) -MT libxml2_la-relaxng.lo -MD -MP -MF $(DEPDIR)/libxml2_la-relaxng.Tpo -c -o libxml2_la-relaxng.lo `test -f 'relaxng.c' || echo '$(srcdir)/'`relaxng.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libxml2_la-relaxng.Tpo $(DEPDIR)/libxml2_la-relaxng.Plo
@@ -1815,7 +1798,6 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -1864,11 +1846,9 @@ distclean: distclean-recursive
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlschemas.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlschemastypes.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlstring.Plo
-	-rm -f ./$(DEPDIR)/libxml2_la-xmlunicode.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlwriter.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xpath.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xpointer.Plo
-	-rm -f ./$(DEPDIR)/libxml2_la-xzlib.Plo
 	-rm -f ./$(DEPDIR)/runsuite.Po
 	-rm -f ./$(DEPDIR)/runtest.Po
 	-rm -f ./$(DEPDIR)/runxmlconf.Po
@@ -1968,11 +1948,9 @@ maintainer-clean: maintainer-clean-recur
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlschemas.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlschemastypes.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlstring.Plo
-	-rm -f ./$(DEPDIR)/libxml2_la-xmlunicode.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xmlwriter.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xpath.Plo
 	-rm -f ./$(DEPDIR)/libxml2_la-xpointer.Plo
-	-rm -f ./$(DEPDIR)/libxml2_la-xzlib.Plo
 	-rm -f ./$(DEPDIR)/runsuite.Po
 	-rm -f ./$(DEPDIR)/runtest.Po
 	-rm -f ./$(DEPDIR)/runxmlconf.Po
@@ -2036,10 +2014,8 @@ uninstall-am: uninstall-binPROGRAMS unin
 .PRECIOUS: Makefile
 
 
-# that one forces the rebuild when "make rebuild" is run on doc/
 rebuild_testapi:
-	-@(if [ "$(PYTHON)" != "" ] ; then \
-	    $(PYTHON) $(srcdir)/tools/gentest.py $(srcdir) ; fi )
+	cd $(srcdir) && python3 codegen/genTestApi.py $(abs_builddir)
 
 check-local:
 	[ -d test   ] || $(LN_S) $(srcdir)/test   .
@@ -2053,8 +2029,9 @@ check-local:
 	$(CHECKER) ./testModule$(EXEEXT)
 	$(CHECKER) ./runxmlconf$(EXEEXT) -d $(srcdir)/xmlconf
 	$(CHECKER) ./runsuite$(EXEEXT)
-@WITH_DEBUG_SOURCES_TRUE@	test/scripts/test.sh ./xmllint$(EXEEXT)
+@WITH_DEBUG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@	test/scripts/test.sh ./xmllint$(EXEEXT)
 @WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@	ASAN_OPTIONS=detect_leaks=0 test/catalogs/test.sh ./xmlcatalog$(EXEEXT)
+@WITH_CATALOG_SOURCES_TRUE@@WITH_OUTPUT_SOURCES_TRUE@	ASAN_OPTIONS=detect_leaks=0 test/catalogs/test_sgml.sh ./xmlcatalog$(EXEEXT)
 
 # Compatibility name of the check target
 runtests: check
@@ -2064,41 +2041,9 @@ check-valgrind valgrind:
 	@echo '## Go get a cup of coffee it is gonna take a while ...'
 	$(MAKE) CHECKER='valgrind -q' check
 
-asan:
-	@echo '## rebuilding for ASAN'
-	./configure CFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" CXXFLAGS="-fsanitize=address,undefined -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined" CC="clang" CXX="clang++" --disable-shared ; OptimOff  ; $(MAKE) clean ; $(MAKE)
-
-cleanup:
-	-@(find . -name .\#\* -exec rm {} \;)
-	-@(find . -name \*.gcda -o -name \*.gcno -exec rm -f {} \;)
-	-@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm -f {} \;)
-
-dist-hook: cleanup
+dist-hook:
 	(cd $(srcdir) ; tar -cf - --exclude .git win32 test result) | (cd $(distdir); tar xf -)
 
-tst: tst.c
-	$(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz -llzma
-
-sparse: clean
-	$(MAKE) CC=cgcc
-
-cov: clean-cov
-	if [ "`echo $(AM_LDFLAGS) | grep coverage`" = "" ] ; then \
-	    echo not configured with coverage; exit 1 ; fi
-	if [ ! -x $(LCOV) -o ! -x $(GENHTML) ] ; then \
-	    echo Need $(LCOV) and $(GENHTML) excecutables; exit 1 ; fi
-	-@($(MAKE) check)
-	-@(./runsuite$(EXEEXT))
-	mkdir $(top_builddir)/coverage
-	$(LCOV) -c -o $(top_builddir)/coverage/libxml2.info.tmp -d $(top_srcdir)
-	$(LCOV) -r $(top_builddir)/coverage/libxml2.info.tmp -o $(top_builddir)/coverage/libxml2.info *usr*
-	rm $(top_builddir)/coverage/libxml2.info.tmp
-	$(GENHTML) -s -t "libxml2" -o $(top_builddir)/coverage --legend $(top_builddir)/coverage/libxml2.info
-	echo "Coverage report is in $(top_builddir)/coverage/index.html"
-
-clean-cov:
-	rm -rf $(top_builddir)/coverage
-
 # 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.
 .NOEXPORT:
diff -pruN 2.14.6+dfsg-0.1/NEWS 2.15.0+dfsg-0.3/NEWS
--- 2.14.6+dfsg-0.1/NEWS	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/NEWS	2025-09-15 11:55:59.000000000 +0000
@@ -1,5 +1,71 @@
 NEWS file for libxml2
 
+v2.15.0: Sep 15 2025
+
+### Major changes
+
+The API documentation is now generated with Doxygen. Building the
+documentation requires the new --with-docs configuration option as well
+as Doxygen, xsltproc and the DocBook 4 XSLT stylesheets.
+
+The Python bindings are disabled by default now. Building the bindings
+also requires Doxygen.
+
+Support for Schematron is now disabled by default.
+
+The parser option XML_PARSE_UNZIP is now required to read compressed data.
+
+HTML serialization and handling of character encodings is more in line
+with the HTML5 spec now.
+
+More accessors for xmlParserCtxt were added.
+
+### Deprecations
+
+More internal functions and struct members were deprecated.
+
+### Removals
+
+The built-in HTTP client and support for LZMA compression were removed.
+
+The custom Windows build system in `win32` was removed in favor of CMake.
+
+### Planned removals
+
+The Python bindings and support for Schematron validation are planned to
+be removed in the 2.16 release.
+
+The following features are considered for removal:
+
+- Modules API (xmlmodule.h)
+- Support for zlib compressed file I/O
+
+RELAX NG support is still in a bad state and a long-term removal
+candidate.
+
+### Thanks
+
+Thanks to the following contributors:
+
+- Alex Richardson
+- Benjamin Gilbert
+- Caolán McNamara
+- Collin Funk
+- Dag-Erling Smørgrav
+- Dan Yeaw
+- Daniel P. Berrangé
+- Francesco Pretto
+- Lovell Fuller
+- Maks Verver
+- Markus Rickert
+- Michael Mann
+- Omar Siam
+- Pavel Kopylov
+- Peter Kokot
+- Samuel Thibault
+- ThomasK
+
+
 v2.14.6: Sep 8 2025
 
 ### Regressions
@@ -167,19 +233,6 @@ Overflow checks before reallocations wer
 
 Some unprefixed symbols were renamed to avoid namespace pollution.
 
-### Other potentially incompatible changes
-
-Strings passed to the "characters" callback of the HTML SAX parser
-aren't null-terminated anymore, matching the behavior of the XML
-parser. Custom SAX parsers must use the "len" argument.
-
-xmlIOParseDTD doesn't allow null bytes at the end of the input anymore.
-
-Type and layout of conversion callbacks in struct xmlCharEncodingHandler
-were changed. Applications using libxml2's encoding conversion API
-should use functions xmlCharEncInFunc and xmlCharEncOutFunc instead of
-accessing the callbacks directly.
-
 ### New features
 
 Input callbacks can now be set on a parser context and an improved API
@@ -220,9 +273,6 @@ The xpointer() scheme now behaves like t
 
 Several legacy symbols and the functions in xmlunicode.h were removed.
 
-Some unprefixed, internal macros like ATTRIBUTE_UNUSED were removed
-from public headers.
-
 ELF version information was removed.
 
 The shell was moved from libxml2 to xmllint. Several related functions
diff -pruN 2.14.6+dfsg-0.1/README.md 2.15.0+dfsg-0.3/README.md
--- 2.14.6+dfsg-0.1/README.md	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/README.md	2025-09-15 11:55:59.000000000 +0000
@@ -11,8 +11,6 @@ The git repository is hosted on GNOME's
 
 Bugs should be reported at
 <https://gitlab.gnome.org/GNOME/libxml2/-/issues>.
-Please report *security issues* to our bug tracker as well. Make sure to
-mark the issue as *confidential*.
 
 Documentation is available at
 <https://gitlab.gnome.org/GNOME/libxml2/-/wikis>
@@ -21,6 +19,14 @@ Documentation is available at
 
 This code is released under the MIT License, see the Copyright file.
 
+## Security
+
+This is open-source software written by hobbyists, maintained by a single
+volunteer, badly tested, written in a memory-unsafe language and full of
+security bugs. It is foolish to use this software to process untrusted data.
+As such, we treat security issues like any other bug. Each security report
+we receive will be made public immediately and won't be prioritized.
+
 ## Build instructions
 
 libxml2 can be built with GNU Autotools, CMake or meson.
@@ -47,25 +53,25 @@ The following options disable or enable
     --with-c14n             Canonical XML 1.0 support (on)
     --with-catalog          XML Catalogs support (on)
     --with-debug            debugging module (on)
+    --with-docs             Build documentation (off)
     --with-history          history support for xmllint shell (off)
     --with-readline[=DIR]   use readline in DIR for shell (off)
     --with-html             HTML parser (on)
-    --with-http             HTTP support (off)
+    --with-http             ABI compatibility for removed HTTP support (off)
     --with-iconv[=DIR]      iconv support (on)
     --with-icu              ICU support (off)
     --with-iso8859x         ISO-8859-X support if no iconv (on)
-    --with-lzma[=DIR]       use liblzma in DIR (off)
     --with-modules          dynamic modules support (on)
     --with-output           serialization support (on)
     --with-pattern          xmlPattern selection interface (on)
     --with-push             push parser interfaces (on)
-    --with-python           Python bindings (on)
+    --with-python           Python bindings (off)
     --with-reader           xmlReader parsing interface (on)
     --with-regexps          regular expressions support (on)
     --with-relaxng          RELAX NG support (on)
     --with-sax1             older SAX1 interface (on)
     --with-schemas          XML Schemas 1.0 support (on)
-    --with-schematron       Schematron support (on)
+    --with-schematron       Schematron support (off)
     --with-threads          multithreading support (on)
     --with-thread-alloc     per-thread malloc hooks (off)
     --with-valid            DTD validation support (on)
@@ -77,6 +83,7 @@ The following options disable or enable
 
 Other options:
 
+    --prefix=DIR            set installation prefix
     --with-minimum          build a minimally sized library (off)
     --with-legacy           maximum ABI compatibility (off)
 
@@ -111,10 +118,10 @@ Example commands:
 Common CMake options include:
 
     -D BUILD_SHARED_LIBS=OFF            # build static libraries
-    -D CMAKE_BUILD_TYPE=Release         # specify build type
+    -D CMAKE_BUILD_TYPE=Release         # specify build type (single-config)
+    --config Release                    # specify build type (multi-config)
     -D CMAKE_INSTALL_PREFIX=/usr/local  # specify the install path
     -D LIBXML2_WITH_ICONV=OFF           # disable iconv
-    -D LIBXML2_WITH_PYTHON=OFF          # disable Python
     -D LIBXML2_WITH_ZLIB=ON             # enable zlib
 
 You can also open the libxml source directory with its CMakeLists.txt
@@ -133,8 +140,7 @@ See the `meson_options.txt` file for opt
 
     -Dprefix=$prefix
     -Dhistory=enabled
-    -Dhttp=enabled
-    -Dschematron=disabled
+    -Dschemas=disabled
     -Dzlib=enabled
 
 ## Dependencies
@@ -147,12 +153,15 @@ iconv, you need an external libiconv lib
 [GNU libiconv](https://www.gnu.org/software/libiconv/). Using
 [ICU](https://icu.unicode.org/) is also supported but discouraged.
 
-If enabled, libxml uses [libz](https://zlib.net/) or
-[liblzma](https://tukaani.org/xz/) to support reading compressed files.
-Use of this feature is discouraged.
-
 The xmllint executable uses libreadline and libhistory if enabled.
 
+### Build requirements
+
+Besides build system tools, only a C compiler should be required.
+Reconfiguration of the Autotools build requires the pkg.m4 macro from
+pkg-config. Building the documentation requires Doxygen, xsltproc and the
+DocBook 4 XSLT stylesheets. Building the Python bindings requires Doxygen.
+
 ## Contributing
 
 The current version of the code can be found in GNOME's GitLab at
diff -pruN 2.14.6+dfsg-0.1/SAX2.c 2.15.0+dfsg-0.3/SAX2.c
--- 2.14.6+dfsg-0.1/SAX2.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/SAX2.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <daniel@veillard.com>
+ * Author: Daniel Veillard
  */
 
 
@@ -30,25 +30,28 @@
 #include "private/parser.h"
 #include "private/tree.h"
 
+#ifndef SIZE_MAX
+  #define SIZE_MAX ((size_t) -1)
+#endif
+
 /*
- * xmlSAX2ErrMemory:
- * @ctxt:  an XML validation parser context
- * @msg:   a string to accompany the error message
+ * @param ctxt  an XML validation parser context
+ * @param msg  a string to accompany the error message
  */
 static void
 xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt) {
     xmlCtxtErrMemory(ctxt);
 }
 
+#ifdef LIBXML_VALID_ENABLED
 /**
- * xmlValidError:
- * @ctxt:  an XML validation parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  extra data
- * @str2:  extra data
- *
  * Handle a validation error
+ *
+ * @param ctxt  an XML validation parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -59,16 +62,16 @@ xmlErrValid(xmlParserCtxtPtr ctxt, xmlPa
     if (ctxt != NULL)
 	ctxt->valid = 0;
 }
+#endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmlFatalErrMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  an error string
- * @str2:  an error string
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  an error string
+ * @param str2  an error string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -79,14 +82,28 @@ xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xm
 }
 
 /**
- * xmlWarnMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  an error string
- * @str2:  an error string
+ * Handle an xml:id error
  *
+ * @param ctxt  an XML validation parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra data
+ */
+static void LIBXML_ATTR_FORMAT(3,0)
+xmlErrId(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *msg,
+         const xmlChar *str1)
+{
+    xmlCtxtErr(ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_ERROR,
+               str1, NULL, NULL, 0, msg, str1);
+}
+
+/**
  * Handle a parser warning
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  an error string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -97,13 +114,13 @@ xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlPar
 }
 
 /**
- * xmlNsWarnMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  an error string
- *
  * Handle a namespace warning
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  an error string
+ * @param str2  an error string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -114,12 +131,10 @@ xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlP
 }
 
 /**
- * xmlSAX2GetPublicId:
- * @ctx: the user data (XML parser context)
- *
  * Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN"
  *
- * Returns a xmlChar *
+ * @param ctx  the user data (XML parser context)
+ * @returns a xmlChar *
  */
 const xmlChar *
 xmlSAX2GetPublicId(void *ctx ATTRIBUTE_UNUSED)
@@ -129,13 +144,11 @@ xmlSAX2GetPublicId(void *ctx ATTRIBUTE_U
 }
 
 /**
- * xmlSAX2GetSystemId:
- * @ctx: the user data (XML parser context)
- *
  * Provides the system ID, basically URL or filename e.g.
  * http://www.sgmlsource.com/dtds/memo.dtd
  *
- * Returns a xmlChar *
+ * @param ctx  the user data (XML parser context)
+ * @returns a xmlChar *
  */
 const xmlChar *
 xmlSAX2GetSystemId(void *ctx)
@@ -146,12 +159,10 @@ xmlSAX2GetSystemId(void *ctx)
 }
 
 /**
- * xmlSAX2GetLineNumber:
- * @ctx: the user data (XML parser context)
- *
  * Provide the line number of the current parsing point.
  *
- * Returns an int
+ * @param ctx  the user data (XML parser context)
+ * @returns an int
  */
 int
 xmlSAX2GetLineNumber(void *ctx)
@@ -162,12 +173,10 @@ xmlSAX2GetLineNumber(void *ctx)
 }
 
 /**
- * xmlSAX2GetColumnNumber:
- * @ctx: the user data (XML parser context)
- *
  * Provide the column number of the current parsing point.
  *
- * Returns an int
+ * @param ctx  the user data (XML parser context)
+ * @returns an int
  */
 int
 xmlSAX2GetColumnNumber(void *ctx)
@@ -178,12 +187,10 @@ xmlSAX2GetColumnNumber(void *ctx)
 }
 
 /**
- * xmlSAX2IsStandalone:
- * @ctx: the user data (XML parser context)
- *
  * Is this document tagged standalone ?
  *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 int
 xmlSAX2IsStandalone(void *ctx)
@@ -194,12 +201,10 @@ xmlSAX2IsStandalone(void *ctx)
 }
 
 /**
- * xmlSAX2HasInternalSubset:
- * @ctx: the user data (XML parser context)
- *
  * Does this document has an internal subset
  *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 int
 xmlSAX2HasInternalSubset(void *ctx)
@@ -210,12 +215,10 @@ xmlSAX2HasInternalSubset(void *ctx)
 }
 
 /**
- * xmlSAX2HasExternalSubset:
- * @ctx: the user data (XML parser context)
- *
  * Does this document has an external subset
  *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 int
 xmlSAX2HasExternalSubset(void *ctx)
@@ -226,17 +229,16 @@ xmlSAX2HasExternalSubset(void *ctx)
 }
 
 /**
- * xmlSAX2InternalSubset:
- * @ctx:  the user data (XML parser context)
- * @name:  the root element name
- * @ExternalID:  the external ID
- * @SystemID:  the SYSTEM ID (e.g. filename or URL)
- *
  * Callback on internal subset declaration.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  the root element name
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD
  */
 void
 xmlSAX2InternalSubset(void *ctx, const xmlChar *name,
-	       const xmlChar *ExternalID, const xmlChar *SystemID)
+	       const xmlChar *publicId, const xmlChar *systemId)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
     xmlDtdPtr dtd;
@@ -253,29 +255,28 @@ xmlSAX2InternalSubset(void *ctx, const x
 	ctxt->myDoc->intSubset = NULL;
     }
     ctxt->myDoc->intSubset =
-	xmlCreateIntSubset(ctxt->myDoc, name, ExternalID, SystemID);
+	xmlCreateIntSubset(ctxt->myDoc, name, publicId, systemId);
     if (ctxt->myDoc->intSubset == NULL)
         xmlSAX2ErrMemory(ctxt);
 }
 
 /**
- * xmlSAX2ExternalSubset:
- * @ctx: the user data (XML parser context)
- * @name:  the root element name
- * @ExternalID:  the external ID
- * @SystemID:  the SYSTEM ID (e.g. filename or URL)
- *
  * Callback on external subset declaration.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  the root element name
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD
  */
 void
 xmlSAX2ExternalSubset(void *ctx, const xmlChar *name,
-	       const xmlChar *ExternalID, const xmlChar *SystemID)
+	       const xmlChar *publicId, const xmlChar *systemId)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
     if (ctx == NULL) return;
-    if ((SystemID != NULL) &&
+    if ((systemId != NULL) &&
         ((ctxt->options & XML_PARSE_NO_XXE) == 0) &&
-        (((ctxt->validate) || (ctxt->loadsubset)) &&
+        (((ctxt->validate) || (ctxt->loadsubset & ~XML_SKIP_IDS)) &&
 	 (ctxt->wellFormed && ctxt->myDoc))) {
 	/*
 	 * Try to fetch and parse the external subset.
@@ -285,7 +286,7 @@ xmlSAX2ExternalSubset(void *ctx, const x
 	int oldinputMax;
 	xmlParserInputPtr *oldinputTab;
 	xmlParserInputPtr input = NULL;
-	const xmlChar *oldencoding;
+	xmlChar *oldencoding;
         unsigned long consumed;
         size_t buffered;
 #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
@@ -298,13 +299,13 @@ xmlSAX2ExternalSubset(void *ctx, const x
 	 * Ask the Entity resolver to load the damn thing
 	 */
 	if ((ctxt->sax != NULL) && (ctxt->sax->resolveEntity != NULL))
-	    input = ctxt->sax->resolveEntity(ctxt->userData, ExternalID,
-	                                        SystemID);
+	    input = ctxt->sax->resolveEntity(ctxt->userData, publicId,
+	                                     systemId);
 	if (input == NULL) {
 	    return;
 	}
 
-	if (xmlNewDtd(ctxt->myDoc, name, ExternalID, SystemID) == NULL) {
+	if (xmlNewDtd(ctxt->myDoc, name, publicId, systemId) == NULL) {
             xmlSAX2ErrMemory(ctxt);
             xmlFreeInputStream(input);
             return;
@@ -332,7 +333,7 @@ xmlSAX2ExternalSubset(void *ctx, const x
             goto error;
 
 	if (input->filename == NULL)
-	    input->filename = (char *) xmlCanonicPath(SystemID);
+	    input->filename = (char *) xmlCanonicPath(systemId);
 	input->line = 1;
 	input->col = 1;
 	input->base = ctxt->input->cur;
@@ -342,7 +343,7 @@ xmlSAX2ExternalSubset(void *ctx, const x
 	/*
 	 * let's parse that entity knowing it's an external subset.
 	 */
-	xmlParseExternalSubset(ctxt, ExternalID, SystemID);
+	xmlParseExternalSubset(ctxt, publicId, systemId);
 
         /*
 	 * Free up the external entities
@@ -373,27 +374,23 @@ error:
 	ctxt->inputNr = oldinputNr;
 	ctxt->inputMax = oldinputMax;
 	ctxt->inputTab = oldinputTab;
-	if ((ctxt->encoding != NULL) &&
-	    ((ctxt->dict == NULL) ||
-	     (!xmlDictOwns(ctxt->dict, ctxt->encoding))))
-	    xmlFree((xmlChar *) ctxt->encoding);
+	if (ctxt->encoding != NULL)
+	    xmlFree(ctxt->encoding);
 	ctxt->encoding = oldencoding;
 	/* ctxt->wellFormed = oldwellFormed; */
     }
 }
 
 /**
- * xmlSAX2ResolveEntity:
- * @ctx: the user data (XML parser context)
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * This is only used to load DTDs. The preferred way to install
- * custom resolvers is xmlCtxtSetResourceLoader.
+ * custom resolvers is #xmlCtxtSetResourceLoader.
  *
- * Returns a parser input.
+ * @param ctx  the user data (XML parser context)
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID (URL) of the entity
+ * @returns a parser input.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlSAX2ResolveEntity(void *ctx, const xmlChar *publicId,
                      const xmlChar *systemId)
 {
@@ -446,15 +443,13 @@ xmlSAX2ResolveEntity(void *ctx, const xm
 }
 
 /**
- * xmlSAX2GetEntity:
- * @ctx: the user data (XML parser context)
- * @name: The entity name
- *
  * Get an entity by name
  *
- * Returns the xmlEntityPtr if found.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
+ * @returns the xmlEntity if found.
  */
-xmlEntityPtr
+xmlEntity *
 xmlSAX2GetEntity(void *ctx, const xmlChar *name)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -492,15 +487,13 @@ xmlSAX2GetEntity(void *ctx, const xmlCha
 }
 
 /**
- * xmlSAX2GetParameterEntity:
- * @ctx: the user data (XML parser context)
- * @name: The entity name
- *
  * Get a parameter entity by name
  *
- * Returns the xmlEntityPtr if found.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
+ * @returns the xmlEntity if found.
  */
-xmlEntityPtr
+xmlEntity *
 xmlSAX2GetParameterEntity(void *ctx, const xmlChar *name)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -514,15 +507,14 @@ xmlSAX2GetParameterEntity(void *ctx, con
 
 
 /**
- * xmlSAX2EntityDecl:
- * @ctx: the user data (XML parser context)
- * @name:  the entity name
- * @type:  the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
- *
  * An entity definition has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  the entity name
+ * @param type  the entity type
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param content  the entity value (without processing).
  */
 void
 xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type,
@@ -608,21 +600,20 @@ xmlSAX2EntityDecl(void *ctx, const xmlCh
 }
 
 /**
- * xmlSAX2AttributeDecl:
- * @ctx: the user data (XML parser context)
- * @elem:  the name of the element
- * @fullname:  the attribute name
- * @type:  the attribute type
- * @def:  the type of default value
- * @defaultValue: the attribute default value
- * @tree:  the tree of enumerated value set
- *
  * An attribute definition has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param elem  the name of the element
+ * @param fullname  the attribute name
+ * @param type  the attribute type
+ * @param def  the type of default value
+ * @param defaultValue  the attribute default value
+ * @param tree  the tree of enumerated value set
  */
 void
 xmlSAX2AttributeDecl(void *ctx, const xmlChar *elem, const xmlChar *fullname,
               int type, int def, const xmlChar *defaultValue,
-	      xmlEnumerationPtr tree)
+	      xmlEnumeration *tree)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
     xmlAttributePtr attr;
@@ -637,13 +628,8 @@ xmlSAX2AttributeDecl(void *ctx, const xm
 
     if ((xmlStrEqual(fullname, BAD_CAST "xml:id")) &&
         (type != XML_ATTRIBUTE_ID)) {
-	/*
-	 * Raise the error but keep the validity flag
-	 */
-	int tmp = ctxt->valid;
-	xmlErrValid(ctxt, XML_DTD_XMLID_TYPE,
-	      "xml:id : attribute type should be ID\n", NULL, NULL);
-	ctxt->valid = tmp;
+	xmlErrId(ctxt, XML_DTD_XMLID_TYPE,
+	      "xml:id : attribute type should be ID\n", NULL);
     }
     name = xmlSplitQName4(fullname, &prefix);
     if (name == NULL)
@@ -678,17 +664,16 @@ xmlSAX2AttributeDecl(void *ctx, const xm
 }
 
 /**
- * xmlSAX2ElementDecl:
- * @ctx: the user data (XML parser context)
- * @name:  the element name
- * @type:  the element type
- * @content: the element value tree
- *
  * An element definition has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  the element name
+ * @param type  the element type
+ * @param content  the element value tree
  */
 void
 xmlSAX2ElementDecl(void *ctx, const xmlChar * name, int type,
-            xmlElementContentPtr content)
+            xmlElementContent *content)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
     xmlElementPtr elem = NULL;
@@ -722,13 +707,12 @@ xmlSAX2ElementDecl(void *ctx, const xmlC
 }
 
 /**
- * xmlSAX2NotationDecl:
- * @ctx: the user data (XML parser context)
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * What to do when a notation declaration has been parsed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  The name of the notation
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
  */
 void
 xmlSAX2NotationDecl(void *ctx, const xmlChar *name,
@@ -770,14 +754,13 @@ xmlSAX2NotationDecl(void *ctx, const xml
 }
 
 /**
- * xmlSAX2UnparsedEntityDecl:
- * @ctx: the user data (XML parser context)
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
- *
  * What to do when an unparsed entity declaration is parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  The name of the entity
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param notationName  the name of the notation
  */
 void
 xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name,
@@ -789,23 +772,21 @@ xmlSAX2UnparsedEntityDecl(void *ctx, con
 }
 
 /**
- * xmlSAX2SetDocumentLocator:
- * @ctx: the user data (XML parser context)
- * @loc: A SAX Locator
- *
  * Receive the document locator at startup, actually xmlDefaultSAXLocator
  * Everything is available on the context, so this is useless in our case.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param loc  A SAX Locator
  */
 void
-xmlSAX2SetDocumentLocator(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
+xmlSAX2SetDocumentLocator(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocator *loc ATTRIBUTE_UNUSED)
 {
 }
 
 /**
- * xmlSAX2StartDocument:
- * @ctx: the user data (XML parser context)
- *
  * called when the document start being processed.
+ *
+ * @param ctx  the user data (XML parser context)
  */
 void
 xmlSAX2StartDocument(void *ctx)
@@ -853,10 +834,9 @@ xmlSAX2StartDocument(void *ctx)
 }
 
 /**
- * xmlSAX2EndDocument:
- * @ctx: the user data (XML parser context)
- *
  * called when the document end has been detected.
+ *
+ * @param ctx  the user data (XML parser context)
  */
 void
 xmlSAX2EndDocument(void *ctx)
@@ -872,7 +852,10 @@ xmlSAX2EndDocument(void *ctx)
 #endif /* LIBXML_VALID_ENABLED */
 
     doc = ctxt->myDoc;
-    if ((doc != NULL) && (doc->encoding == NULL)) {
+    if (doc == NULL)
+        return;
+
+    if (doc->encoding == NULL) {
         const xmlChar *encoding = xmlGetActualEncoding(ctxt);
 
         if (encoding != NULL) {
@@ -881,6 +864,31 @@ xmlSAX2EndDocument(void *ctx)
                 xmlSAX2ErrMemory(ctxt);
         }
     }
+
+#ifdef LIBXML_HTML_ENABLED
+    if (ctxt->html) {
+        if (((ctxt->options & HTML_PARSE_NODEFDTD) == 0) &&
+            (doc->intSubset == NULL)) {
+            doc->intSubset = xmlCreateIntSubset(doc, BAD_CAST "html",
+                    BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN",
+                    BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd");
+            if (doc->intSubset == NULL)
+                xmlSAX2ErrMemory(ctxt);
+        }
+    } else
+#endif /* LIBXML_HTML_ENABLED */
+    {
+        if (ctxt->wellFormed) {
+            doc->properties |= XML_DOC_WELLFORMED;
+            if (ctxt->valid)
+                doc->properties |= XML_DOC_DTDVALID;
+            if (ctxt->nsWellFormed)
+                doc->properties |= XML_DOC_NSVALID;
+        }
+
+        if (ctxt->options & XML_PARSE_OLD10)
+            doc->properties |= XML_DOC_OLD10;
+    }
 }
 
 static void
@@ -910,7 +918,6 @@ xmlSAX2AppendChild(xmlParserCtxtPtr ctxt
     node->parent = parent;
 
     if ((node->type != XML_TEXT_NODE) &&
-        (ctxt->linenumbers) &&
 	(ctxt->input != NULL)) {
         if ((unsigned) ctxt->input->line < (unsigned) USHRT_MAX)
             node->line = ctxt->input->line;
@@ -921,14 +928,13 @@ xmlSAX2AppendChild(xmlParserCtxtPtr ctxt
 
 #if defined(LIBXML_SAX1_ENABLED)
 /**
- * xmlNsErrMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  an error string
- * @str2:  an error string
- *
  * Handle a namespace error
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  an error string
+ * @param str2  an error string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -939,14 +945,14 @@ xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlPa
 }
 
 /**
- * xmlSAX1Attribute:
- * @ctx: the user data (XML parser context)
- * @fullname:  The attribute name, including namespace prefix
- * @value:  The attribute value
- *
  * Handle an attribute that has been read by the parser.
  *
  * Deprecated SAX1 interface.
+ *
+ * @param ctxt  the parser context
+ * @param fullname  the attribute name, including namespace prefix
+ * @param value  the attribute value
+ * @param prefix  the namespace prefix
  */
 static void
 xmlSAX1Attribute(xmlParserCtxtPtr ctxt, const xmlChar *fullname,
@@ -1134,7 +1140,7 @@ xmlSAX1Attribute(xmlParserCtxtPtr ctxt,
     }
 
     if (ctxt->replaceEntities == 0) {
-        if (xmlNodeParseContent((xmlNodePtr) ret, value, INT_MAX) < 0)
+        if (xmlNodeParseAttValue(ret->doc, ret, value, SIZE_MAX, NULL) < 0)
             xmlSAX2ErrMemory(ctxt);
     } else if (value != NULL) {
         ret->children = xmlNewDocText(ctxt->myDoc, value);
@@ -1218,9 +1224,9 @@ xmlSAX1Attribute(xmlParserCtxtPtr ctxt,
 	     * Open issue: normalization of the value.
 	     */
 	    if (xmlValidateNCName(content, 1) != 0) {
-	        xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
-		            "xml:id : attribute value %s is not an NCName\n",
-		            content, NULL);
+	        xmlErrId(ctxt, XML_DTD_XMLID_VALUE,
+		         "xml:id : attribute value %s is not an NCName\n",
+		         content);
 	    }
 	    xmlAddID(&ctxt->vctxt, ctxt->myDoc, content, ret);
 	} else {
@@ -1241,7 +1247,6 @@ error:
 }
 
 /*
- * xmlCheckDefaultedAttributes:
  *
  * Check defaulted attributes from the DTD
  *
@@ -1265,10 +1270,15 @@ process_external_subset:
 
     if (elemDecl != NULL) {
 	xmlAttributePtr attr = elemDecl->attributes;
-	/*
-	 * Check against defaulted attributes from the external subset
-	 * if the document is stamped as standalone
-	 */
+
+#ifdef LIBXML_VALID_ENABLED
+        /*
+         * Check against defaulted attributes from the external subset
+         * if the document is stamped as standalone.
+         *
+         * This should be moved to valid.c, but we don't keep track
+         * whether an attribute was defaulted.
+         */
 	if ((ctxt->myDoc->standalone == 1) &&
 	    (ctxt->myDoc->extSubset != NULL) &&
 	    (ctxt->validate)) {
@@ -1322,6 +1332,7 @@ process_external_subset:
 		attr = attr->nexth;
 	    }
 	}
+#endif
 
 	/*
 	 * Actually insert defaulted values when needed
@@ -1398,14 +1409,13 @@ process_external_subset:
 }
 
 /**
- * xmlSAX1StartElement:
- * @ctx: the user data (XML parser context)
- * @fullname:  The element name, including namespace prefix
- * @atts:  An array of name/value attributes pairs, NULL terminated
- *
  * called when an opening tag has been processed.
  *
  * Deprecated SAX1 interface.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param fullname  The element name, including namespace prefix
+ * @param atts  An array of name/value attributes pairs, NULL terminated
  */
 static void
 xmlSAX1StartElement(void *ctx, const xmlChar *fullname, const xmlChar **atts)
@@ -1422,6 +1432,7 @@ xmlSAX1StartElement(void *ctx, const xml
 
     if ((ctx == NULL) || (fullname == NULL) || (ctxt->myDoc == NULL)) return;
 
+#ifdef LIBXML_VALID_ENABLED
     /*
      * First check on validity:
      */
@@ -1435,6 +1446,7 @@ xmlSAX1StartElement(void *ctx, const xml
 	  "Validation failed: no DTD found !", NULL, NULL);
 	ctxt->validate = 0;
     }
+#endif
 
     /*
      * Split the full name into a namespace prefix and the tag name
@@ -1632,12 +1644,11 @@ xmlSAX2HtmlAttribute(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlSAX2StartHtmlElement:
- * @ctxt:  parser context
- * @fullname:  The element name, including namespace prefix
- * @atts:  An array of name/value attributes pairs, NULL terminated
- *
  * Called when an opening tag has been processed.
+ *
+ * @param ctxt  parser context
+ * @param fullname  The element name, including namespace prefix
+ * @param atts  An array of name/value attributes pairs, NULL terminated
  */
 static void
 xmlSAX2StartHtmlElement(xmlParserCtxtPtr ctxt, const xmlChar *fullname,
@@ -1688,16 +1699,15 @@ xmlSAX2StartHtmlElement(xmlParserCtxtPtr
 #endif /* LIBXML_HTML_ENABLED */
 
 /**
- * xmlSAX2StartElement:
- * @ctx: the user data (XML parser context)
- * @fullname:  The element name, including namespace prefix
- * @atts:  An array of name/value attributes pairs, NULL terminated
- *
- * DEPRECATED: Don't call this function directly.
- *
  * Called when an opening tag has been processed.
  *
+ * @deprecated Don't call this function directly.
+ *
  * Used for HTML and SAX1.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param fullname  The element name, including namespace prefix
+ * @param atts  An array of name/value attributes pairs, NULL terminated
  */
 void
 xmlSAX2StartElement(void *ctx, const xmlChar *fullname, const xmlChar **atts) {
@@ -1724,15 +1734,14 @@ xmlSAX2StartElement(void *ctx, const xml
 }
 
 /**
- * xmlSAX2EndElement:
- * @ctx: the user data (XML parser context)
- * @name:  The element name
- *
- * DEPRECATED: Don't call this function directly.
- *
  * called when the end of an element has been detected.
  *
+ * @deprecated Don't call this function directly.
+ *
  * Used for HTML and SAX1.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  The element name
  */
 void
 xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED)
@@ -1760,17 +1769,18 @@ xmlSAX2EndElement(void *ctx, const xmlCh
 }
 
 /*
- * xmlSAX2TextNode:
- * @ctxt:  the parser context
- * @str:  the input string
- * @len: the string length
+ * @param ctxt  the parser context
+ * @param doc  the document
+ * @param str  the input string
+ * @param len  the string length
  *
  * Callback for a text node
  *
- * Returns the newly allocated string or NULL if not needed or error
+ * @returns the newly allocated string or NULL if not needed or error
  */
 static xmlNodePtr
-xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) {
+xmlSAX2TextNode(xmlParserCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *str,
+                int len) {
     xmlNodePtr ret;
     const xmlChar *intern = NULL;
 
@@ -1828,6 +1838,7 @@ xmlSAX2TextNode(xmlParserCtxtPtr ctxt, c
     }
 skip:
     ret->type = XML_TEXT_NODE;
+    ret->doc = doc;
 
     ret->name = xmlStringText;
     if (intern == NULL) {
@@ -1847,14 +1858,13 @@ skip:
 
 #ifdef LIBXML_VALID_ENABLED
 /*
- * xmlSAX2DecodeAttrEntities:
- * @ctxt:  the parser context
- * @str:  the input string
- * @len: the string length
+ * @param ctxt  the parser context
+ * @param str  the input string
+ * @param len  the string length
  *
  * Remove the entities from an attribute value
  *
- * Returns the newly allocated string or NULL if not needed or error
+ * @returns the newly allocated string or NULL if not needed or error
  */
 static xmlChar *
 xmlSAX2DecodeAttrEntities(xmlParserCtxtPtr ctxt, const xmlChar *str,
@@ -1877,20 +1887,17 @@ decode:
 #endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmlSAX2AttributeNs:
- * @ctx: the user data (XML parser context)
- * @localname:  the local name of the attribute
- * @prefix:  the attribute namespace prefix if available
- * @URI:  the attribute namespace name if available
- * @value:  Start of the attribute value
- * @valueend: end of the attribute value
- *
  * 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.
  *
- * Returns the new attribute or NULL in case of error.
+ * @param ctxt  the parser context
+ * @param localname  the local name of the attribute
+ * @param prefix  the attribute namespace prefix if available
+ * @param value  start of the attribute value
+ * @param valueend  end of the attribute value
+ * @returns the new attribute or NULL in case of error.
  */
 static xmlAttrPtr
 xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt,
@@ -1968,26 +1975,24 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt
 	 * otherwise with ' or "
 	 */
 	if (*valueend != 0) {
-	    tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
+	    tmp = xmlSAX2TextNode(ctxt, ret->doc, value, valueend - value);
 	    ret->children = tmp;
 	    ret->last = tmp;
 	    if (tmp != NULL) {
-		tmp->doc = ret->doc;
 		tmp->parent = (xmlNodePtr) ret;
 	    }
 	} else if (valueend > value) {
-            if (xmlNodeParseContent((xmlNodePtr) ret, value,
-                                    valueend - value) < 0)
+            if (xmlNodeParseAttValue(ret->doc, ret, value, valueend - value,
+                                     NULL) < 0)
                 xmlSAX2ErrMemory(ctxt);
 	}
     } else if (value != NULL) {
 	xmlNodePtr tmp;
 
-	tmp = xmlSAX2TextNode(ctxt, value, valueend - value);
+	tmp = xmlSAX2TextNode(ctxt, ret->doc, value, valueend - value);
 	ret->children = tmp;
 	ret->last = tmp;
 	if (tmp != NULL) {
-	    tmp->doc = ret->doc;
 	    tmp->parent = (xmlNodePtr) ret;
 	}
     }
@@ -2099,9 +2104,9 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt
 	     * Open issue: normalization of the value.
 	     */
 	    if (xmlValidateNCName(content, 1) != 0) {
-	        xmlErrValid(ctxt, XML_DTD_XMLID_VALUE,
-                            "xml:id : attribute value %s is not an NCName\n",
-                            content, NULL);
+	        xmlErrId(ctxt, XML_DTD_XMLID_VALUE,
+                         "xml:id : attribute value %s is not an NCName\n",
+                         content);
 	    }
 	    xmlAddID(&ctxt->vctxt, ctxt->myDoc, content, ret);
 	} else {
@@ -2122,21 +2127,20 @@ xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlSAX2StartElementNs:
- * @ctx:  the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
- * @nb_namespaces:  number of namespace definitions on that node
- * @namespaces:  pointer to the array of prefix/URI pairs namespace definitions
- * @nb_attributes:  the number of attributes on that node
- * @nb_defaulted:  the number of defaulted attributes.
- * @attributes:  pointer to the array of (localname/prefix/URI/value/end)
- *               attribute values.
- *
  * SAX2 callback when an element start has been detected by the parser.
  * It provides the namespace information for the element, as well as
  * the new namespace declarations on the element.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
+ * @param nb_namespaces  number of namespace definitions on that node
+ * @param namespaces  pointer to the array of prefix/URI pairs namespace definitions
+ * @param nb_attributes  the number of attributes on that node
+ * @param nb_defaulted  the number of defaulted attributes.
+ * @param attributes  pointer to the array of (localname/prefix/URI/value/end)
+ *               attribute values.
  */
 void
 xmlSAX2StartElementNs(void *ctx,
@@ -2157,6 +2161,8 @@ xmlSAX2StartElementNs(void *ctx,
     int i, j;
 
     if (ctx == NULL) return;
+
+#ifdef LIBXML_VALID_ENABLED
     /*
      * First check on validity:
      */
@@ -2172,6 +2178,7 @@ xmlSAX2StartElementNs(void *ctx,
 	  "Validation failed: no DTD found !", NULL, NULL);
 	ctxt->validate = 0;
     }
+#endif /* LIBXML_VALID_ENABLED */
 
     /*
      * Take care of the rare case of an undefined namespace prefix
@@ -2398,14 +2405,13 @@ have_attr:
 }
 
 /**
- * xmlSAX2EndElementNs:
- * @ctx:  the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
- *
  * SAX2 callback when an element end has been detected by the parser.
  * It provides the namespace information for the element.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
  */
 void
 xmlSAX2EndElementNs(void *ctx,
@@ -2432,11 +2438,10 @@ xmlSAX2EndElementNs(void *ctx,
 }
 
 /**
- * xmlSAX2Reference:
- * @ctx: the user data (XML parser context)
- * @name:  The entity name
+ * called when an entity #xmlSAX2Reference is detected.
  *
- * called when an entity xmlSAX2Reference is detected.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
  */
 void
 xmlSAX2Reference(void *ctx, const xmlChar *name)
@@ -2455,136 +2460,129 @@ xmlSAX2Reference(void *ctx, const xmlCha
 }
 
 /**
- * xmlSAX2Text:
- * @ctx: the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- * @type: text or cdata
- *
  * Append characters.
+ *
+ * @param ctxt  the parser context
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
+ * @param type  text or cdata
  */
 static void
 xmlSAX2Text(xmlParserCtxtPtr ctxt, const xmlChar *ch, int len,
             xmlElementType type)
 {
     xmlNodePtr lastChild;
+    xmlNodePtr parent;
 
-    if (ctxt == NULL) return;
-    /*
-     * Handle the data if any. If there is no child
-     * add it as content, otherwise if the last child is text,
-     * concatenate it, else create a new node of type text.
-     */
+    if (ctxt == NULL)
+        return;
 
-    if (ctxt->node == NULL) {
+    parent = ctxt->node;
+    if (parent == NULL)
         return;
-    }
-    lastChild = ctxt->node->last;
+    lastChild = parent->last;
 
     /*
-     * Here we needed an accelerator mechanism in case of very large
-     * elements. Use an attribute in the structure !!!
-     */
-    if (lastChild == NULL) {
+     * Try to merge with previous text node using size and capacity
+     * stored in the parser context to avoid naive concatenation.
+     *
+     * Don't merge CDATA sections. In HTML mode, CDATA is used for
+     * raw text which should be merged.
+     */
+    if ((lastChild == NULL) ||
+        (lastChild->type != type) ||
+        ((!ctxt->html) && (type != XML_TEXT_NODE))) {
+        xmlNode *node;
+
         if (type == XML_TEXT_NODE)
-            lastChild = xmlSAX2TextNode(ctxt, ch, len);
+            node = xmlSAX2TextNode(ctxt, parent->doc, ch, len);
         else
-            lastChild = xmlNewCDataBlock(ctxt->myDoc, ch, len);
-	if (lastChild != NULL) {
-	    ctxt->node->children = lastChild;
-	    ctxt->node->last = lastChild;
-	    lastChild->parent = ctxt->node;
-	    lastChild->doc = ctxt->node->doc;
-	    ctxt->nodelen = len;
-	    ctxt->nodemem = len + 1;
-	} else {
+            node = xmlNewCDataBlock(parent->doc, ch, len);
+	if (node == NULL) {
 	    xmlSAX2ErrMemory(ctxt);
 	    return;
 	}
+
+        if (lastChild == NULL) {
+            parent->children = node;
+            parent->last = node;
+            node->parent = parent;
+        } else {
+            xmlSAX2AppendChild(ctxt, node);
+        }
+
+        ctxt->nodelen = len;
+        ctxt->nodemem = len + 1;
+        lastChild = node;
     } else {
-	int coalesceText = (lastChild != NULL) &&
-	    (lastChild->type == type) &&
-	    (((ctxt->html) && (type != XML_TEXT_NODE)) ||
-             (lastChild->name == xmlStringText));
-	if ((coalesceText) && (ctxt->nodemem > 0)) {
-            int maxLength = (ctxt->options & XML_PARSE_HUGE) ?
-                            XML_MAX_HUGE_LENGTH :
-                            XML_MAX_TEXT_LENGTH;
+        xmlChar *content;
+        int oldSize, newSize, capacity;
+        int maxSize = (ctxt->options & XML_PARSE_HUGE) ?
+                      XML_MAX_HUGE_LENGTH :
+                      XML_MAX_TEXT_LENGTH;
+
+        content = lastChild->content;
+        oldSize = ctxt->nodelen;
+        capacity = ctxt->nodemem;
+
+        /* Shouldn't happen */
+        if ((content == NULL) || (capacity <= 0)) {
+            xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR,
+                        "xmlSAX2Text: no content");
+            return;
+        }
 
-	    /*
-	     * The whole point of maintaining nodelen and nodemem,
-	     * xmlTextConcat is too costly, i.e. compute length,
-	     * reallocate a new buffer, move data, append ch. Here
-	     * We try to minimize realloc() uses and avoid copying
-	     * and recomputing length over and over.
-	     */
-	    if (lastChild->content == (xmlChar *)&(lastChild->properties)) {
-		lastChild->content = xmlStrdup(lastChild->content);
-		lastChild->properties = NULL;
-	    } else if ((ctxt->nodemem == ctxt->nodelen + 1) &&
-	               (xmlDictOwns(ctxt->dict, lastChild->content))) {
-		lastChild->content = xmlStrdup(lastChild->content);
-	    }
-	    if (lastChild->content == NULL) {
-		xmlSAX2ErrMemory(ctxt);
-		return;
- 	    }
-            if ((len > maxLength) || (ctxt->nodelen > maxLength - len)) {
-                xmlFatalErr(ctxt, XML_ERR_RESOURCE_LIMIT,
-                            "Text node too long, try XML_PARSE_HUGE");
-                xmlHaltParser(ctxt);
-                return;
-            }
-	    if (ctxt->nodelen + len >= ctxt->nodemem) {
-		xmlChar *newbuf;
-		int size;
-
-		size = ctxt->nodemem > INT_MAX - len ?
-                       INT_MAX :
-                       ctxt->nodemem + len;
-		size = size > INT_MAX / 2 ? INT_MAX : size * 2;
-                newbuf = (xmlChar *) xmlRealloc(lastChild->content,size);
-		if (newbuf == NULL) {
-		    xmlSAX2ErrMemory(ctxt);
-		    return;
-		}
-		ctxt->nodemem = size;
-		lastChild->content = newbuf;
-	    }
-	    memcpy(&lastChild->content[ctxt->nodelen], ch, len);
-	    ctxt->nodelen += len;
-	    lastChild->content[ctxt->nodelen] = 0;
-	} else if (coalesceText) {
-	    if (xmlTextConcat(lastChild, ch, len)) {
-		xmlSAX2ErrMemory(ctxt);
-	    }
-	    if (ctxt->node->children != NULL) {
-		ctxt->nodelen = xmlStrlen(lastChild->content);
-		ctxt->nodemem = ctxt->nodelen + 1;
-	    }
-	} else {
-	    /* Mixed content, first time */
-            if (type == XML_TEXT_NODE) {
-                lastChild = xmlSAX2TextNode(ctxt, ch, len);
-                if (lastChild != NULL)
-                    lastChild->doc = ctxt->myDoc;
-            } else
-                lastChild = xmlNewCDataBlock(ctxt->myDoc, ch, len);
-	    if (lastChild == NULL) {
-                xmlSAX2ErrMemory(ctxt);
+        if ((len > maxSize) || (oldSize > maxSize - len)) {
+            xmlFatalErr(ctxt, XML_ERR_RESOURCE_LIMIT,
+                        "Text node too long, try XML_PARSE_HUGE");
+            return;
+        }
+
+        newSize = oldSize + len;
+
+        if (newSize >= capacity) {
+            if (newSize <= 20)
+                capacity = 40;
+            else
+                capacity = newSize > INT_MAX / 2 ? INT_MAX : newSize * 2;
+
+            /*
+             * If the content was stored in properties or in
+             * the dictionary, don't realloc.
+             */
+            if ((content == (xmlChar *) &lastChild->properties) ||
+                ((ctxt->nodemem == oldSize + 1) &&
+                 (xmlDictOwns(ctxt->dict, content)))) {
+                xmlChar *newContent;
+
+                newContent = xmlMalloc(capacity);
+                if (newContent == NULL) {
+                    xmlSAX2ErrMemory(ctxt);
+                    return;
+                }
+
+                memcpy(newContent, content, oldSize);
+                lastChild->properties = NULL;
+                content = newContent;
             } else {
-		xmlSAX2AppendChild(ctxt, lastChild);
-		if (ctxt->node->children != NULL) {
-		    ctxt->nodelen = len;
-		    ctxt->nodemem = len + 1;
-		}
-	    }
-	}
+                content = xmlRealloc(content, capacity);
+                if (content == NULL) {
+                    xmlSAX2ErrMemory(ctxt);
+                    return;
+                }
+            }
+
+            ctxt->nodemem = capacity;
+            lastChild->content = content;
+        }
+
+        memcpy(&content[oldSize], ch, len);
+        content[newSize] = 0;
+        ctxt->nodelen = newSize;
     }
 
     if ((lastChild != NULL) &&
         (type == XML_TEXT_NODE) &&
-        (ctxt->linenumbers) &&
         (ctxt->input != NULL)) {
         if ((unsigned) ctxt->input->line < (unsigned) USHRT_MAX)
             lastChild->line = ctxt->input->line;
@@ -2597,12 +2595,11 @@ xmlSAX2Text(xmlParserCtxtPtr ctxt, const
 }
 
 /**
- * xmlSAX2Characters:
- * @ctx: the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some chars from the parser.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 void
 xmlSAX2Characters(void *ctx, const xmlChar *ch, int len)
@@ -2611,13 +2608,12 @@ xmlSAX2Characters(void *ctx, const xmlCh
 }
 
 /**
- * xmlSAX2IgnorableWhitespace:
- * @ctx: the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some ignorable whitespaces from the parser.
- * UNUSED: by default the DOM building will use xmlSAX2Characters
+ * UNUSED: by default the DOM building will use #xmlSAX2Characters
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 void
 xmlSAX2IgnorableWhitespace(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED)
@@ -2625,12 +2621,11 @@ xmlSAX2IgnorableWhitespace(void *ctx ATT
 }
 
 /**
- * xmlSAX2ProcessingInstruction:
- * @ctx: the user data (XML parser context)
- * @target:  the target name
- * @data: the PI data's
- *
  * A processing instruction has been parsed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param target  the target name
+ * @param data  the PI data's
  */
 void
 xmlSAX2ProcessingInstruction(void *ctx, const xmlChar *target,
@@ -2651,11 +2646,10 @@ xmlSAX2ProcessingInstruction(void *ctx,
 }
 
 /**
- * xmlSAX2Comment:
- * @ctx: the user data (XML parser context)
- * @value:  the xmlSAX2Comment content
+ * A #xmlSAX2Comment has been parsed.
  *
- * A xmlSAX2Comment has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param value  the #xmlSAX2Comment content
  */
 void
 xmlSAX2Comment(void *ctx, const xmlChar *value)
@@ -2675,12 +2669,11 @@ xmlSAX2Comment(void *ctx, const xmlChar
 }
 
 /**
- * xmlSAX2CDataBlock:
- * @ctx: the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
- *
  * called when a pcdata block has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param value  The pcdata content
+ * @param len  the block length
  */
 void
 xmlSAX2CDataBlock(void *ctx, const xmlChar *value, int len)
@@ -2690,14 +2683,12 @@ xmlSAX2CDataBlock(void *ctx, const xmlCh
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlSAXDefaultVersion:
- * @version:  the version, must be 2
- *
- * DEPRECATED: Use parser option XML_PARSE_SAX1.
- *
  * Has no effect.
  *
- * Returns 2 in case of success and -1 in case of error.
+ * @deprecated Use parser option XML_PARSE_SAX1.
+ *
+ * @param version  the version, must be 2
+ * @returns 2 in case of success and -1 in case of error.
  */
 int
 xmlSAXDefaultVersion(int version)
@@ -2709,13 +2700,11 @@ xmlSAXDefaultVersion(int version)
 #endif /* LIBXML_SAX1_ENABLED */
 
 /**
- * xmlSAXVersion:
- * @hdlr:  the SAX handler
- * @version:  the version, 1 or 2
- *
  * Initialize the default XML SAX handler according to the version
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param hdlr  the SAX handler
+ * @param version  the version, 1 or 2
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
 xmlSAXVersion(xmlSAXHandler *hdlr, int version)
@@ -2769,11 +2758,10 @@ xmlSAXVersion(xmlSAXHandler *hdlr, int v
 }
 
 /**
- * xmlSAX2InitDefaultSAXHandler:
- * @hdlr:  the SAX handler
- * @warning:  flag if non-zero sets the handler warning procedure
- *
  * Initialize the default XML SAX2 handler
+ *
+ * @param hdlr  the SAX handler
+ * @param warning  flag if non-zero sets the handler warning procedure
  */
 void
 xmlSAX2InitDefaultSAXHandler(xmlSAXHandler *hdlr, int warning)
@@ -2787,12 +2775,11 @@ xmlSAX2InitDefaultSAXHandler(xmlSAXHandl
 }
 
 /**
- * xmlDefaultSAXHandlerInit:
+ * Initialize the default SAX2 handler
  *
- * DEPRECATED: This function is a no-op. Call xmlInitParser to
+ * @deprecated This function is a no-op. Call #xmlInitParser to
  * initialize the library.
  *
- * Initialize the default SAX2 handler
  */
 void
 xmlDefaultSAXHandlerInit(void)
@@ -2802,10 +2789,9 @@ xmlDefaultSAXHandlerInit(void)
 #ifdef LIBXML_HTML_ENABLED
 
 /**
- * xmlSAX2InitHtmlDefaultSAXHandler:
- * @hdlr:  the SAX handler
- *
  * Initialize the default HTML SAX2 handler
+ *
+ * @param hdlr  the SAX handler
  */
 void
 xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr)
@@ -2845,9 +2831,7 @@ xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXH
 }
 
 /**
- * htmlDefaultSAXHandlerInit:
- *
- * DEPRECATED: This function is a no-op. Call xmlInitParser to
+ * @deprecated This function is a no-op. Call #xmlInitParser to
  * initialize the library.
  */
 void
diff -pruN 2.14.6+dfsg-0.1/VERSION 2.15.0+dfsg-0.3/VERSION
--- 2.14.6+dfsg-0.1/VERSION	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/VERSION	2025-09-15 11:55:59.000000000 +0000
@@ -1 +1 @@
-2.14.6
+2.15.0
diff -pruN 2.14.6+dfsg-0.1/buf.c 2.15.0+dfsg-0.3/buf.c
--- 2.14.6+dfsg-0.1/buf.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/buf.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,12 +4,12 @@
  * new buffer structures and entry points to simplify the maintenance
  * of libxml2 and ensure we keep good control over memory allocations
  * and stay 64 bits clean.
- * The new entry point use the xmlBufPtr opaque structure and
+ * The new entry point use the xmlBuf opaque structure and
  * xmlBuf...() counterparts to the old xmlBuf...() functions
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -27,8 +27,6 @@
 #define SIZE_MAX ((size_t) -1)
 #endif
 
-#define WITH_BUFFER_COMPAT
-
 #define BUF_FLAG_OOM        (1u << 0)
 #define BUF_FLAG_OVERFLOW   (1u << 1)
 #define BUF_FLAG_STATIC     (1u << 2)
@@ -37,8 +35,6 @@
 #define BUF_STATIC(buf) ((buf)->flags & BUF_FLAG_STATIC)
 
 /**
- * xmlBuf:
- *
  * A buffer structure. The base of the structure is somehow compatible
  * with struct _xmlBuffer to limit risks on application which accessed
  * directly the input->buf->buffer structures.
@@ -46,10 +42,6 @@
 
 struct _xmlBuf {
     xmlChar *content;		/* The buffer content UTF8 */
-#ifdef WITH_BUFFER_COMPAT
-    unsigned int compat_use;    /* for binary compatibility */
-    unsigned int compat_size;   /* for binary compatibility */
-#endif
     xmlChar *mem;		/* Start of the allocation */
     size_t use;		        /* The buffer size used */
     size_t size;		/* The buffer size, excluding terminating 0 */
@@ -57,41 +49,11 @@ struct _xmlBuf {
     unsigned flags;             /* flags */
 };
 
-#ifdef WITH_BUFFER_COMPAT
-/*
- * Macro for compatibility with xmlBuffer to be used after an xmlBuf
- * is updated. This makes sure the compat fields are updated too.
- */
-#define UPDATE_COMPAT(buf)				    \
-     if (buf->size < INT_MAX) buf->compat_size = buf->size; \
-     else buf->compat_size = INT_MAX;			    \
-     if (buf->use < INT_MAX) buf->compat_use = buf->use; \
-     else buf->compat_use = INT_MAX;
-
-/*
- * Macro for compatibility with xmlBuffer to be used in all the xmlBuf
- * entry points, it checks that the compat fields have not been modified
- * by direct call to xmlBuffer function from code compiled before 2.9.0 .
- */
-#define CHECK_COMPAT(buf)				    \
-     if (buf->size != (size_t) buf->compat_size)	    \
-         if (buf->compat_size < INT_MAX)		    \
-	     buf->size = buf->compat_size;		    \
-     if (buf->use != (size_t) buf->compat_use)		    \
-         if (buf->compat_use < INT_MAX)			    \
-	     buf->use = buf->compat_use;
-
-#else /* ! WITH_BUFFER_COMPAT */
-#define UPDATE_COMPAT(buf)
-#define CHECK_COMPAT(buf)
-#endif /* WITH_BUFFER_COMPAT */
-
 /**
- * xmlBufMemoryError:
- * @extra:  extra information
- *
  * Handle an out of memory condition
  * To be improved...
+ *
+ * @param buf  the buffer
  */
 static void
 xmlBufMemoryError(xmlBufPtr buf)
@@ -101,11 +63,10 @@ xmlBufMemoryError(xmlBufPtr buf)
 }
 
 /**
- * xmlBufOverflowError:
- * @extra:  extra information
- *
  * Handle a buffer overflow error
  * To be improved...
+ *
+ * @param buf  the buffer
  */
 static void
 xmlBufOverflowError(xmlBufPtr buf)
@@ -115,13 +76,12 @@ xmlBufOverflowError(xmlBufPtr buf)
 }
 
 /**
- * xmlBufCreate:
- * @size: initial size of buffer
+ * Create a buffer.
  *
- * routine to create an XML buffer.
- * returns the new structure.
+ * @param size  initial buffer size
+ * @returns  the new structure
  */
-xmlBufPtr
+xmlBuf *
 xmlBufCreate(size_t size) {
     xmlBufPtr ret;
 
@@ -145,26 +105,23 @@ xmlBufCreate(size_t size) {
     ret->content = ret->mem;
     ret->content[0] = 0;
 
-    UPDATE_COMPAT(ret);
     return(ret);
 }
 
 /**
- * xmlBufCreateMem:
- * @mem:  a memory area
- * @size:  size of the buffer excluding terminator
- * @isStatic:  whether the memory area is static
- *
  * Create a buffer initialized with memory.
  *
- * If @isStatic is set, uses the memory area directly as backing store.
+ * If `isStatic` is set, uses the memory area directly as backing store.
  * The memory must be zero-terminated and not be modified for the
  * lifetime of the buffer. A static buffer can't be grown, modified or
  * detached, but it can be shrunk.
  *
- * Returns a new buffer.
+ * @param mem  a memory area
+ * @param size  size of the buffer excluding terminator
+ * @param isStatic  whether the memory area is static
+ * @returns  a new buffer.
  */
-xmlBufPtr
+xmlBuf *
 xmlBufCreateMem(const xmlChar *mem, size_t size, int isStatic) {
     xmlBufPtr ret;
 
@@ -199,22 +156,22 @@ xmlBufCreateMem(const xmlChar *mem, size
     ret->maxSize = SIZE_MAX - 1;
     ret->content = ret->mem;
 
-    UPDATE_COMPAT(ret);
     return(ret);
 }
 
 /**
- * xmlBufDetach:
- * @buf:  the buffer
+ * Extract buffer content.
+ *
+ * Return the content of the buffer as an `xmlChar` string,
+ * clearing the buffer.
  *
- * Remove the string contained in a buffer and give it back to the
- * caller. The buffer is reset to an empty content.
- * This doesn't work with immutable buffers as they can't be reset.
+ * This doesn't work with static buffers as they can't be reset.
  *
- * Returns the previous string contained by the buffer.
+ * @param buf  the buffer
+ * @returns  the buffer content
  */
 xmlChar *
-xmlBufDetach(xmlBufPtr buf) {
+xmlBufDetach(xmlBuf *buf) {
     xmlChar *ret;
 
     if ((buf == NULL) || (BUF_ERROR(buf)) || (BUF_STATIC(buf)))
@@ -232,19 +189,16 @@ xmlBufDetach(xmlBufPtr buf) {
     buf->size = 0;
     buf->use = 0;
 
-    UPDATE_COMPAT(buf);
     return ret;
 }
 
 /**
- * xmlBufFree:
- * @buf:  the buffer to free
+ * Free a buffer.
  *
- * Frees an XML buffer. It frees both the content and the structure which
- * encapsulate it.
+ * @param buf  the buffer to free
  */
 void
-xmlBufFree(xmlBufPtr buf) {
+xmlBufFree(xmlBuf *buf) {
     if (buf == NULL)
 	return;
 
@@ -254,48 +208,42 @@ xmlBufFree(xmlBufPtr buf) {
 }
 
 /**
- * xmlBufEmpty:
- * @buf:  the buffer
+ * Empty a buffer.
  *
- * empty a buffer.
+ * @param buf  the buffer
  */
 void
-xmlBufEmpty(xmlBufPtr buf) {
+xmlBufEmpty(xmlBuf *buf) {
     if ((buf == NULL) || (BUF_ERROR(buf)) || (BUF_STATIC(buf)))
         return;
     if (buf->mem == NULL)
         return;
-    CHECK_COMPAT(buf)
 
     buf->use = 0;
     buf->size += buf->content - buf->mem;
     buf->content = buf->mem;
     buf->content[0] = 0;
-
-    UPDATE_COMPAT(buf)
 }
 
 /**
- * xmlBufShrink:
- * @buf:  the buffer to dump
- * @len:  the number of xmlChar to remove
- *
- * DEPRECATED: Don't use.
+ * Discard bytes at the start of a buffer.
  *
- * Remove the beginning of an XML buffer.
- * NOTE that this routine behaviour differs from xmlBufferShrink()
+ * NOTE that the return value differs from #xmlBufferShrink
  * as it will return 0 on error instead of -1 due to size_t being
  * used as the return type.
  *
- * Returns the number of byte removed or 0 in case of failure
+ * @deprecated Internal function, don't use.
+ *
+ * @param buf  the buffer
+ * @param len  the number of bytes to remove
+ * @returns  the number of bytes removed or 0 in case of failure
  */
 size_t
-xmlBufShrink(xmlBufPtr buf, size_t len) {
+xmlBufShrink(xmlBuf *buf, size_t len) {
     if ((buf == NULL) || (BUF_ERROR(buf)))
         return(0);
     if (len == 0)
         return(0);
-    CHECK_COMPAT(buf)
 
     if (len > buf->use)
         return(0);
@@ -304,18 +252,20 @@ xmlBufShrink(xmlBufPtr buf, size_t len)
     buf->content += len;
     buf->size -= len;
 
-    UPDATE_COMPAT(buf)
     return(len);
 }
 
 /**
- * xmlBufGrowInternal:
- * @buf:  the buffer
- * @len:  the minimum free size to allocate
+ * Grow a buffer.
  *
- * Grow the available space of an XML buffer, @len is the target value
+ * Increase the capacity of a buffer. `len` is the amount of
+ * free space required after the current end of the buffer.
  *
- * Returns 0 on success, -1 in case of error
+ * Assumes `len > buf->size - buf->use`.
+ *
+ * @param buf  the buffer
+ * @param len  number of extra bytes to allocate
+ * @returns  0 on success, -1 in case of error
  */
 static int
 xmlBufGrowInternal(xmlBufPtr buf, size_t len) {
@@ -376,20 +326,19 @@ xmlBufGrowInternal(xmlBufPtr buf, size_t
 }
 
 /**
- * xmlBufGrow:
- * @buf:  the buffer
- * @len:  the minimum free size to allocate
+ * Grow a buffer.
  *
- * Grow the available space of an XML buffer, @len is the target value
- * This is been kept compatible with xmlBufferGrow() as much as possible
+ * Increase the capacity of a buffer. `len` is the amount of
+ * free space required after the current end of the buffer.
  *
- * Returns 0 on succes, -1 in case of error
+ * @param buf  the buffer
+ * @param len  number of extra bytes to allocate
+ * @returns  0 on success, -1 in case of error
  */
 int
-xmlBufGrow(xmlBufPtr buf, size_t len) {
+xmlBufGrow(xmlBuf *buf, size_t len) {
     if ((buf == NULL) || (BUF_ERROR(buf)) || (BUF_STATIC(buf)))
         return(-1);
-    CHECK_COMPAT(buf)
 
     if (len <= buf->size - buf->use)
         return(0);
@@ -397,19 +346,15 @@ xmlBufGrow(xmlBufPtr buf, size_t len) {
     if (xmlBufGrowInternal(buf, len) < 0)
         return(-1);
 
-    UPDATE_COMPAT(buf)
     return(0);
 }
 
 /**
- * xmlBufContent:
- * @buf:  the buffer
- *
- * Function to extract the content of a buffer
+ * Get pointer into buffer content.
  *
- * Returns the internal content
+ * @param buf  the buffer
+ * @returns  the internal content or NULL in case of error
  */
-
 xmlChar *
 xmlBufContent(const xmlBuf *buf)
 {
@@ -420,127 +365,104 @@ xmlBufContent(const xmlBuf *buf)
 }
 
 /**
- * xmlBufEnd:
- * @buf:  the buffer
+ * Return a pointer to the end of the buffer content.
  *
- * Function to extract the end of the content of a buffer
- *
- * Returns the end of the internal content or NULL in case of error
+ * @param buf  the buffer
+ * @returns  the end of the internal content or NULL in case of error
  */
-
 xmlChar *
-xmlBufEnd(xmlBufPtr buf)
+xmlBufEnd(xmlBuf *buf)
 {
     if ((!buf) || (BUF_ERROR(buf)))
         return NULL;
-    CHECK_COMPAT(buf)
 
     return(&buf->content[buf->use]);
 }
 
 /**
- * xmlBufAddLen:
- * @buf:  the buffer
- * @len:  the size which were added at the end
- *
- * Sometime data may be added at the end of the buffer without
- * using the xmlBuf APIs that is used to expand the used space
- * and set the zero terminating at the end of the buffer
+ * Increase the size of the buffer content.
+ *
+ * If data was appended by writing directly into the content
+ * array, this function increases the buffer size.
  *
- * Returns -1 in case of error and 0 otherwise
+ * @param buf  the buffer
+ * @param len  number of bytes to add
+ * @returns  0 on success, -1 in case of error
  */
 int
-xmlBufAddLen(xmlBufPtr buf, size_t len) {
+xmlBufAddLen(xmlBuf *buf, size_t len) {
     if ((buf == NULL) || (BUF_ERROR(buf)) || (BUF_STATIC(buf)))
         return(-1);
-    CHECK_COMPAT(buf)
     if (len > buf->size - buf->use)
         return(-1);
     buf->use += len;
     buf->content[buf->use] = 0;
-    UPDATE_COMPAT(buf)
     return(0);
 }
 
 /**
- * xmlBufUse:
- * @buf:  the buffer
+ * Return the size of the buffer content.
  *
- * Function to get the length of a buffer
- *
- * Returns the length of data in the internal content
+ * @param buf  the buffer
+ * @returns  size of buffer content in bytes
  */
-
 size_t
-xmlBufUse(const xmlBufPtr buf)
+xmlBufUse(xmlBuf *buf)
 {
     if ((!buf) || (BUF_ERROR(buf)))
         return 0;
-    CHECK_COMPAT(buf)
 
     return(buf->use);
 }
 
 /**
- * xmlBufAvail:
- * @buf:  the buffer
- *
- * Function to find how much free space is allocated but not
- * used in the buffer. It reserves one byte for the NUL
- * terminator character that is usually needed, so there is
- * no need to subtract 1 from the result anymore.
+ * Return the size of available space at the end of a buffer.
  *
- * Returns the amount, or 0 if none or if an error occurred.
+ * @param buf  the buffer
+ * @returns  available space in bytes
  */
-
 size_t
-xmlBufAvail(const xmlBufPtr buf)
+xmlBufAvail(xmlBuf *buf)
 {
     if ((!buf) || (BUF_ERROR(buf)))
         return 0;
-    CHECK_COMPAT(buf)
 
     return(buf->size - buf->use);
 }
 
 /**
- * xmlBufIsEmpty:
- * @buf:  the buffer
- *
  * Tell if a buffer is empty
  *
- * Returns 0 if no, 1 if yes and -1 in case of error
+ * @param buf  the buffer
+ * @returns  0 if no, 1 if yes and -1 in case of error
  */
 int
-xmlBufIsEmpty(const xmlBufPtr buf)
+xmlBufIsEmpty(xmlBuf *buf)
 {
     if ((!buf) || (BUF_ERROR(buf)))
         return(-1);
-    CHECK_COMPAT(buf)
 
     return(buf->use == 0);
 }
 
 /**
- * xmlBufAdd:
- * @buf:  the buffer to dump
- * @str:  the #xmlChar string
- * @len:  the number of #xmlChar to add
+ * Append data to a buffer.
  *
- * Add a string range to an XML buffer. if len == -1, the length of
- * str is recomputed.
+ * If `len` is -1, `str` is expected to be zero-terminated.
  *
- * Returns 0 if successful, -1 in case of error.
+ * @param buf  the buffer
+ * @param str  bytes to add
+ * @param len  number of bytes
+ * @returns  0 if successful, -1 in case of error.
  */
 int
-xmlBufAdd(xmlBufPtr buf, const xmlChar *str, size_t len) {
+xmlBufAdd(xmlBuf *buf, const xmlChar *str, size_t len) {
     if ((buf == NULL) || (BUF_ERROR(buf)) || (BUF_STATIC(buf)))
         return(-1);
     if (len == 0)
         return(0);
     if (str == NULL)
 	return(-1);
-    CHECK_COMPAT(buf)
 
     if (len > buf->size - buf->use) {
         if (xmlBufGrowInternal(buf, len) < 0)
@@ -551,40 +473,34 @@ xmlBufAdd(xmlBufPtr buf, const xmlChar *
     buf->use += len;
     buf->content[buf->use] = 0;
 
-    UPDATE_COMPAT(buf)
     return(0);
 }
 
 /**
- * xmlBufCat:
- * @buf:  the buffer to add to
- * @str:  the #xmlChar string (optional)
- *
- * Append a zero terminated string to an XML buffer.
+ * Append a zero-terminated string to a buffer.
  *
- * Returns 0 successful, a positive error code number otherwise
- *         and -1 in case of internal or API error.
+ * @param buf  the buffer
+ * @param str  string (optional)
+ * @returns  0 if successful, -1 in case of error.
  */
 int
-xmlBufCat(xmlBufPtr buf, const xmlChar *str) {
+xmlBufCat(xmlBuf *buf, const xmlChar *str) {
     if (str == NULL)
         return(0);
     return(xmlBufAdd(buf, str, strlen((const char *) str)));
 }
 
 /**
- * xmlBufFromBuffer:
- * @buffer: incoming old buffer to convert to a new one
- *
  * Helper routine to switch from the old buffer structures in use
- * in various APIs. It creates a wrapper xmlBufPtr which will be
- * used for internal processing until the xmlBufBackToBuffer() is
+ * in various APIs. It creates a wrapper xmlBuf which will be
+ * used for internal processing until xmlBufBackToBuffer is
  * issued.
  *
- * Returns a new xmlBufPtr unless the call failed and NULL is returned
+ * @param buffer  incoming old buffer to convert to a new one
+ * @returns  a new xmlBuf unless the call failed and NULL is returned
  */
-xmlBufPtr
-xmlBufFromBuffer(xmlBufferPtr buffer) {
+xmlBuf *
+xmlBufFromBuffer(xmlBuffer *buffer) {
     xmlBufPtr ret;
 
     if (buffer == NULL)
@@ -615,25 +531,22 @@ xmlBufFromBuffer(xmlBufferPtr buffer) {
             ret->mem = buffer->content;
     }
 
-    UPDATE_COMPAT(ret);
     return(ret);
 }
 
 /**
- * xmlBufBackToBuffer:
- * @buf: new buffer wrapping the old one
- * @ret: old buffer
- *
  * Function to be called once internal processing had been done to
  * update back the buffer provided by the user. This can lead to
  * a failure in case the size accumulated in the xmlBuf is larger
  * than what an xmlBuffer can support on 64 bits (INT_MAX)
- * The xmlBufPtr @buf wrapper is deallocated by this call in any case.
+ * The xmlBuf `buf` wrapper is deallocated by this call in any case.
  *
- * Returns 0 on success, -1 on error.
+ * @param buf  new buffer wrapping the old one
+ * @param ret  old buffer
+ * @returns  0 on success, -1 on error.
  */
 int
-xmlBufBackToBuffer(xmlBufPtr buf, xmlBufferPtr ret) {
+xmlBufBackToBuffer(xmlBuf *buf, xmlBuffer *ret) {
     if ((buf == NULL) || (ret == NULL))
         return(-1);
 
@@ -662,35 +575,36 @@ xmlBufBackToBuffer(xmlBufPtr buf, xmlBuf
 }
 
 /**
- * xmlBufResetInput:
- * @buf: an xmlBufPtr
- * @input: an xmlParserInputPtr
+ * Update pointers in the parser input struct.
  *
- * Update the input to use the current set of pointers from the buffer.
+ * Update `base`, `cur` and `end` to point into the buffer.
+ * This is required after the content array was reallocated.
  *
- * Returns -1 in case of error, 0 otherwise
+ * @param buf  a buffer
+ * @param input  a parser input
+ * @returns  0 on success, -1 in case of error.
  */
 int
-xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input) {
+xmlBufResetInput(xmlBuf *buf, xmlParserInput *input) {
     return(xmlBufUpdateInput(buf, input, 0));
 }
 
 /**
- * xmlBufUpdateInput:
- * @buf: an xmlBufPtr
- * @input: an xmlParserInputPtr
- * @pos: the cur value relative to the beginning of the buffer
+ * Update pointers in the parser input struct.
  *
- * Update the input to use the base and cur relative to the buffer
- * after a possible reallocation of its content
+ * Update `base`, `cur` and `end` to point into the buffer.
+ * This is required after the content array was reallocated.
  *
- * Returns -1 in case of error, 0 otherwise
+ * @param buf  a buffer
+ * @param input  a parser input
+ * @param pos  the `cur` position relative to the start of the
+ *             buffer
+ * @returns  0 on success, -1 in case of error.
  */
 int
-xmlBufUpdateInput(xmlBufPtr buf, xmlParserInputPtr input, size_t pos) {
+xmlBufUpdateInput(xmlBuf *buf, xmlParserInput *input, size_t pos) {
     if ((buf == NULL) || (input == NULL))
         return(-1);
-    CHECK_COMPAT(buf)
     input->base = buf->content;
     input->cur = input->base + pos;
     input->end = &buf->content[buf->use];
@@ -704,34 +618,22 @@ xmlBufUpdateInput(xmlBufPtr buf, xmlPars
  ************************************************************************/
 
 /**
- * xmlSetBufferAllocationScheme:
- * @scheme:  allocation method to use
+ * Set the buffer allocation scheme.
  *
- * DEPRECATED: Use xmlBufferSetAllocationScheme.
+ * @deprecated No-op, allocation schemes were removed.
  *
- * 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
+ * @param scheme  allocation method to use
  */
 void
 xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme ATTRIBUTE_UNUSED) {
 }
 
 /**
- * xmlGetBufferAllocationScheme:
- *
- * DEPRECATED: Use xmlBufferSetAllocationScheme.
+ * Get the buffer allocation scheme.
  *
- * Types are
- * XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down
- * XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed,
- *                             improves performance
- * XML_BUFFER_ALLOC_HYBRID - use exact sizes on small strings to keep memory usage tight
- *                            in normal usage, and doubleit on large strings to avoid
- *                            pathological performance.
+ * @deprecated Allocation schemes were removed.
  *
- * Returns the current allocation scheme
+ * @returns  the current allocation scheme
  */
 xmlBufferAllocationScheme
 xmlGetBufferAllocationScheme(void) {
@@ -739,12 +641,13 @@ xmlGetBufferAllocationScheme(void) {
 }
 
 /**
- * xmlBufferCreate:
+ * Create a buffer.
  *
- * routine to create an XML buffer.
- * returns the new structure.
+ * The default initial size is 256.
+ *
+ * @returns  the new structure.
  */
-xmlBufferPtr
+xmlBuffer *
 xmlBufferCreate(void) {
     xmlBufferPtr ret;
 
@@ -767,13 +670,12 @@ xmlBufferCreate(void) {
 }
 
 /**
- * xmlBufferCreateSize:
- * @size: initial size of buffer
+ * Create a buffer with an initial size.
  *
- * routine to create an XML buffer.
- * returns the new structure.
+ * @param size  initial size of buffer
+ * @returns  the new structure.
  */
-xmlBufferPtr
+xmlBuffer *
 xmlBufferCreateSize(size_t size) {
     xmlBufferPtr ret;
 
@@ -805,17 +707,18 @@ xmlBufferCreateSize(size_t size) {
 }
 
 /**
- * xmlBufferDetach:
- * @buf:  the buffer
+ * Extract buffer content.
+ *
+ * Return the contents of the buffer as an `xmlChar` string,
+ * clearing the buffer.
  *
- * Remove the string contained in a buffer and gie it back to the
- * caller. The buffer is reset to an empty content.
- * This doesn't work with immutable buffers as they can't be reset.
+ * This doesn't work with static buffers as they can't be reset.
  *
- * Returns the previous string contained by the buffer.
+ * @param buf  the buffer
+ * @returns  the buffer content
  */
 xmlChar *
-xmlBufferDetach(xmlBufferPtr buf) {
+xmlBufferDetach(xmlBuffer *buf) {
     xmlChar *ret;
 
     if (buf == NULL)
@@ -838,13 +741,17 @@ xmlBufferDetach(xmlBufferPtr buf) {
 }
 
 /**
- * xmlBufferCreateStatic:
- * @mem: the memory area
- * @size:  the size in byte
+ * Create a static buffer.
+ *
+ * The memory must be zero-terminated and not be modified for the
+ * lifetime of the buffer. A static buffer can't be grown, modified or
+ * detached, but it can be shrunk.
  *
- * Returns an XML buffer initialized with bytes.
+ * @param mem  the memory area
+ * @param size  the size in bytes
+ * @returns  a new buffer
  */
-xmlBufferPtr
+xmlBuffer *
 xmlBufferCreateStatic(void *mem, size_t size) {
     xmlBufferPtr buf = xmlBufferCreateSize(size);
 
@@ -853,29 +760,26 @@ xmlBufferCreateStatic(void *mem, size_t
 }
 
 /**
- * xmlBufferSetAllocationScheme:
- * @buf:  the buffer to tune
- * @scheme:  allocation scheme to use
- *
- * Sets the allocation scheme for this buffer.
+ * Set the allocation scheme of a buffer.
  *
  * For libxml2 before 2.14, it is recommended to set this to
  * XML_BUFFER_ALLOC_DOUBLE_IT. Has no effect on 2.14 or later.
+ *
+ * @param buf  the buffer to tune
+ * @param scheme  allocation scheme to use
  */
 void
-xmlBufferSetAllocationScheme(xmlBufferPtr buf ATTRIBUTE_UNUSED,
+xmlBufferSetAllocationScheme(xmlBuffer *buf ATTRIBUTE_UNUSED,
                              xmlBufferAllocationScheme scheme ATTRIBUTE_UNUSED) {
 }
 
 /**
- * xmlBufferFree:
- * @buf:  the buffer to free
+ * Free a buffer.
  *
- * Frees an XML buffer. It frees both the content and the structure which
- * encapsulate it.
+ * @param buf  the buffer to free
  */
 void
-xmlBufferFree(xmlBufferPtr buf) {
+xmlBufferFree(xmlBuffer *buf) {
     if (buf == NULL)
 	return;
 
@@ -888,13 +792,12 @@ xmlBufferFree(xmlBufferPtr buf) {
 }
 
 /**
- * xmlBufferEmpty:
- * @buf:  the buffer
+ * Empty a buffer.
  *
- * empty a buffer.
+ * @param buf  the buffer
  */
 void
-xmlBufferEmpty(xmlBufferPtr buf) {
+xmlBufferEmpty(xmlBuffer *buf) {
     if (buf == NULL)
         return;
     if (buf->content == NULL)
@@ -912,18 +815,16 @@ xmlBufferEmpty(xmlBufferPtr buf) {
 }
 
 /**
- * xmlBufferShrink:
- * @buf:  the buffer to dump
- * @len:  the number of xmlChar to remove
- *
- * DEPRECATED: Don't use.
+ * Discard bytes at the start of a buffer.
  *
- * Remove the beginning of an XML buffer.
+ * @deprecated Internal function, don't use.
  *
- * Returns the number of #xmlChar removed, or -1 in case of failure.
+ * @param buf  the buffer
+ * @param len  the number of bytes to remove
+ * @returns  the number of bytes removed, or -1 in case of failure.
  */
 int
-xmlBufferShrink(xmlBufferPtr buf, unsigned int len) {
+xmlBufferShrink(xmlBuffer *buf, unsigned int len) {
     if (buf == NULL)
         return(-1);
     if (len == 0)
@@ -944,18 +845,16 @@ xmlBufferShrink(xmlBufferPtr buf, unsign
 }
 
 /**
- * xmlBufferGrow:
- * @buf:  the buffer
- * @len:  the minimum free size to allocate
+ * Grow a buffer.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Internal function, don't use.
  *
- * Grow the available space of an XML buffer.
- *
- * Returns the new available space or -1 in case of error
+ * @param buf  the buffer
+ * @param len  number of extra bytes to allocate
+ * @returns  the new available space or -1 in case of error
  */
 int
-xmlBufferGrow(xmlBufferPtr buf, unsigned int len) {
+xmlBufferGrow(xmlBuffer *buf, unsigned int len) {
     unsigned int size;
     xmlChar *newbuf;
 
@@ -1001,15 +900,14 @@ xmlBufferGrow(xmlBufferPtr buf, unsigned
 }
 
 /**
- * xmlBufferDump:
- * @file:  the file output
- * @buf:  the buffer to dump
+ * Dump a buffer to a `FILE`.
  *
- * Dumps an XML buffer to  a FILE *.
- * Returns the number of #xmlChar written
+ * @param file  the output file
+ * @param buf  the buffer
+ * @returns  the number of bytes written
  */
 int
-xmlBufferDump(FILE *file, xmlBufferPtr buf) {
+xmlBufferDump(FILE *file, xmlBuffer *buf) {
     size_t ret;
 
     if (buf == NULL)
@@ -1023,14 +921,11 @@ xmlBufferDump(FILE *file, xmlBufferPtr b
 }
 
 /**
- * xmlBufferContent:
- * @buf:  the buffer
- *
- * Function to extract the content of a buffer
+ * Get pointer into buffer content.
  *
- * Returns the internal content
+ * @param buf  the buffer
+ * @returns  the internal content
  */
-
 const xmlChar *
 xmlBufferContent(const xmlBuffer *buf)
 {
@@ -1041,14 +936,11 @@ xmlBufferContent(const xmlBuffer *buf)
 }
 
 /**
- * xmlBufferLength:
- * @buf:  the buffer
+ * Get the size of the buffer content.
  *
- * Function to get the length of a buffer
- *
- * Returns the length of data in the internal content
+ * @param buf  the buffer
+ * @returns  the size of the buffer content in bytes
  */
-
 int
 xmlBufferLength(const xmlBuffer *buf)
 {
@@ -1059,18 +951,16 @@ xmlBufferLength(const xmlBuffer *buf)
 }
 
 /**
- * xmlBufferResize:
- * @buf:  the buffer to resize
- * @size:  the desired size
+ * Resize a buffer to a minimum size.
  *
- * DEPRECATED: Don't use.
-
- * Resize a buffer to accommodate minimum size of @size.
+ * @deprecated Internal function, don't use.
  *
- * Returns  0 in case of problems, 1 otherwise
+ * @param buf  the buffer to resize
+ * @param size  the desired size
+ * @returns  1 on succes, 0 in case of error
  */
 int
-xmlBufferResize(xmlBufferPtr buf, unsigned int size)
+xmlBufferResize(xmlBuffer *buf, unsigned int size)
 {
     int res;
 
@@ -1084,18 +974,17 @@ xmlBufferResize(xmlBufferPtr buf, unsign
 }
 
 /**
- * xmlBufferAdd:
- * @buf:  the buffer to dump
- * @str:  the #xmlChar string
- * @len:  the number of #xmlChar to add
+ * Append bytes to a buffer.
  *
- * Add a string range to an XML buffer. if len == -1, the length of
- * str is recomputed.
+ * If `len` is -1, `str` is assumed to be zero-terminated.
  *
- * Returns a xmlParserErrors code.
+ * @param buf  the buffer
+ * @param str  bytes to add 
+ * @param len  number of bytes
+ * @returns  an xmlParserErrors code.
  */
 int
-xmlBufferAdd(xmlBufferPtr buf, const xmlChar *str, int len) {
+xmlBufferAdd(xmlBuffer *buf, const xmlChar *str, int len) {
     if ((buf == NULL) || (str == NULL))
 	return(XML_ERR_ARGUMENT);
     if (len < 0)
@@ -1116,18 +1005,17 @@ xmlBufferAdd(xmlBufferPtr buf, const xml
 }
 
 /**
- * xmlBufferAddHead:
- * @buf:  the buffer
- * @str:  the #xmlChar string
- * @len:  the number of #xmlChar to add
+ * Prepend bytes to a buffer.
  *
- * Add a string range to the beginning of an XML buffer.
- * if len == -1, the length of @str is recomputed.
+ * If `len` is -1, `str` is assumed to be zero-terminated.
  *
- * Returns a xmlParserErrors code.
+ * @param buf  the buffer
+ * @param str  bytes to prepend
+ * @param len  number of bytes
+ * @returns  an xmlParserErrors code.
  */
 int
-xmlBufferAddHead(xmlBufferPtr buf, const xmlChar *str, int len) {
+xmlBufferAddHead(xmlBuffer *buf, const xmlChar *str, int len) {
     unsigned start = 0;
 
     if ((buf == NULL) || (str == NULL))
@@ -1172,73 +1060,65 @@ xmlBufferAddHead(xmlBufferPtr buf, const
 }
 
 /**
- * xmlBufferCat:
- * @buf:  the buffer to add to
- * @str:  the #xmlChar string
+ * Append a zero-terminated string to a buffer.
  *
- * Append a zero terminated string to an XML buffer.
- *
- * Returns 0 successful, a positive error code number otherwise
- *         and -1 in case of internal or API error.
+ * @param buf  the buffer
+ * @param str  string to add
+ * @returns  an xmlParserErrors code.
  */
 int
-xmlBufferCat(xmlBufferPtr buf, const xmlChar *str) {
+xmlBufferCat(xmlBuffer *buf, const xmlChar *str) {
     return(xmlBufferAdd(buf, str, -1));
 }
 
 /**
- * xmlBufferCCat:
- * @buf:  the buffer to dump
- * @str:  the C char string
- *
- * Append a zero terminated C string to an XML buffer.
+ * Append a zero-terminated C string to a buffer.
  *
- * Returns 0 successful, a positive error code number otherwise
- *         and -1 in case of internal or API error.
+ * @param buf  the buffer
+ * @param str  string to add
+ * @returns  an xmlParserErrors code.
  */
 int
-xmlBufferCCat(xmlBufferPtr buf, const char *str) {
+xmlBufferCCat(xmlBuffer *buf, const char *str) {
     return(xmlBufferAdd(buf, (const xmlChar *) str, -1));
 }
 
 /**
- * xmlBufferWriteCHAR:
- * @buf:  the XML buffer
- * @string:  the string to add
+ * Append a zero-terminated `xmlChar` string to a buffer.
  *
- * routine which manages and grows an output buffer. This one adds
- * xmlChars at the end of the buffer.
+ * @param buf  the XML buffer
+ * @param string  the string to add
  */
 void
-xmlBufferWriteCHAR(xmlBufferPtr buf, const xmlChar *string) {
+xmlBufferWriteCHAR(xmlBuffer *buf, const xmlChar *string) {
     xmlBufferAdd(buf, string, -1);
 }
 
 /**
- * xmlBufferWriteChar:
- * @buf:  the XML buffer output
- * @string:  the string to add
+ * Append a zero-terminated C string to a buffer.
+ *
+ * Same as #xmlBufferCCat.
  *
- * routine which manage and grows an output buffer. This one add
- * C chars at the end of the array.
+ * @param buf  the buffer
+ * @param string  the string to add
  */
 void
-xmlBufferWriteChar(xmlBufferPtr buf, const char *string) {
+xmlBufferWriteChar(xmlBuffer *buf, const char *string) {
     xmlBufferAdd(buf, (const xmlChar *) string, -1);
 }
 
-
 /**
- * xmlBufferWriteQuotedString:
- * @buf:  the XML buffer output
- * @string:  the string to add
- *
- * 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
+ * Append a quoted string to a buffer.
+ *
+ * Append a string quoted with single or double quotes. If the
+ * string contains both single and double quotes, double quotes
+ * are escaped with `&quot;`.
+ *
+ * @param buf  the buffer
+ * @param string  the string to add
  */
 void
-xmlBufferWriteQuotedString(xmlBufferPtr buf, const xmlChar *string) {
+xmlBufferWriteQuotedString(xmlBuffer *buf, const xmlChar *string) {
     const xmlChar *cur, *base;
     if (buf == NULL)
         return;
diff -pruN 2.14.6+dfsg-0.1/c14n.c 2.15.0+dfsg-0.3/c14n.c
--- 2.14.6+dfsg-0.1/c14n.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/c14n.c	2025-09-15 11:55:59.000000000 +0000
@@ -7,7 +7,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Author: Aleksey Sanin <aleksey@aleksey.com>
+ * Author: Aleksey Sanin
  */
 #define IN_LIBXML
 #include "libxml.h"
@@ -129,10 +129,9 @@ static xmlChar *xmlC11NNormalizeString(c
  ************************************************************************/
 
 /**
- * xmlC14NErrMemory:
- * @extra:  extra information
- *
  * Handle a redefinition of memory error
+ *
+ * @param ctxt  a C14N evaluation context
  */
 static void
 xmlC14NErrMemory(xmlC14NCtxPtr ctxt)
@@ -164,10 +163,9 @@ xmlC14NErrFull(xmlC14NCtxPtr ctxt, xmlNo
 }
 
 /**
- * xmlC14NErrParam:
- * @extra:  extra information
- *
  * Handle a param error
+ *
+ * @param ctxt  a C14N evaluation context
  */
 static void
 xmlC14NErrParam(xmlC14NCtxPtr ctxt)
@@ -177,10 +175,11 @@ xmlC14NErrParam(xmlC14NCtxPtr ctxt)
 }
 
 /**
- * xmlC14NErrInvalidNode:
- * @extra:  extra information
- *
  * Handle an invalid node error
+ *
+ * @param ctxt  a C14N evaluation context
+ * @param node_type  node type
+ * @param extra  extra information
  */
 static void
 xmlC14NErrInvalidNode(xmlC14NCtxPtr ctxt, const char *node_type,
@@ -191,10 +190,11 @@ xmlC14NErrInvalidNode(xmlC14NCtxPtr ctxt
 }
 
 /**
- * xmlC14NErrUnknownNode:
- * @extra:  extra information
- *
  * Handle an unknown node error
+ *
+ * @param ctxt  a C14N evaluation context
+ * @param node_type  node type
+ * @param extra  extra information
  */
 static void
 xmlC14NErrUnknownNode(xmlC14NCtxPtr ctxt, int node_type, const char *extra)
@@ -204,10 +204,10 @@ xmlC14NErrUnknownNode(xmlC14NCtxPtr ctxt
 }
 
 /**
- * xmlC14NErrRelativeNamespace:
- * @extra:  extra information
- *
  * Handle a relative namespace error
+ *
+ * @param ctxt  a C14N evaluation context
+ * @param ns_uri  namespace URI
  */
 static void
 xmlC14NErrRelativeNamespace(xmlC14NCtxPtr ctxt, const char *ns_uri)
@@ -219,14 +219,12 @@ xmlC14NErrRelativeNamespace(xmlC14NCtxPt
 
 
 /**
- * xmlC14NErr:
- * @ctxt:  a C14N evaluation context
- * @node:  the context node
- * @error:  the error code
- * @msg:  the message
- * @extra:  extra information
- *
  * Handle an error
+ *
+ * @param ctxt  a C14N evaluation context
+ * @param node  the context node
+ * @param error  the error code
+ * @param msg  the message
  */
 static void
 xmlC14NErr(xmlC14NCtxPtr ctxt, xmlNodePtr node, int error,
@@ -381,13 +379,11 @@ xmlC14NStrEqual(const xmlChar *str1, con
 }
 
 /**
- * xmlC14NVisibleNsStackFind:
- * @ctx:		the C14N context
- * @ns:			the namespace to check
- *
  * Checks whether the given namespace was already rendered or not
  *
- * Returns 1 if we already wrote this namespace or 0 otherwise
+ * @param cur  		the visible stack
+ * @param ns  			the namespace to check
+ * @returns 1 if we already wrote this namespace or 0 otherwise
  */
 static int
 xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns)
@@ -464,13 +460,11 @@ xmlExcC14NVisibleNsStackFind(xmlC14NVisi
 
 
 /**
- * xmlC14NIsXmlNs:
- * @ns:		the namespace to check
- *
  * Checks whether the given namespace is a default "xml:" namespace
  * with href="http://www.w3.org/XML/1998/namespace"
  *
- * Returns 1 if the node is default or 0 otherwise
+ * @param ns  		the namespace to check
+ * @returns 1 if the node is default or 0 otherwise
  */
 
 /* todo: make it a define? */
@@ -484,13 +478,11 @@ xmlC14NIsXmlNs(xmlNsPtr ns)
 
 
 /**
- * xmlC14NNsCompare:
- * @ns1:		the pointer to first namespace
- * @ns2:		the pointer to second namespace
- *
  * Compares the namespaces by names (prefixes).
  *
- * Returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2.
+ * @param data1  		the pointer to first namespace
+ * @param data2  		the pointer to second namespace
+ * @returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2.
  */
 static int
 xmlC14NNsCompare(const void *data1, const void *data2)
@@ -509,13 +501,11 @@ xmlC14NNsCompare(const void *data1, cons
 
 
 /**
- * xmlC14NPrintNamespaces:
- * @ns:			the pointer to namespace
- * @ctx:		the C14N context
- *
  * Prints the given namespace to the output buffer from C14N context.
  *
- * Returns 1 on success or 0 on fail.
+ * @param ns  			the pointer to namespace
+ * @param ctx  		the C14N context
+ * @returns 1 on success or 0 on fail.
  */
 static int
 xmlC14NPrintNamespaces(const xmlNs *ns, xmlC14NCtxPtr ctx)
@@ -547,10 +537,6 @@ xmlC14NPrintNamespacesWalker(const void
 }
 
 /**
- * xmlC14NProcessNamespacesAxis:
- * @ctx:		the C14N context
- * @node:		the current node
- *
  * Prints out canonical namespace axis of the current node to the
  * buffer from C14N context as follows
  *
@@ -583,7 +569,10 @@ xmlC14NPrintNamespacesWalker(const void
  * the document subset). This search and copying are omitted from the
  * Exclusive XML Canonicalization method.
  *
- * Returns 0 on success or -1 on fail.
+ * @param ctx  		the C14N context
+ * @param cur  		the current node
+ * @param visible  		the visibility of node
+ * @returns 0 on success or -1 on fail.
  */
 static int
 xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
@@ -665,10 +654,6 @@ error:
 
 
 /**
- * xmlExcC14NProcessNamespacesAxis:
- * @ctx:		the C14N context
- * @node:		the current node
- *
  * Prints out exclusive canonical namespace axis of the current node to the
  * buffer from C14N context as follows
  *
@@ -692,7 +677,10 @@ error:
  * 3. After the recursion returns, pop thestate stack.
  *
  *
- * Returns 0 on success or -1 on fail.
+ * @param ctx  		the C14N context
+ * @param cur  		the current node
+ * @param visible  		the visibility of node
+ * @returns 0 on success or -1 on fail.
  */
 static int
 xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
@@ -852,13 +840,11 @@ error:
 
 
 /**
- * xmlC14NIsXmlAttr:
- * @attr:		the attr to check
- *
  * Checks whether the given attribute is a default "xml:" namespace
  * with href="http://www.w3.org/XML/1998/namespace"
  *
- * Returns 1 if the node is default or 0 otherwise
+ * @param attr  		the attr to check
+ * @returns 1 if the node is default or 0 otherwise
  */
 
 /* todo: make it a define? */
@@ -871,13 +857,11 @@ xmlC14NIsXmlAttr(xmlAttrPtr attr)
 
 
 /**
- * xmlC14NAttrsCompare:
- * @attr1:		the pointer tls o first attr
- * @attr2:		the pointer to second attr
- *
  * Prints the given attribute to the output buffer from C14N context.
  *
- * Returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2.
+ * @param data1  		the pointer tls o first attr
+ * @param data2  		the pointer to second attr
+ * @returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2.
  */
 static int
 xmlC14NAttrsCompare(const void *data1, const void *data2)
@@ -922,16 +906,14 @@ xmlC14NAttrsCompare(const void *data1, c
 
 
 /**
- * xmlC14NPrintAttrs:
- * @attr:		the pointer to attr
- * @ctx:		the C14N context
- *
  * Prints out canonical attribute urrent node to the
  * buffer from C14N context as follows
  *
  * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
  *
- * Returns 1 on success or 0 on fail.
+ * @param data  		the pointer to attr
+ * @param user  		the C14N context
+ * @returns 1 on success or 0 on fail.
  */
 static int
 xmlC14NPrintAttrs(const void *data, void *user)
@@ -973,11 +955,9 @@ xmlC14NPrintAttrs(const void *data, void
 }
 
 /**
- * xmlC14NFindHiddenParentAttr:
- *
  * Finds an attribute in a hidden parent node.
  *
- * Returns a pointer to the attribute node (if found) or NULL otherwise.
+ * @returns a pointer to the attribute node (if found) or NULL otherwise.
  */
 static xmlAttrPtr
 xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * name, const xmlChar * ns)
@@ -996,11 +976,9 @@ xmlC14NFindHiddenParentAttr(xmlC14NCtxPt
 }
 
 /**
- * xmlC14NFixupBaseAttr:
- *
  * Fixes up the xml:base attribute
  *
- * Returns the newly created attribute or NULL
+ * @returns the newly created attribute or NULL
  */
 static xmlAttrPtr
 xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr)
@@ -1102,12 +1080,6 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx,
 }
 
 /**
- * xmlC14NProcessAttrsAxis:
- * @ctx:		the C14N context
- * @cur:		the current node
- * @parent_visible:	the visibility of parent node
- * @all_parents_visible: the visibility of all parent nodes
- *
  * Prints out canonical attribute axis of the current node to the
  * buffer from C14N context as follows
  *
@@ -1132,7 +1104,10 @@ xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx,
  * the document subset). This search and copying are omitted from the
  * Exclusive XML Canonicalization method.
  *
- * Returns 0 on success or -1 on fail.
+ * @param ctx  		the C14N context
+ * @param cur  		the current node
+ * @param parent_visible  	the visibility of the parent node
+ * @returns 0 on success or -1 on fail.
  */
 static int
 xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible)
@@ -1354,13 +1329,11 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ct
 }
 
 /**
- * xmlC14NCheckForRelativeNamespaces:
- * @ctx:		the C14N context
- * @cur:		the current element node
- *
  * Checks that current element node has no relative namespaces defined
  *
- * Returns 0 if the node has no relative namespaces or -1 otherwise.
+ * @param ctx  		the C14N context
+ * @param cur  		the current element node
+ * @returns 0 if the node has no relative namespaces or -1 otherwise.
  */
 static int
 xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur)
@@ -1400,12 +1373,6 @@ xmlC14NCheckForRelativeNamespaces(xmlC14
 }
 
 /**
- * xmlC14NProcessElementNode:
- * @ctx:		the pointer to C14N context object
- * @cur:		the node to process
- * @visible:    this node is visible
- * @all_parents_visible: whether all the parents of this node are visible
- *
  * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n)
  *
  * Element Nodes
@@ -1420,7 +1387,10 @@ xmlC14NCheckForRelativeNamespaces(xmlC14
  * open angle bracket, a forward slash (/), the element QName, and a close
  * angle bracket.
  *
- * Returns non-negative value on success or negative value on fail
+ * @param ctx  		the pointer to C14N context object
+ * @param cur  		the node to process
+ * @param visible  		this node is visible
+ * @returns non-negative value on success or negative value on fail
  */
 static int
 xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
@@ -1513,13 +1483,11 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr
 }
 
 /**
- * xmlC14NProcessNode:
- * @ctx:		the pointer to C14N context object
- * @cur:		the node to process
- *
  * Processes the given node
  *
- * Returns non-negative value on success or negative value on fail
+ * @param ctx  		the pointer to C14N context object
+ * @param cur  		the node to process
+ * @returns non-negative value on success or negative value on fail
  */
 static int
 xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
@@ -1701,13 +1669,11 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xm
 }
 
 /**
- * xmlC14NProcessNodeList:
- * @ctx:		the pointer to C14N context object
- * @cur:		the node to start from
- *
  * Processes all nodes in the row starting from cur.
  *
- * Returns non-negative value on success or negative value on fail
+ * @param ctx  		the pointer to C14N context object
+ * @param cur  		the node to start from
+ * @returns non-negative value on success or negative value on fail
  */
 static int
 xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur)
@@ -1727,10 +1693,9 @@ xmlC14NProcessNodeList(xmlC14NCtxPtr ctx
 
 
 /**
- * xmlC14NFreeCtx:
- * @ctx: the pointer to C14N context object
- *
  * Cleanups the C14N context object.
+ *
+ * @param ctx  the pointer to C14N context object
  */
 
 static void
@@ -1748,25 +1713,23 @@ xmlC14NFreeCtx(xmlC14NCtxPtr ctx)
 }
 
 /**
- * xmlC14NNewCtx:
- * @doc:		the XML document for canonization
- * @is_visible_callback:the function to use to determine is node visible
+ * Creates new C14N context object to store C14N parameters.
+ *
+ * @param doc  		the XML document for canonization
+ * @param is_visible_callback  the function to use to determine is node visible
  *			or not
- * @user_data:		the first parameter for @is_visible_callback function
+ * @param user_data  		the first parameter for `is_visible_callback` function
  *			(in most cases, it is nodes set)
- * @mode:   the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixe the list of inclusive namespace prefixes
+ * @param mode  the c14n mode (see `xmlC14NMode`)
+ * @param inclusive_ns_prefixes  the list of inclusive namespace prefixes
  *			ended with a NULL or NULL if there is no
  *			inclusive namespaces (only for `
  *			canonicalization)
- * @with_comments:	include comments in the result (!=0) or not (==0)
- * @buf:		the output buffer to store canonical XML; this
+ * @param with_comments  	include comments in the result (!=0) or not (==0)
+ * @param buf  		the output buffer to store canonical XML; this
  *			buffer MUST have encoder==NULL because C14N requires
  *			UTF-8 output
- *
- * Creates new C14N context object to store C14N parameters.
- *
- * Returns pointer to newly created object (success) or NULL (fail)
+ * @returns pointer to newly created object (success) or NULL (fail)
  */
 static xmlC14NCtxPtr
 xmlC14NNewCtx(xmlDocPtr doc,
@@ -1791,7 +1754,7 @@ xmlC14NNewCtx(xmlDocPtr doc,
     }
 
     /*
-     * Allocate a new xmlC14NCtxPtr and fill the fields.
+     * Allocate a new xmlC14NCtx and fill the fields.
      */
     ctx = (xmlC14NCtxPtr) xmlMalloc(sizeof(xmlC14NCtx));
     if (ctx == NULL) {
@@ -1831,32 +1794,30 @@ xmlC14NNewCtx(xmlDocPtr doc,
 }
 
 /**
- * xmlC14NExecute:
- * @doc:		the XML document for canonization
- * @is_visible_callback:the function to use to determine is node visible
+ * Dumps the canonized image of given XML document into the provided buffer.
+ * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
+ * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
+ *
+ * @param doc  		the XML document for canonization
+ * @param is_visible_callback  the function to use to determine is node visible
  *			or not
- * @user_data:		the first parameter for @is_visible_callback function
+ * @param user_data  		the first parameter for `is_visible_callback` function
  *			(in most cases, it is nodes set)
- * @mode:	the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @param mode  	the c14n mode (see `xmlC14NMode`)
+ * @param inclusive_ns_prefixes  the list of inclusive namespace prefixes
  *			ended with a NULL or NULL if there is no
  *			inclusive namespaces (only for exclusive
  *			canonicalization, ignored otherwise)
- * @with_comments:	include comments in the result (!=0) or not (==0)
- * @buf:		the output buffer to store canonical XML; this
+ * @param with_comments  	include comments in the result (!=0) or not (==0)
+ * @param buf  		the output buffer to store canonical XML; this
  *			buffer MUST have encoder==NULL because C14N requires
  *			UTF-8 output
- *
- * Dumps the canonized image of given XML document into the provided buffer.
- * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
- * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
- *
- * Returns non-negative value on success or a negative value on fail
+ * @returns non-negative value on success or a negative value on fail
  */
 int
-xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback,
+xmlC14NExecute(xmlDoc *doc, xmlC14NIsVisibleCallback is_visible_callback,
 	 void* user_data, int mode, xmlChar **inclusive_ns_prefixes,
-	 int with_comments, xmlOutputBufferPtr buf) {
+	 int with_comments, xmlOutputBuffer *buf) {
 
     xmlC14NCtxPtr ctx;
     xmlC14NMode c14n_mode = XML_C14N_1_0;
@@ -1934,30 +1895,28 @@ xmlC14NExecute(xmlDocPtr doc, xmlC14NIsV
 }
 
 /**
- * xmlC14NDocSaveTo:
- * @doc:		the XML document for canonization
- * @nodes:		the nodes set to be included in the canonized image
+ * Dumps the canonized image of given XML document into the provided buffer.
+ * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
+ * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
+ *
+ * @param doc  		the XML document for canonization
+ * @param nodes  		the nodes set to be included in the canonized image
  *		or NULL if all document nodes should be included
- * @mode:		the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @param mode  		the c14n mode (see `xmlC14NMode`)
+ * @param inclusive_ns_prefixes  the list of inclusive namespace prefixes
  *			ended with a NULL or NULL if there is no
  *			inclusive namespaces (only for exclusive
  *			canonicalization, ignored otherwise)
- * @with_comments:	include comments in the result (!=0) or not (==0)
- * @buf:		the output buffer to store canonical XML; this
+ * @param with_comments  	include comments in the result (!=0) or not (==0)
+ * @param buf  		the output buffer to store canonical XML; this
  *			buffer MUST have encoder==NULL because C14N requires
  *			UTF-8 output
- *
- * Dumps the canonized image of given XML document into the provided buffer.
- * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
- * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
- *
- * Returns non-negative value on success or a negative value on fail
+ * @returns non-negative value on success or a negative value on fail
  */
 int
-xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
+xmlC14NDocSaveTo(xmlDoc *doc, xmlNodeSet *nodes,
                  int mode, xmlChar ** inclusive_ns_prefixes,
-                 int with_comments, xmlOutputBufferPtr buf) {
+                 int with_comments, xmlOutputBuffer *buf) {
     return(xmlC14NExecute(doc,
 			xmlC14NIsNodeInNodeset,
 			nodes,
@@ -1969,28 +1928,26 @@ xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeS
 
 
 /**
- * xmlC14NDocDumpMemory:
- * @doc:		the XML document for canonization
- * @nodes:		the nodes set to be included in the canonized image
+ * Dumps the canonized image of given XML document into memory.
+ * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
+ * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
+ *
+ * @param doc  		the XML document for canonization
+ * @param nodes  		the nodes set to be included in the canonized image
  *		or NULL if all document nodes should be included
- * @mode:		the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @param mode  		the c14n mode (see `xmlC14NMode`)
+ * @param inclusive_ns_prefixes  the list of inclusive namespace prefixes
  *			ended with a NULL or NULL if there is no
  *			inclusive namespaces (only for exclusive
  *			canonicalization, ignored otherwise)
- * @with_comments:	include comments in the result (!=0) or not (==0)
- * @doc_txt_ptr:	the memory pointer for allocated canonical XML text;
+ * @param with_comments  	include comments in the result (!=0) or not (==0)
+ * @param doc_txt_ptr  	the memory pointer for allocated canonical XML text;
  *			the caller of this functions is responsible for calling
  *			xmlFree() to free allocated memory
- *
- * Dumps the canonized image of given XML document into memory.
- * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
- * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
- *
- * Returns the number of bytes written on success or a negative value on fail
+ * @returns the number of bytes written on success or a negative value on fail
  */
 int
-xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
+xmlC14NDocDumpMemory(xmlDoc *doc, xmlNodeSet *nodes,
                      int mode, xmlChar ** inclusive_ns_prefixes,
                      int with_comments, xmlChar ** doc_txt_ptr)
 {
@@ -2037,30 +1994,28 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlN
 }
 
 /**
- * xmlC14NDocSave:
- * @doc:		the XML document for canonization
- * @nodes:		the nodes set to be included in the canonized image
+ * Dumps the canonized image of given XML document into the file.
+ * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
+ * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
+ *
+ * @param doc  		the XML document for canonization
+ * @param nodes  		the nodes set to be included in the canonized image
  *		or NULL if all document nodes should be included
- * @mode:		the c14n mode (see @xmlC14NMode)
- * @inclusive_ns_prefixes: the list of inclusive namespace prefixes
+ * @param mode  		the c14n mode (see `xmlC14NMode`)
+ * @param inclusive_ns_prefixes  the list of inclusive namespace prefixes
  *			ended with a NULL or NULL if there is no
  *			inclusive namespaces (only for exclusive
  *			canonicalization, ignored otherwise)
- * @with_comments:	include comments in the result (!=0) or not (==0)
- * @filename:		the filename to store canonical XML image
- * @compression:	the compression level (zlib required):
+ * @param with_comments  	include comments in the result (!=0) or not (==0)
+ * @param filename  		the filename to store canonical XML image
+ * @param compression  	the compression level (zlib required):
  *				-1 - libxml default,
  *				 0 - uncompressed,
  *				>0 - compression level
- *
- * Dumps the canonized image of given XML document into the file.
- * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or
- * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)
- *
- * Returns the number of bytes written success or a negative value on fail
+ * @returns the number of bytes written success or a negative value on fail
  */
 int
-xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
+xmlC14NDocSave(xmlDoc *doc, xmlNodeSet *nodes,
                int mode, xmlChar ** inclusive_ns_prefixes,
                int with_comments, const char *filename, int compression)
 {
@@ -2103,15 +2058,13 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSet
 }
 
 /**
- * xmlC11NNormalizeString:
- * @input:		the input string
- * @mode:		the normalization mode (attribute, comment, PI or text)
- *
  * Converts a string to a canonical (normalized) format. The code is stolen
- * from xmlEncodeEntitiesReentrant(). Added normalization of \x09, \x0a, \x0A
- * and the @mode parameter
+ * from xmlEscapeText. Added normalization of `\x09`, `\x0a`,
+ * `\x0A` and the `mode` parameter.
  *
- * Returns a normalized string (caller is responsible for calling xmlFree())
+ * @param input  		the input string
+ * @param mode  		the normalization mode (attribute, comment, PI or text)
+ * @returns a normalized string (caller is responsible for calling #xmlFree)
  * or NULL if an error occurs
  */
 static xmlChar *
diff -pruN 2.14.6+dfsg-0.1/catalog.c 2.15.0+dfsg-0.3/catalog.c
--- 2.14.6+dfsg-0.1/catalog.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/catalog.c	2025-09-15 11:55:59.000000000 +0000
@@ -9,7 +9,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel.Veillard@imag.fr
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -57,9 +57,12 @@
 #ifndef XML_XML_DEFAULT_CATALOG
 #define XML_XML_DEFAULT_CATALOG "file://" XML_SYSCONFDIR "/xml/catalog"
 #endif
+
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 #ifndef XML_SGML_DEFAULT_CATALOG
 #define XML_SGML_DEFAULT_CATALOG "file://" XML_SYSCONFDIR "/sgml/catalog"
 #endif
+#endif
 
 static xmlChar *xmlCatalogNormalizePublic(const xmlChar *pubID);
 static int xmlExpandCatalog(xmlCatalogPtr catal, const char *filename);
@@ -84,7 +87,9 @@ typedef enum {
     XML_CATA_DELEGATE_SYSTEM,
     XML_CATA_URI,
     XML_CATA_REWRITE_URI,
-    XML_CATA_DELEGATE_URI,
+    XML_CATA_DELEGATE_URI
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    ,
     SGML_CATA_SYSTEM,
     SGML_CATA_PUBLIC,
     SGML_CATA_ENTITY,
@@ -97,6 +102,7 @@ typedef enum {
     SGML_CATA_CATALOG,
     SGML_CATA_DOCUMENT,
     SGML_CATA_SGMLDECL
+#endif
 } xmlCatalogEntryType;
 
 typedef struct _xmlCatalogEntry xmlCatalogEntry;
@@ -116,14 +122,20 @@ struct _xmlCatalogEntry {
 };
 
 typedef enum {
-    XML_XML_CATALOG_TYPE = 1,
+    XML_XML_CATALOG_TYPE = 1
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    ,
     XML_SGML_CATALOG_TYPE
+#endif
 } xmlCatalogType;
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 #define XML_MAX_SGML_CATA_DEPTH 10
+#endif
 struct _xmlCatalog {
     xmlCatalogType type;	/* either XML or SGML */
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     /*
      * SGML Catalogs are stored as a simple hash table of catalog entries
      * Catalog stack to check against overflows when building the
@@ -133,6 +145,7 @@ struct _xmlCatalog {
     int          catalNr;	/* Number of current catal streams */
     int          catalMax;	/* Max number of catal streams */
     xmlHashTablePtr sgml;
+#endif
 
     /*
      * XML Catalogs are stored as a tree of Catalog entries
@@ -169,7 +182,7 @@ static xmlCatalogPtr xmlDefaultCatalog =
  * A mutex for modifying the shared global catalog(s)
  * xmlDefaultCatalog tree.
  * It also protects xmlCatalogXMLFiles
- * The core of this readers/writer scheme is in xmlFetchXMLCatalogFile()
+ * The core of this readers/writer scheme is in #xmlFetchXMLCatalogFile
  */
 static xmlRMutex xmlCatalogMutex;
 
@@ -185,9 +198,6 @@ static int xmlCatalogInitialized = 0;
  ************************************************************************/
 
 /**
- * xmlCatalogErrMemory:
- * @extra:  extra information
- *
  * Handle an out of memory condition
  */
 static void
@@ -197,13 +207,15 @@ xmlCatalogErrMemory(void)
 }
 
 /**
- * xmlCatalogErr:
- * @catal: the Catalog entry
- * @node: the context node
- * @msg:  the error message
- * @extra:  extra information
- *
  * Handle a catalog error
+ *
+ * @param catal  the Catalog entry
+ * @param node  the context node
+ * @param error  the error code
+ * @param msg  the error message
+ * @param str1  error string 1
+ * @param str2  error string 2
+ * @param str3  error string 3
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlCatalogErr(xmlCatalogEntryPtr catal, xmlNodePtr node, int error,
@@ -237,17 +249,16 @@ xmlCatalogPrintDebug(const char *fmt, ..
  ************************************************************************/
 
 /**
- * xmlNewCatalogEntry:
- * @type:  type of entry
- * @name:  name of the entry
- * @value:  value of the entry
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- * @group:  for members of a group, the group entry
- *
  * create a new Catalog entry, this type is shared both by XML and
  * SGML catalogs, but the acceptable types values differs.
  *
- * Returns the xmlCatalogEntryPtr or NULL in case of error
+ * @param type  type of entry
+ * @param name  name of the entry
+ * @param value  value of the entry
+ * @param URL  URL of the entry
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @param group  for members of a group, the group entry
+ * @returns the xmlCatalogEntry or NULL in case of error
  */
 static xmlCatalogEntryPtr
 xmlNewCatalogEntry(xmlCatalogEntryType type, const xmlChar *name,
@@ -297,10 +308,10 @@ static void
 xmlFreeCatalogEntryList(xmlCatalogEntryPtr ret);
 
 /**
- * xmlFreeCatalogEntry:
- * @payload:  a Catalog entry
- *
  * Free the memory allocated to a Catalog entry
+ *
+ * @param payload  a Catalog entry
+ * @param name  unused
  */
 static void
 xmlFreeCatalogEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -336,10 +347,9 @@ xmlFreeCatalogEntry(void *payload, const
 }
 
 /**
- * xmlFreeCatalogEntryList:
- * @ret:  a Catalog entry list
- *
  * Free the memory allocated to a full chained list of Catalog entries
+ *
+ * @param ret  a Catalog entry list
  */
 static void
 xmlFreeCatalogEntryList(xmlCatalogEntryPtr ret) {
@@ -353,11 +363,11 @@ xmlFreeCatalogEntryList(xmlCatalogEntryP
 }
 
 /**
- * xmlFreeCatalogHashEntryList:
- * @payload:  a Catalog entry list
- *
  * Free the memory allocated to list of Catalog entries from the
  * catalog file hash.
+ *
+ * @param payload  a Catalog entry list
+ * @param name  unused
  */
 static void
 xmlFreeCatalogHashEntryList(void *payload,
@@ -381,14 +391,12 @@ xmlFreeCatalogHashEntryList(void *payloa
 }
 
 /**
- * xmlCreateNewCatalog:
- * @type:  type of catalog
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- *
  * create a new Catalog, this type is shared both by XML and
  * SGML catalogs, but the acceptable types values differs.
  *
- * Returns the xmlCatalogPtr or NULL in case of error
+ * @param type  type of catalog
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @returns the xmlCatalog or NULL in case of error
  */
 static xmlCatalogPtr
 xmlCreateNewCatalog(xmlCatalogType type, xmlCatalogPrefer prefer) {
@@ -401,28 +409,33 @@ xmlCreateNewCatalog(xmlCatalogType type,
     }
     memset(ret, 0, sizeof(xmlCatalog));
     ret->type = type;
+    ret->prefer = prefer;
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     ret->catalNr = 0;
     ret->catalMax = XML_MAX_SGML_CATA_DEPTH;
-    ret->prefer = prefer;
     if (ret->type == XML_SGML_CATALOG_TYPE)
 	ret->sgml = xmlHashCreate(10);
+#endif
     return(ret);
 }
 
 /**
- * xmlFreeCatalog:
- * @catal:  a Catalog
- *
  * Free the memory allocated to a Catalog
+ *
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
  */
 void
-xmlFreeCatalog(xmlCatalogPtr catal) {
+xmlFreeCatalog(xmlCatalog *catal) {
     if (catal == NULL)
 	return;
     if (catal->xml != NULL)
 	xmlFreeCatalogEntryList(catal->xml);
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (catal->sgml != NULL)
 	xmlHashFree(catal->sgml, xmlFreeCatalogEntry);
+#endif
     xmlFree(catal);
 }
 
@@ -433,12 +446,13 @@ xmlFreeCatalog(xmlCatalogPtr catal) {
  ************************************************************************/
 
 #ifdef LIBXML_OUTPUT_ENABLED
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 /**
- * xmlCatalogDumpEntry:
- * @entry:  the catalog entry
- * @out:  the file.
- *
  * Serialize an SGML Catalog entry
+ *
+ * @param payload  the catalog entry
+ * @param data  the file.
+ * @param name  unused
  */
 static void
 xmlCatalogDumpEntry(void *payload, void *data,
@@ -508,17 +522,17 @@ xmlCatalogDumpEntry(void *payload, void
     }
     fprintf(out, "\n");
 }
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
 
 /**
- * xmlDumpXMLCatalogNode:
- * @catal:  top catalog entry
- * @catalog: pointer to the xml tree
- * @doc: the containing document
- * @ns: the current namespace
- * @cgroup: group node for group members
- *
  * Serializes a Catalog entry, called by xmlDumpXMLCatalog and recursively
  * for group entries
+ *
+ * @param catal  top catalog entry
+ * @param catalog  pointer to the xml tree
+ * @param doc  the containing document
+ * @param ns  the current namespace
+ * @param cgroup  group node for group members
  */
 static void xmlDumpXMLCatalogNode(xmlCatalogEntryPtr catal, xmlNodePtr catalog,
 		    xmlDocPtr doc, xmlNsPtr ns, xmlCatalogEntryPtr cgroup) {
@@ -618,18 +632,7 @@ static void xmlDumpXMLCatalogNode(xmlCat
 		    xmlSetProp(node, BAD_CAST "catalog", cur->value);
 		    xmlAddChild(catalog, node);
 		    break;
-		case SGML_CATA_SYSTEM:
-		case SGML_CATA_PUBLIC:
-		case SGML_CATA_ENTITY:
-		case SGML_CATA_PENTITY:
-		case SGML_CATA_DOCTYPE:
-		case SGML_CATA_LINKTYPE:
-		case SGML_CATA_NOTATION:
-		case SGML_CATA_DELEGATE:
-		case SGML_CATA_BASE:
-		case SGML_CATA_CATALOG:
-		case SGML_CATA_DOCUMENT:
-		case SGML_CATA_SGMLDECL:
+                default:
 		    break;
 	    }
         }
@@ -699,12 +702,14 @@ BAD_CAST "http://www.oasis-open.org/comm
  *									*
  ************************************************************************/
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+
 /**
- * xmlCatalogConvertEntry:
- * @entry:  the entry
- * @catal:  pointer to the catalog being converted
- *
  * Convert one entry from the catalog
+ *
+ * @param payload  the entry
+ * @param data  pointer to the catalog being converted
+ * @param name  unused
  */
 static void
 xmlCatalogConvertEntry(void *payload, void *data,
@@ -766,15 +771,15 @@ xmlCatalogConvertEntry(void *payload, vo
 }
 
 /**
- * xmlConvertSGMLCatalog:
- * @catal: the catalog
- *
  * Convert all the SGML catalog entries as XML ones
  *
- * Returns the number of entries converted if successful, -1 otherwise
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  the catalog
+ * @returns the number of entries converted if successful, -1 otherwise
  */
 int
-xmlConvertSGMLCatalog(xmlCatalogPtr catal) {
+xmlConvertSGMLCatalog(xmlCatalog *catal) {
 
     if ((catal == NULL) || (catal->type != XML_SGML_CATALOG_TYPE))
 	return(-1);
@@ -787,6 +792,8 @@ xmlConvertSGMLCatalog(xmlCatalogPtr cata
     return(0);
 }
 
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+
 /************************************************************************
  *									*
  *			Helper function					*
@@ -794,12 +801,10 @@ xmlConvertSGMLCatalog(xmlCatalogPtr cata
  ************************************************************************/
 
 /**
- * xmlCatalogUnWrapURN:
- * @urn:  an "urn:publicid:" to unwrap
- *
  * Expand the URN into the equivalent Public Identifier
  *
- * Returns the new identifier or NULL, the string must be deallocated
+ * @param urn  an "urn:publicid:" to unwrap
+ * @returns the new identifier or NULL, the string must be deallocated
  *         by the caller.
  */
 static xmlChar *
@@ -859,16 +864,16 @@ xmlCatalogUnWrapURN(const xmlChar *urn)
 }
 
 /**
- * xmlParseCatalogFile:
- * @filename:  the filename
- *
- * parse an XML file and build a tree. It's like xmlParseFile()
+ * parse an XML file and build a tree. It's like #xmlParseFile
  * except it bypass all catalog lookups.
  *
- * Returns the resulting document tree or NULL in case of error
+ * @deprecated Internal function, don't use
+ *
+ * @param filename  the filename
+ * @returns the resulting document tree or NULL in case of error
  */
 
-xmlDocPtr
+xmlDoc *
 xmlParseCatalogFile(const char *filename) {
     xmlDocPtr ret;
     xmlParserCtxtPtr ctxt;
@@ -925,12 +930,10 @@ xmlParseCatalogFile(const char *filename
 }
 
 /**
- * xmlLoadFileContent:
- * @filename:  a file path
- *
  * Load a file content into memory.
  *
- * Returns a pointer to the 0 terminated string or NULL in case of error
+ * @param filename  a file path
+ * @returns a pointer to the 0 terminated string or NULL in case of error
  */
 static xmlChar *
 xmlLoadFileContent(const char *filename)
@@ -972,15 +975,13 @@ xmlLoadFileContent(const char *filename)
 }
 
 /**
- * xmlCatalogNormalizePublic:
- * @pubID:  the public ID string
- *
  *  Normalizes the Public Identifier
  *
  * Implements 6.2. Public Identifier Normalization
  * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Returns the new string or NULL, the string must be deallocated
+ * @param pubID  the public ID string
+ * @returns the new string or NULL, the string must be deallocated
  *         by the caller.
  */
 static xmlChar *
@@ -1045,12 +1046,10 @@ xmlCatalogListXMLResolveURI(xmlCatalogEn
 
 
 /**
- * xmlGetXMLCatalogEntryType:
- * @name:  the name
- *
  * lookup the internal type associated to an XML catalog entry name
  *
- * Returns the type associated with that name
+ * @param name  the name
+ * @returns the type associated with that name
  */
 static xmlCatalogEntryType
 xmlGetXMLCatalogEntryType(const xmlChar *name) {
@@ -1079,19 +1078,17 @@ xmlGetXMLCatalogEntryType(const xmlChar
 }
 
 /**
- * xmlParseXMLCatalogOneNode:
- * @cur:  the XML node
- * @type:  the type of Catalog entry
- * @name:  the name of the node
- * @attrName:  the attribute holding the value
- * @uriAttrName:  the attribute holding the URI-Reference
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- * @cgroup:  the group which includes this node
- *
  * Finishes the examination of an XML tree node of a catalog and build
  * a Catalog entry from it.
  *
- * Returns the new Catalog entry node or NULL in case of error.
+ * @param cur  the XML node
+ * @param type  the type of Catalog entry
+ * @param name  the name of the node
+ * @param attrName  the attribute holding the value
+ * @param uriAttrName  the attribute holding the URI-Reference
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @param cgroup  the group which includes this node
+ * @returns the new Catalog entry node or NULL in case of error.
  */
 static xmlCatalogEntryPtr
 xmlParseXMLCatalogOneNode(xmlNodePtr cur, xmlCatalogEntryType type,
@@ -1155,15 +1152,14 @@ xmlParseXMLCatalogOneNode(xmlNodePtr cur
 }
 
 /**
- * xmlParseXMLCatalogNode:
- * @cur:  the XML node
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- * @parent:  the parent Catalog entry
- * @cgroup:  the group which includes this node
- *
  * Examines an XML tree node of a catalog and build
  * a Catalog entry from it adding it to its parent. The examination can
  * be recursive.
+ *
+ * @param cur  the XML node
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @param parent  the parent Catalog entry
+ * @param cgroup  the group which includes this node
  */
 static void
 xmlParseXMLCatalogNode(xmlNodePtr cur, xmlCatalogPrefer prefer,
@@ -1258,15 +1254,14 @@ xmlParseXMLCatalogNode(xmlNodePtr cur, x
 }
 
 /**
- * xmlParseXMLCatalogNodeList:
- * @cur:  the XML node list of siblings
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- * @parent:  the parent Catalog entry
- * @cgroup:  the group which includes this list
- *
  * Examines a list of XML sibling nodes of a catalog and build
  * a list of Catalog entry from it adding it to the parent.
  * The examination will recurse to examine node subtrees.
+ *
+ * @param cur  the XML node list of siblings
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @param parent  the parent Catalog entry
+ * @param cgroup  the group which includes this list
  */
 static void
 xmlParseXMLCatalogNodeList(xmlNodePtr cur, xmlCatalogPrefer prefer,
@@ -1282,14 +1277,12 @@ xmlParseXMLCatalogNodeList(xmlNodePtr cu
 }
 
 /**
- * xmlParseXMLCatalogFile:
- * @prefer:  the PUBLIC vs. SYSTEM current preference value
- * @filename:  the filename for the catalog
- *
  * Parses the catalog file to extract the XML tree and then analyze the
  * tree to build a list of Catalog entries corresponding to this catalog
  *
- * Returns the resulting Catalog entries list
+ * @param prefer  the PUBLIC vs. SYSTEM current preference value
+ * @param filename  the filename for the catalog
+ * @returns the resulting Catalog entries list
  */
 static xmlCatalogEntryPtr
 xmlParseXMLCatalogFile(xmlCatalogPrefer prefer, const xmlChar *filename) {
@@ -1352,12 +1345,10 @@ xmlParseXMLCatalogFile(xmlCatalogPrefer
 }
 
 /**
- * xmlFetchXMLCatalogFile:
- * @catal:  an existing but incomplete catalog entry
- *
  * Fetch and parse the subcatalog referenced by an entry
  *
- * Returns 0 in case of success, -1 otherwise
+ * @param catal  an existing but incomplete catalog entry
+ * @returns 0 in case of success, -1 otherwise
  */
 static int
 xmlFetchXMLCatalogFile(xmlCatalogEntryPtr catal) {
@@ -1437,16 +1428,14 @@ xmlFetchXMLCatalogFile(xmlCatalogEntryPt
  ************************************************************************/
 
 /**
- * xmlAddXMLCatalog:
- * @catal:  top of an XML catalog
- * @type:  the type of record to add to the catalog
- * @orig:  the system, public or prefix to match (or NULL)
- * @replace:  the replacement value for the match
- *
  * Add an entry in the XML catalog, it may overwrite existing but
  * different entries.
  *
- * Returns 0 if successful, -1 otherwise
+ * @param catal  top of an XML catalog
+ * @param type  the type of record to add to the catalog
+ * @param orig  the system, public or prefix to match (or NULL)
+ * @param replace  the replacement value for the match
+ * @returns 0 if successful, -1 otherwise
  */
 static int
 xmlAddXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *type,
@@ -1517,14 +1506,12 @@ xmlAddXMLCatalog(xmlCatalogEntryPtr cata
 }
 
 /**
- * xmlDelXMLCatalog:
- * @catal:  top of an XML catalog
- * @value:  the value to remove from the catalog
- *
  * Remove entries in the XML catalog where the value or the URI
- * is equal to @value
+ * is equal to `value`
  *
- * Returns the number of entries removed if successful, -1 otherwise
+ * @param catal  top of an XML catalog
+ * @param value  the value to remove from the catalog
+ * @returns the number of entries removed if successful, -1 otherwise
  */
 static int
 xmlDelXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *value) {
@@ -1564,18 +1551,16 @@ xmlDelXMLCatalog(xmlCatalogEntryPtr cata
 }
 
 /**
- * xmlCatalogXMLResolve:
- * @catal:  a catalog list
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier for a
  * list of catalog entries.
  *
  * Implements (or tries to) 7.1. External Identifier Resolution
  * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Returns the URI of the resource or NULL if not found
+ * @param catal  a catalog list
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found
  */
 static xmlChar *
 xmlCatalogXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID,
@@ -1797,18 +1782,15 @@ xmlCatalogXMLResolve(xmlCatalogEntryPtr
 }
 
 /**
- * xmlCatalogXMLResolveURI:
- * @catal:  a catalog list
- * @URI:  the URI
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier for a
  * list of catalog entries.
  *
  * Implements (or tries to) 7.2.2. URI Resolution
  * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Returns the URI of the resource or NULL if not found
+ * @param catal  a catalog list
+ * @param URI  the URI
+ * @returns the URI of the resource or NULL if not found
  */
 static xmlChar *
 xmlCatalogXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
@@ -1940,18 +1922,16 @@ xmlCatalogXMLResolveURI(xmlCatalogEntryP
 }
 
 /**
- * xmlCatalogListXMLResolve:
- * @catal:  a catalog list
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier for a
  * list of catalogs
  *
  * Implements (or tries to) 7.1. External Identifier Resolution
  * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Returns the URI of the resource or NULL if not found
+ * @param catal  a catalog list
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found
  */
 static xmlChar *
 xmlCatalogListXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID,
@@ -2032,16 +2012,14 @@ xmlCatalogListXMLResolve(xmlCatalogEntry
 }
 
 /**
- * xmlCatalogListXMLResolveURI:
- * @catal:  a catalog list
- * @URI:  the URI
- *
  * Do a complete resolution lookup of an URI for a list of catalogs
  *
  * Implements (or tries to) 7.2. URI Resolution
  * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Returns the URI of the resource or NULL if not found
+ * @param catal  a catalog list
+ * @param URI  the URI
+ * @returns the URI of the resource or NULL if not found
  */
 static xmlChar *
 xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
@@ -2084,6 +2062,8 @@ xmlCatalogListXMLResolveURI(xmlCatalogEn
     return(ret);
 }
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+
 /************************************************************************
  *									*
  *			The SGML Catalog parser				*
@@ -2098,12 +2078,10 @@ xmlCatalogListXMLResolveURI(xmlCatalogEn
 #define SKIP_BLANKS while (IS_BLANK_CH(*cur)) NEXT;
 
 /**
- * xmlParseSGMLCatalogComment:
- * @cur:  the current character
- *
  * Skip a comment in an SGML catalog
  *
- * Returns new current character
+ * @param cur  the current character
+ * @returns new current character
  */
 static const xmlChar *
 xmlParseSGMLCatalogComment(const xmlChar *cur) {
@@ -2119,13 +2097,11 @@ xmlParseSGMLCatalogComment(const xmlChar
 }
 
 /**
- * xmlParseSGMLCatalogPubid:
- * @cur:  the current character
- * @id:  the return location
- *
  * Parse an SGML catalog ID
  *
- * Returns new current character and store the value in @id
+ * @param cur  the current character
+ * @param id  the return location
+ * @returns new current character and store the value in `id`
  */
 static const xmlChar *
 xmlParseSGMLCatalogPubid(const xmlChar *cur, xmlChar **id) {
@@ -2195,13 +2171,11 @@ xmlParseSGMLCatalogPubid(const xmlChar *
 }
 
 /**
- * xmlParseSGMLCatalogName:
- * @cur:  the current character
- * @name:  the return location
- *
  * Parse an SGML catalog name
  *
- * Returns new current character and store the value in @name
+ * @param cur  the current character
+ * @param name  the return location
+ * @returns new current character and store the value in `name`
  */
 static const xmlChar *
 xmlParseSGMLCatalogName(const xmlChar *cur, xmlChar **name) {
@@ -2233,12 +2207,10 @@ xmlParseSGMLCatalogName(const xmlChar *c
 }
 
 /**
- * xmlGetSGMLCatalogEntryType:
- * @name:  the entry name
- *
  * Get the Catalog entry type for a given SGML Catalog name
  *
- * Returns Catalog entry type
+ * @param name  the entry name
+ * @returns Catalog entry type
  */
 static xmlCatalogEntryType
 xmlGetSGMLCatalogEntryType(const xmlChar *name) {
@@ -2269,17 +2241,15 @@ xmlGetSGMLCatalogEntryType(const xmlChar
 }
 
 /**
- * xmlParseSGMLCatalog:
- * @catal:  the SGML Catalog
- * @value:  the content of the SGML Catalog serialization
- * @file:  the filepath for the catalog
- * @super:  should this be handled as a Super Catalog in which case
- *          parsing is not recursive
- *
- * Parse an SGML catalog content and fill up the @catal hash table with
+ * Parse an SGML catalog content and fill up the `catal` hash table with
  * the new entries found.
  *
- * Returns 0 in case of success, -1 in case of error.
+ * @param catal  the SGML Catalog
+ * @param value  the content of the SGML Catalog serialization
+ * @param file  the filepath for the catalog
+ * @param super  should this be handled as a Super Catalog in which case
+ *          parsing is not recursive
+ * @returns 0 in case of success, -1 in case of error.
  */
 static int
 xmlParseSGMLCatalog(xmlCatalogPtr catal, const xmlChar *value,
@@ -2495,13 +2465,11 @@ xmlParseSGMLCatalog(xmlCatalogPtr catal,
  ************************************************************************/
 
 /**
- * xmlCatalogGetSGMLPublic:
- * @catal:  an SGML catalog hash
- * @pubID:  the public ID string
- *
  * Try to lookup the catalog local reference associated to a public ID
  *
- * Returns the local resource if found or NULL otherwise.
+ * @param catal  an SGML catalog hash
+ * @param pubID  the public ID string
+ * @returns the local resource if found or NULL otherwise.
  */
 static const xmlChar *
 xmlCatalogGetSGMLPublic(xmlHashTablePtr catal, const xmlChar *pubID) {
@@ -2532,13 +2500,11 @@ xmlCatalogGetSGMLPublic(xmlHashTablePtr
 }
 
 /**
- * xmlCatalogGetSGMLSystem:
- * @catal:  an SGML catalog hash
- * @sysID:  the system ID string
- *
  * Try to lookup the catalog local reference for a system ID
  *
- * Returns the local resource if found or NULL otherwise.
+ * @param catal  an SGML catalog hash
+ * @param sysID  the system ID string
+ * @returns the local resource if found or NULL otherwise.
  */
 static const xmlChar *
 xmlCatalogGetSGMLSystem(xmlHashTablePtr catal, const xmlChar *sysID) {
@@ -2556,14 +2522,12 @@ xmlCatalogGetSGMLSystem(xmlHashTablePtr
 }
 
 /**
- * xmlCatalogSGMLResolve:
- * @catal:  the SGML catalog
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier
  *
- * Returns the URI of the resource or NULL if not found
+ * @param catal  the SGML catalog
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found
  */
 static const xmlChar *
 xmlCatalogSGMLResolve(xmlCatalogPtr catal, const xmlChar *pubID,
@@ -2584,23 +2548,26 @@ xmlCatalogSGMLResolve(xmlCatalogPtr cata
     return(NULL);
 }
 
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+
 /************************************************************************
  *									*
  *			Specific Public interfaces			*
  *									*
  ************************************************************************/
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 /**
- * xmlLoadSGMLSuperCatalog:
- * @filename:  a file path
- *
  * Load an SGML super catalog. It won't expand CATALOG or DELEGATE
  * references. This is only needed for manipulating SGML Super Catalogs
  * like adding and removing CATALOG or DELEGATE entries.
  *
- * Returns the catalog parsed or NULL in case of error
+ * @deprecated Internal function, don't use
+ *
+ * @param filename  a file path
+ * @returns the catalog parsed or NULL in case of error
  */
-xmlCatalogPtr
+xmlCatalog *
 xmlLoadSGMLSuperCatalog(const char *filename)
 {
     xmlChar *content;
@@ -2625,25 +2592,25 @@ xmlLoadSGMLSuperCatalog(const char *file
     }
     return (catal);
 }
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
 
 /**
- * xmlLoadACatalog:
- * @filename:  a file path
- *
  * 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.
  *
- * Returns the catalog parsed or NULL in case of error
+ * @deprecated Internal function, don't use
+ *
+ * @param filename  a file path
+ * @returns the catalog parsed or NULL in case of error
  */
-xmlCatalogPtr
+xmlCatalog *
 xmlLoadACatalog(const char *filename)
 {
     xmlChar *content;
     xmlChar *first;
     xmlCatalogPtr catal;
-    int ret;
 
     content = xmlLoadFileContent(filename);
     if (content == NULL)
@@ -2657,7 +2624,10 @@ xmlLoadACatalog(const char *filename)
 	      ((*first >= 'a') && (*first <= 'z')))))
 	first++;
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (*first != '<') {
+        int ret;
+
 	catal = xmlCreateNewCatalog(XML_SGML_CATALOG_TYPE, xmlCatalogDefaultPrefer);
 	if (catal == NULL) {
 	    xmlFree(content);
@@ -2669,7 +2639,9 @@ xmlLoadACatalog(const char *filename)
 	    xmlFree(content);
 	    return(NULL);
 	}
-    } else {
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
 	catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, xmlCatalogDefaultPrefer);
 	if (catal == NULL) {
 	    xmlFree(content);
@@ -2683,26 +2655,23 @@ xmlLoadACatalog(const char *filename)
 }
 
 /**
- * xmlExpandCatalog:
- * @catal:  a catalog
- * @filename:  a file path
- *
  * Load the catalog and expand the existing catal structure.
  * This can be either an XML Catalog or an SGML Catalog
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param catal  a catalog
+ * @param filename  a file path
+ * @returns 0 in case of success, -1 in case of error
  */
 static int
 xmlExpandCatalog(xmlCatalogPtr catal, const char *filename)
 {
-    int ret;
-
     if ((catal == NULL) || (filename == NULL))
 	return(-1);
 
-
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (catal->type == XML_SGML_CATALOG_TYPE) {
 	xmlChar *content;
+        int ret;
 
 	content = xmlLoadFileContent(filename);
 	if (content == NULL)
@@ -2714,7 +2683,9 @@ xmlExpandCatalog(xmlCatalogPtr catal, co
 	    return(-1);
 	}
 	xmlFree(content);
-    } else {
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
 	xmlCatalogEntryPtr tmp, cur;
 	tmp = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL,
 		       NULL, BAD_CAST filename, xmlCatalogDefaultPrefer, NULL);
@@ -2731,17 +2702,17 @@ xmlExpandCatalog(xmlCatalogPtr catal, co
 }
 
 /**
- * xmlACatalogResolveSystem:
- * @catal:  a Catalog
- * @sysID:  the system ID string
- *
  * Try to lookup the catalog resource for a system ID
  *
- * Returns the resource if found or NULL otherwise, the value returned
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param sysID  the system ID string
+ * @returns the resource if found or NULL otherwise, the value returned
  *      must be freed by the caller.
  */
 xmlChar *
-xmlACatalogResolveSystem(xmlCatalogPtr catal, const xmlChar *sysID) {
+xmlACatalogResolveSystem(xmlCatalog *catal, const xmlChar *sysID) {
     xmlChar *ret = NULL;
 
     if ((sysID == NULL) || (catal == NULL))
@@ -2751,32 +2722,35 @@ xmlACatalogResolveSystem(xmlCatalogPtr c
 	xmlCatalogPrintDebug(
 		"Resolve sysID %s\n", sysID);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	ret = xmlCatalogListXMLResolve(catal->xml, NULL, sysID);
-	if (ret == XML_CATAL_BREAK)
-	    ret = NULL;
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	const xmlChar *sgml;
 
 	sgml = xmlCatalogGetSGMLSystem(catal->sgml, sysID);
 	if (sgml != NULL)
 	    ret = xmlStrdup(sgml);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	ret = xmlCatalogListXMLResolve(catal->xml, NULL, sysID);
+	if (ret == XML_CATAL_BREAK)
+	    ret = NULL;
     }
     return(ret);
 }
 
 /**
- * xmlACatalogResolvePublic:
- * @catal:  a Catalog
- * @pubID:  the public ID string
- *
  * Try to lookup the catalog local reference associated to a public ID in that catalog
  *
- * Returns the local resource if found or NULL otherwise, the value returned
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param pubID  the public ID string
+ * @returns the local resource if found or NULL otherwise, the value returned
  *      must be freed by the caller.
  */
 xmlChar *
-xmlACatalogResolvePublic(xmlCatalogPtr catal, const xmlChar *pubID) {
+xmlACatalogResolvePublic(xmlCatalog *catal, const xmlChar *pubID) {
     xmlChar *ret = NULL;
 
     if ((pubID == NULL) || (catal == NULL))
@@ -2786,33 +2760,36 @@ xmlACatalogResolvePublic(xmlCatalogPtr c
 	xmlCatalogPrintDebug(
 		"Resolve pubID %s\n", pubID);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	ret = xmlCatalogListXMLResolve(catal->xml, pubID, NULL);
-	if (ret == XML_CATAL_BREAK)
-	    ret = NULL;
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	const xmlChar *sgml;
 
 	sgml = xmlCatalogGetSGMLPublic(catal->sgml, pubID);
 	if (sgml != NULL)
 	    ret = xmlStrdup(sgml);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	ret = xmlCatalogListXMLResolve(catal->xml, pubID, NULL);
+	if (ret == XML_CATAL_BREAK)
+	    ret = NULL;
     }
     return(ret);
 }
 
 /**
- * xmlACatalogResolve:
- * @catal:  a Catalog
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
-xmlACatalogResolve(xmlCatalogPtr catal, const xmlChar * pubID,
+xmlACatalogResolve(xmlCatalog *catal, const xmlChar * pubID,
                    const xmlChar * sysID)
 {
     xmlChar *ret = NULL;
@@ -2833,32 +2810,35 @@ xmlACatalogResolve(xmlCatalogPtr catal,
          }
     }
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-        ret = xmlCatalogListXMLResolve(catal->xml, pubID, sysID);
-	if (ret == XML_CATAL_BREAK)
-	    ret = NULL;
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
         const xmlChar *sgml;
 
         sgml = xmlCatalogSGMLResolve(catal, pubID, sysID);
         if (sgml != NULL)
             ret = xmlStrdup(sgml);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+        ret = xmlCatalogListXMLResolve(catal->xml, pubID, sysID);
+	if (ret == XML_CATAL_BREAK)
+	    ret = NULL;
     }
     return (ret);
 }
 
 /**
- * xmlACatalogResolveURI:
- * @catal:  a Catalog
- * @URI:  the URI
- *
  * Do a complete resolution lookup of an URI
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param URI  the URI
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
-xmlACatalogResolveURI(xmlCatalogPtr catal, const xmlChar *URI) {
+xmlACatalogResolveURI(xmlCatalog *catal, const xmlChar *URI) {
     xmlChar *ret = NULL;
 
     if ((URI == NULL) || (catal == NULL))
@@ -2868,55 +2848,62 @@ xmlACatalogResolveURI(xmlCatalogPtr cata
 	xmlCatalogPrintDebug(
 		"Resolve URI %s\n", URI);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	ret = xmlCatalogListXMLResolveURI(catal->xml, URI);
-	if (ret == XML_CATAL_BREAK)
-	    ret = NULL;
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	const xmlChar *sgml;
 
 	sgml = xmlCatalogSGMLResolve(catal, NULL, URI);
 	if (sgml != NULL)
             ret = xmlStrdup(sgml);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	ret = xmlCatalogListXMLResolveURI(catal->xml, URI);
+	if (ret == XML_CATAL_BREAK)
+	    ret = NULL;
     }
     return(ret);
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlACatalogDump:
- * @catal:  a Catalog
- * @out:  the file.
- *
  * Dump the given catalog to the given file.
+ *
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param out  the file.
  */
 void
-xmlACatalogDump(xmlCatalogPtr catal, FILE *out) {
+xmlACatalogDump(xmlCatalog *catal, FILE *out) {
     if ((out == NULL) || (catal == NULL))
 	return;
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	xmlDumpXMLCatalog(out, catal->xml);
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	xmlHashScan(catal->sgml, xmlCatalogDumpEntry, out);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	xmlDumpXMLCatalog(out, catal->xml);
     }
 }
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlACatalogAdd:
- * @catal:  a Catalog
- * @type:  the type of record to add to the catalog
- * @orig:  the system, public or prefix to match
- * @replace:  the replacement value for the match
- *
  * Add an entry in the catalog, it may overwrite existing but
  * different entries.
  *
- * Returns 0 if successful, -1 otherwise
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param type  the type of record to add to the catalog
+ * @param orig  the system, public or prefix to match
+ * @param replace  the replacement value for the match
+ * @returns 0 if successful, -1 otherwise
  */
 int
-xmlACatalogAdd(xmlCatalogPtr catal, const xmlChar * type,
+xmlACatalogAdd(xmlCatalog *catal, const xmlChar * type,
               const xmlChar * orig, const xmlChar * replace)
 {
     int res = -1;
@@ -2924,9 +2911,8 @@ xmlACatalogAdd(xmlCatalogPtr catal, cons
     if (catal == NULL)
 	return(-1);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-        res = xmlAddXMLCatalog(catal->xml, type, orig, replace);
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
         xmlCatalogEntryType cattype;
 
         cattype = xmlGetSGMLCatalogEntryType(type);
@@ -2941,82 +2927,87 @@ xmlACatalogAdd(xmlCatalogPtr catal, cons
             if (res < 0)
                 xmlFreeCatalogEntry(entry, NULL);
         }
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+        res = xmlAddXMLCatalog(catal->xml, type, orig, replace);
     }
     return (res);
 }
 
 /**
- * xmlACatalogRemove:
- * @catal:  a Catalog
- * @value:  the value to remove
- *
  * Remove an entry from the catalog
  *
- * Returns the number of entries removed if successful, -1 otherwise
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  a Catalog
+ * @param value  the value to remove
+ * @returns the number of entries removed if successful, -1 otherwise
  */
 int
-xmlACatalogRemove(xmlCatalogPtr catal, const xmlChar *value) {
+xmlACatalogRemove(xmlCatalog *catal, const xmlChar *value) {
     int res = -1;
 
     if ((catal == NULL) || (value == NULL))
 	return(-1);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	res = xmlDelXMLCatalog(catal->xml, value);
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	res = xmlHashRemoveEntry(catal->sgml, value, xmlFreeCatalogEntry);
 	if (res == 0)
 	    res = 1;
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	res = xmlDelXMLCatalog(catal->xml, value);
     }
     return(res);
 }
 
 /**
- * xmlNewCatalog:
- * @sgml:  should this create an SGML catalog
- *
  * create a new Catalog.
  *
- * Returns the xmlCatalogPtr or NULL in case of error
+ * @deprecated Internal function, don't use
+ *
+ * @param sgml  should this create an SGML catalog
+ * @returns the xmlCatalog or NULL in case of error
  */
-xmlCatalogPtr
+xmlCatalog *
 xmlNewCatalog(int sgml) {
     xmlCatalogPtr catal = NULL;
 
+    (void) sgml;
+
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (sgml) {
 	catal = xmlCreateNewCatalog(XML_SGML_CATALOG_TYPE,
 		                    xmlCatalogDefaultPrefer);
         if ((catal != NULL) && (catal->sgml == NULL))
 	    catal->sgml = xmlHashCreate(10);
     } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
 	catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE,
 		                    xmlCatalogDefaultPrefer);
+    }
     return(catal);
 }
 
 /**
- * xmlCatalogIsEmpty:
- * @catal:  should this create an SGML catalog
- *
  * Check is a catalog is empty
  *
- * Returns 1 if the catalog is empty, 0 if not, amd -1 in case of error.
+ * @deprecated Internal function, don't use
+ *
+ * @param catal  should this create an SGML catalog
+ * @returns 1 if the catalog is empty, 0 if not, amd -1 in case of error.
  */
 int
-xmlCatalogIsEmpty(xmlCatalogPtr catal) {
+xmlCatalogIsEmpty(xmlCatalog *catal) {
     if (catal == NULL)
 	return(-1);
 
-    if (catal->type == XML_XML_CATALOG_TYPE) {
-	if (catal->xml == NULL)
-	    return(1);
-	if ((catal->xml->type != XML_CATA_CATALOG) &&
-	    (catal->xml->type != XML_CATA_BROKEN_CATALOG))
-	    return(-1);
-	if (catal->xml->children == NULL)
-	    return(1);
-        return(0);
-    } else {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    if (catal->type == XML_SGML_CATALOG_TYPE) {
 	int res;
 
 	if (catal->sgml == NULL)
@@ -3026,6 +3017,17 @@ xmlCatalogIsEmpty(xmlCatalogPtr catal) {
 	    return(1);
 	if (res < 0)
 	    return(-1);
+    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+    {
+	if (catal->xml == NULL)
+	    return(1);
+	if ((catal->xml->type != XML_CATA_CATALOG) &&
+	    (catal->xml->type != XML_CATA_BROKEN_CATALOG))
+	    return(-1);
+	if (catal->xml->children == NULL)
+	    return(1);
+        return(0);
     }
     return(0);
 }
@@ -3037,8 +3039,6 @@ xmlCatalogIsEmpty(xmlCatalogPtr catal) {
  ************************************************************************/
 
 /**
- * xmlInitCatalogInternal:
- *
  * Do the catalog initialization only of global data, doesn't try to load
  * any catalog actually.
  */
@@ -3050,8 +3050,6 @@ xmlInitCatalogInternal(void) {
 }
 
 /**
- * xmlInitializeCatalog:
- *
  * Load the default system catalog.
  */
 void
@@ -3109,15 +3107,13 @@ xmlInitializeCatalog(void) {
 
 
 /**
- * xmlLoadCatalog:
- * @filename:  a file path
- *
  * 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
  *
- * Returns 0 in case of success -1 in case of error
+ * @param filename  a file path
+ * @returns 0 in case of success -1 in case of error
  */
 int
 xmlLoadCatalog(const char *filename)
@@ -3148,13 +3144,12 @@ xmlLoadCatalog(const char *filename)
 }
 
 /**
- * xmlLoadCatalogs:
- * @pathss:  a list of directories separated by a colon or a space.
- *
  * 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
+ *
+ * @param pathss  a list of directories separated by a colon or a space.
  */
 void
 xmlLoadCatalogs(const char *pathss) {
@@ -3195,8 +3190,6 @@ xmlLoadCatalogs(const char *pathss) {
 }
 
 /**
- * xmlCatalogCleanup:
- *
  * Free up all the memory associated with catalogs
  */
 void
@@ -3217,8 +3210,6 @@ xmlCatalogCleanup(void) {
 }
 
 /**
- * xmlCleanupCatalogInternal:
- *
  * Free global data.
  */
 void
@@ -3227,12 +3218,10 @@ xmlCleanupCatalogInternal(void) {
 }
 
 /**
- * xmlCatalogResolveSystem:
- * @sysID:  the system ID string
- *
  * Try to lookup the catalog resource for a system ID
  *
- * Returns the resource if found or NULL otherwise, the value returned
+ * @param sysID  the system ID string
+ * @returns the resource if found or NULL otherwise, the value returned
  *      must be freed by the caller.
  */
 xmlChar *
@@ -3247,12 +3236,10 @@ xmlCatalogResolveSystem(const xmlChar *s
 }
 
 /**
- * xmlCatalogResolvePublic:
- * @pubID:  the public ID string
- *
  * Try to lookup the catalog reference associated to a public ID
  *
- * Returns the resource if found or NULL otherwise, the value returned
+ * @param pubID  the public ID string
+ * @returns the resource if found or NULL otherwise, the value returned
  *      must be freed by the caller.
  */
 xmlChar *
@@ -3267,13 +3254,11 @@ xmlCatalogResolvePublic(const xmlChar *p
 }
 
 /**
- * xmlCatalogResolve:
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
@@ -3288,12 +3273,10 @@ xmlCatalogResolve(const xmlChar *pubID,
 }
 
 /**
- * xmlCatalogResolveURI:
- * @URI:  the URI
- *
  * Do a complete resolution lookup of an URI
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @param URI  the URI
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
@@ -3309,10 +3292,9 @@ xmlCatalogResolveURI(const xmlChar *URI)
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlCatalogDump:
- * @out:  the file.
- *
  * Dump all the global catalog content to the given file.
+ *
+ * @param out  the file.
  */
 void
 xmlCatalogDump(FILE *out) {
@@ -3327,17 +3309,15 @@ xmlCatalogDump(FILE *out) {
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlCatalogAdd:
- * @type:  the type of record to add to the catalog
- * @orig:  the system, public or prefix to match
- * @replace:  the replacement value for the match
- *
  * 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();
+ * default shared catalog put in place by #xmlInitializeCatalog;
  *
- * Returns 0 if successful, -1 otherwise
+ * @param type  the type of record to add to the catalog
+ * @param orig  the system, public or prefix to match
+ * @param replace  the replacement value for the match
+ * @returns 0 if successful, -1 otherwise
  */
 int
 xmlCatalogAdd(const xmlChar *type, const xmlChar *orig, const xmlChar *replace) {
@@ -3369,12 +3349,10 @@ xmlCatalogAdd(const xmlChar *type, const
 }
 
 /**
- * xmlCatalogRemove:
- * @value:  the value to remove
- *
  * Remove an entry from the catalog
  *
- * Returns the number of entries removed if successful, -1 otherwise
+ * @param value  the value to remove
+ * @returns the number of entries removed if successful, -1 otherwise
  */
 int
 xmlCatalogRemove(const xmlChar *value) {
@@ -3389,12 +3367,11 @@ xmlCatalogRemove(const xmlChar *value) {
     return(res);
 }
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 /**
- * xmlCatalogConvert:
- *
  * Convert all the SGML catalog entries as XML ones
  *
- * Returns the number of entries converted if successful, -1 otherwise
+ * @returns the number of entries converted if successful, -1 otherwise
  */
 int
 xmlCatalogConvert(void) {
@@ -3408,6 +3385,7 @@ xmlCatalogConvert(void) {
     xmlRMutexUnlock(&xmlCatalogMutex);
     return(res);
 }
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
 
 /************************************************************************
  *									*
@@ -3416,15 +3394,13 @@ xmlCatalogConvert(void) {
  ************************************************************************/
 
 /**
- * xmlCatalogGetDefaults:
- *
- * DEPRECATED: Use XML_PARSE_NO_SYS_CATALOG and
- * XML_PARSE_CATALOG_PI.
- *
  * Used to get the user preference w.r.t. to what catalogs should
  * be accepted
  *
- * Returns the current xmlCatalogAllow value
+ * @deprecated Use XML_PARSE_NO_SYS_CATALOG and
+ * XML_PARSE_CATALOG_PI.
+ *
+ * @returns the current xmlCatalogAllow value
  */
 xmlCatalogAllow
 xmlCatalogGetDefaults(void) {
@@ -3432,14 +3408,13 @@ xmlCatalogGetDefaults(void) {
 }
 
 /**
- * xmlCatalogSetDefaults:
- * @allow:  what catalogs should be accepted
+ * Used to set the user preference w.r.t. to what catalogs should
+ * be accepted
  *
- * DEPRECATED: Use XML_PARSE_NO_SYS_CATALOG and
+ * @deprecated Use XML_PARSE_NO_SYS_CATALOG and
  * XML_PARSE_CATALOG_PI.
  *
- * Used to set the user preference w.r.t. to what catalogs should
- * be accepted
+ * @param allow  what catalogs should be accepted
  */
 void
 xmlCatalogSetDefaults(xmlCatalogAllow allow) {
@@ -3467,16 +3442,14 @@ xmlCatalogSetDefaults(xmlCatalogAllow al
 }
 
 /**
- * xmlCatalogSetDefaultPrefer:
- * @prefer:  the default preference for delegation
- *
- * DEPRECATED: This setting is global and not thread-safe.
- *
  * 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
  *
- * Returns the previous value of the default preference for delegation
+ * @deprecated This setting is global and not thread-safe.
+ *
+ * @param prefer  the default preference for delegation
+ * @returns the previous value of the default preference for delegation
  */
 xmlCatalogPrefer
 xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer) {
@@ -3504,13 +3477,11 @@ xmlCatalogSetDefaultPrefer(xmlCatalogPre
 }
 
 /**
- * xmlCatalogSetDebug:
- * @level:  the debug level of catalogs required
- *
  * Used to set the debug level for catalog operation, 0 disable
  * debugging, 1 enable it
  *
- * Returns the previous value of the catalog debugging level
+ * @param level  the debug level of catalogs required
+ * @returns the previous value of the catalog debugging level
  */
 int
 xmlCatalogSetDebug(int level) {
@@ -3530,10 +3501,9 @@ xmlCatalogSetDebug(int level) {
  ************************************************************************/
 
 /**
- * xmlCatalogFreeLocal:
- * @catalogs:  a document's list of catalogs
- *
  * Free up the memory associated to the catalog list
+ *
+ * @param catalogs  a document's list of catalogs
  */
 void
 xmlCatalogFreeLocal(void *catalogs) {
@@ -3546,13 +3516,11 @@ xmlCatalogFreeLocal(void *catalogs) {
 
 
 /**
- * xmlCatalogAddLocal:
- * @catalogs:  a document's list of catalogs
- * @URL:  the URL to a new local catalog
- *
  * Add the new entry to the catalog list
  *
- * Returns the updated list
+ * @param catalogs  a document's list of catalogs
+ * @param URL  the URL to a new local catalog
+ * @returns the updated list
  */
 void *
 xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) {
@@ -3583,15 +3551,13 @@ xmlCatalogAddLocal(void *catalogs, const
 }
 
 /**
- * xmlCatalogLocalResolve:
- * @catalogs:  a document's list of catalogs
- * @pubID:  the public ID string
- * @sysID:  the system ID string
- *
  * Do a complete resolution lookup of an External Identifier using a
  * document's private catalog list
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @param catalogs  a document's list of catalogs
+ * @param pubID  the public ID string
+ * @param sysID  the system ID string
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
@@ -3626,14 +3592,12 @@ xmlCatalogLocalResolve(void *catalogs, c
 }
 
 /**
- * xmlCatalogLocalResolveURI:
- * @catalogs:  a document's list of catalogs
- * @URI:  the URI
- *
  * Do a complete resolution lookup of an URI using a
  * document's private catalog list
  *
- * Returns the URI of the resource or NULL if not found, it must be freed
+ * @param catalogs  a document's list of catalogs
+ * @param URI  the URI
+ * @returns the URI of the resource or NULL if not found, it must be freed
  *      by the caller.
  */
 xmlChar *
@@ -3663,13 +3627,12 @@ xmlCatalogLocalResolveURI(void *catalogs
  *									*
  ************************************************************************/
 /**
- * xmlCatalogGetSystem:
- * @sysID:  the system ID string
- *
  * Try to lookup the catalog reference associated to a system ID
- * DEPRECATED, use xmlCatalogResolveSystem()
  *
- * Returns the resource if found or NULL otherwise.
+ * @deprecated use #xmlCatalogResolveSystem
+ *
+ * @param sysID  the system ID string
+ * @returns the resource if found or NULL otherwise.
  */
 const xmlChar *
 xmlCatalogGetSystem(const xmlChar *sysID) {
@@ -3701,19 +3664,20 @@ xmlCatalogGetSystem(const xmlChar *sysID
 	}
     }
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (xmlDefaultCatalog != NULL)
 	return(xmlCatalogGetSGMLSystem(xmlDefaultCatalog->sgml, sysID));
+#endif
     return(NULL);
 }
 
 /**
- * xmlCatalogGetPublic:
- * @pubID:  the public ID string
- *
  * Try to lookup the catalog reference associated to a public ID
- * DEPRECATED, use xmlCatalogResolvePublic()
  *
- * Returns the resource if found or NULL otherwise.
+ * @deprecated use #xmlCatalogResolvePublic
+ *
+ * @param pubID  the public ID string
+ * @returns the resource if found or NULL otherwise.
  */
 const xmlChar *
 xmlCatalogGetPublic(const xmlChar *pubID) {
@@ -3745,8 +3709,10 @@ xmlCatalogGetPublic(const xmlChar *pubID
 	}
     }
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (xmlDefaultCatalog != NULL)
 	return(xmlCatalogGetSGMLPublic(xmlDefaultCatalog->sgml, pubID));
+#endif
     return(NULL);
 }
 
diff -pruN 2.14.6+dfsg-0.1/chvalid.c 2.15.0+dfsg-0.3/chvalid.c
--- 2.14.6+dfsg-0.1/chvalid.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/chvalid.c	2025-09-15 11:55:59.000000000 +0000
@@ -1,13 +1,6 @@
 /*
  * chvalid.c:	this module implements the character range
  *		validation APIs
- *
- * This file is automatically generated from the cvs source
- * definition files using the genChRanges.py Python script
- *
- * Generation date: Mon Mar 27 11:09:48 2006
- * Sources: chvalid.def
- * William Brack <wbrack@mmm.com.hk>
  */
 
 #define IN_LIBXML
@@ -24,147 +17,16 @@
  * allowed.
  *
  */
-const unsigned char xmlIsPubidChar_tab[256] = {
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
-    0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
-    0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
-    0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00 };
-
-static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131},
-    {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3},
-    {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8},
-    {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
-    {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da},
-    {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3},
-    {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481},
-    {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb},
-    {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559},
-    {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
-    {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce},
-    {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939},
-    {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990},
-    {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
-    {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
-    {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
-    {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
-    {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91},
-    {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
-    {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
-    {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39},
-    {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a},
-    {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
-    {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
-    {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
-    {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
-    {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
-    {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10},
-    {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e},
-    {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82},
-    {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d},
-    {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5},
-    {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0},
-    {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47},
-    {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100},
-    {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c},
-    {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140},
-    {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155},
-    {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165},
-    {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173},
-    {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab},
-    {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2},
-    {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b},
-    {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
-    {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
-    {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
-    {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
-    {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
-    {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182},
-    {0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}};
-const xmlChRangeGroup xmlIsBaseCharGroup =
-	{197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0};
-
-static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff},
-    {0xe000, 0xfffd}};
-static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}};
-const xmlChRangeGroup xmlIsCharGroup =
-	{2, 1, xmlIsChar_srng, xmlIsChar_lrng};
-
-static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345},
-    {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
-    {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
-    {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df},
-    {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903},
-    {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954},
-    {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be},
-    {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
-    {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c},
-    {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48},
-    {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc},
-    {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03},
-    {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
-    {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8},
-    {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44},
-    {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83},
-    {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
-    {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
-    {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e},
-    {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd},
-    {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
-    {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b},
-    {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7},
-    {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f},
-    {0x3099, 0x3099}, {0x309a, 0x309a}};
-const xmlChRangeGroup xmlIsCombiningGroup =
-	{95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0};
-
-static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669},
-    {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
-    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
-    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
-    {0xf20, 0xf29}};
-const xmlChRangeGroup xmlIsDigitGroup =
-	{14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0};
-
-static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0},
-    {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46},
-    {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e},
-    {0x30fc, 0x30fe}};
-const xmlChRangeGroup xmlIsExtenderGroup =
-	{10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0};
-
-static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007},
-    {0x3021, 0x3029}, {0x4e00, 0x9fa5}};
-const xmlChRangeGroup xmlIsIdeographicGroup =
-	{3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0};
 
+#include "codegen/ranges.inc"
 
 /**
- * xmlCharInRange:
- * @val: character to be validated
- * @rptr: pointer to range to be used to validate
- *
  * Does a binary search of the range table to determine if char
  * is valid
  *
- * Returns: true if character valid, false otherwise
+ * @param val  character to be validated
+ * @param rptr  pointer to range to be used to validate
+ * @returns true if character valid, false otherwise
  */
 int
 xmlCharInRange (unsigned int val, const xmlChRangeGroup *rptr) {
@@ -184,7 +46,7 @@ xmlCharInRange (unsigned int val, const
 	    if ((unsigned short) val < sptr[mid].low) {
 		high = mid - 1;
 	    } else {
-	        if ((unsigned short) val > sptr[mid].high) {
+		if ((unsigned short) val > sptr[mid].high) {
 		    low = mid + 1;
 		} else {
 		    return 1;
@@ -203,7 +65,7 @@ xmlCharInRange (unsigned int val, const
 	    if (val < lptr[mid].low) {
 		high = mid - 1;
 	    } else {
-	        if (val > lptr[mid].high) {
+		if (val > lptr[mid].high) {
 		    low = mid + 1;
 		} else {
 		    return 1;
@@ -216,13 +78,10 @@ xmlCharInRange (unsigned int val, const
 
 
 /**
- * xmlIsBaseChar:
- * @ch:  character to validate
+ * @deprecated Use #xmlIsBaseChar_ch or #xmlIsBaseCharQ.
  *
- * This function is DEPRECATED.
- * Use xmlIsBaseChar_ch or xmlIsBaseCharQ instead
- *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsBaseChar(unsigned int ch) {
@@ -231,13 +90,10 @@ xmlIsBaseChar(unsigned int ch) {
 
 
 /**
- * xmlIsBlank:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
- * Use xmlIsBlank_ch or xmlIsBlankQ instead
+ * @deprecated Use #xmlIsBlank_ch or #xmlIsBlankQ.
  *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsBlank(unsigned int ch) {
@@ -246,13 +102,10 @@ xmlIsBlank(unsigned int ch) {
 
 
 /**
- * xmlIsChar:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
- * Use xmlIsChar_ch or xmlIsCharQ instead
+ * @deprecated Use #xmlIsChar_ch or #xmlIsCharQ.
  *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsChar(unsigned int ch) {
@@ -261,13 +114,10 @@ xmlIsChar(unsigned int ch) {
 
 
 /**
- * xmlIsCombining:
- * @ch:  character to validate
+ * @deprecated Use #xmlIsCombiningQ.
  *
- * This function is DEPRECATED.
- * Use xmlIsCombiningQ instead
- *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsCombining(unsigned int ch) {
@@ -276,13 +126,10 @@ xmlIsCombining(unsigned int ch) {
 
 
 /**
- * xmlIsDigit:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
- * Use xmlIsDigit_ch or xmlIsDigitQ instead
+ * @deprecated Use #xmlIsDigit_ch or #xmlIsDigitQ.
  *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsDigit(unsigned int ch) {
@@ -291,13 +138,10 @@ xmlIsDigit(unsigned int ch) {
 
 
 /**
- * xmlIsExtender:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
- * Use xmlIsExtender_ch or xmlIsExtenderQ instead
+ * @deprecated Use #xmlIsExtender_ch or #xmlIsExtenderQ.
  *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsExtender(unsigned int ch) {
@@ -306,13 +150,10 @@ xmlIsExtender(unsigned int ch) {
 
 
 /**
- * xmlIsIdeographic:
- * @ch:  character to validate
+ * @deprecated Use #xmlIsIdeographicQ.
  *
- * This function is DEPRECATED.
- * Use xmlIsIdeographicQ instead
- *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsIdeographic(unsigned int ch) {
@@ -321,13 +162,10 @@ xmlIsIdeographic(unsigned int ch) {
 
 
 /**
- * xmlIsPubidChar:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
- * Use xmlIsPubidChar_ch or xmlIsPubidCharQ instead
+ * @deprecated Use #xmlIsPubidChar_ch or #xmlIsPubidCharQ.
  *
- * Returns true if argument valid, false otherwise
+ * @param ch  character to validate
+ * @returns true if argument valid, false otherwise
  */
 int
 xmlIsPubidChar(unsigned int ch) {
diff -pruN 2.14.6+dfsg-0.1/codegen/charset.inc 2.15.0+dfsg-0.3/codegen/charset.inc
--- 2.14.6+dfsg-0.1/codegen/charset.inc	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/charset.inc	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,1223 @@
+/*
+ * Lookup tables for transcoding of 8-bit character sets.
+ *
+ * Generated with tools/genTranscode.py.
+ */
+
+static const unsigned short xmlunicodetable_windows_1252 [128] = {
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
+};
+
+static const unsigned char xmltranscodetable_windows_1252 [48 + 10 * 64] = {
+    0x00, 0x00, 0x03, 0x09, 0x00, 0x07, 0x05, 0x00,
+    0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x8f,
+    0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00,
+    0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00,
+    0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x9f, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x9e, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+};
+
+#if !defined(LIBXML_ICONV_ENABLED) && \
+    !defined(LIBXML_ICU_ENABLED) && \
+    defined(LIBXML_ISO8859X_ENABLED)
+
+static const unsigned short xmlunicodetable_ISO8859_2 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+    0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+    0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+    0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_2 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x05, 0x02, 0x04, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7,
+    0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+    0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
+    0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6,
+    0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef,
+    0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2,
+    0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00,
+    0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba,
+    0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9,
+    0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00,
+    0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7,
+    0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00,
+    0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7,
+    0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf,
+    0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7,
+    0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00,
+    0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7,
+    0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_3 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7,
+    0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b,
+    0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+    0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+    0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+    0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_3 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x05, 0x02, 0x04, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7,
+    0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+    0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7,
+    0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb,
+    0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00,
+    0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7,
+    0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+    0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7,
+    0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_4 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+    0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+    0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+    0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+    0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+    0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_4 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x05, 0x02, 0x03, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7,
+    0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf,
+    0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
+    0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+    0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec,
+    0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00,
+    0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3,
+    0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00,
+    0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc,
+    0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00,
+    0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+    0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00,
+    0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_5 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+    0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+    0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_5 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_6 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f,
+    0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+    0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+    0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+    0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+    0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_6 [48 + 4 * 64] = {
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf,
+    0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_7 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+    0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+    0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+    0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+    0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_7 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7,
+    0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00,
+    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00,
+    0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00,
+    0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_8 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_8 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_9 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_9 [48 + 5 * 64] = {
+    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_10 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+    0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+    0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+    0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_10 [48 + 7 * 64] = {
+    0x00, 0x00, 0x01, 0x06, 0x02, 0x03, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
+    0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+    0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec,
+    0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00,
+    0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6,
+    0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00,
+    0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb,
+    0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00,
+    0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00,
+    0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf,
+    0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00,
+    0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00,
+    0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef,
+    0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00,
+    0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_11 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+    0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+    0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+    0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+    0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+    0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+    0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+    0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f,
+    0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+    0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+    0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+    0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_11 [48 + 5 * 64] = {
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_13 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+    0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+    0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+    0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+    0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+    0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+    0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+    0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+    0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+    0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+    0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_13 [48 + 7 * 64] = {
+    0x00, 0x00, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7,
+    0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7,
+    0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00,
+    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00,
+    0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7,
+    0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf,
+    0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00,
+    0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7,
+    0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00,
+    0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba,
+    0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00,
+    0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00,
+    0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3,
+    0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00,
+    0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb,
+    0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed,
+    0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_14 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+    0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+    0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+    0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_14 [48 + 10 * 64] = {
+    0x00, 0x00, 0x01, 0x09, 0x04, 0x07, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7,
+    0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x03, 0x08, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe,
+    0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_15 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+    0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_15 [48 + 6 * 64] = {
+    0x00, 0x00, 0x01, 0x05, 0x00, 0x04, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7,
+    0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+    0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7,
+    0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf,
+    0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00,
+    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+};
+
+static const unsigned short xmlunicodetable_ISO8859_16 [128] = {
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+    0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+    0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+    0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+    0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
+};
+
+static const unsigned char xmltranscodetable_ISO8859_16 [48 + 9 * 64] = {
+    0x00, 0x00, 0x01, 0x08, 0x02, 0x03, 0x00, 0x00,
+    0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+    0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7,
+    0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00,
+    0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7,
+    0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5,
+    0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00,
+    0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00,
+    0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00,
+    0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7,
+    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+    0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00,
+    0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf,
+    0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7,
+    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+    0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00,
+    0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff,
+};
+
+#endif /* LIBXML_ISO8859X_ENABLED */
diff -pruN 2.14.6+dfsg-0.1/codegen/escape.inc 2.15.0+dfsg-0.3/codegen/escape.inc
--- 2.14.6+dfsg-0.1/codegen/escape.inc	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/escape.inc	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,66 @@
+static const char xmlEscapeContent[] = {
+      8, '&', '#', 'x', 'F', 'F', 'F', 'D', ';',   4, '&', '#',
+    '9', ';',   5, '&', '#', '1', '0', ';',   5, '&', '#', '1',
+    '3', ';',   6, '&', 'q', 'u', 'o', 't', ';',   5, '&', 'a',
+    'm', 'p', ';',   4, '&', 'l', 't', ';',   4, '&', 'g', 't',
+    ';',
+};
+
+static const signed char xmlEscapeTab[128] = {
+     0,  0,  0,  0,  0,  0,  0,  0,  0, -1, -1,  0,  0, 20,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+
+static const signed char xmlEscapeTabQuot[128] = {
+     0,  0,  0,  0,  0,  0,  0,  0,  0, -1, -1,  0,  0, 20,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    -1, -1, 26, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+
+static const signed char xmlEscapeTabAttr[128] = {
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  9, 14,  0,  0, 20,  0,  0,
+     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    -1, -1, 26, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+
+#ifdef LIBXML_HTML_ENABLED
+
+static const signed char htmlEscapeTab[128] = {
+     0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+
+static const signed char htmlEscapeTabAttr[128] = {
+     0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, 26, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+};
+
+#endif /* LIBXML_HTML_ENABLED */
diff -pruN 2.14.6+dfsg-0.1/codegen/genCharset.py 2.15.0+dfsg-0.3/codegen/genCharset.py
--- 2.14.6+dfsg-0.1/codegen/genCharset.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genCharset.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,379 @@
+#!/usr/bin/env python3
+
+def printHexTable(out, width, data):
+    s = ''
+
+    for i in range(len(data)):
+        if i % 8 == 0:
+            s += '    '
+        else:
+            s += ' '
+
+        s += f'0x{data[i]:{f"0{width}x"}},'
+
+        if i % 8 == 7:
+            out.write(s + '\n')
+            s = ''
+
+def genTranscodeTable(out, name, chars):
+    # For two-byte sequences, we look up a row with 64 entries.
+    row_ids = [ 0 ] * 32
+    # For three-byte sequences, we look up a plane with 64 entries,
+    # indexing into rows.
+    plane_ids = [ 0 ] * 16
+    data = [ 0 ] * 64
+
+    o = 0x80
+    for cp in chars:
+        if cp != 0:
+            if cp < 0x0800:
+                # The lower five bits of the first byte in a
+                # two-byte sequence are used to find the row.
+                i = cp // 64
+                index = row_ids[i]
+                if index == 0:
+                    index = len(data) // 64
+                    data += [ 0 ] * 64
+                    row_ids[i] = index
+            else:
+                # The lower four bits of the first byte in a
+                # three-byte sequence are used to find the plane.
+                i = cp // (64 * 64)
+                index2 = plane_ids[i]
+                if index2 == 0:
+                    index2 = len(data) // 64
+                    data += [ 0 ] * 64
+                    plane_ids[i] = index2
+
+                # The lower six bits of the second byte in a
+                # three-byte sequence are used to find the row.
+                i = index2 * 64 + cp // 64 % 64
+                index = data[i]
+                if index == 0:
+                    index = len(data) // 64
+                    data += [ 0 ] * 64
+                    data[i] = index
+
+            # The lower six bits in the last byte are
+            # used to lookup the codepoint.
+            data[index * 64 + cp % 64] = o
+
+        o += 1
+
+    out.write('static const unsigned short ')
+    out.write(f'xmlunicodetable_{name} [128] = {{\n')
+    printHexTable(out, 4, chars)
+    out.write('};\n\n')
+
+    num_chunks = len(data) // 64
+    out.write('static const unsigned char ')
+    out.write(f'xmltranscodetable_{name} [48 + {num_chunks} * 64] = {{\n')
+    printHexTable(out, 2, row_ids)
+    printHexTable(out, 2, plane_ids)
+    printHexTable(out, 2, data)
+    out.write('};\n\n')
+
+out = open(f'codegen/charset.inc', 'w')
+
+out.write('''/*
+ * Lookup tables for transcoding of 8-bit character sets.
+ *
+ * Generated with tools/genTranscode.py.
+ */
+
+''')
+
+genTranscodeTable(out, 'windows_1252', [
+    0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+    0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x017d, 0x008f,
+    0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+    0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x017e, 0x0178,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
+])
+
+out.write(r'''#if !defined(LIBXML_ICONV_ENABLED) && \
+    !defined(LIBXML_ICU_ENABLED) && \
+    defined(LIBXML_ISO8859X_ENABLED)
+
+''')
+
+genTranscodeTable(out, 'ISO8859_2', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+    0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+    0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+    0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
+])
+
+genTranscodeTable(out, 'ISO8859_3', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7,
+    0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b,
+    0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+    0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+    0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+    0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
+])
+
+genTranscodeTable(out, 'ISO8859_4', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+    0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+    0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+    0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+    0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+    0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
+])
+
+genTranscodeTable(out, 'ISO8859_5', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+    0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+    0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
+])
+
+genTranscodeTable(out, 'ISO8859_6', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f,
+    0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+    0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+    0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+    0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+    0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+])
+
+genTranscodeTable(out, 'ISO8859_7', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+    0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+    0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+    0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+    0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+    0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+    0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000,
+])
+
+genTranscodeTable(out, 'ISO8859_8', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017,
+    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+    0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000,
+])
+
+genTranscodeTable(out, 'ISO8859_9', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+])
+
+genTranscodeTable(out, 'ISO8859_10', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+    0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+    0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+    0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
+])
+
+genTranscodeTable(out, 'ISO8859_11', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+    0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+    0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+    0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+    0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+    0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+    0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+    0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f,
+    0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+    0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+    0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+    0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000,
+])
+
+genTranscodeTable(out, 'ISO8859_13', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+    0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+    0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+    0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+    0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+    0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+    0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+    0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+    0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+    0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+    0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
+])
+
+genTranscodeTable(out, 'ISO8859_14', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+    0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+    0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+    0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
+])
+
+genTranscodeTable(out, 'ISO8859_15', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+    0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
+])
+
+genTranscodeTable(out, 'ISO8859_16', [
+    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
+    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
+    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
+    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
+    0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+    0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+    0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+    0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+    0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+    0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+    0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+    0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+    0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+    0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
+])
+
+out.write('#endif /* LIBXML_ISO8859X_ENABLED */\n')
+
+out.close()
diff -pruN 2.14.6+dfsg-0.1/codegen/genEscape.py 2.15.0+dfsg-0.3/codegen/genEscape.py
--- 2.14.6+dfsg-0.1/codegen/genEscape.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genEscape.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+
+entities = [
+    [ '',   '&#xFFFD;' ],
+    [ '\t', '&#9;' ],
+    [ '\n', '&#10;' ],
+    [ '\r', '&#13;' ],
+    [ '"',  '&quot;' ],
+    [ '&',  '&amp;' ],
+    [ '<',  '&lt;' ],
+    [ '>',  '&gt;' ],
+]
+
+offset = [ None ] * 128
+
+def gen_content(out):
+    pos = 0
+    r = ''
+
+    for rec in entities:
+        char, repl = rec
+
+        if char:
+            offset[ord(char)] = pos
+
+        if pos % 12 == 0: r += '\n    '
+        else: r += ' '
+        r += '%3d,' % len(repl)
+        pos += 1
+
+        for c in repl:
+            if pos % 12 == 0: r += '\n    '
+            else: r += ' '
+            r += "'%s'," % c
+            pos += 1
+
+    out.write('static const char xmlEscapeContent[] = {%s\n};\n\n' % r)
+
+def gen_tab(out, name, escape, is_xml):
+    r = ''
+
+    for i in range(0x80):
+
+        if chr(i) in escape:
+            v = offset[i]
+        elif i == 0:
+            v = 0
+        elif is_xml and i < 32 and i != 9 and i != 10:
+            v = 0
+        else:
+            v = -1
+
+        if i % 16 == 0: r += '\n    '
+        else: r += ' '
+        r += '%2d,' % v
+
+    out.write('static const signed char %s[128] = {%s\n};\n\n' % (name, r))
+
+with open('codegen/escape.inc', 'w') as out:
+    gen_content(out)
+
+    gen_tab(out, 'xmlEscapeTab', '\r&<>', True)
+    gen_tab(out, 'xmlEscapeTabQuot', '\r"&<>', True)
+    gen_tab(out, 'xmlEscapeTabAttr', '\t\n\r"&<>', True)
+
+    out.write('#ifdef LIBXML_HTML_ENABLED\n\n')
+    gen_tab(out, 'htmlEscapeTab', '&<>', False)
+    gen_tab(out, 'htmlEscapeTabAttr', '"&<>', False)
+    out.write('#endif /* LIBXML_HTML_ENABLED */\n')
diff -pruN 2.14.6+dfsg-0.1/codegen/genHtml5Ent.py 2.15.0+dfsg-0.3/codegen/genHtml5Ent.py
--- 2.14.6+dfsg-0.1/codegen/genHtml5Ent.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genHtml5Ent.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,170 @@
+#!/usr/bin/env python3
+
+import json
+import sys
+from dataclasses import dataclass
+
+# The basic idea is to find named character references using binary
+# search. Since entity strings may not have a terminator, this doesn't
+# work if one entity string is a prefix of another. In this case,
+# we branch to a subtable after matching the prefix.
+#
+# We create separate initial tables based on the first character
+# of the entity name.
+#
+# The following tables are generated:
+#
+# htmlEntAlpha:   start and end of initial tables, indexing into
+#                 htmlEntValues
+# htmlEntValues:  concatenation of all table values, which index into
+#                 htmlEntStrings
+# htmlEntStrings: variable sized records containing entity name,
+#                 replacement and optionally the position of a
+#                 subtable
+
+try:
+    with open('entities.json') as json_data:
+        ents = json.load(json_data)
+except FileNotFoundError:
+    print('entities.json not found, try curl -LJO',
+          'https://html.spec.whatwg.org/entities.json')
+    sys.exit(1)
+
+def to_cchars(s):
+    r = []
+
+    for c in s.encode():
+        if c >= 0x20 and c <= 0x7E and c != ord("'") and c != ord('\\'):
+            v = f"'{chr(c)}'"
+        else:
+            v = c
+        r += [ v ]
+
+    return r
+
+@dataclass
+class PrefixStackEntry:
+    prefix: str
+    table_id: int
+
+@dataclass
+class AlphaFixup:
+    table_id: int
+    char: int
+
+@dataclass
+class StringFixup:
+    table_id: int
+    string_index: int
+    super_table_id: int
+    super_offset: int
+
+# Remove entity strings without trailing semicolon
+keys = (key for key in ents.keys() if key.endswith(';'))
+
+# Sort entity strings
+keys = sorted(keys, key=lambda k: k[1:-1])
+
+strings = []
+tables = []
+prefix_stack = []
+alpha_fixups = []
+string_fixups = []
+for i in range(64):
+    tables.append([])
+
+for i, key in enumerate(keys):
+    name = key[1:-1]
+
+    next_name = None
+    if i + 1 < len(keys):
+        next_name = keys[i+1][1:-1]
+
+    while prefix_stack and not name.startswith(prefix_stack[-1].prefix):
+        prefix_stack.pop()
+
+    # First character is initial prefix
+    if not prefix_stack:
+        table_id = len(tables)
+        tables.append([])
+
+        prefix_stack.append(PrefixStackEntry(name[0], table_id))
+        alpha_fixups.append(AlphaFixup(table_id, ord(name[0]) % 64))
+
+    string_index = len(strings)
+    table = tables[prefix_stack[-1].table_id]
+    table_index = len(table)
+    table.append(string_index)
+
+    name_offset = len(prefix_stack[-1].prefix)
+    name_chars = to_cchars(name[name_offset:])
+    repl_chars = to_cchars(ents[key]['characters'])
+    semicolon_flag = 0
+    if key[:-1] in ents:
+        semicolon_flag = 0x80
+
+    if next_name and next_name.startswith(name):
+        # Create subtable
+
+        strings += [
+            len(name_chars) | semicolon_flag | 0x40, *name_chars,
+            0, 0, # subtable position, to be fixed up
+            len(repl_chars), *repl_chars,
+        ]
+
+        table_id = len(tables)
+        tables.append([])
+
+        fixup_index = string_index + 1 + len(name_chars)
+        string_fixups.append(StringFixup(
+            table_id, fixup_index, prefix_stack[-1].table_id, table_index,
+        ))
+
+        prefix_stack.append(PrefixStackEntry(name, table_id))
+    else:
+        strings += [
+            len(name_chars) | semicolon_flag, *name_chars,
+            len(repl_chars), *repl_chars,
+        ]
+
+# Concat tables and record ranges
+ranges = [ 0 ]
+values = []
+for table in tables:
+    values += table
+    ranges.append(len(values))
+
+# Create alpha table
+alpha = [ 0 ] * (59 * 3)
+for fixup in alpha_fixups:
+    table_id, c = fixup.table_id, fixup.char
+    start = ranges[table_id]
+    end = ranges[table_id+1]
+    alpha[c*3:c*3+3] = [ start & 0xFF, start >> 8, end - start ]
+
+# Fix up subtable positions
+for fixup in string_fixups:
+    table_id, i = fixup.table_id, fixup.string_index
+    start = ranges[table_id]
+    end = ranges[table_id+1]
+    super_index = ranges[fixup.super_table_id] + fixup.super_offset
+    strings[i:i+2] = [ start - super_index, end - start ]
+
+# Print tables
+
+def gen_table(ctype, cname, values, fmt, elems_per_line):
+    count = len(values)
+    r = ''
+
+    for i in range(count):
+        if i != 0: r += ','
+        if i % elems_per_line == 0: r += '\n    '
+        else: r += ' '
+        r += fmt % values[i]
+
+    return f'static const {ctype} {cname}[{count}] = {{{r}\n}};\n\n'
+
+with open('codegen/html5ent.inc', 'w') as out:
+    out.write(gen_table('unsigned char', 'htmlEntAlpha', alpha, '%3d', 15))
+    out.write(gen_table('unsigned short', 'htmlEntValues', values, '%5d', 10))
+    out.write(gen_table('unsigned char', 'htmlEntStrings', strings, '%3s', 15))
diff -pruN 2.14.6+dfsg-0.1/codegen/genHtml5LibTests.py 2.15.0+dfsg-0.3/codegen/genHtml5LibTests.py
--- 2.14.6+dfsg-0.1/codegen/genHtml5LibTests.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genHtml5LibTests.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,93 @@
+#!/usr/bin/env python3
+
+import glob
+import json
+import re
+
+state_map = {
+    'Data state':          0,
+    'RCDATA state':        1,
+    'RAWTEXT state':       2,
+    'PLAINTEXT state':     3,
+    'Script data state':   4,
+    'CDATA section state': 5,
+}
+
+for filename in sorted(glob.glob('../html5lib-tests/tokenizer/*.test')):
+    match = re.search('/([^/]*).test$', filename)
+    if match is None:
+        continue
+    testname = match[1]
+    if testname == 'xmlViolation':
+        continue
+
+    with open(filename) as json_data:
+        root = json.load(json_data)
+
+    test_out = open(f'test/html-tokenizer/{testname}.test', 'w')
+    result_out = open(f'result/html-tokenizer/{testname}.test', 'w')
+
+    counter = 0
+
+    for tests in root.values():
+        for test in tests:
+            input = test['input']
+
+            # Skip surrogate tests
+            if re.search(r'\\uD[89A-F]', input, re.I):
+                continue
+
+            input = re.sub(r'\\u([A-Fa-f0-9]{4})',
+                           lambda m: chr(int(m[1], 16)),
+                           input)
+
+            output = ''
+            for token in test['output']:
+                if token[1] == '\0':
+                    continue
+
+                output += token[0] + '\n'
+
+                if token[0] == 'DOCTYPE':
+                    for i in range(1, 4):
+                        if token[i] is None:
+                            output += '<none>\n'
+                        else:
+                            output += token[i] + '\n'
+                else:
+                    output += token[1]
+                    if token[0] == 'StartTag':
+                        for name, value in token[2].items():
+                            output += f' {name}={value}'
+                    output += '\n'
+
+            output = re.sub(r'\\u([A-Fa-f0-9]{4})',
+                            lambda m: chr(int(m[1], 16)),
+                            output)
+
+            # The HTML5 spec splits handling of U+0000 across
+            # tokenizer and tree builder. We already ignore
+            # U+0000 in body text when tokenizing.
+            output = re.sub(r'\x00', '', output)
+
+            for state in test.get('initialStates', ['Data state']):
+                state_no = state_map.get(state)
+                if state_no is None:
+                    raise Exception(f'{filename}: unknown state: {state}')
+                if state_no == 5:
+                    continue
+
+                start_tag = test.get('lastStartTag', '-')
+
+                test_out.write(f'{counter} {start_tag} {state_no} '
+                               f'{len(input.encode())}\n')
+                test_out.write(input)
+                test_out.write('\n')
+
+                result_out.write(f'{counter}\n')
+                result_out.write(output)
+
+                counter += 1
+
+        test_out.close()
+        result_out.close()
diff -pruN 2.14.6+dfsg-0.1/codegen/genRanges.py 2.15.0+dfsg-0.3/codegen/genRanges.py
--- 2.14.6+dfsg-0.1/codegen/genRanges.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genRanges.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+#
+# Portions of this script have been (shamelessly) stolen from the
+# prior work of Daniel Veillard (genUnicode.py)
+#
+# I, however, take full credit for any bugs, errors or difficulties :-)
+#
+# William Brack
+# October 2003
+#
+# 18 October 2003
+# Modified to maintain binary compatibility with previous library versions
+# by adding a suffix 'Q' ('quick') to the macro generated for the original,
+# function, and adding generation of a function (with the original name) which
+# instantiates the macro.
+#
+
+import sys
+import rangetab
+
+#
+# A routine to take a list of yes/no (1, 0) values and turn it
+# into a list of ranges.  This will later be used to determine whether
+# to generate single-byte lookup tables, or inline comparisons
+#
+def makeRange(lst):
+    ret = []
+    pos = 0
+    while pos < len(lst):
+        try:            # index generates exception if not present
+            s = lst[pos:].index(1)      # look for start of next range
+        except:
+            break                       # if no more, finished
+        pos += s                        # pointer to start of possible range
+        try:
+            e = lst[pos:].index(0)      # look for end of range
+            e += pos
+        except:                         # if no end, set to end of list
+            e = len(lst)
+        ret.append((pos, e-1))          # append range tuple to list
+        pos = e + 1                     # ready to check for next range
+    return ret
+
+# minTableSize gives the minimum number of ranges which must be present
+# before a 256-byte lookup table is produced.  If there are less than this
+# number, a macro with inline comparisons is generated
+minTableSize = 6
+
+# dictionary of functions, key=name, element contains char-map and range-list
+Functs = {}
+
+state = 0
+
+try:
+    defines = open("codegen/ranges.def", "r")
+except:
+    print("Missing codegen/ranges.def, aborting ...")
+    sys.exit(1)
+
+#
+# The lines in the .def file have three types:-
+#   name:   Defines a new function block
+#   ur:     Defines individual or ranges of unicode values
+#   end:    Indicates the end of the function block
+#
+# These lines are processed below.
+#
+for line in defines.readlines():
+    # ignore blank lines, or lines beginning with '#'
+    if line[0] == '#':
+        continue
+    line = line.strip()
+    if line == '':
+        continue
+    # split line into space-separated fields, then split on type
+    try:
+        fields = line.split(' ')
+        #
+        # name line:
+        #   validate any previous function block already ended
+        #   validate this function not already defined
+        #   initialize an entry in the function dicitonary
+        #       including a mask table with no values yet defined
+        #
+        if fields[0] == 'name':
+            name = fields[1]
+            if state != 0:
+                print("'name' %s found before previous name" \
+                      "completed" % (fields[1]))
+                continue
+            state = 1
+            if name in Functs:
+                print("name '%s' already present - may give" \
+                      " wrong results" % (name))
+            else:
+                # dict entry with two list elements (chdata, rangedata)
+                Functs[name] = [ [], [] ]
+                for v in range(256):
+                    Functs[name][0].append(0)
+        #
+        # end line:
+        #   validate there was a preceding function name line
+        #   set state to show no current function active
+        #
+        elif fields[0] == 'end':
+            if state == 0:
+                print("'end' found outside of function block")
+                continue
+            state = 0
+
+        #
+        # ur line:
+        #   validate function has been defined
+        #   process remaining fields on the line, which may be either
+        #       individual unicode values or ranges of values
+        #
+        elif fields[0] == 'ur':
+            if state != 1:
+                raise Exception("'ur' found outside of 'name' block")
+            for el in fields[1:]:
+                pos = el.find('..')
+                # pos <=0 means not a range, so must be individual value
+                if pos <= 0:
+                    # cheap handling of hex or decimal values
+                    if el[0:2] == '0x':
+                        value = int(el[2:],16)
+                    elif el[0] == "'":
+                        value = ord(el[1])
+                    else:
+                        value = int(el)
+                    if ((value < 0) | (value > 0x1fffff)):
+                        raise Exception('Illegal value (%s) in ch for'\
+                                ' name %s' % (el,name))
+                    # for ur we have only ranges (makes things simpler),
+                    # so convert val to range
+                    currange = (value, value)
+                # pos > 0 means this is a range, so isolate/validate
+                # the interval
+                else:
+                    # split the range into it's first-val, last-val
+                    (first, last) = el.split("..")
+                    # convert values from text into binary
+                    if first[0:2] == '0x':
+                        start = int(first[2:],16)
+                    elif first[0] == "'":
+                        start = ord(first[1])
+                    else:
+                        start = int(first)
+                    if last[0:2] == '0x':
+                        end = int(last[2:],16)
+                    elif last[0] == "'":
+                        end = ord(last[1])
+                    else:
+                        end = int(last)
+                    if (start < 0) | (end > 0x1fffff) | (start > end):
+                        raise Exception("Invalid range '%s'" % el)
+                    currange = (start, end)
+                # common path - 'currange' has the range, now take care of it
+                # We split on single-byte values vs. multibyte
+                if currange[1] < 0x100: # single-byte
+                    for ch in range(currange[0],currange[1]+1):
+                        # validate that value not previously defined
+                        if Functs[name][0][ch]:
+                            msg = "Duplicate ch value '%s' for name '%s'" % (el, name)
+                            raise Exception(msg)
+                        Functs[name][0][ch] = 1
+                else:                   # multi-byte
+                    if currange in Functs[name][1]:
+                        raise Exception("range already defined in" \
+                                " function")
+                    else:
+                        Functs[name][1].append(currange)
+
+    except:
+        print("Failed to process line: %s" % (line))
+        raise
+
+try:
+    output = open("codegen/ranges.inc", "w")
+except:
+    print("Failed to open codegen/ranges.inc")
+    sys.exit(1)
+
+#
+# Now output the generated data.
+#
+
+fkeys = sorted(Functs.keys())
+
+for f in fkeys:
+
+# First we convert the specified single-byte values into a group of ranges.
+    if max(Functs[f][0]) > 0:   # only check if at least one entry
+        rangeTable = makeRange(Functs[f][0])
+        numRanges = len(rangeTable)
+        if numRanges >= minTableSize:   # table is worthwhile
+            # write the constant data to the code file
+            output.write("const unsigned char %s_tab[256] = {\n" % f)
+            pline = "   "
+            for n in range(255):
+                pline += " 0x%02x," % Functs[f][0][n]
+                if len(pline) > 72:
+                    output.write(pline + "\n")
+                    pline = "   "
+            output.write(pline + " 0x%02x };\n\n" % Functs[f][0][255])
+
+#
+# Next we do the unicode ranges
+#
+
+for f in fkeys:
+    if len(Functs[f][1]) > 0:   # only generate if unicode ranges present
+        rangeTable = Functs[f][1]
+        rangeTable.sort()       # ascending tuple sequence
+        group = rangetab.gen_range_tables(output, f, '_srng', '_lrng',
+                                          rangeTable)
+
+        output.write("const xmlChRangeGroup %sGroup =\n\t%s;\n\n" %
+                     (f, group))
+
+output.close()
+
diff -pruN 2.14.6+dfsg-0.1/codegen/genTestApi.py 2.15.0+dfsg-0.3/codegen/genTestApi.py
--- 2.14.6+dfsg-0.1/codegen/genTestApi.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genTestApi.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,285 @@
+#!/usr/bin/env python3
+#
+# generate a test program for the API
+#
+
+import xml.etree.ElementTree as etree
+import os
+import re
+import sys
+
+import xmlmod
+
+# Globals
+
+dtors = {
+    'htmlDoc *': 'xmlFreeDoc',
+    'htmlParserCtxt *': 'htmlFreeParserCtxt',
+    'xmlAutomata *': 'xmlFreeAutomata',
+    'xmlBuffer *': 'xmlBufferFree',
+    'xmlCatalog *': 'xmlFreeCatalog',
+    'xmlChar *': 'xmlFree',
+    'xmlDOMWrapCtxt *': 'xmlDOMWrapFreeCtxt',
+    'xmlDict *': 'xmlDictFree',
+    'xmlDoc *': 'xmlFreeDoc',
+    'xmlDtd *': 'xmlFreeDtd',
+    'xmlEntitiesTable *': 'xmlFreeEntitiesTable',
+    'xmlElementContent *': 'xmlFreeElementContent',
+    'xmlEnumeration *': 'xmlFreeEnumeration',
+    'xmlList *': 'xmlListDelete',
+    'xmlModule *': 'xmlModuleFree',
+    'xmlMutex *': 'xmlFreeMutex',
+    'xmlNode *': 'xmlFreeNode',
+    'xmlNodeSet *': 'xmlXPathFreeNodeSet',
+    'xmlNs *': 'xmlFreeNs',
+    'xmlOutputBuffer *': 'xmlOutputBufferClose',
+    'xmlParserCtxt *': 'xmlFreeParserCtxt',
+    'xmlParserInputBuffer *': 'xmlFreeParserInputBuffer',
+    'xmlParserInput *': 'xmlFreeInputStream',
+    'xmlRMutex *': 'xmlFreeRMutex',
+    'xmlRelaxNGValidCtxt *': 'xmlRelaxNGFreeValidCtxt',
+    'xmlSaveCtxt *': 'xmlSaveClose',
+    'xmlSchemaFacet *': 'xmlSchemaFreeFacet',
+    'xmlSchemaVal *': 'xmlSchemaFreeValue',
+    'xmlSchemaValidCtxt *': 'xmlSchemaFreeValidCtxt',
+    'xmlTextWriter *': 'xmlFreeTextWriter',
+    'xmlURI *': 'xmlFreeURI',
+    'xmlValidCtxt *': 'xmlFreeValidCtxt',
+    'xmlXPathContext *': 'xmlXPathFreeContext',
+    'xmlXPathParserContext *': 'xmlXPathFreeParserContext',
+    'xmlXPathObject *': 'xmlXPathFreeObject',
+}
+
+blockList = {
+    # init/cleanup
+    'xmlCleanupParser': True,
+    'xmlInitParser': True,
+
+    # arg must be non-NULL
+    'xmlMemStrdupLoc': True,
+    'xmlMemoryStrdup': True,
+
+    # Returns void pointer which must be freed
+    'xmlMallocAtomicLoc': True,
+    'xmlMallocLoc': True,
+    'xmlMemMalloc': True,
+    'xmlMemRealloc': True,
+    'xmlReallocLoc': True,
+
+    # Would reset the error handler
+    'xmlSetStructuredErrorFunc': True,
+
+    # Prints errors
+    'xmlCatalogGetPublic': True,
+    'xmlCatalogGetSystem': True,
+    'xmlDebugDumpDTD': True,
+    'xmlDebugDumpDocument': True,
+    'xmlDebugDumpNode': True,
+    'xmlDebugDumpString': True,
+    'xmlParserError': True,
+    'xmlParserWarning': True,
+    'xmlParserValidityError': True,
+    'xmlParserValidityWarning': True,
+
+    # Internal parser unctions, ctxt must be non-NULL
+    'xmlParseAttribute': True,
+    'xmlParseAttributeListDecl': True,
+    'xmlParseAttributeType': True,
+    'xmlParseCDSect': True,
+    'xmlParseCharData': True,
+    'xmlParseCharRef': True,
+    'xmlParseComment': True,
+    'xmlParseDefaultDecl': True,
+    'xmlParseDocTypeDecl': True,
+    'xmlParseEndTag': True,
+    'xmlParseElement': True,
+    'xmlParseElementChildrenContentDecl': True,
+    'xmlParseElementContentDecl': True,
+    'xmlParseElementDecl': True,
+    'xmlParseElementMixedContentDecl': True,
+    'xmlParseEncName': True,
+    'xmlParseEncodingDecl': True,
+    'xmlParseEntityDecl': True,
+    'xmlParseEntityValue': True,
+    'xmlParseEnumeratedType': True,
+    'xmlParseEnumerationType': True,
+    'xmlParseExternalID': True,
+    'xmlParseExternalSubset': True,
+    'xmlParseMarkupDecl': True,
+    'xmlParseMisc': True,
+    'xmlParseName': True,
+    'xmlParseNmtoken': True,
+    'xmlParseNotationDecl': True,
+    'xmlParseNotationType': True,
+    'xmlParsePEReference': True,
+    'xmlParsePI': True,
+    'xmlParsePITarget': True,
+    'xmlParsePubidLiteral': True,
+    'xmlParseReference': True,
+    'xmlParseSDDecl': True,
+    'xmlParseStartTag': True,
+    'xmlParseSystemLiteral': True,
+    'xmlParseTextDecl': True,
+    'xmlParseVersionInfo': True,
+    'xmlParseVersionNum': True,
+    'xmlParseXMLDecl': True,
+    'xmlParserHandlePEReference': True,
+    'xmlSkipBlankChars': True,
+
+    # reads from stdin
+    'htmlReadFd': True,
+    'xmlReadFd': True,
+    'xmlReaderForFd': True,
+}
+
+# Parse document
+
+if len(sys.argv) > 1:
+    buildDir = sys.argv[1]
+else:
+    buildDir = '.'
+
+xmlDocDir = buildDir + '/doc/xml'
+
+filenames = {}
+functions = {}
+
+for file in os.listdir(xmlDocDir):
+    if not file.endswith('_8h.xml'):
+        continue
+
+    doc = etree.parse(xmlDocDir + '/' + file)
+
+    compound = doc.find('compounddef')
+    module = compound.find('compoundname').text
+    if not module.endswith('.h'):
+        continue
+    module = module[:-2]
+
+    for section in compound.findall('sectiondef'):
+        if section.get('kind') != 'func':
+            continue
+
+        for func in section.findall('memberdef'):
+            name = func.find('name').text
+            if name in blockList:
+                continue
+
+            module1, module2 = xmlmod.findModules(module, name)
+
+            cargs = []
+            skip = False
+            for arg in func.findall('param'):
+                atype = etree.tostring(arg.find('type'),
+                    method='text', encoding='unicode').rstrip()
+                if atype == 'void':
+                    continue
+                if atype == 'va_list':
+                    skip = True
+                    break
+                if re.search(r'(Ptr|\*)$', atype):
+                    cargs.append('NULL')
+                else:
+                    cargs.append('0')
+
+            if skip:
+                continue
+
+            mfunc = functions.get(module1)
+            if mfunc is None:
+                mfunc = {}
+                functions[module1] = mfunc
+
+            mmfunc = mfunc.get(module2)
+            if mmfunc is None:
+                mmfunc = {}
+                mfunc[module2] = mmfunc
+
+            code = f'{name}({', '.join(cargs)})'
+
+            rtype = etree.tostring(func.find('type'),
+                method='text', encoding='unicode').rstrip()
+            dtor = dtors.get(rtype)
+            if dtor is not None:
+                code = f'{dtor}({code})'
+            elif rtype == 'xmlHashTable *':
+                code = f'xmlHashFree({code}, NULL)'
+
+            mmfunc[name] = f'    {code};\n'
+
+# Write output
+
+test = open('testapi.c', 'w')
+
+test.write("""/*
+ * testapi.c: libxml2 API tester program.
+ *
+ * Automatically generated by gentest.py
+ *
+ * See Copyright for the status of this software.
+ */
+
+/* Disable deprecation warnings */
+#define XML_DEPRECATED
+
+#include "libxml.h"
+#include <libxml/HTMLparser.h>
+#include <libxml/HTMLtree.h>
+#include <libxml/c14n.h>
+#include <libxml/catalog.h>
+#include <libxml/debugXML.h>
+#include <libxml/parserInternals.h>
+#include <libxml/pattern.h>
+#include <libxml/relaxng.h>
+#include <libxml/schematron.h>
+#include <libxml/uri.h>
+#include <libxml/xinclude.h>
+#include <libxml/xlink.h>
+#include <libxml/xmlmodule.h>
+#include <libxml/xmlreader.h>
+#include <libxml/xmlsave.h>
+#include <libxml/xmlschemas.h>
+#include <libxml/xmlschemastypes.h>
+#include <libxml/xmlwriter.h>
+#include <libxml/xpathInternals.h>
+#include <libxml/xpointer.h>
+
+static void
+ignoreError(void *userData ATTRIBUTE_UNUSED,
+            const xmlError *error ATTRIBUTE_UNUSED) {
+}
+
+int
+main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+    xmlInitParser();
+    xmlSetStructuredErrorFunc(NULL, ignoreError);
+
+""")
+
+for module1 in sorted(functions.keys()):
+    mfunc = functions[module1]
+
+    if module1 != '':
+        test.write(f'#ifdef LIBXML_{module1}_ENABLED\n')
+
+    for module2 in sorted(mfunc.keys()):
+        mmfunc = mfunc[module2]
+
+        if module2 != '':
+            test.write(f'#ifdef LIBXML_{module2}_ENABLED\n')
+
+        for name in sorted(mmfunc.keys()):
+            test.write(mmfunc[name])
+
+        if module2 != '':
+            test.write(f'#endif /* LIBXML_{module2}_ENABLED */\n')
+
+    if module1 != '':
+        test.write(f'#endif /* LIBXML_{module1}_ENABLED */\n')
+
+    test.write('\n')
+
+test.write("""    xmlCleanupParser();
+    return 0;
+}
+""")
diff -pruN 2.14.6+dfsg-0.1/codegen/genUnicode.py 2.15.0+dfsg-0.3/codegen/genUnicode.py
--- 2.14.6+dfsg-0.1/codegen/genUnicode.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/genUnicode.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,252 @@
+#!/usr/bin/env python3
+#
+# Original script modified in November 2003 to take advantage of
+# the character-validation range routines, and updated to the
+# current Unicode information (Version 4.0.1)
+#
+# NOTE: there is an 'alias' facility for blocks which are not present in
+#	the current release, but are needed for ABI compatibility.  This
+#	must be accomplished MANUALLY!  Please see the comments below under
+#     'blockAliases'
+#
+import sys
+import string
+import rangetab
+
+#
+# blockAliases is a small hack - it is used for mapping block names which
+# were were used in the 3.1 release, but are missing or changed in the current
+# release.  The format is "OldBlockName:NewBlockName1[,NewBlockName2[,...]]"
+blockAliases = []
+blockAliases.append("CombiningMarksforSymbols:CombiningDiacriticalMarksforSymbols")
+blockAliases.append("Greek:GreekandCoptic")
+blockAliases.append("PrivateUse:PrivateUseArea,SupplementaryPrivateUseArea-A," + 
+	"SupplementaryPrivateUseArea-B")
+
+# minTableSize gives the minimum number of ranges which must be present
+# before a range table is produced.  If there are less than this
+# number, inline comparisons are generated
+minTableSize = 8
+
+blockfile = "Blocks-4.0.1.txt"
+catfile = "UnicodeData-4.0.1.txt"
+
+
+#
+# Now process the "blocks" file, reducing it to a dictionary
+# indexed by blockname, containing a tuple with the applicable
+# block range
+#
+BlockNames = {}
+try:
+    blocks = open(blockfile, "r")
+except:
+    print("Missing %s, aborting ..." % blockfile)
+    sys.exit(1)
+
+for line in blocks.readlines():
+    if line[0] == '#':
+        continue
+    line = line.strip()
+    if line == '':
+        continue
+    try:
+        fields = line.split(';')
+        range = fields[0].strip()
+        (start, end) = range.split("..")
+        name = fields[1].strip()
+        name = name.replace(' ', '')
+    except:
+        print("Failed to process line: %s" % (line))
+        continue
+    start = int(start, 16)
+    end = int(end, 16)
+    try:
+        BlockNames[name].append((start, end))
+    except:
+        BlockNames[name] = [(start, end)]
+blocks.close()
+print("Parsed %d blocks descriptions" % (len(BlockNames.keys())))
+
+for block in blockAliases:
+    alias = block.split(':')
+    alist = alias[1].split(',')
+    for comp in alist:
+        if comp in BlockNames:
+            if alias[0] not in BlockNames:
+                BlockNames[alias[0]] = []
+            for r in BlockNames[comp]:
+                BlockNames[alias[0]].append(r)
+        else:
+            print("Alias %s: %s not in Blocks" % (alias[0], comp))
+            continue
+
+#
+# Next process the Categories file. This is more complex, since
+# the file is in code sequence, and we need to invert it.  We use
+# a dictionary with index category-name, with each entry containing
+# all the ranges (codepoints) of that category.  Note that category
+# names comprise two parts - the general category, and the "subclass"
+# within that category.  Therefore, both "general category" (which is
+# the first character of the 2-character category-name) and the full
+# (2-character) name are entered into this dictionary.
+#
+try:
+    data = open(catfile, "r")
+except:
+    print("Missing %s, aborting ..." % catfile)
+    sys.exit(1)
+
+nbchar = 0;
+Categories = {}
+for line in data.readlines():
+    if line[0] == '#':
+        continue
+    line = line.strip()
+    if line == '':
+        continue
+    try:
+        fields = line.split(';')
+        point = fields[0].strip()
+        value = 0
+        while point != '':
+            value = value * 16
+            if point[0] >= '0' and point[0] <= '9':
+                value = value + ord(point[0]) - ord('0')
+            elif point[0] >= 'A' and point[0] <= 'F':
+                value = value + 10 + ord(point[0]) - ord('A')
+            elif point[0] >= 'a' and point[0] <= 'f':
+                value = value + 10 + ord(point[0]) - ord('a')
+            point = point[1:]
+        name = fields[2]
+    except:
+        print("Failed to process line: %s" % (line))
+        continue
+    
+    nbchar = nbchar + 1
+    # update entry for "full name"
+    try:
+        Categories[name].append(value)
+    except:
+        try:
+            Categories[name] = [value]
+        except:
+            print("Failed to process line: %s" % (line))
+    # update "general category" name
+    try:
+        Categories[name[0]].append(value)
+    except:
+        try:
+            Categories[name[0]] = [value]
+        except:
+            print("Failed to process line: %s" % (line))
+
+data.close()
+print("Parsed %d char generating %d categories" % (nbchar, len(Categories.keys())))
+
+#
+# The data is now all read.  Time to process it into a more useful form.
+#
+# reduce the number list into ranges
+for cat in Categories.keys():
+    list = Categories[cat]
+    start = -1
+    prev = -1
+    end = -1
+    ranges = []
+    for val in list:
+        if start == -1:
+            start = val
+            prev = val
+            continue
+        elif val == prev + 1:
+            prev = val
+            continue
+        elif prev == start:
+            ranges.append((prev, prev))
+            start = val
+            prev = val
+            continue
+        else:
+            ranges.append((start, prev))
+            start = val
+            prev = val
+            continue
+    if prev == start:
+        ranges.append((prev, prev))
+    else:
+        ranges.append((start, prev))
+    Categories[cat] = ranges
+
+#
+# Assure all data is in alphabetic order, since we will be doing binary
+# searches on the tables.
+#
+bkeys = sorted(BlockNames.keys())
+
+ckeys = sorted(Categories.keys())
+
+#
+# Generate the resulting files
+#
+try:
+    output = open("codegen/unicode.inc", "w")
+except:
+    print("Failed to open codegen/unicode.inc")
+    sys.exit(1)
+
+#
+# For any categories with more than minTableSize ranges we generate
+# a range table suitable for xmlCharInRange
+#
+for name in ckeys:
+    if len(Categories[name]) <= minTableSize or name == 'Cs':
+        continue
+    ranges = Categories[name]
+    group = rangetab.gen_range_tables(output, 'xml' + name, 'S', 'L', ranges)
+    output.write("static const xmlChRangeGroup xml%sG = %s;\n\n" %
+                 (name, group))
+
+for name in ckeys:
+    if name == 'Cs':
+        continue
+    ranges = Categories[name]
+    output.write("static int\nxmlUCSIsCat%s(int code) {\n" % name)
+    if len(Categories[name]) > minTableSize:
+        output.write("    return(xmlCharInRange((unsigned int)code, &xml%sG)"
+            % name)
+    else:
+        start = 1
+        for range in ranges:
+            (begin, end) = range;
+            if start:
+                output.write("    return(");
+                start = 0
+            else:
+                output.write(" ||\n           ");
+            if (begin == end):
+                output.write("(code == %s)" % (hex(begin)))
+            else:
+                output.write("((code >= %s) && (code <= %s))" % (
+                         hex(begin), hex(end)))
+    output.write(");\n}\n\n")
+
+#
+# Range tables for blocks
+#
+
+blockGroups = ''
+for block in bkeys:
+    name = block.replace('-', '')
+    ranges = BlockNames[block]
+    group = rangetab.gen_range_tables(output, 'xml' + name, 'S', 'L', ranges)
+    output.write("\n")
+    if blockGroups != '':
+        blockGroups += ",\n"
+    blockGroups += '  {"%s",\n   %s}' % (block, group)
+
+output.write("static const xmlUnicodeRange xmlUnicodeBlocks[] = {\n")
+output.write(blockGroups)
+output.write("\n};\n\n")
+
+output.close()
diff -pruN 2.14.6+dfsg-0.1/codegen/html5ent.inc 2.15.0+dfsg-0.3/codegen/html5ent.inc
--- 2.14.6+dfsg-0.1/codegen/html5ent.inc	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/html5ent.inc	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,1607 @@
+static const unsigned char htmlEntAlpha[177] = {
+      0,   0,   0,   0,   0,  19,  19,   0,  12,  31,   0,  31,  65,   0,  45,
+    119,   0,  24, 144,   0,   8, 152,   0,  19, 173,   0,  12, 185,   0,  20,
+    210,   0,   7, 217,   0,   8, 225,   0,  49,  28,   1,   9,  37,   1,  20,
+    108,   1,  23, 131,   1,  11, 150,   1,   4, 154,   1,  31, 198,   1,  22,
+    238,   1,  19,   4,   2,  30,  40,   2,  12,  57,   2,   5,  62,   2,   4,
+     66,   2,  10,  76,   2,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+      0,   0,   0,   0,   0,   0,   0,   0,   0,  86,   2,  25, 146,   2,  79,
+      5,   3,  52,  99,   3,  48, 163,   3,  46, 225,   3,  35,   5,   4,  25,
+     64,   4,  25,  92,   4,  28, 142,   4,   8, 150,   4,   9, 160,   4,  82,
+     56,   5,  24,  93,   5,  85,   2,   6,  41,  55,   6,  23, 121,   6,   9,
+    131,   6,  74, 233,   6,  58, 129,   7,  41, 185,   7,  42, 232,   7,  36,
+     18,   8,   9,  29,   8,  24,  53,   8,  11,  64,   8,  13
+};
+
+static const unsigned short htmlEntValues[2125] = {
+        0,     8,    13,    22,    31,    39,    45,    53,    62,    70,
+       78,    85,    93,   102,   119,   127,   136,   146,   155,   162,
+      175,   183,   193,   199,   210,   224,   231,   239,   248,   256,
+      264,   274,   281,   288,   297,   328,   339,   348,   357,   365,
+      376,   383,   393,   405,   412,   418,   431,   446,   460,   475,
+      503,   528,   547,   564,   577,   587,   606,   614,   627,   662,
+      671,   680,   306,   558,   689,   697,   716,   723,   730,   737,
+      747,   755,   764,   773,   779,   794,   802,   821,   838,   863,
+      881,   900,   911,   928,   937,   963,   988,  1000,  1019,  1038,
+     1062,  1079,  1102,  1130,  1154,  1174,  1192,  1209,  1230,  1251,
+     1286,  1298,  1321,  1342,  1370,  1392,  1421,  1444,  1457,  1466,
+      705,   788,   945,   953,  1266,  1274,  1362,  1413,  1434,  1475,
+     1481,  1487,  1496,  1505,  1513,  1519,  1526,  1534,  1543,  1554,
+     1562,  1582,  1606,  1614,  1623,  1633,  1654,  1669,  1677,  1685,
+     1691,  1698,  1708,  1644,  1724,  1730,  1738,  1759,  1784,  1793,
+     1803,  1817,  1825,  1832,  1836,  1851,  1860,  1869,  1877,  1883,
+     1890,  1898,  1904,  1913,  1940,  1960,  1978,  1993,  2014,  2030,
+     2039,  1846,  1931,  2045,  2054,  2062,  2067,  2075,  2082,  2098,
+     2106,  2124,  2132,  2141,  2157,  2170,  2177,  2185,  2192,  2201,
+     2209,  2215,  2222,  2229,  2238,  2276,  2309,  2327,  2345,  2353,
+     2362,  2369,  2377,  2386,  2394,  2246,  2253,  2266,  2285,  2295,
+     2401,  2409,  2415,  2423,  2432,  2441,  2450,  2458,  2465,  2472,
+     2480,  2489,  2495,  2503,  2512,  2521,  2528,  2532,  2541,  2550,
+     2558,  2572,  2580,  2589,  2598,  2604,  2624,  2662,  2677,  2698,
+     2719,  2747,  2760,  2778,  2797,  2831,  2867,  2887,  2906,  2932,
+     2956,  2969,  2987,  3007,  3024,  3039,  3051,  3069,  3082,  3090,
+     3111,  3120,  3137,  3159,  3177,  3194,  3216,  3234,  3243,  3261,
+     3280,  3288,  3295,  3304,  2639,  2647,  2739,  2810,  2820,  2849,
+     2857,  2924,  2948,  3098,  3310,  3317,  3323,  3338,  3351,  3359,
+     3372,  3381,  3389,  3394,  3401,  3410,  3419,  3428,  3434,  3457,
+     3479,  3500,  3525,  3549,  3567,  3576,  3584,  3595,  3614,  3622,
+     4343,  4352,  4361,  3631,  3645,  3656,  3678,  3690,  3714,  3725,
+     3815,  3834,  3850,  3889,  3960,  3987,  4008,  4050,  4069,  4109,
+     4140,  4173,  4199,  4253,  4281,  4327,  3702,  3739,  3749,  3765,
+     3779,  3788,  3805,  3869,  3879,  3900,  3910,  3922,  3933,  3950,
+     4023,  4035,  4089,  4099,  4130,  4163,  4189,  4214,  4226,  4241,
+     4271,  4293,  4303,  4317,  4366,  4374,  4383,  4391,  4397,  4406,
+     4414,  4423,  4431,  4439,  4449,  4458,  4482,  4500,  4506,  4515,
+     4524,  4533,  4543,  4550,  4561,  4574,  4589,  4608,  4620,  4626,
+     4634,  4640,  4645,  4657,  4674,  4682,  4778,  4787,  4690,  4738,
+     4746,  4756,  4703,  4713,  4728,  4771,  4793,  4799,  4807,  4815,
+     4824,  4833,  4839,  4848,  4856,  4873,  4882,  4891,  4897,  4966,
+     4973,  4979,  5000,  5038,  5054,  5076,  5098,  5127,  5141,  5176,
+     5213,  5234,  5254,  5281,  5306,  5320,  5328,  5344,  5359,  5367,
+     5374,  4866,  4905,  4922,  4943,  5016,  5024,  5119,  5155,  5165,
+     5195,  5203,  5273,  5298,  5389,  5398,  5405,  5414,  5423,  5459,
+     5467,  5485,  5503,  5522,  5538,  5546,  5561,  5570,  5578,  5665,
+     5674,  5682,  5711,  5760,  5772,  5779,  5431,  5439,  5447,  5454,
+     5590,  5607,  5630,  5655,  5620,  5645,  5691,  5701,  5725,  5735,
+     5750,  5788,  5810,  5800,  5818,  5826,  5835,  5843,  5850,  5855,
+     5861,  5870,  5879,  5885,  5893,  5906,  5914,  5931,  5944,  5989,
+     5998,  6011,  6020,  5955,  5965,  5979,  6029,  6038,  6057,  6065,
+     6074,  6082,  6088,  6097,  6105,  6114,  6122,  6132,  6146,  6162,
+     6182,  6202,  6210,  6219,  6254,  6269,  6286,  6307,  6318,  6333,
+     6351,  6370,  6386,  6394,  6403,  6412,  6048,  6193,  6232,  6240,
+     6297,  6379,  6419,  6428,  6436,  6442,  6459,  6466,  6476,  6541,
+     6558,  6566,  6575,  6584,  6453,  6486,  6498,  6509,  6527,  6594,
+     6602,  6611,  6619,  6628,  6637,  6645,  6650,  6659,  6668,  6675,
+     6682,  6689,  6698,  6706,  6712,  6720,  6729,  6738,  6745,  6752,
+     6761,  6770,  6776,  6783,  6801,  6808,  6815,  6823,  6832,  6841,
+     6850,  6891,  6899,  6914,  6923,  6934,  6943,  6951,  6959,  6968,
+     6973,  7012,  7147,  7155,  7164,  7223,  7231,  7240,  7245,  7263,
+     7272,  7279,  7291,  6858,  6866,  6872,  6879,  6886,  6907,  6982,
+     6990,  6996,  7006,  7021,  7027,  7034,  7100,  7124,  7132,  7138,
+     7044,  7051,  7058,  7065,  7072,  7079,  7086,  7093,  7109,  7118,
+     7172,  7178,  7187,  7193,  7200,  7205,  7216,  7256,  7300,  7308,
+     7320,  7334,  7347,  7367,  7377,  7396,  7415,  7424,  7430,  7439,
+     7457,  7468,  7476,  7486,  7493,  7501,  7512,  7520,  7530,  7541,
+     7551,  7562,  7574,  7587,  7599,  7610,  7629,  7646,  7658,  7668,
+     7680,  7690,  7706,  7721,  7768,  7777,  7786,  7795,  7804,  7813,
+     7835,  7843,  7852,  7869,  7879,  7888,  7897,  7906,  7915,  7949,
+     7958,  7967,  7976,  7985,  8031,  8041,  8050,  8059,  8068,  8077,
+     8111,  8123,  8134,  8146,  8155,  8164,  8173,  8182,  8228,  8238,
+     8246,  8255,  8264,  8273,  8289,  8312,  8329,  7360,  7389,  7406,
+     7451,  7740,  7749,  7758,  7823,  7861,  7925,  7931,  7937,  7943,
+     7995,  8001,  8007,  8013,  8019,  8025,  8087,  8093,  8099,  8105,
+     8192,  8198,  8204,  8210,  8216,  8222,  8283,  8297,  8303,  8322,
+     8339,  8345,  8353,  8359,  8368,  8428,  8437,  8445,  8454,  8463,
+     8472,  8480,  8498,  8505,  8513,  8524,  8542,  8550,  8557,  8577,
+     8583,  8730,  8749,  8772,  8785,  8823,  8841,  8851,  8860,  8870,
+     8886,  8895,  8904,  8913,  8929,  8945,  8954,  8965,  8976,  8985,
+     8994,  9012,  9071,  9089,  9104,  9119,  9131,  9145,  9154,  9172,
+     9191,  9200,  9209,  9221,  9230,  8377,  8385,  8395,  8403,  8411,
+     8419,  8491,  8533,  8568,  8592,  8598,  8697,  8703,  8713,  8721,
+     8605,  8612,  8628,  8645,  8653,  8662,  8673,  8685,  8741,  8758,
+     8766,  8781,  8795,  8802,  8813,  8833,  8879,  8923,  8939,  9006,
+     9021,  9031,  9039,  9047,  9055,  9062,  9083,  9240,  9248,  9256,
+     9266,  9276,  9284,  9300,  9311,  9319,  9328,  9334,  9370,  9376,
+     9384,  9395,  9405,  9413,  9422,  9431,  9466,  9472,  9482,  9491,
+     9528,  9535,  9545,  9555,  9563,  9572,  9627,  9645,  9658,  9676,
+     9695,  9715,  9727,  9737,  9747,  9756,  9763,  9771,  9780,  9789,
+     9805,  9814,  9823,  9834,  9841,  9294,  9342,  9352,  9360,  9441,
+     9460,  9451,  9499,  9520,  9508,  9580,  9597,  9607,  9616,  9589,
+     9799,  9853,  9862,  9870,  9879,  9889,  9898,  9913,  9923,  9929,
+     9936,  9942,  9951,  9959,  9991, 10032, 10040, 10065, 10089, 10095,
+    10103, 10111, 10120, 10137, 10146, 10167, 10177, 10188, 10197, 10211,
+    10226, 10234, 10244, 10262, 10274, 10283, 10292, 10300, 10309, 10317,
+    10323, 10329, 10336, 10344, 10350, 10359, 10374,  9908,  9967,  9975,
+     9983,  9999, 10010, 10016, 10024, 10051, 10059, 10075, 10082, 10130,
+    10155, 10162, 10255, 10390, 10407, 10413, 10423, 10433, 10442, 10452,
+    10460, 10469, 10477, 10485, 10494, 10503, 10510, 10519, 10529, 10545,
+    10557, 10566, 10576, 10585, 10595, 10605, 10615, 10625, 10635, 10644,
+    10654, 10664, 10674, 10684, 10694, 10704, 10713, 10722, 10539, 10731,
+    10745, 10754, 10769, 10776, 10785, 10793, 10799, 10806, 10901, 10909,
+    10923, 10932, 10939, 10965, 10972, 10991, 11014, 11023, 11032, 11039,
+    11047, 11069, 11191, 11207, 10739, 10764, 10814, 10820, 10844, 10828,
+    10834, 10852, 10859, 10883, 10869, 10877, 10894, 10917, 10947, 10953,
+    10959, 10982, 11000, 11008, 11057, 11063, 11075, 11082, 11090, 11098,
+    11107, 11117, 11129, 11138, 11147, 11159, 11172, 11182, 11218, 11226,
+    11236, 11243, 11253, 11262, 11286, 11294, 11302, 11322, 11332, 11342,
+    11350, 11362, 11374, 11383, 11393, 11410, 11428, 11437, 11447, 11456,
+    11466, 11475, 11485, 11272, 11280, 11314, 11495, 11504, 11524, 11531,
+    11539, 11546, 11554, 11563, 11605, 11613, 11621, 11630, 11642, 11654,
+    11662, 11670, 11678, 11776, 11783, 11791, 11800, 11807, 11816, 11825,
+    11834, 11878, 11894, 11902, 11512, 11519, 11571, 11580, 11588, 11597,
+    11686, 11695, 11713, 11721, 11705, 11729, 11737, 11747, 11757, 11767,
+    11844, 11850, 11858, 11872, 11866, 11886, 11909, 11917, 11923, 11931,
+    11939, 11948, 11957, 11966, 11974, 11989, 11998, 12004, 12012, 12021,
+    12028, 12035, 12044, 11984, 12053, 12062, 12070, 12080, 12089, 12103,
+    12111, 12120, 12132, 12142, 12151, 12174, 12181, 12189, 12257, 12291,
+    12300, 12309, 12317, 12325, 12334, 12345, 12356, 12365, 12374, 12383,
+    12389, 12395, 12403, 12420, 12431, 12443, 12451, 12766, 12776, 12786,
+    12794, 12808, 12817, 12834, 12843, 12850, 12894, 12903, 12924, 12931,
+    12950, 12973, 12982, 12991, 13000, 13009, 13026, 13048, 13062, 13080,
+    13097, 13115, 13124, 13133, 13143, 13154, 13164, 13172, 13196, 13211,
+    13220, 13232, 13249, 13256, 13265, 13275, 13284, 13291, 13313, 13319,
+    13336, 13345, 13441, 13453, 13464, 13480, 12097, 12161, 12167, 12199,
+    12214, 12221, 12228, 12235, 12242, 12250, 12207, 12266, 12274, 12282,
+    12414, 12459, 12482, 12500, 12516, 12533, 12558, 12578, 12600, 12617,
+    12623, 12647, 12473, 12552, 12631, 12637, 12655, 12662, 12686, 12704,
+    12716, 12725, 12736, 12748, 12757, 12672, 12680, 12697, 12802, 12828,
+    12858, 12866, 12877, 12886, 12915, 12941, 12959, 12967, 13181, 13190,
+    13204, 13243, 13301, 13307, 13330, 13351, 13358, 13366, 13374, 13383,
+    13392, 13401, 13411, 13420, 13429, 13435, 13491, 13500, 13507, 13515,
+    13533, 13577, 13587, 13597, 13603, 13612, 13629, 13637, 13644, 13652,
+    13682, 13713, 13721, 13729, 13739, 13749, 13758, 13764, 13773, 13783,
+    13525, 13542, 13552, 13561, 13570, 13661, 13667, 13675, 13693, 13699,
+    13707, 13790, 13801, 13809, 13818, 13838, 13852, 13871, 13880, 13900,
+    13915, 13925, 13935, 13944, 13953, 13964, 14005, 14031, 14038, 14059,
+    14067, 14076, 14085, 14106, 14114, 14120, 14129, 14226, 14234, 14243,
+    14288, 14297, 14312, 14321, 14330, 14339, 14367, 14374, 14383, 14392,
+    14401, 14409, 14491, 14500, 14524, 14532, 14541, 14627, 14665, 14676,
+    14720, 14729, 14756, 14771, 14788, 14820, 14833, 14851, 14875, 14884,
+    14893, 14904, 14915, 14969, 14989, 15043, 15051, 15060, 15068, 15094,
+    15121, 15149, 15159, 15169, 15180, 15190, 15201, 15210, 15221, 15231,
+    15242, 15264, 15274, 15288, 15300, 15309, 15319, 15337, 13830, 13892,
+    13973, 13981, 13990, 13996, 14016, 14025, 14051, 14096, 14137, 14145,
+    14154, 14171, 14181, 14190, 14199, 14209, 14164, 14220, 14252, 14280,
+    14260, 14268, 14306, 14347, 14361, 14355, 14418, 14430, 14447, 14475,
+    14455, 14463, 14485, 14509, 14518, 14549, 14597, 14558, 14566, 14576,
+    14583, 14590, 14606, 14613, 14620, 14637, 14647, 14657, 14685, 14693,
+    14703, 14711, 14740, 14748, 14782, 14797, 14805, 14813, 14861, 14869,
+    14925, 14933, 14939, 14952, 14961, 14980, 14999, 15007, 15013, 15026,
+    15035, 15087, 15114, 15128, 15134, 15142, 15253, 15330, 15347, 15353,
+    15362, 15370, 15385, 15391, 15400, 15409, 15417, 15425, 15435, 15443,
+    15452, 15460, 15467, 15476, 15483, 15492, 15498, 15506, 15515, 15524,
+    15535, 15544, 15551, 15559, 15567, 15577, 15585, 15595, 15604, 15612,
+    15621, 15630, 15712, 15720, 15729, 15737, 15746, 15765, 15772, 15380,
+    15638, 15646, 15680, 15689, 15696, 15706, 15654, 15670, 15675, 15663,
+    15758, 15781, 15827, 15833, 15841, 15849, 15859, 15867, 15878, 15886,
+    15899, 15909, 15918, 15942, 15960, 15970, 16043, 16048, 16060, 16069,
+    16077, 16303, 16312, 16318, 15790, 15806, 15814, 15821, 15797, 15894,
+    15925, 15937, 15954, 15978, 15987, 15993, 16001, 16008, 16015, 16021,
+    16027, 16035, 16085, 16091, 16098, 16106, 16190, 16206, 16213, 16221,
+    16230, 16237, 16248, 16259, 16270, 16286, 16294, 16114, 16122, 16133,
+    16145, 16152, 16164, 16173, 16182, 16200, 16279, 16328, 16336, 16344,
+    16353, 16363, 16372, 16387, 16398, 16414, 16407, 16420, 16429, 16437,
+    16447, 16456, 16464, 16474, 16483, 16492, 16504, 16533, 16541, 16628,
+    16638, 16658, 16667, 16676, 16684, 16692, 16701, 16712, 16723, 16732,
+    16741, 16750, 16756, 16762, 16770, 16781, 16798, 16806, 16839, 16847,
+    16853, 16863, 16873, 16881, 16890, 16907, 16920, 16945, 16965, 16983,
+    17002, 17023, 17043, 17062, 17081, 17088, 17104, 17113, 17122, 17129,
+    17150, 17159, 17168, 17177, 17186, 17195, 17204, 17214, 17225, 17240,
+    17252, 17261, 17271, 17280, 17287, 17293, 17310, 17320, 17330, 17361,
+    17372, 16514, 16520, 16526, 16551, 16558, 16573, 16579, 16586, 16593,
+    16600, 16607, 16615, 16622, 16566, 16649, 16792, 16816, 16824, 16833,
+    16901, 16915, 16936, 17141, 17233, 17304, 17340, 17346, 17352, 17378,
+    17387, 17396, 17503, 17525, 17534, 17544, 17562, 17569, 17575, 17585,
+    17597, 17606, 17614, 17632, 17641, 17650, 17657, 17669, 17686, 17692,
+    17712, 17796, 17805, 17822, 17832, 17844, 17852, 17861, 17887, 17896,
+    17918, 17927, 17947, 17955, 17975, 17995, 18029, 18063, 18094, 18103,
+    18112, 18122, 18132, 18142, 18158, 18176, 18190, 18198, 18343, 18421,
+    18428, 18436, 18623, 18632, 18642, 18660, 18670, 17404, 17410, 17417,
+    17425, 17433, 17448, 17455, 17462, 17470, 17479, 17490, 17498, 17441,
+    17513, 17519, 17555, 17624, 17702, 17707, 17721, 17729, 17743, 17757,
+    17771, 17778, 17787, 17737, 17751, 17765, 17870, 17878, 17903, 17911,
+    17939, 17966, 17986, 18006, 18012, 18022, 18040, 18046, 18056, 18072,
+    18080, 18088, 18152, 18207, 18213, 18221, 18237, 18246, 18253, 18260,
+    18269, 18278, 18319, 18327, 18335, 18229, 18288, 18303, 18297, 18313,
+    18353, 18364, 18376, 18383, 18395, 18404, 18413, 18445, 18450, 18455,
+    18460, 18466, 18474, 18483, 18499, 18508, 18517, 18526, 18535, 18542,
+    18549, 18558, 18599, 18607, 18615, 18491, 18568, 18583, 18577, 18593,
+    18653, 18678, 18688, 18694, 18702, 18711, 18720, 18726, 18734, 18744,
+    18752, 18762, 18775, 18797, 18812, 18824, 18834, 18843, 18853, 18861,
+    18869, 18900, 18908, 18916, 18958, 18966, 18976, 18985, 19051, 19061,
+    19069, 19081, 19092, 19101, 19112, 19124, 19133, 19140, 19148, 19157,
+    19166, 19186, 18785, 18792, 18879, 18894, 18887, 18925, 18933, 18941,
+    18950, 18999, 19008, 19026, 19032, 19019, 19044, 19207, 19215, 19223,
+    19232, 19240, 19248, 19257, 19265, 19271, 19280, 19289, 19298, 19308,
+    19316, 19325, 19334, 19343, 19352, 19371, 19381, 19390, 19398, 19404,
+    19412, 19421, 19432, 19447, 19464, 19482, 19491, 19512, 19526, 19545,
+    19555, 19563, 19572, 19581, 19590, 19599, 19615, 19624, 19631, 19364,
+    19500, 19505, 19538, 19609, 19642, 19650, 19666, 19675, 19685, 19698,
+    19709, 19723, 19732, 19740, 19753, 19769, 19780, 19810, 19840, 19851,
+    19870, 19890, 19896, 19905, 19929, 19939, 19947, 19953, 19961, 19970,
+    19982, 19994, 20003, 20012, 20021, 20030, 20043, 20056, 20069, 20082,
+    19660, 19763, 19801, 19831, 19914, 19922, 20093, 20101, 20111, 20128,
+    20138, 20146, 20155, 20161, 20178, 20122, 20169, 20187, 20195, 20204,
+    20212, 20221, 20229, 20238, 20247, 20252, 20261, 20270, 20278, 20286,
+    20295, 20304, 20314, 20324, 20333, 20342, 20351, 20361, 20371, 20380,
+    20388, 20398, 20407, 20414, 20422, 20428, 20434, 20442, 20449, 20458,
+    20467, 20474, 20481, 20490, 20499, 20505, 20512, 20522, 20529, 20537,
+    20544, 20555, 20564, 20573, 20580
+};
+
+static const unsigned char htmlEntStrings[20588] = {
+    132, 'E', 'l', 'i', 'g',   2, 195, 134, 130, 'M', 'P',   1, '&', 133, 'a',
+    'c', 'u', 't', 'e',   2, 195, 129,   5, 'b', 'r', 'e', 'v', 'e',   2, 196,
+    130, 132, 'c', 'i', 'r', 'c',   2, 195, 130,   2, 'c', 'y',   2, 208, 144,
+      2, 'f', 'r',   4, 240, 157, 148, 132, 133, 'g', 'r', 'a', 'v', 'e',   2,
+    195, 128,   4, 'l', 'p', 'h', 'a',   2, 206, 145,   4, 'm', 'a', 'c', 'r',
+      2, 196, 128,   2, 'n', 'd',   3, 226, 169, 147,   4, 'o', 'g', 'o', 'n',
+      2, 196, 132,   3, 'o', 'p', 'f',   4, 240, 157, 148, 184,  12, 'p', 'p',
+    'l', 'y', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n',   3, 226, 129, 161, 132,
+    'r', 'i', 'n', 'g',   2, 195, 133,   3, 's', 'c', 'r',   4, 240, 157, 146,
+    156,   5, 's', 's', 'i', 'g', 'n',   3, 226, 137, 148, 133, 't', 'i', 'l',
+    'd', 'e',   2, 195, 131, 131, 'u', 'm', 'l',   2, 195, 132,   8, 'a', 'c',
+    'k', 's', 'l', 'a', 's', 'h',   3, 226, 136, 150,   3, 'a', 'r', 'v',   3,
+    226, 171, 167,   5, 'a', 'r', 'w', 'e', 'd',   3, 226, 140, 134,   2, 'c',
+    'y',   2, 208, 145,   6, 'e', 'c', 'a', 'u', 's', 'e',   3, 226, 136, 181,
+      9, 'e', 'r', 'n', 'o', 'u', 'l', 'l', 'i', 's',   3, 226, 132, 172,   3,
+    'e', 't', 'a',   2, 206, 146,   2, 'f', 'r',   4, 240, 157, 148, 133,   3,
+    'o', 'p', 'f',   4, 240, 157, 148, 185,   4, 'r', 'e', 'v', 'e',   2, 203,
+    152,   3, 's', 'c', 'r',   3, 226, 132, 172,   5, 'u', 'm', 'p', 'e', 'q',
+      3, 226, 137, 142,   3, 'H', 'c', 'y',   2, 208, 167, 131, 'O', 'P', 'Y',
+      2, 194, 169,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 134,  66, 'a', 'p',
+     28,   1,   3, 226, 139, 146,  17, 'i', 't', 'a', 'l', 'D', 'i', 'f', 'f',
+    'e', 'r', 'e', 'n', 't', 'i', 'a', 'l', 'D',   3, 226, 133, 133,   6, 'a',
+    'y', 'l', 'e', 'y', 's',   3, 226, 132, 173,   5, 'c', 'a', 'r', 'o', 'n',
+      2, 196, 140, 133, 'c', 'e', 'd', 'i', 'l',   2, 195, 135,   4, 'c', 'i',
+    'r', 'c',   2, 196, 136,   6, 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136,
+    176,   3, 'd', 'o', 't',   2, 196, 138,   6, 'e', 'd', 'i', 'l', 'l', 'a',
+      2, 194, 184,   8, 'e', 'n', 't', 'e', 'r', 'D', 'o', 't',   2, 194, 183,
+      2, 'f', 'r',   3, 226, 132, 173,   2, 'h', 'i',   2, 206, 167,   8, 'i',
+    'r', 'c', 'l', 'e', 'D', 'o', 't',   3, 226, 138, 153,  10, 'i', 'r', 'c',
+    'l', 'e', 'M', 'i', 'n', 'u', 's',   3, 226, 138, 150,   9, 'i', 'r', 'c',
+    'l', 'e', 'P', 'l', 'u', 's',   3, 226, 138, 149,  10, 'i', 'r', 'c', 'l',
+    'e', 'T', 'i', 'm', 'e', 's',   3, 226, 138, 151,  23, 'l', 'o', 'c', 'k',
+    'w', 'i', 's', 'e', 'C', 'o', 'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e',
+    'g', 'r', 'a', 'l',   3, 226, 136, 178,  20, 'l', 'o', 's', 'e', 'C', 'u',
+    'r', 'l', 'y', 'D', 'o', 'u', 'b', 'l', 'e', 'Q', 'u', 'o', 't', 'e',   3,
+    226, 128, 157,  14, 'l', 'o', 's', 'e', 'C', 'u', 'r', 'l', 'y', 'Q', 'u',
+    'o', 't', 'e',   3, 226, 128, 153,  68, 'o', 'l', 'o', 'n',  11,   1,   3,
+    226, 136, 183,   1, 'e',   3, 226, 169, 180,   8, 'o', 'n', 'g', 'r', 'u',
+    'e', 'n', 't',   3, 226, 137, 161,   5, 'o', 'n', 'i', 'n', 't',   3, 226,
+    136, 175,  14, 'o', 'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e', 'g', 'r',
+    'a', 'l',   3, 226, 136, 174,   3, 'o', 'p', 'f',   3, 226, 132, 130,   8,
+    'o', 'p', 'r', 'o', 'd', 'u', 'c', 't',   3, 226, 136, 144,  30, 'o', 'u',
+    'n', 't', 'e', 'r', 'C', 'l', 'o', 'c', 'k', 'w', 'i', 's', 'e', 'C', 'o',
+    'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e', 'g', 'r', 'a', 'l',   3, 226,
+    136, 179,   4, 'r', 'o', 's', 's',   3, 226, 168, 175,   3, 's', 'c', 'r',
+      4, 240, 157, 146, 158,  66, 'u', 'p',   3,   1,   3, 226, 139, 147,   3,
+    'C', 'a', 'p',   3, 226, 137, 141,  65, 'D',  45,   1,   3, 226, 133, 133,
+      6, 'o', 't', 'r', 'a', 'h', 'd',   3, 226, 164, 145,   3, 'J', 'c', 'y',
+      2, 208, 130,   3, 'S', 'c', 'y',   2, 208, 133,   3, 'Z', 'c', 'y',   2,
+    208, 143,   5, 'a', 'g', 'g', 'e', 'r',   3, 226, 128, 161,   3, 'a', 'r',
+    'r',   3, 226, 134, 161,   4, 'a', 's', 'h', 'v',   3, 226, 171, 164,   5,
+    'c', 'a', 'r', 'o', 'n',   2, 196, 142,   2, 'c', 'y',   2, 208, 148,  66,
+    'e', 'l',  37,   1,   3, 226, 136, 135,   2, 't', 'a',   2, 206, 148,   2,
+    'f', 'r',   4, 240, 157, 148, 135,  15, 'i', 'a', 'c', 'r', 'i', 't', 'i',
+    'c', 'a', 'l', 'A', 'c', 'u', 't', 'e',   2, 194, 180,  13, 'i', 'a', 'c',
+    'r', 'i', 't', 'i', 'c', 'a', 'l', 'D', 'o', 't',   2, 203, 153,  21, 'i',
+    'a', 'c', 'r', 'i', 't', 'i', 'c', 'a', 'l', 'D', 'o', 'u', 'b', 'l', 'e',
+    'A', 'c', 'u', 't', 'e',   2, 203, 157,  15, 'i', 'a', 'c', 'r', 'i', 't',
+    'i', 'c', 'a', 'l', 'G', 'r', 'a', 'v', 'e',   1, '`',  15, 'i', 'a', 'c',
+    'r', 'i', 't', 'i', 'c', 'a', 'l', 'T', 'i', 'l', 'd', 'e',   2, 203, 156,
+      6, 'i', 'a', 'm', 'o', 'n', 'd',   3, 226, 139, 132,  12, 'i', 'f', 'f',
+    'e', 'r', 'e', 'n', 't', 'i', 'a', 'l', 'D',   3, 226, 133, 134,   3, 'o',
+    'p', 'f',   4, 240, 157, 148, 187,  66, 'o', 't',  28,   2,   2, 194, 168,
+      3, 'D', 'o', 't',   3, 226, 131, 156,   5, 'E', 'q', 'u', 'a', 'l',   3,
+    226, 137, 144,  20, 'o', 'u', 'b', 'l', 'e', 'C', 'o', 'n', 't', 'o', 'u',
+    'r', 'I', 'n', 't', 'e', 'g', 'r', 'a', 'l',   3, 226, 136, 175,   8, 'o',
+    'u', 'b', 'l', 'e', 'D', 'o', 't',   2, 194, 168,  14, 'o', 'u', 'b', 'l',
+    'e', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 147,  14,
+    'o', 'u', 'b', 'l', 'e', 'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3,
+    226, 135, 144,  19, 'o', 'u', 'b', 'l', 'e', 'L', 'e', 'f', 't', 'R', 'i',
+    'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 148,  12, 'o', 'u',
+    'b', 'l', 'e', 'L', 'e', 'f', 't', 'T', 'e', 'e',   3, 226, 171, 164,  18,
+    'o', 'u', 'b', 'l', 'e', 'L', 'o', 'n', 'g', 'L', 'e', 'f', 't', 'A', 'r',
+    'r', 'o', 'w',   3, 226, 159, 184,  23, 'o', 'u', 'b', 'l', 'e', 'L', 'o',
+    'n', 'g', 'L', 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o',
+    'w',   3, 226, 159, 186,  19, 'o', 'u', 'b', 'l', 'e', 'L', 'o', 'n', 'g',
+    'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 159, 185,  15,
+    'o', 'u', 'b', 'l', 'e', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',
+      3, 226, 135, 146,  13, 'o', 'u', 'b', 'l', 'e', 'R', 'i', 'g', 'h', 't',
+    'T', 'e', 'e',   3, 226, 138, 168,  12, 'o', 'u', 'b', 'l', 'e', 'U', 'p',
+    'A', 'r', 'r', 'o', 'w',   3, 226, 135, 145,  16, 'o', 'u', 'b', 'l', 'e',
+    'U', 'p', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 149,
+     16, 'o', 'u', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'i', 'c', 'a', 'l', 'B',
+    'a', 'r',   3, 226, 136, 165,  72, 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',
+     15,   2,   3, 226, 134, 147,   3, 'B', 'a', 'r',   3, 226, 164, 147,   7,
+    'U', 'p', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 181,   8, 'o', 'w', 'n',
+    'B', 'r', 'e', 'v', 'e',   2, 204, 145,  18, 'o', 'w', 'n', 'L', 'e', 'f',
+    't', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165,
+    144,  16, 'o', 'w', 'n', 'L', 'e', 'f', 't', 'T', 'e', 'e', 'V', 'e', 'c',
+    't', 'o', 'r',   3, 226, 165, 158,  77, 'o', 'w', 'n', 'L', 'e', 'f', 't',
+    'V', 'e', 'c', 't', 'o', 'r',  13,   1,   3, 226, 134, 189,   3, 'B', 'a',
+    'r',   3, 226, 165, 150,  17, 'o', 'w', 'n', 'R', 'i', 'g', 'h', 't', 'T',
+    'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 159,  78, 'o', 'w',
+    'n', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',  12,   1,   3,
+    226, 135, 129,   3, 'B', 'a', 'r',   3, 226, 165, 151,  70, 'o', 'w', 'n',
+    'T', 'e', 'e',  12,   1,   3, 226, 138, 164,   5, 'A', 'r', 'r', 'o', 'w',
+      3, 226, 134, 167,   8, 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3, 226,
+    135, 147,   3, 's', 'c', 'r',   4, 240, 157, 146, 159,   5, 's', 't', 'r',
+    'o', 'k',   2, 196, 144,   2, 'N', 'G',   2, 197, 138, 130, 'T', 'H',   2,
+    195, 144, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 137,   5, 'c', 'a', 'r',
+    'o', 'n',   2, 196, 154, 132, 'c', 'i', 'r', 'c',   2, 195, 138,   2, 'c',
+    'y',   2, 208, 173,   3, 'd', 'o', 't',   2, 196, 150,   2, 'f', 'r',   4,
+    240, 157, 148, 136, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 136,   6, 'l',
+    'e', 'm', 'e', 'n', 't',   3, 226, 136, 136,   4, 'm', 'a', 'c', 'r',   2,
+    196, 146,  15, 'm', 'p', 't', 'y', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u',
+    'a', 'r', 'e',   3, 226, 151, 187,  19, 'm', 'p', 't', 'y', 'V', 'e', 'r',
+    'y', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',   3, 226, 150,
+    171,   4, 'o', 'g', 'o', 'n',   2, 196, 152,   3, 'o', 'p', 'f',   4, 240,
+    157, 148, 188,   6, 'p', 's', 'i', 'l', 'o', 'n',   2, 206, 149,  68, 'q',
+    'u', 'a', 'l',   8,   1,   3, 226, 169, 181,   5, 'T', 'i', 'l', 'd', 'e',
+      3, 226, 137, 130,  10, 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',
+      3, 226, 135, 140,   3, 's', 'c', 'r',   3, 226, 132, 176,   3, 's', 'i',
+    'm',   3, 226, 169, 179,   2, 't', 'a',   2, 206, 151, 131, 'u', 'm', 'l',
+      2, 195, 139,   5, 'x', 'i', 's', 't', 's',   3, 226, 136, 131,  11, 'x',
+    'p', 'o', 'n', 'e', 'n', 't', 'i', 'a', 'l', 'E',   3, 226, 133, 135,   2,
+    'c', 'y',   2, 208, 164,   2, 'f', 'r',   4, 240, 157, 148, 137,  16, 'i',
+    'l', 'l', 'e', 'd', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',
+      3, 226, 151, 188,  20, 'i', 'l', 'l', 'e', 'd', 'V', 'e', 'r', 'y', 'S',
+    'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',   3, 226, 150, 170,   3,
+    'o', 'p', 'f',   4, 240, 157, 148, 189,   5, 'o', 'r', 'A', 'l', 'l',   3,
+    226, 136, 128,   9, 'o', 'u', 'r', 'i', 'e', 'r', 't', 'r', 'f',   3, 226,
+    132, 177,   3, 's', 'c', 'r',   3, 226, 132, 177,   3, 'J', 'c', 'y',   2,
+    208, 131, 129, 'T',   1, '>',  68, 'a', 'm', 'm', 'a',  17,   1,   2, 206,
+    147,   1, 'd',   2, 207, 156,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 158,
+      5, 'c', 'e', 'd', 'i', 'l',   2, 196, 162,   4, 'c', 'i', 'r', 'c',   2,
+    196, 156,   2, 'c', 'y',   2, 208, 147,   3, 'd', 'o', 't',   2, 196, 160,
+      2, 'f', 'r',   4, 240, 157, 148, 138,   1, 'g',   3, 226, 139, 153,   3,
+    'o', 'p', 'f',   4, 240, 157, 148, 190,  75, 'r', 'e', 'a', 't', 'e', 'r',
+    'E', 'q', 'u', 'a', 'l',   9,   1,   3, 226, 137, 165,   4, 'L', 'e', 's',
+    's',   3, 226, 139, 155,  15, 'r', 'e', 'a', 't', 'e', 'r', 'F', 'u', 'l',
+    'l', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 167,  13, 'r', 'e', 'a', 't',
+    'e', 'r', 'G', 'r', 'e', 'a', 't', 'e', 'r',   3, 226, 170, 162,  10, 'r',
+    'e', 'a', 't', 'e', 'r', 'L', 'e', 's', 's',   3, 226, 137, 183,  16, 'r',
+    'e', 'a', 't', 'e', 'r', 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',
+      3, 226, 169, 190,  11, 'r', 'e', 'a', 't', 'e', 'r', 'T', 'i', 'l', 'd',
+    'e',   3, 226, 137, 179,   3, 's', 'c', 'r',   4, 240, 157, 146, 162,   1,
+    't',   3, 226, 137, 171,   5, 'A', 'R', 'D', 'c', 'y',   2, 208, 170,   4,
+    'a', 'c', 'e', 'k',   2, 203, 135,   2, 'a', 't',   1, '^',   4, 'c', 'i',
+    'r', 'c',   2, 196, 164,   2, 'f', 'r',   3, 226, 132, 140,  11, 'i', 'l',
+    'b', 'e', 'r', 't', 'S', 'p', 'a', 'c', 'e',   3, 226, 132, 139,   3, 'o',
+    'p', 'f',   3, 226, 132, 141,  13, 'o', 'r', 'i', 'z', 'o', 'n', 't', 'a',
+    'l', 'L', 'i', 'n', 'e',   3, 226, 148, 128,   3, 's', 'c', 'r',   3, 226,
+    132, 139,   5, 's', 't', 'r', 'o', 'k',   2, 196, 166,  11, 'u', 'm', 'p',
+    'D', 'o', 'w', 'n', 'H', 'u', 'm', 'p',   3, 226, 137, 142,   8, 'u', 'm',
+    'p', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 143,   3, 'E', 'c', 'y',   2,
+    208, 149,   4, 'J', 'l', 'i', 'g',   2, 196, 178,   3, 'O', 'c', 'y',   2,
+    208, 129, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 141, 132, 'c', 'i', 'r',
+    'c',   2, 195, 142,   2, 'c', 'y',   2, 208, 152,   3, 'd', 'o', 't',   2,
+    196, 176,   2, 'f', 'r',   3, 226, 132, 145, 133, 'g', 'r', 'a', 'v', 'e',
+      2, 195, 140,  65, 'm',  11,   3,   3, 226, 132, 145,   3, 'a', 'c', 'r',
+      2, 196, 170,   8, 'a', 'g', 'i', 'n', 'a', 'r', 'y', 'I',   3, 226, 133,
+    136,   5, 'p', 'l', 'i', 'e', 's',   3, 226, 135, 146,  66, 'n', 't',  13,
+      2,   3, 226, 136, 172,   5, 'e', 'g', 'r', 'a', 'l',   3, 226, 136, 171,
+      9, 'e', 'r', 's', 'e', 'c', 't', 'i', 'o', 'n',   3, 226, 139, 130,  13,
+    'n', 'v', 'i', 's', 'i', 'b', 'l', 'e', 'C', 'o', 'm', 'm', 'a',   3, 226,
+    129, 163,  13, 'n', 'v', 'i', 's', 'i', 'b', 'l', 'e', 'T', 'i', 'm', 'e',
+    's',   3, 226, 129, 162,   4, 'o', 'g', 'o', 'n',   2, 196, 174,   3, 'o',
+    'p', 'f',   4, 240, 157, 149, 128,   3, 'o', 't', 'a',   2, 206, 153,   3,
+    's', 'c', 'r',   3, 226, 132, 144,   5, 't', 'i', 'l', 'd', 'e',   2, 196,
+    168,   4, 'u', 'k', 'c', 'y',   2, 208, 134, 131, 'u', 'm', 'l',   2, 195,
+    143,   4, 'c', 'i', 'r', 'c',   2, 196, 180,   2, 'c', 'y',   2, 208, 153,
+      2, 'f', 'r',   4, 240, 157, 148, 141,   3, 'o', 'p', 'f',   4, 240, 157,
+    149, 129,   3, 's', 'c', 'r',   4, 240, 157, 146, 165,   5, 's', 'e', 'r',
+    'c', 'y',   2, 208, 136,   4, 'u', 'k', 'c', 'y',   2, 208, 132,   3, 'H',
+    'c', 'y',   2, 208, 165,   3, 'J', 'c', 'y',   2, 208, 140,   4, 'a', 'p',
+    'p', 'a',   2, 206, 154,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 182,   2,
+    'c', 'y',   2, 208, 154,   2, 'f', 'r',   4, 240, 157, 148, 142,   3, 'o',
+    'p', 'f',   4, 240, 157, 149, 130,   3, 's', 'c', 'r',   4, 240, 157, 146,
+    166,   3, 'J', 'c', 'y',   2, 208, 137, 129, 'T',   1, '<',   5, 'a', 'c',
+    'u', 't', 'e',   2, 196, 185,   5, 'a', 'm', 'b', 'd', 'a',   2, 206, 155,
+      3, 'a', 'n', 'g',   3, 226, 159, 170,   9, 'a', 'p', 'l', 'a', 'c', 'e',
+    't', 'r', 'f',   3, 226, 132, 146,   3, 'a', 'r', 'r',   3, 226, 134, 158,
+      5, 'c', 'a', 'r', 'o', 'n',   2, 196, 189,   5, 'c', 'e', 'd', 'i', 'l',
+      2, 196, 187,   2, 'c', 'y',   2, 208, 155,  15, 'e', 'f', 't', 'A', 'n',
+    'g', 'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 159, 168,  72,
+    'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',  38,   2,   3, 226, 134, 144,   3,
+    'B', 'a', 'r',   3, 226, 135, 164,  10, 'R', 'i', 'g', 'h', 't', 'A', 'r',
+    'r', 'o', 'w',   3, 226, 135, 134,  10, 'e', 'f', 't', 'C', 'e', 'i', 'l',
+    'i', 'n', 'g',   3, 226, 140, 136,  16, 'e', 'f', 't', 'D', 'o', 'u', 'b',
+    'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 159, 166,  16, 'e',
+    'f', 't', 'D', 'o', 'w', 'n', 'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',
+      3, 226, 165, 161,  77, 'e', 'f', 't', 'D', 'o', 'w', 'n', 'V', 'e', 'c',
+    't', 'o', 'r',  36,   1,   3, 226, 135, 131,   3, 'B', 'a', 'r',   3, 226,
+    165, 153,   8, 'e', 'f', 't', 'F', 'l', 'o', 'o', 'r',   3, 226, 140, 138,
+     13, 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3,
+    226, 134, 148,  14, 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c',
+    't', 'o', 'r',   3, 226, 165, 142,  70, 'e', 'f', 't', 'T', 'e', 'e',  33,
+      2,   3, 226, 138, 163,   5, 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 164,
+      6, 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 154,  75, 'e', 'f', 't',
+    'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  34,   2,   3, 226, 138, 178,   3,
+    'B', 'a', 'r',   3, 226, 167, 143,   5, 'E', 'q', 'u', 'a', 'l',   3, 226,
+    138, 180,  15, 'e', 'f', 't', 'U', 'p', 'D', 'o', 'w', 'n', 'V', 'e', 'c',
+    't', 'o', 'r',   3, 226, 165, 145,  14, 'e', 'f', 't', 'U', 'p', 'T', 'e',
+    'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 160,  75, 'e', 'f', 't',
+    'U', 'p', 'V', 'e', 'c', 't', 'o', 'r',  33,   1,   3, 226, 134, 191,   3,
+    'B', 'a', 'r',   3, 226, 165, 152,  73, 'e', 'f', 't', 'V', 'e', 'c', 't',
+    'o', 'r',  33,   1,   3, 226, 134, 188,   3, 'B', 'a', 'r',   3, 226, 165,
+    146,   8, 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 144,  13,
+    'e', 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226,
+    135, 148,  15, 'e', 's', 's', 'E', 'q', 'u', 'a', 'l', 'G', 'r', 'e', 'a',
+    't', 'e', 'r',   3, 226, 139, 154,  12, 'e', 's', 's', 'F', 'u', 'l', 'l',
+    'E', 'q', 'u', 'a', 'l',   3, 226, 137, 166,  10, 'e', 's', 's', 'G', 'r',
+    'e', 'a', 't', 'e', 'r',   3, 226, 137, 182,   7, 'e', 's', 's', 'L', 'e',
+    's', 's',   3, 226, 170, 161,  13, 'e', 's', 's', 'S', 'l', 'a', 'n', 't',
+    'E', 'q', 'u', 'a', 'l',   3, 226, 169, 189,   8, 'e', 's', 's', 'T', 'i',
+    'l', 'd', 'e',   3, 226, 137, 178,   2, 'f', 'r',   4, 240, 157, 148, 143,
+     65, 'l',  24,   1,   3, 226, 139, 152,   8, 'e', 'f', 't', 'a', 'r', 'r',
+    'o', 'w',   3, 226, 135, 154,   5, 'm', 'i', 'd', 'o', 't',   2, 196, 191,
+     12, 'o', 'n', 'g', 'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226,
+    159, 181,  17, 'o', 'n', 'g', 'L', 'e', 'f', 't', 'R', 'i', 'g', 'h', 't',
+    'A', 'r', 'r', 'o', 'w',   3, 226, 159, 183,  13, 'o', 'n', 'g', 'R', 'i',
+    'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 159, 182,  12, 'o', 'n',
+    'g', 'l', 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 184,  17,
+    'o', 'n', 'g', 'l', 'e', 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r',
+    'o', 'w',   3, 226, 159, 186,  13, 'o', 'n', 'g', 'r', 'i', 'g', 'h', 't',
+    'a', 'r', 'r', 'o', 'w',   3, 226, 159, 185,   3, 'o', 'p', 'f',   4, 240,
+    157, 149, 131,  13, 'o', 'w', 'e', 'r', 'L', 'e', 'f', 't', 'A', 'r', 'r',
+    'o', 'w',   3, 226, 134, 153,  14, 'o', 'w', 'e', 'r', 'R', 'i', 'g', 'h',
+    't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 152,   3, 's', 'c', 'r',   3,
+    226, 132, 146,   2, 's', 'h',   3, 226, 134, 176,   5, 's', 't', 'r', 'o',
+    'k',   2, 197, 129,   1, 't',   3, 226, 137, 170,   2, 'a', 'p',   3, 226,
+    164, 133,   2, 'c', 'y',   2, 208, 156,  10, 'e', 'd', 'i', 'u', 'm', 'S',
+    'p', 'a', 'c', 'e',   3, 226, 129, 159,   8, 'e', 'l', 'l', 'i', 'n', 't',
+    'r', 'f',   3, 226, 132, 179,   2, 'f', 'r',   4, 240, 157, 148, 144,   8,
+    'i', 'n', 'u', 's', 'P', 'l', 'u', 's',   3, 226, 136, 147,   3, 'o', 'p',
+    'f',   4, 240, 157, 149, 132,   3, 's', 'c', 'r',   3, 226, 132, 179,   1,
+    'u',   2, 206, 156,   3, 'J', 'c', 'y',   2, 208, 138,   5, 'a', 'c', 'u',
+    't', 'e',   2, 197, 131,   5, 'c', 'a', 'r', 'o', 'n',   2, 197, 135,   5,
+    'c', 'e', 'd', 'i', 'l',   2, 197, 133,   2, 'c', 'y',   2, 208, 157,  18,
+    'e', 'g', 'a', 't', 'i', 'v', 'e', 'M', 'e', 'd', 'i', 'u', 'm', 'S', 'p',
+    'a', 'c', 'e',   3, 226, 128, 139,  17, 'e', 'g', 'a', 't', 'i', 'v', 'e',
+    'T', 'h', 'i', 'c', 'k', 'S', 'p', 'a', 'c', 'e',   3, 226, 128, 139,  16,
+    'e', 'g', 'a', 't', 'i', 'v', 'e', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c',
+    'e',   3, 226, 128, 139,  20, 'e', 'g', 'a', 't', 'i', 'v', 'e', 'V', 'e',
+    'r', 'y', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',   3, 226, 128, 139,
+     19, 'e', 's', 't', 'e', 'd', 'G', 'r', 'e', 'a', 't', 'e', 'r', 'G', 'r',
+    'e', 'a', 't', 'e', 'r',   3, 226, 137, 171,  13, 'e', 's', 't', 'e', 'd',
+    'L', 'e', 's', 's', 'L', 'e', 's', 's',   3, 226, 137, 170,   6, 'e', 'w',
+    'L', 'i', 'n', 'e',   1,  10,   2, 'f', 'r',   4, 240, 157, 148, 145,   6,
+    'o', 'B', 'r', 'e', 'a', 'k',   3, 226, 129, 160,  15, 'o', 'n', 'B', 'r',
+    'e', 'a', 'k', 'i', 'n', 'g', 'S', 'p', 'a', 'c', 'e',   2, 194, 160,   3,
+    'o', 'p', 'f',   3, 226, 132, 149,  66, 'o', 't',   4,  23,   3, 226, 171,
+    172,   9, 'C', 'o', 'n', 'g', 'r', 'u', 'e', 'n', 't',   3, 226, 137, 162,
+      6, 'C', 'u', 'p', 'C', 'a', 'p',   3, 226, 137, 173,  17, 'D', 'o', 'u',
+    'b', 'l', 'e', 'V', 'e', 'r', 't', 'i', 'c', 'a', 'l', 'B', 'a', 'r',   3,
+    226, 136, 166,   7, 'E', 'l', 'e', 'm', 'e', 'n', 't',   3, 226, 136, 137,
+     69, 'E', 'q', 'u', 'a', 'l',  19,   1,   3, 226, 137, 160,   5, 'T', 'i',
+    'l', 'd', 'e',   5, 226, 137, 130, 204, 184,   6, 'E', 'x', 'i', 's', 't',
+    's',   3, 226, 136, 132,  71, 'G', 'r', 'e', 'a', 't', 'e', 'r',  18,   6,
+      3, 226, 137, 175,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 177,   9,
+    'F', 'u', 'l', 'l', 'E', 'q', 'u', 'a', 'l',   5, 226, 137, 167, 204, 184,
+      7, 'G', 'r', 'e', 'a', 't', 'e', 'r',   5, 226, 137, 171, 204, 184,   4,
+    'L', 'e', 's', 's',   3, 226, 137, 185,  10, 'S', 'l', 'a', 'n', 't', 'E',
+    'q', 'u', 'a', 'l',   5, 226, 169, 190, 204, 184,   5, 'T', 'i', 'l', 'd',
+    'e',   3, 226, 137, 181,  12, 'H', 'u', 'm', 'p', 'D', 'o', 'w', 'n', 'H',
+    'u', 'm', 'p',   5, 226, 137, 142, 204, 184,   9, 'H', 'u', 'm', 'p', 'E',
+    'q', 'u', 'a', 'l',   5, 226, 137, 143, 204, 184,  76, 'L', 'e', 'f', 't',
+    'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  21,   2,   3, 226, 139, 170,   3,
+    'B', 'a', 'r',   5, 226, 167, 143, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',
+      3, 226, 139, 172,  68, 'L', 'e', 's', 's',  22,   5,   3, 226, 137, 174,
+      5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 176,   7, 'G', 'r', 'e', 'a',
+    't', 'e', 'r',   3, 226, 137, 184,   4, 'L', 'e', 's', 's',   5, 226, 137,
+    170, 204, 184,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   5,
+    226, 169, 189, 204, 184,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 180,
+     20, 'N', 'e', 's', 't', 'e', 'd', 'G', 'r', 'e', 'a', 't', 'e', 'r', 'G',
+    'r', 'e', 'a', 't', 'e', 'r',   5, 226, 170, 162, 204, 184,  14, 'N', 'e',
+    's', 't', 'e', 'd', 'L', 'e', 's', 's', 'L', 'e', 's', 's',   5, 226, 170,
+    161, 204, 184,  72, 'P', 'r', 'e', 'c', 'e', 'd', 'e', 's',  24,   2,   3,
+    226, 138, 128,   5, 'E', 'q', 'u', 'a', 'l',   5, 226, 170, 175, 204, 184,
+     10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 160,
+     14, 'R', 'e', 'v', 'e', 'r', 's', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't',
+      3, 226, 136, 140,  77, 'R', 'i', 'g', 'h', 't', 'T', 'r', 'i', 'a', 'n',
+    'g', 'l', 'e',  24,   2,   3, 226, 139, 171,   3, 'B', 'a', 'r',   5, 226,
+    167, 144, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 173,  76,
+    'S', 'q', 'u', 'a', 'r', 'e', 'S', 'u', 'b', 's', 'e', 't',  25,   1,   5,
+    226, 138, 143, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 162,
+     78, 'S', 'q', 'u', 'a', 'r', 'e', 'S', 'u', 'p', 'e', 'r', 's', 'e', 't',
+     25,   1,   5, 226, 138, 144, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3,
+    226, 139, 163,  70, 'S', 'u', 'b', 's', 'e', 't',  25,   1,   6, 226, 138,
+    130, 226, 131, 146,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 136,  72,
+    'S', 'u', 'c', 'c', 'e', 'e', 'd', 's',  25,   3,   3, 226, 138, 129,   5,
+    'E', 'q', 'u', 'a', 'l',   5, 226, 170, 176, 204, 184,  10, 'S', 'l', 'a',
+    'n', 't', 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 161,   5, 'T', 'i', 'l',
+    'd', 'e',   5, 226, 137, 191, 204, 184,  72, 'S', 'u', 'p', 'e', 'r', 's',
+    'e', 't',  27,   1,   6, 226, 138, 131, 226, 131, 146,   5, 'E', 'q', 'u',
+    'a', 'l',   3, 226, 138, 137,  69, 'T', 'i', 'l', 'd', 'e',  27,   3,   3,
+    226, 137, 129,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 132,   9, 'F',
+    'u', 'l', 'l', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 135,   5, 'T', 'i',
+    'l', 'd', 'e',   3, 226, 137, 137,  11, 'V', 'e', 'r', 't', 'i', 'c', 'a',
+    'l', 'B', 'a', 'r',   3, 226, 136, 164,   3, 's', 'c', 'r',   4, 240, 157,
+    146, 169, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 145,   1, 'u',   2, 206,
+    157,   4, 'E', 'l', 'i', 'g',   2, 197, 146, 133, 'a', 'c', 'u', 't', 'e',
+      2, 195, 147, 132, 'c', 'i', 'r', 'c',   2, 195, 148,   2, 'c', 'y',   2,
+    208, 158,   5, 'd', 'b', 'l', 'a', 'c',   2, 197, 144,   2, 'f', 'r',   4,
+    240, 157, 148, 146, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 146,   4, 'm',
+    'a', 'c', 'r',   2, 197, 140,   4, 'm', 'e', 'g', 'a',   2, 206, 169,   6,
+    'm', 'i', 'c', 'r', 'o', 'n',   2, 206, 159,   3, 'o', 'p', 'f',   4, 240,
+    157, 149, 134,  19, 'p', 'e', 'n', 'C', 'u', 'r', 'l', 'y', 'D', 'o', 'u',
+    'b', 'l', 'e', 'Q', 'u', 'o', 't', 'e',   3, 226, 128, 156,  13, 'p', 'e',
+    'n', 'C', 'u', 'r', 'l', 'y', 'Q', 'u', 'o', 't', 'e',   3, 226, 128, 152,
+      1, 'r',   3, 226, 169, 148,   3, 's', 'c', 'r',   4, 240, 157, 146, 170,
+    133, 's', 'l', 'a', 's', 'h',   2, 195, 152, 133, 't', 'i', 'l', 'd', 'e',
+      2, 195, 149,   5, 't', 'i', 'm', 'e', 's',   3, 226, 168, 183, 131, 'u',
+    'm', 'l',   2, 195, 150,   6, 'v', 'e', 'r', 'B', 'a', 'r',   3, 226, 128,
+    190,   8, 'v', 'e', 'r', 'B', 'r', 'a', 'c', 'e',   3, 226, 143, 158,  10,
+    'v', 'e', 'r', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 142, 180,  14,
+    'v', 'e', 'r', 'P', 'a', 'r', 'e', 'n', 't', 'h', 'e', 's', 'i', 's',   3,
+    226, 143, 156,   7, 'a', 'r', 't', 'i', 'a', 'l', 'D',   3, 226, 136, 130,
+      2, 'c', 'y',   2, 208, 159,   2, 'f', 'r',   4, 240, 157, 148, 147,   2,
+    'h', 'i',   2, 206, 166,   1, 'i',   2, 206, 160,   8, 'l', 'u', 's', 'M',
+    'i', 'n', 'u', 's',   2, 194, 177,  12, 'o', 'i', 'n', 'c', 'a', 'r', 'e',
+    'p', 'l', 'a', 'n', 'e',   3, 226, 132, 140,   3, 'o', 'p', 'f',   3, 226,
+    132, 153,  65, 'r',   3,   4,   3, 226, 170, 187,  70, 'e', 'c', 'e', 'd',
+    'e', 's',   4,   3,   3, 226, 137, 186,   5, 'E', 'q', 'u', 'a', 'l',   3,
+    226, 170, 175,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   3,
+    226, 137, 188,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 190,   3, 'i',
+    'm', 'e',   3, 226, 128, 179,   5, 'o', 'd', 'u', 'c', 't',   3, 226, 136,
+    143,  72, 'o', 'p', 'o', 'r', 't', 'i', 'o', 'n',   4,   1,   3, 226, 136,
+    183,   2, 'a', 'l',   3, 226, 136, 157,   3, 's', 'c', 'r',   4, 240, 157,
+    146, 171,   2, 's', 'i',   2, 206, 168, 131, 'U', 'O', 'T',   1, '"',   2,
+    'f', 'r',   4, 240, 157, 148, 148,   3, 'o', 'p', 'f',   3, 226, 132, 154,
+      3, 's', 'c', 'r',   4, 240, 157, 146, 172,   4, 'B', 'a', 'r', 'r',   3,
+    226, 164, 144, 130, 'E', 'G',   2, 194, 174,   5, 'a', 'c', 'u', 't', 'e',
+      2, 197, 148,   3, 'a', 'n', 'g',   3, 226, 159, 171,  67, 'a', 'r', 'r',
+     27,   1,   3, 226, 134, 160,   2, 't', 'l',   3, 226, 164, 150,   5, 'c',
+    'a', 'r', 'o', 'n',   2, 197, 152,   5, 'c', 'e', 'd', 'i', 'l',   2, 197,
+    150,   2, 'c', 'y',   2, 208, 160,  65, 'e',  24,   3,   3, 226, 132, 156,
+     12, 'v', 'e', 'r', 's', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't',   3, 226,
+    136, 139,  16, 'v', 'e', 'r', 's', 'e', 'E', 'q', 'u', 'i', 'l', 'i', 'b',
+    'r', 'i', 'u', 'm',   3, 226, 135, 139,  18, 'v', 'e', 'r', 's', 'e', 'U',
+    'p', 'E', 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',   3, 226, 165,
+    175,   2, 'f', 'r',   3, 226, 132, 156,   2, 'h', 'o',   2, 206, 161,  16,
+    'i', 'g', 'h', 't', 'A', 'n', 'g', 'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e',
+    't',   3, 226, 159, 169,  73, 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',
+     23,   2,   3, 226, 134, 146,   3, 'B', 'a', 'r',   3, 226, 135, 165,   9,
+    'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 132,  11, 'i',
+    'g', 'h', 't', 'C', 'e', 'i', 'l', 'i', 'n', 'g',   3, 226, 140, 137,  17,
+    'i', 'g', 'h', 't', 'D', 'o', 'u', 'b', 'l', 'e', 'B', 'r', 'a', 'c', 'k',
+    'e', 't',   3, 226, 159, 167,  17, 'i', 'g', 'h', 't', 'D', 'o', 'w', 'n',
+    'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 157,  78, 'i',
+    'g', 'h', 't', 'D', 'o', 'w', 'n', 'V', 'e', 'c', 't', 'o', 'r',  21,   1,
+      3, 226, 135, 130,   3, 'B', 'a', 'r',   3, 226, 165, 149,   9, 'i', 'g',
+    'h', 't', 'F', 'l', 'o', 'o', 'r',   3, 226, 140, 139,  71, 'i', 'g', 'h',
+    't', 'T', 'e', 'e',  20,   2,   3, 226, 138, 162,   5, 'A', 'r', 'r', 'o',
+    'w',   3, 226, 134, 166,   6, 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165,
+    155,  76, 'i', 'g', 'h', 't', 'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  21,
+      2,   3, 226, 138, 179,   3, 'B', 'a', 'r',   3, 226, 167, 144,   5, 'E',
+    'q', 'u', 'a', 'l',   3, 226, 138, 181,  16, 'i', 'g', 'h', 't', 'U', 'p',
+    'D', 'o', 'w', 'n', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 143,  15,
+    'i', 'g', 'h', 't', 'U', 'p', 'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',
+      3, 226, 165, 156,  76, 'i', 'g', 'h', 't', 'U', 'p', 'V', 'e', 'c', 't',
+    'o', 'r',  20,   1,   3, 226, 134, 190,   3, 'B', 'a', 'r',   3, 226, 165,
+    148,  74, 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',  20,   1,   3,
+    226, 135, 128,   3, 'B', 'a', 'r',   3, 226, 165, 147,   9, 'i', 'g', 'h',
+    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 146,   3, 'o', 'p', 'f',   3,
+    226, 132, 157,  11, 'o', 'u', 'n', 'd', 'I', 'm', 'p', 'l', 'i', 'e', 's',
+      3, 226, 165, 176,  10, 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',
+      3, 226, 135, 155,   3, 's', 'c', 'r',   3, 226, 132, 155,   2, 's', 'h',
+      3, 226, 134, 177,  10, 'u', 'l', 'e', 'D', 'e', 'l', 'a', 'y', 'e', 'd',
+      3, 226, 167, 180,   5, 'H', 'C', 'H', 'c', 'y',   2, 208, 169,   3, 'H',
+    'c', 'y',   2, 208, 168,   5, 'O', 'F', 'T', 'c', 'y',   2, 208, 172,   5,
+    'a', 'c', 'u', 't', 'e',   2, 197, 154,  65, 'c',  18,   4,   3, 226, 170,
+    188,   4, 'a', 'r', 'o', 'n',   2, 197, 160,   4, 'e', 'd', 'i', 'l',   2,
+    197, 158,   3, 'i', 'r', 'c',   2, 197, 156,   1, 'y',   2, 208, 161,   2,
+    'f', 'r',   4, 240, 157, 148, 150,  13, 'h', 'o', 'r', 't', 'D', 'o', 'w',
+    'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 147,  13, 'h', 'o', 'r', 't',
+    'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 144,  14, 'h',
+    'o', 'r', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226,
+    134, 146,  11, 'h', 'o', 'r', 't', 'U', 'p', 'A', 'r', 'r', 'o', 'w',   3,
+    226, 134, 145,   4, 'i', 'g', 'm', 'a',   2, 206, 163,  10, 'm', 'a', 'l',
+    'l', 'C', 'i', 'r', 'c', 'l', 'e',   3, 226, 136, 152,   3, 'o', 'p', 'f',
+      4, 240, 157, 149, 138,   3, 'q', 'r', 't',   3, 226, 136, 154,  69, 'q',
+    'u', 'a', 'r', 'e',  12,   4,   3, 226, 150, 161,  12, 'I', 'n', 't', 'e',
+    'r', 's', 'e', 'c', 't', 'i', 'o', 'n',   3, 226, 138, 147,  70, 'S', 'u',
+    'b', 's', 'e', 't',   3,   1,   3, 226, 138, 143,   5, 'E', 'q', 'u', 'a',
+    'l',   3, 226, 138, 145,  72, 'S', 'u', 'p', 'e', 'r', 's', 'e', 't',   3,
+      1,   3, 226, 138, 144,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 146,
+      5, 'U', 'n', 'i', 'o', 'n',   3, 226, 138, 148,   3, 's', 'c', 'r',   4,
+    240, 157, 146, 174,   3, 't', 'a', 'r',   3, 226, 139, 134,  66, 'u', 'b',
+     15,   1,   3, 226, 139, 144,  67, 's', 'e', 't',   1,   1,   3, 226, 139,
+    144,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 134,  71, 'u', 'c', 'c',
+    'e', 'e', 'd', 's',  16,   3,   3, 226, 137, 187,   5, 'E', 'q', 'u', 'a',
+    'l',   3, 226, 170, 176,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a',
+    'l',   3, 226, 137, 189,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 191,
+      7, 'u', 'c', 'h', 'T', 'h', 'a', 't',   3, 226, 136, 139,   2, 'u', 'm',
+      3, 226, 136, 145,  66, 'u', 'p',  16,   2,   3, 226, 139, 145,  69, 'e',
+    'r', 's', 'e', 't',   2,   1,   3, 226, 138, 131,   5, 'E', 'q', 'u', 'a',
+    'l',   3, 226, 138, 135,   3, 's', 'e', 't',   3, 226, 139, 145, 132, 'H',
+    'O', 'R', 'N',   2, 195, 158,   4, 'R', 'A', 'D', 'E',   3, 226, 132, 162,
+      4, 'S', 'H', 'c', 'y',   2, 208, 139,   3, 'S', 'c', 'y',   2, 208, 166,
+      2, 'a', 'b',   1,   9,   2, 'a', 'u',   2, 206, 164,   5, 'c', 'a', 'r',
+    'o', 'n',   2, 197, 164,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 162,   2,
+    'c', 'y',   2, 208, 162,   2, 'f', 'r',   4, 240, 157, 148, 151,   8, 'h',
+    'e', 'r', 'e', 'f', 'o', 'r', 'e',   3, 226, 136, 180,   4, 'h', 'e', 't',
+    'a',   2, 206, 152,   9, 'h', 'i', 'c', 'k', 'S', 'p', 'a', 'c', 'e',   6,
+    226, 129, 159, 226, 128, 138,   8, 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',
+      3, 226, 128, 137,  68, 'i', 'l', 'd', 'e',   5,   3,   3, 226, 136, 188,
+      5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 131,   9, 'F', 'u', 'l', 'l',
+    'E', 'q', 'u', 'a', 'l',   3, 226, 137, 133,   5, 'T', 'i', 'l', 'd', 'e',
+      3, 226, 137, 136,   3, 'o', 'p', 'f',   4, 240, 157, 149, 139,   8, 'r',
+    'i', 'p', 'l', 'e', 'D', 'o', 't',   3, 226, 131, 155,   3, 's', 'c', 'r',
+      4, 240, 157, 146, 175,   5, 's', 't', 'r', 'o', 'k',   2, 197, 166, 133,
+    'a', 'c', 'u', 't', 'e',   2, 195, 154,  67, 'a', 'r', 'r',  29,   1,   3,
+    226, 134, 159,   4, 'o', 'c', 'i', 'r',   3, 226, 165, 137,   4, 'b', 'r',
+    'c', 'y',   2, 208, 142,   5, 'b', 'r', 'e', 'v', 'e',   2, 197, 172, 132,
+    'c', 'i', 'r', 'c',   2, 195, 155,   2, 'c', 'y',   2, 208, 163,   5, 'd',
+    'b', 'l', 'a', 'c',   2, 197, 176,   2, 'f', 'r',   4, 240, 157, 148, 152,
+    133, 'g', 'r', 'a', 'v', 'e',   2, 195, 153,   4, 'm', 'a', 'c', 'r',   2,
+    197, 170,   7, 'n', 'd', 'e', 'r', 'B', 'a', 'r',   1, '_',   9, 'n', 'd',
+    'e', 'r', 'B', 'r', 'a', 'c', 'e',   3, 226, 143, 159,  11, 'n', 'd', 'e',
+    'r', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 142, 181,  15, 'n', 'd',
+    'e', 'r', 'P', 'a', 'r', 'e', 'n', 't', 'h', 'e', 's', 'i', 's',   3, 226,
+    143, 157,  68, 'n', 'i', 'o', 'n',  17,   1,   3, 226, 139, 131,   4, 'P',
+    'l', 'u', 's',   3, 226, 138, 142,   4, 'o', 'g', 'o', 'n',   2, 197, 178,
+      3, 'o', 'p', 'f',   4, 240, 157, 149, 140,  70, 'p', 'A', 'r', 'r', 'o',
+    'w',  15,   2,   3, 226, 134, 145,   3, 'B', 'a', 'r',   3, 226, 164, 146,
+      9, 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 133,  10,
+    'p', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 149,  12,
+    'p', 'E', 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',   3, 226, 165,
+    174,  68, 'p', 'T', 'e', 'e',  14,   1,   3, 226, 138, 165,   5, 'A', 'r',
+    'r', 'o', 'w',   3, 226, 134, 165,   6, 'p', 'a', 'r', 'r', 'o', 'w',   3,
+    226, 135, 145,  10, 'p', 'd', 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3,
+    226, 135, 149,  13, 'p', 'p', 'e', 'r', 'L', 'e', 'f', 't', 'A', 'r', 'r',
+    'o', 'w',   3, 226, 134, 150,  14, 'p', 'p', 'e', 'r', 'R', 'i', 'g', 'h',
+    't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 151,  67, 'p', 's', 'i',  10,
+      1,   2, 207, 146,   3, 'l', 'o', 'n',   2, 206, 165,   4, 'r', 'i', 'n',
+    'g',   2, 197, 174,   3, 's', 'c', 'r',   4, 240, 157, 146, 176,   5, 't',
+    'i', 'l', 'd', 'e',   2, 197, 168, 131, 'u', 'm', 'l',   2, 195, 156,   4,
+    'D', 'a', 's', 'h',   3, 226, 138, 171,   3, 'b', 'a', 'r',   3, 226, 171,
+    171,   2, 'c', 'y',   2, 208, 146,  68, 'd', 'a', 's', 'h',   9,   1,   3,
+    226, 138, 169,   1, 'l',   3, 226, 171, 166,   2, 'e', 'e',   3, 226, 139,
+    129,   5, 'e', 'r', 'b', 'a', 'r',   3, 226, 128, 150,  67, 'e', 'r', 't',
+      7,   4,   3, 226, 128, 150,   7, 'i', 'c', 'a', 'l', 'B', 'a', 'r',   3,
+    226, 136, 163,   8, 'i', 'c', 'a', 'l', 'L', 'i', 'n', 'e',   1, '|',  13,
+    'i', 'c', 'a', 'l', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',   3, 226,
+    157, 152,   9, 'i', 'c', 'a', 'l', 'T', 'i', 'l', 'd', 'e',   3, 226, 137,
+    128,  12, 'e', 'r', 'y', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',   3,
+    226, 128, 138,   2, 'f', 'r',   4, 240, 157, 148, 153,   3, 'o', 'p', 'f',
+      4, 240, 157, 149, 141,   3, 's', 'c', 'r',   4, 240, 157, 146, 177,   5,
+    'v', 'd', 'a', 's', 'h',   3, 226, 138, 170,   4, 'c', 'i', 'r', 'c',   2,
+    197, 180,   4, 'e', 'd', 'g', 'e',   3, 226, 139, 128,   2, 'f', 'r',   4,
+    240, 157, 148, 154,   3, 'o', 'p', 'f',   4, 240, 157, 149, 142,   3, 's',
+    'c', 'r',   4, 240, 157, 146, 178,   2, 'f', 'r',   4, 240, 157, 148, 155,
+      1, 'i',   2, 206, 158,   3, 'o', 'p', 'f',   4, 240, 157, 149, 143,   3,
+    's', 'c', 'r',   4, 240, 157, 146, 179,   3, 'A', 'c', 'y',   2, 208, 175,
+      3, 'I', 'c', 'y',   2, 208, 135,   3, 'U', 'c', 'y',   2, 208, 174, 133,
+    'a', 'c', 'u', 't', 'e',   2, 195, 157,   4, 'c', 'i', 'r', 'c',   2, 197,
+    182,   2, 'c', 'y',   2, 208, 171,   2, 'f', 'r',   4, 240, 157, 148, 156,
+      3, 'o', 'p', 'f',   4, 240, 157, 149, 144,   3, 's', 'c', 'r',   4, 240,
+    157, 146, 180,   3, 'u', 'm', 'l',   2, 197, 184,   3, 'H', 'c', 'y',   2,
+    208, 150,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 185,   5, 'c', 'a', 'r',
+    'o', 'n',   2, 197, 189,   2, 'c', 'y',   2, 208, 151,   3, 'd', 'o', 't',
+      2, 197, 187,  13, 'e', 'r', 'o', 'W', 'i', 'd', 't', 'h', 'S', 'p', 'a',
+    'c', 'e',   3, 226, 128, 139,   3, 'e', 't', 'a',   2, 206, 150,   2, 'f',
+    'r',   3, 226, 132, 168,   3, 'o', 'p', 'f',   3, 226, 132, 164,   3, 's',
+    'c', 'r',   4, 240, 157, 146, 181, 133, 'a', 'c', 'u', 't', 'e',   2, 195,
+    161,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 131,  65, 'c',  23,   5,   3,
+    226, 136, 190,   1, 'E',   5, 226, 136, 190, 204, 179,   1, 'd',   3, 226,
+    136, 191, 131, 'i', 'r', 'c',   2, 195, 162, 131, 'u', 't', 'e',   2, 194,
+    180,   1, 'y',   2, 208, 176, 132, 'e', 'l', 'i', 'g',   2, 195, 166,  65,
+    'f',  26,   1,   3, 226, 129, 161,   1, 'r',   4, 240, 157, 148, 158, 133,
+    'g', 'r', 'a', 'v', 'e',   2, 195, 160,   6, 'l', 'e', 'f', 's', 'y', 'm',
+      3, 226, 132, 181,   4, 'l', 'e', 'p', 'h',   3, 226, 132, 181,   4, 'l',
+    'p', 'h', 'a',   2, 206, 177,   4, 'm', 'a', 'c', 'r',   2, 196, 129,   4,
+    'm', 'a', 'l', 'g',   3, 226, 168, 191, 130, 'm', 'p',   1, '&',  66, 'n',
+    'd',  19,   4,   3, 226, 136, 167,   3, 'a', 'n', 'd',   3, 226, 169, 149,
+      1, 'd',   3, 226, 169, 156,   5, 's', 'l', 'o', 'p', 'e',   3, 226, 169,
+    152,   1, 'v',   3, 226, 169, 154,  66, 'n', 'g',  22,   7,   3, 226, 136,
+    160,   1, 'e',   3, 226, 166, 164,   2, 'l', 'e',   3, 226, 136, 160,  67,
+    'm', 's', 'd',   5,   8,   3, 226, 136, 161,   2, 'a', 'a',   3, 226, 166,
+    168,   2, 'a', 'b',   3, 226, 166, 169,   2, 'a', 'c',   3, 226, 166, 170,
+      2, 'a', 'd',   3, 226, 166, 171,   2, 'a', 'e',   3, 226, 166, 172,   2,
+    'a', 'f',   3, 226, 166, 173,   2, 'a', 'g',   3, 226, 166, 174,   2, 'a',
+    'h',   3, 226, 166, 175,  66, 'r', 't',  12,   1,   3, 226, 136, 159,  66,
+    'v', 'b',   1,   1,   3, 226, 138, 190,   1, 'd',   3, 226, 166, 157,   3,
+    's', 'p', 'h',   3, 226, 136, 162,   2, 's', 't',   2, 195, 133,   4, 'z',
+    'a', 'r', 'r',   3, 226, 141, 188,   4, 'o', 'g', 'o', 'n',   2, 196, 133,
+      3, 'o', 'p', 'f',   4, 240, 157, 149, 146,  65, 'p',  36,   6,   3, 226,
+    137, 136,   1, 'E',   3, 226, 169, 176,   4, 'a', 'c', 'i', 'r',   3, 226,
+    169, 175,   1, 'e',   3, 226, 137, 138,   2, 'i', 'd',   3, 226, 137, 139,
+      2, 'o', 's',   1,  39,  68, 'p', 'r', 'o', 'x',   1,   1,   3, 226, 137,
+    136,   2, 'e', 'q',   3, 226, 137, 138, 132, 'r', 'i', 'n', 'g',   2, 195,
+    165,   3, 's', 'c', 'r',   4, 240, 157, 146, 182,   2, 's', 't',   1, '*',
+     68, 's', 'y', 'm', 'p',  39,   1,   3, 226, 137, 136,   2, 'e', 'q',   3,
+    226, 137, 141, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 163, 131, 'u', 'm',
+    'l',   2, 195, 164,   7, 'w', 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136,
+    179,   4, 'w', 'i', 'n', 't',   3, 226, 168, 145,   3, 'N', 'o', 't',   3,
+    226, 171, 173,   7, 'a', 'c', 'k', 'c', 'o', 'n', 'g',   3, 226, 137, 140,
+     10, 'a', 'c', 'k', 'e', 'p', 's', 'i', 'l', 'o', 'n',   2, 207, 182,   8,
+    'a', 'c', 'k', 'p', 'r', 'i', 'm', 'e',   3, 226, 128, 181,  70, 'a', 'c',
+    'k', 's', 'i', 'm',  75,   1,   3, 226, 136, 189,   2, 'e', 'q',   3, 226,
+    139, 141,   5, 'a', 'r', 'v', 'e', 'e',   3, 226, 138, 189,  69, 'a', 'r',
+    'w', 'e', 'd',  74,   1,   3, 226, 140, 133,   2, 'g', 'e',   3, 226, 140,
+    133,  67, 'b', 'r', 'k',  74,   1,   3, 226, 142, 181,   4, 't', 'b', 'r',
+    'k',   3, 226, 142, 182,   4, 'c', 'o', 'n', 'g',   3, 226, 137, 140,   2,
+    'c', 'y',   2, 208, 177,   4, 'd', 'q', 'u', 'o',   3, 226, 128, 158,  69,
+    'e', 'c', 'a', 'u', 's',  71,   1,   3, 226, 136, 181,   1, 'e',   3, 226,
+    136, 181,   6, 'e', 'm', 'p', 't', 'y', 'v',   3, 226, 166, 176,   4, 'e',
+    'p', 's', 'i',   2, 207, 182,   5, 'e', 'r', 'n', 'o', 'u',   3, 226, 132,
+    172,   3, 'e', 't', 'a',   2, 206, 178,   3, 'e', 't', 'h',   3, 226, 132,
+    182,   6, 'e', 't', 'w', 'e', 'e', 'n',   3, 226, 137, 172,   2, 'f', 'r',
+      4, 240, 157, 148, 159,   5, 'i', 'g', 'c', 'a', 'p',   3, 226, 139, 130,
+      6, 'i', 'g', 'c', 'i', 'r', 'c',   3, 226, 151, 175,   5, 'i', 'g', 'c',
+    'u', 'p',   3, 226, 139, 131,   6, 'i', 'g', 'o', 'd', 'o', 't',   3, 226,
+    168, 128,   7, 'i', 'g', 'o', 'p', 'l', 'u', 's',   3, 226, 168, 129,   8,
+    'i', 'g', 'o', 't', 'i', 'm', 'e', 's',   3, 226, 168, 130,   7, 'i', 'g',
+    's', 'q', 'c', 'u', 'p',   3, 226, 168, 134,   6, 'i', 'g', 's', 't', 'a',
+    'r',   3, 226, 152, 133,  14, 'i', 'g', 't', 'r', 'i', 'a', 'n', 'g', 'l',
+    'e', 'd', 'o', 'w', 'n',   3, 226, 150, 189,  12, 'i', 'g', 't', 'r', 'i',
+    'a', 'n', 'g', 'l', 'e', 'u', 'p',   3, 226, 150, 179,   7, 'i', 'g', 'u',
+    'p', 'l', 'u', 's',   3, 226, 168, 132,   5, 'i', 'g', 'v', 'e', 'e',   3,
+    226, 139, 129,   7, 'i', 'g', 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 128,
+      5, 'k', 'a', 'r', 'o', 'w',   3, 226, 164, 141,  11, 'l', 'a', 'c', 'k',
+    'l', 'o', 'z', 'e', 'n', 'g', 'e',   3, 226, 167, 171,  10, 'l', 'a', 'c',
+    'k', 's', 'q', 'u', 'a', 'r', 'e',   3, 226, 150, 170,  76, 'l', 'a', 'c',
+    'k', 't', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  48,   3,   3, 226, 150, 180,
+      4, 'd', 'o', 'w', 'n',   3, 226, 150, 190,   4, 'l', 'e', 'f', 't',   3,
+    226, 151, 130,   5, 'r', 'i', 'g', 'h', 't',   3, 226, 150, 184,   4, 'l',
+    'a', 'n', 'k',   3, 226, 144, 163,   4, 'l', 'k', '1', '2',   3, 226, 150,
+    146,   4, 'l', 'k', '1', '4',   3, 226, 150, 145,   4, 'l', 'k', '3', '4',
+      3, 226, 150, 147,   4, 'l', 'o', 'c', 'k',   3, 226, 150, 136,  66, 'n',
+    'e',  45,   1,   4, '=', 226, 131, 165,   4, 'q', 'u', 'i', 'v',   6, 226,
+    137, 161, 226, 131, 165,   3, 'n', 'o', 't',   3, 226, 140, 144,   3, 'o',
+    'p', 'f',   4, 240, 157, 149, 147,  66, 'o', 't',  43,   1,   3, 226, 138,
+    165,   3, 't', 'o', 'm',   3, 226, 138, 165,   5, 'o', 'w', 't', 'i', 'e',
+      3, 226, 139, 136,   4, 'o', 'x', 'D', 'L',   3, 226, 149, 151,   4, 'o',
+    'x', 'D', 'R',   3, 226, 149, 148,   4, 'o', 'x', 'D', 'l',   3, 226, 149,
+    150,   4, 'o', 'x', 'D', 'r',   3, 226, 149, 147,  67, 'o', 'x', 'H',  38,
+      4,   3, 226, 149, 144,   1, 'D',   3, 226, 149, 166,   1, 'U',   3, 226,
+    149, 169,   1, 'd',   3, 226, 149, 164,   1, 'u',   3, 226, 149, 167,   4,
+    'o', 'x', 'U', 'L',   3, 226, 149, 157,   4, 'o', 'x', 'U', 'R',   3, 226,
+    149, 154,   4, 'o', 'x', 'U', 'l',   3, 226, 149, 156,   4, 'o', 'x', 'U',
+    'r',   3, 226, 149, 153,  67, 'o', 'x', 'V',  37,   6,   3, 226, 149, 145,
+      1, 'H',   3, 226, 149, 172,   1, 'L',   3, 226, 149, 163,   1, 'R',   3,
+    226, 149, 160,   1, 'h',   3, 226, 149, 171,   1, 'l',   3, 226, 149, 162,
+      1, 'r',   3, 226, 149, 159,   5, 'o', 'x', 'b', 'o', 'x',   3, 226, 167,
+    137,   4, 'o', 'x', 'd', 'L',   3, 226, 149, 149,   4, 'o', 'x', 'd', 'R',
+      3, 226, 149, 146,   4, 'o', 'x', 'd', 'l',   3, 226, 148, 144,   4, 'o',
+    'x', 'd', 'r',   3, 226, 148, 140,  67, 'o', 'x', 'h',  37,   4,   3, 226,
+    148, 128,   1, 'D',   3, 226, 149, 165,   1, 'U',   3, 226, 149, 168,   1,
+    'd',   3, 226, 148, 172,   1, 'u',   3, 226, 148, 180,   7, 'o', 'x', 'm',
+    'i', 'n', 'u', 's',   3, 226, 138, 159,   6, 'o', 'x', 'p', 'l', 'u', 's',
+      3, 226, 138, 158,   7, 'o', 'x', 't', 'i', 'm', 'e', 's',   3, 226, 138,
+    160,   4, 'o', 'x', 'u', 'L',   3, 226, 149, 155,   4, 'o', 'x', 'u', 'R',
+      3, 226, 149, 152,   4, 'o', 'x', 'u', 'l',   3, 226, 148, 152,   4, 'o',
+    'x', 'u', 'r',   3, 226, 148, 148,  67, 'o', 'x', 'v',  33,   6,   3, 226,
+    148, 130,   1, 'H',   3, 226, 149, 170,   1, 'L',   3, 226, 149, 161,   1,
+    'R',   3, 226, 149, 158,   1, 'h',   3, 226, 148, 188,   1, 'l',   3, 226,
+    148, 164,   1, 'r',   3, 226, 148, 156,   5, 'p', 'r', 'i', 'm', 'e',   3,
+    226, 128, 181,   4, 'r', 'e', 'v', 'e',   2, 203, 152, 133, 'r', 'v', 'b',
+    'a', 'r',   2, 194, 166,   3, 's', 'c', 'r',   4, 240, 157, 146, 183,   4,
+    's', 'e', 'm', 'i',   3, 226, 129, 143,  67, 's', 'i', 'm',  33,   1,   3,
+    226, 136, 189,   1, 'e',   3, 226, 139, 141,  67, 's', 'o', 'l',  33,   2,
+      1,  92,   1, 'b',   3, 226, 167, 133,   4, 'h', 's', 'u', 'b',   3, 226,
+    159, 136,  67, 'u', 'l', 'l',  34,   1,   3, 226, 128, 162,   2, 'e', 't',
+      3, 226, 128, 162,  67, 'u', 'm', 'p',  34,   2,   3, 226, 137, 142,   1,
+    'E',   3, 226, 170, 174,  65, 'e',   1,   1,   3, 226, 137, 143,   1, 'q',
+      3, 226, 137, 143,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 135,  66, 'a',
+    'p',  51,   6,   3, 226, 136, 169,   3, 'a', 'n', 'd',   3, 226, 169, 132,
+      5, 'b', 'r', 'c', 'u', 'p',   3, 226, 169, 137,   3, 'c', 'a', 'p',   3,
+    226, 169, 139,   3, 'c', 'u', 'p',   3, 226, 169, 135,   3, 'd', 'o', 't',
+      3, 226, 169, 128,   1, 's',   6, 226, 136, 169, 239, 184, 128,   4, 'a',
+    'r', 'e', 't',   3, 226, 129, 129,   4, 'a', 'r', 'o', 'n',   2, 203, 135,
+      4, 'c', 'a', 'p', 's',   3, 226, 169, 141,   5, 'c', 'a', 'r', 'o', 'n',
+      2, 196, 141, 133, 'c', 'e', 'd', 'i', 'l',   2, 195, 167,   4, 'c', 'i',
+    'r', 'c',   2, 196, 137,  68, 'c', 'u', 'p', 's',  50,   1,   3, 226, 169,
+    140,   2, 's', 'm',   3, 226, 169, 144,   3, 'd', 'o', 't',   2, 196, 139,
+    132, 'e', 'd', 'i', 'l',   2, 194, 184,   6, 'e', 'm', 'p', 't', 'y', 'v',
+      3, 226, 166, 178, 195, 'e', 'n', 't',  47,   1,   2, 194, 162,   5, 'e',
+    'r', 'd', 'o', 't',   2, 194, 183,   2, 'f', 'r',   4, 240, 157, 148, 160,
+      3, 'h', 'c', 'y',   2, 209, 135,  68, 'h', 'e', 'c', 'k',  45,   1,   3,
+    226, 156, 147,   4, 'm', 'a', 'r', 'k',   3, 226, 156, 147,   2, 'h', 'i',
+      2, 207, 135,  66, 'i', 'r',  44,   6,   3, 226, 151, 139,   1, 'E',   3,
+    226, 167, 131,  65, 'c',   5,   8,   2, 203, 134,   2, 'e', 'q',   3, 226,
+    137, 151,  11, 'l', 'e', 'a', 'r', 'r', 'o', 'w', 'l', 'e', 'f', 't',   3,
+    226, 134, 186,  12, 'l', 'e', 'a', 'r', 'r', 'o', 'w', 'r', 'i', 'g', 'h',
+    't',   3, 226, 134, 187,   4, 'l', 'e', 'd', 'R',   2, 194, 174,   4, 'l',
+    'e', 'd', 'S',   3, 226, 147, 136,   6, 'l', 'e', 'd', 'a', 's', 't',   3,
+    226, 138, 155,   7, 'l', 'e', 'd', 'c', 'i', 'r', 'c',   3, 226, 138, 154,
+      7, 'l', 'e', 'd', 'd', 'a', 's', 'h',   3, 226, 138, 157,   1, 'e',   3,
+    226, 137, 151,   5, 'f', 'n', 'i', 'n', 't',   3, 226, 168, 144,   3, 'm',
+    'i', 'd',   3, 226, 171, 175,   4, 's', 'c', 'i', 'r',   3, 226, 167, 130,
+     68, 'l', 'u', 'b', 's',  57,   1,   3, 226, 153, 163,   3, 'u', 'i', 't',
+      3, 226, 153, 163,  68, 'o', 'l', 'o', 'n',  57,   1,   1, ':',  65, 'e',
+      1,   1,   3, 226, 137, 148,   1, 'q',   3, 226, 137, 148,  68, 'o', 'm',
+    'm', 'a',  58,   1,   1, ',',   1, 't',   1, '@',  67, 'o', 'm', 'p',  58,
+      3,   3, 226, 136, 129,   2, 'f', 'n',   3, 226, 136, 152,   6, 'l', 'e',
+    'm', 'e', 'n', 't',   3, 226, 136, 129,   5, 'l', 'e', 'x', 'e', 's',   3,
+    226, 132, 130,  67, 'o', 'n', 'g',  60,   1,   3, 226, 137, 133,   3, 'd',
+    'o', 't',   3, 226, 169, 173,   5, 'o', 'n', 'i', 'n', 't',   3, 226, 136,
+    174,   3, 'o', 'p', 'f',   4, 240, 157, 149, 148,   5, 'o', 'p', 'r', 'o',
+    'd',   3, 226, 136, 144, 195, 'o', 'p', 'y',  57,   1,   2, 194, 169,   2,
+    's', 'r',   3, 226, 132, 151,   4, 'r', 'a', 'r', 'r',   3, 226, 134, 181,
+      4, 'r', 'o', 's', 's',   3, 226, 156, 151,   3, 's', 'c', 'r',   4, 240,
+    157, 146, 184,  67, 's', 'u', 'b',  54,   1,   3, 226, 171, 143,   1, 'e',
+      3, 226, 171, 145,  67, 's', 'u', 'p',  54,   1,   3, 226, 171, 144,   1,
+    'e',   3, 226, 171, 146,   4, 't', 'd', 'o', 't',   3, 226, 139, 175,   6,
+    'u', 'd', 'a', 'r', 'r', 'l',   3, 226, 164, 184,   6, 'u', 'd', 'a', 'r',
+    'r', 'r',   3, 226, 164, 181,   4, 'u', 'e', 'p', 'r',   3, 226, 139, 158,
+      4, 'u', 'e', 's', 'c',   3, 226, 139, 159,  69, 'u', 'l', 'a', 'r', 'r',
+     49,   1,   3, 226, 134, 182,   1, 'p',   3, 226, 164, 189,  66, 'u', 'p',
+     49,   6,   3, 226, 136, 170,   5, 'b', 'r', 'c', 'a', 'p',   3, 226, 169,
+    136,   3, 'c', 'a', 'p',   3, 226, 169, 134,   3, 'c', 'u', 'p',   3, 226,
+    169, 138,   3, 'd', 'o', 't',   3, 226, 138, 141,   2, 'o', 'r',   3, 226,
+    169, 133,   1, 's',   6, 226, 136, 170, 239, 184, 128,  69, 'u', 'r', 'a',
+    'r', 'r',  54,   1,   3, 226, 134, 183,   1, 'm',   3, 226, 164, 188,  10,
+    'u', 'r', 'l', 'y', 'e', 'q', 'p', 'r', 'e', 'c',   3, 226, 139, 158,  10,
+    'u', 'r', 'l', 'y', 'e', 'q', 's', 'u', 'c', 'c',   3, 226, 139, 159,   7,
+    'u', 'r', 'l', 'y', 'v', 'e', 'e',   3, 226, 139, 142,   9, 'u', 'r', 'l',
+    'y', 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 143, 133, 'u', 'r', 'r', 'e',
+    'n',   2, 194, 164,  13, 'u', 'r', 'v', 'e', 'a', 'r', 'r', 'o', 'w', 'l',
+    'e', 'f', 't',   3, 226, 134, 182,  14, 'u', 'r', 'v', 'e', 'a', 'r', 'r',
+    'o', 'w', 'r', 'i', 'g', 'h', 't',   3, 226, 134, 183,   4, 'u', 'v', 'e',
+    'e',   3, 226, 139, 142,   4, 'u', 'w', 'e', 'd',   3, 226, 139, 143,   7,
+    'w', 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136, 178,   4, 'w', 'i', 'n',
+    't',   3, 226, 136, 177,   5, 'y', 'l', 'c', 't', 'y',   3, 226, 140, 173,
+      3, 'A', 'r', 'r',   3, 226, 135, 147,   3, 'H', 'a', 'r',   3, 226, 165,
+    165,   5, 'a', 'g', 'g', 'e', 'r',   3, 226, 128, 160,   5, 'a', 'l', 'e',
+    't', 'h',   3, 226, 132, 184,   3, 'a', 'r', 'r',   3, 226, 134, 147,  67,
+    'a', 's', 'h',  43,   1,   3, 226, 128, 144,   1, 'v',   3, 226, 138, 163,
+      6, 'b', 'k', 'a', 'r', 'o', 'w',   3, 226, 164, 143,   4, 'b', 'l', 'a',
+    'c',   2, 203, 157,   5, 'c', 'a', 'r', 'o', 'n',   2, 196, 143,   2, 'c',
+    'y',   2, 208, 180,  65, 'd',  39,   3,   3, 226, 133, 134,   5, 'a', 'g',
+    'g', 'e', 'r',   3, 226, 128, 161,   3, 'a', 'r', 'r',   3, 226, 135, 138,
+      5, 'o', 't', 's', 'e', 'q',   3, 226, 169, 183, 130, 'e', 'g',   2, 194,
+    176,   4, 'e', 'l', 't', 'a',   2, 206, 180,   6, 'e', 'm', 'p', 't', 'y',
+    'v',   3, 226, 166, 177,   5, 'f', 'i', 's', 'h', 't',   3, 226, 165, 191,
+      2, 'f', 'r',   4, 240, 157, 148, 161,   4, 'h', 'a', 'r', 'l',   3, 226,
+    135, 131,   4, 'h', 'a', 'r', 'r',   3, 226, 135, 130,  67, 'i', 'a', 'm',
+     34,   2,   3, 226, 139, 132,  67, 'o', 'n', 'd',   2,   1,   3, 226, 139,
+    132,   4, 's', 'u', 'i', 't',   3, 226, 153, 166,   1, 's',   3, 226, 153,
+    166,   2, 'i', 'e',   2, 194, 168,   6, 'i', 'g', 'a', 'm', 'm', 'a',   2,
+    207, 157,   4, 'i', 's', 'i', 'n',   3, 226, 139, 178,  66, 'i', 'v',  33,
+      2,   2, 195, 183, 195, 'i', 'd', 'e',   2,   1,   2, 195, 183,   7, 'o',
+    'n', 't', 'i', 'm', 'e', 's',   3, 226, 139, 135,   3, 'o', 'n', 'x',   3,
+    226, 139, 135,   3, 'j', 'c', 'y',   2, 209, 146,   5, 'l', 'c', 'o', 'r',
+    'n',   3, 226, 140, 158,   5, 'l', 'c', 'r', 'o', 'p',   3, 226, 140, 141,
+      5, 'o', 'l', 'l', 'a', 'r',   1, '$',   3, 'o', 'p', 'f',   4, 240, 157,
+    149, 149,  66, 'o', 't',  30,   4,   2, 203, 153,  66, 'e', 'q',   4,   1,
+      3, 226, 137, 144,   3, 'd', 'o', 't',   3, 226, 137, 145,   5, 'm', 'i',
+    'n', 'u', 's',   3, 226, 136, 184,   4, 'p', 'l', 'u', 's',   3, 226, 136,
+    148,   6, 's', 'q', 'u', 'a', 'r', 'e',   3, 226, 138, 161,  13, 'o', 'u',
+    'b', 'l', 'e', 'b', 'a', 'r', 'w', 'e', 'd', 'g', 'e',   3, 226, 140, 134,
+      8, 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 147,  13, 'o',
+    'w', 'n', 'd', 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w', 's',   3, 226, 135,
+    138,  14, 'o', 'w', 'n', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'l', 'e', 'f',
+    't',   3, 226, 135, 131,  15, 'o', 'w', 'n', 'h', 'a', 'r', 'p', 'o', 'o',
+    'n', 'r', 'i', 'g', 'h', 't',   3, 226, 135, 130,   7, 'r', 'b', 'k', 'a',
+    'r', 'o', 'w',   3, 226, 164, 144,   5, 'r', 'c', 'o', 'r', 'n',   3, 226,
+    140, 159,   5, 'r', 'c', 'r', 'o', 'p',   3, 226, 140, 140,   3, 's', 'c',
+    'r',   4, 240, 157, 146, 185,   3, 's', 'c', 'y',   2, 209, 149,   3, 's',
+    'o', 'l',   3, 226, 167, 182,   5, 's', 't', 'r', 'o', 'k',   2, 196, 145,
+      4, 't', 'd', 'o', 't',   3, 226, 139, 177,  67, 't', 'r', 'i',  21,   1,
+      3, 226, 150, 191,   1, 'f',   3, 226, 150, 190,   4, 'u', 'a', 'r', 'r',
+      3, 226, 135, 181,   4, 'u', 'h', 'a', 'r',   3, 226, 165, 175,   6, 'w',
+    'a', 'n', 'g', 'l', 'e',   3, 226, 166, 166,   3, 'z', 'c', 'y',   2, 209,
+    159,   7, 'z', 'i', 'g', 'r', 'a', 'r', 'r',   3, 226, 159, 191,   4, 'D',
+    'D', 'o', 't',   3, 226, 169, 183,   3, 'D', 'o', 't',   3, 226, 137, 145,
+    133, 'a', 'c', 'u', 't', 'e',   2, 195, 169,   5, 'a', 's', 't', 'e', 'r',
+      3, 226, 169, 174,   5, 'c', 'a', 'r', 'o', 'n',   2, 196, 155,  67, 'c',
+    'i', 'r',  41,   1,   3, 226, 137, 150, 129, 'c',   2, 195, 170,   5, 'c',
+    'o', 'l', 'o', 'n',   3, 226, 137, 149,   2, 'c', 'y',   2, 209, 141,   3,
+    'd', 'o', 't',   2, 196, 151,   1, 'e',   3, 226, 133, 135,   4, 'f', 'D',
+    'o', 't',   3, 226, 137, 146,   2, 'f', 'r',   4, 240, 157, 148, 162,  65,
+    'g',  35,   2,   3, 226, 170, 154, 132, 'r', 'a', 'v', 'e',   2, 195, 168,
+     65, 's',   1,   1,   3, 226, 170, 150,   3, 'd', 'o', 't',   3, 226, 170,
+    152,  65, 'l',  37,   3,   3, 226, 170, 153,   6, 'i', 'n', 't', 'e', 'r',
+    's',   3, 226, 143, 167,   1, 'l',   3, 226, 132, 147,  65, 's',   1,   1,
+      3, 226, 170, 149,   3, 'd', 'o', 't',   3, 226, 170, 151,   4, 'm', 'a',
+    'c', 'r',   2, 196, 147,  68, 'm', 'p', 't', 'y',  39,   2,   3, 226, 136,
+    133,   3, 's', 'e', 't',   3, 226, 136, 133,   1, 'v',   3, 226, 136, 133,
+     67, 'm', 's', 'p',  40,   2,   3, 226, 128, 131,   2, '1', '3',   3, 226,
+    128, 132,   2, '1', '4',   3, 226, 128, 133,   2, 'n', 'g',   2, 197, 139,
+      3, 'n', 's', 'p',   3, 226, 128, 130,   4, 'o', 'g', 'o', 'n',   2, 196,
+    153,   3, 'o', 'p', 'f',   4, 240, 157, 149, 150,  67, 'p', 'a', 'r',  37,
+      1,   3, 226, 139, 149,   2, 's', 'l',   3, 226, 167, 163,   4, 'p', 'l',
+    'u', 's',   3, 226, 169, 177,  67, 'p', 's', 'i',  36,   2,   2, 206, 181,
+      3, 'l', 'o', 'n',   2, 206, 181,   1, 'v',   2, 207, 181,   5, 'q', 'c',
+    'i', 'r', 'c',   3, 226, 137, 150,   6, 'q', 'c', 'o', 'l', 'o', 'n',   3,
+    226, 137, 149,   4, 'q', 's', 'i', 'm',   3, 226, 137, 130,   9, 'q', 's',
+    'l', 'a', 'n', 't', 'g', 't', 'r',   3, 226, 170, 150,  10, 'q', 's', 'l',
+    'a', 'n', 't', 'l', 'e', 's', 's',   3, 226, 170, 149,   5, 'q', 'u', 'a',
+    'l', 's',   1, '=',   5, 'q', 'u', 'e', 's', 't',   3, 226, 137, 159,  68,
+    'q', 'u', 'i', 'v',  30,   1,   3, 226, 137, 161,   2, 'D', 'D',   3, 226,
+    169, 184,   7, 'q', 'v', 'p', 'a', 'r', 's', 'l',   3, 226, 167, 165,   4,
+    'r', 'D', 'o', 't',   3, 226, 137, 147,   4, 'r', 'a', 'r', 'r',   3, 226,
+    165, 177,   3, 's', 'c', 'r',   3, 226, 132, 175,   4, 's', 'd', 'o', 't',
+      3, 226, 137, 144,   3, 's', 'i', 'm',   3, 226, 137, 130,   2, 't', 'a',
+      2, 206, 183, 130, 't', 'h',   2, 195, 176, 131, 'u', 'm', 'l',   2, 195,
+    171,   3, 'u', 'r', 'o',   3, 226, 130, 172,   3, 'x', 'c', 'l',   1, '!',
+      4, 'x', 'i', 's', 't',   3, 226, 136, 131,  10, 'x', 'p', 'e', 'c', 't',
+    'a', 't', 'i', 'o', 'n',   3, 226, 132, 176,  11, 'x', 'p', 'o', 'n', 'e',
+    'n', 't', 'i', 'a', 'l', 'e',   3, 226, 133, 135,  12, 'a', 'l', 'l', 'i',
+    'n', 'g', 'd', 'o', 't', 's', 'e', 'q',   3, 226, 137, 146,   2, 'c', 'y',
+      2, 209, 132,   5, 'e', 'm', 'a', 'l', 'e',   3, 226, 153, 128,   5, 'f',
+    'i', 'l', 'i', 'g',   3, 239, 172, 131,   4, 'f', 'l', 'i', 'g',   3, 239,
+    172, 128,   5, 'f', 'l', 'l', 'i', 'g',   3, 239, 172, 132,   2, 'f', 'r',
+      4, 240, 157, 148, 163,   4, 'i', 'l', 'i', 'g',   3, 239, 172, 129,   4,
+    'j', 'l', 'i', 'g',   2, 'f', 'j',   3, 'l', 'a', 't',   3, 226, 153, 173,
+      4, 'l', 'l', 'i', 'g',   3, 239, 172, 130,   4, 'l', 't', 'n', 's',   3,
+    226, 150, 177,   3, 'n', 'o', 'f',   2, 198, 146,   3, 'o', 'p', 'f',   4,
+    240, 157, 149, 151,   5, 'o', 'r', 'a', 'l', 'l',   3, 226, 136, 128,  67,
+    'o', 'r', 'k',  20,   1,   3, 226, 139, 148,   1, 'v',   3, 226, 171, 153,
+      7, 'p', 'a', 'r', 't', 'i', 'n', 't',   3, 226, 168, 141, 133, 'r', 'a',
+    'c', '1', '2',   2, 194, 189,   5, 'r', 'a', 'c', '1', '3',   3, 226, 133,
+    147, 133, 'r', 'a', 'c', '1', '4',   2, 194, 188,   5, 'r', 'a', 'c', '1',
+    '5',   3, 226, 133, 149,   5, 'r', 'a', 'c', '1', '6',   3, 226, 133, 153,
+      5, 'r', 'a', 'c', '1', '8',   3, 226, 133, 155,   5, 'r', 'a', 'c', '2',
+    '3',   3, 226, 133, 148,   5, 'r', 'a', 'c', '2', '5',   3, 226, 133, 150,
+    133, 'r', 'a', 'c', '3', '4',   2, 194, 190,   5, 'r', 'a', 'c', '3', '5',
+      3, 226, 133, 151,   5, 'r', 'a', 'c', '3', '8',   3, 226, 133, 156,   5,
+    'r', 'a', 'c', '4', '5',   3, 226, 133, 152,   5, 'r', 'a', 'c', '5', '6',
+      3, 226, 133, 154,   5, 'r', 'a', 'c', '5', '8',   3, 226, 133, 157,   5,
+    'r', 'a', 'c', '7', '8',   3, 226, 133, 158,   4, 'r', 'a', 's', 'l',   3,
+    226, 129, 132,   4, 'r', 'o', 'w', 'n',   3, 226, 140, 162,   3, 's', 'c',
+    'r',   4, 240, 157, 146, 187,  65, 'E',  25,   1,   3, 226, 137, 167,   1,
+    'l',   3, 226, 170, 140,   5, 'a', 'c', 'u', 't', 'e',   2, 199, 181,  68,
+    'a', 'm', 'm', 'a',  24,   1,   2, 206, 179,   1, 'd',   2, 207, 157,   2,
+    'a', 'p',   3, 226, 170, 134,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 159,
+      4, 'c', 'i', 'r', 'c',   2, 196, 157,   2, 'c', 'y',   2, 208, 179,   3,
+    'd', 'o', 't',   2, 196, 161,  65, 'e',  19,   3,   3, 226, 137, 165,   1,
+    'l',   3, 226, 139, 155,  65, 'q',   2,   2,   3, 226, 137, 165,   1, 'q',
+      3, 226, 137, 167,   5, 's', 'l', 'a', 'n', 't',   3, 226, 169, 190,  65,
+    's',   3,   3,   3, 226, 169, 190,   2, 'c', 'c',   3, 226, 170, 169,  67,
+    'd', 'o', 't',   2,   1,   3, 226, 170, 128,  65, 'o',   1,   1,   3, 226,
+    170, 130,   1, 'l',   3, 226, 170, 132,  65, 'l',   3,   1,   6, 226, 139,
+    155, 239, 184, 128,   2, 'e', 's',   3, 226, 170, 148,   2, 'f', 'r',   4,
+    240, 157, 148, 164,  65, 'g',  28,   1,   3, 226, 137, 171,   1, 'g',   3,
+    226, 139, 153,   4, 'i', 'm', 'e', 'l',   3, 226, 132, 183,   3, 'j', 'c',
+    'y',   2, 209, 147,  65, 'l',  26,   3,   3, 226, 137, 183,   1, 'E',   3,
+    226, 170, 146,   1, 'a',   3, 226, 170, 165,   1, 'j',   3, 226, 170, 164,
+      2, 'n', 'E',   3, 226, 137, 169,  67, 'n', 'a', 'p',  27,   1,   3, 226,
+    170, 138,   4, 'p', 'r', 'o', 'x',   3, 226, 170, 138,  66, 'n', 'e',  27,
+      1,   3, 226, 170, 136,  65, 'q',   1,   1,   3, 226, 170, 136,   1, 'q',
+      3, 226, 137, 169,   4, 'n', 's', 'i', 'm',   3, 226, 139, 167,   3, 'o',
+    'p', 'f',   4, 240, 157, 149, 152,   4, 'r', 'a', 'v', 'e',   1, '`',   3,
+    's', 'c', 'r',   3, 226, 132, 138,  67, 's', 'i', 'm',  24,   2,   3, 226,
+    137, 179,   1, 'e',   3, 226, 170, 142,   1, 'l',   3, 226, 170, 144, 193,
+    't',  25,  12,   1, '>',   2, 'c', 'c',   3, 226, 170, 167,   3, 'c', 'i',
+    'r',   3, 226, 169, 186,   3, 'd', 'o', 't',   3, 226, 139, 151,   4, 'l',
+    'P', 'a', 'r',   3, 226, 166, 149,   5, 'q', 'u', 'e', 's', 't',   3, 226,
+    169, 188,   7, 'r', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226, 170, 134,   4,
+    'r', 'a', 'r', 'r',   3, 226, 165, 184,   4, 'r', 'd', 'o', 't',   3, 226,
+    139, 151,   7, 'r', 'e', 'q', 'l', 'e', 's', 's',   3, 226, 139, 155,   8,
+    'r', 'e', 'q', 'q', 'l', 'e', 's', 's',   3, 226, 170, 140,   5, 'r', 'l',
+    'e', 's', 's',   3, 226, 137, 183,   4, 'r', 's', 'i', 'm',   3, 226, 137,
+    179,   8, 'v', 'e', 'r', 't', 'n', 'e', 'q', 'q',   6, 226, 137, 169, 239,
+    184, 128,   3, 'v', 'n', 'E',   6, 226, 137, 169, 239, 184, 128,   3, 'A',
+    'r', 'r',   3, 226, 135, 148,   5, 'a', 'i', 'r', 's', 'p',   3, 226, 128,
+    138,   3, 'a', 'l', 'f',   2, 194, 189,   5, 'a', 'm', 'i', 'l', 't',   3,
+    226, 132, 139,   5, 'a', 'r', 'd', 'c', 'y',   2, 209, 138,  67, 'a', 'r',
+    'r',  20,   2,   3, 226, 134, 148,   3, 'c', 'i', 'r',   3, 226, 165, 136,
+      1, 'w',   3, 226, 134, 173,   3, 'b', 'a', 'r',   3, 226, 132, 143,   4,
+    'c', 'i', 'r', 'c',   2, 196, 165,  69, 'e', 'a', 'r', 't', 's',  19,   1,
+      3, 226, 153, 165,   3, 'u', 'i', 't',   3, 226, 153, 165,   5, 'e', 'l',
+    'l', 'i', 'p',   3, 226, 128, 166,   5, 'e', 'r', 'c', 'o', 'n',   3, 226,
+    138, 185,   2, 'f', 'r',   4, 240, 157, 148, 165,   7, 'k', 's', 'e', 'a',
+    'r', 'o', 'w',   3, 226, 164, 165,   7, 'k', 's', 'w', 'a', 'r', 'o', 'w',
+      3, 226, 164, 166,   4, 'o', 'a', 'r', 'r',   3, 226, 135, 191,   5, 'o',
+    'm', 't', 'h', 't',   3, 226, 136, 187,  12, 'o', 'o', 'k', 'l', 'e', 'f',
+    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 169,  13, 'o', 'o', 'k', 'r',
+    'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 170,   3, 'o',
+    'p', 'f',   4, 240, 157, 149, 153,   5, 'o', 'r', 'b', 'a', 'r',   3, 226,
+    128, 149,   3, 's', 'c', 'r',   4, 240, 157, 146, 189,   5, 's', 'l', 'a',
+    's', 'h',   3, 226, 132, 143,   5, 's', 't', 'r', 'o', 'k',   2, 196, 167,
+      5, 'y', 'b', 'u', 'l', 'l',   3, 226, 129, 131,   5, 'y', 'p', 'h', 'e',
+    'n',   3, 226, 128, 144, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 173,  65,
+    'c',  27,   2,   3, 226, 129, 163, 131, 'i', 'r', 'c',   2, 195, 174,   1,
+    'y',   2, 208, 184,   3, 'e', 'c', 'y',   2, 208, 181, 132, 'e', 'x', 'c',
+    'l',   2, 194, 161,   2, 'f', 'f',   3, 226, 135, 148,   2, 'f', 'r',   4,
+    240, 157, 148, 166, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 172,  65, 'i',
+     23,   4,   3, 226, 133, 136,   4, 'i', 'i', 'n', 't',   3, 226, 168, 140,
+      3, 'i', 'n', 't',   3, 226, 136, 173,   4, 'n', 'f', 'i', 'n',   3, 226,
+    167, 156,   3, 'o', 't', 'a',   3, 226, 132, 169,   4, 'j', 'l', 'i', 'g',
+      2, 196, 179,   4, 'm', 'a', 'c', 'r',   2, 196, 171,   4, 'm', 'a', 'g',
+    'e',   3, 226, 132, 145,   7, 'm', 'a', 'g', 'l', 'i', 'n', 'e',   3, 226,
+    132, 144,   7, 'm', 'a', 'g', 'p', 'a', 'r', 't',   3, 226, 132, 145,   4,
+    'm', 'a', 't', 'h',   2, 196, 177,   3, 'm', 'o', 'f',   3, 226, 138, 183,
+      4, 'm', 'p', 'e', 'd',   2, 198, 181,  65, 'n',  18,   4,   3, 226, 136,
+    136,   4, 'c', 'a', 'r', 'e',   3, 226, 132, 133,  67, 'f', 'i', 'n',   3,
+      1,   3, 226, 136, 158,   3, 't', 'i', 'e',   3, 226, 167, 157,   4, 'o',
+    'd', 'o', 't',   2, 196, 177,  65, 't',   2,   5,   3, 226, 136, 171,   3,
+    'c', 'a', 'l',   3, 226, 138, 186,   5, 'e', 'g', 'e', 'r', 's',   3, 226,
+    132, 164,   5, 'e', 'r', 'c', 'a', 'l',   3, 226, 138, 186,   5, 'l', 'a',
+    'r', 'h', 'k',   3, 226, 168, 151,   4, 'p', 'r', 'o', 'd',   3, 226, 168,
+    188,   3, 'o', 'c', 'y',   2, 209, 145,   4, 'o', 'g', 'o', 'n',   2, 196,
+    175,   3, 'o', 'p', 'f',   4, 240, 157, 149, 154,   3, 'o', 't', 'a',   2,
+    206, 185,   4, 'p', 'r', 'o', 'd',   3, 226, 168, 188, 133, 'q', 'u', 'e',
+    's', 't',   2, 194, 191,   3, 's', 'c', 'r',   4, 240, 157, 146, 190,  67,
+    's', 'i', 'n',  20,   4,   3, 226, 136, 136,   1, 'E',   3, 226, 139, 185,
+      3, 'd', 'o', 't',   3, 226, 139, 181,  65, 's',   2,   1,   3, 226, 139,
+    180,   1, 'v',   3, 226, 139, 179,   1, 'v',   3, 226, 136, 136,  65, 't',
+     24,   1,   3, 226, 129, 162,   4, 'i', 'l', 'd', 'e',   2, 196, 169,   4,
+    'u', 'k', 'c', 'y',   2, 209, 150, 131, 'u', 'm', 'l',   2, 195, 175,   4,
+    'c', 'i', 'r', 'c',   2, 196, 181,   2, 'c', 'y',   2, 208, 185,   2, 'f',
+    'r',   4, 240, 157, 148, 167,   4, 'm', 'a', 't', 'h',   2, 200, 183,   3,
+    'o', 'p', 'f',   4, 240, 157, 149, 155,   3, 's', 'c', 'r',   4, 240, 157,
+    146, 191,   5, 's', 'e', 'r', 'c', 'y',   2, 209, 152,   4, 'u', 'k', 'c',
+    'y',   2, 209, 148,  68, 'a', 'p', 'p', 'a',   9,   1,   2, 206, 186,   1,
+    'v',   2, 207, 176,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 183,   2, 'c',
+    'y',   2, 208, 186,   2, 'f', 'r',   4, 240, 157, 148, 168,   5, 'g', 'r',
+    'e', 'e', 'n',   2, 196, 184,   3, 'h', 'c', 'y',   2, 209, 133,   3, 'j',
+    'c', 'y',   2, 209, 156,   3, 'o', 'p', 'f',   4, 240, 157, 149, 156,   3,
+    's', 'c', 'r',   4, 240, 157, 147, 128,   4, 'A', 'a', 'r', 'r',   3, 226,
+    135, 154,   3, 'A', 'r', 'r',   3, 226, 135, 144,   5, 'A', 't', 'a', 'i',
+    'l',   3, 226, 164, 155,   4, 'B', 'a', 'r', 'r',   3, 226, 164, 142,  65,
+    'E',  78,   1,   3, 226, 137, 166,   1, 'g',   3, 226, 170, 139,   3, 'H',
+    'a', 'r',   3, 226, 165, 162,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 186,
+      7, 'a', 'e', 'm', 'p', 't', 'y', 'v',   3, 226, 166, 180,   5, 'a', 'g',
+    'r', 'a', 'n',   3, 226, 132, 146,   5, 'a', 'm', 'b', 'd', 'a',   2, 206,
+    187,  67, 'a', 'n', 'g',  73,   2,   3, 226, 159, 168,   1, 'd',   3, 226,
+    166, 145,   2, 'l', 'e',   3, 226, 159, 168,   2, 'a', 'p',   3, 226, 170,
+    133, 132, 'a', 'q', 'u', 'o',   2, 194, 171,  67, 'a', 'r', 'r',  72,   7,
+      3, 226, 134, 144,  65, 'b',   7,   1,   3, 226, 135, 164,   2, 'f', 's',
+      3, 226, 164, 159,   2, 'f', 's',   3, 226, 164, 157,   2, 'h', 'k',   3,
+    226, 134, 169,   2, 'l', 'p',   3, 226, 134, 171,   2, 'p', 'l',   3, 226,
+    164, 185,   3, 's', 'i', 'm',   3, 226, 165, 179,   2, 't', 'l',   3, 226,
+    134, 162,  66, 'a', 't',  79,   2,   3, 226, 170, 171,   3, 'a', 'i', 'l',
+      3, 226, 164, 153,  65, 'e',   1,   1,   3, 226, 170, 173,   1, 's',   6,
+    226, 170, 173, 239, 184, 128,   4, 'b', 'a', 'r', 'r',   3, 226, 164, 140,
+      4, 'b', 'b', 'r', 'k',   3, 226, 157, 178,   5, 'b', 'r', 'a', 'c', 'e',
+      1, '{',   5, 'b', 'r', 'a', 'c', 'k',   1, '[',   4, 'b', 'r', 'k', 'e',
+      3, 226, 166, 139,   6, 'b', 'r', 'k', 's', 'l', 'd',   3, 226, 166, 143,
+      6, 'b', 'r', 'k', 's', 'l', 'u',   3, 226, 166, 141,   5, 'c', 'a', 'r',
+    'o', 'n',   2, 196, 190,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 188,   4,
+    'c', 'e', 'i', 'l',   3, 226, 140, 136,   3, 'c', 'u', 'b',   1, '{',   2,
+    'c', 'y',   2, 208, 187,   3, 'd', 'c', 'a',   3, 226, 164, 182,  68, 'd',
+    'q', 'u', 'o',  68,   1,   3, 226, 128, 156,   1, 'r',   3, 226, 128, 158,
+      6, 'd', 'r', 'd', 'h', 'a', 'r',   3, 226, 165, 167,   7, 'd', 'r', 'u',
+    's', 'h', 'a', 'r',   3, 226, 165, 139,   3, 'd', 's', 'h',   3, 226, 134,
+    178,  65, 'e',  65,  11,   3, 226, 137, 164,  71, 'f', 't', 'a', 'r', 'r',
+    'o', 'w',  11,   1,   3, 226, 134, 144,   4, 't', 'a', 'i', 'l',   3, 226,
+    134, 162,  13, 'f', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'd', 'o', 'w',
+    'n',   3, 226, 134, 189,  11, 'f', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n',
+    'u', 'p',   3, 226, 134, 188,  12, 'f', 't', 'l', 'e', 'f', 't', 'a', 'r',
+    'r', 'o', 'w', 's',   3, 226, 135, 135,  76, 'f', 't', 'r', 'i', 'g', 'h',
+    't', 'a', 'r', 'r', 'o', 'w',   8,   1,   3, 226, 134, 148,   1, 's',   3,
+    226, 135, 134,  15, 'f', 't', 'r', 'i', 'g', 'h', 't', 'h', 'a', 'r', 'p',
+    'o', 'o', 'n', 's',   3, 226, 135, 139,  17, 'f', 't', 'r', 'i', 'g', 'h',
+    't', 's', 'q', 'u', 'i', 'g', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 173,
+     12, 'f', 't', 't', 'h', 'r', 'e', 'e', 't', 'i', 'm', 'e', 's',   3, 226,
+    139, 139,   1, 'g',   3, 226, 139, 154,  65, 'q',   4,   2,   3, 226, 137,
+    164,   1, 'q',   3, 226, 137, 166,   5, 's', 'l', 'a', 'n', 't',   3, 226,
+    169, 189,  65, 's',   5,   9,   3, 226, 169, 189,   2, 'c', 'c',   3, 226,
+    170, 168,  67, 'd', 'o', 't',   8,   1,   3, 226, 169, 191,  65, 'o',   1,
+      1,   3, 226, 170, 129,   1, 'r',   3, 226, 170, 131,  65, 'g',   9,   1,
+      6, 226, 139, 154, 239, 184, 128,   2, 'e', 's',   3, 226, 170, 147,   7,
+    's', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226, 170, 133,   4, 's', 'd', 'o',
+    't',   3, 226, 139, 150,   6, 's', 'e', 'q', 'g', 't', 'r',   3, 226, 139,
+    154,   7, 's', 'e', 'q', 'q', 'g', 't', 'r',   3, 226, 170, 139,   4, 's',
+    'g', 't', 'r',   3, 226, 137, 182,   4, 's', 's', 'i', 'm',   3, 226, 137,
+    178,   5, 'f', 'i', 's', 'h', 't',   3, 226, 165, 188,   5, 'f', 'l', 'o',
+    'o', 'r',   3, 226, 140, 138,   2, 'f', 'r',   4, 240, 157, 148, 169,  65,
+    'g',  88,   1,   3, 226, 137, 182,   1, 'E',   3, 226, 170, 145,   4, 'h',
+    'a', 'r', 'd',   3, 226, 134, 189,  68, 'h', 'a', 'r', 'u',  87,   1,   3,
+    226, 134, 188,   1, 'l',   3, 226, 165, 170,   4, 'h', 'b', 'l', 'k',   3,
+    226, 150, 132,   3, 'j', 'c', 'y',   2, 209, 153,  65, 'l',  85,   4,   3,
+    226, 137, 170,   3, 'a', 'r', 'r',   3, 226, 135, 135,   6, 'c', 'o', 'r',
+    'n', 'e', 'r',   3, 226, 140, 158,   4, 'h', 'a', 'r', 'd',   3, 226, 165,
+    171,   3, 't', 'r', 'i',   3, 226, 151, 186,   5, 'm', 'i', 'd', 'o', 't',
+      2, 197, 128,  69, 'm', 'o', 'u', 's', 't',  87,   1,   3, 226, 142, 176,
+      4, 'a', 'c', 'h', 'e',   3, 226, 142, 176,   2, 'n', 'E',   3, 226, 137,
+    168,  67, 'n', 'a', 'p',  86,   1,   3, 226, 170, 137,   4, 'p', 'r', 'o',
+    'x',   3, 226, 170, 137,  66, 'n', 'e',  86,   1,   3, 226, 170, 135,  65,
+    'q',   1,   1,   3, 226, 170, 135,   1, 'q',   3, 226, 137, 168,   4, 'n',
+    's', 'i', 'm',   3, 226, 139, 166,   4, 'o', 'a', 'n', 'g',   3, 226, 159,
+    172,   4, 'o', 'a', 'r', 'r',   3, 226, 135, 189,   4, 'o', 'b', 'r', 'k',
+      3, 226, 159, 166,  12, 'o', 'n', 'g', 'l', 'e', 'f', 't', 'a', 'r', 'r',
+    'o', 'w',   3, 226, 159, 181,  17, 'o', 'n', 'g', 'l', 'e', 'f', 't', 'r',
+    'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 183,   9, 'o',
+    'n', 'g', 'm', 'a', 'p', 's', 't', 'o',   3, 226, 159, 188,  13, 'o', 'n',
+    'g', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 182,
+     12, 'o', 'o', 'p', 'a', 'r', 'r', 'o', 'w', 'l', 'e', 'f', 't',   3, 226,
+    134, 171,  13, 'o', 'o', 'p', 'a', 'r', 'r', 'o', 'w', 'r', 'i', 'g', 'h',
+    't',   3, 226, 134, 172,   4, 'o', 'p', 'a', 'r',   3, 226, 166, 133,   3,
+    'o', 'p', 'f',   4, 240, 157, 149, 157,   5, 'o', 'p', 'l', 'u', 's',   3,
+    226, 168, 173,   6, 'o', 't', 'i', 'm', 'e', 's',   3, 226, 168, 180,   5,
+    'o', 'w', 'a', 's', 't',   3, 226, 136, 151,   5, 'o', 'w', 'b', 'a', 'r',
+      1, '_',  66, 'o', 'z',  71,   2,   3, 226, 151, 138,   4, 'e', 'n', 'g',
+    'e',   3, 226, 151, 138,   1, 'f',   3, 226, 167, 171,  67, 'p', 'a', 'r',
+     72,   1,   1, '(',   2, 'l', 't',   3, 226, 166, 147,   4, 'r', 'a', 'r',
+    'r',   3, 226, 135, 134,   7, 'r', 'c', 'o', 'r', 'n', 'e', 'r',   3, 226,
+    140, 159,  68, 'r', 'h', 'a', 'r',  70,   1,   3, 226, 135, 139,   1, 'd',
+      3, 226, 165, 173,   2, 'r', 'm',   3, 226, 128, 142,   4, 'r', 't', 'r',
+    'i',   3, 226, 138, 191,   5, 's', 'a', 'q', 'u', 'o',   3, 226, 128, 185,
+      3, 's', 'c', 'r',   4, 240, 157, 147, 129,   2, 's', 'h',   3, 226, 134,
+    176,  67, 's', 'i', 'm',  65,   2,   3, 226, 137, 178,   1, 'e',   3, 226,
+    170, 141,   1, 'g',   3, 226, 170, 143,   3, 's', 'q', 'b',   1, '[',  68,
+    's', 'q', 'u', 'o',  65,   1,   3, 226, 128, 152,   1, 'r',   3, 226, 128,
+    154,   5, 's', 't', 'r', 'o', 'k',   2, 197, 130, 193, 't',  64,   9,   1,
+    '<',   2, 'c', 'c',   3, 226, 170, 166,   3, 'c', 'i', 'r',   3, 226, 169,
+    185,   3, 'd', 'o', 't',   3, 226, 139, 150,   4, 'h', 'r', 'e', 'e',   3,
+    226, 139, 139,   4, 'i', 'm', 'e', 's',   3, 226, 139, 137,   4, 'l', 'a',
+    'r', 'r',   3, 226, 165, 182,   5, 'q', 'u', 'e', 's', 't',   3, 226, 169,
+    187,   4, 'r', 'P', 'a', 'r',   3, 226, 166, 150,  66, 'r', 'i',   1,   2,
+      3, 226, 151, 131,   1, 'e',   3, 226, 138, 180,   1, 'f',   3, 226, 151,
+    130,   7, 'u', 'r', 'd', 's', 'h', 'a', 'r',   3, 226, 165, 138,   6, 'u',
+    'r', 'u', 'h', 'a', 'r',   3, 226, 165, 166,   8, 'v', 'e', 'r', 't', 'n',
+    'e', 'q', 'q',   6, 226, 137, 168, 239, 184, 128,   3, 'v', 'n', 'E',   6,
+    226, 137, 168, 239, 184, 128,   4, 'D', 'D', 'o', 't',   3, 226, 136, 186,
+    131, 'a', 'c', 'r',   2, 194, 175,   3, 'a', 'l', 'e',   3, 226, 153, 130,
+     67, 'a', 'l', 't',  21,   1,   3, 226, 156, 160,   3, 'e', 's', 'e',   3,
+    226, 156, 160,  66, 'a', 'p',  21,   1,   3, 226, 134, 166,  67, 's', 't',
+    'o',   1,   3,   3, 226, 134, 166,   4, 'd', 'o', 'w', 'n',   3, 226, 134,
+    167,   4, 'l', 'e', 'f', 't',   3, 226, 134, 164,   2, 'u', 'p',   3, 226,
+    134, 165,   5, 'a', 'r', 'k', 'e', 'r',   3, 226, 150, 174,   5, 'c', 'o',
+    'm', 'm', 'a',   3, 226, 168, 169,   2, 'c', 'y',   2, 208, 188,   4, 'd',
+    'a', 's', 'h',   3, 226, 128, 148,  12, 'e', 'a', 's', 'u', 'r', 'e', 'd',
+    'a', 'n', 'g', 'l', 'e',   3, 226, 136, 161,   2, 'f', 'r',   4, 240, 157,
+    148, 170,   2, 'h', 'o',   3, 226, 132, 167, 132, 'i', 'c', 'r', 'o',   2,
+    194, 181,  66, 'i', 'd',  16,   3,   3, 226, 136, 163,   3, 'a', 's', 't',
+      1, '*',   3, 'c', 'i', 'r',   3, 226, 171, 176, 131, 'd', 'o', 't',   2,
+    194, 183,  68, 'i', 'n', 'u', 's',  18,   2,   3, 226, 136, 146,   1, 'b',
+      3, 226, 138, 159,  65, 'd',   1,   1,   3, 226, 136, 184,   1, 'u',   3,
+    226, 168, 170,   3, 'l', 'c', 'p',   3, 226, 171, 155,   3, 'l', 'd', 'r',
+      3, 226, 128, 166,   5, 'n', 'p', 'l', 'u', 's',   3, 226, 136, 147,   5,
+    'o', 'd', 'e', 'l', 's',   3, 226, 138, 167,   3, 'o', 'p', 'f',   4, 240,
+    157, 149, 158,   1, 'p',   3, 226, 136, 147,   3, 's', 'c', 'r',   4, 240,
+    157, 147, 130,   5, 's', 't', 'p', 'o', 's',   3, 226, 136, 190,  65, 'u',
+     12,   2,   2, 206, 188,   6, 'l', 't', 'i', 'm', 'a', 'p',   3, 226, 138,
+    184,   3, 'm', 'a', 'p',   3, 226, 138, 184,   2, 'G', 'g',   5, 226, 139,
+    153, 204, 184,  66, 'G', 't',  84,   1,   6, 226, 137, 171, 226, 131, 146,
+      1, 'v',   5, 226, 137, 171, 204, 184,   9, 'L', 'e', 'f', 't', 'a', 'r',
+    'r', 'o', 'w',   3, 226, 135, 141,  14, 'L', 'e', 'f', 't', 'r', 'i', 'g',
+    'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 142,   2, 'L', 'l',   5,
+    226, 139, 152, 204, 184,  66, 'L', 't',  81,   1,   6, 226, 137, 170, 226,
+    131, 146,   1, 'v',   5, 226, 137, 170, 204, 184,  10, 'R', 'i', 'g', 'h',
+    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 143,   5, 'V', 'D', 'a', 's',
+    'h',   3, 226, 138, 175,   5, 'V', 'd', 'a', 's', 'h',   3, 226, 138, 174,
+      4, 'a', 'b', 'l', 'a',   3, 226, 136, 135,   5, 'a', 'c', 'u', 't', 'e',
+      2, 197, 132,   3, 'a', 'n', 'g',   6, 226, 136, 160, 226, 131, 146,  66,
+    'a', 'p',  75,   4,   3, 226, 137, 137,   1, 'E',   5, 226, 169, 176, 204,
+    184,   2, 'i', 'd',   5, 226, 137, 139, 204, 184,   2, 'o', 's',   2, 197,
+    137,   4, 'p', 'r', 'o', 'x',   3, 226, 137, 137,  68, 'a', 't', 'u', 'r',
+     78,   1,   3, 226, 153, 174,  66, 'a', 'l',   1,   1,   3, 226, 153, 174,
+      1, 's',   3, 226, 132, 149, 131, 'b', 's', 'p',   2, 194, 160,  68, 'b',
+    'u', 'm', 'p',  78,   1,   5, 226, 137, 142, 204, 184,   1, 'e',   5, 226,
+    137, 143, 204, 184,   3, 'c', 'a', 'p',   3, 226, 169, 131,   5, 'c', 'a',
+    'r', 'o', 'n',   2, 197, 136,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 134,
+     68, 'c', 'o', 'n', 'g',  75,   1,   3, 226, 137, 135,   3, 'd', 'o', 't',
+      5, 226, 169, 173, 204, 184,   3, 'c', 'u', 'p',   3, 226, 169, 130,   2,
+    'c', 'y',   2, 208, 189,   4, 'd', 'a', 's', 'h',   3, 226, 128, 147,  65,
+    'e',  72,   8,   3, 226, 137, 160,   3, 'A', 'r', 'r',   3, 226, 135, 151,
+      4, 'a', 'r', 'h', 'k',   3, 226, 164, 164,  67, 'a', 'r', 'r',   6,   1,
+      3, 226, 134, 151,   2, 'o', 'w',   3, 226, 134, 151,   3, 'd', 'o', 't',
+      5, 226, 137, 144, 204, 184,   4, 'q', 'u', 'i', 'v',   3, 226, 137, 162,
+      4, 's', 'e', 'a', 'r',   3, 226, 164, 168,   3, 's', 'i', 'm',   5, 226,
+    137, 130, 204, 184,  68, 'x', 'i', 's', 't',   2,   1,   3, 226, 136, 132,
+      1, 's',   3, 226, 136, 132,   2, 'f', 'r',   4, 240, 157, 148, 171,   2,
+    'g', 'E',   5, 226, 137, 167, 204, 184,  66, 'g', 'e',  79,   2,   3, 226,
+    137, 177,  65, 'q',   2,   2,   3, 226, 137, 177,   1, 'q',   5, 226, 137,
+    167, 204, 184,   5, 's', 'l', 'a', 'n', 't',   5, 226, 169, 190, 204, 184,
+      1, 's',   5, 226, 169, 190, 204, 184,   4, 'g', 's', 'i', 'm',   3, 226,
+    137, 181,  66, 'g', 't',  81,   1,   3, 226, 137, 175,   1, 'r',   3, 226,
+    137, 175,   4, 'h', 'A', 'r', 'r',   3, 226, 135, 142,   4, 'h', 'a', 'r',
+    'r',   3, 226, 134, 174,   4, 'h', 'p', 'a', 'r',   3, 226, 171, 178,  65,
+    'i',  78,   2,   3, 226, 136, 139,  65, 's',   2,   1,   3, 226, 139, 188,
+      1, 'd',   3, 226, 139, 186,   1, 'v',   3, 226, 136, 139,   3, 'j', 'c',
+    'y',   2, 209, 154,   4, 'l', 'A', 'r', 'r',   3, 226, 135, 141,   2, 'l',
+    'E',   5, 226, 137, 166, 204, 184,   4, 'l', 'a', 'r', 'r',   3, 226, 134,
+    154,   3, 'l', 'd', 'r',   3, 226, 128, 165,  66, 'l', 'e',  75,   4,   3,
+    226, 137, 176,   7, 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 154,
+     12, 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226,
+    134, 174,  65, 'q',   2,   2,   3, 226, 137, 176,   1, 'q',   5, 226, 137,
+    166, 204, 184,   5, 's', 'l', 'a', 'n', 't',   5, 226, 169, 189, 204, 184,
+     65, 's',   3,   1,   5, 226, 169, 189, 204, 184,   1, 's',   3, 226, 137,
+    174,   4, 'l', 's', 'i', 'm',   3, 226, 137, 180,  66, 'l', 't',  80,   1,
+      3, 226, 137, 174,  66, 'r', 'i',   1,   1,   3, 226, 139, 170,   1, 'e',
+      3, 226, 139, 172,   3, 'm', 'i', 'd',   3, 226, 136, 164,   3, 'o', 'p',
+    'f',   4, 240, 157, 149, 159, 194, 'o', 't',  79,   2,   2, 194, 172,  66,
+    'i', 'n',   2,   5,   3, 226, 136, 137,   1, 'E',   5, 226, 139, 185, 204,
+    184,   3, 'd', 'o', 't',   5, 226, 139, 181, 204, 184,   2, 'v', 'a',   3,
+    226, 136, 137,   2, 'v', 'b',   3, 226, 139, 183,   2, 'v', 'c',   3, 226,
+    139, 182,  66, 'n', 'i',   6,   3,   3, 226, 136, 140,   2, 'v', 'a',   3,
+    226, 136, 140,   2, 'v', 'b',   3, 226, 139, 190,   2, 'v', 'c',   3, 226,
+    139, 189,  67, 'p', 'a', 'r',  88,   3,   3, 226, 136, 166,   5, 'a', 'l',
+    'l', 'e', 'l',   3, 226, 136, 166,   2, 's', 'l',   6, 226, 171, 189, 226,
+    131, 165,   1, 't',   5, 226, 136, 130, 204, 184,   6, 'p', 'o', 'l', 'i',
+    'n', 't',   3, 226, 168, 148,  66, 'p', 'r',  89,   2,   3, 226, 138, 128,
+      3, 'c', 'u', 'e',   3, 226, 139, 160,  65, 'e',   1,   1,   5, 226, 170,
+    175, 204, 184,  65, 'c',   1,   1,   3, 226, 138, 128,   2, 'e', 'q',   5,
+    226, 170, 175, 204, 184,   4, 'r', 'A', 'r', 'r',   3, 226, 135, 143,  68,
+    'r', 'a', 'r', 'r',  91,   2,   3, 226, 134, 155,   1, 'c',   5, 226, 164,
+    179, 204, 184,   1, 'w',   5, 226, 134, 157, 204, 184,  10, 'r', 'i', 'g',
+    'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 155,  68, 'r', 't', 'r',
+    'i',  91,   1,   3, 226, 139, 171,   1, 'e',   3, 226, 139, 173,  66, 's',
+    'c',  91,   3,   3, 226, 138, 129,   3, 'c', 'u', 'e',   3, 226, 139, 161,
+      1, 'e',   5, 226, 170, 176, 204, 184,   1, 'r',   4, 240, 157, 147, 131,
+      8, 's', 'h', 'o', 'r', 't', 'm', 'i', 'd',   3, 226, 136, 164,  13, 's',
+    'h', 'o', 'r', 't', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l',   3, 226, 136,
+    166,  67, 's', 'i', 'm',  91,   1,   3, 226, 137, 129,  65, 'e',   1,   1,
+      3, 226, 137, 132,   1, 'q',   3, 226, 137, 132,   4, 's', 'm', 'i', 'd',
+      3, 226, 136, 164,   4, 's', 'p', 'a', 'r',   3, 226, 136, 166,   6, 's',
+    'q', 's', 'u', 'b', 'e',   3, 226, 139, 162,   6, 's', 'q', 's', 'u', 'p',
+    'e',   3, 226, 139, 163,  67, 's', 'u', 'b',  88,   3,   3, 226, 138, 132,
+      1, 'E',   5, 226, 171, 133, 204, 184,   1, 'e',   3, 226, 138, 136,  67,
+    's', 'e', 't',   1,   1,   6, 226, 138, 130, 226, 131, 146,  66, 'e', 'q',
+      1,   1,   3, 226, 138, 136,   1, 'q',   5, 226, 171, 133, 204, 184,  68,
+    's', 'u', 'c', 'c',  92,   1,   3, 226, 138, 129,   2, 'e', 'q',   5, 226,
+    170, 176, 204, 184,  67, 's', 'u', 'p',  92,   3,   3, 226, 138, 133,   1,
+    'E',   5, 226, 171, 134, 204, 184,   1, 'e',   3, 226, 138, 137,  67, 's',
+    'e', 't',   1,   1,   6, 226, 138, 131, 226, 131, 146,  66, 'e', 'q',   1,
+      1,   3, 226, 138, 137,   1, 'q',   5, 226, 171, 134, 204, 184,   3, 't',
+    'g', 'l',   3, 226, 137, 185, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 177,
+      3, 't', 'l', 'g',   3, 226, 137, 184,  76, 't', 'r', 'i', 'a', 'n', 'g',
+    'l', 'e', 'l', 'e', 'f', 't',  93,   1,   3, 226, 139, 170,   2, 'e', 'q',
+      3, 226, 139, 172,  77, 't', 'r', 'i', 'a', 'n', 'g', 'l', 'e', 'r', 'i',
+    'g', 'h', 't',  93,   1,   3, 226, 139, 171,   2, 'e', 'q',   3, 226, 139,
+    173,  65, 'u',  93,   1,   2, 206, 189,  65, 'm',   1,   2,   1, '#',   3,
+    'e', 'r', 'o',   3, 226, 132, 150,   2, 's', 'p',   3, 226, 128, 135,   5,
+    'v', 'D', 'a', 's', 'h',   3, 226, 138, 173,   5, 'v', 'H', 'a', 'r', 'r',
+      3, 226, 164, 132,   3, 'v', 'a', 'p',   6, 226, 137, 141, 226, 131, 146,
+      5, 'v', 'd', 'a', 's', 'h',   3, 226, 138, 172,   3, 'v', 'g', 'e',   6,
+    226, 137, 165, 226, 131, 146,   3, 'v', 'g', 't',   4, '>', 226, 131, 146,
+      6, 'v', 'i', 'n', 'f', 'i', 'n',   3, 226, 167, 158,   5, 'v', 'l', 'A',
+    'r', 'r',   3, 226, 164, 130,   3, 'v', 'l', 'e',   6, 226, 137, 164, 226,
+    131, 146,  67, 'v', 'l', 't',  86,   1,   4, '<', 226, 131, 146,   3, 'r',
+    'i', 'e',   6, 226, 138, 180, 226, 131, 146,   5, 'v', 'r', 'A', 'r', 'r',
+      3, 226, 164, 131,   6, 'v', 'r', 't', 'r', 'i', 'e',   6, 226, 138, 181,
+    226, 131, 146,   4, 'v', 's', 'i', 'm',   6, 226, 136, 188, 226, 131, 146,
+      4, 'w', 'A', 'r', 'r',   3, 226, 135, 150,   5, 'w', 'a', 'r', 'h', 'k',
+      3, 226, 164, 163,  68, 'w', 'a', 'r', 'r',  81,   1,   3, 226, 134, 150,
+      2, 'o', 'w',   3, 226, 134, 150,   5, 'w', 'n', 'e', 'a', 'r',   3, 226,
+    164, 167,   1, 'S',   3, 226, 147, 136, 133, 'a', 'c', 'u', 't', 'e',   2,
+    195, 179,   3, 'a', 's', 't',   3, 226, 138, 155,  67, 'c', 'i', 'r',  38,
+      1,   3, 226, 138, 154, 129, 'c',   2, 195, 180,   2, 'c', 'y',   2, 208,
+    190,   4, 'd', 'a', 's', 'h',   3, 226, 138, 157,   5, 'd', 'b', 'l', 'a',
+    'c',   2, 197, 145,   3, 'd', 'i', 'v',   3, 226, 168, 184,   3, 'd', 'o',
+    't',   3, 226, 138, 153,   5, 'd', 's', 'o', 'l', 'd',   3, 226, 166, 188,
+      4, 'e', 'l', 'i', 'g',   2, 197, 147,   4, 'f', 'c', 'i', 'r',   3, 226,
+    166, 191,   2, 'f', 'r',   4, 240, 157, 148, 172,   3, 'g', 'o', 'n',   2,
+    203, 155, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 178,   2, 'g', 't',   3,
+    226, 167, 129,   4, 'h', 'b', 'a', 'r',   3, 226, 166, 181,   2, 'h', 'm',
+      2, 206, 169,   3, 'i', 'n', 't',   3, 226, 136, 174,   4, 'l', 'a', 'r',
+    'r',   3, 226, 134, 186,   4, 'l', 'c', 'i', 'r',   3, 226, 166, 190,   6,
+    'l', 'c', 'r', 'o', 's', 's',   3, 226, 166, 187,   4, 'l', 'i', 'n', 'e',
+      3, 226, 128, 190,   2, 'l', 't',   3, 226, 167, 128,   4, 'm', 'a', 'c',
+    'r',   2, 197, 141,   4, 'm', 'e', 'g', 'a',   2, 207, 137,   6, 'm', 'i',
+    'c', 'r', 'o', 'n',   2, 206, 191,   3, 'm', 'i', 'd',   3, 226, 166, 182,
+      5, 'm', 'i', 'n', 'u', 's',   3, 226, 138, 150,   3, 'o', 'p', 'f',   4,
+    240, 157, 149, 160,   3, 'p', 'a', 'r',   3, 226, 166, 183,   4, 'p', 'e',
+    'r', 'p',   3, 226, 166, 185,   4, 'p', 'l', 'u', 's',   3, 226, 138, 149,
+     65, 'r',   9,   6,   3, 226, 136, 168,   3, 'a', 'r', 'r',   3, 226, 134,
+    187,  65, 'd',   5,   3,   3, 226, 169, 157,  66, 'e', 'r',   3,   1,   3,
+    226, 132, 180,   2, 'o', 'f',   3, 226, 132, 180, 129, 'f',   2, 194, 170,
+    129, 'm',   2, 194, 186,   4, 'i', 'g', 'o', 'f',   3, 226, 138, 182,   2,
+    'o', 'r',   3, 226, 169, 150,   5, 's', 'l', 'o', 'p', 'e',   3, 226, 169,
+    151,   1, 'v',   3, 226, 169, 155,   3, 's', 'c', 'r',   3, 226, 132, 180,
+    133, 's', 'l', 'a', 's', 'h',   2, 195, 184,   3, 's', 'o', 'l',   3, 226,
+    138, 152, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 181,  69, 't', 'i', 'm',
+    'e', 's',  14,   1,   3, 226, 138, 151,   2, 'a', 's',   3, 226, 168, 182,
+    131, 'u', 'm', 'l',   2, 195, 182,   4, 'v', 'b', 'a', 'r',   3, 226, 140,
+    189,  66, 'a', 'r',  23,   4,   3, 226, 136, 165, 193, 'a',   4,   1,   2,
+    194, 182,   4, 'l', 'l', 'e', 'l',   3, 226, 136, 165,   3, 's', 'i', 'm',
+      3, 226, 171, 179,   2, 's', 'l',   3, 226, 171, 189,   1, 't',   3, 226,
+    136, 130,   2, 'c', 'y',   2, 208, 191,   5, 'e', 'r', 'c', 'n', 't',   1,
+    '%',   5, 'e', 'r', 'i', 'o', 'd',   1, '.',   5, 'e', 'r', 'm', 'i', 'l',
+      3, 226, 128, 176,   3, 'e', 'r', 'p',   3, 226, 138, 165,   6, 'e', 'r',
+    't', 'e', 'n', 'k',   3, 226, 128, 177,   2, 'f', 'r',   4, 240, 157, 148,
+    173,  66, 'h', 'i',  20,   1,   2, 207, 134,   1, 'v',   2, 207, 149,   5,
+    'h', 'm', 'm', 'a', 't',   3, 226, 132, 179,   4, 'h', 'o', 'n', 'e',   3,
+    226, 152, 142,  65, 'i',  18,   2,   2, 207, 128,   7, 't', 'c', 'h', 'f',
+    'o', 'r', 'k',   3, 226, 139, 148,   1, 'v',   2, 207, 150,  69, 'l', 'a',
+    'n', 'c', 'k',  19,   1,   3, 226, 132, 143,   1, 'h',   3, 226, 132, 142,
+      5, 'l', 'a', 'n', 'k', 'v',   3, 226, 132, 143,  67, 'l', 'u', 's',  18,
+      9,   1, '+',   4, 'a', 'c', 'i', 'r',   3, 226, 168, 163,   1, 'b',   3,
+    226, 138, 158,   3, 'c', 'i', 'r',   3, 226, 168, 162,   2, 'd', 'o',   3,
+    226, 136, 148,   2, 'd', 'u',   3, 226, 168, 165,   1, 'e',   3, 226, 169,
+    178, 130, 'm', 'n',   2, 194, 177,   3, 's', 'i', 'm',   3, 226, 168, 166,
+      3, 't', 'w', 'o',   3, 226, 168, 167,   1, 'm',   2, 194, 177,   7, 'o',
+    'i', 'n', 't', 'i', 'n', 't',   3, 226, 168, 149,   3, 'o', 'p', 'f',   4,
+    240, 157, 149, 161, 132, 'o', 'u', 'n', 'd',   2, 194, 163,  65, 'r',  22,
+     15,   3, 226, 137, 186,   1, 'E',   3, 226, 170, 179,   2, 'a', 'p',   3,
+    226, 170, 183,   3, 'c', 'u', 'e',   3, 226, 137, 188,  65, 'e',  12,   1,
+      3, 226, 170, 175,  65, 'c',   1,   7,   3, 226, 137, 186,   6, 'a', 'p',
+    'p', 'r', 'o', 'x',   3, 226, 170, 183,   7, 'c', 'u', 'r', 'l', 'y', 'e',
+    'q',   3, 226, 137, 188,   2, 'e', 'q',   3, 226, 170, 175,   7, 'n', 'a',
+    'p', 'p', 'r', 'o', 'x',   3, 226, 170, 185,   4, 'n', 'e', 'q', 'q',   3,
+    226, 170, 181,   4, 'n', 's', 'i', 'm',   3, 226, 139, 168,   3, 's', 'i',
+    'm',   3, 226, 137, 190,  67, 'i', 'm', 'e',  19,   1,   3, 226, 128, 178,
+      1, 's',   3, 226, 132, 153,   2, 'n', 'E',   3, 226, 170, 181,   3, 'n',
+    'a', 'p',   3, 226, 170, 185,   4, 'n', 's', 'i', 'm',   3, 226, 139, 168,
+      2, 'o', 'd',   3, 226, 136, 143,   6, 'o', 'f', 'a', 'l', 'a', 'r',   3,
+    226, 140, 174,   6, 'o', 'f', 'l', 'i', 'n', 'e',   3, 226, 140, 146,   6,
+    'o', 'f', 's', 'u', 'r', 'f',   3, 226, 140, 147,  66, 'o', 'p',  12,   1,
+      3, 226, 136, 157,   2, 't', 'o',   3, 226, 136, 157,   3, 's', 'i', 'm',
+      3, 226, 137, 190,   4, 'u', 'r', 'e', 'l',   3, 226, 138, 176,   3, 's',
+    'c', 'r',   4, 240, 157, 147, 133,   2, 's', 'i',   2, 207, 136,   5, 'u',
+    'n', 'c', 's', 'p',   3, 226, 128, 136,   2, 'f', 'r',   4, 240, 157, 148,
+    174,   3, 'i', 'n', 't',   3, 226, 168, 140,   3, 'o', 'p', 'f',   4, 240,
+    157, 149, 162,   5, 'p', 'r', 'i', 'm', 'e',   3, 226, 129, 151,   3, 's',
+    'c', 'r',   4, 240, 157, 147, 134,  10, 'u', 'a', 't', 'e', 'r', 'n', 'i',
+    'o', 'n', 's',   3, 226, 132, 141,   6, 'u', 'a', 't', 'i', 'n', 't',   3,
+    226, 168, 150,  68, 'u', 'e', 's', 't',   2,   1,   1, '?',   2, 'e', 'q',
+      3, 226, 137, 159, 131, 'u', 'o', 't',   1, '"',   4, 'A', 'a', 'r', 'r',
+      3, 226, 135, 155,   3, 'A', 'r', 'r',   3, 226, 135, 146,   5, 'A', 't',
+    'a', 'i', 'l',   3, 226, 164, 156,   4, 'B', 'a', 'r', 'r',   3, 226, 164,
+    143,   3, 'H', 'a', 'r',   3, 226, 165, 164,   3, 'a', 'c', 'e',   5, 226,
+    136, 189, 204, 177,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 149,   4, 'a',
+    'd', 'i', 'c',   3, 226, 136, 154,   7, 'a', 'e', 'm', 'p', 't', 'y', 'v',
+      3, 226, 166, 179,  67, 'a', 'n', 'g',  65,   3,   3, 226, 159, 169,   1,
+    'd',   3, 226, 166, 146,   1, 'e',   3, 226, 166, 165,   2, 'l', 'e',   3,
+    226, 159, 169, 132, 'a', 'q', 'u', 'o',   2, 194, 187,  67, 'a', 'r', 'r',
+     66,  10,   3, 226, 134, 146,   2, 'a', 'p',   3, 226, 165, 181,  65, 'b',
+      9,   1,   3, 226, 135, 165,   2, 'f', 's',   3, 226, 164, 160,   1, 'c',
+      3, 226, 164, 179,   2, 'f', 's',   3, 226, 164, 158,   2, 'h', 'k',   3,
+    226, 134, 170,   2, 'l', 'p',   3, 226, 134, 172,   2, 'p', 'l',   3, 226,
+    165, 133,   3, 's', 'i', 'm',   3, 226, 165, 180,   2, 't', 'l',   3, 226,
+    134, 163,   1, 'w',   3, 226, 134, 157,   5, 'a', 't', 'a', 'i', 'l',   3,
+    226, 164, 154,  68, 'a', 't', 'i', 'o',  75,   1,   3, 226, 136, 182,   4,
+    'n', 'a', 'l', 's',   3, 226, 132, 154,   4, 'b', 'a', 'r', 'r',   3, 226,
+    164, 141,   4, 'b', 'b', 'r', 'k',   3, 226, 157, 179,   5, 'b', 'r', 'a',
+    'c', 'e',   1, '}',   5, 'b', 'r', 'a', 'c', 'k',   1, ']',   4, 'b', 'r',
+    'k', 'e',   3, 226, 166, 140,   6, 'b', 'r', 'k', 's', 'l', 'd',   3, 226,
+    166, 142,   6, 'b', 'r', 'k', 's', 'l', 'u',   3, 226, 166, 144,   5, 'c',
+    'a', 'r', 'o', 'n',   2, 197, 153,   5, 'c', 'e', 'd', 'i', 'l',   2, 197,
+    151,   4, 'c', 'e', 'i', 'l',   3, 226, 140, 137,   3, 'c', 'u', 'b',   1,
+    '}',   2, 'c', 'y',   2, 209, 128,   3, 'd', 'c', 'a',   3, 226, 164, 183,
+      6, 'd', 'l', 'd', 'h', 'a', 'r',   3, 226, 165, 169,  68, 'd', 'q', 'u',
+    'o',  61,   1,   3, 226, 128, 157,   1, 'r',   3, 226, 128, 157,   3, 'd',
+    's', 'h',   3, 226, 134, 179,  67, 'e', 'a', 'l',  60,   3,   3, 226, 132,
+    156,   3, 'i', 'n', 'e',   3, 226, 132, 155,   4, 'p', 'a', 'r', 't',   3,
+    226, 132, 156,   1, 's',   3, 226, 132, 157,   3, 'e', 'c', 't',   3, 226,
+    150, 173, 130, 'e', 'g',   2, 194, 174,   5, 'f', 'i', 's', 'h', 't',   3,
+    226, 165, 189,   5, 'f', 'l', 'o', 'o', 'r',   3, 226, 140, 139,   2, 'f',
+    'r',   4, 240, 157, 148, 175,   4, 'h', 'a', 'r', 'd',   3, 226, 135, 129,
+     68, 'h', 'a', 'r', 'u',  56,   1,   3, 226, 135, 128,   1, 'l',   3, 226,
+    165, 172,  66, 'h', 'o',  56,   1,   2, 207, 129,   1, 'v',   2, 207, 177,
+     73, 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',  56,   1,   3, 226, 134,
+    146,   4, 't', 'a', 'i', 'l',   3, 226, 134, 163,  15, 'i', 'g', 'h', 't',
+    'h', 'a', 'r', 'p', 'o', 'o', 'n', 'd', 'o', 'w', 'n',   3, 226, 135, 129,
+     13, 'i', 'g', 'h', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'u', 'p',   3,
+    226, 135, 128,  14, 'i', 'g', 'h', 't', 'l', 'e', 'f', 't', 'a', 'r', 'r',
+    'o', 'w', 's',   3, 226, 135, 132,  16, 'i', 'g', 'h', 't', 'l', 'e', 'f',
+    't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 's',   3, 226, 135, 140,  15, 'i',
+    'g', 'h', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w', 's',   3,
+    226, 135, 137,  14, 'i', 'g', 'h', 't', 's', 'q', 'u', 'i', 'g', 'a', 'r',
+    'r', 'o', 'w',   3, 226, 134, 157,  14, 'i', 'g', 'h', 't', 't', 'h', 'r',
+    'e', 'e', 't', 'i', 'm', 'e', 's',   3, 226, 139, 140,   3, 'i', 'n', 'g',
+      2, 203, 154,  11, 'i', 's', 'i', 'n', 'g', 'd', 'o', 't', 's', 'e', 'q',
+      3, 226, 137, 147,   4, 'l', 'a', 'r', 'r',   3, 226, 135, 132,   4, 'l',
+    'h', 'a', 'r',   3, 226, 135, 140,   2, 'l', 'm',   3, 226, 128, 143,  69,
+    'm', 'o', 'u', 's', 't',  44,   1,   3, 226, 142, 177,   4, 'a', 'c', 'h',
+    'e',   3, 226, 142, 177,   4, 'n', 'm', 'i', 'd',   3, 226, 171, 174,   4,
+    'o', 'a', 'n', 'g',   3, 226, 159, 173,   4, 'o', 'a', 'r', 'r',   3, 226,
+    135, 190,   4, 'o', 'b', 'r', 'k',   3, 226, 159, 167,   4, 'o', 'p', 'a',
+    'r',   3, 226, 166, 134,   3, 'o', 'p', 'f',   4, 240, 157, 149, 163,   5,
+    'o', 'p', 'l', 'u', 's',   3, 226, 168, 174,   6, 'o', 't', 'i', 'm', 'e',
+    's',   3, 226, 168, 181,  67, 'p', 'a', 'r',  36,   1,   1, ')',   2, 'g',
+    't',   3, 226, 166, 148,   7, 'p', 'p', 'o', 'l', 'i', 'n', 't',   3, 226,
+    168, 146,   4, 'r', 'a', 'r', 'r',   3, 226, 135, 137,   5, 's', 'a', 'q',
+    'u', 'o',   3, 226, 128, 186,   3, 's', 'c', 'r',   4, 240, 157, 147, 135,
+      2, 's', 'h',   3, 226, 134, 177,   3, 's', 'q', 'b',   1, ']',  68, 's',
+    'q', 'u', 'o',  30,   1,   3, 226, 128, 153,   1, 'r',   3, 226, 128, 153,
+      5, 't', 'h', 'r', 'e', 'e',   3, 226, 139, 140,   5, 't', 'i', 'm', 'e',
+    's',   3, 226, 139, 138,  67, 't', 'r', 'i',  28,   3,   3, 226, 150, 185,
+      1, 'e',   3, 226, 138, 181,   1, 'f',   3, 226, 150, 184,   4, 'l', 't',
+    'r', 'i',   3, 226, 167, 142,   6, 'u', 'l', 'u', 'h', 'a', 'r',   3, 226,
+    165, 168,   1, 'x',   3, 226, 132, 158,   5, 'a', 'c', 'u', 't', 'e',   2,
+    197, 155,   4, 'b', 'q', 'u', 'o',   3, 226, 128, 154,  65, 'c',  56,  12,
+      3, 226, 137, 187,   1, 'E',   3, 226, 170, 180,   2, 'a', 'p',   3, 226,
+    170, 184,   4, 'a', 'r', 'o', 'n',   2, 197, 161,   3, 'c', 'u', 'e',   3,
+    226, 137, 189,  65, 'e',   8,   1,   3, 226, 170, 176,   3, 'd', 'i', 'l',
+      2, 197, 159,   3, 'i', 'r', 'c',   2, 197, 157,   2, 'n', 'E',   3, 226,
+    170, 182,   3, 'n', 'a', 'p',   3, 226, 170, 186,   4, 'n', 's', 'i', 'm',
+      3, 226, 139, 169,   6, 'p', 'o', 'l', 'i', 'n', 't',   3, 226, 168, 147,
+      3, 's', 'i', 'm',   3, 226, 137, 191,   1, 'y',   2, 209, 129,  67, 'd',
+    'o', 't',  68,   2,   3, 226, 139, 133,   1, 'b',   3, 226, 138, 161,   1,
+    'e',   3, 226, 169, 166,   4, 'e', 'A', 'r', 'r',   3, 226, 135, 152,   5,
+    'e', 'a', 'r', 'h', 'k',   3, 226, 164, 165,  68, 'e', 'a', 'r', 'r',  67,
+      1,   3, 226, 134, 152,   2, 'o', 'w',   3, 226, 134, 152, 131, 'e', 'c',
+    't',   2, 194, 167,   3, 'e', 'm', 'i',   1, ';',   5, 'e', 's', 'w', 'a',
+    'r',   3, 226, 164, 169,   7, 'e', 't', 'm', 'i', 'n', 'u', 's',   3, 226,
+    136, 150,   4, 'e', 't', 'm', 'n',   3, 226, 136, 150,   3, 'e', 'x', 't',
+      3, 226, 156, 182,  66, 'f', 'r',  61,   1,   4, 240, 157, 148, 176,   3,
+    'o', 'w', 'n',   3, 226, 140, 162,   4, 'h', 'a', 'r', 'p',   3, 226, 153,
+    175,   5, 'h', 'c', 'h', 'c', 'y',   2, 209, 137,   3, 'h', 'c', 'y',   2,
+    209, 136,   7, 'h', 'o', 'r', 't', 'm', 'i', 'd',   3, 226, 136, 163,  12,
+    'h', 'o', 'r', 't', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l',   3, 226, 136,
+    165, 130, 'h', 'y',   2, 194, 173,  68, 'i', 'g', 'm', 'a',  55,   2,   2,
+    207, 131,   1, 'f',   2, 207, 130,   1, 'v',   2, 207, 130,  66, 'i', 'm',
+     56,   7,   3, 226, 136, 188,   3, 'd', 'o', 't',   3, 226, 169, 170,  65,
+    'e',   6,   1,   3, 226, 137, 131,   1, 'q',   3, 226, 137, 131,  65, 'g',
+      6,   1,   3, 226, 170, 158,   1, 'E',   3, 226, 170, 160,  65, 'l',   6,
+      1,   3, 226, 170, 157,   1, 'E',   3, 226, 170, 159,   2, 'n', 'e',   3,
+    226, 137, 134,   4, 'p', 'l', 'u', 's',   3, 226, 168, 164,   4, 'r', 'a',
+    'r', 'r',   3, 226, 165, 178,   4, 'l', 'a', 'r', 'r',   3, 226, 134, 144,
+     12, 'm', 'a', 'l', 'l', 's', 'e', 't', 'm', 'i', 'n', 'u', 's',   3, 226,
+    136, 150,   5, 'm', 'a', 's', 'h', 'p',   3, 226, 168, 179,   7, 'm', 'e',
+    'p', 'a', 'r', 's', 'l',   3, 226, 167, 164,   3, 'm', 'i', 'd',   3, 226,
+    136, 163,   4, 'm', 'i', 'l', 'e',   3, 226, 140, 163,  66, 'm', 't',  59,
+      1,   3, 226, 170, 170,  65, 'e',   1,   1,   3, 226, 170, 172,   1, 's',
+      6, 226, 170, 172, 239, 184, 128,   5, 'o', 'f', 't', 'c', 'y',   2, 209,
+    140,  66, 'o', 'l',  59,   1,   1, '/',  65, 'b',   1,   1,   3, 226, 167,
+    132,   2, 'a', 'r',   3, 226, 140, 191,   3, 'o', 'p', 'f',   4, 240, 157,
+    149, 164,  69, 'p', 'a', 'd', 'e', 's',  59,   1,   3, 226, 153, 160,   3,
+    'u', 'i', 't',   3, 226, 153, 160,   3, 'p', 'a', 'r',   3, 226, 136, 165,
+     68, 'q', 'c', 'a', 'p',  58,   1,   3, 226, 138, 147,   1, 's',   6, 226,
+    138, 147, 239, 184, 128,  68, 'q', 'c', 'u', 'p',  58,   1,   3, 226, 138,
+    148,   1, 's',   6, 226, 138, 148, 239, 184, 128,  68, 'q', 's', 'u', 'b',
+     58,   2,   3, 226, 138, 143,   1, 'e',   3, 226, 138, 145,  67, 's', 'e',
+    't',   1,   1,   3, 226, 138, 143,   2, 'e', 'q',   3, 226, 138, 145,  68,
+    'q', 's', 'u', 'p',  60,   2,   3, 226, 138, 144,   1, 'e',   3, 226, 138,
+    146,  67, 's', 'e', 't',   1,   1,   3, 226, 138, 144,   2, 'e', 'q',   3,
+    226, 138, 146,  66, 'q', 'u',  62,   3,   3, 226, 150, 161,   3, 'a', 'r',
+    'e',   3, 226, 150, 161,   3, 'a', 'r', 'f',   3, 226, 150, 170,   1, 'f',
+      3, 226, 150, 170,   4, 'r', 'a', 'r', 'r',   3, 226, 134, 146,   3, 's',
+    'c', 'r',   4, 240, 157, 147, 136,   5, 's', 'e', 't', 'm', 'n',   3, 226,
+    136, 150,   5, 's', 'm', 'i', 'l', 'e',   3, 226, 140, 163,   5, 's', 't',
+    'a', 'r', 'f',   3, 226, 139, 134,  67, 't', 'a', 'r',  59,   1,   3, 226,
+    152, 134,   1, 'f',   3, 226, 152, 133,  14, 't', 'r', 'a', 'i', 'g', 'h',
+    't', 'e', 'p', 's', 'i', 'l', 'o', 'n',   2, 207, 181,  10, 't', 'r', 'a',
+    'i', 'g', 'h', 't', 'p', 'h', 'i',   2, 207, 149,   4, 't', 'r', 'n', 's',
+      2, 194, 175,  66, 'u', 'b',  56,  12,   3, 226, 138, 130,   1, 'E',   3,
+    226, 171, 133,   3, 'd', 'o', 't',   3, 226, 170, 189,  65, 'e',  10,   1,
+      3, 226, 138, 134,   3, 'd', 'o', 't',   3, 226, 171, 131,   4, 'm', 'u',
+    'l', 't',   3, 226, 171, 129,   2, 'n', 'E',   3, 226, 171, 139,   2, 'n',
+    'e',   3, 226, 138, 138,   4, 'p', 'l', 'u', 's',   3, 226, 170, 191,   4,
+    'r', 'a', 'r', 'r',   3, 226, 165, 185,  67, 's', 'e', 't',   5,   2,   3,
+    226, 138, 130,  66, 'e', 'q',   2,   1,   3, 226, 138, 134,   1, 'q',   3,
+    226, 171, 133,  67, 'n', 'e', 'q',   2,   1,   3, 226, 138, 138,   1, 'q',
+      3, 226, 171, 139,   3, 's', 'i', 'm',   3, 226, 171, 135,   3, 's', 'u',
+    'b',   3, 226, 171, 149,   3, 's', 'u', 'p',   3, 226, 171, 147,  67, 'u',
+    'c', 'c',  72,   7,   3, 226, 137, 187,   6, 'a', 'p', 'p', 'r', 'o', 'x',
+      3, 226, 170, 184,   7, 'c', 'u', 'r', 'l', 'y', 'e', 'q',   3, 226, 137,
+    189,   2, 'e', 'q',   3, 226, 170, 176,   7, 'n', 'a', 'p', 'p', 'r', 'o',
+    'x',   3, 226, 170, 186,   4, 'n', 'e', 'q', 'q',   3, 226, 170, 182,   4,
+    'n', 's', 'i', 'm',   3, 226, 139, 169,   3, 's', 'i', 'm',   3, 226, 137,
+    191,   2, 'u', 'm',   3, 226, 136, 145,   3, 'u', 'n', 'g',   3, 226, 153,
+    170,  66, 'u', 'p',  76,  18,   3, 226, 138, 131, 129, '1',   2, 194, 185,
+    129, '2',   2, 194, 178, 129, '3',   2, 194, 179,   1, 'E',   3, 226, 171,
+    134,   3, 'd', 'o', 't',   3, 226, 170, 190,   4, 'd', 's', 'u', 'b',   3,
+    226, 171, 152,  65, 'e',  12,   1,   3, 226, 138, 135,   3, 'd', 'o', 't',
+      3, 226, 171, 132,   4, 'h', 's', 'o', 'l',   3, 226, 159, 137,   4, 'h',
+    's', 'u', 'b',   3, 226, 171, 151,   4, 'l', 'a', 'r', 'r',   3, 226, 165,
+    187,   4, 'm', 'u', 'l', 't',   3, 226, 171, 130,   2, 'n', 'E',   3, 226,
+    171, 140,   2, 'n', 'e',   3, 226, 138, 139,   4, 'p', 'l', 'u', 's',   3,
+    226, 171, 128,  67, 's', 'e', 't',   5,   2,   3, 226, 138, 131,  66, 'e',
+    'q',   2,   1,   3, 226, 138, 135,   1, 'q',   3, 226, 171, 134,  67, 'n',
+    'e', 'q',   2,   1,   3, 226, 138, 139,   1, 'q',   3, 226, 171, 140,   3,
+    's', 'i', 'm',   3, 226, 171, 136,   3, 's', 'u', 'b',   3, 226, 171, 148,
+      3, 's', 'u', 'p',   3, 226, 171, 150,   4, 'w', 'A', 'r', 'r',   3, 226,
+    135, 153,   5, 'w', 'a', 'r', 'h', 'k',   3, 226, 164, 166,  68, 'w', 'a',
+    'r', 'r',  96,   1,   3, 226, 134, 153,   2, 'o', 'w',   3, 226, 134, 153,
+      5, 'w', 'n', 'w', 'a', 'r',   3, 226, 164, 170, 132, 'z', 'l', 'i', 'g',
+      2, 195, 159,   5, 'a', 'r', 'g', 'e', 't',   3, 226, 140, 150,   2, 'a',
+    'u',   2, 207, 132,   3, 'b', 'r', 'k',   3, 226, 142, 180,   5, 'c', 'a',
+    'r', 'o', 'n',   2, 197, 165,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 163,
+      2, 'c', 'y',   2, 209, 130,   3, 'd', 'o', 't',   3, 226, 131, 155,   5,
+    'e', 'l', 'r', 'e', 'c',   3, 226, 140, 149,   2, 'f', 'r',   4, 240, 157,
+    148, 177,   5, 'h', 'e', 'r', 'e', '4',   3, 226, 136, 180,   8, 'h', 'e',
+    'r', 'e', 'f', 'o', 'r', 'e',   3, 226, 136, 180,  68, 'h', 'e', 't', 'a',
+     30,   2,   2, 206, 184,   3, 's', 'y', 'm',   2, 207, 145,   1, 'v',   2,
+    207, 145,  10, 'h', 'i', 'c', 'k', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226,
+    137, 136,   7, 'h', 'i', 'c', 'k', 's', 'i', 'm',   3, 226, 136, 188,   5,
+    'h', 'i', 'n', 's', 'p',   3, 226, 128, 137,   4, 'h', 'k', 'a', 'p',   3,
+    226, 137, 136,   5, 'h', 'k', 's', 'i', 'm',   3, 226, 136, 188, 132, 'h',
+    'o', 'r', 'n',   2, 195, 190,   4, 'i', 'l', 'd', 'e',   2, 203, 156, 196,
+    'i', 'm', 'e', 's',  24,   2,   2, 195, 151,  65, 'b',   2,   1,   3, 226,
+    138, 160,   2, 'a', 'r',   3, 226, 168, 177,   1, 'd',   3, 226, 168, 176,
+      3, 'i', 'n', 't',   3, 226, 136, 173,   3, 'o', 'e', 'a',   3, 226, 164,
+    168,  66, 'o', 'p',  24,   3,   3, 226, 138, 164,   3, 'b', 'o', 't',   3,
+    226, 140, 182,   3, 'c', 'i', 'r',   3, 226, 171, 177,  65, 'f',   1,   1,
+      4, 240, 157, 149, 165,   3, 'o', 'r', 'k',   3, 226, 171, 154,   3, 'o',
+    's', 'a',   3, 226, 164, 169,   5, 'p', 'r', 'i', 'm', 'e',   3, 226, 128,
+    180,   4, 'r', 'a', 'd', 'e',   3, 226, 132, 162,  71, 'r', 'i', 'a', 'n',
+    'g', 'l', 'e',  24,   4,   3, 226, 150, 181,   4, 'd', 'o', 'w', 'n',   3,
+    226, 150, 191,  68, 'l', 'e', 'f', 't',   3,   1,   3, 226, 151, 131,   2,
+    'e', 'q',   3, 226, 138, 180,   1, 'q',   3, 226, 137, 156,  69, 'r', 'i',
+    'g', 'h', 't',   2,   1,   3, 226, 150, 185,   2, 'e', 'q',   3, 226, 138,
+    181,   5, 'r', 'i', 'd', 'o', 't',   3, 226, 151, 172,   3, 'r', 'i', 'e',
+      3, 226, 137, 156,   7, 'r', 'i', 'm', 'i', 'n', 'u', 's',   3, 226, 168,
+    186,   6, 'r', 'i', 'p', 'l', 'u', 's',   3, 226, 168, 185,   4, 'r', 'i',
+    's', 'b',   3, 226, 167, 141,   6, 'r', 'i', 't', 'i', 'm', 'e',   3, 226,
+    168, 187,   7, 'r', 'p', 'e', 'z', 'i', 'u', 'm',   3, 226, 143, 162,   3,
+    's', 'c', 'r',   4, 240, 157, 147, 137,   3, 's', 'c', 'y',   2, 209, 134,
+      4, 's', 'h', 'c', 'y',   2, 209, 155,   5, 's', 't', 'r', 'o', 'k',   2,
+    197, 167,   4, 'w', 'i', 'x', 't',   3, 226, 137, 172,  15, 'w', 'o', 'h',
+    'e', 'a', 'd', 'l', 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134,
+    158,  16, 'w', 'o', 'h', 'e', 'a', 'd', 'r', 'i', 'g', 'h', 't', 'a', 'r',
+    'r', 'o', 'w',   3, 226, 134, 160,   3, 'A', 'r', 'r',   3, 226, 135, 145,
+      3, 'H', 'a', 'r',   3, 226, 165, 163, 133, 'a', 'c', 'u', 't', 'e',   2,
+    195, 186,   3, 'a', 'r', 'r',   3, 226, 134, 145,   4, 'b', 'r', 'c', 'y',
+      2, 209, 158,   5, 'b', 'r', 'e', 'v', 'e',   2, 197, 173, 132, 'c', 'i',
+    'r', 'c',   2, 195, 187,   2, 'c', 'y',   2, 209, 131,   4, 'd', 'a', 'r',
+    'r',   3, 226, 135, 133,   5, 'd', 'b', 'l', 'a', 'c',   2, 197, 177,   4,
+    'd', 'h', 'a', 'r',   3, 226, 165, 174,   5, 'f', 'i', 's', 'h', 't',   3,
+    226, 165, 190,   2, 'f', 'r',   4, 240, 157, 148, 178, 133, 'g', 'r', 'a',
+    'v', 'e',   2, 195, 185,   4, 'h', 'a', 'r', 'l',   3, 226, 134, 191,   4,
+    'h', 'a', 'r', 'r',   3, 226, 134, 190,   4, 'h', 'b', 'l', 'k',   3, 226,
+    150, 128,  69, 'l', 'c', 'o', 'r', 'n',  25,   1,   3, 226, 140, 156,   2,
+    'e', 'r',   3, 226, 140, 156,   5, 'l', 'c', 'r', 'o', 'p',   3, 226, 140,
+    143,   4, 'l', 't', 'r', 'i',   3, 226, 151, 184,   4, 'm', 'a', 'c', 'r',
+      2, 197, 171, 130, 'm', 'l',   2, 194, 168,   4, 'o', 'g', 'o', 'n',   2,
+    197, 179,   3, 'o', 'p', 'f',   4, 240, 157, 149, 166,   6, 'p', 'a', 'r',
+    'r', 'o', 'w',   3, 226, 134, 145,  10, 'p', 'd', 'o', 'w', 'n', 'a', 'r',
+    'r', 'o', 'w',   3, 226, 134, 149,  12, 'p', 'h', 'a', 'r', 'p', 'o', 'o',
+    'n', 'l', 'e', 'f', 't',   3, 226, 134, 191,  13, 'p', 'h', 'a', 'r', 'p',
+    'o', 'o', 'n', 'r', 'i', 'g', 'h', 't',   3, 226, 134, 190,   4, 'p', 'l',
+    'u', 's',   3, 226, 138, 142,  67, 'p', 's', 'i',  14,   2,   2, 207, 133,
+      1, 'h',   2, 207, 146,   3, 'l', 'o', 'n',   2, 207, 133,   9, 'p', 'u',
+    'p', 'a', 'r', 'r', 'o', 'w', 's',   3, 226, 135, 136,  69, 'r', 'c', 'o',
+    'r', 'n',  14,   1,   3, 226, 140, 157,   2, 'e', 'r',   3, 226, 140, 157,
+      5, 'r', 'c', 'r', 'o', 'p',   3, 226, 140, 142,   4, 'r', 'i', 'n', 'g',
+      2, 197, 175,   4, 'r', 't', 'r', 'i',   3, 226, 151, 185,   3, 's', 'c',
+    'r',   4, 240, 157, 147, 138,   4, 't', 'd', 'o', 't',   3, 226, 139, 176,
+      5, 't', 'i', 'l', 'd', 'e',   2, 197, 169,  67, 't', 'r', 'i',   8,   1,
+      3, 226, 150, 181,   1, 'f',   3, 226, 150, 180,   4, 'u', 'a', 'r', 'r',
+      3, 226, 135, 136, 131, 'u', 'm', 'l',   2, 195, 188,   6, 'w', 'a', 'n',
+    'g', 'l', 'e',   3, 226, 166, 167,   3, 'A', 'r', 'r',   3, 226, 135, 149,
+     67, 'B', 'a', 'r',  35,   1,   3, 226, 171, 168,   1, 'v',   3, 226, 171,
+    169,   4, 'D', 'a', 's', 'h',   3, 226, 138, 168,   5, 'a', 'n', 'g', 'r',
+    't',   3, 226, 166, 156,   9, 'a', 'r', 'e', 'p', 's', 'i', 'l', 'o', 'n',
+      2, 207, 181,   7, 'a', 'r', 'k', 'a', 'p', 'p', 'a',   2, 207, 176,   9,
+    'a', 'r', 'n', 'o', 't', 'h', 'i', 'n', 'g',   3, 226, 136, 133,   5, 'a',
+    'r', 'p', 'h', 'i',   2, 207, 149,   4, 'a', 'r', 'p', 'i',   2, 207, 150,
+      8, 'a', 'r', 'p', 'r', 'o', 'p', 't', 'o',   3, 226, 136, 157,  67, 'a',
+    'r', 'r',  27,   1,   3, 226, 134, 149,   2, 'h', 'o',   2, 207, 177,   7,
+    'a', 'r', 's', 'i', 'g', 'm', 'a',   2, 207, 130,  75, 'a', 'r', 's', 'u',
+    'b', 's', 'e', 't', 'n', 'e', 'q',  26,   1,   6, 226, 138, 138, 239, 184,
+    128,   1, 'q',   6, 226, 171, 139, 239, 184, 128,  75, 'a', 'r', 's', 'u',
+    'p', 's', 'e', 't', 'n', 'e', 'q',  26,   1,   6, 226, 138, 139, 239, 184,
+    128,   1, 'q',   6, 226, 171, 140, 239, 184, 128,   7, 'a', 'r', 't', 'h',
+    'e', 't', 'a',   2, 207, 145,  14, 'a', 'r', 't', 'r', 'i', 'a', 'n', 'g',
+    'l', 'e', 'l', 'e', 'f', 't',   3, 226, 138, 178,  15, 'a', 'r', 't', 'r',
+    'i', 'a', 'n', 'g', 'l', 'e', 'r', 'i', 'g', 'h', 't',   3, 226, 138, 179,
+      2, 'c', 'y',   2, 208, 178,   4, 'd', 'a', 's', 'h',   3, 226, 138, 162,
+     66, 'e', 'e',  21,   2,   3, 226, 136, 168,   3, 'b', 'a', 'r',   3, 226,
+    138, 187,   2, 'e', 'q',   3, 226, 137, 154,   5, 'e', 'l', 'l', 'i', 'p',
+      3, 226, 139, 174,   5, 'e', 'r', 'b', 'a', 'r',   1, '|',   3, 'e', 'r',
+    't',   1, '|',   2, 'f', 'r',   4, 240, 157, 148, 179,   4, 'l', 't', 'r',
+    'i',   3, 226, 138, 178,   4, 'n', 's', 'u', 'b',   6, 226, 138, 130, 226,
+    131, 146,   4, 'n', 's', 'u', 'p',   6, 226, 138, 131, 226, 131, 146,   3,
+    'o', 'p', 'f',   4, 240, 157, 149, 167,   4, 'p', 'r', 'o', 'p',   3, 226,
+    136, 157,   4, 'r', 't', 'r', 'i',   3, 226, 138, 179,   3, 's', 'c', 'r',
+      4, 240, 157, 147, 139,   5, 's', 'u', 'b', 'n', 'E',   6, 226, 171, 139,
+    239, 184, 128,   5, 's', 'u', 'b', 'n', 'e',   6, 226, 138, 138, 239, 184,
+    128,   5, 's', 'u', 'p', 'n', 'E',   6, 226, 171, 140, 239, 184, 128,   5,
+    's', 'u', 'p', 'n', 'e',   6, 226, 138, 139, 239, 184, 128,   6, 'z', 'i',
+    'g', 'z', 'a', 'g',   3, 226, 166, 154,   4, 'c', 'i', 'r', 'c',   2, 197,
+    181,   5, 'e', 'd', 'b', 'a', 'r',   3, 226, 169, 159,  68, 'e', 'd', 'g',
+    'e',   7,   1,   3, 226, 136, 167,   1, 'q',   3, 226, 137, 153,   5, 'e',
+    'i', 'e', 'r', 'p',   3, 226, 132, 152,   2, 'f', 'r',   4, 240, 157, 148,
+    180,   3, 'o', 'p', 'f',   4, 240, 157, 149, 168,   1, 'p',   3, 226, 132,
+    152,  65, 'r',   3,   1,   3, 226, 137, 128,   4, 'e', 'a', 't', 'h',   3,
+    226, 137, 128,   3, 's', 'c', 'r',   4, 240, 157, 147, 140,   3, 'c', 'a',
+    'p',   3, 226, 139, 130,   4, 'c', 'i', 'r', 'c',   3, 226, 151, 175,   3,
+    'c', 'u', 'p',   3, 226, 139, 131,   4, 'd', 't', 'r', 'i',   3, 226, 150,
+    189,   2, 'f', 'r',   4, 240, 157, 148, 181,   4, 'h', 'A', 'r', 'r',   3,
+    226, 159, 186,   4, 'h', 'a', 'r', 'r',   3, 226, 159, 183,   1, 'i',   2,
+    206, 190,   4, 'l', 'A', 'r', 'r',   3, 226, 159, 184,   4, 'l', 'a', 'r',
+    'r',   3, 226, 159, 181,   3, 'm', 'a', 'p',   3, 226, 159, 188,   3, 'n',
+    'i', 's',   3, 226, 139, 187,   4, 'o', 'd', 'o', 't',   3, 226, 168, 128,
+      3, 'o', 'p', 'f',   4, 240, 157, 149, 169,   5, 'o', 'p', 'l', 'u', 's',
+      3, 226, 168, 129,   5, 'o', 't', 'i', 'm', 'e',   3, 226, 168, 130,   4,
+    'r', 'A', 'r', 'r',   3, 226, 159, 185,   4, 'r', 'a', 'r', 'r',   3, 226,
+    159, 182,   3, 's', 'c', 'r',   4, 240, 157, 147, 141,   5, 's', 'q', 'c',
+    'u', 'p',   3, 226, 168, 134,   5, 'u', 'p', 'l', 'u', 's',   3, 226, 168,
+    132,   4, 'u', 't', 'r', 'i',   3, 226, 150, 179,   3, 'v', 'e', 'e',   3,
+    226, 139, 129,   5, 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 128, 133, 'a',
+    'c', 'u', 't', 'e',   2, 195, 189,   3, 'a', 'c', 'y',   2, 209, 143,   4,
+    'c', 'i', 'r', 'c',   2, 197, 183,   2, 'c', 'y',   2, 209, 139, 130, 'e',
+    'n',   2, 194, 165,   2, 'f', 'r',   4, 240, 157, 148, 182,   3, 'i', 'c',
+    'y',   2, 209, 151,   3, 'o', 'p', 'f',   4, 240, 157, 149, 170,   3, 's',
+    'c', 'r',   4, 240, 157, 147, 142,   3, 'u', 'c', 'y',   2, 209, 142, 131,
+    'u', 'm', 'l',   2, 195, 191,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 186,
+      5, 'c', 'a', 'r', 'o', 'n',   2, 197, 190,   2, 'c', 'y',   2, 208, 183,
+      3, 'd', 'o', 't',   2, 197, 188,   5, 'e', 'e', 't', 'r', 'f',   3, 226,
+    132, 168,   3, 'e', 't', 'a',   2, 206, 182,   2, 'f', 'r',   4, 240, 157,
+    148, 183,   3, 'h', 'c', 'y',   2, 208, 182,   6, 'i', 'g', 'r', 'a', 'r',
+    'r',   3, 226, 135, 157,   3, 'o', 'p', 'f',   4, 240, 157, 149, 171,   3,
+    's', 'c', 'r',   4, 240, 157, 147, 143,   2, 'w', 'j',   3, 226, 128, 141,
+      3, 'w', 'n', 'j',   3, 226, 128, 140
+};
+
diff -pruN 2.14.6+dfsg-0.1/codegen/ranges.def 2.15.0+dfsg-0.3/codegen/ranges.def
--- 2.14.6+dfsg-0.1/codegen/ranges.def	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/ranges.def	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,361 @@
+name xmlIsChar
+ur 0x9 
+ur 0xA 
+ur 0xD 
+ur 0x20..0xFF 
+ur 0x0100..0xD7FF 
+ur 0xE000..0xFFFD 
+ur 0x10000..0x10FFFF
+end xmlIsChar
+
+name xmlIsPubidChar
+ur 0x20 0x0d 0x0a 'a'..'z' 'A'..'Z' '0'..'9'
+ur '-' 0x27 '(' ')' '+' ',' '.' '/'
+ur ':' '=' '?' ';' '!' '*' '#' '@'
+ur '$' '_' '%'
+end
+
+name xmlIsBlank
+ur 0x09 0x0a 0x0d 0x20
+end xmlIsBlank
+
+name xmlIsBaseChar
+ur 0x0041..0x005A 
+ur 0x0061..0x007A 
+ur 0x00C0..0x00D6 
+ur 0x00D8..0x00F6 
+ur 0x00F8..0x00FF 
+ur 0x0100..0x0131 
+ur 0x0134..0x013E 
+ur 0x0141..0x0148 
+ur 0x014A..0x017E 
+ur 0x0180..0x01C3 
+ur 0x01CD..0x01F0 
+ur 0x01F4..0x01F5 
+ur 0x01FA..0x0217 
+ur 0x0250..0x02A8 
+ur 0x02BB..0x02C1 
+ur 0x0386 
+ur 0x0388..0x038A 
+ur 0x038C 
+ur 0x038E..0x03A1 
+ur 0x03A3..0x03CE 
+ur 0x03D0..0x03D6 
+ur 0x03DA 
+ur 0x03DC 
+ur 0x03DE 
+ur 0x03E0 
+ur 0x03E2..0x03F3 
+ur 0x0401..0x040C 
+ur 0x040E..0x044F 
+ur 0x0451..0x045C 
+ur 0x045E..0x0481 
+ur 0x0490..0x04C4 
+ur 0x04C7..0x04C8 
+ur 0x04CB..0x04CC 
+ur 0x04D0..0x04EB 
+ur 0x04EE..0x04F5 
+ur 0x04F8..0x04F9 
+ur 0x0531..0x0556 
+ur 0x0559 
+ur 0x0561..0x0586 
+ur 0x05D0..0x05EA 
+ur 0x05F0..0x05F2 
+ur 0x0621..0x063A 
+ur 0x0641..0x064A 
+ur 0x0671..0x06B7 
+ur 0x06BA..0x06BE 
+ur 0x06C0..0x06CE 
+ur 0x06D0..0x06D3 
+ur 0x06D5 
+ur 0x06E5..0x06E6 
+ur 0x0905..0x0939 
+ur 0x093D 
+ur 0x0958..0x0961 
+ur 0x0985..0x098C 
+ur 0x098F..0x0990 
+ur 0x0993..0x09A8 
+ur 0x09AA..0x09B0 
+ur 0x09B2 
+ur 0x09B6..0x09B9 
+ur 0x09DC..0x09DD 
+ur 0x09DF..0x09E1 
+ur 0x09F0..0x09F1 
+ur 0x0A05..0x0A0A 
+ur 0x0A0F..0x0A10 
+ur 0x0A13..0x0A28 
+ur 0x0A2A..0x0A30 
+ur 0x0A32..0x0A33 
+ur 0x0A35..0x0A36 
+ur 0x0A38..0x0A39 
+ur 0x0A59..0x0A5C 
+ur 0x0A5E 
+ur 0x0A72..0x0A74 
+ur 0x0A85..0x0A8B 
+ur 0x0A8D 
+ur 0x0A8F..0x0A91 
+ur 0x0A93..0x0AA8 
+ur 0x0AAA..0x0AB0 
+ur 0x0AB2..0x0AB3 
+ur 0x0AB5..0x0AB9 
+ur 0x0ABD 
+ur 0x0AE0 
+ur 0x0B05..0x0B0C 
+ur 0x0B0F..0x0B10 
+ur 0x0B13..0x0B28 
+ur 0x0B2A..0x0B30 
+ur 0x0B32..0x0B33 
+ur 0x0B36..0x0B39 
+ur 0x0B3D 
+ur 0x0B5C..0x0B5D 
+ur 0x0B5F..0x0B61 
+ur 0x0B85..0x0B8A 
+ur 0x0B8E..0x0B90 
+ur 0x0B92..0x0B95 
+ur 0x0B99..0x0B9A 
+ur 0x0B9C 
+ur 0x0B9E..0x0B9F 
+ur 0x0BA3..0x0BA4 
+ur 0x0BA8..0x0BAA 
+ur 0x0BAE..0x0BB5 
+ur 0x0BB7..0x0BB9 
+ur 0x0C05..0x0C0C 
+ur 0x0C0E..0x0C10 
+ur 0x0C12..0x0C28 
+ur 0x0C2A..0x0C33 
+ur 0x0C35..0x0C39 
+ur 0x0C60..0x0C61 
+ur 0x0C85..0x0C8C 
+ur 0x0C8E..0x0C90 
+ur 0x0C92..0x0CA8 
+ur 0x0CAA..0x0CB3 
+ur 0x0CB5..0x0CB9 
+ur 0x0CDE 
+ur 0x0CE0..0x0CE1 
+ur 0x0D05..0x0D0C 
+ur 0x0D0E..0x0D10 
+ur 0x0D12..0x0D28 
+ur 0x0D2A..0x0D39 
+ur 0x0D60..0x0D61 
+ur 0x0E01..0x0E2E 
+ur 0x0E30 
+ur 0x0E32..0x0E33 
+ur 0x0E40..0x0E45 
+ur 0x0E81..0x0E82 
+ur 0x0E84 
+ur 0x0E87..0x0E88 
+ur 0x0E8A 
+ur 0x0E8D 
+ur 0x0E94..0x0E97 
+ur 0x0E99..0x0E9F 
+ur 0x0EA1..0x0EA3 
+ur 0x0EA5 
+ur 0x0EA7 
+ur 0x0EAA..0x0EAB 
+ur 0x0EAD..0x0EAE 
+ur 0x0EB0 
+ur 0x0EB2..0x0EB3 
+ur 0x0EBD 
+ur 0x0EC0..0x0EC4 
+ur 0x0F40..0x0F47 
+ur 0x0F49..0x0F69 
+ur 0x10A0..0x10C5 
+ur 0x10D0..0x10F6 
+ur 0x1100 
+ur 0x1102..0x1103 
+ur 0x1105..0x1107 
+ur 0x1109 
+ur 0x110B..0x110C 
+ur 0x110E..0x1112 
+ur 0x113C 
+ur 0x113E 
+ur 0x1140 
+ur 0x114C 
+ur 0x114E 
+ur 0x1150 
+ur 0x1154..0x1155 
+ur 0x1159 
+ur 0x115F..0x1161 
+ur 0x1163 
+ur 0x1165 
+ur 0x1167 
+ur 0x1169 
+ur 0x116D..0x116E 
+ur 0x1172..0x1173 
+ur 0x1175 
+ur 0x119E 
+ur 0x11A8 
+ur 0x11AB 
+ur 0x11AE..0x11AF 
+ur 0x11B7..0x11B8 
+ur 0x11BA 
+ur 0x11BC..0x11C2 
+ur 0x11EB 
+ur 0x11F0 
+ur 0x11F9 
+ur 0x1E00..0x1E9B 
+ur 0x1EA0..0x1EF9 
+ur 0x1F00..0x1F15 
+ur 0x1F18..0x1F1D 
+ur 0x1F20..0x1F45 
+ur 0x1F48..0x1F4D 
+ur 0x1F50..0x1F57 
+ur 0x1F59 
+ur 0x1F5B 
+ur 0x1F5D 
+ur 0x1F5F..0x1F7D 
+ur 0x1F80..0x1FB4 
+ur 0x1FB6..0x1FBC 
+ur 0x1FBE 
+ur 0x1FC2..0x1FC4 
+ur 0x1FC6..0x1FCC 
+ur 0x1FD0..0x1FD3 
+ur 0x1FD6..0x1FDB 
+ur 0x1FE0..0x1FEC 
+ur 0x1FF2..0x1FF4 
+ur 0x1FF6..0x1FFC 
+ur 0x2126 
+ur 0x212A..0x212B 
+ur 0x212E 
+ur 0x2180..0x2182 
+ur 0x3041..0x3094 
+ur 0x30A1..0x30FA 
+ur 0x3105..0x312C 
+ur 0xAC00..0xD7A3
+end xmlIsBaseChar
+
+name xmlIsIdeographic
+ur 0x4E00..0x9FA5 
+ur 0x3007 
+ur 0x3021..0x3029
+end xmlIsIdeographic
+
+name xmlIsCombining
+ur 0x0300..0x0345 
+ur 0x0360..0x0361 
+ur 0x0483..0x0486 
+ur 0x0591..0x05A1 
+ur 0x05A3..0x05B9 
+ur 0x05BB..0x05BD 
+ur 0x05BF 
+ur 0x05C1..0x05C2 
+ur 0x05C4 
+ur 0x064B..0x0652 
+ur 0x0670 
+ur 0x06D6..0x06DC 
+ur 0x06DD..0x06DF 
+ur 0x06E0..0x06E4 
+ur 0x06E7..0x06E8 
+ur 0x06EA..0x06ED 
+ur 0x0901..0x0903 
+ur 0x093C 
+ur 0x093E..0x094C 
+ur 0x094D 
+ur 0x0951..0x0954 
+ur 0x0962..0x0963 
+ur 0x0981..0x0983 
+ur 0x09BC 
+ur 0x09BE 
+ur 0x09BF 
+ur 0x09C0..0x09C4 
+ur 0x09C7..0x09C8 
+ur 0x09CB..0x09CD 
+ur 0x09D7 
+ur 0x09E2..0x09E3 
+ur 0x0A02 
+ur 0x0A3C 
+ur 0x0A3E 
+ur 0x0A3F 
+ur 0x0A40..0x0A42 
+ur 0x0A47..0x0A48 
+ur 0x0A4B..0x0A4D 
+ur 0x0A70..0x0A71 
+ur 0x0A81..0x0A83 
+ur 0x0ABC 
+ur 0x0ABE..0x0AC5 
+ur 0x0AC7..0x0AC9 
+ur 0x0ACB..0x0ACD 
+ur 0x0B01..0x0B03 
+ur 0x0B3C 
+ur 0x0B3E..0x0B43 
+ur 0x0B47..0x0B48 
+ur 0x0B4B..0x0B4D 
+ur 0x0B56..0x0B57 
+ur 0x0B82..0x0B83 
+ur 0x0BBE..0x0BC2 
+ur 0x0BC6..0x0BC8 
+ur 0x0BCA..0x0BCD 
+ur 0x0BD7 
+ur 0x0C01..0x0C03 
+ur 0x0C3E..0x0C44 
+ur 0x0C46..0x0C48 
+ur 0x0C4A..0x0C4D 
+ur 0x0C55..0x0C56 
+ur 0x0C82..0x0C83 
+ur 0x0CBE..0x0CC4 
+ur 0x0CC6..0x0CC8 
+ur 0x0CCA..0x0CCD 
+ur 0x0CD5..0x0CD6 
+ur 0x0D02..0x0D03 
+ur 0x0D3E..0x0D43 
+ur 0x0D46..0x0D48 
+ur 0x0D4A..0x0D4D 
+ur 0x0D57 
+ur 0x0E31 
+ur 0x0E34..0x0E3A 
+ur 0x0E47..0x0E4E 
+ur 0x0EB1 
+ur 0x0EB4..0x0EB9 
+ur 0x0EBB..0x0EBC 
+ur 0x0EC8..0x0ECD 
+ur 0x0F18..0x0F19 
+ur 0x0F35 
+ur 0x0F37 
+ur 0x0F39 
+ur 0x0F3E 
+ur 0x0F3F 
+ur 0x0F71..0x0F84 
+ur 0x0F86..0x0F8B 
+ur 0x0F90..0x0F95 
+ur 0x0F97 
+ur 0x0F99..0x0FAD 
+ur 0x0FB1..0x0FB7 
+ur 0x0FB9 
+ur 0x20D0..0x20DC 
+ur 0x20E1 
+ur 0x302A..0x302F 
+ur 0x3099 
+ur 0x309A
+end xmlIsCombining
+
+name xmlIsDigit
+ur 0x0030..0x0039 
+ur 0x0660..0x0669 
+ur 0x06F0..0x06F9 
+ur 0x0966..0x096F 
+ur 0x09E6..0x09EF 
+ur 0x0A66..0x0A6F 
+ur 0x0AE6..0x0AEF 
+ur 0x0B66..0x0B6F 
+ur 0x0BE7..0x0BEF 
+ur 0x0C66..0x0C6F 
+ur 0x0CE6..0x0CEF 
+ur 0x0D66..0x0D6F 
+ur 0x0E50..0x0E59 
+ur 0x0ED0..0x0ED9 
+ur 0x0F20..0x0F29
+end xmlIsDigit
+
+name xmlIsExtender
+ur 0x00B7 
+ur 0x02D0 
+ur 0x02D1 
+ur 0x0387 
+ur 0x0640 
+ur 0x0E46 
+ur 0x0EC6 
+ur 0x3005 
+ur 0x3031..0x3035 
+ur 0x309D..0x309E 
+ur 0x30FC..0x30FE
+end xmlIsExtender
diff -pruN 2.14.6+dfsg-0.1/codegen/ranges.inc 2.15.0+dfsg-0.3/codegen/ranges.inc
--- 2.14.6+dfsg-0.1/codegen/ranges.inc	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/ranges.inc	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,131 @@
+const unsigned char xmlIsPubidChar_tab[256] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+    0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
+    0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+    0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+    0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00 };
+
+static const xmlChSRange xmlIsBaseChar_srng[] = {{0x100, 0x131},
+    {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3},
+    {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8},
+    {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
+    {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da},
+    {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3},
+    {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481},
+    {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb},
+    {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559},
+    {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
+    {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce},
+    {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939},
+    {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990},
+    {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
+    {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
+    {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
+    {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
+    {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91},
+    {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
+    {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
+    {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39},
+    {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a},
+    {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
+    {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
+    {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
+    {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
+    {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
+    {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10},
+    {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e},
+    {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82},
+    {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d},
+    {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5},
+    {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0},
+    {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47},
+    {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100},
+    {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c},
+    {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140},
+    {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155},
+    {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165},
+    {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173},
+    {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab},
+    {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2},
+    {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b},
+    {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
+    {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
+    {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
+    {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
+    {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
+    {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182},
+    {0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}};
+const xmlChRangeGroup xmlIsBaseCharGroup =
+	{197,0,xmlIsBaseChar_srng,NULL};
+
+static const xmlChSRange xmlIsChar_srng[] = {{0x100, 0xd7ff},
+    {0xe000, 0xfffd}};
+static const xmlChLRange xmlIsChar_lrng[] = {{0x10000, 0x10ffff}};
+const xmlChRangeGroup xmlIsCharGroup =
+	{2,1,xmlIsChar_srng,xmlIsChar_lrng};
+
+static const xmlChSRange xmlIsCombining_srng[] = {{0x300, 0x345},
+    {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
+    {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
+    {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df},
+    {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903},
+    {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954},
+    {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be},
+    {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
+    {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c},
+    {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48},
+    {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc},
+    {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03},
+    {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
+    {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8},
+    {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44},
+    {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83},
+    {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
+    {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
+    {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e},
+    {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd},
+    {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
+    {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b},
+    {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7},
+    {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f},
+    {0x3099, 0x3099}, {0x309a, 0x309a}};
+const xmlChRangeGroup xmlIsCombiningGroup =
+	{95,0,xmlIsCombining_srng,NULL};
+
+static const xmlChSRange xmlIsDigit_srng[] = {{0x660, 0x669},
+    {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
+    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
+    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+    {0xf20, 0xf29}};
+const xmlChRangeGroup xmlIsDigitGroup =
+	{14,0,xmlIsDigit_srng,NULL};
+
+static const xmlChSRange xmlIsExtender_srng[] = {{0x2d0, 0x2d0},
+    {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46},
+    {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e},
+    {0x30fc, 0x30fe}};
+const xmlChRangeGroup xmlIsExtenderGroup =
+	{10,0,xmlIsExtender_srng,NULL};
+
+static const xmlChSRange xmlIsIdeographic_srng[] = {{0x3007, 0x3007},
+    {0x3021, 0x3029}, {0x4e00, 0x9fa5}};
+const xmlChRangeGroup xmlIsIdeographicGroup =
+	{3,0,xmlIsIdeographic_srng,NULL};
+
diff -pruN 2.14.6+dfsg-0.1/codegen/rangetab.py 2.15.0+dfsg-0.3/codegen/rangetab.py
--- 2.14.6+dfsg-0.1/codegen/rangetab.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/rangetab.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,34 @@
+def gen_range_tables(out, name, s_suffix, l_suffix, ranges):
+    numshort = 0
+    numlong = 0
+    sptr = "NULL"
+    lptr = "NULL"
+
+    for range in ranges:
+        (low, high) = range
+        if high < 0x10000:
+            if numshort == 0:
+                sptr = name + s_suffix
+                pline = "static const xmlChSRange %s[] = {" % sptr
+            else:
+                pline += ","
+            numshort += 1
+        else:
+            if numlong == 0:
+                if numshort > 0:
+                    out.write(pline + "};\n")
+                lptr = name + l_suffix
+                pline = "static const xmlChLRange %s[] = {" % lptr
+            else:
+                pline += ","
+            numlong += 1
+        if len(pline) > 60:
+            out.write(pline + "\n")
+            pline = "    "
+        elif pline[-1:] == ",":
+            pline += " "
+        pline += "{%s, %s}" % (hex(low), hex(high))
+
+    out.write(pline + "};\n")
+
+    return "{%s,%s,%s,%s}" % (numshort, numlong, sptr, lptr)
diff -pruN 2.14.6+dfsg-0.1/codegen/unicode.inc 2.15.0+dfsg-0.3/codegen/unicode.inc
--- 2.14.6+dfsg-0.1/codegen/unicode.inc	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/unicode.inc	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,1473 @@
+static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f},
+    {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f},
+    {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063},
+    {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00},
+    {0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb}};
+static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
+    {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
+    {0x100000, 0x100000}, {0x10fffd, 0x10fffd}};
+static const xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL};
+
+static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
+    {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f},
+    {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
+    {0xfff9, 0xfffb}};
+static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
+    {0xe0020, 0xe007f}};
+static const xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL};
+
+static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a},
+    {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
+    {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4},
+    {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a},
+    {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5},
+    {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5},
+    {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559},
+    {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
+    {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5},
+    {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff},
+    {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5},
+    {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
+    {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8},
+    {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd},
+    {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
+    {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
+    {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
+    {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8},
+    {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd},
+    {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
+    {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
+    {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71},
+    {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
+    {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4},
+    {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c},
+    {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39},
+    {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8},
+    {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde},
+    {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28},
+    {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1},
+    {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30},
+    {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84},
+    {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97},
+    {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7},
+    {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd},
+    {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00},
+    {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021},
+    {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5},
+    {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
+    {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
+    {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
+    {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
+    {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
+    {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
+    {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
+    {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
+    {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
+    {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
+    {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877},
+    {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
+    {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15},
+    {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
+    {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d},
+    {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
+    {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
+    {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
+    {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115},
+    {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128},
+    {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f},
+    {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c},
+    {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
+    {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff},
+    {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5},
+    {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d},
+    {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d},
+    {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e},
+    {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
+    {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
+    {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
+    {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}};
+static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
+    {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
+    {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
+    {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d},
+    {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
+    {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
+    {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
+    {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
+    {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
+    {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
+    {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
+    {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
+    {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
+    {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
+    {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
+    {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9},
+    {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d}};
+static const xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL};
+
+static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa},
+    {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101},
+    {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109},
+    {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111},
+    {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119},
+    {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121},
+    {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129},
+    {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131},
+    {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a},
+    {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142},
+    {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b},
+    {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153},
+    {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b},
+    {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163},
+    {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b},
+    {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173},
+    {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c},
+    {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188},
+    {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b},
+    {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5},
+    {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0},
+    {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf},
+    {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce},
+    {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6},
+    {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df},
+    {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7},
+    {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0},
+    {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb},
+    {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203},
+    {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b},
+    {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213},
+    {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b},
+    {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223},
+    {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b},
+    {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236},
+    {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1},
+    {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd},
+    {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5},
+    {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed},
+    {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb},
+    {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465},
+    {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d},
+    {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475},
+    {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d},
+    {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d},
+    {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495},
+    {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d},
+    {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5},
+    {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad},
+    {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5},
+    {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd},
+    {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6},
+    {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce},
+    {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7},
+    {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df},
+    {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7},
+    {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef},
+    {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9},
+    {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507},
+    {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f},
+    {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01},
+    {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09},
+    {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11},
+    {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19},
+    {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21},
+    {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29},
+    {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31},
+    {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39},
+    {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41},
+    {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49},
+    {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51},
+    {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59},
+    {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61},
+    {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69},
+    {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71},
+    {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79},
+    {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81},
+    {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89},
+    {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91},
+    {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3},
+    {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab},
+    {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3},
+    {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb},
+    {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3},
+    {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb},
+    {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3},
+    {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb},
+    {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3},
+    {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb},
+    {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3},
+    {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07},
+    {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45},
+    {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87},
+    {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7},
+    {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3},
+    {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7},
+    {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f},
+    {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139},
+    {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
+    {0xff41, 0xff5a}};
+static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433},
+    {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
+    {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
+    {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537},
+    {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
+    {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
+    {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1},
+    {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e},
+    {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
+    {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}};
+static const xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL};
+
+static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1},
+    {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559},
+    {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6},
+    {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005},
+    {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
+    {0xff70, 0xff70}, {0xff9e, 0xff9f}};
+static const xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL};
+
+static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3},
+    {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a},
+    {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef},
+    {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f},
+    {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939},
+    {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c},
+    {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
+    {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1},
+    {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28},
+    {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
+    {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d},
+    {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
+    {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1},
+    {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
+    {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d},
+    {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
+    {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
+    {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
+    {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
+    {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
+    {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
+    {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c},
+    {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61},
+    {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd},
+    {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45},
+    {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a},
+    {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3},
+    {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0},
+    {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd},
+    {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b},
+    {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055},
+    {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
+    {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
+    {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
+    {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
+    {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
+    {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
+    {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
+    {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
+    {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
+    {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
+    {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877},
+    {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
+    {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096},
+    {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c},
+    {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
+    {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
+    {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
+    {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
+    {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
+    {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
+    {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d},
+    {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
+    {0xffda, 0xffdc}};
+static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
+    {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
+    {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
+    {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d},
+    {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
+    {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
+    {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d}};
+static const xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL};
+
+static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
+    {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
+    {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc}};
+static const xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL};
+
+static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6},
+    {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104},
+    {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c},
+    {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114},
+    {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c},
+    {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124},
+    {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c},
+    {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134},
+    {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d},
+    {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145},
+    {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e},
+    {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156},
+    {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e},
+    {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166},
+    {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e},
+    {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176},
+    {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182},
+    {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191},
+    {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0},
+    {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9},
+    {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5},
+    {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7},
+    {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1},
+    {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9},
+    {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2},
+    {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea},
+    {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4},
+    {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe},
+    {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206},
+    {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e},
+    {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216},
+    {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e},
+    {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226},
+    {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e},
+    {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a},
+    {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab},
+    {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc},
+    {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4},
+    {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec},
+    {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa},
+    {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464},
+    {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c},
+    {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474},
+    {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c},
+    {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c},
+    {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494},
+    {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c},
+    {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4},
+    {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac},
+    {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4},
+    {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc},
+    {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5},
+    {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd},
+    {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6},
+    {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de},
+    {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6},
+    {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee},
+    {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8},
+    {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506},
+    {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e},
+    {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02},
+    {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a},
+    {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12},
+    {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a},
+    {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22},
+    {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a},
+    {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32},
+    {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a},
+    {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42},
+    {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a},
+    {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52},
+    {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a},
+    {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62},
+    {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a},
+    {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72},
+    {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a},
+    {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82},
+    {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a},
+    {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92},
+    {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4},
+    {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac},
+    {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4},
+    {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc},
+    {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4},
+    {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc},
+    {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4},
+    {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc},
+    {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4},
+    {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec},
+    {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4},
+    {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
+    {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59},
+    {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f},
+    {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
+    {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d},
+    {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124},
+    {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131},
+    {0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a}};
+static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419},
+    {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c},
+    {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
+    {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
+    {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
+    {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
+    {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
+    {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed},
+    {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
+    {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734},
+    {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8}};
+static const xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL};
+
+static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f},
+    {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
+    {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
+    {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc},
+    {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711},
+    {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c},
+    {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983},
+    {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
+    {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c},
+    {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71},
+    {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9},
+    {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c},
+    {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57},
+    {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd},
+    {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48},
+    {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc},
+    {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
+    {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
+    {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
+    {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31},
+    {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9},
+    {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35},
+    {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84},
+    {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
+    {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714},
+    {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3},
+    {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b},
+    {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a},
+    {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23}};
+static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
+    {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
+    {0xe0100, 0xe01ef}};
+static const xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML};
+
+static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940},
+    {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8},
+    {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40},
+    {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc},
+    {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48},
+    {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2},
+    {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03},
+    {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4},
+    {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03},
+    {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57},
+    {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3},
+    {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031},
+    {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5},
+    {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931},
+    {0x1933, 0x1938}};
+static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172}};
+static const xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL};
+
+static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f},
+    {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd},
+    {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615},
+    {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4},
+    {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a},
+    {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948},
+    {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981},
+    {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3},
+    {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48},
+    {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc},
+    {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3},
+    {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43},
+    {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0},
+    {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d},
+    {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6},
+    {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca},
+    {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a},
+    {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc},
+    {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37},
+    {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87},
+    {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030},
+    {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059},
+    {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
+    {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd},
+    {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928},
+    {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1},
+    {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e},
+    {0xfe00, 0xfe0f}, {0xfe20, 0xfe23}};
+static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
+    {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef}};
+static const xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL};
+
+static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3},
+    {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9},
+    {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f},
+    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f},
+    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+    {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0},
+    {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f},
+    {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183},
+    {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007},
+    {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
+    {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19}};
+static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
+    {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff}};
+static const xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL};
+
+static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669},
+    {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
+    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
+    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
+    {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9},
+    {0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19}};
+static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff}};
+static const xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL};
+
+static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9},
+    {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33},
+    {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079},
+    {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
+    {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
+    {0x3280, 0x3289}, {0x32b1, 0x32bf}};
+static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323}};
+static const xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL};
+
+static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a},
+    {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f},
+    {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7},
+    {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387},
+    {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0},
+    {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b},
+    {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d},
+    {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f},
+    {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85},
+    {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
+    {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
+    {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027},
+    {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057},
+    {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6},
+    {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db},
+    {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
+    {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb},
+    {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63},
+    {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a},
+    {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d},
+    {0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65}};
+static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f}};
+static const xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL};
+
+static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a},
+    {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030},
+    {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63},
+    {0xff0d, 0xff0d}};
+static const xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL};
+
+static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d},
+    {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c},
+    {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a},
+    {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d},
+    {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775},
+    {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984},
+    {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c},
+    {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994},
+    {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db},
+    {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d},
+    {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017},
+    {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f},
+    {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c},
+    {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44},
+    {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e},
+    {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60},
+    {0xff63, 0xff63}};
+static const xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL};
+
+static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27},
+    {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40},
+    {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
+    {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
+    {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
+    {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
+    {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
+    {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
+    {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
+    {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
+    {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
+    {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
+    {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
+    {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
+    {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
+    {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
+    {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
+    {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64}};
+static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f}};
+static const xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL};
+
+static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b},
+    {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b},
+    {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d},
+    {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768},
+    {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770},
+    {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8},
+    {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987},
+    {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f},
+    {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997},
+    {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008},
+    {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010},
+    {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a},
+    {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37},
+    {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f},
+    {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59},
+    {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b},
+    {0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62}};
+static const xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL};
+
+static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b},
+    {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e},
+    {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6},
+    {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5},
+    {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
+    {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f},
+    {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa},
+    {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f},
+    {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34},
+    {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc},
+    {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff},
+    {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
+    {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052},
+    {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101},
+    {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118},
+    {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129},
+    {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144},
+    {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0},
+    {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617},
+    {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704},
+    {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d},
+    {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767},
+    {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5},
+    {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d},
+    {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
+    {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037},
+    {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f},
+    {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d},
+    {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff},
+    {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd},
+    {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
+    {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40},
+    {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
+    {0xfffc, 0xfffd}};
+static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
+    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
+    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
+    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
+    {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
+    {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
+    {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3}};
+static const xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL};
+
+static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5},
+    {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f},
+    {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69},
+    {0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6}};
+static const xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL};
+
+static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60},
+    {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
+    {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
+    {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
+    {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
+    {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3}};
+static const xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL};
+
+static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e},
+    {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7},
+    {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052},
+    {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b},
+    {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3},
+    {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2},
+    {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321},
+    {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1},
+    {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff},
+    {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff},
+    {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b},
+    {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2},
+    {0xffe9, 0xffec}};
+static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
+    {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
+    {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
+    {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3}};
+static const xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL};
+
+static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9},
+    {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482},
+    {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa},
+    {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03},
+    {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
+    {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
+    {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106},
+    {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
+    {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
+    {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199},
+    {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad},
+    {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3},
+    {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
+    {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a},
+    {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
+    {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691},
+    {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727},
+    {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756},
+    {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af},
+    {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99},
+    {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
+    {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
+    {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243},
+    {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0},
+    {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
+    {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee},
+    {0xfffc, 0xfffd}};
+static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
+    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
+    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
+    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}};
+static const xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL};
+
+static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0},
+    {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029},
+    {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000}};
+static const xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL};
+
+static int
+xmlUCSIsCatC(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlCG));
+}
+
+static int
+xmlUCSIsCatCc(int code) {
+    return(((code >= 0x0) && (code <= 0x1f)) ||
+           ((code >= 0x7f) && (code <= 0x9f)));
+}
+
+static int
+xmlUCSIsCatCf(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlCfG));
+}
+
+static int
+xmlUCSIsCatCo(int code) {
+    return((code == 0xe000) ||
+           (code == 0xf8ff) ||
+           (code == 0xf0000) ||
+           (code == 0xffffd) ||
+           (code == 0x100000) ||
+           (code == 0x10fffd));
+}
+
+static int
+xmlUCSIsCatL(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLG));
+}
+
+static int
+xmlUCSIsCatLl(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLlG));
+}
+
+static int
+xmlUCSIsCatLm(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLmG));
+}
+
+static int
+xmlUCSIsCatLo(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLoG));
+}
+
+static int
+xmlUCSIsCatLt(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLtG));
+}
+
+static int
+xmlUCSIsCatLu(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlLuG));
+}
+
+static int
+xmlUCSIsCatM(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlMG));
+}
+
+static int
+xmlUCSIsCatMc(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlMcG));
+}
+
+static int
+xmlUCSIsCatMe(int code) {
+    return(((code >= 0x488) && (code <= 0x489)) ||
+           (code == 0x6de) ||
+           ((code >= 0x20dd) && (code <= 0x20e0)) ||
+           ((code >= 0x20e2) && (code <= 0x20e4)));
+}
+
+static int
+xmlUCSIsCatMn(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlMnG));
+}
+
+static int
+xmlUCSIsCatN(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlNG));
+}
+
+static int
+xmlUCSIsCatNd(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlNdG));
+}
+
+static int
+xmlUCSIsCatNl(int code) {
+    return(((code >= 0x16ee) && (code <= 0x16f0)) ||
+           ((code >= 0x2160) && (code <= 0x2183)) ||
+           (code == 0x3007) ||
+           ((code >= 0x3021) && (code <= 0x3029)) ||
+           ((code >= 0x3038) && (code <= 0x303a)) ||
+           (code == 0x1034a));
+}
+
+static int
+xmlUCSIsCatNo(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlNoG));
+}
+
+static int
+xmlUCSIsCatP(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlPG));
+}
+
+static int
+xmlUCSIsCatPc(int code) {
+    return((code == 0x5f) ||
+           ((code >= 0x203f) && (code <= 0x2040)) ||
+           (code == 0x2054) ||
+           (code == 0x30fb) ||
+           ((code >= 0xfe33) && (code <= 0xfe34)) ||
+           ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
+           (code == 0xff3f) ||
+           (code == 0xff65));
+}
+
+static int
+xmlUCSIsCatPd(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlPdG));
+}
+
+static int
+xmlUCSIsCatPe(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlPeG));
+}
+
+static int
+xmlUCSIsCatPf(int code) {
+    return((code == 0xbb) ||
+           (code == 0x2019) ||
+           (code == 0x201d) ||
+           (code == 0x203a));
+}
+
+static int
+xmlUCSIsCatPi(int code) {
+    return((code == 0xab) ||
+           (code == 0x2018) ||
+           ((code >= 0x201b) && (code <= 0x201c)) ||
+           (code == 0x201f) ||
+           (code == 0x2039));
+}
+
+static int
+xmlUCSIsCatPo(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlPoG));
+}
+
+static int
+xmlUCSIsCatPs(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlPsG));
+}
+
+static int
+xmlUCSIsCatS(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlSG));
+}
+
+static int
+xmlUCSIsCatSc(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlScG));
+}
+
+static int
+xmlUCSIsCatSk(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlSkG));
+}
+
+static int
+xmlUCSIsCatSm(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlSmG));
+}
+
+static int
+xmlUCSIsCatSo(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlSoG));
+}
+
+static int
+xmlUCSIsCatZ(int code) {
+    return(xmlCharInRange((unsigned int)code, &xmlZG));
+}
+
+static int
+xmlUCSIsCatZl(int code) {
+    return((code == 0x2028));
+}
+
+static int
+xmlUCSIsCatZp(int code) {
+    return((code == 0x2029));
+}
+
+static int
+xmlUCSIsCatZs(int code) {
+    return((code == 0x20) ||
+           (code == 0xa0) ||
+           (code == 0x1680) ||
+           (code == 0x180e) ||
+           ((code >= 0x2000) && (code <= 0x200a)) ||
+           (code == 0x202f) ||
+           (code == 0x205f) ||
+           (code == 0x3000));
+}
+
+static const xmlChLRange xmlAegeanNumbersL[] = {{0x10100, 0x1013f}};
+
+static const xmlChSRange xmlAlphabeticPresentationFormsS[] = {
+    {0xfb00, 0xfb4f}};
+
+static const xmlChSRange xmlArabicS[] = {{0x600, 0x6ff}};
+
+static const xmlChSRange xmlArabicPresentationFormsAS[] = {{0xfb50, 0xfdff}};
+
+static const xmlChSRange xmlArabicPresentationFormsBS[] = {{0xfe70, 0xfeff}};
+
+static const xmlChSRange xmlArmenianS[] = {{0x530, 0x58f}};
+
+static const xmlChSRange xmlArrowsS[] = {{0x2190, 0x21ff}};
+
+static const xmlChSRange xmlBasicLatinS[] = {{0x0, 0x7f}};
+
+static const xmlChSRange xmlBengaliS[] = {{0x980, 0x9ff}};
+
+static const xmlChSRange xmlBlockElementsS[] = {{0x2580, 0x259f}};
+
+static const xmlChSRange xmlBopomofoS[] = {{0x3100, 0x312f}};
+
+static const xmlChSRange xmlBopomofoExtendedS[] = {{0x31a0, 0x31bf}};
+
+static const xmlChSRange xmlBoxDrawingS[] = {{0x2500, 0x257f}};
+
+static const xmlChSRange xmlBraillePatternsS[] = {{0x2800, 0x28ff}};
+
+static const xmlChSRange xmlBuhidS[] = {{0x1740, 0x175f}};
+
+static const xmlChLRange xmlByzantineMusicalSymbolsL[] = {{0x1d000, 0x1d0ff}};
+
+static const xmlChSRange xmlCJKCompatibilityS[] = {{0x3300, 0x33ff}};
+
+static const xmlChSRange xmlCJKCompatibilityFormsS[] = {{0xfe30, 0xfe4f}};
+
+static const xmlChSRange xmlCJKCompatibilityIdeographsS[] = {
+    {0xf900, 0xfaff}};
+
+static const xmlChLRange xmlCJKCompatibilityIdeographsSupplementL[] = {
+    {0x2f800, 0x2fa1f}};
+
+static const xmlChSRange xmlCJKRadicalsSupplementS[] = {{0x2e80, 0x2eff}};
+
+static const xmlChSRange xmlCJKSymbolsandPunctuationS[] = {{0x3000, 0x303f}};
+
+static const xmlChSRange xmlCJKUnifiedIdeographsS[] = {{0x4e00, 0x9fff}};
+
+static const xmlChSRange xmlCJKUnifiedIdeographsExtensionAS[] = {
+    {0x3400, 0x4dbf}};
+
+static const xmlChLRange xmlCJKUnifiedIdeographsExtensionBL[] = {
+    {0x20000, 0x2a6df}};
+
+static const xmlChSRange xmlCherokeeS[] = {{0x13a0, 0x13ff}};
+
+static const xmlChSRange xmlCombiningDiacriticalMarksS[] = {{0x300, 0x36f}};
+
+static const xmlChSRange xmlCombiningDiacriticalMarksforSymbolsS[] = {
+    {0x20d0, 0x20ff}};
+
+static const xmlChSRange xmlCombiningHalfMarksS[] = {{0xfe20, 0xfe2f}};
+
+static const xmlChSRange xmlCombiningMarksforSymbolsS[] = {{0x20d0, 0x20ff}};
+
+static const xmlChSRange xmlControlPicturesS[] = {{0x2400, 0x243f}};
+
+static const xmlChSRange xmlCurrencySymbolsS[] = {{0x20a0, 0x20cf}};
+
+static const xmlChLRange xmlCypriotSyllabaryL[] = {{0x10800, 0x1083f}};
+
+static const xmlChSRange xmlCyrillicS[] = {{0x400, 0x4ff}};
+
+static const xmlChSRange xmlCyrillicSupplementS[] = {{0x500, 0x52f}};
+
+static const xmlChLRange xmlDeseretL[] = {{0x10400, 0x1044f}};
+
+static const xmlChSRange xmlDevanagariS[] = {{0x900, 0x97f}};
+
+static const xmlChSRange xmlDingbatsS[] = {{0x2700, 0x27bf}};
+
+static const xmlChSRange xmlEnclosedAlphanumericsS[] = {{0x2460, 0x24ff}};
+
+static const xmlChSRange xmlEnclosedCJKLettersandMonthsS[] = {
+    {0x3200, 0x32ff}};
+
+static const xmlChSRange xmlEthiopicS[] = {{0x1200, 0x137f}};
+
+static const xmlChSRange xmlGeneralPunctuationS[] = {{0x2000, 0x206f}};
+
+static const xmlChSRange xmlGeometricShapesS[] = {{0x25a0, 0x25ff}};
+
+static const xmlChSRange xmlGeorgianS[] = {{0x10a0, 0x10ff}};
+
+static const xmlChLRange xmlGothicL[] = {{0x10330, 0x1034f}};
+
+static const xmlChSRange xmlGreekS[] = {{0x370, 0x3ff}};
+
+static const xmlChSRange xmlGreekExtendedS[] = {{0x1f00, 0x1fff}};
+
+static const xmlChSRange xmlGreekandCopticS[] = {{0x370, 0x3ff}};
+
+static const xmlChSRange xmlGujaratiS[] = {{0xa80, 0xaff}};
+
+static const xmlChSRange xmlGurmukhiS[] = {{0xa00, 0xa7f}};
+
+static const xmlChSRange xmlHalfwidthandFullwidthFormsS[] = {
+    {0xff00, 0xffef}};
+
+static const xmlChSRange xmlHangulCompatibilityJamoS[] = {{0x3130, 0x318f}};
+
+static const xmlChSRange xmlHangulJamoS[] = {{0x1100, 0x11ff}};
+
+static const xmlChSRange xmlHangulSyllablesS[] = {{0xac00, 0xd7af}};
+
+static const xmlChSRange xmlHanunooS[] = {{0x1720, 0x173f}};
+
+static const xmlChSRange xmlHebrewS[] = {{0x590, 0x5ff}};
+
+static const xmlChSRange xmlHighPrivateUseSurrogatesS[] = {{0xdb80, 0xdbff}};
+
+static const xmlChSRange xmlHighSurrogatesS[] = {{0xd800, 0xdb7f}};
+
+static const xmlChSRange xmlHiraganaS[] = {{0x3040, 0x309f}};
+
+static const xmlChSRange xmlIPAExtensionsS[] = {{0x250, 0x2af}};
+
+static const xmlChSRange xmlIdeographicDescriptionCharactersS[] = {
+    {0x2ff0, 0x2fff}};
+
+static const xmlChSRange xmlKanbunS[] = {{0x3190, 0x319f}};
+
+static const xmlChSRange xmlKangxiRadicalsS[] = {{0x2f00, 0x2fdf}};
+
+static const xmlChSRange xmlKannadaS[] = {{0xc80, 0xcff}};
+
+static const xmlChSRange xmlKatakanaS[] = {{0x30a0, 0x30ff}};
+
+static const xmlChSRange xmlKatakanaPhoneticExtensionsS[] = {
+    {0x31f0, 0x31ff}};
+
+static const xmlChSRange xmlKhmerS[] = {{0x1780, 0x17ff}};
+
+static const xmlChSRange xmlKhmerSymbolsS[] = {{0x19e0, 0x19ff}};
+
+static const xmlChSRange xmlLaoS[] = {{0xe80, 0xeff}};
+
+static const xmlChSRange xmlLatin1SupplementS[] = {{0x80, 0xff}};
+
+static const xmlChSRange xmlLatinExtendedAS[] = {{0x100, 0x17f}};
+
+static const xmlChSRange xmlLatinExtendedBS[] = {{0x180, 0x24f}};
+
+static const xmlChSRange xmlLatinExtendedAdditionalS[] = {{0x1e00, 0x1eff}};
+
+static const xmlChSRange xmlLetterlikeSymbolsS[] = {{0x2100, 0x214f}};
+
+static const xmlChSRange xmlLimbuS[] = {{0x1900, 0x194f}};
+
+static const xmlChLRange xmlLinearBIdeogramsL[] = {{0x10080, 0x100ff}};
+
+static const xmlChLRange xmlLinearBSyllabaryL[] = {{0x10000, 0x1007f}};
+
+static const xmlChSRange xmlLowSurrogatesS[] = {{0xdc00, 0xdfff}};
+
+static const xmlChSRange xmlMalayalamS[] = {{0xd00, 0xd7f}};
+
+static const xmlChLRange xmlMathematicalAlphanumericSymbolsL[] = {
+    {0x1d400, 0x1d7ff}};
+
+static const xmlChSRange xmlMathematicalOperatorsS[] = {{0x2200, 0x22ff}};
+
+static const xmlChSRange xmlMiscellaneousMathematicalSymbolsAS[] = {
+    {0x27c0, 0x27ef}};
+
+static const xmlChSRange xmlMiscellaneousMathematicalSymbolsBS[] = {
+    {0x2980, 0x29ff}};
+
+static const xmlChSRange xmlMiscellaneousSymbolsS[] = {{0x2600, 0x26ff}};
+
+static const xmlChSRange xmlMiscellaneousSymbolsandArrowsS[] = {
+    {0x2b00, 0x2bff}};
+
+static const xmlChSRange xmlMiscellaneousTechnicalS[] = {{0x2300, 0x23ff}};
+
+static const xmlChSRange xmlMongolianS[] = {{0x1800, 0x18af}};
+
+static const xmlChLRange xmlMusicalSymbolsL[] = {{0x1d100, 0x1d1ff}};
+
+static const xmlChSRange xmlMyanmarS[] = {{0x1000, 0x109f}};
+
+static const xmlChSRange xmlNumberFormsS[] = {{0x2150, 0x218f}};
+
+static const xmlChSRange xmlOghamS[] = {{0x1680, 0x169f}};
+
+static const xmlChLRange xmlOldItalicL[] = {{0x10300, 0x1032f}};
+
+static const xmlChSRange xmlOpticalCharacterRecognitionS[] = {
+    {0x2440, 0x245f}};
+
+static const xmlChSRange xmlOriyaS[] = {{0xb00, 0xb7f}};
+
+static const xmlChLRange xmlOsmanyaL[] = {{0x10480, 0x104af}};
+
+static const xmlChSRange xmlPhoneticExtensionsS[] = {{0x1d00, 0x1d7f}};
+
+static const xmlChSRange xmlPrivateUseS[] = {{0xe000, 0xf8ff}};
+static const xmlChLRange xmlPrivateUseL[] = {{0xf0000, 0xfffff},
+    {0x100000, 0x10ffff}};
+
+static const xmlChSRange xmlPrivateUseAreaS[] = {{0xe000, 0xf8ff}};
+
+static const xmlChSRange xmlRunicS[] = {{0x16a0, 0x16ff}};
+
+static const xmlChLRange xmlShavianL[] = {{0x10450, 0x1047f}};
+
+static const xmlChSRange xmlSinhalaS[] = {{0xd80, 0xdff}};
+
+static const xmlChSRange xmlSmallFormVariantsS[] = {{0xfe50, 0xfe6f}};
+
+static const xmlChSRange xmlSpacingModifierLettersS[] = {{0x2b0, 0x2ff}};
+
+static const xmlChSRange xmlSpecialsS[] = {{0xfff0, 0xffff}};
+
+static const xmlChSRange xmlSuperscriptsandSubscriptsS[] = {{0x2070, 0x209f}};
+
+static const xmlChSRange xmlSupplementalArrowsAS[] = {{0x27f0, 0x27ff}};
+
+static const xmlChSRange xmlSupplementalArrowsBS[] = {{0x2900, 0x297f}};
+
+static const xmlChSRange xmlSupplementalMathematicalOperatorsS[] = {
+    {0x2a00, 0x2aff}};
+
+static const xmlChLRange xmlSupplementaryPrivateUseAreaAL[] = {
+    {0xf0000, 0xfffff}};
+
+static const xmlChLRange xmlSupplementaryPrivateUseAreaBL[] = {
+    {0x100000, 0x10ffff}};
+
+static const xmlChSRange xmlSyriacS[] = {{0x700, 0x74f}};
+
+static const xmlChSRange xmlTagalogS[] = {{0x1700, 0x171f}};
+
+static const xmlChSRange xmlTagbanwaS[] = {{0x1760, 0x177f}};
+
+static const xmlChLRange xmlTagsL[] = {{0xe0000, 0xe007f}};
+
+static const xmlChSRange xmlTaiLeS[] = {{0x1950, 0x197f}};
+
+static const xmlChLRange xmlTaiXuanJingSymbolsL[] = {{0x1d300, 0x1d35f}};
+
+static const xmlChSRange xmlTamilS[] = {{0xb80, 0xbff}};
+
+static const xmlChSRange xmlTeluguS[] = {{0xc00, 0xc7f}};
+
+static const xmlChSRange xmlThaanaS[] = {{0x780, 0x7bf}};
+
+static const xmlChSRange xmlThaiS[] = {{0xe00, 0xe7f}};
+
+static const xmlChSRange xmlTibetanS[] = {{0xf00, 0xfff}};
+
+static const xmlChLRange xmlUgariticL[] = {{0x10380, 0x1039f}};
+
+static const xmlChSRange xmlUnifiedCanadianAboriginalSyllabicsS[] = {
+    {0x1400, 0x167f}};
+
+static const xmlChSRange xmlVariationSelectorsS[] = {{0xfe00, 0xfe0f}};
+
+static const xmlChLRange xmlVariationSelectorsSupplementL[] = {
+    {0xe0100, 0xe01ef}};
+
+static const xmlChSRange xmlYiRadicalsS[] = {{0xa490, 0xa4cf}};
+
+static const xmlChSRange xmlYiSyllablesS[] = {{0xa000, 0xa48f}};
+
+static const xmlChSRange xmlYijingHexagramSymbolsS[] = {{0x4dc0, 0x4dff}};
+
+static const xmlUnicodeRange xmlUnicodeBlocks[] = {
+  {"AegeanNumbers",
+   {0,1,NULL,xmlAegeanNumbersL}},
+  {"AlphabeticPresentationForms",
+   {1,0,xmlAlphabeticPresentationFormsS,NULL}},
+  {"Arabic",
+   {1,0,xmlArabicS,NULL}},
+  {"ArabicPresentationForms-A",
+   {1,0,xmlArabicPresentationFormsAS,NULL}},
+  {"ArabicPresentationForms-B",
+   {1,0,xmlArabicPresentationFormsBS,NULL}},
+  {"Armenian",
+   {1,0,xmlArmenianS,NULL}},
+  {"Arrows",
+   {1,0,xmlArrowsS,NULL}},
+  {"BasicLatin",
+   {1,0,xmlBasicLatinS,NULL}},
+  {"Bengali",
+   {1,0,xmlBengaliS,NULL}},
+  {"BlockElements",
+   {1,0,xmlBlockElementsS,NULL}},
+  {"Bopomofo",
+   {1,0,xmlBopomofoS,NULL}},
+  {"BopomofoExtended",
+   {1,0,xmlBopomofoExtendedS,NULL}},
+  {"BoxDrawing",
+   {1,0,xmlBoxDrawingS,NULL}},
+  {"BraillePatterns",
+   {1,0,xmlBraillePatternsS,NULL}},
+  {"Buhid",
+   {1,0,xmlBuhidS,NULL}},
+  {"ByzantineMusicalSymbols",
+   {0,1,NULL,xmlByzantineMusicalSymbolsL}},
+  {"CJKCompatibility",
+   {1,0,xmlCJKCompatibilityS,NULL}},
+  {"CJKCompatibilityForms",
+   {1,0,xmlCJKCompatibilityFormsS,NULL}},
+  {"CJKCompatibilityIdeographs",
+   {1,0,xmlCJKCompatibilityIdeographsS,NULL}},
+  {"CJKCompatibilityIdeographsSupplement",
+   {0,1,NULL,xmlCJKCompatibilityIdeographsSupplementL}},
+  {"CJKRadicalsSupplement",
+   {1,0,xmlCJKRadicalsSupplementS,NULL}},
+  {"CJKSymbolsandPunctuation",
+   {1,0,xmlCJKSymbolsandPunctuationS,NULL}},
+  {"CJKUnifiedIdeographs",
+   {1,0,xmlCJKUnifiedIdeographsS,NULL}},
+  {"CJKUnifiedIdeographsExtensionA",
+   {1,0,xmlCJKUnifiedIdeographsExtensionAS,NULL}},
+  {"CJKUnifiedIdeographsExtensionB",
+   {0,1,NULL,xmlCJKUnifiedIdeographsExtensionBL}},
+  {"Cherokee",
+   {1,0,xmlCherokeeS,NULL}},
+  {"CombiningDiacriticalMarks",
+   {1,0,xmlCombiningDiacriticalMarksS,NULL}},
+  {"CombiningDiacriticalMarksforSymbols",
+   {1,0,xmlCombiningDiacriticalMarksforSymbolsS,NULL}},
+  {"CombiningHalfMarks",
+   {1,0,xmlCombiningHalfMarksS,NULL}},
+  {"CombiningMarksforSymbols",
+   {1,0,xmlCombiningMarksforSymbolsS,NULL}},
+  {"ControlPictures",
+   {1,0,xmlControlPicturesS,NULL}},
+  {"CurrencySymbols",
+   {1,0,xmlCurrencySymbolsS,NULL}},
+  {"CypriotSyllabary",
+   {0,1,NULL,xmlCypriotSyllabaryL}},
+  {"Cyrillic",
+   {1,0,xmlCyrillicS,NULL}},
+  {"CyrillicSupplement",
+   {1,0,xmlCyrillicSupplementS,NULL}},
+  {"Deseret",
+   {0,1,NULL,xmlDeseretL}},
+  {"Devanagari",
+   {1,0,xmlDevanagariS,NULL}},
+  {"Dingbats",
+   {1,0,xmlDingbatsS,NULL}},
+  {"EnclosedAlphanumerics",
+   {1,0,xmlEnclosedAlphanumericsS,NULL}},
+  {"EnclosedCJKLettersandMonths",
+   {1,0,xmlEnclosedCJKLettersandMonthsS,NULL}},
+  {"Ethiopic",
+   {1,0,xmlEthiopicS,NULL}},
+  {"GeneralPunctuation",
+   {1,0,xmlGeneralPunctuationS,NULL}},
+  {"GeometricShapes",
+   {1,0,xmlGeometricShapesS,NULL}},
+  {"Georgian",
+   {1,0,xmlGeorgianS,NULL}},
+  {"Gothic",
+   {0,1,NULL,xmlGothicL}},
+  {"Greek",
+   {1,0,xmlGreekS,NULL}},
+  {"GreekExtended",
+   {1,0,xmlGreekExtendedS,NULL}},
+  {"GreekandCoptic",
+   {1,0,xmlGreekandCopticS,NULL}},
+  {"Gujarati",
+   {1,0,xmlGujaratiS,NULL}},
+  {"Gurmukhi",
+   {1,0,xmlGurmukhiS,NULL}},
+  {"HalfwidthandFullwidthForms",
+   {1,0,xmlHalfwidthandFullwidthFormsS,NULL}},
+  {"HangulCompatibilityJamo",
+   {1,0,xmlHangulCompatibilityJamoS,NULL}},
+  {"HangulJamo",
+   {1,0,xmlHangulJamoS,NULL}},
+  {"HangulSyllables",
+   {1,0,xmlHangulSyllablesS,NULL}},
+  {"Hanunoo",
+   {1,0,xmlHanunooS,NULL}},
+  {"Hebrew",
+   {1,0,xmlHebrewS,NULL}},
+  {"HighPrivateUseSurrogates",
+   {1,0,xmlHighPrivateUseSurrogatesS,NULL}},
+  {"HighSurrogates",
+   {1,0,xmlHighSurrogatesS,NULL}},
+  {"Hiragana",
+   {1,0,xmlHiraganaS,NULL}},
+  {"IPAExtensions",
+   {1,0,xmlIPAExtensionsS,NULL}},
+  {"IdeographicDescriptionCharacters",
+   {1,0,xmlIdeographicDescriptionCharactersS,NULL}},
+  {"Kanbun",
+   {1,0,xmlKanbunS,NULL}},
+  {"KangxiRadicals",
+   {1,0,xmlKangxiRadicalsS,NULL}},
+  {"Kannada",
+   {1,0,xmlKannadaS,NULL}},
+  {"Katakana",
+   {1,0,xmlKatakanaS,NULL}},
+  {"KatakanaPhoneticExtensions",
+   {1,0,xmlKatakanaPhoneticExtensionsS,NULL}},
+  {"Khmer",
+   {1,0,xmlKhmerS,NULL}},
+  {"KhmerSymbols",
+   {1,0,xmlKhmerSymbolsS,NULL}},
+  {"Lao",
+   {1,0,xmlLaoS,NULL}},
+  {"Latin-1Supplement",
+   {1,0,xmlLatin1SupplementS,NULL}},
+  {"LatinExtended-A",
+   {1,0,xmlLatinExtendedAS,NULL}},
+  {"LatinExtended-B",
+   {1,0,xmlLatinExtendedBS,NULL}},
+  {"LatinExtendedAdditional",
+   {1,0,xmlLatinExtendedAdditionalS,NULL}},
+  {"LetterlikeSymbols",
+   {1,0,xmlLetterlikeSymbolsS,NULL}},
+  {"Limbu",
+   {1,0,xmlLimbuS,NULL}},
+  {"LinearBIdeograms",
+   {0,1,NULL,xmlLinearBIdeogramsL}},
+  {"LinearBSyllabary",
+   {0,1,NULL,xmlLinearBSyllabaryL}},
+  {"LowSurrogates",
+   {1,0,xmlLowSurrogatesS,NULL}},
+  {"Malayalam",
+   {1,0,xmlMalayalamS,NULL}},
+  {"MathematicalAlphanumericSymbols",
+   {0,1,NULL,xmlMathematicalAlphanumericSymbolsL}},
+  {"MathematicalOperators",
+   {1,0,xmlMathematicalOperatorsS,NULL}},
+  {"MiscellaneousMathematicalSymbols-A",
+   {1,0,xmlMiscellaneousMathematicalSymbolsAS,NULL}},
+  {"MiscellaneousMathematicalSymbols-B",
+   {1,0,xmlMiscellaneousMathematicalSymbolsBS,NULL}},
+  {"MiscellaneousSymbols",
+   {1,0,xmlMiscellaneousSymbolsS,NULL}},
+  {"MiscellaneousSymbolsandArrows",
+   {1,0,xmlMiscellaneousSymbolsandArrowsS,NULL}},
+  {"MiscellaneousTechnical",
+   {1,0,xmlMiscellaneousTechnicalS,NULL}},
+  {"Mongolian",
+   {1,0,xmlMongolianS,NULL}},
+  {"MusicalSymbols",
+   {0,1,NULL,xmlMusicalSymbolsL}},
+  {"Myanmar",
+   {1,0,xmlMyanmarS,NULL}},
+  {"NumberForms",
+   {1,0,xmlNumberFormsS,NULL}},
+  {"Ogham",
+   {1,0,xmlOghamS,NULL}},
+  {"OldItalic",
+   {0,1,NULL,xmlOldItalicL}},
+  {"OpticalCharacterRecognition",
+   {1,0,xmlOpticalCharacterRecognitionS,NULL}},
+  {"Oriya",
+   {1,0,xmlOriyaS,NULL}},
+  {"Osmanya",
+   {0,1,NULL,xmlOsmanyaL}},
+  {"PhoneticExtensions",
+   {1,0,xmlPhoneticExtensionsS,NULL}},
+  {"PrivateUse",
+   {1,2,xmlPrivateUseS,xmlPrivateUseL}},
+  {"PrivateUseArea",
+   {1,0,xmlPrivateUseAreaS,NULL}},
+  {"Runic",
+   {1,0,xmlRunicS,NULL}},
+  {"Shavian",
+   {0,1,NULL,xmlShavianL}},
+  {"Sinhala",
+   {1,0,xmlSinhalaS,NULL}},
+  {"SmallFormVariants",
+   {1,0,xmlSmallFormVariantsS,NULL}},
+  {"SpacingModifierLetters",
+   {1,0,xmlSpacingModifierLettersS,NULL}},
+  {"Specials",
+   {1,0,xmlSpecialsS,NULL}},
+  {"SuperscriptsandSubscripts",
+   {1,0,xmlSuperscriptsandSubscriptsS,NULL}},
+  {"SupplementalArrows-A",
+   {1,0,xmlSupplementalArrowsAS,NULL}},
+  {"SupplementalArrows-B",
+   {1,0,xmlSupplementalArrowsBS,NULL}},
+  {"SupplementalMathematicalOperators",
+   {1,0,xmlSupplementalMathematicalOperatorsS,NULL}},
+  {"SupplementaryPrivateUseArea-A",
+   {0,1,NULL,xmlSupplementaryPrivateUseAreaAL}},
+  {"SupplementaryPrivateUseArea-B",
+   {0,1,NULL,xmlSupplementaryPrivateUseAreaBL}},
+  {"Syriac",
+   {1,0,xmlSyriacS,NULL}},
+  {"Tagalog",
+   {1,0,xmlTagalogS,NULL}},
+  {"Tagbanwa",
+   {1,0,xmlTagbanwaS,NULL}},
+  {"Tags",
+   {0,1,NULL,xmlTagsL}},
+  {"TaiLe",
+   {1,0,xmlTaiLeS,NULL}},
+  {"TaiXuanJingSymbols",
+   {0,1,NULL,xmlTaiXuanJingSymbolsL}},
+  {"Tamil",
+   {1,0,xmlTamilS,NULL}},
+  {"Telugu",
+   {1,0,xmlTeluguS,NULL}},
+  {"Thaana",
+   {1,0,xmlThaanaS,NULL}},
+  {"Thai",
+   {1,0,xmlThaiS,NULL}},
+  {"Tibetan",
+   {1,0,xmlTibetanS,NULL}},
+  {"Ugaritic",
+   {0,1,NULL,xmlUgariticL}},
+  {"UnifiedCanadianAboriginalSyllabics",
+   {1,0,xmlUnifiedCanadianAboriginalSyllabicsS,NULL}},
+  {"VariationSelectors",
+   {1,0,xmlVariationSelectorsS,NULL}},
+  {"VariationSelectorsSupplement",
+   {0,1,NULL,xmlVariationSelectorsSupplementL}},
+  {"YiRadicals",
+   {1,0,xmlYiRadicalsS,NULL}},
+  {"YiSyllables",
+   {1,0,xmlYiSyllablesS,NULL}},
+  {"YijingHexagramSymbols",
+   {1,0,xmlYijingHexagramSymbolsS,NULL}}
+};
+
diff -pruN 2.14.6+dfsg-0.1/codegen/xmlmod.py 2.15.0+dfsg-0.3/codegen/xmlmod.py
--- 2.14.6+dfsg-0.1/codegen/xmlmod.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/codegen/xmlmod.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,146 @@
+# Symbol to module mapping
+#
+# This relies on a few tables and some regexes.
+
+import re
+
+moduleMap = {
+    'HTMLtree': 'HTML',
+    'HTMLparser': 'HTML',
+    'c14n': 'C14N',
+    'catalog': 'CATALOG',
+    'debugXML': 'DEBUG',
+    'nanohttp': 'HTTP',
+    'pattern': 'PATTERN',
+    'relaxng': 'RELAXNG',
+    'schemasInternals': 'SCHEMAS',
+    'schematron': 'SCHEMATRON',
+    'xinclude': 'XINCLUDE',
+    'xlink': 'XPTR',
+    'xmlautomata': 'REGEXP',
+    'xmlmodule': 'MODULES',
+    'xmlreader': 'READER',
+    'xmlregexp': 'REGEXP',
+    'xmlsave': 'OUTPUT',
+    'xmlschemas': 'SCHEMAS',
+    'xmlschemastypes': 'SCHEMAS',
+    'xmlwriter': 'WRITER',
+    'xpath': 'XPATH',
+    'xpathInternals': 'XPATH',
+    'xpointer': 'XPTR',
+}
+
+symbolMap1 = {
+    # not VALID
+    'xmlValidateNCName': '',
+    'xmlValidateNMToken': '',
+    'xmlValidateName': '',
+    'xmlValidateQName': '',
+
+    'htmlDefaultSAXHandlerInit': 'HTML',
+    'xmlSAX2InitHtmlDefaultSAXHandler': 'HTML',
+
+    'xmlRegisterHTTPPostCallbacks': 'HTTP',
+
+    '__xmlOutputBufferCreateFilename': 'OUTPUT',
+    'xmlAttrSerializeTxtContent': 'OUTPUT',
+    'xmlUTF8ToIsolat1': 'OUTPUT',
+    'xmlSprintfElementContent': 'OUTPUT',
+
+    'xmlCreatePushParserCtxt': 'PUSH',
+    'xmlParseChunk': 'PUSH',
+
+    'xmlParseBalancedChunkMemory': 'SAX1',
+    'xmlParseBalancedChunkMemoryRecover': 'SAX1',
+    'xmlParseDoc': 'SAX1',
+    'xmlParseEntity': 'SAX1',
+    'xmlParseExternalEntity': 'SAX1',
+    'xmlParseFile': 'SAX1',
+    'xmlParseMemory': 'SAX1',
+    'xmlSAXDefaultVersion': 'SAX1',
+    'xmlSetupParserForBuffer': 'SAX1',
+
+    'xmlCtxtGetValidCtxt': 'VALID',
+    'xmlFreeValidCtxt': 'VALID',
+    'xmlNewValidCtxt': 'VALID',
+
+    'xmlCatalogConvert': 'SGML_CATALOG',
+    'xmlConvertSGMLCatalog': 'SGML_CATALOG',
+    'xmlLoadSGMLSuperCatalog': 'SGML_CATALOG',
+}
+
+symbolMap2 = {
+    # not OUTPUT (should be fixed in xmlIO.h)
+    'xmlOutputBufferCreateFilenameDefault': '',
+
+    'xmlXPathDebugDumpCompExpr': 'DEBUG',
+    'xmlXPathDebugDumpObject': 'DEBUG',
+    'xmlSchemaDump': 'DEBUG',
+    'xmlRelaxNGDump': 'DEBUG',
+
+    'xmlACatalogDump': 'OUTPUT',
+    'xmlCatalogDump': 'OUTPUT',
+    'xmlIOHTTPOpenW': 'OUTPUT',
+    'xmlNanoHTTPSave': 'OUTPUT',
+    'xmlRegisterHTTPPostCallbacks': 'OUTPUT',
+    'xmlRelaxNGDumpTree': 'OUTPUT',
+
+    'xmlTextReaderPreservePattern': 'PATTERN',
+
+    'htmlCreatePushParserCtxt': 'PUSH',
+    'htmlParseChunk': 'PUSH',
+
+    'xmlValidBuildContentModel': 'REGEXP',
+    'xmlValidatePopElement': 'REGEXP',
+    'xmlValidatePushCData': 'REGEXP',
+    'xmlValidatePushElement': 'REGEXP',
+
+    'xmlTextReaderRelaxNGSetSchema': 'RELAXNG',
+    'xmlTextReaderRelaxNGValidate': 'RELAXNG',
+    'xmlTextReaderRelaxNGValidateCtxt': 'RELAXNG',
+
+    'xmlTextReaderSchemaValidate': 'SCHEMAS',
+    'xmlTextReaderSchemaValidateCtxt': 'SCHEMAS',
+    'xmlTextReaderSetSchema': 'SCHEMAS',
+
+    'xmlTextReaderReadInnerXml': 'WRITER',
+    'xmlTextReaderReadOuterXml': 'WRITER',
+}
+
+outputRegex = '|'.join((
+    '^(html|xml(Buf)?)(Doc(Content|Format)?|Elem|Node)Dump',
+    '^(html|xml)Save(Format)?File',
+    '^xmlDump.*(Decl|Table)',
+    '^xml(Alloc)?OutputBuffer',
+    '^xml.*OutputCallbacks',
+))
+
+def findModules(filename, symbol):
+    module1 = symbolMap1.get(symbol)
+
+    if module1 is None:
+        module1 = moduleMap.get(filename)
+
+    if module1 is None:
+        if re.search('^xml(Ctxt)?Valid|Parse(DTD|Dtd)', symbol):
+            module1 = 'VALID'
+        elif re.search('^xml(Recover|SAX(User)?Parse)', symbol):
+            module1 = 'SAX1'
+        elif re.search('^xmlIOHTTP', symbol):
+            module1 = 'HTTP'
+
+    module2 = symbolMap2.get(symbol)
+
+    if module2 is None:
+        if re.search(outputRegex, symbol):
+            if module1 is None:
+                module1 = 'OUTPUT'
+            else:
+                module2 = 'OUTPUT'
+
+    if module1 is None:
+        module1 = ''
+    if module2 is None:
+        module2 = ''
+
+    return module1, module2
diff -pruN 2.14.6+dfsg-0.1/config.h.cmake.in 2.15.0+dfsg-0.3/config.h.cmake.in
--- 2.14.6+dfsg-0.1/config.h.cmake.in	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/config.h.cmake.in	2025-09-15 11:55:59.000000000 +0000
@@ -22,9 +22,6 @@
 /* Define if readline library is there (-lreadline) */
 #cmakedefine HAVE_LIBREADLINE 1
 
-/* Define to 1 if you have the <poll.h> header file. */
-#cmakedefine HAVE_POLL_H 1
-
 /* Have shl_load based dso */
 #cmakedefine HAVE_SHLLOAD 1
 
diff -pruN 2.14.6+dfsg-0.1/config.h.in 2.15.0+dfsg-0.3/config.h.in
--- 2.14.6+dfsg-0.1/config.h.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/config.h.in	2025-09-15 11:56:02.000000000 +0000
@@ -30,12 +30,6 @@
 /* Define if readline library is available */
 #undef HAVE_LIBREADLINE
 
-/* Define to 1 if you have the <lzma.h> header file. */
-#undef HAVE_LZMA_H
-
-/* Define to 1 if you have the <poll.h> header file. */
-#undef HAVE_POLL_H
-
 /* Define to 1 if you have the <pthread.h> header file. */
 #undef HAVE_PTHREAD_H
 
diff -pruN 2.14.6+dfsg-0.1/configure 2.15.0+dfsg-0.3/configure
--- 2.14.6+dfsg-0.1/configure	2025-09-08 14:35:33.000000000 +0000
+++ 2.15.0+dfsg-0.3/configure	2025-09-15 11:56:02.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libxml2 2.14.6.
+# Generated by GNU Autoconf 2.71 for libxml2 2.15.0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libxml2'
 PACKAGE_TARNAME='libxml2'
-PACKAGE_VERSION='2.14.6'
-PACKAGE_STRING='libxml2 2.14.6'
+PACKAGE_VERSION='2.15.0'
+PACKAGE_STRING='libxml2 2.15.0'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -685,11 +685,6 @@ ICU_LIBS
 ICU_CFLAGS
 ICONV_CFLAGS
 WITH_ICONV
-WITH_LZMA_SOURCES_FALSE
-WITH_LZMA_SOURCES_TRUE
-WITH_LZMA
-LZMA_LIBS
-LZMA_CFLAGS
 WITH_ZLIB
 Z_LIBS
 Z_CFLAGS
@@ -705,6 +700,9 @@ WITH_MODULES_SOURCES_TRUE
 MODULE_EXTENSION
 WITH_MODULES
 PYTHON_LDFLAGS
+WITH_DOXYGEN_FALSE
+WITH_DOXYGEN_TRUE
+DOXYGEN
 WITH_PYTHON_FALSE
 WITH_PYTHON_TRUE
 PYTHON_LIBS
@@ -718,6 +716,9 @@ PYTHON_PREFIX
 PYTHON_PLATFORM
 PYTHON_VERSION
 PYTHON
+WITH_DOCS_FALSE
+WITH_DOCS_TRUE
+XSLTPROC
 WITH_DEBUG_SOURCES_FALSE
 WITH_DEBUG_SOURCES_TRUE
 WITH_DEBUG
@@ -802,9 +803,6 @@ LIBTOOL
 PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
-XSLTPROC
-WGET
-TAR
 LN_S
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
@@ -927,6 +925,7 @@ enable_libtool_lock
 with_c14n
 with_catalog
 with_debug
+with_docs
 with_history
 with_readline
 with_html
@@ -934,7 +933,6 @@ with_http
 with_iconv
 with_icu
 with_iso8859x
-with_lzma
 with_modules
 with_output
 with_pattern
@@ -982,8 +980,6 @@ HISTORY_CFLAGS
 HISTORY_LIBS
 Z_CFLAGS
 Z_LIBS
-LZMA_CFLAGS
-LZMA_LIBS
 ICU_CFLAGS
 ICU_LIBS
 ICU_DEFS'
@@ -1535,7 +1531,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libxml2 2.14.6 to adapt to many kinds of systems.
+\`configure' configures libxml2 2.15.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1606,7 +1602,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libxml2 2.14.6:";;
+     short | recursive ) echo "Configuration of libxml2 2.15.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1643,14 +1639,14 @@ Optional Packages:
   --with-c14n             Canonical XML 1.0 support (on)
   --with-catalog          XML Catalogs support (on)
   --with-debug            debugging module (on)
+  --with-docs             Build documentation (off)
   --with-history          history support for xmllint shell (off)
   --with-readline[=DIR]   use readline in DIR for shell (off)
   --with-html             HTML parser (on)
-  --with-http             HTTP support (off)
+  --with-http             ABI compatibility for removed HTTP support (off)
   --with-iconv[=DIR]      iconv support (on)
   --with-icu              ICU support (off)
   --with-iso8859x         ISO-8859-X support if no iconv (on)
-  --with-lzma[=DIR]       use liblzma in DIR (off)
   --with-modules          dynamic modules support (on)
   --with-output           serialization support (on)
   --with-pattern          xmlPattern selection interface (on)
@@ -1661,7 +1657,7 @@ Optional Packages:
   --with-relaxng          RELAX NG support (on)
   --with-sax1             older SAX1 interface (on)
   --with-schemas          XML Schemas 1.0 support (on)
-  --with-schematron       Schematron support (on)
+  --with-schematron       Schematron support (off)
   --with-threads          multithreading support (on)
   --with-thread-alloc     per-thread malloc hooks (off)
   --with-valid            DTD validation support (on)
@@ -1706,8 +1702,6 @@ Some influential environment variables:
               linker flags for HISTORY, overriding pkg-config
   Z_CFLAGS    C compiler flags for Z, overriding pkg-config
   Z_LIBS      linker flags for Z, overriding pkg-config
-  LZMA_CFLAGS C compiler flags for LZMA, overriding pkg-config
-  LZMA_LIBS   linker flags for LZMA, overriding pkg-config
   ICU_CFLAGS  C compiler flags for ICU, overriding pkg-config
   ICU_LIBS    linker flags for ICU, overriding pkg-config
   ICU_DEFS    value of DEFS for icu-uc, overriding pkg-config
@@ -1779,7 +1773,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libxml2 configure 2.14.6
+libxml2 configure 2.15.0
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2049,7 +2043,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libxml2 $as_me 2.14.6, which was
+It was created by libxml2 $as_me 2.15.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -2886,7 +2880,7 @@ case $host_os in *\ *) host_os=`echo "$h
 
 
 
-LIBXML_VERSION=2.14.6
+LIBXML_VERSION=2.15.0
 LIBXML_MAJOR_VERSION=`echo $LIBXML_VERSION | cut -d . -f 1`
 LIBXML_MINOR_VERSION=`echo $LIBXML_VERSION | cut -d . -f 2`
 LIBXML_MICRO_VERSION=`echo $LIBXML_VERSION | cut -d . -f 3`
@@ -2896,6 +2890,9 @@ LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_MINOR_COMPAT=14
 LIBXML_CURRENT=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`
 LIBXML_AGE=`expr $LIBXML_MINOR_VERSION - $LIBXML_MINOR_COMPAT`
+# At least on Linux, libtool will set SOVERSION to (CURRENT - AGE)
+# which equals (MAJOR + MINOR_COMPAT). The other build systems must
+# emulate this behavior.
 LIBXML_VERSION_INFO=$LIBXML_CURRENT:$LIBXML_MICRO_VERSION:$LIBXML_AGE
 
 LIBXML_VERSION_NUMBER=`expr $LIBXML_MAJOR_VERSION \* 10000 + $LIBXML_MINOR_VERSION \* 100 + $LIBXML_MICRO_VERSION`
@@ -3430,7 +3427,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libxml2'
- VERSION='2.14.6'
+ VERSION='2.15.0'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -4861,144 +4858,6 @@ printf "%s\n" "no, using $LN_S" >&6; }
 fi
 
 
-# Extract the first word of "tar", so it can be a program name with args.
-set dummy tar; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_path_TAR+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  case $TAR in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
-    ac_cv_path_TAR="$as_dir$ac_word$ac_exec_ext"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_TAR" && ac_cv_path_TAR="/bin/tar"
-  ;;
-esac
-fi
-TAR=$ac_cv_path_TAR
-if test -n "$TAR"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5
-printf "%s\n" "$TAR" >&6; }
-else
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
-
-# Extract the first word of "wget", so it can be a program name with args.
-set dummy wget; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_path_WGET+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  case $WGET in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_WGET="$WGET" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
-    ac_cv_path_WGET="$as_dir$ac_word$ac_exec_ext"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_WGET" && ac_cv_path_WGET="/usr/bin/wget"
-  ;;
-esac
-fi
-WGET=$ac_cv_path_WGET
-if test -n "$WGET"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WGET" >&5
-printf "%s\n" "$WGET" >&6; }
-else
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
-
-# Extract the first word of "xsltproc", so it can be a program name with args.
-set dummy xsltproc; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_path_XSLTPROC+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  case $XSLTPROC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
-    ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_path_XSLTPROC" && ac_cv_path_XSLTPROC="/usr/bin/xsltproc"
-  ;;
-esac
-fi
-XSLTPROC=$ac_cv_path_XSLTPROC
-if test -n "$XSLTPROC"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
-printf "%s\n" "$XSLTPROC" >&6; }
-else
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
-
 
 
 
@@ -13385,6 +13244,13 @@ then :
 fi
 
 
+# Check whether --with-docs was given.
+if test ${with_docs+y}
+then :
+  withval=$with_docs;
+fi
+
+
 # Check whether --with-history was given.
 if test ${with_history+y}
 then :
@@ -13434,13 +13300,6 @@ then :
 fi
 
 
-# Check whether --with-lzma was given.
-if test ${with_lzma+y}
-then :
-  withval=$with_lzma;
-fi
-
-
 # Check whether --with-modules was given.
 if test ${with_modules+y}
 then :
@@ -13598,6 +13457,9 @@ fi
 
 
 if test "$with_legacy" = "yes"; then
+    if test "$with_schematron" = ""; then
+        with_schematron=yes
+    fi
     if test "$with_zlib" = ""; then
         with_zlib=yes
     fi
@@ -13685,7 +13547,6 @@ if test "$with_minimum" = "yes"; then
     test "$with_http" = "" && with_http=no
     test "$with_iconv" = "" && with_iconv=no
     test "$with_iso8859x" = "" && with_iso8859x=no
-    test "$with_lzma" = "" && with_lzma=no
     test "$with_output" = "" && with_output=no
     test "$with_pattern" = "" && with_pattern=no
     test "$with_push" = "" && with_push=no
@@ -13925,157 +13786,6 @@ else
 fi
 
 
-if test "$with_http" = "yes"; then
-    ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default"
-if test "x$ac_cv_header_poll_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h
-
-fi
-
-
-    case "$host" in
-        *-*-mingw*)
-                                    NET_LIBS="$NET_LIBS -lws2_32"
-            ;;
-        *)
-            _libs=$LIBS
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
-printf %s "checking for library containing gethostbyname... " >&6; }
-if test ${ac_cv_search_gethostbyname+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
-int
-main (void)
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' nsl
-do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib $NET_LIBS $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_search_gethostbyname=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext
-  if test ${ac_cv_search_gethostbyname+y}
-then :
-  break
-fi
-done
-if test ${ac_cv_search_gethostbyname+y}
-then :
-
-else $as_nop
-  ac_cv_search_gethostbyname=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
-printf "%s\n" "$ac_cv_search_gethostbyname" >&6; }
-ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no
-then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-                if test "$ac_cv_search_gethostbyname" != "none required"; then
-                    NET_LIBS="$NET_LIBS $ac_cv_search_gethostbyname"
-                fi
-else $as_nop
-  :
-fi
-
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing connect" >&5
-printf %s "checking for library containing connect... " >&6; }
-if test ${ac_cv_search_connect+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char connect ();
-int
-main (void)
-{
-return connect ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' bsd socket inet
-do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib $NET_LIBS $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_search_connect=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext
-  if test ${ac_cv_search_connect+y}
-then :
-  break
-fi
-done
-if test ${ac_cv_search_connect+y}
-then :
-
-else $as_nop
-  ac_cv_search_connect=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_connect" >&5
-printf "%s\n" "$ac_cv_search_connect" >&6; }
-ac_res=$ac_cv_search_connect
-if test "$ac_res" != no
-then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-                if test "$ac_cv_search_connect" != "none required"; then
-                    NET_LIBS="$NET_LIBS $ac_cv_search_connect"
-                fi
-else $as_nop
-  :
-fi
-
-            LIBS=$_libs
-            ;;
-    esac
-
-    XML_PRIVATE_LIBS="${XML_PRIVATE_LIBS} ${NET_LIBS}"
-    XML_PC_LIBS="${XML_PC_LIBS} ${NET_LIBS}"
-fi
-
 if test "$with_tls" = "yes"; then
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -14174,7 +13884,7 @@ esac
 if test "$with_http" != "yes" ; then
     WITH_HTTP=0
 else
-    echo Enabling HTTP support
+    echo Enabling ABI compatibility stubs for removed HTTP support
     WITH_HTTP=1
 fi
 
@@ -14355,11 +14065,11 @@ else
 fi
 
 
-if test "$with_schematron" = "no" ; then
-    echo "Disabling Schematron support"
-    WITH_SCHEMATRON=0
-else
+if test "$with_schematron" = "yes" ; then
+    echo "Enabling Schematron support"
     WITH_SCHEMATRON=1
+else
+    WITH_SCHEMATRON=0
 fi
 
  if test "$WITH_SCHEMATRON" = "1"; then
@@ -14475,8 +14185,72 @@ else
 fi
 
 
+if test "$with_docs" = "yes" ; then
+    echo Enabling documentation
+    # Extract the first word of "xsltproc", so it can be a program name with args.
+set dummy xsltproc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_XSLTPROC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $XSLTPROC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_XSLTPROC="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-if test "x$with_python" != "xno"
+  test -z "$ac_cv_path_XSLTPROC" && ac_cv_path_XSLTPROC="no"
+  ;;
+esac
+fi
+XSLTPROC=$ac_cv_path_XSLTPROC
+if test -n "$XSLTPROC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5
+printf "%s\n" "$XSLTPROC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+    if test "$XSLTPROC" = "no"; then
+        as_fn_error $? "cannot find xsltproc" "$LINENO" 5
+    fi
+    WITH_DOCS=1
+else
+    WITH_DOCS=0
+fi
+ if test "$WITH_DOCS" = "1"; then
+  WITH_DOCS_TRUE=
+  WITH_DOCS_FALSE='#'
+else
+  WITH_DOCS_TRUE='#'
+  WITH_DOCS_FALSE=
+fi
+
+
+
+if test "x$with_python" = "xyes"
 then :
 
 
@@ -14925,7 +14699,7 @@ printf "%s\n" "yes" >&6; }
 fi
 
 fi
- if test "x$with_python" != "xno"; then
+ if test "x$with_python" = "xyes"; then
   WITH_PYTHON_TRUE=
   WITH_PYTHON_FALSE='#'
 else
@@ -14934,16 +14708,77 @@ else
 fi
 
 
+
+if test "$with_python" = "yes" || test "$with_docs" = "yes"; then
+    # Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_DOXYGEN+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_DOXYGEN="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_DOXYGEN" && ac_cv_path_DOXYGEN="no"
+  ;;
+esac
+fi
+DOXYGEN=$ac_cv_path_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+printf "%s\n" "$DOXYGEN" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+    if test "$DOXYGEN" = "no"; then
+        as_fn_error $? "cannot find doxygen" "$LINENO" 5
+    fi
+    WITH_DOXYGEN=1
+fi
+ if test "$WITH_DOXYGEN" = "1"; then
+  WITH_DOXYGEN_TRUE=
+  WITH_DOXYGEN_FALSE='#'
+else
+  WITH_DOXYGEN_TRUE='#'
+  WITH_DOXYGEN_FALSE=
+fi
+
+
 PYTHON_LDFLAGS=
 if test "${PYTHON}" != ""; then
     case "$host" in
-        *-*-mingw* )
-            PYTHON_LDFLAGS="-no-undefined -shrext .pyd"
-            ;;
-        *-*-cygwin* |*-*-msys* )
+        *-*-cygwin* | *-*-mingw* | *-*-msys* )
             PYTHON_LDFLAGS="-no-undefined"
             ;;
     esac
+    ext_suffix=`$PYTHON -c 'import sysconfig; print(sysconfig.get_config_var("EXT_SUFFIX") or sysconfig.get_config_var("SO"))'`
+    PYTHON_LDFLAGS="$PYTHON_LDFLAGS -shrext $ext_suffix"
 fi
 
 
@@ -15704,180 +15539,6 @@ done
 fi
 
 
-WITH_LZMA=0
-
-if test "$with_lzma" != "no" && test "$with_lzma" != ""; then
-    echo "Enabling lzma compression support"
-
-    if test "$with_lzma" != "yes"; then
-        LZMA_DIR=$with_lzma
-    fi
-
-    # Don't run pkg-config if with_lzma contains a path.
-    if test "x$LZMA_DIR" = "x"; then
-        # Try pkg-config first so that static linking works.
-
-pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for liblzma" >&5
-printf %s "checking for liblzma... " >&6; }
-
-if test -n "$LZMA_CFLAGS"; then
-    pkg_cv_LZMA_CFLAGS="$LZMA_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_LZMA_CFLAGS=`$PKG_CONFIG --cflags "liblzma" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$LZMA_LIBS"; then
-    pkg_cv_LZMA_LIBS="$LZMA_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"liblzma\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "liblzma") 2>&5
-  ac_status=$?
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_LZMA_LIBS=`$PKG_CONFIG --libs "liblzma" 2>/dev/null`
-		      test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-                LZMA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "liblzma" 2>&1`
-        else
-                LZMA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "liblzma" 2>&1`
-        fi
-        # Put the nasty error message in config.log where it belongs
-        echo "$LZMA_PKG_ERRORS" >&5
-
-        :
-elif test $pkg_failed = untried; then
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-        :
-else
-        LZMA_CFLAGS=$pkg_cv_LZMA_CFLAGS
-        LZMA_LIBS=$pkg_cv_LZMA_LIBS
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-        WITH_LZMA=1; XML_PC_REQUIRES="${XML_PC_REQUIRES} liblzma"
-fi
-    fi
-
-    # If pkg-config failed, fall back to AC_CHECK_LIB. This
-    # will not pick up the necessary LIBS flags for liblzma's
-    # private dependencies, though, so static linking may fail.
-    if test "$WITH_LZMA" = "0"; then
-        _cppflags=$CPPFLAGS
-        _libs=$LIBS
-        if test "x$LZMA_DIR" != "x"; then
-            CPPFLAGS="${CPPFLAGS} -I$LZMA_DIR/include"
-            LIBS="${LIBS} -L$LZMA_DIR/lib"
-        fi
-               for ac_header in lzma.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
-if test "x$ac_cv_header_lzma_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_LZMA_H 1" >>confdefs.h
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lzma_code in -llzma" >&5
-printf %s "checking for lzma_code in -llzma... " >&6; }
-if test ${ac_cv_lib_lzma_lzma_code+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-llzma  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char lzma_code ();
-int
-main (void)
-{
-return lzma_code ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_lib_lzma_lzma_code=yes
-else $as_nop
-  ac_cv_lib_lzma_lzma_code=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_code" >&5
-printf "%s\n" "$ac_cv_lib_lzma_lzma_code" >&6; }
-if test "x$ac_cv_lib_lzma_lzma_code" = xyes
-then :
-
-                WITH_LZMA=1
-                if test "x${LZMA_DIR}" != "x"; then
-                    LZMA_CFLAGS="-I${LZMA_DIR}/include"
-                    LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
-                else
-                    LZMA_LIBS="-llzma"
-                fi
-fi
-
-                XML_PC_LIBS="${XML_PC_LIBS} ${LZMA_LIBS}"
-
-fi
-
-done
-        CPPFLAGS=$_cppflags
-        LIBS=$_libs
-    fi
-
-    if test "$WITH_LZMA" = "0"; then
-        as_fn_error $? "liblzma not found" "$LINENO" 5
-    fi
-
-    XML_PRIVATE_CFLAGS="${XML_PRIVATE_CFLAGS} ${LZMA_CFLAGS}"
-    XML_PRIVATE_LIBS="${XML_PRIVATE_LIBS} ${LZMA_LIBS}"
-fi
-
- if test "$WITH_LZMA" = "1"; then
-  WITH_LZMA_SOURCES_TRUE=
-  WITH_LZMA_SOURCES_FALSE='#'
-else
-  WITH_LZMA_SOURCES_TRUE='#'
-  WITH_LZMA_SOURCES_FALSE=
-fi
-
-
 WITH_ICONV=0
 
 if test "$with_iconv" = "no" ; then
@@ -16258,7 +15919,7 @@ printf "%s\n" "#define XML_SYSCONFDIR \"
 
 
 # keep on one line for cygwin c.f. #130896
-ac_config_files="$ac_config_files Makefile include/Makefile include/libxml/Makefile include/private/Makefile doc/Makefile doc/devhelp/Makefile example/Makefile fuzz/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml2-config.cmake"
+ac_config_files="$ac_config_files Makefile include/Makefile include/libxml/Makefile include/private/Makefile doc/Makefile example/Makefile fuzz/Makefile python/Makefile python/tests/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml2-config.cmake"
 
 ac_config_files="$ac_config_files python/setup.py"
 
@@ -16477,16 +16138,20 @@ if test -z "${WITH_DEBUG_SOURCES_TRUE}"
   as_fn_error $? "conditional \"WITH_DEBUG_SOURCES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${WITH_DOCS_TRUE}" && test -z "${WITH_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
   as_fn_error $? "conditional \"WITH_PYTHON\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${WITH_MODULES_SOURCES_TRUE}" && test -z "${WITH_MODULES_SOURCES_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_MODULES_SOURCES\" was never defined.
+if test -z "${WITH_DOXYGEN_TRUE}" && test -z "${WITH_DOXYGEN_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_DOXYGEN\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${WITH_LZMA_SOURCES_TRUE}" && test -z "${WITH_LZMA_SOURCES_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_LZMA_SOURCES\" was never defined.
+if test -z "${WITH_MODULES_SOURCES_TRUE}" && test -z "${WITH_MODULES_SOURCES_FALSE}"; then
+  as_fn_error $? "conditional \"WITH_MODULES_SOURCES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
@@ -16879,7 +16544,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libxml2 $as_me 2.14.6, which was
+This file was extended by libxml2 $as_me 2.15.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16947,7 +16612,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-libxml2 config.status 2.14.6
+libxml2 config.status 2.15.0
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
@@ -17369,12 +17034,10 @@ do
     "include/libxml/Makefile") CONFIG_FILES="$CONFIG_FILES include/libxml/Makefile" ;;
     "include/private/Makefile") CONFIG_FILES="$CONFIG_FILES include/private/Makefile" ;;
     "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "doc/devhelp/Makefile") CONFIG_FILES="$CONFIG_FILES doc/devhelp/Makefile" ;;
     "example/Makefile") CONFIG_FILES="$CONFIG_FILES example/Makefile" ;;
     "fuzz/Makefile") CONFIG_FILES="$CONFIG_FILES fuzz/Makefile" ;;
     "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
     "python/tests/Makefile") CONFIG_FILES="$CONFIG_FILES python/tests/Makefile" ;;
-    "xstc/Makefile") CONFIG_FILES="$CONFIG_FILES xstc/Makefile" ;;
     "include/libxml/xmlversion.h") CONFIG_FILES="$CONFIG_FILES include/libxml/xmlversion.h" ;;
     "libxml-2.0.pc") CONFIG_FILES="$CONFIG_FILES libxml-2.0.pc" ;;
     "libxml2-config.cmake") CONFIG_FILES="$CONFIG_FILES libxml2-config.cmake" ;;
diff -pruN 2.14.6+dfsg-0.1/configure.ac 2.15.0+dfsg-0.3/configure.ac
--- 2.14.6+dfsg-0.1/configure.ac	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/configure.ac	2025-09-15 11:55:59.000000000 +0000
@@ -20,6 +20,9 @@ LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_MINOR_COMPAT=14
 LIBXML_CURRENT=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`
 LIBXML_AGE=`expr $LIBXML_MINOR_VERSION - $LIBXML_MINOR_COMPAT`
+# At least on Linux, libtool will set SOVERSION to (CURRENT - AGE)
+# which equals (MAJOR + MINOR_COMPAT). The other build systems must
+# emulate this behavior.
 LIBXML_VERSION_INFO=$LIBXML_CURRENT:$LIBXML_MICRO_VERSION:$LIBXML_AGE
 
 LIBXML_VERSION_NUMBER=`expr $LIBXML_MAJOR_VERSION \* 10000 + $LIBXML_MINOR_VERSION \* 100 + $LIBXML_MICRO_VERSION`
@@ -50,9 +53,6 @@ AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_LN_S
 AC_PROG_MKDIR_P
-AC_PATH_PROG(TAR, tar, /bin/tar)
-AC_PATH_PROG(WGET, wget, /usr/bin/wget)
-AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
 PKG_PROG_PKG_CONFIG
 
 LT_INIT([disable-static])
@@ -70,6 +70,8 @@ AC_ARG_WITH(catalog,
 [  --with-catalog          XML Catalogs support (on)])
 AC_ARG_WITH(debug,
 [  --with-debug            debugging module (on)])
+AC_ARG_WITH(docs,
+[  --with-docs             Build documentation (off)])
 AC_ARG_WITH(history,
 [  --with-history          history support for xmllint shell (off)])
 AC_ARG_WITH(readline,
@@ -77,15 +79,13 @@ AC_ARG_WITH(readline,
 AC_ARG_WITH(html,
 [  --with-html             HTML parser (on)])
 AC_ARG_WITH(http,
-[  --with-http             HTTP support (off)])
+[  --with-http             ABI compatibility for removed HTTP support (off)])
 AC_ARG_WITH(iconv,
 [  --with-iconv[[=DIR]]      iconv support (on)])
 AC_ARG_WITH(icu,
 [  --with-icu              ICU support (off)])
 AC_ARG_WITH(iso8859x,
 [  --with-iso8859x         ISO-8859-X support if no iconv (on)])
-AC_ARG_WITH(lzma,
-[  --with-lzma[[=DIR]]       use liblzma in DIR (off)])
 AC_ARG_WITH(modules,
 [  --with-modules          dynamic modules support (on)])
 AC_ARG_WITH(output,
@@ -107,7 +107,7 @@ AC_ARG_WITH(sax1,
 AC_ARG_WITH(schemas,
 [  --with-schemas          XML Schemas 1.0 support (on)])
 AC_ARG_WITH(schematron,
-[  --with-schematron       Schematron support (on)])
+[  --with-schematron       Schematron support (off)])
 AC_ARG_WITH(threads,
 [  --with-threads          multithreading support (on)])
 AC_ARG_WITH(thread-alloc,
@@ -137,6 +137,9 @@ dnl
 dnl Legacy defaults
 dnl
 if test "$with_legacy" = "yes"; then
+    if test "$with_schematron" = ""; then
+        with_schematron=yes
+    fi
     if test "$with_zlib" = ""; then
         with_zlib=yes
     fi
@@ -230,7 +233,6 @@ if test "$with_minimum" = "yes"; then
     test "$with_http" = "" && with_http=no
     test "$with_iconv" = "" && with_iconv=no
     test "$with_iso8859x" = "" && with_iso8859x=no
-    test "$with_lzma" = "" && with_lzma=no
     test "$with_output" = "" && with_output=no
     test "$with_pattern" = "" && with_pattern=no
     test "$with_push" = "" && with_push=no
@@ -309,36 +311,6 @@ AC_CHECK_DECLS([mmap], [], [], [#include
 
 AM_CONDITIONAL(WITH_GLOB, test "$ac_cv_have_decl_glob" = "yes")
 
-dnl
-dnl Checks for inet libraries
-dnl
-if test "$with_http" = "yes"; then
-    AC_CHECK_HEADERS([poll.h])
-
-    case "$host" in
-        *-*-mingw*)
-            dnl AC_SEARCH_LIBS doesn't work because of non-standard calling
-            dnl conventions on 32-bit Windows.
-            NET_LIBS="$NET_LIBS -lws2_32"
-            ;;
-        *)
-            _libs=$LIBS
-            AC_SEARCH_LIBS(gethostbyname, [nsl], [
-                if test "$ac_cv_search_gethostbyname" != "none required"; then
-                    NET_LIBS="$NET_LIBS $ac_cv_search_gethostbyname"
-                fi], [:], [$NET_LIBS])
-            AC_SEARCH_LIBS(connect, [bsd socket inet], [
-                if test "$ac_cv_search_connect" != "none required"; then
-                    NET_LIBS="$NET_LIBS $ac_cv_search_connect"
-                fi], [:], [$NET_LIBS])
-            LIBS=$_libs
-            ;;
-    esac
-
-    XML_PRIVATE_LIBS="${XML_PRIVATE_LIBS} ${NET_LIBS}"
-    XML_PC_LIBS="${XML_PC_LIBS} ${NET_LIBS}"
-fi
-
 dnl Thread-local storage
 if test "$with_tls" = "yes"; then
     AC_COMPILE_IFELSE([
@@ -413,7 +385,7 @@ dnl
 if test "$with_http" != "yes" ; then
     WITH_HTTP=0
 else
-    echo Enabling HTTP support
+    echo Enabling ABI compatibility stubs for removed HTTP support
     WITH_HTTP=1
 fi
 AC_SUBST(WITH_HTTP)
@@ -517,11 +489,11 @@ fi
 AC_SUBST(WITH_XINCLUDE)
 AM_CONDITIONAL(WITH_XINCLUDE_SOURCES, test "$WITH_XINCLUDE" = "1")
 
-if test "$with_schematron" = "no" ; then
-    echo "Disabling Schematron support"
-    WITH_SCHEMATRON=0
-else
+if test "$with_schematron" = "yes" ; then
+    echo "Enabling Schematron support"
     WITH_SCHEMATRON=1
+else
+    WITH_SCHEMATRON=0
 fi
 AC_SUBST(WITH_SCHEMATRON)
 AM_CONDITIONAL(WITH_SCHEMATRON_SOURCES, test "$WITH_SCHEMATRON" = "1")
@@ -588,29 +560,53 @@ fi
 AC_SUBST(WITH_DEBUG)
 AM_CONDITIONAL(WITH_DEBUG_SOURCES, test "$WITH_DEBUG" = "1")
 
+if test "$with_docs" = "yes" ; then
+    echo Enabling documentation
+    AC_PATH_PROG(XSLTPROC, xsltproc, [no])
+    if test "$XSLTPROC" = "no"; then
+        AC_MSG_ERROR([cannot find xsltproc])
+    fi
+    WITH_DOCS=1
+else
+    WITH_DOCS=0
+fi
+AM_CONDITIONAL(WITH_DOCS, test "$WITH_DOCS" = "1")
+
 dnl
 dnl Check for Python
 dnl
 
-AS_IF([test "x$with_python" != "xno"], [
+AS_IF([test "x$with_python" = "xyes"], [
     AM_PATH_PYTHON
     PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}])
 ])
-AM_CONDITIONAL([WITH_PYTHON], [test "x$with_python" != "xno"])
+AM_CONDITIONAL([WITH_PYTHON], [test "x$with_python" = "xyes"])
+
+dnl
+dnl Check for Doxygen
+dnl
+
+if test "$with_python" = "yes" || test "$with_docs" = "yes"; then
+    AC_PATH_PROG(DOXYGEN, doxygen, [no])
+    if test "$DOXYGEN" = "no"; then
+        AC_MSG_ERROR([cannot find doxygen])
+    fi
+    WITH_DOXYGEN=1
+fi
+AM_CONDITIONAL([WITH_DOXYGEN], test "$WITH_DOXYGEN" = "1")
 
 dnl
-dnl Extra Python flags for Windows
+dnl Extra Python flags
 dnl
 PYTHON_LDFLAGS=
 if test "${PYTHON}" != ""; then
     case "$host" in
-        *-*-mingw* )
-            PYTHON_LDFLAGS="-no-undefined -shrext .pyd"
-            ;;
-        *-*-cygwin* |*-*-msys* )
+        *-*-cygwin* | *-*-mingw* | *-*-msys* )
             PYTHON_LDFLAGS="-no-undefined"
             ;;
     esac
+    ext_suffix=`$PYTHON -c 'import sysconfig; print(sysconfig.get_config_var("EXT_SUFFIX") or sysconfig.get_config_var("SO"))'`
+    PYTHON_LDFLAGS="$PYTHON_LDFLAGS -shrext $ext_suffix"
 fi
 AC_SUBST(PYTHON_LDFLAGS)
 
@@ -844,61 +840,6 @@ fi
 AC_SUBST(WITH_ZLIB)
 
 dnl
-dnl Checks for lzma library.
-dnl
-WITH_LZMA=0
-
-if test "$with_lzma" != "no" && test "$with_lzma" != ""; then
-    echo "Enabling lzma compression support"
-
-    if test "$with_lzma" != "yes"; then
-        LZMA_DIR=$with_lzma
-    fi
-
-    # Don't run pkg-config if with_lzma contains a path.
-    if test "x$LZMA_DIR" = "x"; then
-        # Try pkg-config first so that static linking works.
-        PKG_CHECK_MODULES([LZMA],[liblzma],
-            [WITH_LZMA=1; XML_PC_REQUIRES="${XML_PC_REQUIRES} liblzma"],
-            [:])
-    fi
-
-    # If pkg-config failed, fall back to AC_CHECK_LIB. This
-    # will not pick up the necessary LIBS flags for liblzma's
-    # private dependencies, though, so static linking may fail.
-    if test "$WITH_LZMA" = "0"; then
-        _cppflags=$CPPFLAGS
-        _libs=$LIBS
-        if test "x$LZMA_DIR" != "x"; then
-            CPPFLAGS="${CPPFLAGS} -I$LZMA_DIR/include"
-            LIBS="${LIBS} -L$LZMA_DIR/lib"
-        fi
-        AC_CHECK_HEADERS(lzma.h,
-            AC_CHECK_LIB(lzma, lzma_code,[
-                WITH_LZMA=1
-                if test "x${LZMA_DIR}" != "x"; then
-                    LZMA_CFLAGS="-I${LZMA_DIR}/include"
-                    LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
-                else
-                    LZMA_LIBS="-llzma"
-                fi])
-                XML_PC_LIBS="${XML_PC_LIBS} ${LZMA_LIBS}"
-            )
-        CPPFLAGS=$_cppflags
-        LIBS=$_libs
-    fi
-
-    if test "$WITH_LZMA" = "0"; then
-        AC_MSG_ERROR([liblzma not found])
-    fi
-
-    XML_PRIVATE_CFLAGS="${XML_PRIVATE_CFLAGS} ${LZMA_CFLAGS}"
-    XML_PRIVATE_LIBS="${XML_PRIVATE_LIBS} ${LZMA_LIBS}"
-fi
-AC_SUBST(WITH_LZMA)
-AM_CONDITIONAL(WITH_LZMA_SOURCES, test "$WITH_LZMA" = "1")
-
-dnl
 dnl Checks for iconv library.
 dnl
 WITH_ICONV=0
@@ -1081,7 +1022,7 @@ AC_DEFINE_UNQUOTED([XML_SYSCONFDIR], ["$
                    [System configuration directory (/etc)])
 
 # keep on one line for cygwin c.f. #130896
-AC_CONFIG_FILES([Makefile include/Makefile include/libxml/Makefile include/private/Makefile doc/Makefile doc/devhelp/Makefile example/Makefile fuzz/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml2-config.cmake])
+AC_CONFIG_FILES([Makefile include/Makefile include/libxml/Makefile include/private/Makefile doc/Makefile example/Makefile fuzz/Makefile python/Makefile python/tests/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml2-config.cmake])
 AC_CONFIG_FILES([python/setup.py], [chmod +x python/setup.py])
 AC_CONFIG_FILES([xml2-config], [chmod +x xml2-config])
 AC_OUTPUT
diff -pruN 2.14.6+dfsg-0.1/debian/changelog 2.15.0+dfsg-0.3/debian/changelog
--- 2.14.6+dfsg-0.1/debian/changelog	2025-10-05 07:52:40.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/changelog	2025-10-05 10:08:07.000000000 +0000
@@ -1,3 +1,15 @@
+libxml2 (2.15.0+dfsg-0.3) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * New upstream release.
+    - Configure with --with-docs.
+    - Add build dependencies for building the docs.
+    - The devhelp documentation is not built anymore.
+  * Update symbols file.
+  * Update libxml2-doc doc-base file.
+
+ -- Matthias Klose <doko@debian.org>  Sun, 05 Oct 2025 12:08:07 +0200
+
 libxml2 (2.14.6+dfsg-0.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -pruN 2.14.6+dfsg-0.1/debian/control 2.15.0+dfsg-0.3/debian/control
--- 2.14.6+dfsg-0.1/debian/control	2025-08-26 07:35:49.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/control	2025-10-05 10:08:03.000000000 +0000
@@ -9,6 +9,9 @@ Build-Depends:
  debhelper-compat (= 13),
 Build-Depends-Indep:
  pkgconf,
+ doxygen <!nopython>,
+ xsltproc,
+ docbook-xsl,
 Build-Depends-Arch:
  dh-sequence-python3 <!nopython>,
  liblzma-dev,
@@ -19,6 +22,9 @@ Build-Depends-Arch:
  rename,
  zlib1g-dev | libz-dev,
  libreadline-dev,
+ doxygen <!nopython>,
+ xsltproc,
+ docbook-xsl,
 Standards-Version: 4.6.2
 Rules-Requires-Root: no
 Homepage: http://xmlsoft.org
diff -pruN 2.14.6+dfsg-0.1/debian/libxml2-16.symbols 2.15.0+dfsg-0.3/debian/libxml2-16.symbols
--- 2.14.6+dfsg-0.1/debian/libxml2-16.symbols	2025-06-02 11:40:55.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/libxml2-16.symbols	2025-10-05 08:30:10.000000000 +0000
@@ -248,16 +248,22 @@ libxml2.so.16 #PACKAGE# #MINVER#
  xmlCtxtGetCatalogs@Base 2.14.1
  xmlCtxtGetDeclaredEncoding@Base 2.14.1
  xmlCtxtGetDict@Base 2.14.1
+ xmlCtxtGetDocTypeDecl@Base 2.15
  xmlCtxtGetDocument@Base 2.14.1
+ xmlCtxtGetInputPosition@Base 2.15
+ xmlCtxtGetInputWindow@Base 2.15
  xmlCtxtGetLastError@Base 2.14.1
+ xmlCtxtGetNode@Base 2.15
  xmlCtxtGetOptions@Base 2.14.1
  xmlCtxtGetPrivate@Base 2.14.1
  xmlCtxtGetSaxHandler@Base 2.14.1
  xmlCtxtGetStandalone@Base 2.14.1
  xmlCtxtGetStatus@Base 2.14.1
+ xmlCtxtGetUserData@Base 2.15
  xmlCtxtGetValidCtxt@Base 2.14.1
  xmlCtxtGetVersion@Base 2.14.1
  xmlCtxtIsHtml@Base 2.14.1
+ xmlCtxtIsInSubset@Base 2.15
  xmlCtxtIsStopped@Base 2.14.1
  xmlCtxtParseContent@Base 2.14.1
  xmlCtxtParseDocument@Base 2.14.1
@@ -820,6 +826,7 @@ libxml2.so.16 #PACKAGE# #MINVER#
  xmlRelaxNGSetResourceLoader@Base 2.14.1
  xmlRelaxNGSetValidErrors@Base 2.14.1
  xmlRelaxNGSetValidStructuredErrors@Base 2.14.1
+ xmlRelaxNGValidCtxtClearErrors@Base 2.15
  xmlRelaxNGValidateDoc@Base 2.14.1
  xmlRelaxNGValidateFullElement@Base 2.14.1
  xmlRelaxNGValidatePopElement@Base 2.14.1
diff -pruN 2.14.6+dfsg-0.1/debian/libxml2-doc.doc-base 2.15.0+dfsg-0.3/debian/libxml2-doc.doc-base
--- 2.14.6+dfsg-0.1/debian/libxml2-doc.doc-base	2024-08-16 14:13:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/libxml2-doc.doc-base	2025-10-05 09:04:29.000000000 +0000
@@ -5,5 +5,5 @@ Abstract: This manual describes the func
 Section: Programming
 
 Format: HTML
-Index: /usr/share/doc/libxml2/gtk-doc/index.html
-Files: /usr/share/doc/libxml2/gtk-doc/*.html
+Index: /usr/share/doc/libxml2/html/index.html
+Files: /usr/share/doc/libxml2/html/*.html
diff -pruN 2.14.6+dfsg-0.1/debian/libxml2-doc.install 2.15.0+dfsg-0.3/debian/libxml2-doc.install
--- 2.14.6+dfsg-0.1/debian/libxml2-doc.install	2024-08-16 14:13:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/libxml2-doc.install	2025-10-05 09:01:23.000000000 +0000
@@ -1,2 +1 @@
 usr/share/doc
-usr/share/gtk-doc
diff -pruN 2.14.6+dfsg-0.1/debian/libxml2-doc.links 2.15.0+dfsg-0.3/debian/libxml2-doc.links
--- 2.14.6+dfsg-0.1/debian/libxml2-doc.links	2024-08-16 14:13:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/libxml2-doc.links	2025-10-05 09:01:38.000000000 +0000
@@ -1,2 +1 @@
 usr/share/doc/libxml2/examples usr/share/doc/libxml2-doc/examples
-usr/share/gtk-doc/html/libxml2 usr/share/doc/libxml2/gtk-doc
diff -pruN 2.14.6+dfsg-0.1/debian/patches/git-updates.diff 2.15.0+dfsg-0.3/debian/patches/git-updates.diff
--- 2.14.6+dfsg-0.1/debian/patches/git-updates.diff	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/patches/git-updates.diff	2025-10-05 08:20:52.000000000 +0000
@@ -0,0 +1,2 @@
+git diff 74f3154320df8950eceae4951975cc9dfc3a254d 9fb54d0a629b44e0f0c08eafb083458711c79ffe
+
diff -pruN 2.14.6+dfsg-0.1/debian/patches/series 2.15.0+dfsg-0.3/debian/patches/series
--- 2.14.6+dfsg-0.1/debian/patches/series	2025-10-05 07:52:40.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/patches/series	2025-10-05 08:20:43.000000000 +0000
@@ -1,2 +1,3 @@
+#git-updates.diff
 xml2-config-fix.patch
 python-libadd-fix.patch
diff -pruN 2.14.6+dfsg-0.1/debian/rules 2.15.0+dfsg-0.3/debian/rules
--- 2.14.6+dfsg-0.1/debian/rules	2025-08-26 07:36:27.000000000 +0000
+++ 2.15.0+dfsg-0.3/debian/rules	2025-10-05 09:06:49.000000000 +0000
@@ -23,11 +23,12 @@ CONFIGURE_FLAGS := --with-history \
 		   --with-xptr-loc \
 		   --with-http \
 		   --with-lzma \
+		   --with-docs \
 
 override_dh_auto_configure-arch: $(TARGETS:%=doconfigure-%)
 
 override_dh_auto_configure-indep:
-	dh_auto_configure -- --docdir \$${prefix}/share/doc/libxml2 --enable-rebuild-docs --with-python=no
+	dh_auto_configure -- --with-docs --docdir \$${prefix}/share/doc/libxml2 --enable-rebuild-docs --with-python=no
 
 doconfigure-%:
 	export PYTHON=$(PYTHON) && dh_auto_configure --builddirectory=builddir/$(*) -- $(CONFIGURE_FLAGS) && unset PYTHON
diff -pruN 2.14.6+dfsg-0.1/debugXML.c 2.15.0+dfsg-0.3/debugXML.c
--- 2.14.6+dfsg-0.1/debugXML.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/debugXML.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <daniel@veillard.com>
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -70,13 +70,11 @@ xmlCtxtDumpCleanCtxt(xmlDebugCtxtPtr ctx
 }
 
 /**
- * xmlNsCheckScope:
- * @node: the node
- * @ns: the namespace node
- *
  * Check that a given namespace is in scope on a node.
  *
- * Returns 1 if in scope, -1 in case of argument error,
+ * @param node  the node
+ * @param ns  the namespace node
+ * @returns 1 if in scope, -1 in case of argument error,
  *         -2 if the namespace is not in scope, and -3 if not on
  *         an ancestor node.
  */
@@ -139,11 +137,11 @@ xmlCtxtDumpSpaces(xmlDebugCtxtPtr ctxt)
 }
 
 /**
- * xmlDebugErr:
- * @ctxt:  a debug context
- * @error:  the error code
- *
  * Handle a debug error.
+ *
+ * @param ctxt  a debug context
+ * @param error  the error code
+ * @param msg  the error message
  */
 static void
 xmlDebugErr(xmlDebugCtxtPtr ctxt, int error, const char *msg)
@@ -167,12 +165,11 @@ xmlDebugErr3(xmlDebugCtxtPtr ctxt, int e
 }
 
 /**
- * xmlCtxtNsCheckScope:
- * @ctxt: the debugging context
- * @node: the node
- * @ns: the namespace node
- *
  * Report if a given namespace is is not in scope.
+ *
+ * @param ctxt  the debugging context
+ * @param node  the node
+ * @param ns  the namespace node
  */
 static void
 xmlCtxtNsCheckScope(xmlDebugCtxtPtr ctxt, xmlNodePtr node, xmlNsPtr ns)
@@ -201,11 +198,10 @@ xmlCtxtNsCheckScope(xmlDebugCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtCheckString:
- * @ctxt: the debug context
- * @str: the string
- *
  * Do debugging on the string, currently it just checks the UTF-8 content
+ *
+ * @param ctxt  the debug context
+ * @param str  the string
  */
 static void
 xmlCtxtCheckString(xmlDebugCtxtPtr ctxt, const xmlChar * str)
@@ -220,12 +216,11 @@ xmlCtxtCheckString(xmlDebugCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtCheckName:
- * @ctxt: the debug context
- * @name: the name
- *
  * Do debugging on the name, for example the dictionary status and
  * conformance to the Name production.
+ *
+ * @param ctxt  the debug context
+ * @param name  the name
  */
 static void
 xmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name)
@@ -343,12 +338,6 @@ xmlCtxtGenericNodeCheck(xmlDebugCtxtPtr
 	    if ((node->name == xmlStringText) ||
 	        (node->name == xmlStringTextNoenc))
 		break;
-	    /* some case of entity substitution can lead to this */
-	    if ((ctxt->dict != NULL) &&
-	        (node->name == xmlDictLookup(ctxt->dict, BAD_CAST "nbktext",
-		                             7)))
-		break;
-
 	    xmlDebugErr3(ctxt, XML_CHECK_WRONG_NAME,
 			 "Text node has wrong name '%s'",
 			 (const char *) node->name);
@@ -783,12 +772,10 @@ xmlCtxtDumpEntity(xmlDebugCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtDumpAttr:
- * @output:  the FILE * for the output
- * @attr:  the attribute
- * @depth:  the indentation level.
- *
  * Dumps debug information for the attribute
+ *
+ * @param ctxt  the debug context
+ * @param attr  the attribute
  */
 static void
 xmlCtxtDumpAttr(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr)
@@ -821,12 +808,10 @@ xmlCtxtDumpAttr(xmlDebugCtxtPtr ctxt, xm
 }
 
 /**
- * xmlCtxtDumpAttrList:
- * @output:  the FILE * for the output
- * @attr:  the attribute list
- * @depth:  the indentation level.
- *
  * Dumps debug information for the attribute list
+ *
+ * @param ctxt  the debug context
+ * @param attr  the attribute list
  */
 static void
 xmlCtxtDumpAttrList(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr)
@@ -838,12 +823,10 @@ xmlCtxtDumpAttrList(xmlDebugCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtDumpOneNode:
- * @output:  the FILE * for the output
- * @node:  the node
- * @depth:  the indentation level.
+ * Dumps debug information for the element node, it is not recursive/
  *
- * Dumps debug information for the element node, it is not recursive
+ * @param ctxt  the debug context
+ * @param node  the node
  */
 static void
 xmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node)
@@ -1021,12 +1004,10 @@ xmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtDumpNode:
- * @output:  the FILE * for the output
- * @node:  the node
- * @depth:  the indentation level.
- *
  * Dumps debug information for the element node, it is recursive
+ *
+ * @param ctxt  the debug context
+ * @param node  the node
  */
 static void
 xmlCtxtDumpNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node)
@@ -1048,12 +1029,10 @@ xmlCtxtDumpNode(xmlDebugCtxtPtr ctxt, xm
 }
 
 /**
- * xmlCtxtDumpNodeList:
- * @output:  the FILE * for the output
- * @node:  the node list
- * @depth:  the indentation level.
- *
  * Dumps debug information for the list of element node, it is recursive
+ *
+ * @param ctxt  the debug context
+ * @param node  the node list
  */
 static void
 xmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node)
@@ -1134,11 +1113,10 @@ xmlCtxtDumpDocHead(xmlDebugCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtDumpDocumentHead:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information concerning the document, not recursive
+ *
+ * @param ctxt  the debug context
+ * @param doc  the document
  */
 static void
 xmlCtxtDumpDocumentHead(xmlDebugCtxtPtr ctxt, xmlDocPtr doc)
@@ -1174,11 +1152,10 @@ xmlCtxtDumpDocumentHead(xmlDebugCtxtPtr
 }
 
 /**
- * xmlCtxtDumpDocument:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information for the document, it's recursive
+ *
+ * @param ctxt  the debug context
+ * @param doc  the document
  */
 static void
 xmlCtxtDumpDocument(xmlDebugCtxtPtr ctxt, xmlDocPtr doc)
@@ -1245,11 +1222,10 @@ xmlCtxtDumpEntityCallback(void *payload,
 }
 
 /**
- * xmlCtxtDumpEntities:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information for all the entities in use by the document
+ *
+ * @param ctxt  the debug context
+ * @param doc  the document
  */
 static void
 xmlCtxtDumpEntities(xmlDebugCtxtPtr ctxt, xmlDocPtr doc)
@@ -1277,11 +1253,10 @@ xmlCtxtDumpEntities(xmlDebugCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtDumpDTD:
- * @output:  the FILE * for the output
- * @dtd:  the DTD
- *
  * Dumps debug information for the DTD
+ *
+ * @param ctxt  the debug context
+ * @param dtd  the DTD
  */
 static void
 xmlCtxtDumpDTD(xmlDebugCtxtPtr ctxt, xmlDtdPtr dtd)
@@ -1308,11 +1283,10 @@ xmlCtxtDumpDTD(xmlDebugCtxtPtr ctxt, xml
  ************************************************************************/
 
 /**
- * xmlDebugDumpString:
- * @output:  the FILE * for the output
- * @str:  the string
- *
  * Dumps information about the string, shorten it if necessary
+ *
+ * @param output  the FILE * for the output
+ * @param str  the string
  */
 void
 xmlDebugDumpString(FILE * output, const xmlChar * str)
@@ -1338,15 +1312,14 @@ xmlDebugDumpString(FILE * output, const
 }
 
 /**
- * xmlDebugDumpAttr:
- * @output:  the FILE * for the output
- * @attr:  the attribute
- * @depth:  the indentation level.
- *
  * Dumps debug information for the attribute
+ *
+ * @param output  the FILE * for the output
+ * @param attr  the attribute
+ * @param depth  the indentation level.
  */
 void
-xmlDebugDumpAttr(FILE *output, xmlAttrPtr attr, int depth) {
+xmlDebugDumpAttr(FILE *output, xmlAttr *attr, int depth) {
     xmlDebugCtxt ctxt;
 
     if (output == NULL) return;
@@ -1359,14 +1332,13 @@ xmlDebugDumpAttr(FILE *output, xmlAttrPt
 
 
 /**
- * xmlDebugDumpEntities:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information for all the entities in use by the document
+ *
+ * @param output  the FILE * for the output
+ * @param doc  the document
  */
 void
-xmlDebugDumpEntities(FILE * output, xmlDocPtr doc)
+xmlDebugDumpEntities(FILE * output, xmlDoc *doc)
 {
     xmlDebugCtxt ctxt;
 
@@ -1378,15 +1350,14 @@ xmlDebugDumpEntities(FILE * output, xmlD
 }
 
 /**
- * xmlDebugDumpAttrList:
- * @output:  the FILE * for the output
- * @attr:  the attribute list
- * @depth:  the indentation level.
- *
  * Dumps debug information for the attribute list
+ *
+ * @param output  the FILE * for the output
+ * @param attr  the attribute list
+ * @param depth  the indentation level.
  */
 void
-xmlDebugDumpAttrList(FILE * output, xmlAttrPtr attr, int depth)
+xmlDebugDumpAttrList(FILE * output, xmlAttr *attr, int depth)
 {
     xmlDebugCtxt ctxt;
 
@@ -1399,15 +1370,14 @@ xmlDebugDumpAttrList(FILE * output, xmlA
 }
 
 /**
- * xmlDebugDumpOneNode:
- * @output:  the FILE * for the output
- * @node:  the node
- * @depth:  the indentation level.
- *
  * Dumps debug information for the element node, it is not recursive
+ *
+ * @param output  the FILE * for the output
+ * @param node  the node
+ * @param depth  the indentation level.
  */
 void
-xmlDebugDumpOneNode(FILE * output, xmlNodePtr node, int depth)
+xmlDebugDumpOneNode(FILE * output, xmlNode *node, int depth)
 {
     xmlDebugCtxt ctxt;
 
@@ -1420,15 +1390,14 @@ xmlDebugDumpOneNode(FILE * output, xmlNo
 }
 
 /**
- * xmlDebugDumpNode:
- * @output:  the FILE * for the output
- * @node:  the node
- * @depth:  the indentation level.
- *
  * Dumps debug information for the element node, it is recursive
+ *
+ * @param output  the FILE * for the output
+ * @param node  the node
+ * @param depth  the indentation level.
  */
 void
-xmlDebugDumpNode(FILE * output, xmlNodePtr node, int depth)
+xmlDebugDumpNode(FILE * output, xmlNode *node, int depth)
 {
     xmlDebugCtxt ctxt;
 
@@ -1442,15 +1411,14 @@ xmlDebugDumpNode(FILE * output, xmlNodeP
 }
 
 /**
- * xmlDebugDumpNodeList:
- * @output:  the FILE * for the output
- * @node:  the node list
- * @depth:  the indentation level.
- *
  * Dumps debug information for the list of element node, it is recursive
+ *
+ * @param output  the FILE * for the output
+ * @param node  the node list
+ * @param depth  the indentation level.
  */
 void
-xmlDebugDumpNodeList(FILE * output, xmlNodePtr node, int depth)
+xmlDebugDumpNodeList(FILE * output, xmlNode *node, int depth)
 {
     xmlDebugCtxt ctxt;
 
@@ -1464,14 +1432,13 @@ xmlDebugDumpNodeList(FILE * output, xmlN
 }
 
 /**
- * xmlDebugDumpDocumentHead:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information concerning the document, not recursive
+ *
+ * @param output  the FILE * for the output
+ * @param doc  the document
  */
 void
-xmlDebugDumpDocumentHead(FILE * output, xmlDocPtr doc)
+xmlDebugDumpDocumentHead(FILE * output, xmlDoc *doc)
 {
     xmlDebugCtxt ctxt;
 
@@ -1485,14 +1452,13 @@ xmlDebugDumpDocumentHead(FILE * output,
 }
 
 /**
- * xmlDebugDumpDocument:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Dumps debug information for the document, it's recursive
+ *
+ * @param output  the FILE * for the output
+ * @param doc  the document
  */
 void
-xmlDebugDumpDocument(FILE * output, xmlDocPtr doc)
+xmlDebugDumpDocument(FILE * output, xmlDoc *doc)
 {
     xmlDebugCtxt ctxt;
 
@@ -1506,14 +1472,13 @@ xmlDebugDumpDocument(FILE * output, xmlD
 }
 
 /**
- * xmlDebugDumpDTD:
- * @output:  the FILE * for the output
- * @dtd:  the DTD
- *
  * Dumps debug information for the DTD
+ *
+ * @param output  the FILE * for the output
+ * @param dtd  the DTD
  */
 void
-xmlDebugDumpDTD(FILE * output, xmlDtdPtr dtd)
+xmlDebugDumpDTD(FILE * output, xmlDtd *dtd)
 {
     xmlDebugCtxt ctxt;
 
@@ -1533,17 +1498,15 @@ xmlDebugDumpDTD(FILE * output, xmlDtdPtr
  ************************************************************************/
 
 /**
- * xmlDebugCheckDocument:
- * @output:  the FILE * for the output
- * @doc:  the document
- *
  * Check the document for potential content problems, and output
- * the errors to @output
+ * the errors to `output`
  *
- * Returns the number of errors found
+ * @param output  the FILE * for the output
+ * @param doc  the document
+ * @returns the number of errors found
  */
 int
-xmlDebugCheckDocument(FILE * output, xmlDocPtr doc)
+xmlDebugCheckDocument(FILE * output, xmlDoc *doc)
 {
     xmlDebugCtxt ctxt;
 
diff -pruN 2.14.6+dfsg-0.1/dict.c 2.15.0+dfsg-0.3/dict.c
--- 2.14.6+dfsg-0.1/dict.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/dict.c	2025-09-15 11:55:59.000000000 +0000
@@ -13,7 +13,7 @@
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
  * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
  *
- * Author: daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -81,11 +81,9 @@ struct _xmlDict {
 static xmlMutex xmlDictMutex;
 
 /**
- * xmlInitializeDict:
+ * @deprecated Alias for #xmlInitParser.
  *
- * DEPRECATED: Alias for xmlInitParser.
- *
- * Returns 0.
+ * @returns 0.
  */
 int
 xmlInitializeDict(void) {
@@ -94,8 +92,6 @@ xmlInitializeDict(void) {
 }
 
 /**
- * xmlInitDictInternal:
- *
  * Initialize mutex.
  */
 void
@@ -104,10 +100,8 @@ xmlInitDictInternal(void) {
 }
 
 /**
- * xmlDictCleanup:
- *
- * DEPRECATED: This function is a no-op. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function is a no-op. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  */
@@ -116,8 +110,6 @@ xmlDictCleanup(void) {
 }
 
 /**
- * xmlCleanupDictInternal:
- *
  * Free the dictionary mutex.
  */
 void
@@ -126,14 +118,13 @@ xmlCleanupDictInternal(void) {
 }
 
 /*
- * xmlDictAddString:
- * @dict: the dictionary
- * @name: the name of the userdata
- * @len: the length of the name
+ * @param dict  the dictionary
+ * @param name  the name of the userdata
+ * @param len  the length of the name
  *
  * Add the string to the array[s]
  *
- * Returns the pointer of the local string, or NULL in case of error.
+ * @returns the pointer of the local string, or NULL in case of error.
  */
 static const xmlChar *
 xmlDictAddString(xmlDictPtr dict, const xmlChar *name, unsigned int namelen) {
@@ -192,16 +183,15 @@ found_pool:
 }
 
 /*
- * xmlDictAddQString:
- * @dict: the dictionary
- * @prefix: the prefix of the userdata
- * @plen: the prefix length
- * @name: the name of the userdata
- * @len: the length of the name
+ * @param dict  the dictionary
+ * @param prefix  the prefix of the userdata
+ * @param plen  the prefix length
+ * @param name  the name of the userdata
+ * @param len  the length of the name
  *
  * Add the QName to the array[s]
  *
- * Returns the pointer of the local string, or NULL in case of error.
+ * @returns the pointer of the local string, or NULL in case of error.
  */
 static const xmlChar *
 xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen,
@@ -255,13 +245,11 @@ found_pool:
 }
 
 /**
- * xmlDictCreate:
- *
  * Create a new dictionary
  *
- * Returns the newly created dictionary, or NULL if an error occurred.
+ * @returns the newly created dictionary, or NULL if an error occurred.
  */
-xmlDictPtr
+xmlDict *
 xmlDictCreate(void) {
     xmlDictPtr dict;
 
@@ -286,18 +274,16 @@ xmlDictCreate(void) {
 }
 
 /**
- * xmlDictCreateSub:
- * @sub: an existing dictionary
- *
  * Create a new dictionary, inheriting strings from the read-only
- * dictionary @sub. On lookup, strings are first searched in the
- * new dictionary, then in @sub, and if not found are created in the
+ * dictionary `sub`. On lookup, strings are first searched in the
+ * new dictionary, then in `sub`, and if not found are created in the
  * new dictionary.
  *
- * Returns the newly created dictionary, or NULL if an error occurred.
+ * @param sub  an existing dictionary
+ * @returns the newly created dictionary, or NULL if an error occurred.
  */
-xmlDictPtr
-xmlDictCreateSub(xmlDictPtr sub) {
+xmlDict *
+xmlDictCreateSub(xmlDict *sub) {
     xmlDictPtr dict = xmlDictCreate();
 
     if ((dict != NULL) && (sub != NULL)) {
@@ -309,15 +295,13 @@ xmlDictCreateSub(xmlDictPtr sub) {
 }
 
 /**
- * xmlDictReference:
- * @dict: the dictionary
- *
  * Increment the reference counter of a dictionary
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param dict  the dictionary
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlDictReference(xmlDictPtr dict) {
+xmlDictReference(xmlDict *dict) {
     if (dict == NULL) return -1;
     xmlMutexLock(&xmlDictMutex);
     dict->ref_counter++;
@@ -326,14 +310,13 @@ xmlDictReference(xmlDictPtr dict) {
 }
 
 /**
- * xmlDictFree:
- * @dict: the dictionary
+ * Free the hash `dict` and its contents. The userdata is
+ * deallocated with `f` if provided.
  *
- * Free the hash @dict and its contents. The userdata is
- * deallocated with @f if provided.
+ * @param dict  the dictionary
  */
 void
-xmlDictFree(xmlDictPtr dict) {
+xmlDictFree(xmlDict *dict) {
     xmlDictStringsPtr pool, nextp;
 
     if (dict == NULL)
@@ -366,17 +349,15 @@ xmlDictFree(xmlDictPtr dict) {
 }
 
 /**
- * xmlDictOwns:
- * @dict: the dictionary
- * @str: the string
- *
  * check if a string is owned by the dictionary
  *
- * Returns 1 if true, 0 if false and -1 in case of error
+ * @param dict  the dictionary
+ * @param str  the string
+ * @returns 1 if true, 0 if false and -1 in case of error
  * -1 in case of error
  */
 int
-xmlDictOwns(xmlDictPtr dict, const xmlChar *str) {
+xmlDictOwns(xmlDict *dict, const xmlChar *str) {
     xmlDictStringsPtr pool;
 
     if ((dict == NULL) || (str == NULL))
@@ -393,16 +374,14 @@ xmlDictOwns(xmlDictPtr dict, const xmlCh
 }
 
 /**
- * xmlDictSize:
- * @dict: the dictionary
- *
- * Query the number of elements installed in the hash @dict.
+ * Query the number of elements installed in the hash `dict`.
  *
- * Returns the number of elements in the dictionary or
+ * @param dict  the dictionary
+ * @returns the number of elements in the dictionary or
  * -1 in case of error
  */
 int
-xmlDictSize(xmlDictPtr dict) {
+xmlDictSize(xmlDict *dict) {
     if (dict == NULL)
 	return(-1);
     if (dict->subdict)
@@ -411,17 +390,15 @@ xmlDictSize(xmlDictPtr dict) {
 }
 
 /**
- * xmlDictSetLimit:
- * @dict: the dictionary
- * @limit: the limit in bytes
- *
  * Set a size limit for the dictionary
  * Added in 2.9.0
  *
- * Returns the previous limit of the dictionary or 0
+ * @param dict  the dictionary
+ * @param limit  the limit in bytes
+ * @returns the previous limit of the dictionary or 0
  */
 size_t
-xmlDictSetLimit(xmlDictPtr dict, size_t limit) {
+xmlDictSetLimit(xmlDict *dict, size_t limit) {
     size_t ret;
 
     if (dict == NULL)
@@ -432,16 +409,14 @@ xmlDictSetLimit(xmlDictPtr dict, size_t
 }
 
 /**
- * xmlDictGetUsage:
- * @dict: the dictionary
- *
  * Get how much memory is used by a dictionary for strings
  * Added in 2.9.0
  *
- * Returns the amount of strings allocated
+ * @param dict  the dictionary
+ * @returns the amount of strings allocated
  */
 size_t
-xmlDictGetUsage(xmlDictPtr dict) {
+xmlDictGetUsage(xmlDict *dict) {
     xmlDictStringsPtr pool;
     size_t limit = 0;
 
@@ -512,13 +487,11 @@ xmlDictHashQName(unsigned seed, const xm
 }
 
 /**
- * xmlDictComputeHash:
- * @dict:  dictionary
- * @string:  C string
- *
  * Compute the hash value of a C string.
  *
- * Returns the hash value.
+ * @param dict  dictionary
+ * @param string  C string
+ * @returns the hash value.
  */
 unsigned
 xmlDictComputeHash(const xmlDict *dict, const xmlChar *string) {
@@ -529,13 +502,11 @@ xmlDictComputeHash(const xmlDict *dict,
 #define HASH_ROL31(x,n) ((x) << (n) | ((x) & 0x7FFFFFFF) >> (31 - (n)))
 
 /**
- * xmlDictCombineHash:
- * @v1:  first hash value
- * @v2: second hash value
- *
  * Combine two hash values.
  *
- * Returns the combined hash value.
+ * @param v1  first hash value
+ * @param v2  second hash value
+ * @returns the combined hash value.
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 unsigned
@@ -551,17 +522,16 @@ xmlDictCombineHash(unsigned v1, unsigned
 }
 
 /**
- * xmlDictFindEntry:
- * @dict: dict
- * @prefix: optional QName prefix
- * @name: string
- * @len: length of string
- * @hashValue: valid hash value of string
- * @pfound: result of search
- *
  * Try to find a matching hash table entry. If an entry was found, set
- * @found to 1 and return the entry. Otherwise, set @found to 0 and return
+ * `found` to 1 and return the entry. Otherwise, set `found` to 0 and return
  * the location where a new entry should be inserted.
+ *
+ * @param dict  dict
+ * @param prefix  optional QName prefix
+ * @param name  string
+ * @param len  length of string
+ * @param hashValue  valid hash value of string
+ * @param pfound  result of search
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 static xmlDictEntry *
@@ -618,13 +588,11 @@ xmlDictFindEntry(const xmlDict *dict, co
 }
 
 /**
- * xmlDictGrow:
- * @dict: dictionary
- * @size: new size of the dictionary
- *
  * Resize the dictionary hash table.
  *
- * Returns 0 in case of success, -1 if a memory allocation failed.
+ * @param dict  dictionary
+ * @param size  new size of the dictionary
+ * @returns 0 in case of success, -1 if a memory allocation failed.
  */
 static int
 xmlDictGrow(xmlDictPtr dict, unsigned size) {
@@ -685,18 +653,17 @@ done:
 }
 
 /**
- * xmlDictLookupInternal:
- * @dict: dict
- * @prefix: optional QName prefix
- * @name: string
- * @maybeLen: length of string or -1 if unknown
- * @update: whether the string should be added
- *
  * Internal lookup and update function.
+ *
+ * @param dict  dict
+ * @param prefix  optional QName prefix
+ * @param name  string
+ * @param maybeLen  length of string or -1 if unknown
+ * @param update  whether the string should be added
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 static const xmlDictEntry *
-xmlDictLookupInternal(xmlDictPtr dict, const xmlChar *prefix,
+xmlDictLookupInternal(xmlDict *dict, const xmlChar *prefix,
                       const xmlChar *name, int maybeLen, int update) {
     xmlDictEntry *entry = NULL;
     const xmlChar *ret;
@@ -835,18 +802,16 @@ xmlDictLookupInternal(xmlDictPtr dict, c
 }
 
 /**
- * xmlDictLookup:
- * @dict: dictionary
- * @name: string key
- * @len: length of the key, if -1 it is recomputed
- *
  * Lookup a string and add it to the dictionary if it wasn't found.
  *
- * Returns the interned copy of the string or NULL if a memory allocation
+ * @param dict  dictionary
+ * @param name  string key
+ * @param len  length of the key, if -1 it is recomputed
+ * @returns the interned copy of the string or NULL if a memory allocation
  * failed.
  */
 const xmlChar *
-xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) {
+xmlDictLookup(xmlDict *dict, const xmlChar *name, int len) {
     const xmlDictEntry *entry;
 
     entry = xmlDictLookupInternal(dict, NULL, name, len, 1);
@@ -856,18 +821,16 @@ xmlDictLookup(xmlDictPtr dict, const xml
 }
 
 /**
- * xmlDictLookupHashed:
- * @dict: dictionary
- * @name: string key
- * @len: length of the key, if -1 it is recomputed
- *
  * Lookup a dictionary entry and add the string to the dictionary if
  * it wasn't found.
  *
- * Returns the dictionary entry.
+ * @param dict  dictionary
+ * @param name  string key
+ * @param len  length of the key, if -1 it is recomputed
+ * @returns the dictionary entry.
  */
 xmlHashedString
-xmlDictLookupHashed(xmlDictPtr dict, const xmlChar *name, int len) {
+xmlDictLookupHashed(xmlDict *dict, const xmlChar *name, int len) {
     const xmlDictEntry *entry;
     xmlHashedString ret;
 
@@ -884,17 +847,15 @@ xmlDictLookupHashed(xmlDictPtr dict, con
 }
 
 /**
- * xmlDictExists:
- * @dict: the dictionary
- * @name: the name of the userdata
- * @len: the length of the name, if -1 it is recomputed
- *
  * Check if a string exists in the dictionary.
  *
- * Returns the internal copy of the name or NULL if not found.
+ * @param dict  the dictionary
+ * @param name  the name of the userdata
+ * @param len  the length of the name, if -1 it is recomputed
+ * @returns the internal copy of the name or NULL if not found.
  */
 const xmlChar *
-xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) {
+xmlDictExists(xmlDict *dict, const xmlChar *name, int len) {
     const xmlDictEntry *entry;
 
     entry = xmlDictLookupInternal(dict, NULL, name, len, 0);
@@ -904,19 +865,17 @@ xmlDictExists(xmlDictPtr dict, const xml
 }
 
 /**
- * xmlDictQLookup:
- * @dict: the dictionary
- * @prefix: the prefix
- * @name: the name
- *
- * Lookup the QName @prefix:@name and add it to the dictionary if
+ * Lookup the QName `prefix:name` and add it to the dictionary if
  * it wasn't found.
  *
- * Returns the interned copy of the string or NULL if a memory allocation
+ * @param dict  the dictionary
+ * @param prefix  the prefix
+ * @param name  the name
+ * @returns the interned copy of the string or NULL if a memory allocation
  * failed.
  */
 const xmlChar *
-xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) {
+xmlDictQLookup(xmlDict *dict, const xmlChar *prefix, const xmlChar *name) {
     const xmlDictEntry *entry;
 
     entry = xmlDictLookupInternal(dict, prefix, name, -1, 1);
@@ -948,7 +907,6 @@ static xmlMutex xmlRngMutex;
 static unsigned globalRngState[2];
 
 /*
- * xmlInitRandom:
  *
  * Initialize the PRNG.
  */
@@ -1016,7 +974,6 @@ xmlInitRandom(void) {
 }
 
 /*
- * xmlCleanupRandom:
  *
  * Clean up PRNG globals.
  */
@@ -1040,11 +997,10 @@ xoroshiro64ss(unsigned *s) {
 }
 
 /*
- * xmlGlobalRandom:
  *
  * Generate a pseudo-random value using the global PRNG.
  *
- * Returns a random value.
+ * @returns a random value.
  */
 unsigned
 xmlGlobalRandom(void) {
@@ -1058,11 +1014,10 @@ xmlGlobalRandom(void) {
 }
 
 /*
- * xmlRandom:
  *
  * Generate a pseudo-random value using the thread-local PRNG.
  *
- * Returns a random value.
+ * @returns a random value.
  */
 unsigned
 xmlRandom(void) {
diff -pruN 2.14.6+dfsg-0.1/doc/Doxyfile 2.15.0+dfsg-0.3/doc/Doxyfile
--- 2.14.6+dfsg-0.1/doc/Doxyfile	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/Doxyfile	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,110 @@
+PROJECT_NAME           = libxml2
+OUTPUT_DIRECTORY       = $(BUILD_ROOT)doc
+STRIP_FROM_PATH        = $(SOURCE_ROOT)include/libxml \
+                         $(BUILD_ROOT)include/libxml
+JAVADOC_AUTOBRIEF      = YES
+OPTIMIZE_OUTPUT_FOR_C  = YES
+EXTRACT_LOCAL_CLASSES  = NO
+HIDE_UNDOC_MEMBERS     = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = YES
+SHOW_INCLUDE_FILES     = NO
+WARN_NO_PARAMDOC       = YES
+WARN_AS_ERROR          = $(DOXYGEN_WARN_AS_ERROR)
+INPUT                  = $(SOURCE_ROOT)doc/mainpage.md \
+                         $(SOURCE_ROOT)include/libxml/c14n.h \
+                         $(SOURCE_ROOT)include/libxml/catalog.h \
+                         $(SOURCE_ROOT)include/libxml/chvalid.h \
+                         $(SOURCE_ROOT)include/libxml/debugXML.h \
+                         $(SOURCE_ROOT)include/libxml/dict.h \
+                         $(SOURCE_ROOT)include/libxml/encoding.h \
+                         $(SOURCE_ROOT)include/libxml/entities.h \
+                         $(SOURCE_ROOT)include/libxml/hash.h \
+                         $(SOURCE_ROOT)include/libxml/HTMLparser.h \
+                         $(SOURCE_ROOT)include/libxml/HTMLtree.h \
+                         $(SOURCE_ROOT)include/libxml/list.h \
+                         $(SOURCE_ROOT)include/libxml/parser.h \
+                         $(SOURCE_ROOT)include/libxml/parserInternals.h \
+                         $(SOURCE_ROOT)include/libxml/pattern.h \
+                         $(SOURCE_ROOT)include/libxml/relaxng.h \
+                         $(SOURCE_ROOT)include/libxml/SAX2.h \
+                         $(SOURCE_ROOT)include/libxml/schemasInternals.h \
+                         $(SOURCE_ROOT)include/libxml/schematron.h \
+                         $(SOURCE_ROOT)include/libxml/threads.h \
+                         $(SOURCE_ROOT)include/libxml/tree.h \
+                         $(SOURCE_ROOT)include/libxml/uri.h \
+                         $(SOURCE_ROOT)include/libxml/valid.h \
+                         $(SOURCE_ROOT)include/libxml/xinclude.h \
+                         $(SOURCE_ROOT)include/libxml/xlink.h \
+                         $(SOURCE_ROOT)include/libxml/xmlautomata.h \
+                         $(SOURCE_ROOT)include/libxml/xmlerror.h \
+                         $(SOURCE_ROOT)include/libxml/xmlIO.h \
+                         $(SOURCE_ROOT)include/libxml/xmlmemory.h \
+                         $(SOURCE_ROOT)include/libxml/xmlmodule.h \
+                         $(SOURCE_ROOT)include/libxml/xmlreader.h \
+                         $(SOURCE_ROOT)include/libxml/xmlregexp.h \
+                         $(SOURCE_ROOT)include/libxml/xmlsave.h \
+                         $(SOURCE_ROOT)include/libxml/xmlschemas.h \
+                         $(SOURCE_ROOT)include/libxml/xmlschemastypes.h \
+                         $(SOURCE_ROOT)include/libxml/xmlstring.h \
+                         $(BUILD_ROOT)include/libxml/xmlversion.h \
+                         $(SOURCE_ROOT)include/libxml/xmlwriter.h \
+                         $(SOURCE_ROOT)include/libxml/xpath.h \
+                         $(SOURCE_ROOT)include/libxml/xpathInternals.h \
+                         $(SOURCE_ROOT)include/libxml/xpointer.h \
+                         $(SOURCE_ROOT)buf.c \
+                         $(SOURCE_ROOT)c14n.c \
+                         $(SOURCE_ROOT)catalog.c \
+                         $(SOURCE_ROOT)chvalid.c \
+                         $(SOURCE_ROOT)debugXML.c \
+                         $(SOURCE_ROOT)dict.c \
+                         $(SOURCE_ROOT)encoding.c \
+                         $(SOURCE_ROOT)entities.c \
+                         $(SOURCE_ROOT)error.c \
+                         $(SOURCE_ROOT)globals.c \
+                         $(SOURCE_ROOT)hash.c \
+                         $(SOURCE_ROOT)HTMLparser.c \
+                         $(SOURCE_ROOT)HTMLtree.c \
+                         $(SOURCE_ROOT)list.c \
+                         $(SOURCE_ROOT)parser.c \
+                         $(SOURCE_ROOT)parserInternals.c \
+                         $(SOURCE_ROOT)pattern.c \
+                         $(SOURCE_ROOT)relaxng.c \
+                         $(SOURCE_ROOT)SAX2.c \
+                         $(SOURCE_ROOT)schematron.c \
+                         $(SOURCE_ROOT)threads.c \
+                         $(SOURCE_ROOT)tree.c \
+                         $(SOURCE_ROOT)uri.c \
+                         $(SOURCE_ROOT)valid.c \
+                         $(SOURCE_ROOT)xinclude.c \
+                         $(SOURCE_ROOT)xlink.c \
+                         $(SOURCE_ROOT)xmlcatalog.c \
+                         $(SOURCE_ROOT)xmlIO.c \
+                         $(SOURCE_ROOT)xmlmemory.c \
+                         $(SOURCE_ROOT)xmlmodule.c \
+                         $(SOURCE_ROOT)xmlreader.c \
+                         $(SOURCE_ROOT)xmlregexp.c \
+                         $(SOURCE_ROOT)xmlsave.c \
+                         $(SOURCE_ROOT)xmlschemas.c \
+                         $(SOURCE_ROOT)xmlschemastypes.c \
+                         $(SOURCE_ROOT)xmlstring.c \
+                         $(SOURCE_ROOT)xmlwriter.c \
+                         $(SOURCE_ROOT)xpath.c \
+                         $(SOURCE_ROOT)xpointer.c
+EXCLUDE_SYMLINKS       = YES
+USE_MDFILE_AS_MAINPAGE = $(SOURCE_ROOT)doc/mainpage.md
+VERBATIM_HEADERS       = NO
+HTML_EXTRA_STYLESHEET  = $(SOURCE_ROOT)doc/libxml2.css
+DISABLE_INDEX          = NO
+GENERATE_TREEVIEW      = NO
+ENUM_VALUES_PER_LINE   = 0
+GENERATE_LATEX         = NO
+GENERATE_XML           = YES
+XML_PROGRAMLISTING     = NO
+MACRO_EXPANSION        = YES
+INCLUDE_PATH           = $(SOURCE_ROOT). \
+                         $(SOURCE_ROOT)include \
+                         $(BUILD_ROOT). \
+                         $(BUILD_ROOT)include
+PREDEFINED             = XML_TREE_INTERNALS
+HAVE_DOT               = NO
diff -pruN 2.14.6+dfsg-0.1/doc/Makefile.am 2.15.0+dfsg-0.3/doc/Makefile.am
--- 2.14.6+dfsg-0.1/doc/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -1,28 +1,56 @@
 ## Process this file with automake to produce Makefile.in
-SUBDIRS = . devhelp
-
-nobase_dist_doc_DATA = \
-	xmlcatalog.html \
-	xmllint.html
-
-dist_man_MANS = xml2-config.1 xmllint.1 xmlcatalog.1
 
 EXTRA_DIST = \
-	apibuild.py \
-	libxml2-api.xml \
+	Doxyfile \
+	libxml2.css \
+	mainpage.md \
+	meson.build \
+	xml2-config.1 \
 	xmlcatalog.xml \
-	xmllint.xml \
-	meson.build
+	xmllint.xml
+
+all-local: html.stamp
+
+html.stamp: Doxyfile
+	SOURCE_ROOT=$(top_srcdir)/ BUILD_ROOT=$(top_builddir)/ \
+	    $(DOXYGEN) -q $<
+	@touch $@
+
+CLEANFILES = html.stamp
 
+clean-local:
+	rm -rf html xml
+
+if WITH_DOCS
+
+man_MANS = xml2-config.1 xmllint.1
+doc_DATA = xmllint.html
+CLEANFILES += xmllint.1 xmllint.html
+
+if WITH_CATALOG_SOURCES
+if WITH_OUTPUT_SOURCES
+man_MANS += xmlcatalog.1
+doc_DATA += xmlcatalog.html
+CLEANFILES += xmlcatalog.1 xmlcatalog.html
+endif
+endif
+
+DOCBOOK_MAN  = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
 DOCBOOK_HTML = http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
 
-rebuild:
-	cd $(srcdir) && ./apibuild.py
-	cd $(srcdir) && $(XSLTPROC) --nonet xmllint.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet -o xmllint.html $(DOCBOOK_HTML) xmllint.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet xmlcatalog.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet -o xmlcatalog.html $(DOCBOOK_HTML) xmlcatalog.xml
-	cd devhelp && $(MAKE) rebuild
-	cd .. && $(MAKE) rebuild_testapi
+.xml.1:
+	$(XSLTPROC) --nonet --novalid --param man.output.quietly 1 \
+	    -o $@ $(DOCBOOK_MAN) $<
+
+.xml.html:
+	$(XSLTPROC) --nonet --novalid -o $@ $(DOCBOOK_HTML) $<
+
+install-data-local:
+	$(MKDIR_P) "$(DESTDIR)$(docdir)/html/search"
+	$(INSTALL_DATA) html/*.* "$(DESTDIR)$(docdir)/html"
+	$(INSTALL_DATA) html/search/*.* "$(DESTDIR)$(docdir)/html/search"
+
+uninstall-local:
+	-rm -rf "$(DESTDIR)$(docdir)/html"
 
-.PHONY: rebuild
+endif
diff -pruN 2.14.6+dfsg-0.1/doc/Makefile.in 2.15.0+dfsg-0.3/doc/Makefile.in
--- 2.14.6+dfsg-0.1/doc/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -88,6 +88,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+@WITH_DOCS_TRUE@am__append_1 = xmllint.1 xmllint.html
+@WITH_CATALOG_SOURCES_TRUE@@WITH_DOCS_TRUE@@WITH_OUTPUT_SOURCES_TRUE@am__append_2 = xmlcatalog.1
+@WITH_CATALOG_SOURCES_TRUE@@WITH_DOCS_TRUE@@WITH_OUTPUT_SOURCES_TRUE@am__append_3 = xmlcatalog.html
+@WITH_CATALOG_SOURCES_TRUE@@WITH_DOCS_TRUE@@WITH_OUTPUT_SOURCES_TRUE@am__append_4 = xmlcatalog.1 xmlcatalog.html
 subdir = doc
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
@@ -98,8 +102,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/a
 	$(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(nobase_dist_doc_DATA) \
-	$(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -118,14 +121,6 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -161,61 +156,11 @@ am__uninstall_files_from_dir = { \
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"
 NROFF = nroff
-MANS = $(dist_man_MANS)
-DATA = $(nobase_dist_doc_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir distdir-am
+MANS = $(man_MANS)
+DATA = $(doc_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in
+am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_CFLAGS = @AM_CFLAGS@
@@ -236,6 +181,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -275,8 +221,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -314,10 +258,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -326,7 +268,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -412,23 +353,24 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = . devhelp
-nobase_dist_doc_DATA = \
-	xmlcatalog.html \
-	xmllint.html
-
-dist_man_MANS = xml2-config.1 xmllint.1 xmlcatalog.1
 EXTRA_DIST = \
-	apibuild.py \
-	libxml2-api.xml \
+	Doxyfile \
+	libxml2.css \
+	mainpage.md \
+	meson.build \
+	xml2-config.1 \
 	xmlcatalog.xml \
-	xmllint.xml \
-	meson.build
+	xmllint.xml
 
-DOCBOOK_HTML = http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
-all: all-recursive
+CLEANFILES = html.stamp $(am__append_1) $(am__append_4)
+@WITH_DOCS_TRUE@man_MANS = xml2-config.1 xmllint.1 $(am__append_2)
+@WITH_DOCS_TRUE@doc_DATA = xmllint.html $(am__append_3)
+@WITH_DOCS_TRUE@DOCBOOK_MAN = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+@WITH_DOCS_TRUE@DOCBOOK_HTML = http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
+all: all-am
 
 .SUFFIXES:
+.SUFFIXES: .1 .html .xml
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -464,10 +406,10 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-install-man1: $(dist_man_MANS)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
 	@list1=''; \
-	list2='$(dist_man_MANS)'; \
+	list2='$(man_MANS)'; \
 	test -n "$(man1dir)" \
 	  && test -n "`echo $$list1$$list2`" \
 	  || exit 0; \
@@ -502,134 +444,38 @@ uninstall-man1:
 	@$(NORMAL_UNINSTALL)
 	@list=''; test -n "$(man1dir)" || exit 0; \
 	files=`{ for i in $$list; do echo "$$i"; done; \
-	l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
 	  sed -n '/\.1[a-z]*$$/p'; \
 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
 	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
-install-nobase_dist_docDATA: $(nobase_dist_doc_DATA)
+install-docDATA: $(doc_DATA)
 	@$(NORMAL_INSTALL)
-	@list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+	@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
 	if test -n "$$list"; then \
 	  echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
 	  $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
 	fi; \
-	$(am__nobase_list) | while read dir files; do \
-	  xfiles=; for file in $$files; do \
-	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
-	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
-	  test -z "$$xfiles" || { \
-	    test "x$$dir" = x. || { \
-	      echo " $(MKDIR_P) '$(DESTDIR)$(docdir)/$$dir'"; \
-	      $(MKDIR_P) "$(DESTDIR)$(docdir)/$$dir"; }; \
-	    echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(docdir)/$$dir'"; \
-	    $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(docdir)/$$dir" || exit $$?; }; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
 	done
 
-uninstall-nobase_dist_docDATA:
+uninstall-docDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
-	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+	@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
 
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
+ctags CTAGS:
 
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
+cscope cscopelist:
 
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 distdir: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) distdir-am
 
@@ -663,48 +509,22 @@ distdir-am: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
 check-am: all-am
-check: check-recursive
-all-am: Makefile $(MANS) $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
+check: check-am
+all-am: Makefile $(MANS) $(DATA) all-local
+installdirs:
 	for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
 
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-recursive
+installcheck: installcheck-am
 install-strip:
 	if test -z '$(STRIP)'; then \
 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
@@ -718,6 +538,7 @@ install-strip:
 mostlyclean-generic:
 
 clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -726,104 +547,119 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
+@WITH_DOCS_FALSE@install-data-local:
+@WITH_DOCS_FALSE@uninstall-local:
+clean: clean-am
 
-clean-am: clean-generic clean-libtool mostlyclean-am
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
 
-distclean: distclean-recursive
+distclean: distclean-am
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
+distclean-am: clean-am distclean-generic
 
-dvi: dvi-recursive
+dvi: dvi-am
 
 dvi-am:
 
-html: html-recursive
+html: html-am
 
 html-am:
 
-info: info-recursive
+info: info-am
 
 info-am:
 
-install-data-am: install-man install-nobase_dist_docDATA
+install-data-am: install-data-local install-docDATA install-man
 
-install-dvi: install-dvi-recursive
+install-dvi: install-dvi-am
 
 install-dvi-am:
 
 install-exec-am:
 
-install-html: install-html-recursive
+install-html: install-html-am
 
 install-html-am:
 
-install-info: install-info-recursive
+install-info: install-info-am
 
 install-info-am:
 
 install-man: install-man1
 
-install-pdf: install-pdf-recursive
+install-pdf: install-pdf-am
 
 install-pdf-am:
 
-install-ps: install-ps-recursive
+install-ps: install-ps-am
 
 install-ps-am:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-recursive
+maintainer-clean: maintainer-clean-am
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-recursive
+mostlyclean: mostlyclean-am
 
 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
 
-pdf: pdf-recursive
+pdf: pdf-am
 
 pdf-am:
 
-ps: ps-recursive
+ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-man uninstall-nobase_dist_docDATA
+uninstall-am: uninstall-docDATA uninstall-local uninstall-man
 
 uninstall-man: uninstall-man1
 
-.MAKE: $(am__recursive_targets) install-am install-strip
+.MAKE: install-am install-strip
 
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-	check-am clean clean-generic clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
+.PHONY: all all-am all-local check check-am clean clean-generic \
+	clean-libtool clean-local cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local install-docDATA install-dvi \
 	install-dvi-am install-exec install-exec-am install-html \
 	install-html-am install-info install-info-am install-man \
-	install-man1 install-nobase_dist_docDATA install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-man \
-	uninstall-man1 uninstall-nobase_dist_docDATA
+	install-man1 install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags-am uninstall uninstall-am uninstall-docDATA \
+	uninstall-local uninstall-man uninstall-man1
 
 .PRECIOUS: Makefile
 
 
-rebuild:
-	cd $(srcdir) && ./apibuild.py
-	cd $(srcdir) && $(XSLTPROC) --nonet xmllint.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet -o xmllint.html $(DOCBOOK_HTML) xmllint.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet xmlcatalog.xml
-	cd $(srcdir) && $(XSLTPROC) --nonet -o xmlcatalog.html $(DOCBOOK_HTML) xmlcatalog.xml
-	cd devhelp && $(MAKE) rebuild
-	cd .. && $(MAKE) rebuild_testapi
+all-local: html.stamp
+
+html.stamp: Doxyfile
+	SOURCE_ROOT=$(top_srcdir)/ BUILD_ROOT=$(top_builddir)/ \
+	    $(DOXYGEN) -q $<
+	@touch $@
+
+clean-local:
+	rm -rf html xml
+
+@WITH_DOCS_TRUE@.xml.1:
+@WITH_DOCS_TRUE@	$(XSLTPROC) --nonet --novalid --param man.output.quietly 1 \
+@WITH_DOCS_TRUE@	    -o $@ $(DOCBOOK_MAN) $<
+
+@WITH_DOCS_TRUE@.xml.html:
+@WITH_DOCS_TRUE@	$(XSLTPROC) --nonet --novalid -o $@ $(DOCBOOK_HTML) $<
+
+@WITH_DOCS_TRUE@install-data-local:
+@WITH_DOCS_TRUE@	$(MKDIR_P) "$(DESTDIR)$(docdir)/html/search"
+@WITH_DOCS_TRUE@	$(INSTALL_DATA) html/*.* "$(DESTDIR)$(docdir)/html"
+@WITH_DOCS_TRUE@	$(INSTALL_DATA) html/search/*.* "$(DESTDIR)$(docdir)/html/search"
 
-.PHONY: rebuild
+@WITH_DOCS_TRUE@uninstall-local:
+@WITH_DOCS_TRUE@	-rm -rf "$(DESTDIR)$(docdir)/html"
 
 # 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.
diff -pruN 2.14.6+dfsg-0.1/doc/apibuild.py 2.15.0+dfsg-0.3/doc/apibuild.py
--- 2.14.6+dfsg-0.1/doc/apibuild.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/apibuild.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,1928 +0,0 @@
-#!/usr/bin/env python3
-#
-# This is the API builder, it parses the C sources and build the
-# API formal description in XML.
-#
-# See Copyright for the status of this software.
-#
-# daniel@veillard.com
-#
-import os, sys
-import string
-import glob
-
-debug=0
-#debugsym='ignorableWhitespaceSAXFunc'
-debugsym=None
-
-#
-# C parser analysis code
-#
-ignored_files = {
-  "config.h": "generated portability layer",
-  "libxml.h": "internal only",
-  "lintmain.c": "executable",
-  "testModule.c": "test tool",
-  "testapi.c": "generated regression tests",
-  "runtest.c": "regression tests program",
-  "runsuite.c": "regression tests program",
-  "tst.c": "not part of the library",
-  "test.c": "not part of the library",
-  "testdso.c": "test for dynamid shared libraries",
-  "testrecurse.c": "test for entities recursions",
-  "timsort.h": "Internal header only for xpath.c 2.9.0",
-  "nanoftp.h": "empty",
-  "SAX.h": "empty",
-  "xmlunicode.h": "empty",
-  "xmllint.c": "executable",
-  "xmlcatalog.c": "executable",
-}
-
-ignored_words = {
-  "WINAPI": (0, "Windows keyword"),
-  "LIBXML_DLL_IMPORT": (0, "Special macro to flag external keywords"),
-  "XMLPUBVAR": (0, "Special macro for extern vars for win32"),
-  "XSLTPUBVAR": (0, "Special macro for extern vars for win32"),
-  "EXSLTPUBVAR": (0, "Special macro for extern vars for win32"),
-  "XMLPUBFUN": (0, "Special macro for extern funcs for win32"),
-  "XSLTPUBFUN": (0, "Special macro for extern funcs for win32"),
-  "EXSLTPUBFUN": (0, "Special macro for extern funcs for win32"),
-  "XSLTCALL": (0, "Special macro for win32 calls"),
-  "EXSLTCALL": (0, "Special macro for win32 calls"),
-  "__declspec": (3, "Windows keyword"),
-  "__stdcall": (0, "Windows keyword"),
-  "ATTRIBUTE_UNUSED": (0, "macro keyword"),
-  "ATTRIBUTE_DESTRUCTOR": (0, "macro keyword"),
-  "LIBEXSLT_PUBLIC": (0, "macro keyword"),
-  "X_IN_Y": (5, "macro function builder"),
-  "ATTRIBUTE_ALLOC_SIZE": (3, "macro for gcc checking extension"),
-  "ATTRIBUTE_PRINTF": (5, "macro for gcc printf args checking extension"),
-  "LIBXML_ATTR_FORMAT": (5, "macro for gcc printf args checking extension"),
-  "LIBXML_ATTR_ALLOC_SIZE": (3, "macro for gcc checking extension"),
-  "ATTRIBUTE_NO_SANITIZE": (3, "macro keyword"),
-  "ATTRIBUTE_NO_SANITIZE_INTEGER": (0, "macro keyword"),
-  "ATTRIBUTE_COUNTED_BY": (3, "macro keyword"),
-  "XML_DEPRECATED": (0, "macro keyword"),
-  "XML_DEPRECATED_MEMBER": (0, "macro keyword"),
-  "XML_THREAD_LOCAL": (0, "macro keyword"),
-}
-
-def escape(raw):
-    raw = raw.replace('&', '&amp;')
-    raw = raw.replace('<', '&lt;')
-    raw = raw.replace('>', '&gt;')
-    raw = raw.replace("'", '&apos;')
-    raw = raw.replace('"', '&quot;')
-    return raw
-
-class identifier:
-    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
-        self.extra = extra
-        self.lineno = lineno
-        self.static = 0
-        if conditionals == None or len(conditionals) == 0:
-            self.conditionals = None
-        else:
-            self.conditionals = conditionals[:]
-        if self.name == debugsym:
-            print("=> define %s : %s" % (debugsym, (module, type, info,
-                                         extra, conditionals)))
-
-    def __repr__(self):
-        r = "%s %s:" % (self.type, self.name)
-        if self.static:
-            r = r + " static"
-        if self.module != None:
-            r = r + " from %s" % (self.module)
-        if self.info != None:
-            r = r + " " +  repr(self.info)
-        if self.extra != None:
-            r = r + " " + repr(self.extra)
-        if self.conditionals != None:
-            r = r + " " + repr(self.conditionals)
-        return r
-
-
-    def set_header(self, header):
-        self.header = header
-    def set_module(self, module):
-        self.module = module
-    def set_type(self, type):
-        self.type = type
-    def set_info(self, info):
-        self.info = info
-    def set_extra(self, extra):
-        self.extra = extra
-    def set_lineno(self, lineno):
-        self.lineno = lineno
-    def set_static(self, static):
-        self.static = static
-    def set_conditionals(self, conditionals):
-        if conditionals == None or len(conditionals) == 0:
-            self.conditionals = None
-        else:
-            self.conditionals = conditionals[:]
-
-    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):
-        return self.type
-    def get_info(self):
-        return self.info
-    def get_lineno(self):
-        return self.lineno
-    def get_extra(self):
-        return self.extra
-    def get_static(self):
-        return self.static
-    def get_conditionals(self):
-        return self.conditionals
-
-    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 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)
-        if info != None:
-            self.set_info(info)
-        if extra != None:
-            self.set_extra(extra)
-        if conditionals != None:
-            self.set_conditionals(conditionals)
-
-class index:
-    def __init__(self, name = "noname"):
-        self.name = name
-        self.identifiers = {}
-        self.functions = {}
-        self.variables = {}
-        self.includes = {}
-        self.structs = {}
-        self.enums = {}
-        self.typedefs = {}
-        self.macros = {}
-        self.references = {}
-        self.info = {}
-
-    def add_ref(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
-        if name[0:2] == '__':
-            return None
-        d = None
-        if name in self.identifiers:
-           d = self.identifiers[name]
-           d.update(header, module, type, info, extra, conditionals)
-        else:
-           d = identifier(name, header, module, type, lineno, info, extra, conditionals)
-           self.identifiers[name] = d
-
-        if d != None and static == 1:
-            d.set_static(1)
-
-        if d != None and name != None and type != None:
-            self.references[name] = d
-
-        if name == debugsym:
-            print("New ref: %s" % (d))
-
-        return d
-
-    def add(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
-        if name[0:2] == '__':
-            return None
-        d = None
-        if name in self.identifiers:
-           d = self.identifiers[name]
-           d.update(header, module, type, info, extra, conditionals)
-        else:
-           d = identifier(name, header, module, type, lineno, info, extra, conditionals)
-           self.identifiers[name] = d
-
-        if d != None and static == 1:
-            d.set_static(1)
-
-        if d != None and name != None and type != None:
-            if type == "function":
-                self.functions[name] = d
-            elif type == "functype":
-                self.functions[name] = d
-            elif type == "variable":
-                self.variables[name] = d
-            elif type == "include":
-                self.includes[name] = d
-            elif type == "struct":
-                self.structs[name] = d
-            elif type == "enum":
-                self.enums[name] = d
-            elif type == "typedef":
-                self.typedefs[name] = d
-            elif type == "macro":
-                self.macros[name] = d
-            else:
-                print("Unable to register type ", type)
-
-        if name == debugsym:
-            print("New symbol: %s" % (d))
-
-        return d
-
-    def merge(self, idx):
-        for id in list(idx.functions.keys()):
-              #
-              # macro might be used to override functions or variables
-              # definitions
-              #
-             if id in self.macros:
-                 del self.macros[id]
-             if id in self.functions:
-                 print("function %s from %s redeclared in %s" % (
-                    id, self.functions[id].header, idx.functions[id].header))
-             else:
-                 self.functions[id] = idx.functions[id]
-                 self.identifiers[id] = idx.functions[id]
-        for id in list(idx.variables.keys()):
-              #
-              # macro might be used to override functions or variables
-              # definitions
-              #
-             if id in self.macros:
-                 del self.macros[id]
-             if id in self.variables:
-                 print("variable %s from %s redeclared in %s" % (
-                    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 list(idx.structs.keys()):
-             if id in self.structs:
-                 print("struct %s from %s redeclared in %s" % (
-                    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 list(idx.typedefs.keys()):
-             if id in self.typedefs:
-                 print("typedef %s from %s redeclared in %s" % (
-                    id, self.typedefs[id].header, idx.typedefs[id].header))
-             else:
-                 self.typedefs[id] = idx.typedefs[id]
-                 self.identifiers[id] = idx.typedefs[id]
-        for id in list(idx.macros.keys()):
-              #
-              # macro might be used to override functions or variables
-              # definitions
-              #
-             if id in self.variables:
-                 continue
-             if id in self.functions:
-                 continue
-             if id in self.enums:
-                 continue
-             if id in self.macros and id != 'XML_OP':
-                 print("macro %s from %s redeclared in %s" % (
-                    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 list(idx.enums.keys()):
-             if id in self.enums:
-                 print("enum %s from %s redeclared in %s" % (
-                    id, self.enums[id].header, idx.enums[id].header))
-             else:
-                 self.enums[id] = idx.enums[id]
-                 self.identifiers[id] = idx.enums[id]
-
-    def merge_public(self, idx):
-        for id in list(idx.functions.keys()):
-             if id in self.functions:
-                 # check that function condition agrees with header
-                 if idx.functions[id].conditionals != \
-                    self.functions[id].conditionals:
-                     print("Header condition differs from Function for %s:" \
-                        % id)
-                     print("  H: %s" % self.functions[id].conditionals)
-                     print("  C: %s" % idx.functions[id].conditionals)
-                 up = idx.functions[id]
-                 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)
-
-        for id in list(idx.variables.keys()):
-            if id in self.variables:
-                # check that variable condition agrees with header
-                # TODO: produces many false positives
-                #if idx.variables[id].conditionals != \
-                #   self.variables[id].conditionals:
-                #    print("Header condition differs from Variable for %s:" \
-                #       % id)
-                #    print("  H: %s" % self.variables[id].conditionals)
-                #    print("  C: %s" % idx.variables[id].conditionals)
-                up = idx.variables[id]
-                self.variables[id].update(None, up.module, up.type, up.info, up.extra)
-
-    def analyze_dict(self, type, dict):
-        count = 0
-        public = 0
-        for name in list(dict.keys()):
-            id = dict[name]
-            count = count + 1
-            if id.static == 0:
-                public = public + 1
-        if count != public:
-            print("  %d %s , %d public" % (count, type, public))
-        elif count != 0:
-            print("  %d public %s" % (count, type))
-
-
-    def analyze(self):
-        self.analyze_dict("functions", self.functions)
-        self.analyze_dict("variables", self.variables)
-        self.analyze_dict("structs", self.structs)
-        self.analyze_dict("typedefs", self.typedefs)
-        self.analyze_dict("macros", self.macros)
-
-class CLexer:
-    """A lexer for the C language, tokenize the input by reading and
-       analyzing it line by line"""
-    def __init__(self, input):
-        self.input = input
-        self.tokens = []
-        self.line = ""
-        self.lineno = 0
-
-    def getline(self):
-        line = ''
-        while line == '':
-            line = self.input.readline()
-            if not line:
-                return None
-            self.lineno = self.lineno + 1
-            line = line.lstrip()
-            line = line.rstrip()
-            if line == '':
-                continue
-            while line[-1] == '\\':
-                line = line[:-1]
-                n = self.input.readline()
-                self.lineno = self.lineno + 1
-                n = n.lstrip()
-                n = n.rstrip()
-                if not n:
-                    break
-                else:
-                    line = line + n
-        return line
-
-    def getlineno(self):
-        return self.lineno
-
-    def push(self, token):
-        self.tokens.insert(0, token);
-
-    def debug(self):
-        print("Last token: ", self.last)
-        print("Token queue: ", self.tokens)
-        print("Line %d end: " % (self.lineno), self.line)
-
-    def token(self):
-        while self.tokens == []:
-            if self.line == "":
-                line = self.getline()
-            else:
-                line = self.line
-                self.line = ""
-            if line == None:
-                return None
-
-            if line[0] == '#':
-                self.tokens = list(map((lambda x: ('preproc', x)),
-                                  line.split()))
-                break;
-            l = len(line)
-            if line[0] == '"' or line[0] == "'":
-                end = line[0]
-                line = line[1:]
-                found = 0
-                tok = ""
-                while found == 0:
-                    i = 0
-                    l = len(line)
-                    while i < l:
-                        if line[i] == end:
-                            self.line = line[i+1:]
-                            line = line[:i]
-                            l = i
-                            found = 1
-                            break
-                        if line[i] == '\\':
-                            i = i + 1
-                        i = i + 1
-                    tok = tok + line
-                    if found == 0:
-                        line = self.getline()
-                        if line == None:
-                            return None
-                self.last = ('string', tok)
-                return self.last
-
-            if l >= 2 and line[0] == '/' and line[1] == '*':
-                line = line[2:]
-                found = 0
-                tok = ""
-                while found == 0:
-                    i = 0
-                    l = len(line)
-                    while i < l:
-                        if line[i] == '*' and i+1 < l and line[i+1] == '/':
-                            self.line = line[i+2:]
-                            line = line[:i-1]
-                            l = i
-                            found = 1
-                            break
-                        i = i + 1
-                    if tok != "":
-                        tok = tok + "\n"
-                    tok = tok + line
-                    if found == 0:
-                        line = self.getline()
-                        if line == None:
-                            return None
-                self.last = ('comment', tok)
-                return self.last
-            if l >= 2 and line[0] == '/' and line[1] == '/':
-                line = line[2:]
-                self.last = ('comment', line)
-                return self.last
-            i = 0
-            while i < l:
-                if line[i] == '/' and i+1 < l and line[i+1] == '/':
-                    self.line = line[i:]
-                    line = line[:i]
-                    break
-                if line[i] == '/' and i+1 < l and line[i+1] == '*':
-                    self.line = line[i:]
-                    line = line[:i]
-                    break
-                if line[i] == '"' or line[i] == "'":
-                    self.line = line[i:]
-                    line = line[:i]
-                    break
-                i = i + 1
-            l = len(line)
-            i = 0
-            while i < l:
-                if line[i] == ' ' or line[i] == '\t':
-                    i = i + 1
-                    continue
-                o = ord(line[i])
-                if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
-                   (o >= 48 and o <= 57):
-                    s = i
-                    while i < l:
-                        o = ord(line[i])
-                        if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
-                           (o >= 48 and o <= 57) or \
-			   (" \t(){}:;,+-*/%&!|[]=><".find(line[i])) == -1:
-                            i = i + 1
-                        else:
-                            break
-                    self.tokens.append(('name', line[s:i]))
-                    continue
-                if "(){}:;,[]".find(line[i]) != -1:
-#                 if line[i] == '(' or line[i] == ')' or line[i] == '{' or \
-#                    line[i] == '}' or line[i] == ':' or line[i] == ';' or \
-#                    line[i] == ',' or line[i] == '[' or line[i] == ']':
-                    self.tokens.append(('sep', line[i]))
-                    i = i + 1
-                    continue
-                if "+-*><=/%&!|.".find(line[i]) != -1:
-#                 if line[i] == '+' or line[i] == '-' or line[i] == '*' or \
-#                    line[i] == '>' or line[i] == '<' or line[i] == '=' or \
-#                    line[i] == '/' or line[i] == '%' or line[i] == '&' or \
-#                    line[i] == '!' or line[i] == '|' or line[i] == '.':
-                    if line[i] == '.' and  i + 2 < l and \
-                       line[i+1] == '.' and line[i+2] == '.':
-                        self.tokens.append(('name', '...'))
-                        i = i + 3
-                        continue
-
-                    j = i + 1
-                    if j < l and (
-                       "+-*><=/%&!|".find(line[j]) != -1):
-#                        line[j] == '+' or line[j] == '-' or line[j] == '*' or \
-#                        line[j] == '>' or line[j] == '<' or line[j] == '=' or \
-#                        line[j] == '/' or line[j] == '%' or line[j] == '&' or \
-#                        line[j] == '!' or line[j] == '|'):
-                        self.tokens.append(('op', line[i:j+1]))
-                        i = j + 1
-                    else:
-                        self.tokens.append(('op', line[i]))
-                        i = i + 1
-                    continue
-                s = i
-                while i < l:
-                    o = ord(line[i])
-                    if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
-                       (o >= 48 and o <= 57) or (
-                        " \t(){}:;,+-*/%&!|[]=><".find(line[i]) == -1):
-#                         line[i] != ' ' and line[i] != '\t' and
-#                         line[i] != '(' and line[i] != ')' and
-#                         line[i] != '{'  and line[i] != '}' and
-#                         line[i] != ':' and line[i] != ';' and
-#                         line[i] != ',' and line[i] != '+' and
-#                         line[i] != '-' and line[i] != '*' and
-#                         line[i] != '/' and line[i] != '%' and
-#                         line[i] != '&' and line[i] != '!' and
-#                         line[i] != '|' and line[i] != '[' and
-#                         line[i] != ']' and line[i] != '=' and
-#                         line[i] != '*' and line[i] != '>' and
-#                         line[i] != '<'):
-                        i = i + 1
-                    else:
-                        break
-                self.tokens.append(('name', line[s:i]))
-
-        tok = self.tokens[0]
-        self.tokens = self.tokens[1:]
-        self.last = tok
-        return tok
-
-class CParser:
-    """The C module parser"""
-    def __init__(self, filename, idx = None):
-        self.filename = filename
-        if len(filename) > 2 and filename[-2:] == '.h':
-            self.is_header = 1
-        else:
-            self.is_header = 0
-        self.input = open(filename)
-        self.lexer = CLexer(self.input)
-        if idx == None:
-            self.index = index()
-        else:
-            self.index = idx
-        self.top_comment = ""
-        self.last_comment = ""
-        self.comment = None
-        self.collect_ref = 0
-        self.doc_disable = 0
-        self.conditionals = []
-        self.defines = []
-
-    def collect_references(self):
-        self.collect_ref = 1
-
-    def disable(self):
-        self.doc_disable = 1
-
-    def enable(self):
-        self.doc_disable = 0
-
-    def lineno(self):
-        return self.lexer.getlineno()
-
-    def index_add(self, name, module, static, type, info=None, extra = None):
-        if self.doc_disable:
-            return
-        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):
-        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.doc_disable:
-            return
-        print(msg)
-
-    def error(self, msg, token=-1):
-        if self.doc_disable:
-            return
-
-        print("Parse Error: " + msg)
-        if token != -1:
-            print("Got token ", token)
-        self.lexer.debug()
-        sys.exit(1)
-
-    def debug(self, msg, token=-1):
-        print("Debug: " + msg)
-        if token != -1:
-            print("Got token ", token)
-        self.lexer.debug()
-
-    def parseTopComment(self, comment):
-        res = {}
-        lines = comment.split("\n")
-        item = None
-        for line in lines:
-            while line != "" and (line[0] == ' ' or line[0] == '\t'):
-                line = line[1:]
-            while line != "" and line[0] == '*':
-                line = line[1:]
-            while line != "" and (line[0] == ' ' or line[0] == '\t'):
-                line = line[1:]
-            try:
-                (it, line) = line.split(":", 1)
-                item = it
-                while line != "" and (line[0] == ' ' or line[0] == '\t'):
-                    line = line[1:]
-                if item in res:
-                    res[item] = res[item] + " " + line
-                else:
-                    res[item] = line
-            except:
-                if item != None:
-                    if item in res:
-                        res[item] = res[item] + " " + line
-                    else:
-                        res[item] = line
-        self.index.info = res
-
-    def parseComment(self, token):
-        if self.top_comment == "":
-            self.top_comment = token[1]
-        if self.comment == None or token[1][0] == '*':
-            self.comment = token[1];
-        else:
-            self.comment = self.comment + token[1]
-        token = self.lexer.token()
-
-        if self.comment.find("DOC_DISABLE") != -1:
-            self.disable()
-
-        if self.comment.find("DOC_ENABLE") != -1:
-            self.enable()
-
-        return token
-
-    #
-    # Parse a simple comment block for typedefs or global variables
-    #
-    def parseSimpleComment(self, name, quiet = False):
-        if name[0:2] == '__':
-            quiet = 1
-
-        args = []
-        desc = ""
-
-        if self.comment == None:
-            if not quiet:
-                self.warning("Missing comment for %s" % (name))
-            return(None)
-        if self.comment[0] != '*':
-            if not quiet:
-                self.warning("Missing * in comment for %s" % (name))
-            return(None)
-        lines = self.comment.split('\n')
-        if lines[0] == '*':
-            del lines[0]
-        if lines[0] != "* %s:" % (name):
-            if not quiet:
-                self.warning("Misformatted comment for %s" % (name))
-                self.warning("  Expecting '* %s:' got '%s'" % (name, lines[0]))
-            return(None)
-        del lines[0]
-        while len(lines) > 0 and lines[0] == '*':
-            del lines[0]
-        desc = ""
-        while len(lines) > 0:
-            l = lines[0]
-            while len(l) > 0 and l[0] == '*':
-                l = l[1:]
-            l = l.strip()
-            desc = desc + " " + l
-            del lines[0]
-
-        desc = desc.strip()
-
-        if quiet == 0:
-            if desc == "":
-                self.warning("Comment for %s lacks description" % (name))
-
-        return(desc)
-    #
-    # Parse a comment block associate to a macro
-    #
-    def parseMacroComment(self, name, quiet = 0):
-        if name[0:2] == '__':
-            quiet = 1
-
-        args = []
-        desc = ""
-
-        if self.comment == None:
-            if not quiet:
-                self.warning("Missing comment for macro %s" % (name))
-            return((args, desc))
-        if self.comment[0] != '*':
-            if not quiet:
-                self.warning("Missing * in macro comment for %s" % (name))
-            return((args, desc))
-        lines = self.comment.split('\n')
-        if lines[0] == '*':
-            del lines[0]
-        if lines[0] != "* %s:" % (name):
-            if not quiet:
-                self.warning("Misformatted macro comment for %s" % (name))
-                self.warning("  Expecting '* %s:' got '%s'" % (name, lines[0]))
-            return((args, desc))
-        del lines[0]
-        while lines[0] == '*':
-            del lines[0]
-        while len(lines) > 0 and lines[0][0:3] == '* @':
-            l = lines[0][3:]
-            try:
-                (arg, desc) = l.split(':', 1)
-                desc=desc.strip()
-                arg=arg.strip()
-            except:
-                if not quiet:
-                    self.warning("Misformatted macro comment for %s" % (name))
-                    self.warning("  problem with '%s'" % (lines[0]))
-                del lines[0]
-                continue
-            del lines[0]
-            l = lines[0].strip()
-            while len(l) > 2 and l[0:3] != '* @':
-                while l[0] == '*':
-                    l = l[1:]
-                desc = desc + ' ' + l.strip()
-                del lines[0]
-                if len(lines) == 0:
-                    break
-                l = lines[0]
-            args.append((arg, desc))
-        while len(lines) > 0 and lines[0] == '*':
-            del lines[0]
-        desc = ""
-        while len(lines) > 0:
-            l = lines[0]
-            while len(l) > 0 and l[0] == '*':
-                l = l[1:]
-            l = l.strip()
-            desc = desc + " " + l
-            del lines[0]
-
-        desc = desc.strip()
-
-        if quiet == 0:
-            if desc == "":
-                self.warning("Macro comment for %s lack description of the macro" % (name))
-
-        return((args, desc))
-
-     #
-     # Parse a comment block and merge the information found in the
-     # parameters descriptions, finally returns a block as complete
-     # as possible
-     #
-    def mergeFunctionComment(self, name, description, quiet = 0):
-        if name == 'main':
-            quiet = 1
-        if name[0:2] == '__':
-            quiet = 1
-
-        (ret, args) = description
-        desc = ""
-        retdesc = ""
-
-        if self.comment == None:
-            if not quiet:
-                self.warning("Missing comment for function %s" % (name))
-            return(((ret[0], retdesc), args, desc))
-        if self.comment[0] != '*':
-            if not quiet:
-                self.warning("Missing * in function comment for %s" % (name))
-            return(((ret[0], retdesc), args, desc))
-        lines = self.comment.split('\n')
-        if lines[0] == '*':
-            del lines[0]
-        if lines[0] != "* %s:" % (name):
-            if not quiet:
-                self.warning("Misformatted function comment for %s" % (name))
-                self.warning("  Expecting '* %s:' got '%s'" % (name, lines[0]))
-            return(((ret[0], retdesc), args, desc))
-        del lines[0]
-        while lines[0] == '*':
-            del lines[0]
-        nbargs = len(args)
-        while len(lines) > 0 and lines[0][0:3] == '* @':
-            l = lines[0][3:]
-            try:
-                (arg, desc) = l.split(':', 1)
-                desc=desc.strip()
-                arg=arg.strip()
-            except:
-                if not quiet:
-                    self.warning("Misformatted function comment for %s" % (name))
-                    self.warning("  problem with '%s'" % (lines[0]))
-                del lines[0]
-                continue
-            del lines[0]
-            l = lines[0].strip()
-            while len(l) > 2 and l[0:3] != '* @':
-                while l[0] == '*':
-                    l = l[1:]
-                desc = desc + ' ' + l.strip()
-                del lines[0]
-                if len(lines) == 0:
-                    break
-                l = lines[0]
-            i = 0
-            while i < nbargs:
-                if args[i][1] == arg:
-                    args[i] = (args[i][0], arg, desc)
-                    break;
-                i = i + 1
-            if i >= nbargs:
-                if not quiet:
-                    self.warning("Unable to find arg %s from function comment for %s" % (
-                       arg, name))
-        while len(lines) > 0 and lines[0] == '*':
-            del lines[0]
-        desc = ""
-        while len(lines) > 0:
-            l = lines[0]
-            while len(l) > 0 and l[0] == '*':
-                l = l[1:]
-            l = l.strip()
-            if len(l) >= 6 and  l[0:6] == "return" or l[0:6] == "Return":
-                try:
-                    l = l.split(' ', 1)[1]
-                except:
-                    l = ""
-                retdesc = l.strip()
-                del lines[0]
-                while len(lines) > 0:
-                    l = lines[0]
-                    while len(l) > 0 and l[0] == '*':
-                        l = l[1:]
-                    l = l.strip()
-                    retdesc = retdesc + " " + l
-                    del lines[0]
-            else:
-                desc = desc + " " + l
-                del lines[0]
-
-        retdesc = retdesc.strip()
-        desc = desc.strip()
-
-        if quiet == 0:
-             #
-             # report missing comments
-             #
-            i = 0
-            while i < nbargs:
-                if args[i][2] == None and args[i][0] != "void" and \
-                   ((args[i][1] != None) or (args[i][1] == '')):
-                    self.warning("Function comment for %s lacks description of arg %s" % (name, args[i][1]))
-                i = i + 1
-            if retdesc == "" and ret[0] != "void":
-                self.warning("Function comment for %s lacks description of return value" % (name))
-            if desc == "" and retdesc == "":
-                self.warning("Function comment for %s lacks description of the function" % (name))
-
-        return(((ret[0], retdesc), args, desc))
-
-    def parsePreproc(self, token):
-        if debug:
-            print("=> preproc ", token, self.lexer.tokens)
-        name = token[1]
-        if name == "#include":
-            token = self.lexer.token()
-            if token == None:
-                return None
-            if token[0] == 'preproc':
-                self.index_add(token[1], self.filename, not self.is_header,
-                                "include")
-                return self.lexer.token()
-            return token
-        if name == "#define":
-            token = self.lexer.token()
-            if token == None:
-                return None
-            if token[0] == 'preproc':
-                 # TODO macros with arguments
-                name = token[1]
-                lst = []
-                token = self.lexer.token()
-                while token != None and token[0] == 'preproc' and \
-                      token[1][0] != '#':
-                    lst.append(token[1])
-                    token = self.lexer.token()
-                try:
-                    name = name.split('(') [0]
-                except:
-                    pass
-                info = self.parseMacroComment(name, True)
-                self.index_add(name, self.filename, not self.is_header,
-                                "macro", info)
-                return token
-
-        #
-        # Processing of conditionals modified by Bill 1/1/05
-        #
-        # We process conditionals (i.e. tokens from #ifdef, #ifndef,
-        # #if, #else and #endif) for headers and mainline code,
-        # store the ones from the header in libxml2-api.xml, and later
-        # (in the routine merge_public) verify that the two (header and
-        # mainline code) agree.
-        #
-        # There is a small problem with processing the headers. Some of
-        # the variables are not concerned with enabling / disabling of
-        # library functions (e.g. '__XML_PARSER_H__'), and we don't want
-        # them to be included in libxml2-api.xml, or involved in
-        # the check between the header and the mainline code.  To
-        # accomplish this, we ignore any conditional which doesn't include
-        # the string 'ENABLED'
-        #
-        if name == "#ifdef":
-            apstr = self.lexer.tokens[0][1]
-            try:
-                self.defines.append(apstr)
-                if apstr.find('ENABLED') != -1:
-                    self.conditionals.append("defined(%s)" % apstr)
-            except:
-                pass
-        elif name == "#ifndef":
-            apstr = self.lexer.tokens[0][1]
-            try:
-                self.defines.append(apstr)
-                if apstr.find('ENABLED') != -1:
-                    self.conditionals.append("!defined(%s)" % apstr)
-            except:
-                pass
-        elif name == "#if":
-            apstr = ""
-            for tok in self.lexer.tokens:
-                if apstr != "":
-                    apstr = apstr + " "
-                apstr = apstr + tok[1]
-            try:
-                self.defines.append(apstr)
-                if apstr.find('ENABLED') != -1:
-                    self.conditionals.append(apstr)
-            except:
-                pass
-        elif name == "#else":
-            if self.conditionals != [] and \
-               self.defines[-1].find('ENABLED') != -1:
-                self.conditionals[-1] = "!(%s)" % self.conditionals[-1]
-        elif name == "#endif":
-            if self.conditionals != [] and \
-               self.defines[-1].find('ENABLED') != -1:
-                self.conditionals = self.conditionals[:-1]
-            self.defines = self.defines[:-1]
-        token = self.lexer.token()
-        while token != None and token[0] == 'preproc' and \
-            token[1][0] != '#':
-            token = self.lexer.token()
-        return token
-
-     #
-     # token acquisition on top of the lexer, it handle internally
-     # preprocessor and comments since they are logically not part of
-     # the program structure.
-     #
-    def token(self):
-        global ignored_words
-
-        token = self.lexer.token()
-        while token != None:
-            if token[0] == 'comment':
-                token = self.parseComment(token)
-                continue
-            elif token[0] == 'preproc':
-                token = self.parsePreproc(token)
-                continue
-            elif token[0] == "name" and token[1] == "__const":
-                token = ("name", "const")
-                return token
-            elif token[0] == "name" and token[1] == "__attribute":
-                token = self.lexer.token()
-                while token != None and token[1] != ";":
-                    token = self.lexer.token()
-                return token
-            elif token[0] == "name" and token[1] in ignored_words:
-                (n, info) = ignored_words[token[1]]
-                i = 0
-                while i < n:
-                    token = self.lexer.token()
-                    i = i + 1
-                token = self.lexer.token()
-                continue
-            else:
-                if debug:
-                    print("=> ", token)
-                return token
-        return None
-
-     #
-     # Parse a typedef, it records the type and its name.
-     #
-    def parseTypedef(self, token):
-        if token == None:
-            return None
-        token = self.parseType(token)
-        if token == None:
-            self.error("parsing typedef")
-            return None
-        base_type = self.type
-        type = base_type
-         #self.debug("end typedef type", token)
-        while token != None:
-            if token[0] == "name":
-                name = token[1]
-                signature = self.signature
-                if signature != None:
-                    type = type.split('(')[0]
-                    d = self.mergeFunctionComment(name,
-                            ((type, None), signature), 1)
-                    self.index_add(name, self.filename, not self.is_header,
-                                    "functype", d)
-                else:
-                    if base_type == "struct":
-                        self.index_add(name, self.filename, not self.is_header,
-                                        "struct", type)
-                        base_type = "struct " + name
-                    else:
-                        # TODO report missing or misformatted comments
-                        info = self.parseSimpleComment(name, True)
-                        self.index_add(name, self.filename, not self.is_header,
-                                    "typedef", type, info)
-                token = self.token()
-            else:
-                self.error("parsing typedef: expecting a name")
-                return token
-             #self.debug("end typedef", token)
-            if token != None and token[0] == 'sep' and token[1] == ',':
-                type = base_type
-                token = self.token()
-                while token != None and token[0] == "op":
-                    type = type + token[1]
-                    token = self.token()
-            elif token != None and token[0] == 'sep' and token[1] == ';':
-                break;
-            elif token != None and token[0] == 'name':
-                type = base_type
-                continue;
-            else:
-                self.error("parsing typedef: expecting ';'", token)
-                return token
-        token = self.token()
-        return token
-
-     #
-     # Parse a C code block, used for functions it parse till
-     # the balancing } included
-     #
-    def parseBlock(self, token):
-        while token != None:
-            if token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseBlock(token)
-            elif token[0] == "sep" and token[1] == "}":
-                token = self.token()
-                return token
-            else:
-                if self.collect_ref == 1:
-                    oldtok = token
-                    token = self.token()
-                    if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
-                        if token[0] == "sep" and token[1] == "(":
-                            self.index_add_ref(oldtok[1], self.filename,
-                                                0, "function")
-                            token = self.token()
-                        elif token[0] == "name":
-                            token = self.token()
-                            if token[0] == "sep" and (token[1] == ";" or
-                               token[1] == "," or token[1] == "="):
-                                self.index_add_ref(oldtok[1], self.filename,
-                                                    0, "type")
-                    elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
-                        self.index_add_ref(oldtok[1], self.filename,
-                                            0, "typedef")
-                    elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
-                        self.index_add_ref(oldtok[1], self.filename,
-                                            0, "typedef")
-
-                else:
-                    token = self.token()
-        return token
-
-     #
-     # Parse a C struct definition till the balancing }
-     #
-    def parseStruct(self, token):
-        fields = []
-         #self.debug("start parseStruct", token)
-        while token != None:
-            if token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseTypeBlock(token)
-            elif token[0] == "sep" and token[1] == "}":
-                self.struct_fields = fields
-                 #self.debug("end parseStruct", token)
-                 #print fields
-                token = self.token()
-                return token
-            else:
-                base_type = self.type
-                 #self.debug("before parseType", token)
-                token = self.parseType(token)
-                 #self.debug("after parseType", token)
-                if token != None and token[0] == "name":
-                    fname = token[1]
-                    token = self.token()
-                    if token[0] == "sep" and token[1] == ";":
-                        token = self.token()
-                        fields.append((self.type, fname))
-                    else:
-                        self.error("parseStruct: expecting ;", token)
-                elif token != None and token[0] == "sep" and token[1] == "{":
-                    token = self.token()
-                    token = self.parseTypeBlock(token)
-                    if token != None and token[0] == "name":
-                        token = self.token()
-                    if token != None and token[0] == "sep" and token[1] == ";":
-                        token = self.token()
-                    else:
-                        self.error("parseStruct: expecting ;", token)
-                else:
-                    self.error("parseStruct: name", token)
-                    token = self.token()
-                self.type = base_type;
-        self.struct_fields = fields
-         #self.debug("end parseStruct", token)
-         #print fields
-        return token
-
-     #
-     # Parse a C enum block, parse till the balancing }
-     #
-    def parseEnumBlock(self, token):
-        self.enums = []
-        name = None
-        self.comment = None
-        comment = ""
-        value = "0"
-        while token != None:
-            if token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseTypeBlock(token)
-            elif token[0] == "sep" and token[1] == "}":
-                if name != None:
-                    if self.comment != None:
-                        comment = self.comment
-                        self.comment = None
-                    self.enums.append((name, value, comment))
-                token = self.token()
-                return token
-            elif token[0] == "name":
-                    if name != None:
-                        if self.comment != None:
-                            comment = self.comment.strip()
-                            self.comment = None
-                        self.enums.append((name, value, comment))
-                    name = token[1]
-                    comment = ""
-                    token = self.token()
-                    if token[0] == "op" and token[1][0] == "=":
-                        value = ""
-                        if len(token[1]) > 1:
-                            value = token[1][1:]
-                        token = self.token()
-                        while token[0] != "sep" or (token[1] != ',' and
-                              token[1] != '}'):
-                            value = value + token[1]
-                            token = self.token()
-                    else:
-                        try:
-                            value = "%d" % (int(value) + 1)
-                        except:
-                            self.warning("Failed to compute value of enum %s" % (name))
-                            value=""
-                    if token[0] == "sep" and token[1] == ",":
-                        token = self.token()
-            else:
-                token = self.token()
-        return token
-
-     #
-     # Parse a C definition block, used for structs it parse till
-     # the balancing }
-     #
-    def parseTypeBlock(self, token):
-        while token != None:
-            if token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseTypeBlock(token)
-            elif token[0] == "sep" and token[1] == "}":
-                token = self.token()
-                return token
-            else:
-                token = self.token()
-        return token
-
-     #
-     # Parse a type: the fact that the type name can either occur after
-     #    the definition or within the definition makes it a little harder
-     #    if inside, the name token is pushed back before returning
-     #
-    def parseType(self, token):
-        self.type = ""
-        self.struct_fields = []
-        self.signature = None
-        if token == None:
-            return token
-
-        have_sign = 0
-        done = 0
-
-        while token[0] == "name" and (
-              token[1] == "const" or \
-              token[1] == "unsigned" or \
-              token[1] == "signed"):
-            if token[1] == "unsigned" or token[1] == "signed":
-                have_sign = 1
-            if self.type == "":
-                self.type = token[1]
-            else:
-                self.type = self.type + " " + token[1]
-            token = self.token()
-
-        if token[0] == "name" and token[1] in ("char", "short", "int", "long"):
-            if self.type == "":
-                self.type = token[1]
-            else:
-                self.type = self.type + " " + token[1]
-
-        elif have_sign:
-            done = 1
-
-        elif token[0] == "name" and token[1] == "struct":
-            if self.type == "":
-                self.type = token[1]
-            else:
-                self.type = self.type + " " + token[1]
-            token = self.token()
-            nametok = None
-            if token[0] == "name":
-                nametok = token
-                token = self.token()
-            if token != None and token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseStruct(token)
-            elif token != None and token[0] == "op" and token[1] == "*":
-                self.type = self.type + " " + nametok[1] + " *"
-                token = self.token()
-                while token != None and token[0] == "op" and token[1] == "*":
-                    self.type = self.type + " *"
-                    token = self.token()
-                if token[0] == "name":
-                    nametok = token
-                    token = self.token()
-                else:
-                    self.error("struct : expecting name", token)
-                    return token
-            elif token != None and token[0] == "name" and nametok != None:
-                self.type = self.type + " " + nametok[1]
-                return token
-
-            if nametok != None:
-                self.lexer.push(token)
-                token = nametok
-            return token
-
-        elif token[0] == "name" and token[1] == "enum":
-            if self.type == "":
-                self.type = token[1]
-            else:
-                self.type = self.type + " " + token[1]
-            self.enums = []
-            token = self.token()
-            if token != None and token[0] == "sep" and token[1] == "{":
-                token = self.token()
-                token = self.parseEnumBlock(token)
-            else:
-                self.error("parsing enum: expecting '{'", token)
-            enum_type = None
-            if token != None and token[0] != "name":
-                self.lexer.push(token)
-                token = ("name", "enum")
-            else:
-                enum_type = token[1]
-            for enum in self.enums:
-                self.index_add(enum[0], self.filename,
-                               not self.is_header, "enum",
-                               (enum[1], enum[2], enum_type))
-            return token
-
-        elif token[0] == "name":
-            if self.type == "":
-                self.type = token[1]
-            else:
-                self.type = self.type + " " + token[1]
-        else:
-            self.error("parsing type %s: expecting a name" % (self.type),
-                       token)
-            return token
-        if not done:
-            token = self.token()
-        while token != None and (token[0] == "op" or
-              token[0] == "name" and token[1] == "const"):
-            self.type = self.type + " " + token[1]
-            token = self.token()
-
-         #
-         # if there is a parenthesis here, this means a function type
-         #
-        if token != None and token[0] == "sep" and token[1] == '(':
-            self.type = self.type + token[1]
-            token = self.token()
-            while token != None and token[0] == "op" and token[1] == '*':
-                self.type = self.type + token[1]
-                token = self.token()
-            if token == None or token[0] != "name" :
-                self.error("parsing function type, name expected", token);
-                return token
-            self.type = self.type + token[1]
-            nametok = token
-            token = self.token()
-            if token != None and token[0] == "sep" and token[1] == ')':
-                self.type = self.type + token[1]
-                token = self.token()
-                if token != None and token[0] == "sep" and token[1] == '(':
-                    token = self.token()
-                    type = self.type;
-                    token = self.parseSignature(token);
-                    self.type = type;
-                else:
-                    self.error("parsing function type, '(' expected", token);
-                    return token
-            else:
-                self.error("parsing function type, ')' expected", token);
-                return token
-            self.lexer.push(token)
-            token = nametok
-            return token
-
-         #
-         # do some lookahead for arrays
-         #
-        if token != None and token[0] == "name":
-            nametok = token
-            token = self.token()
-            if token != None and token[0] == "sep" and token[1] == '[':
-                self.type = self.type + nametok[1]
-                while token != None and token[0] == "sep" and token[1] == '[':
-                    self.type = self.type + token[1]
-                    token = self.token()
-                    while token != None and token[0] != 'sep' and \
-                          token[1] != ']' and token[1] != ';':
-                        self.type = self.type + token[1]
-                        token = self.token()
-                if token != None and token[0] == 'sep' and token[1] == ']':
-                    self.type = self.type + token[1]
-                    token = self.token()
-                else:
-                    self.error("parsing array type, ']' expected", token);
-                    return token
-            elif token != None and token[0] == "sep" and token[1] == ':':
-                 # remove :12 in case it's a limited int size
-                token = self.token()
-                token = self.token()
-            self.lexer.push(token)
-            token = nametok
-
-        return token
-
-     #
-     # Parse a signature: '(' has been parsed and we scan the type definition
-     #    up to the ')' included
-    def parseSignature(self, token):
-        signature = []
-        if token != None and token[0] == "sep" and token[1] == ')':
-            self.signature = []
-            token = self.token()
-            return token
-        while token != None:
-            token = self.parseType(token)
-            if token != None and token[0] == "name":
-                signature.append((self.type, token[1], None))
-                token = self.token()
-            elif token != None and token[0] == "sep" and token[1] == ',':
-                token = self.token()
-                continue
-            elif token != None and token[0] == "sep" and token[1] == ')':
-                 # only the type was provided
-                if self.type == "...":
-                    signature.append((self.type, "...", None))
-                else:
-                    signature.append((self.type, None, None))
-            if token != None and token[0] == "sep":
-                if token[1] == ',':
-                    token = self.token()
-                    continue
-                elif token[1] == ')':
-                    token = self.token()
-                    break
-        self.signature = signature
-        return token
-
-     #
-     # Parse a global definition, be it a type, variable or function
-     # the extern "C" blocks are a bit nasty and require it to recurse.
-     #
-    def parseGlobal(self, token):
-        static = 0
-        if token[1] == 'extern':
-            token = self.token()
-            if token == None:
-                return token
-            if token[0] == 'string':
-                if token[1] == 'C':
-                    token = self.token()
-                    if token == None:
-                        return token
-                    if token[0] == 'sep' and token[1] == "{":
-                        token = self.token()
-#                         print 'Entering extern "C line ', self.lineno()
-                        while token != None and (token[0] != 'sep' or
-                              token[1] != "}"):
-                            if token[0] == 'name':
-                                token = self.parseGlobal(token)
-                            else:
-                                self.error(
-                                 "token %s %s unexpected at the top level" % (
-                                        token[0], token[1]))
-                                token = self.parseGlobal(token)
-#                         print 'Exiting extern "C" line', self.lineno()
-                        token = self.token()
-                        return token
-                else:
-                    return token
-        elif token[1] == 'static':
-            static = 1
-            token = self.token()
-            if token == None or  token[0] != 'name':
-                return token
-
-        if token[1] == 'typedef':
-            token = self.token()
-            return self.parseTypedef(token)
-        else:
-            token = self.parseType(token)
-            type_orig = self.type
-        if token == None or token[0] != "name":
-            return token
-        type = type_orig
-        self.name = token[1]
-        token = self.token()
-        while token != None and (token[0] == "sep" or token[0] == "op"):
-            if token[0] == "sep":
-                if token[1] == "[":
-                    type = type + token[1]
-                    token = self.token()
-                    while token != None and (token[0] != "sep" or \
-                          token[1] != ";"):
-                        type = type + token[1]
-                        token = self.token()
-
-            if token != None and token[0] == "op" and token[1] == "=":
-                 #
-                 # Skip the initialization of the variable
-                 #
-                token = self.token()
-                if token[0] == 'sep' and token[1] == '{':
-                    token = self.token()
-                    token = self.parseBlock(token)
-                else:
-                    while token != None and (token[0] != "sep" or \
-                          (token[1] != ';' and token[1] != ',')):
-                            token = self.token()
-                if token == None or token[0] != "sep" or (token[1] != ';' and
-                   token[1] != ','):
-                    self.error("missing ';' or ',' after value")
-
-            if token != None and token[0] == "sep":
-                if token[1] == ";":
-                    if type == "struct":
-                        self.index_add(self.name, self.filename,
-                             not self.is_header, "struct", self.struct_fields)
-                    else:
-                        info = self.parseSimpleComment(self.name, True)
-                        self.index_add(self.name, self.filename,
-                             not self.is_header, "variable", type, info)
-                    self.comment = None
-                    token = self.token()
-                    break
-                elif token[1] == "(":
-                    token = self.token()
-                    token = self.parseSignature(token)
-                    if token == None:
-                        return None
-                    if token[0] == "sep" and token[1] == ";":
-                        d = self.mergeFunctionComment(self.name,
-                                ((type, None), self.signature), 1)
-                        self.index_add(self.name, self.filename, static,
-                                        "function", d)
-                        self.comment = None
-                        token = self.token()
-                    elif token[0] == "sep" and token[1] == "{":
-                        d = self.mergeFunctionComment(self.name,
-                                ((type, None), self.signature), static)
-                        self.index_add(self.name, self.filename, static,
-                                        "function", d)
-                        self.comment = None
-                        token = self.token()
-                        token = self.parseBlock(token);
-                elif token[1] == ',':
-                    self.index_add(self.name, self.filename, static,
-                                    "variable", type)
-                    self.comment = None
-                    type = type_orig
-                    token = self.token()
-                    while token != None and token[0] == "sep":
-                        type = type + token[1]
-                        token = self.token()
-                    if token != None and token[0] == "name":
-                        self.name = token[1]
-                        token = self.token()
-                else:
-                    break
-
-        return token
-
-    def parse(self):
-        self.warning("Parsing %s" % (self.filename))
-        token = self.token()
-        while token != None:
-            if token[0] == 'name':
-                token = self.parseGlobal(token)
-            else:
-                self.error("token %s %s unexpected at the top level" % (
-                       token[0], token[1]))
-                token = self.parseGlobal(token)
-                return
-        self.parseTopComment(self.top_comment)
-        return self.index
-
-
-class docBuilder:
-    """A documentation builder"""
-    def __init__(self, name, directories=['.'], excludes=[]):
-        self.name = name
-        self.directories = directories
-        self.excludes = excludes + list(ignored_files.keys())
-        self.modules = {}
-        self.headers = {}
-        self.idx = index()
-        self.index = {}
-        if name == 'libxml2':
-            self.basename = 'libxml'
-        else:
-            self.basename = name
-
-    def analyze(self):
-        print("Project %s : %d headers, %d modules" % (self.name, len(list(self.headers.keys())), len(list(self.modules.keys()))))
-        self.idx.analyze()
-
-    def scanHeaders(self):
-        for header in list(self.headers.keys()):
-            parser = CParser(header)
-            idx = parser.parse()
-            self.headers[header] = idx;
-            self.idx.merge(idx)
-
-    def scanModules(self):
-        for module in list(self.modules.keys()):
-            parser = CParser(module)
-            idx = parser.parse()
-            # idx.analyze()
-            self.modules[module] = idx
-            self.idx.merge_public(idx)
-
-    def scan(self):
-        for directory in self.directories:
-            files = glob.glob(directory + "/*.c")
-            for file in files:
-                skip = 0
-                for excl in self.excludes:
-                    if file.find(excl) != -1:
-                        print("Skipping %s" % file)
-                        skip = 1
-                        break
-                if skip == 0:
-                    self.modules[file] = None;
-            files = glob.glob(directory + "/*.h")
-            for file in files:
-                skip = 0
-                for excl in self.excludes:
-                    if file.find(excl) != -1:
-                        print("Skipping %s" % file)
-                        skip = 1
-                        break
-                if skip == 0:
-                    self.headers[file] = None;
-        self.scanHeaders()
-        self.scanModules()
-
-    def modulename_file(self, file):
-        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.header)))
-        if id.info != None:
-            info = id.info
-            if info[0] != None and info[0] != '':
-                try:
-                    val = eval(info[0])
-                except:
-                    val = info[0]
-                output.write(" value='%s'" % (val));
-            if info[2] != None and info[2] != '':
-                output.write(" type='%s'" % info[2]);
-            if info[1] != None and info[1] != '':
-                output.write(" info='%s'" % escape(info[1]));
-        output.write("/>\n")
-
-    def serialize_macro(self, output, name):
-        id = self.idx.macros[name]
-        output.write("    <macro name='%s' file='%s'>\n" % (name,
-                     self.modulename_file(id.header)))
-        if id.info != None:
-            try:
-                (args, desc) = id.info
-                if desc != None and desc != "":
-                    output.write("      <info>%s</info>\n" % (escape(desc)))
-                for arg in args:
-                    (name, desc) = arg
-                    if desc != None and desc != "":
-                        output.write("      <arg name='%s' info='%s'/>\n" % (
-                                     name, escape(desc)))
-                    else:
-                        output.write("      <arg name='%s'/>\n" % (name))
-            except:
-                pass
-        output.write("    </macro>\n")
-
-    def serialize_typedef(self, output, name):
-        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.header), id.info))
-            name = id.info[7:]
-            if name in self.idx.structs and ( \
-               type(self.idx.structs[name].info) == type(()) or
-                type(self.idx.structs[name].info) == type([])):
-                output.write(">\n");
-                try:
-                    for field in self.idx.structs[name].info:
-                        output.write("      <field name='%s' type='%s'/>\n" % (field[1] , field[0]))
-                except:
-                    print("Failed to serialize struct %s" % (name))
-                output.write("    </struct>\n")
-            else:
-                output.write("/>\n");
-        else :
-            output.write("    <typedef name='%s' file='%s' type='%s'" % (
-                         name, self.modulename_file(id.header), id.info))
-            try:
-                desc = id.extra
-                if desc != None and desc != "":
-                    output.write(">\n      <info>%s</info>\n" % (escape(desc)))
-                    output.write("    </typedef>\n")
-                else:
-                    output.write("/>\n")
-            except:
-                output.write("/>\n")
-
-    def serialize_variable(self, output, name):
-        id = self.idx.variables[name]
-        if id.info != None:
-            output.write("    <variable name='%s' file='%s' type='%s'" % (
-                    name, self.modulename_file(id.header), id.info))
-        else:
-            output.write("    <variable name='%s' file='%s'" % (
-                    name, self.modulename_file(id.header)))
-        desc = id.extra
-        if desc != None and desc != "":
-            output.write(">\n      <info>%s</info>\n" % (escape(desc)))
-            output.write("    </variable>\n")
-        else:
-            output.write("/>\n")
-
-    def serialize_function(self, output, name):
-        id = self.idx.functions[name]
-        if name == debugsym:
-            print("=>", id)
-
-        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
-        #
-        if id.conditionals != None:
-            apstr = ""
-            for cond in id.conditionals:
-                if apstr != "":
-                    apstr = apstr + " &amp;&amp; "
-                apstr = apstr + cond
-            output.write("      <cond>%s</cond>\n"% (apstr));
-        try:
-            (ret, params, desc) = id.info
-            if (desc == None or desc == '') and \
-               name[0:9] != "xmlThrDef" and name != "xmlDllMain" and \
-               ret[1] == '':
-                print("%s %s from %s has no description" % (id.type, name,
-                       self.modulename_file(id.module)))
-
-            output.write("      <info>%s</info>\n" % (escape(desc)))
-            if ret[0] != None:
-                if ret[0] == "void":
-                    output.write("      <return type='void'/>\n")
-                else:
-                    output.write("      <return type='%s' info='%s'/>\n" % (
-                             ret[0], escape(ret[1])))
-            for param in params:
-                if param[0] == 'void':
-                    continue
-                if param[2] == None:
-                    output.write("      <arg name='%s' type='%s' info=''/>\n" % (param[1], param[0]))
-                else:
-                    output.write("      <arg name='%s' type='%s' info='%s'/>\n" % (param[1], param[0], escape(param[2])))
-        except:
-            print("Failed to save function %s info: " % name, repr(id.info))
-        output.write("    </%s>\n" % (id.type))
-
-    def serialize_exports(self, output, file):
-        module = self.modulename_file(file)
-        output.write("    <file name='%s'>\n" % (module))
-        dict = self.headers[file]
-        if dict.info != None:
-            for data in ('Summary', 'Description', 'Author'):
-                try:
-                    output.write("     <%s>%s</%s>\n" % (
-                                 data.lower(),
-                                 escape(dict.info[data]),
-                                 data.lower()))
-                except:
-                    if data != 'Author':
-                        print("Header %s lacks a %s description" % (module, data))
-            if 'Description' in dict.info:
-                desc = dict.info['Description']
-                if desc.find("DEPRECATED") != -1:
-                    output.write("     <deprecated/>\n")
-
-        ids = list(dict.macros.keys())
-        ids.sort()
-        for id in ids:
-            # Macros are sometime used to masquerade other types.
-            if id in dict.functions:
-                continue
-            if id in dict.variables:
-                continue
-            if id in dict.typedefs:
-                continue
-            if id in dict.structs:
-                continue
-            if id in dict.enums:
-                continue
-            output.write("     <exports symbol='%s' type='macro'/>\n" % (id))
-        ids = list(dict.enums.keys())
-        ids.sort()
-        for id in ids:
-            output.write("     <exports symbol='%s' type='enum'/>\n" % (id))
-        ids = list(dict.typedefs.keys())
-        ids.sort()
-        for id in ids:
-            output.write("     <exports symbol='%s' type='typedef'/>\n" % (id))
-        ids = list(dict.structs.keys())
-        ids.sort()
-        for id in ids:
-            output.write("     <exports symbol='%s' type='struct'/>\n" % (id))
-        ids = list(dict.variables.keys())
-        ids.sort()
-        for id in ids:
-            output.write("     <exports symbol='%s' type='variable'/>\n" % (id))
-        ids = list(dict.functions.keys())
-        ids.sort()
-        for id in ids:
-            output.write("     <exports symbol='%s' type='function'/>\n" % (id))
-        output.write("    </file>\n")
-
-    def serialize(self):
-        filename = "%s-api.xml" % self.name
-        print("Saving XML description %s" % (filename))
-        output = open(filename, "w")
-        output.write('<?xml version="1.0" encoding="ISO-8859-1"?>\n')
-        output.write("<api name='%s'>\n" % self.name)
-        output.write("  <files>\n")
-        headers = list(self.headers.keys())
-        headers.sort()
-        for file in headers:
-            self.serialize_exports(output, file)
-        output.write("  </files>\n")
-        output.write("  <symbols>\n")
-        macros = list(self.idx.macros.keys())
-        macros.sort()
-        for macro in macros:
-            self.serialize_macro(output, macro)
-        enums = list(self.idx.enums.keys())
-        enums.sort()
-        for enum in enums:
-            self.serialize_enum(output, enum)
-        typedefs = list(self.idx.typedefs.keys())
-        typedefs.sort()
-        for typedef in typedefs:
-            self.serialize_typedef(output, typedef)
-        variables = list(self.idx.variables.keys())
-        variables.sort()
-        for variable in variables:
-            self.serialize_variable(output, variable)
-        functions = list(self.idx.functions.keys())
-        functions.sort()
-        for function in functions:
-            self.serialize_function(output, function)
-        output.write("  </symbols>\n")
-        output.write("</api>\n")
-        output.close()
-
-
-def rebuild():
-    builder = None
-    if glob.glob("parser.c") != [] :
-        print("Rebuilding API description for libxml2")
-        builder = docBuilder("libxml2", [".", "."],
-                             ["tst.c"])
-    elif glob.glob("../parser.c") != [] :
-        print("Rebuilding API description for libxml2")
-        builder = docBuilder("libxml2", ["..", "../include/libxml"],
-                             ["tst.c"])
-    elif glob.glob("../libxslt/transform.c") != [] :
-        print("Rebuilding API description for libxslt")
-        builder = docBuilder("libxslt", ["../libxslt"],
-                             ["win32config.h", "libxslt.h", "tst.c"])
-    else:
-        print("rebuild() failed, unable to guess the module")
-        return None
-    builder.scan()
-    builder.analyze()
-    builder.serialize()
-    if glob.glob("../libexslt/exslt.c") != [] :
-        extra = docBuilder("libexslt", ["../libexslt"], ["libexslt.h"])
-        extra.scan()
-        extra.analyze()
-        extra.serialize()
-    return builder
-
-#
-# for debugging the parser
-#
-def parse(filename):
-    parser = CParser(filename)
-    idx = parser.parse()
-    return idx
-
-if __name__ == "__main__":
-    if len(sys.argv) > 1:
-        debug = 1
-        parse(sys.argv[1])
-    else:
-        rebuild()
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/Makefile.am 2.15.0+dfsg-0.3/doc/devhelp/Makefile.am
--- 2.14.6+dfsg-0.1/doc/devhelp/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/Makefile.am	1970-01-01 00:00:00.000000000 +0000
@@ -1,71 +0,0 @@
-devhelpdir = $(datadir)/gtk-doc/html/libxml2
-
-dist_devhelp_DATA =			\
-	libxml2.devhelp2		\
-	$(HTML_FILES)			\
-	$(EXTRA_FORMAT)
-
-HTML_FILES =				\
-	general.html			\
-	index.html			\
-	$(HTML_MODULES)
-
-HTML_MODULES=				\
-	libxml2-c14n.html		\
-	libxml2-catalog.html		\
-	libxml2-chvalid.html		\
-	libxml2-debugXML.html		\
-	libxml2-dict.html		\
-	libxml2-encoding.html		\
-	libxml2-entities.html		\
-	libxml2-globals.html		\
-	libxml2-hash.html		\
-	libxml2-HTMLparser.html		\
-	libxml2-HTMLtree.html		\
-	libxml2-list.html		\
-	libxml2-nanoftp.html		\
-	libxml2-nanohttp.html		\
-	libxml2-parser.html		\
-	libxml2-parserInternals.html	\
-	libxml2-pattern.html		\
-	libxml2-relaxng.html		\
-	libxml2-SAX2.html		\
-	libxml2-SAX.html		\
-	libxml2-schemasInternals.html	\
-	libxml2-schematron.html		\
-	libxml2-threads.html		\
-	libxml2-tree.html		\
-	libxml2-uri.html		\
-	libxml2-valid.html		\
-	libxml2-xinclude.html		\
-	libxml2-xlink.html		\
-	libxml2-xmlautomata.html	\
-	libxml2-xmlerror.html		\
-	libxml2-xmlexports.html		\
-	libxml2-xmlIO.html		\
-	libxml2-xmlmemory.html		\
-	libxml2-xmlmodule.html		\
-	libxml2-xmlreader.html		\
-	libxml2-xmlregexp.html		\
-	libxml2-xmlsave.html		\
-	libxml2-xmlschemas.html		\
-	libxml2-xmlschemastypes.html	\
-	libxml2-xmlstring.html		\
-	libxml2-xmlunicode.html		\
-	libxml2-xmlversion.html		\
-	libxml2-xmlwriter.html		\
-	libxml2-xpath.html		\
-	libxml2-xpathInternals.html	\
-	libxml2-xpointer.html
-
-EXTRA_FORMAT=				\
-	home.png			\
-	left.png			\
-	right.png			\
-	up.png				\
-	style.css
-
-EXTRA_DIST = devhelp2.xsl html.xsl meson.build
-
-rebuild:
-	(cd $(srcdir) && $(XSLTPROC) -o libxml2.devhelp2 devhelp2.xsl ../libxml2-api.xml)
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/Makefile.in 2.15.0+dfsg-0.3/doc/devhelp/Makefile.in
--- 2.14.6+dfsg-0.1/doc/devhelp/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/Makefile.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,645 +0,0 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = doc/devhelp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
-	$(top_srcdir)/m4/ax_recursive_eval.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/VERSION \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(dist_devhelp_DATA) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(devhelpdir)"
-DATA = $(dist_devhelp_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-CSCOPE = @CSCOPE@
-CTAGS = @CTAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ETAGS = @ETAGS@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FILECMD = @FILECMD@
-GREP = @GREP@
-HISTORY_CFLAGS = @HISTORY_CFLAGS@
-HISTORY_LIBS = @HISTORY_LIBS@
-ICONV_CFLAGS = @ICONV_CFLAGS@
-ICU_CFLAGS = @ICU_CFLAGS@
-ICU_DEFS = @ICU_DEFS@
-ICU_LIBS = @ICU_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBXML_MAJOR_VERSION = @LIBXML_MAJOR_VERSION@
-LIBXML_MICRO_VERSION = @LIBXML_MICRO_VERSION@
-LIBXML_MINOR_VERSION = @LIBXML_MINOR_VERSION@
-LIBXML_VERSION = @LIBXML_VERSION@
-LIBXML_VERSION_EXTRA = @LIBXML_VERSION_EXTRA@
-LIBXML_VERSION_INFO = @LIBXML_VERSION_INFO@
-LIBXML_VERSION_NUMBER = @LIBXML_VERSION_NUMBER@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MODULE_EXTENSION = @MODULE_EXTENSION@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RDL_CFLAGS = @RDL_CFLAGS@
-RDL_LIBS = @RDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TAR = @TAR@
-THREAD_LIBS = @THREAD_LIBS@
-VERSION = @VERSION@
-WGET = @WGET@
-WITH_C14N = @WITH_C14N@
-WITH_CATALOG = @WITH_CATALOG@
-WITH_DEBUG = @WITH_DEBUG@
-WITH_HTML = @WITH_HTML@
-WITH_HTTP = @WITH_HTTP@
-WITH_ICONV = @WITH_ICONV@
-WITH_ICU = @WITH_ICU@
-WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
-WITH_MODULES = @WITH_MODULES@
-WITH_OUTPUT = @WITH_OUTPUT@
-WITH_PATTERN = @WITH_PATTERN@
-WITH_PUSH = @WITH_PUSH@
-WITH_READER = @WITH_READER@
-WITH_REGEXPS = @WITH_REGEXPS@
-WITH_RELAXNG = @WITH_RELAXNG@
-WITH_SAX1 = @WITH_SAX1@
-WITH_SCHEMAS = @WITH_SCHEMAS@
-WITH_SCHEMATRON = @WITH_SCHEMATRON@
-WITH_THREADS = @WITH_THREADS@
-WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
-WITH_VALID = @WITH_VALID@
-WITH_WRITER = @WITH_WRITER@
-WITH_XINCLUDE = @WITH_XINCLUDE@
-WITH_XPATH = @WITH_XPATH@
-WITH_XPTR = @WITH_XPTR@
-WITH_ZLIB = @WITH_ZLIB@
-XML_CFLAGS = @XML_CFLAGS@
-XML_INCLUDEDIR = @XML_INCLUDEDIR@
-XML_LIBDIR = @XML_LIBDIR@
-XML_LIBS = @XML_LIBS@
-XML_PRIVATE_CFLAGS = @XML_PRIVATE_CFLAGS@
-XML_PRIVATE_LIBS = @XML_PRIVATE_LIBS@
-XML_STATIC_CFLAGS = @XML_STATIC_CFLAGS@
-XSLTPROC = @XSLTPROC@
-Z_CFLAGS = @Z_CFLAGS@
-Z_LIBS = @Z_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-devhelpdir = $(datadir)/gtk-doc/html/libxml2
-dist_devhelp_DATA = \
-	libxml2.devhelp2		\
-	$(HTML_FILES)			\
-	$(EXTRA_FORMAT)
-
-HTML_FILES = \
-	general.html			\
-	index.html			\
-	$(HTML_MODULES)
-
-HTML_MODULES = \
-	libxml2-c14n.html		\
-	libxml2-catalog.html		\
-	libxml2-chvalid.html		\
-	libxml2-debugXML.html		\
-	libxml2-dict.html		\
-	libxml2-encoding.html		\
-	libxml2-entities.html		\
-	libxml2-globals.html		\
-	libxml2-hash.html		\
-	libxml2-HTMLparser.html		\
-	libxml2-HTMLtree.html		\
-	libxml2-list.html		\
-	libxml2-nanoftp.html		\
-	libxml2-nanohttp.html		\
-	libxml2-parser.html		\
-	libxml2-parserInternals.html	\
-	libxml2-pattern.html		\
-	libxml2-relaxng.html		\
-	libxml2-SAX2.html		\
-	libxml2-SAX.html		\
-	libxml2-schemasInternals.html	\
-	libxml2-schematron.html		\
-	libxml2-threads.html		\
-	libxml2-tree.html		\
-	libxml2-uri.html		\
-	libxml2-valid.html		\
-	libxml2-xinclude.html		\
-	libxml2-xlink.html		\
-	libxml2-xmlautomata.html	\
-	libxml2-xmlerror.html		\
-	libxml2-xmlexports.html		\
-	libxml2-xmlIO.html		\
-	libxml2-xmlmemory.html		\
-	libxml2-xmlmodule.html		\
-	libxml2-xmlreader.html		\
-	libxml2-xmlregexp.html		\
-	libxml2-xmlsave.html		\
-	libxml2-xmlschemas.html		\
-	libxml2-xmlschemastypes.html	\
-	libxml2-xmlstring.html		\
-	libxml2-xmlunicode.html		\
-	libxml2-xmlversion.html		\
-	libxml2-xmlwriter.html		\
-	libxml2-xpath.html		\
-	libxml2-xpathInternals.html	\
-	libxml2-xpointer.html
-
-EXTRA_FORMAT = \
-	home.png			\
-	left.png			\
-	right.png			\
-	up.png				\
-	style.css
-
-EXTRA_DIST = devhelp2.xsl html.xsl meson.build
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/devhelp/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign doc/devhelp/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_devhelpDATA: $(dist_devhelp_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_devhelp_DATA)'; test -n "$(devhelpdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(devhelpdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(devhelpdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(devhelpdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(devhelpdir)" || exit $$?; \
-	done
-
-uninstall-dist_devhelpDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_devhelp_DATA)'; test -n "$(devhelpdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(devhelpdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-distdir: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(devhelpdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_devhelpDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_devhelpDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_devhelpDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_devhelpDATA
-
-.PRECIOUS: Makefile
-
-
-rebuild:
-	(cd $(srcdir) && $(XSLTPROC) -o libxml2.devhelp2 devhelp2.xsl ../libxml2-api.xml)
-
-# 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.
-.NOEXPORT:
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/devhelp2.xsl 2.15.0+dfsg-0.3/doc/devhelp/devhelp2.xsl
--- 2.14.6+dfsg-0.1/doc/devhelp/devhelp2.xsl	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/devhelp2.xsl	1970-01-01 00:00:00.000000000 +0000
@@ -1,127 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-		xmlns="http://www.devhelp.net/book"
-		xmlns:exsl="http://exslt.org/common"
-		xmlns:str="http://exslt.org/strings"
-		extension-element-prefixes="exsl str"
-		exclude-result-prefixes="exsl str">
-  <!-- The stylesheet for the html pages -->
-  <xsl:import href="html.xsl"/>
-
-  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
-
-  <!-- Build keys for all symbols -->
-  <xsl:key name="symbols" match="/api/symbols/*" use="@name"/>
-
-  <xsl:template match="/api">
-    <book title="{@name} Reference Manual" link="index.html" author="" name="{@name}">
-      <xsl:apply-templates select="files"/>
-      <xsl:apply-templates select="symbols"/>
-    </book>
-    <xsl:call-template name="generate_index"/>
-    <xsl:call-template name="generate_general"/>
-  </xsl:template>
-  <xsl:template match="/api/files">
-    <chapters>
-      <sub name="API" link="general.html">
-        <xsl:apply-templates select="file"/>
-      </sub>
-    </chapters>
-  </xsl:template>
-  <xsl:template match="/api/files/file">
-    <xsl:variable name="module" select="@name"/>
-    <xsl:variable name="prev" select="string(preceding-sibling::file[position()=1]/@name)"/>
-    <xsl:variable name="next" select="string(following-sibling::file[position()=1]/@name)"/>
-    <sub name="{@name}" link="libxml2-{@name}.html"/>
-    <xsl:document xmlns="" href="libxml2-{@name}.html" method="html" indent="yes" encoding="UTF-8">
-      <html>
-        <head>
-	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-	  <title><xsl:value-of select="concat(@name, ': ', summary)"/></title>
-	  <meta name="generator" content="Libxml2 devhelp stylesheet"/>
-	  <link rel="start" href="index.html" title="libxml2 Reference Manual"/>
-	  <link rel="up" href="general.html" title="API"/>
-	  <link rel="stylesheet" href="style.css" type="text/css"/>
-	  <link rel="chapter" href="general.html" title="API"/>
-        </head>
-	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-
-          <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-	    <tr valign="middle">
-	      <xsl:if test="$prev != ''">
-		<td><a accesskey="p" href="libxml2-{$prev}.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"/></a></td>
-	      </xsl:if>
-              <td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"/></a></td>
-              <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"/></a></td>
-	      <xsl:if test="$next != ''">
-		<td><a accesskey="n" href="libxml2-{$next}.html"><img src="right.png" width="24" height="24" border="0" alt="Next"/></a></td>
-	      </xsl:if>
-              <th width="100%" align="center">libxml2 Reference Manual</th>
-            </tr>
-	  </table>
-	  <h2><span class="refentrytitle"><xsl:value-of select="@name"/></span></h2>
-	  <p><xsl:value-of select="@name"/> - <xsl:value-of select="summary"/></p>
-	  <p><xsl:value-of select="description"/></p>
-	  <xsl:if test="deprecated">
-	    <p> WARNING: this module is deprecated !</p>
-	  </xsl:if>
-	  <p>Author(s): <xsl:value-of select="author"/></p>
-	  <div class="refsynopsisdiv">
-	  <h2>Synopsis</h2>
-	  <pre class="synopsis">
-	    <xsl:apply-templates mode="synopsis" select="exports"/>
-	  </pre>
-	  </div>
-	  <div class="refsect1" lang="en">
-	  <h2>Description</h2>
-	  </div>
-	  <div class="refsect1" lang="en">
-	  <h2>Details</h2>
-	  <div class="refsect2" lang="en">
-	    <xsl:apply-templates mode="details" select="/api/symbols/macro[@file=$module]"/>
-	    <xsl:apply-templates mode="details" select="/api/symbols/typedef[@file=$module] | /api/symbols/struct[@file=$module]"/>
-	    <xsl:apply-templates mode="details" select="/api/symbols/functype[@file=$module]"/>
-	    <xsl:apply-templates mode="details" select="/api/symbols/variable[@file=$module]"/>
-	    <xsl:apply-templates mode="details" select="/api/symbols/function[@file=$module]"/>
-	  </div>
-	  </div>
-	</body>
-      </html>
-    </xsl:document>
-  </xsl:template>
-  <xsl:template match="/api/symbols">
-    <functions>
-      <xsl:apply-templates select="macro"/>
-      <xsl:apply-templates select="enum"/>
-      <xsl:apply-templates select="typedef"/>
-      <xsl:apply-templates select="struct"/>
-      <xsl:apply-templates select="functype"/>
-      <xsl:apply-templates select="variable"/>
-      <xsl:apply-templates select="function"/>
-    </functions>
-  </xsl:template>
-  <xsl:template match="/api/symbols/functype">
-    <keyword type="function" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/function">
-    <keyword type="function" name="{@name} ()" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/typedef">
-    <keyword type="typedef" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/enum">
-    <keyword type="enum" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/struct">
-    <keyword type="struct" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/macro">
-    <keyword type="macro" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-  <xsl:template match="/api/symbols/variable">
-    <keyword type="macro" name="{@name}" link="libxml2-{@file}.html#{@name}"/>
-  </xsl:template>
-
-</xsl:stylesheet>
-
-
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/general.html 2.15.0+dfsg-0.3/doc/devhelp/general.html
--- 2.14.6+dfsg-0.1/doc/devhelp/general.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/general.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>libxml2: </title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="index.html" title="libxml2 Reference Manual">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="index.html" title="libxml2 Reference Manual">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-HTMLparser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">libxml2 API Modules</span></h2>
-<p><a href="libxml2-HTMLparser.html">HTMLparser</a> - interface for an HTML 4.0 non-verifying parser<br><a href="libxml2-HTMLtree.html">HTMLtree</a> - specific APIs to process HTML tree, especially serialization<br><a href="libxml2-SAX2.html">SAX2</a> - SAX2 parser interface used to build the DOM tree<br><a href="libxml2-c14n.html">c14n</a> - Provide Canonical XML and Exclusive XML Canonicalization<br><a href="libxml2-catalog.html">catalog</a> - interfaces to the Catalog handling system<br><a href="libxml2-chvalid.html">chvalid</a> - Unicode character range checking<br><a href="libxml2-debugXML.html">debugXML</a> - Tree debugging APIs<br><a href="libxml2-dict.html">dict</a> - string dictionary<br><a href="libxml2-encoding.html">encoding</a> - interface for the encoding conversion functions<br><a href="libxml2-entities.html">entities</a> - interface for the XML entities handling<br><a href="libxml2-globals.html">globals</a> - interface for all global variables of the library<br><a href="libxml2-hash.html">hash</a> - Chained hash tables<br><a href="libxml2-list.html">list</a> - lists interfaces<br><a href="libxml2-nanohttp.html">nanohttp</a> - minimal HTTP implementation<br><a href="libxml2-parser.html">parser</a> - the core parser module<br><a href="libxml2-parserInternals.html">parserInternals</a> - internals routines and limits exported by the parser.<br><a href="libxml2-pattern.html">pattern</a> - pattern expression handling<br><a href="libxml2-relaxng.html">relaxng</a> - implementation of the Relax-NG validation<br><a href="libxml2-schemasInternals.html">schemasInternals</a> - internal interfaces for XML Schemas<br><a href="libxml2-schematron.html">schematron</a> - XML Schematron implementation<br><a href="libxml2-threads.html">threads</a> - interfaces for thread handling<br><a href="libxml2-tree.html">tree</a> - interfaces for tree manipulation<br><a href="libxml2-uri.html">uri</a> - library of generic URI related routines<br><a href="libxml2-valid.html">valid</a> - The DTD validation<br><a href="libxml2-xinclude.html">xinclude</a> - implementation of XInclude<br><a href="libxml2-xlink.html">xlink</a> - unfinished XLink detection module<br><a href="libxml2-xmlIO.html">xmlIO</a> - interface for the I/O interfaces used by the parser<br><a href="libxml2-xmlautomata.html">xmlautomata</a> - API to build regexp automata<br><a href="libxml2-xmlerror.html">xmlerror</a> - error handling<br><a href="libxml2-xmlexports.html">xmlexports</a> - macros for marking symbols as exportable/importable.<br><a href="libxml2-xmlmemory.html">xmlmemory</a> - interface for the memory allocator<br><a href="libxml2-xmlmodule.html">xmlmodule</a> - dynamic module loading<br><a href="libxml2-xmlreader.html">xmlreader</a> - the XMLReader implementation<br><a href="libxml2-xmlregexp.html">xmlregexp</a> - regular expressions handling<br><a href="libxml2-xmlsave.html">xmlsave</a> - the XML document serializer<br><a href="libxml2-xmlschemas.html">xmlschemas</a> - incomplete XML Schemas structure implementation<br><a href="libxml2-xmlschemastypes.html">xmlschemastypes</a> - implementation of XML Schema Datatypes<br><a href="libxml2-xmlstring.html">xmlstring</a> - set of routines to process strings<br><a href="libxml2-xmlversion.html">xmlversion</a> - compile-time version information<br><a href="libxml2-xmlwriter.html">xmlwriter</a> - text writing API for XML<br><a href="libxml2-xpath.html">xpath</a> - XML Path Language implementation<br><a href="libxml2-xpathInternals.html">xpathInternals</a> - internal interfaces for XML Path Language implementation<br><a href="libxml2-xpointer.html">xpointer</a> - API to handle XML Pointers<br></p>
-</body>
-</html>
Binary files 2.14.6+dfsg-0.1/doc/devhelp/home.png and 2.15.0+dfsg-0.3/doc/devhelp/home.png differ
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/html.xsl 2.15.0+dfsg-0.3/doc/devhelp/html.xsl
--- 2.14.6+dfsg-0.1/doc/devhelp/html.xsl	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/html.xsl	1970-01-01 00:00:00.000000000 +0000
@@ -1,609 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-		xmlns:exsl="http://exslt.org/common"
-		xmlns:str="http://exslt.org/strings"
-		extension-element-prefixes="exsl str"
-		exclude-result-prefixes="exsl str">
-  <!-- This is convoluted but needed to force the current document to
-       be the API one and not the result tree from the tokenize() result,
-       because the keys are only defined on the main document -->
-  <xsl:template mode="dumptoken" match='*'>
-    <xsl:param name="token"/>
-    <xsl:variable name="ref" select="key('symbols', $token)"/>
-    <xsl:choose>
-      <xsl:when test="$ref">
-        <a href="libxml2-{$ref/@file}.html#{$ref/@name}"><xsl:value-of select="$token"/></a>
-      </xsl:when>
-      <!-- TODO: This hack only works for tokens followed by a period. -->
-      <xsl:when test="substring($token, string-length($token)) = '.'">
-        <xsl:variable name="token2" select="substring($token, 1, string-length($token) - 1)"/>
-        <xsl:variable name="ref2" select="key('symbols', $token2)"/>
-        <xsl:choose>
-          <xsl:when test="$ref2">
-            <a href="libxml2-{$ref2/@file}.html#{$ref2/@name}"><xsl:value-of select="$token2"/></a>
-            <xsl:text>.</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:value-of select="$token"/>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$token"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-  <!-- dumps a string, making cross-reference links -->
-  <xsl:template name="dumptext">
-    <xsl:param name="text"/>
-    <xsl:variable name="ctxt" select='.'/>
-    <!-- <xsl:value-of select="$text"/> -->
-    <xsl:for-each select="str:tokenize($text, ' &#9;')">
-      <xsl:apply-templates select="$ctxt" mode='dumptoken'>
-        <xsl:with-param name="token" select="string(.)"/>
-      </xsl:apply-templates>
-      <xsl:if test="position() != last()">
-        <xsl:text> </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-  </xsl:template>
-
-<!--
-
-             The following builds the Synopsis section
-
--->
-  <xsl:template mode="synopsis" match="function">
-    <xsl:variable name="name" select="string(@name)"/>
-    <xsl:variable name="nlen" select="string-length($name)"/>
-    <xsl:variable name="tlen" select="string-length(return/@type)"/>
-    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="return/@type"/>
-    </xsl:call-template>
-    <xsl:text>&#9;</xsl:text>
-    <a href="#{@name}"><xsl:value-of select="@name"/></a>
-    <xsl:if test="$blen - 40 &lt; -8">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:if test="$blen - 40 &lt; 0">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:text>&#9;(</xsl:text>
-    <xsl:if test="not(arg)">
-      <xsl:text>void</xsl:text>
-    </xsl:if>
-    <xsl:for-each select="arg">
-      <xsl:call-template name="dumptext">
-        <xsl:with-param name="text" select="@type"/>
-      </xsl:call-template>
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="@name"/>
-      <xsl:if test="position() != last()">
-        <xsl:text>, </xsl:text><br/>
-	<xsl:if test="$blen - 40 &gt; 8">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:if test="$blen - 40 &gt; 0">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>);</xsl:text>
-    <xsl:text>
-</xsl:text>
-  </xsl:template>
-
-  <xsl:template mode="synopsis" match="functype">
-    <xsl:variable name="name" select="string(@name)"/>
-    <xsl:variable name="nlen" select="string-length($name)"/>
-    <xsl:variable name="tlen" select="string-length(return/@type)"/>
-    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
-    <xsl:text>typedef </xsl:text>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="return/@type"/>
-    </xsl:call-template>
-    <xsl:text> </xsl:text>
-    <a href="#{@name}"><xsl:value-of select="@name"/></a>
-    <xsl:if test="$blen - 40 &lt; -8">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:if test="$blen - 40 &lt; 0">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:text>&#9;(</xsl:text>
-    <xsl:if test="not(arg)">
-      <xsl:text>void</xsl:text>
-    </xsl:if>
-    <xsl:for-each select="arg">
-      <xsl:call-template name="dumptext">
-        <xsl:with-param name="text" select="@type"/>
-      </xsl:call-template>
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="@name"/>
-      <xsl:if test="position() != last()">
-        <xsl:text>, </xsl:text><br/>
-	<xsl:if test="$blen - 40 &gt; 8">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:if test="$blen - 40 &gt; 0">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>);</xsl:text>
-    <xsl:text>
-</xsl:text>
-  </xsl:template>
-
-  <xsl:template mode="synopsis" match="exports[@type='function']">
-    <xsl:variable name="def" select="key('symbols',@symbol)"/>
-    <xsl:apply-templates mode="synopsis" select="$def"/>
-  </xsl:template>
-
-  <xsl:template mode="synopsis" match="exports[@type='typedef']">
-    <xsl:text>typedef </xsl:text>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="string(key('symbols',@symbol)/@type)"/>
-    </xsl:call-template>
-    <xsl:text> </xsl:text>
-    <a href="#{@symbol}"><xsl:value-of select="@symbol"/></a>
-    <xsl:text>;
-</xsl:text>
-  </xsl:template>
-
-  <xsl:template mode="synopsis" match="exports[@type='macro']">
-    <xsl:variable name="def" select="key('symbols',@symbol)"/>
-    <xsl:text>#define </xsl:text>
-    <a href="#{@symbol}"><xsl:value-of select="@symbol"/></a>
-    <xsl:if test="$def/arg">
-      <xsl:text>(</xsl:text>
-      <xsl:for-each select="$def/arg">
-        <xsl:value-of select="@name"/>
-	<xsl:if test="position() != last()">
-	  <xsl:text>, </xsl:text>
-	</xsl:if>
-      </xsl:for-each>
-      <xsl:text>)</xsl:text>
-    </xsl:if>
-    <xsl:text>;
-</xsl:text>
-  </xsl:template>
-  <xsl:template mode="synopsis" match="exports[@type='enum']">
-  </xsl:template>
-  <xsl:template mode="synopsis" match="exports[@type='struct']">
-  </xsl:template>
-
-<!--
-
-             The following builds the Details section
-
--->
-  <xsl:template mode="details" match="struct">
-    <xsl:variable name="name" select="string(@name)"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}">Structure </a><xsl:value-of select="$name"/></h3>
-    <pre class="programlisting">
-    <xsl:value-of select="@type"/><xsl:text> {
-</xsl:text>
-    <xsl:if test="not(field)">
-      <xsl:text>The content of this structure is not made public by the API.
-</xsl:text>
-    </xsl:if>
-    <xsl:for-each select="field">
-        <xsl:text>    </xsl:text>
-	<xsl:call-template name="dumptext">
-	  <xsl:with-param name="text" select="@type"/>
-	</xsl:call-template>
-	<xsl:text>&#9;</xsl:text>
-	<xsl:value-of select="@name"/>
-	<xsl:if test="@info != ''">
-	  <xsl:text>&#9;: </xsl:text>
-	  <xsl:call-template name="dumptext">
-	    <xsl:with-param name="text" select="substring(@info, 1, 70)"/>
-	  </xsl:call-template>
-	</xsl:if>
-	<xsl:text>
-</xsl:text>
-    </xsl:for-each>
-    <xsl:text>} </xsl:text>
-    <xsl:value-of select="$name"/>
-    <xsl:text>;
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="typedef[@type != 'enum']">
-    <xsl:variable name="name" select="string(@name)"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}">Typedef </a><xsl:value-of select="$name"/></h3>
-    <pre class="programlisting">
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="string(@type)"/>
-    </xsl:call-template>
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="$name"/>
-    <xsl:text>;
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="variable">
-    <xsl:variable name="name" select="string(@name)"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}">Variable </a><xsl:value-of select="$name"/></h3>
-    <pre class="programlisting">
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="string(@type)"/>
-    </xsl:call-template>
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="$name"/>
-    <xsl:text>;
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="typedef[@type = 'enum']">
-    <xsl:variable name="name" select="string(@name)"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}">Enum </a><xsl:value-of select="$name"/></h3>
-    <pre class="programlisting">
-    <xsl:text>enum </xsl:text>
-    <a href="#{$name}"><xsl:value-of select="$name"/></a>
-    <xsl:text> {
-</xsl:text>
-    <xsl:for-each select="/api/symbols/enum[@type=$name]">
-      <xsl:sort select="@value" data-type="number" order="ascending"/>
-      <xsl:text>    </xsl:text>
-      <a name="{@name}"><xsl:value-of select="@name"/></a>
-      <xsl:if test="@value">
-        <xsl:text> = </xsl:text>
-	<xsl:value-of select="@value"/>
-      </xsl:if>
-      <xsl:if test="@info">
-        <xsl:text> /* </xsl:text>
-	<xsl:value-of select="@info"/>
-        <xsl:text> */</xsl:text>
-      </xsl:if>
-      <xsl:text>
-</xsl:text>
-    </xsl:for-each>
-    <xsl:text>};
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="macro">
-    <xsl:variable name="name" select="string(@name)"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}">Macro </a><xsl:value-of select="$name"/></h3>
-    <pre class="programlisting">
-    <xsl:text>#define </xsl:text>
-    <a href="#{$name}"><xsl:value-of select="$name"/></a>
-    <xsl:if test="arg">
-      <xsl:text>(</xsl:text>
-      <xsl:for-each select="arg">
-        <xsl:value-of select="@name"/>
-	<xsl:if test="position() != last()">
-	  <xsl:text>, </xsl:text>
-	</xsl:if>
-      </xsl:for-each>
-      <xsl:text>)</xsl:text>
-    </xsl:if>
-    <xsl:text>;
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p>
-    <xsl:if test="arg">
-      <div class="variablelist"><table border="0"><col align="left"/><tbody>
-      <xsl:for-each select="arg">
-        <tr>
-          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
-	  <td>
-	    <xsl:call-template name="dumptext">
-	      <xsl:with-param name="text" select="@info"/>
-	    </xsl:call-template>
-	  </td>
-        </tr>
-      </xsl:for-each>
-      </tbody></table></div>
-    </xsl:if>
-    <xsl:text>
-</xsl:text>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="function">
-    <xsl:variable name="name" select="string(@name)"/>
-    <xsl:variable name="nlen" select="string-length($name)"/>
-    <xsl:variable name="tlen" select="string-length(return/@type)"/>
-    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}"></a><xsl:value-of select="$name"/> ()</h3>
-    <pre class="programlisting">
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="return/@type"/>
-    </xsl:call-template>
-    <xsl:text>&#9;</xsl:text>
-    <xsl:value-of select="@name"/>
-    <xsl:if test="$blen - 40 &lt; -8">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:if test="$blen - 40 &lt; 0">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:text>&#9;(</xsl:text>
-    <xsl:if test="not(arg)">
-      <xsl:text>void</xsl:text>
-    </xsl:if>
-    <xsl:for-each select="arg">
-      <xsl:call-template name="dumptext">
-        <xsl:with-param name="text" select="@type"/>
-      </xsl:call-template>
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="@name"/>
-      <xsl:if test="position() != last()">
-        <xsl:text>, </xsl:text><br/>
-	<xsl:if test="$blen - 40 &gt; 8">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:if test="$blen - 40 &gt; 0">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>)</xsl:text><br/>
-    <xsl:text>
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    <xsl:if test="arg | return/@info">
-      <div class="variablelist"><table border="0"><col align="left"/><tbody>
-      <xsl:for-each select="arg">
-        <tr>
-          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
-	  <td>
-	    <xsl:call-template name="dumptext">
-	      <xsl:with-param name="text" select="@info"/>
-	    </xsl:call-template>
-	  </td>
-        </tr>
-      </xsl:for-each>
-      <xsl:if test="return/@info">
-        <tr>
-          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-	  <td>
-	    <xsl:call-template name="dumptext">
-	      <xsl:with-param name="text" select="return/@info"/>
-	    </xsl:call-template>
-	  </td>
-        </tr>
-      </xsl:if>
-      </tbody></table></div>
-    </xsl:if>
-    </div><hr/>
-  </xsl:template>
-
-  <xsl:template mode="details" match="functype">
-    <xsl:variable name="name" select="string(@name)"/>
-    <xsl:variable name="nlen" select="string-length($name)"/>
-    <xsl:variable name="tlen" select="string-length(return/@type)"/>
-    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
-    <div class="refsect2" lang="en">
-    <h3><a name="{$name}"></a>Function type <xsl:value-of select="$name"/> </h3>
-    <pre class="programlisting">
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="return/@type"/>
-    </xsl:call-template>
-    <xsl:text>&#9;</xsl:text>
-    <xsl:value-of select="@name"/>
-    <xsl:if test="$blen - 40 &lt; -8">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:if test="$blen - 40 &lt; 0">
-      <xsl:text>&#9;</xsl:text>
-    </xsl:if>
-    <xsl:text>&#9;(</xsl:text>
-    <xsl:if test="not(arg)">
-      <xsl:text>void</xsl:text>
-    </xsl:if>
-    <xsl:for-each select="arg">
-      <xsl:call-template name="dumptext">
-        <xsl:with-param name="text" select="@type"/>
-      </xsl:call-template>
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="@name"/>
-      <xsl:if test="position() != last()">
-        <xsl:text>, </xsl:text><br/>
-	<xsl:if test="$blen - 40 &gt; 8">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:if test="$blen - 40 &gt; 0">
-	  <xsl:text>&#9;</xsl:text>
-	</xsl:if>
-	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>)</xsl:text><br/>
-    <xsl:text>
-</xsl:text>
-    </pre>
-    <p>
-    <xsl:call-template name="dumptext">
-      <xsl:with-param name="text" select="info"/>
-    </xsl:call-template>
-    </p><xsl:text>
-</xsl:text>
-    <xsl:if test="arg | return/@info">
-      <div class="variablelist"><table border="0"><col align="left"/><tbody>
-      <xsl:for-each select="arg">
-        <tr>
-          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
-	  <td>
-	    <xsl:call-template name="dumptext">
-	      <xsl:with-param name="text" select="@info"/>
-	    </xsl:call-template>
-	  </td>
-        </tr>
-      </xsl:for-each>
-      <xsl:if test="return/@info">
-        <tr>
-          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-	  <td>
-	    <xsl:call-template name="dumptext">
-	      <xsl:with-param name="text" select="return/@info"/>
-	    </xsl:call-template>
-	  </td>
-        </tr>
-      </xsl:if>
-      </tbody></table></div>
-    </xsl:if>
-    </div><hr/>
-  </xsl:template>
-
-<!--
-
-             The following builds the general.html page
-
--->
-  <xsl:template name="generate_general">
-    <xsl:variable name="next" select="string(/api/files/file[position()=1]/@name)"/>
-    <xsl:document xmlns="" href="general.html" method="html" indent="yes" encoding="UTF-8">
-      <html>
-        <head>
-	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-	  <title><xsl:value-of select="concat(@name, ': ', summary)"/></title>
-	  <meta name="generator" content="Libxml2 devhelp stylesheet"/>
-	  <link rel="start" href="index.html" title="libxml2 Reference Manual"/>
-	  <link rel="up" href="index.html" title="libxml2 Reference Manual"/>
-	  <link rel="stylesheet" href="style.css" type="text/css"/>
-	  <link rel="chapter" href="index.html" title="libxml2 Reference Manual"/>
-        </head>
-	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-
-          <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-	    <tr valign="middle">
-              <td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up"/></a></td>
-              <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"/></a></td>
-	      <xsl:if test="$next != ''">
-		<td><a accesskey="n" href="libxml2-{$next}.html"><img src="right.png" width="24" height="24" border="0" alt="Next"/></a></td>
-	      </xsl:if>
-              <th width="100%" align="center">libxml2 Reference Manual</th>
-            </tr>
-	  </table>
-	  <h2><span class="refentrytitle">libxml2 API Modules</span></h2>
-	  <p>
-	  <xsl:for-each select="/api/files/file">
-	    <a href="libxml2-{@name}.html"><xsl:value-of select="@name"/></a> - <xsl:value-of select="summary"/><br/>
-	  </xsl:for-each>
-	  </p>
-	</body>
-      </html>
-    </xsl:document>
-  </xsl:template>
-
-<!--
-
-             The following builds the index.html page
-
--->
-  <xsl:template name="generate_index">
-    <xsl:document xmlns="" href="index.html" method="html" indent="yes" encoding="UTF-8">
-      <html>
-        <head>
-	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-	  <title>libxml2 Reference Manual</title>
-	  <meta name="generator" content="Libxml2 devhelp stylesheet"/>
-	  <link rel="stylesheet" href="style.css" type="text/css"/>
-        </head>
-	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-
-          <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
-	    <tr valign="middle">
-              <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"/></a></td>
-	      <td><a accesskey="n" href="general.html"><img src="right.png" width="24" height="24" border="0" alt="Next"/></a></td>
-              <th width="100%" align="center">libxml2 Reference Manual</th>
-            </tr>
-	  </table>
-	  <h2><span class="refentrytitle">libxml2 Reference Manual</span></h2>
-<p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
-(but usable outside of the Gnome platform), it is free software available
-under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
-License</a>. XML itself is a metalanguage to design markup languages, i.e.
-text language where semantic and structure are added to the content using
-extra "markup" information enclosed between angle brackets. HTML is the most
-well-known markup language. Though the library is written in C, a variety of
-language bindings make it available in other environments.</p>
-<p>Libxml2 implements a number of existing standards related to markup
-languages:</p>
-<ul><li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
-<li>Namespaces in XML: <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></li>
-<li>XML Base: <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a></li>
-<li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
-Uniform Resource Identifiers <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a></li>
-<li>XML Path Language (XPath) 1.0: <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a></li>
-<li>HTML4 parser: <a href="http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a></li>
-<li>XML Pointer Language (XPointer) Version 1.0: <a href="http://www.w3.org/TR/xptr">http://www.w3.org/TR/xptr</a></li>
-<li>XML Inclusions (XInclude) Version 1.0: <a href="http://www.w3.org/TR/xinclude/">http://www.w3.org/TR/xinclude/</a></li>
-<li>ISO-8859-x encodings, as well as <a href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a> [UTF-8]
-and <a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>
-[UTF-16] Unicode encodings, and more if using iconv support</li>
-<li>part of SGML Open Technical Resolution TR9401:1997</li>
-<li>XML Catalogs Working Draft 06 August 2001: <a href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">http://www.oasis-open.org/committees/entity/spec-2001-08-06.html</a></li>
-<li>Canonical XML Version 1.0: <a href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>
-and the Exclusive XML Canonicalization CR draft <a href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a></li>
-<li>Relax NG, ISO/IEC 19757-2:2003, <a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">http://www.oasis-open.org/committees/relax-ng/spec-20011203.html</a></li>
-<li>W3C XML Schemas Part 2: Datatypes <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">REC 02 May
-2001</a></li>
-<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a> Working Draft 7
-April 2004</li>
-</ul>
-	</body>
-      </html>
-    </xsl:document>
-  </xsl:template>
-
-</xsl:stylesheet>
-
-
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/index.html 2.15.0+dfsg-0.3/doc/devhelp/index.html
--- 2.14.6+dfsg-0.1/doc/devhelp/index.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/index.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,62 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>libxml2 Reference Manual</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="general.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">libxml2 Reference Manual</span></h2>
-<p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
-(but usable outside of the Gnome platform), it is free software available
-under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
-License</a>. XML itself is a metalanguage to design markup languages, i.e.
-text language where semantic and structure are added to the content using
-extra "markup" information enclosed between angle brackets. HTML is the most
-well-known markup language. Though the library is written in C, a variety of
-language bindings make it available in other environments.</p>
-<p>Libxml2 implements a number of existing standards related to markup
-languages:</p>
-<ul>
-<li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a>
-</li>
-<li>Namespaces in XML: <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a>
-</li>
-<li>XML Base: <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
-</li>
-<li>
-<a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
-Uniform Resource Identifiers <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>
-</li>
-<li>XML Path Language (XPath) 1.0: <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a>
-</li>
-<li>HTML4 parser: <a href="http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a>
-</li>
-<li>XML Pointer Language (XPointer) Version 1.0: <a href="http://www.w3.org/TR/xptr">http://www.w3.org/TR/xptr</a>
-</li>
-<li>XML Inclusions (XInclude) Version 1.0: <a href="http://www.w3.org/TR/xinclude/">http://www.w3.org/TR/xinclude/</a>
-</li>
-<li>ISO-8859-x encodings, as well as <a href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a> [UTF-8]
-and <a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>
-[UTF-16] Unicode encodings, and more if using iconv support</li>
-<li>part of SGML Open Technical Resolution TR9401:1997</li>
-<li>XML Catalogs Working Draft 06 August 2001: <a href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">http://www.oasis-open.org/committees/entity/spec-2001-08-06.html</a>
-</li>
-<li>Canonical XML Version 1.0: <a href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>
-and the Exclusive XML Canonicalization CR draft <a href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a>
-</li>
-<li>Relax NG, ISO/IEC 19757-2:2003, <a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">http://www.oasis-open.org/committees/relax-ng/spec-20011203.html</a>
-</li>
-<li>W3C XML Schemas Part 2: Datatypes <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">REC 02 May
-2001</a>
-</li>
-<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a> Working Draft 7
-April 2004</li>
-</ul>
-</body>
-</html>
Binary files 2.14.6+dfsg-0.1/doc/devhelp/left.png and 2.15.0+dfsg-0.3/doc/devhelp/left.png differ
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-HTMLparser.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-HTMLparser.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-HTMLparser.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-HTMLparser.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1498 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>HTMLparser: interface for an HTML 4.0 non-verifying parser</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-HTMLtree.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">HTMLparser</span></h2>
-<p>HTMLparser - interface for an HTML 4.0 non-verifying parser</p>
-<p>this module implements an HTML 4.0 non-verifying parser with API compatible with the XML parser ones. It should be able to parse "real world" HTML, even if severely broken from a specification point of view. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#UTF8ToHtml">UTF8ToHtml</a>;
-#define <a href="#htmlDefaultSubelement">htmlDefaultSubelement</a>(elt);
-#define <a href="#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a>(parent, elt);
-#define <a href="#htmlRequiredAttrs">htmlRequiredAttrs</a>(elt);
-typedef <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> <a href="#htmlDocPtr">htmlDocPtr</a>;
-typedef struct _htmlElemDesc <a href="#htmlElemDesc">htmlElemDesc</a>;
-typedef <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * <a href="#htmlElemDescPtr">htmlElemDescPtr</a>;
-typedef struct _htmlEntityDesc <a href="#htmlEntityDesc">htmlEntityDesc</a>;
-typedef <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> * <a href="#htmlEntityDescPtr">htmlEntityDescPtr</a>;
-typedef <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#htmlNodePtr">htmlNodePtr</a>;
-typedef <a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> <a href="#htmlParserCtxt">htmlParserCtxt</a>;
-typedef <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> <a href="#htmlParserCtxtPtr">htmlParserCtxtPtr</a>;
-typedef <a href="libxml2-tree.html#xmlParserInput">xmlParserInput</a> <a href="#htmlParserInput">htmlParserInput</a>;
-typedef <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> <a href="#htmlParserInputPtr">htmlParserInputPtr</a>;
-typedef <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> <a href="#htmlParserNodeInfo">htmlParserNodeInfo</a>;
-typedef enum <a href="#htmlParserOption">htmlParserOption</a>;
-typedef <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> <a href="#htmlSAXHandler">htmlSAXHandler</a>;
-typedef <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> <a href="#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a>;
-typedef enum <a href="#htmlStatus">htmlStatus</a>;
-<a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	<a href="#htmlAttrAllowed">htmlAttrAllowed</a>		(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * elt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * attr, <br>					 int legacy);
-int	<a href="#htmlAutoCloseTag">htmlAutoCloseTag</a>		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> elem);
-<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	<a href="#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a>	(const char * filename, <br>							 const char * encoding);
-<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	<a href="#htmlCreateMemoryParserCtxt">htmlCreateMemoryParserCtxt</a>	(const char * buffer, <br>							 int size);
-<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	<a href="#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a>	(<a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>							 void * user_data, <br>							 const char * chunk, <br>							 int size, <br>							 const char * filename, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtParseDocument">htmlCtxtParseDocument</a>	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtReadDoc">htmlCtxtReadDoc</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtReadFd">htmlCtxtReadFd</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtReadFile">htmlCtxtReadFile</a>	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtReadIO">htmlCtxtReadIO</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlCtxtReadMemory">htmlCtxtReadMemory</a>	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-void	<a href="#htmlCtxtReset">htmlCtxtReset</a>			(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt);
-int	<a href="#htmlCtxtSetOptions">htmlCtxtSetOptions</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options);
-int	<a href="#htmlCtxtUseOptions">htmlCtxtUseOptions</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 int options);
-int	<a href="#htmlElementAllowedHere">htmlElementAllowedHere</a>		(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * parent, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elt);
-<a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	<a href="#htmlElementStatusHere">htmlElementStatusHere</a>	(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * parent, <br>					 const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * elt);
-int	<a href="#htmlEncodeEntities">htmlEncodeEntities</a>		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen, <br>					 int quoteChar);
-const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	<a href="#htmlEntityLookup">htmlEntityLookup</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	<a href="#htmlEntityValueLookup">htmlEntityValueLookup</a>	(unsigned int value);
-void	<a href="#htmlFreeParserCtxt">htmlFreeParserCtxt</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt);
-int	<a href="#htmlHandleOmittedElem">htmlHandleOmittedElem</a>		(int val);
-void	<a href="#htmlInitAutoClose">htmlInitAutoClose</a>		(void);
-int	<a href="#htmlIsAutoClosed">htmlIsAutoClosed</a>		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 <a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> elem);
-int	<a href="#htmlIsScriptAttribute">htmlIsScriptAttribute</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	<a href="#htmlNewParserCtxt">htmlNewParserCtxt</a>	(void);
-<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	<a href="#htmlNewSAXParserCtxt">htmlNewSAXParserCtxt</a>	(const <a href="libxml2-HTMLparser.html#htmlSAXHandler">htmlSAXHandler</a> * sax, <br>						 void * userData);
-<a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	<a href="#htmlNodeStatus">htmlNodeStatus</a>		(<a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> node, <br>					 int legacy);
-int	<a href="#htmlParseCharRef">htmlParseCharRef</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt);
-int	<a href="#htmlParseChunk">htmlParseChunk</a>			(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 int terminate);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlParseDoc">htmlParseDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * encoding);
-int	<a href="#htmlParseDocument">htmlParseDocument</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt);
-void	<a href="#htmlParseElement">htmlParseElement</a>		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	<a href="#htmlParseEntityRef">htmlParseEntityRef</a>	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** str);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlParseFile">htmlParseFile</a>		(const char * filename, <br>					 const char * encoding);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlReadDoc">htmlReadDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlReadFd">htmlReadFd</a>		(int fd, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlReadFile">htmlReadFile</a>		(const char * filename, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlReadIO">htmlReadIO</a>		(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlReadMemory">htmlReadMemory</a>		(const char * buffer, <br>					 int size, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlSAXParseDoc">htmlSAXParseDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * encoding, <br>					 <a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>					 void * userData);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlSAXParseFile">htmlSAXParseFile</a>	(const char * filename, <br>					 const char * encoding, <br>					 <a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>					 void * userData);
-const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> *	<a href="#htmlTagLookup">htmlTagLookup</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * tag);
-int	<a href="#htmlUTF8ToHtml">htmlUTF8ToHtml</a>			(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="UTF8ToHtml">Macro </a>UTF8ToHtml</h3>
-<pre class="programlisting">#define <a href="#UTF8ToHtml">UTF8ToHtml</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDefaultSubelement">Macro </a>htmlDefaultSubelement</h3>
-<pre class="programlisting">#define <a href="#htmlDefaultSubelement">htmlDefaultSubelement</a>(elt);
-</pre>
-<p>Returns the default subelement for this element</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlElementAllowedHereDesc">Macro </a>htmlElementAllowedHereDesc</h3>
-<pre class="programlisting">#define <a href="#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a>(parent, elt);
-</pre>
-<p>Checks whether an HTML element description may be a direct child of the specified element. Returns 1 if allowed; 0 otherwise.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>HTML parent element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlRequiredAttrs">Macro </a>htmlRequiredAttrs</h3>
-<pre class="programlisting">#define <a href="#htmlRequiredAttrs">htmlRequiredAttrs</a>(elt);
-</pre>
-<p>Returns the attributes required for the specified element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocPtr">Typedef </a>htmlDocPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> htmlDocPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlElemDesc">Structure </a>htmlElemDesc</h3>
-<pre class="programlisting">struct _htmlElemDesc {
-    const char *	name
-    char	startTag
-    char	endTag
-    char	saveEndTag
-    char	empty
-    char	depr
-    char	dtd
-    char	isinline
-    const char *	desc
-    const char **	subelts
-    const char *	defaultsubelt
-    const char **	attrs_opt
-    const char **	attrs_depr
-    const char **	attrs_req
-    int	dataMode
-} htmlElemDesc;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlElemDescPtr">Typedef </a>htmlElemDescPtr</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * htmlElemDescPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlEntityDesc">Structure </a>htmlEntityDesc</h3>
-<pre class="programlisting">struct _htmlEntityDesc {
-    unsigned int	value
-    const char *	name
-    const char *	desc
-} htmlEntityDesc;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlEntityDescPtr">Typedef </a>htmlEntityDescPtr</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> * htmlEntityDescPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodePtr">Typedef </a>htmlNodePtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> htmlNodePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserCtxt">Typedef </a>htmlParserCtxt</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> htmlParserCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserCtxtPtr">Typedef </a>htmlParserCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> htmlParserCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserInput">Typedef </a>htmlParserInput</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInput">xmlParserInput</a> htmlParserInput;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserInputPtr">Typedef </a>htmlParserInputPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> htmlParserInputPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserNodeInfo">Typedef </a>htmlParserNodeInfo</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> htmlParserNodeInfo;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParserOption">Enum </a>htmlParserOption</h3>
-<pre class="programlisting">enum <a href="#htmlParserOption">htmlParserOption</a> {
-    <a name="HTML_PARSE_RECOVER">HTML_PARSE_RECOVER</a> = 1 /* No effect */
-    <a name="HTML_PARSE_HTML5">HTML_PARSE_HTML5</a> = 2 /* HTML5 support */
-    <a name="HTML_PARSE_NODEFDTD">HTML_PARSE_NODEFDTD</a> = 4 /* do not default a doctype if not found */
-    <a name="HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a> = 32 /* suppress error reports */
-    <a name="HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a> = 64 /* suppress warning reports */
-    <a name="HTML_PARSE_PEDANTIC">HTML_PARSE_PEDANTIC</a> = 128 /* No effect */
-    <a name="HTML_PARSE_NOBLANKS">HTML_PARSE_NOBLANKS</a> = 256 /* remove blank nodes */
-    <a name="HTML_PARSE_NONET">HTML_PARSE_NONET</a> = 2048 /* No effect */
-    <a name="HTML_PARSE_NOIMPLIED">HTML_PARSE_NOIMPLIED</a> = 8192 /* Do not add implied html/body... elements */
-    <a name="HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a> = 65536 /* compact small text nodes */
-    <a name="HTML_PARSE_HUGE">HTML_PARSE_HUGE</a> = 524288 /* relax any hardcoded limit from the parser */
-    <a name="HTML_PARSE_IGNORE_ENC">HTML_PARSE_IGNORE_ENC</a> = 2097152 /* ignore internal document encoding hint */
-    <a name="HTML_PARSE_BIG_LINES">HTML_PARSE_BIG_LINES</a> = 4194304 /*  Store big lines numbers in text PSVI field */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSAXHandler">Typedef </a>htmlSAXHandler</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> htmlSAXHandler;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSAXHandlerPtr">Typedef </a>htmlSAXHandlerPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> htmlSAXHandlerPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlStatus">Enum </a>htmlStatus</h3>
-<pre class="programlisting">enum <a href="#htmlStatus">htmlStatus</a> {
-    <a name="HTML_NA">HTML_NA</a> = 0 /* something we don't check at all */
-    <a name="HTML_INVALID">HTML_INVALID</a> = 1
-    <a name="HTML_DEPRECATED">HTML_DEPRECATED</a> = 2
-    <a name="HTML_VALID">HTML_VALID</a> = 4
-    <a name="HTML_REQUIRED">HTML_REQUIRED</a> = 12 /*  VALID bit set so ( &amp; HTML_VALID ) is TRUE */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDefaultSAXHandler">Variable </a>htmlDefaultSAXHandler</h3>
-<pre class="programlisting">const <a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> htmlDefaultSAXHandler;
-</pre>
-<p>DEPRECATED: This handler is unused and will be removed from future versions. Default old SAX v1 handler for HTML, builds the DOM tree</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlAttrAllowed"></a>htmlAttrAllowed ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	htmlAttrAllowed		(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * elt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * attr, <br>					 int legacy)<br>
-</pre>
-<p>DEPRECATED: Don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>HTML attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>legacy</tt></i>:</span></td>
-<td>whether to allow deprecated attributes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td><a href="libxml2-HTMLparser.html#HTML_VALID">HTML_VALID</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlAutoCloseTag"></a>htmlAutoCloseTag ()</h3>
-<pre class="programlisting">int	htmlAutoCloseTag		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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's children would autoclose the given tag.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the HTML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The tag name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the HTML element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if autoclose, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCreateFileParserCtxt"></a>htmlCreateFileParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	htmlCreateFileParserCtxt	(const char * filename, <br>							 const char * encoding)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a> and <a href="libxml2-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a>. Create a parser context to read from a file. A non-NULL encoding overrides encoding declarations in the document. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>optional encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCreateMemoryParserCtxt"></a>htmlCreateMemoryParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	htmlCreateMemoryParserCtxt	(const char * buffer, <br>							 int size)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a> and <a href="libxml2-HTMLparser.html#htmlCtxtReadMemory">htmlCtxtReadMemory</a>. Create a parser context for an HTML in-memory document. The input buffer must not contain any terminating null bytes.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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 new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCreatePushParserCtxt"></a>htmlCreatePushParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	htmlCreatePushParserCtxt	(<a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>							 void * user_data, <br>							 const char * chunk, <br>							 int size, <br>							 const char * filename, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>Create a parser context for using the HTML parser in push mode.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a SAX handler (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>chunk</tt></i>:</span></td>
-<td>a pointer to an array of chars (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>number of chars in the array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>encoding (deprecated, pass XML_CHAR_ENCODING_NONE)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtParseDocument"></a>htmlCtxtParseDocument ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtParseDocument	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>Parse an HTML document and return the resulting document tree. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReadDoc"></a>htmlCtxtReadDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtReadDoc		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an HTML in-memory document and build a tree. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a pointer to a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReadFd"></a>htmlCtxtReadFd ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtReadFd		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an HTML from a file descriptor and build a tree. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for details. NOTE that the file descriptor will not be closed when the context is freed or reset.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optinal)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReadFile"></a>htmlCtxtReadFile ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtReadFile	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an HTML file from the filesystem, the network or a user-defined resource loader. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReadIO"></a>htmlCtxtReadIO ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtReadIO		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an HTML document from I/O functions and source and build a tree. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOption(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReadMemory"></a>htmlCtxtReadMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlCtxtReadMemory	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an HTML in-memory document and build a tree. The input buffer must not contain any terminating null bytes. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>URL</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optinal)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtReset"></a>htmlCtxtReset ()</h3>
-<pre class="programlisting">void	htmlCtxtReset			(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Reset a parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtSetOptions"></a>htmlCtxtSetOptions ()</h3>
-<pre class="programlisting">int	htmlCtxtSetOptions		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>Applies the options to the parser context. Unset options are cleared. Available since 2.14.0. With older versions, you can use <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a>. <a href="libxml2-HTMLparser.html#HTML_PARSE_RECOVER">HTML_PARSE_RECOVER</a> No effect as of 2.14.0. <a href="libxml2-HTMLparser.html#HTML_PARSE_HTML5">HTML_PARSE_HTML5</a> Make the tokenizer emit a SAX callback for each token. This results in unbalanced invocations of startElement and endElement. For now, this is only usable with custom SAX callbacks. <a href="libxml2-HTMLparser.html#HTML_PARSE_NODEFDTD">HTML_PARSE_NODEFDTD</a> Do not default to a doctype if none was found. <a href="libxml2-HTMLparser.html#HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a> Disable error and warning reports to the error handlers. Errors are still accessible with <a href="libxml2-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a>. <a href="libxml2-HTMLparser.html#HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a> Disable warning reports. <a href="libxml2-HTMLparser.html#HTML_PARSE_PEDANTIC">HTML_PARSE_PEDANTIC</a> No effect. <a href="libxml2-HTMLparser.html#HTML_PARSE_NOBLANKS">HTML_PARSE_NOBLANKS</a> Remove some text nodes containing only whitespace from the result document. Which nodes are removed depends on a conservative heuristic. The reindenting feature of the serialization code relies on this option to be set when parsing. Use of this option is DISCOURAGED. <a href="libxml2-HTMLparser.html#HTML_PARSE_NONET">HTML_PARSE_NONET</a> No effect. <a href="libxml2-HTMLparser.html#HTML_PARSE_NOIMPLIED">HTML_PARSE_NOIMPLIED</a> Do not add implied html, head or body elements. <a href="libxml2-HTMLparser.html#HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a> Store small strings directly in the node struct to save memory. <a href="libxml2-HTMLparser.html#HTML_PARSE_HUGE">HTML_PARSE_HUGE</a> Relax some internal limits. Available since 2.14.0. Use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> works with older versions. Maximum size of text nodes, tags, comments, CDATA sections normal: 10M huge: 1B Maximum size of names, system literals, pubid literals normal: 50K huge: 10M Maximum nesting depth of elements normal: 256 huge: 2048 <a href="libxml2-HTMLparser.html#HTML_PARSE_IGNORE_ENC">HTML_PARSE_IGNORE_ENC</a> Ignore the encoding in the HTML declaration. This option is mostly unneeded these days. The only effect is to enforce UTF-8 decoding of ASCII-like data. <a href="libxml2-HTMLparser.html#HTML_PARSE_BIG_LINES">HTML_PARSE_BIG_LINES</a> Enable reporting of line numbers larger than 65535. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a bitmask of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> values</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, the set of unknown or unimplemented options in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlCtxtUseOptions"></a>htmlCtxtUseOptions ()</h3>
-<pre class="programlisting">int	htmlCtxtUseOptions		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlCtxtSetOptions">htmlCtxtSetOptions</a>. Applies the options to the parser context. The following options are never cleared and can only be enabled: <a href="libxml2-HTMLparser.html#HTML_PARSE_NODEFDTD">HTML_PARSE_NODEFDTD</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_NOERROR">HTML_PARSE_NOERROR</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_NOWARNING">HTML_PARSE_NOWARNING</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_NOIMPLIED">HTML_PARSE_NOIMPLIED</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_COMPACT">HTML_PARSE_COMPACT</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_HUGE">HTML_PARSE_HUGE</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_IGNORE_ENC">HTML_PARSE_IGNORE_ENC</a> <a href="libxml2-HTMLparser.html#HTML_PARSE_BIG_LINES">HTML_PARSE_BIG_LINES</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOption(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, the set of unknown or unimplemented options in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlElementAllowedHere"></a>htmlElementAllowedHere ()</h3>
-<pre class="programlisting">int	htmlElementAllowedHere		(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * parent, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elt)<br>
-</pre>
-<p>DEPRECATED: Don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>HTML parent element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlElementStatusHere"></a>htmlElementStatusHere ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	htmlElementStatusHere	(const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * parent, <br>					 const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> * elt)<br>
-</pre>
-<p>DEPRECATED: Don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>HTML parent element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elt</tt></i>:</span></td>
-<td>HTML element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td><a href="libxml2-HTMLparser.html#HTML_VALID">HTML_VALID</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlEncodeEntities"></a>htmlEncodeEntities ()</h3>
-<pre class="programlisting">int	htmlEncodeEntities		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen, <br>					 int quoteChar)<br>
-</pre>
-<p>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of UTF-8 chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>quoteChar</tt></i>:</span></td>
-<td>the quote character to escape (' or ") or zero.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlEntityLookup"></a>htmlEntityLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	htmlEntityLookup	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Lookup the given entity in EntitiesTable TODO: the linear scan is really ugly, an hash table is really needed.</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 entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the associated <a href="libxml2-HTMLparser.html#htmlEntityDescPtr">htmlEntityDescPtr</a> if found, NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlEntityValueLookup"></a>htmlEntityValueLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	htmlEntityValueLookup	(unsigned int value)<br>
-</pre>
-<p>Lookup the given entity in EntitiesTable TODO: the linear scan is really ugly, an hash table is really needed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the entity's unicode value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the associated <a href="libxml2-HTMLparser.html#htmlEntityDescPtr">htmlEntityDescPtr</a> if found, NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlFreeParserCtxt"></a>htmlFreeParserCtxt ()</h3>
-<pre class="programlisting">void	htmlFreeParserCtxt		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlHandleOmittedElem"></a>htmlHandleOmittedElem ()</h3>
-<pre class="programlisting">int	htmlHandleOmittedElem		(int val)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#HTML_PARSE_NOIMPLIED">HTML_PARSE_NOIMPLIED</a> Set and return the previous value for handling HTML omitted tags.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>int 0 or 1</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last value for 0 for no handling, 1 for auto insertion.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlInitAutoClose"></a>htmlInitAutoClose ()</h3>
-<pre class="programlisting">void	htmlInitAutoClose		(void)<br>
-</pre>
-<p>DEPRECATED: This is a no-op.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlIsAutoClosed"></a>htmlIsAutoClosed ()</h3>
-<pre class="programlisting">int	htmlIsAutoClosed		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 <a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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's child</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the HTML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the HTML element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if autoclosed, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlIsScriptAttribute"></a>htmlIsScriptAttribute ()</h3>
-<pre class="programlisting">int	htmlIsScriptAttribute		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Check if an attribute is of content type Script</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>an attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 is the attribute is a script 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNewParserCtxt"></a>htmlNewParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	htmlNewParserCtxt	(void)<br>
-</pre>
-<p>Allocate and initialize a new HTML parser context. This can be used to parse HTML documents into DOM trees with functions like <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a> or <a href="libxml2-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a>. See <a href="libxml2-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a> for parser options. See <a href="libxml2-parser.html#xmlCtxtSetErrorHandler">xmlCtxtSetErrorHandler</a> for advanced error handling. See <a href="libxml2-HTMLparser.html#htmlNewSAXParserCtxt">htmlNewSAXParserCtxt</a> for custom SAX parsers.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> or NULL in case of allocation error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNewSAXParserCtxt"></a>htmlNewSAXParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a>	htmlNewSAXParserCtxt	(const <a href="libxml2-HTMLparser.html#htmlSAXHandler">htmlSAXHandler</a> * sax, <br>						 void * userData)<br>
-</pre>
-<p>Allocate and initialize a new HTML SAX parser context. If userData is NULL, the parser context will be passed as user data. Available since 2.11.0. If you want support older versions, it's best to invoke <a href="libxml2-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a> and set ctxt-&gt;sax with struct assignment. Also see <a href="libxml2-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> or NULL in case of allocation error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeStatus"></a>htmlNodeStatus ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlStatus">htmlStatus</a>	htmlNodeStatus		(<a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> node, <br>					 int legacy)<br>
-</pre>
-<p>DEPRECATED: Don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>an <a href="libxml2-HTMLparser.html#htmlNodePtr">htmlNodePtr</a> in a tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>legacy</tt></i>:</span></td>
-<td>whether to allow deprecated elements (YES is faster here for Element nodes)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td><a href="libxml2-HTMLparser.html#HTML_VALID">HTML_VALID</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseCharRef"></a>htmlParseCharRef ()</h3>
-<pre class="programlisting">int	htmlParseCharRef		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseChunk"></a>htmlParseChunk ()</h3>
-<pre class="programlisting">int	htmlParseChunk			(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 int terminate)<br>
-</pre>
-<p>Parse a chunk of memory in push parser mode. Assumes that the parser context was initialized with <a href="libxml2-HTMLparser.html#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a>. The last chunk, which will often be empty, must be marked with the @terminate flag. With the default SAX callbacks, the resulting document will be available in ctxt-&gt;myDoc. This pointer will not be freed by the library. If the document isn't well-formed, ctxt-&gt;myDoc is set to NULL.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>chunk</tt></i>:</span></td>
-<td>chunk of memory</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>size of chunk in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>terminate</tt></i>:</span></td>
-<td>last chunk indicator</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code (0 on success).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseDoc"></a>htmlParseDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlParseDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * encoding)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlReadDoc">htmlReadDoc</a>. Parse an HTML in-memory document and build a tree. This function uses deprecated global parser options.</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="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseDocument"></a>htmlParseDocument ()</h3>
-<pre class="programlisting">int	htmlParseDocument		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Parse an HTML document and invoke the SAX handlers. This is useful if you're only interested in custom SAX callbacks. If you want a document tree, use <a href="libxml2-HTMLparser.html#htmlCtxtParseDocument">htmlCtxtParseDocument</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0, -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseElement"></a>htmlParseElement ()</h3>
-<pre class="programlisting">void	htmlParseElement		(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an HTML element, this is highly recursive this is kept for compatibility with previous code versions [39] element ::= EmptyElemTag | STag content ETag [41] Attribute ::= Name Eq AttValue</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseEntityRef"></a>htmlParseEntityRef ()</h3>
-<pre class="programlisting">const <a href="libxml2-HTMLparser.html#htmlEntityDesc">htmlEntityDesc</a> *	htmlParseEntityRef	(<a href="libxml2-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** str)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an HTML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>location to store the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlParseFile"></a>htmlParseFile ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlParseFile		(const char * filename, <br>					 const char * encoding)<br>
-</pre>
-<p>Parse an HTML file and build a tree.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlReadDoc"></a>htmlReadDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlReadDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an HTML document from a zero-terminated string. See <a href="libxml2-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a pointer to a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>only used for error reporting (optoinal)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlReadFd"></a>htmlReadFd ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlReadFd		(int fd, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an HTML document from a file descriptor. NOTE that the file descriptor will not be closed when the context is freed or reset. See <a href="libxml2-HTMLparser.html#htmlCtxtReadFd">htmlCtxtReadFd</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlReadFile"></a>htmlReadFile ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlReadFile		(const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an HTML file from the filesystem, the network or a global user-defined resource loader. See <a href="libxml2-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlReadIO"></a>htmlReadIO ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlReadIO		(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an HTML document from I/O functions and context. See <a href="libxml2-HTMLparser.html#htmlCtxtReadIO">htmlCtxtReadIO</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOption(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlReadMemory"></a>htmlReadMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlReadMemory		(const char * buffer, <br>					 int size, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an HTML document from memory. The input buffer must not contain any terminating null bytes. See <a href="libxml2-HTMLparser.html#htmlCtxtReadMemory">htmlCtxtReadMemory</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>url</tt></i>:</span></td>
-<td>only used for error reporting (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of htmlParserOption(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSAXParseDoc"></a>htmlSAXParseDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlSAXParseDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * encoding, <br>					 <a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>					 void * userData)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlNewSAXParserCtxt">htmlNewSAXParserCtxt</a> and <a href="libxml2-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a>. 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.</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="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>a free form C string describing the HTML document encoding, or NULL</td>
-</tr>
-<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>userData</tt></i>:</span></td>
-<td>if using SAX, this pointer will be provided on callbacks.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree unless SAX is NULL or the document is not well formed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSAXParseFile"></a>htmlSAXParseFile ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlSAXParseFile	(const char * filename, <br>					 const char * encoding, <br>					 <a href="libxml2-HTMLparser.html#htmlSAXHandlerPtr">htmlSAXHandlerPtr</a> sax, <br>					 void * userData)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-HTMLparser.html#htmlNewSAXParserCtxt">htmlNewSAXParserCtxt</a> and <a href="libxml2-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a>. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>encoding (optional)</td>
-</tr>
-<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>userData</tt></i>:</span></td>
-<td>if using SAX, this pointer will be provided on callbacks.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree unless SAX is NULL or the document is not well formed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlTagLookup"></a>htmlTagLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-HTMLparser.html#htmlElemDesc">htmlElemDesc</a> *	htmlTagLookup	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * tag)<br>
-</pre>
-<p>Lookup the HTML tag in the ElementTable</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>tag</tt></i>:</span></td>
-<td>The tag name in lowercase</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the related <a href="libxml2-HTMLparser.html#htmlElemDescPtr">htmlElemDescPtr</a> or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlUTF8ToHtml"></a>htmlUTF8ToHtml ()</h3>
-<pre class="programlisting">int	htmlUTF8ToHtml			(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen)<br>
-</pre>
-<p>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of UTF-8 chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-HTMLtree.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-HTMLtree.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-HTMLtree.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-HTMLtree.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,587 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>HTMLtree: specific APIs to process HTML tree, especially serialization</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-HTMLparser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-SAX2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">HTMLtree</span></h2>
-<p>HTMLtree - specific APIs to process HTML tree, especially serialization</p>
-<p>this module implements a few function needed to process tree in an HTML specific way. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a>;
-#define <a href="#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a>;
-#define <a href="#HTML_PI_NODE">HTML_PI_NODE</a>;
-#define <a href="#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a>;
-#define <a href="#HTML_TEXT_NODE">HTML_TEXT_NODE</a>;
-void	<a href="#htmlDocContentDumpFormatOutput">htmlDocContentDumpFormatOutput</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-void	<a href="#htmlDocContentDumpOutput">htmlDocContentDumpOutput</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding);
-int	<a href="#htmlDocDump">htmlDocDump</a>			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-void	<a href="#htmlDocDumpMemory">htmlDocDumpMemory</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size);
-void	<a href="#htmlDocDumpMemoryFormat">htmlDocDumpMemoryFormat</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size, <br>					 int format);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#htmlGetMetaEncoding">htmlGetMetaEncoding</a>	(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc);
-int	<a href="#htmlIsBooleanAttr">htmlIsBooleanAttr</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlNewDoc">htmlNewDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID);
-<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	<a href="#htmlNewDocNoDtD">htmlNewDocNoDtD</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID);
-int	<a href="#htmlNodeDump">htmlNodeDump</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-void	<a href="#htmlNodeDumpFile">htmlNodeDumpFile</a>		(FILE * out, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-int	<a href="#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a>		(FILE * out, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-void	<a href="#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-void	<a href="#htmlNodeDumpOutput">htmlNodeDumpOutput</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding);
-int	<a href="#htmlSaveFile">htmlSaveFile</a>			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-int	<a href="#htmlSaveFileEnc">htmlSaveFileEnc</a>			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding);
-int	<a href="#htmlSaveFileFormat">htmlSaveFileFormat</a>		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-int	<a href="#htmlSetMetaEncoding">htmlSetMetaEncoding</a>		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * encoding);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="HTML_COMMENT_NODE">Macro </a>HTML_COMMENT_NODE</h3>
-<pre class="programlisting">#define <a href="#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a>;
-</pre>
-<p>Macro. A comment in a HTML document is really implemented the same way as a comment in an XML document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="HTML_ENTITY_REF_NODE">Macro </a>HTML_ENTITY_REF_NODE</h3>
-<pre class="programlisting">#define <a href="#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a>;
-</pre>
-<p>Macro. An entity reference in a HTML document is really implemented the same way as an entity reference in an XML document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="HTML_PI_NODE">Macro </a>HTML_PI_NODE</h3>
-<pre class="programlisting">#define <a href="#HTML_PI_NODE">HTML_PI_NODE</a>;
-</pre>
-<p>Macro. A processing instruction in a HTML document is really implemented the same way as a processing instruction in an XML document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="HTML_PRESERVE_NODE">Macro </a>HTML_PRESERVE_NODE</h3>
-<pre class="programlisting">#define <a href="#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a>;
-</pre>
-<p>Macro. A preserved node in a HTML document is really implemented the same way as a CDATA section in an XML document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="HTML_TEXT_NODE">Macro </a>HTML_TEXT_NODE</h3>
-<pre class="programlisting">#define <a href="#HTML_TEXT_NODE">HTML_TEXT_NODE</a>;
-</pre>
-<p>Macro. A text node in a HTML document is really implemented the same way as a text node in an XML document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocContentDumpFormatOutput"></a>htmlDocContentDumpFormatOutput ()</h3>
-<pre class="programlisting">void	htmlDocContentDumpFormatOutput	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an HTML document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the HTML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding string (unused)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocContentDumpOutput"></a>htmlDocContentDumpOutput ()</h3>
-<pre class="programlisting">void	htmlDocContentDumpOutput	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding)<br>
-</pre>
-<p>Dump an HTML document. Formatting return/spaces are added.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the HTML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding string (unused)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocDump"></a>htmlDocDump ()</h3>
-<pre class="programlisting">int	htmlDocDump			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br>
-</pre>
-<p>Dump an HTML document to an open FILE.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the FILE*</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocDumpMemory"></a>htmlDocDumpMemory ()</h3>
-<pre class="programlisting">void	htmlDocDumpMemory		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size)<br>
-</pre>
-<p>Dump an HTML document in memory and return the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * and it's size. It's up to the caller to free the memory.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>OUT: the memory pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>OUT: the memory length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDocDumpMemoryFormat"></a>htmlDocDumpMemoryFormat ()</h3>
-<pre class="programlisting">void	htmlDocDumpMemoryFormat		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size, <br>					 int format)<br>
-</pre>
-<p>Dump an HTML document in memory and return the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * and it's size. It's up to the caller to free the memory.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>OUT: the memory pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>OUT: the memory length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlGetMetaEncoding"></a>htmlGetMetaEncoding ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	htmlGetMetaEncoding	(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc)<br>
-</pre>
-<p>Encoding definition lookup in the Meta tags</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current encoding as flagged in the HTML source</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlIsBooleanAttr"></a>htmlIsBooleanAttr ()</h3>
-<pre class="programlisting">int	htmlIsBooleanAttr		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Determine if a given attribute is a boolean attribute.</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 name of the attribute to check</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>false if the attribute is not boolean, true otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNewDoc"></a>htmlNewDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlNewDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID)<br>
-</pre>
-<p>Creates a new HTML document</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>URI for the dtd, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID of the DTD, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new document</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNewDocNoDtD"></a>htmlNewDocNoDtD ()</h3>
-<pre class="programlisting"><a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a>	htmlNewDocNoDtD		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID)<br>
-</pre>
-<p>Creates a new HTML document without a DTD node if @URI and @ExternalID are NULL</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>URI for the dtd, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID of the DTD, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new document, do not initialize the DTD if not provided</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeDump"></a>htmlNodeDump ()</h3>
-<pre class="programlisting">int	htmlNodeDump			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the HTML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeDumpFile"></a>htmlNodeDumpFile ()</h3>
-<pre class="programlisting">void	htmlNodeDumpFile		(FILE * out, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the FILE pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeDumpFileFormat"></a>htmlNodeDumpFileFormat ()</h3>
-<pre class="programlisting">int	htmlNodeDumpFileFormat		(FILE * out, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an HTML node, recursive behaviour,children are printed too. TODO: if encoding == NULL try to save in the doc encoding</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the FILE pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeDumpFormatOutput"></a>htmlNodeDumpFormatOutput ()</h3>
-<pre class="programlisting">void	htmlNodeDumpFormatOutput	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an HTML node, recursive behaviour,children are printed too.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the HTML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding string (unused)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlNodeDumpOutput"></a>htmlNodeDumpOutput ()</h3>
-<pre class="programlisting">void	htmlNodeDumpOutput		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const char * encoding)<br>
-</pre>
-<p>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns/spaces are added.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the HTML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding string (unused)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSaveFile"></a>htmlSaveFile ()</h3>
-<pre class="programlisting">int	htmlSaveFile			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br>
-</pre>
-<p>Dump an HTML document to a file. If @filename is "-" the stdout file is used.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename (or URL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSaveFileEnc"></a>htmlSaveFileEnc ()</h3>
-<pre class="programlisting">int	htmlSaveFileEnc			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding)<br>
-</pre>
-<p>Dump an HTML document to a file using a given encoding and formatting returns/spaces are added.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSaveFileFormat"></a>htmlSaveFileFormat ()</h3>
-<pre class="programlisting">int	htmlSaveFileFormat		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an HTML document to a file using a given encoding.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlSetMetaEncoding"></a>htmlSetMetaEncoding ()</h3>
-<pre class="programlisting">int	htmlSetMetaEncoding		(<a href="libxml2-HTMLparser.html#htmlDocPtr">htmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * encoding)<br>
-</pre>
-<p>Sets the current encoding in the Meta tags NOTE: this will not change the document content encoding, just the META flag associated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-SAX.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-SAX.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-SAX.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-SAX.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,943 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>SAX: Old SAX version 1 handler, deprecated</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-HTMLtree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-SAX2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">SAX</span></h2>
-<p>SAX - Old SAX version 1 handler, deprecated</p>
-<p>DEPRECATED set of SAX version 1 interfaces used to build the DOM tree. </p>
-<p> WARNING: this module is deprecated !</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">void	<a href="#attribute">attribute</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-void	<a href="#attributeDecl">attributeDecl</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree);
-void	<a href="#cdataBlock">cdataBlock</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len);
-void	<a href="#characters">characters</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-int	<a href="#checkNamespace">checkNamespace</a>			(void * ctx, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespace);
-void	<a href="#comment">comment</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-void	<a href="#elementDecl">elementDecl</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content);
-void	<a href="#endDocument">endDocument</a>			(void * ctx);
-void	<a href="#endElement">endElement</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#entityDecl">entityDecl</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-void	<a href="#externalSubset">externalSubset</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-int	<a href="#getColumnNumber">getColumnNumber</a>			(void * ctx);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#getEntity">getEntity</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#getLineNumber">getLineNumber</a>			(void * ctx);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#getNamespace">getNamespace</a>		(void * ctx);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#getParameterEntity">getParameterEntity</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#getPublicId">getPublicId</a>		(void * ctx);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#getSystemId">getSystemId</a>		(void * ctx);
-void	<a href="#globalNamespace">globalNamespace</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-int	<a href="#hasExternalSubset">hasExternalSubset</a>		(void * ctx);
-int	<a href="#hasInternalSubset">hasInternalSubset</a>		(void * ctx);
-void	<a href="#ignorableWhitespace">ignorableWhitespace</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-void	<a href="#inithtmlDefaultSAXHandler">inithtmlDefaultSAXHandler</a>	(<a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * hdlr);
-void	<a href="#initxmlDefaultSAXHandler">initxmlDefaultSAXHandler</a>	(<a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * hdlr, <br>					 int warning);
-void	<a href="#internalSubset">internalSubset</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-int	<a href="#isStandalone">isStandalone</a>			(void * ctx);
-void	<a href="#namespaceDecl">namespaceDecl</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-void	<a href="#notationDecl">notationDecl</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-void	<a href="#processingInstruction">processingInstruction</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data);
-void	<a href="#reference">reference</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#resolveEntity">resolveEntity</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-void	<a href="#setDocumentLocator">setDocumentLocator</a>		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc);
-void	<a href="#setNamespace">setNamespace</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#startDocument">startDocument</a>			(void * ctx);
-void	<a href="#startElement">startElement</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts);
-void	<a href="#unparsedEntityDecl">unparsedEntityDecl</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="attribute"></a>attribute ()</h3>
-<pre class="programlisting">void	attribute			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Handle an <a href="libxml2-SAX.html#attribute">attribute</a> that has been read by the parser. The default handling is to convert the <a href="libxml2-SAX.html#attribute">attribute</a> into an DOM subtree and past it in a new <a href="libxml2-tree.html#xmlAttr">xmlAttr</a> element added to the element. DEPRECATED: use xmlSAX2Attribute()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>The <a href="libxml2-SAX.html#attribute">attribute</a> name, including namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>The <a href="libxml2-SAX.html#attribute">attribute</a> value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="attributeDecl"></a>attributeDecl ()</h3>
-<pre class="programlisting">void	attributeDecl			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree)<br>
-</pre>
-<p>An <a href="libxml2-SAX.html#attribute">attribute</a> definition has been parsed DEPRECATED: use xmlSAX2AttributeDecl()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX.html#attribute">attribute</a> name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX.html#attribute">attribute</a> type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>def</tt></i>:</span></td>
-<td>the type of default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>defaultValue</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX.html#attribute">attribute</a> default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>the tree of enumerated value set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="cdataBlock"></a>cdataBlock ()</h3>
-<pre class="programlisting">void	cdataBlock			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len)<br>
-</pre>
-<p>called when a pcdata block has been parsed DEPRECATED: use xmlSAX2CDataBlock()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>The pcdata content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the block length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="characters"></a>characters ()</h3>
-<pre class="programlisting">void	characters			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>receiving some chars from the parser. DEPRECATED: use xmlSAX2Characters()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="checkNamespace"></a>checkNamespace ()</h3>
-<pre class="programlisting">int	checkNamespace			(void * ctx, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespace)<br>
-</pre>
-<p>Check that the current element namespace is the same as the one read upon parsing. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespace</tt></i>:</span></td>
-<td>the namespace to check against</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="comment"></a>comment ()</h3>
-<pre class="programlisting">void	comment			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>A <a href="libxml2-SAX.html#comment">comment</a> has been parsed. DEPRECATED: use xmlSAX2Comment()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX.html#comment">comment</a> content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="elementDecl"></a>elementDecl ()</h3>
-<pre class="programlisting">void	elementDecl			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content)<br>
-</pre>
-<p>An element definition has been parsed DEPRECATED: use xmlSAX2ElementDecl()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the element type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the element value tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="endDocument"></a>endDocument ()</h3>
-<pre class="programlisting">void	endDocument			(void * ctx)<br>
-</pre>
-<p>called when the document end has been detected. DEPRECATED: use xmlSAX2EndDocument()</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="endElement"></a>endElement ()</h3>
-<pre class="programlisting">void	endElement			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>called when the end of an element has been detected. DEPRECATED: use xmlSAX2EndElement()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The element name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="entityDecl"></a>entityDecl ()</h3>
-<pre class="programlisting">void	entityDecl			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>An entity definition has been parsed DEPRECATED: use xmlSAX2EntityDecl()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity value (without processing).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="externalSubset"></a>externalSubset ()</h3>
-<pre class="programlisting">void	externalSubset			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on external subset declaration. DEPRECATED: use xmlSAX2ExternalSubset()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getColumnNumber"></a>getColumnNumber ()</h3>
-<pre class="programlisting">int	getColumnNumber			(void * ctx)<br>
-</pre>
-<p>Provide the column number of the current parsing point. DEPRECATED: use xmlSAX2GetColumnNumber()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getEntity"></a>getEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	getEntity		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get an entity by name DEPRECATED: use xmlSAX2GetEntity()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getLineNumber"></a>getLineNumber ()</h3>
-<pre class="programlisting">int	getLineNumber			(void * ctx)<br>
-</pre>
-<p>Provide the line number of the current parsing point. DEPRECATED: use xmlSAX2GetLineNumber()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getNamespace"></a>getNamespace ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	getNamespace		(void * ctx)<br>
-</pre>
-<p>Get the current element namespace. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> or NULL if none</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getParameterEntity"></a>getParameterEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	getParameterEntity	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get a parameter entity by name DEPRECATED: use xmlSAX2GetParameterEntity()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getPublicId"></a>getPublicId ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	getPublicId		(void * ctx)<br>
-</pre>
-<p>Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN" DEPRECATED: use xmlSAX2GetPublicId()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getSystemId"></a>getSystemId ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	getSystemId		(void * ctx)<br>
-</pre>
-<p>Provides the system ID, basically URL or filename e.g. http://www.sgmlsource.com/dtds/memo.dtd DEPRECATED: use xmlSAX2GetSystemId()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="globalNamespace"></a>globalNamespace ()</h3>
-<pre class="programlisting">void	globalNamespace			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>An old global namespace has been parsed. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>href</tt></i>:</span></td>
-<td>the namespace associated URN</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the namespace prefix</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="hasExternalSubset"></a>hasExternalSubset ()</h3>
-<pre class="programlisting">int	hasExternalSubset		(void * ctx)<br>
-</pre>
-<p>Does this document has an external subset DEPRECATED: use xmlSAX2HasExternalSubset()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="hasInternalSubset"></a>hasInternalSubset ()</h3>
-<pre class="programlisting">int	hasInternalSubset		(void * ctx)<br>
-</pre>
-<p>Does this document has an internal subset DEPRECATED: use xmlSAX2HasInternalSubset()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="ignorableWhitespace"></a>ignorableWhitespace ()</h3>
-<pre class="programlisting">void	ignorableWhitespace		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use <a href="libxml2-SAX.html#characters">characters</a> DEPRECATED: use xmlSAX2IgnorableWhitespace()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="inithtmlDefaultSAXHandler"></a>inithtmlDefaultSAXHandler ()</h3>
-<pre class="programlisting">void	inithtmlDefaultSAXHandler	(<a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * hdlr)<br>
-</pre>
-<p>Initialize the default HTML SAX version 1 handler DEPRECATED: use xmlSAX2InitHtmlDefaultSAXHandler() for the new SAX2 blocks</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>hdlr</tt></i>:</span></td>
-<td>the SAX handler</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="initxmlDefaultSAXHandler"></a>initxmlDefaultSAXHandler ()</h3>
-<pre class="programlisting">void	initxmlDefaultSAXHandler	(<a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * hdlr, <br>					 int warning)<br>
-</pre>
-<p>Initialize the default XML SAX version 1 handler DEPRECATED: use xmlSAX2InitDefaultSAXHandler() for the new SAX2 blocks</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hdlr</tt></i>:</span></td>
-<td>the SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warning</tt></i>:</span></td>
-<td>flag if non-zero sets the handler warning procedure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="internalSubset"></a>internalSubset ()</h3>
-<pre class="programlisting">void	internalSubset			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on internal subset declaration. DEPRECATED: use xmlSAX2InternalSubset()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="isStandalone"></a>isStandalone ()</h3>
-<pre class="programlisting">int	isStandalone			(void * ctx)<br>
-</pre>
-<p>Is this document tagged standalone ? DEPRECATED: use xmlSAX2IsStandalone()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="namespaceDecl"></a>namespaceDecl ()</h3>
-<pre class="programlisting">void	namespaceDecl			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>A namespace has been parsed. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>href</tt></i>:</span></td>
-<td>the namespace associated URN</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the namespace prefix</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="notationDecl"></a>notationDecl ()</h3>
-<pre class="programlisting">void	notationDecl			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>What to do when a notation declaration has been parsed. DEPRECATED: use xmlSAX2NotationDecl()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="processingInstruction"></a>processingInstruction ()</h3>
-<pre class="programlisting">void	processingInstruction		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data)<br>
-</pre>
-<p>A processing instruction has been parsed. DEPRECATED: use xmlSAX2ProcessingInstruction()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>the target name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the PI data's</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="reference"></a>reference ()</h3>
-<pre class="programlisting">void	reference			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>called when an entity <a href="libxml2-SAX.html#reference">reference</a> is detected. DEPRECATED: use xmlSAX2Reference()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="resolveEntity"></a>resolveEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	resolveEntity	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>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's own entity resolution routine DEPRECATED: use xmlSAX2ResolveEntity()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> if inlined or NULL for DOM behaviour.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="setDocumentLocator"></a>setDocumentLocator ()</h3>
-<pre class="programlisting">void	setDocumentLocator		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc)<br>
-</pre>
-<p>Receive the document locator at startup, actually <a href="libxml2-parser.html#xmlDefaultSAXLocator">xmlDefaultSAXLocator</a> Everything is available on the context, so this is useless in our case. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loc</tt></i>:</span></td>
-<td>A SAX Locator</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="setNamespace"></a>setNamespace ()</h3>
-<pre class="programlisting">void	setNamespace			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Set the current element namespace. DEPRECATED</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the namespace prefix</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="startDocument"></a>startDocument ()</h3>
-<pre class="programlisting">void	startDocument			(void * ctx)<br>
-</pre>
-<p>called when the document start being processed. DEPRECATED: use xmlSAX2StartDocument()</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="startElement"></a>startElement ()</h3>
-<pre class="programlisting">void	startElement			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts)<br>
-</pre>
-<p>called when an opening tag has been processed. DEPRECATED: use xmlSAX2StartElement()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>The element name, including namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>atts</tt></i>:</span></td>
-<td>An array of name/value attributes pairs, NULL terminated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="unparsedEntityDecl"></a>unparsedEntityDecl ()</h3>
-<pre class="programlisting">void	unparsedEntityDecl		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName)<br>
-</pre>
-<p>What to do when an unparsed entity declaration is parsed DEPRECATED: use xmlSAX2UnparsedEntityDecl()</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>notationName</tt></i>:</span></td>
-<td>the name of the notation</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-SAX2.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-SAX2.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-SAX2.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-SAX2.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,940 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>SAX2: SAX2 parser interface used to build the DOM tree</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-HTMLtree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-c14n.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">SAX2</span></h2>
-<p>SAX2 - SAX2 parser interface used to build the DOM tree</p>
-<p>those are the default SAX2 interfaces used by the library when building DOM tree. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">void	<a href="#htmlDefaultSAXHandlerInit">htmlDefaultSAXHandlerInit</a>	(void);
-void	<a href="#xmlDefaultSAXHandlerInit">xmlDefaultSAXHandlerInit</a>	(void);
-void	<a href="#xmlSAX2AttributeDecl">xmlSAX2AttributeDecl</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree);
-void	<a href="#xmlSAX2CDataBlock">xmlSAX2CDataBlock</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len);
-void	<a href="#xmlSAX2Characters">xmlSAX2Characters</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-void	<a href="#xmlSAX2Comment">xmlSAX2Comment</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-void	<a href="#xmlSAX2ElementDecl">xmlSAX2ElementDecl</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content);
-void	<a href="#xmlSAX2EndDocument">xmlSAX2EndDocument</a>		(void * ctx);
-void	<a href="#xmlSAX2EndElement">xmlSAX2EndElement</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#xmlSAX2EndElementNs">xmlSAX2EndElementNs</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI);
-void	<a href="#xmlSAX2EntityDecl">xmlSAX2EntityDecl</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-void	<a href="#xmlSAX2ExternalSubset">xmlSAX2ExternalSubset</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-int	<a href="#xmlSAX2GetColumnNumber">xmlSAX2GetColumnNumber</a>		(void * ctx);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlSAX2GetEntity">xmlSAX2GetEntity</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlSAX2GetLineNumber">xmlSAX2GetLineNumber</a>		(void * ctx);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlSAX2GetParameterEntity">xmlSAX2GetParameterEntity</a>	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSAX2GetPublicId">xmlSAX2GetPublicId</a>	(void * ctx);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a>	(void * ctx);
-int	<a href="#xmlSAX2HasExternalSubset">xmlSAX2HasExternalSubset</a>	(void * ctx);
-int	<a href="#xmlSAX2HasInternalSubset">xmlSAX2HasInternalSubset</a>	(void * ctx);
-void	<a href="#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-void	<a href="#xmlSAX2InitDefaultSAXHandler">xmlSAX2InitDefaultSAXHandler</a>	(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr, <br>					 int warning);
-void	<a href="#xmlSAX2InitHtmlDefaultSAXHandler">xmlSAX2InitHtmlDefaultSAXHandler</a>	(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr);
-void	<a href="#xmlSAX2InternalSubset">xmlSAX2InternalSubset</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-int	<a href="#xmlSAX2IsStandalone">xmlSAX2IsStandalone</a>		(void * ctx);
-void	<a href="#xmlSAX2NotationDecl">xmlSAX2NotationDecl</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-void	<a href="#xmlSAX2ProcessingInstruction">xmlSAX2ProcessingInstruction</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data);
-void	<a href="#xmlSAX2Reference">xmlSAX2Reference</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a>	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-void	<a href="#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a>	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc);
-void	<a href="#xmlSAX2StartDocument">xmlSAX2StartDocument</a>		(void * ctx);
-void	<a href="#xmlSAX2StartElement">xmlSAX2StartElement</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts);
-void	<a href="#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 int nb_namespaces, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 int nb_attributes, <br>					 int nb_defaulted, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** attributes);
-void	<a href="#xmlSAX2UnparsedEntityDecl">xmlSAX2UnparsedEntityDecl</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName);
-int	<a href="#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a>		(int version);
-int	<a href="#xmlSAXVersion">xmlSAXVersion</a>			(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr, <br>					 int version);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="htmlDefaultSAXHandlerInit"></a>htmlDefaultSAXHandlerInit ()</h3>
-<pre class="programlisting">void	htmlDefaultSAXHandlerInit	(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a> to initialize the library.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDefaultSAXHandlerInit"></a>xmlDefaultSAXHandlerInit ()</h3>
-<pre class="programlisting">void	xmlDefaultSAXHandlerInit	(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a> to initialize the library. Initialize the default SAX2 handler</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2AttributeDecl"></a>xmlSAX2AttributeDecl ()</h3>
-<pre class="programlisting">void	xmlSAX2AttributeDecl		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree)<br>
-</pre>
-<p>An attribute definition has been parsed</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the attribute type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>def</tt></i>:</span></td>
-<td>the type of default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>defaultValue</tt></i>:</span></td>
-<td>the attribute default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>the tree of enumerated value set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2CDataBlock"></a>xmlSAX2CDataBlock ()</h3>
-<pre class="programlisting">void	xmlSAX2CDataBlock		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len)<br>
-</pre>
-<p>called when a pcdata block has been parsed</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>The pcdata content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the block length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2Characters"></a>xmlSAX2Characters ()</h3>
-<pre class="programlisting">void	xmlSAX2Characters		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>receiving some chars from the parser.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2Comment"></a>xmlSAX2Comment ()</h3>
-<pre class="programlisting">void	xmlSAX2Comment			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>A <a href="libxml2-SAX2.html#xmlSAX2Comment">xmlSAX2Comment</a> has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX2.html#xmlSAX2Comment">xmlSAX2Comment</a> content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2ElementDecl"></a>xmlSAX2ElementDecl ()</h3>
-<pre class="programlisting">void	xmlSAX2ElementDecl		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content)<br>
-</pre>
-<p>An element definition has been parsed</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the element type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the element value tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2EndDocument"></a>xmlSAX2EndDocument ()</h3>
-<pre class="programlisting">void	xmlSAX2EndDocument		(void * ctx)<br>
-</pre>
-<p>called when the document end has been detected.</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2EndElement"></a>xmlSAX2EndElement ()</h3>
-<pre class="programlisting">void	xmlSAX2EndElement		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>DEPRECATED: Don't call this function directly. called when the end of an element has been detected. Used for HTML and SAX1.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The element name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2EndElementNs"></a>xmlSAX2EndElementNs ()</h3>
-<pre class="programlisting">void	xmlSAX2EndElementNs		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI)<br>
-</pre>
-<p>SAX2 callback when an element end has been detected by the parser. It provides the namespace information for the element.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localname</tt></i>:</span></td>
-<td>the local name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the element namespace prefix if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the element namespace name if available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2EntityDecl"></a>xmlSAX2EntityDecl ()</h3>
-<pre class="programlisting">void	xmlSAX2EntityDecl		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>An entity definition has been parsed</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity value (without processing).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2ExternalSubset"></a>xmlSAX2ExternalSubset ()</h3>
-<pre class="programlisting">void	xmlSAX2ExternalSubset		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on external subset declaration.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetColumnNumber"></a>xmlSAX2GetColumnNumber ()</h3>
-<pre class="programlisting">int	xmlSAX2GetColumnNumber		(void * ctx)<br>
-</pre>
-<p>Provide the column number of the current parsing point.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetEntity"></a>xmlSAX2GetEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlSAX2GetEntity	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get an entity by name</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetLineNumber"></a>xmlSAX2GetLineNumber ()</h3>
-<pre class="programlisting">int	xmlSAX2GetLineNumber		(void * ctx)<br>
-</pre>
-<p>Provide the line number of the current parsing point.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetParameterEntity"></a>xmlSAX2GetParameterEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlSAX2GetParameterEntity	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get a parameter entity by name</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetPublicId"></a>xmlSAX2GetPublicId ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSAX2GetPublicId	(void * ctx)<br>
-</pre>
-<p>Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN"</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2GetSystemId"></a>xmlSAX2GetSystemId ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSAX2GetSystemId	(void * ctx)<br>
-</pre>
-<p>Provides the system ID, basically URL or filename e.g. http://www.sgmlsource.com/dtds/memo.dtd</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2HasExternalSubset"></a>xmlSAX2HasExternalSubset ()</h3>
-<pre class="programlisting">int	xmlSAX2HasExternalSubset	(void * ctx)<br>
-</pre>
-<p>Does this document has an external subset</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2HasInternalSubset"></a>xmlSAX2HasInternalSubset ()</h3>
-<pre class="programlisting">int	xmlSAX2HasInternalSubset	(void * ctx)<br>
-</pre>
-<p>Does this document has an internal subset</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2IgnorableWhitespace"></a>xmlSAX2IgnorableWhitespace ()</h3>
-<pre class="programlisting">void	xmlSAX2IgnorableWhitespace	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use <a href="libxml2-SAX2.html#xmlSAX2Characters">xmlSAX2Characters</a></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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2InitDefaultSAXHandler"></a>xmlSAX2InitDefaultSAXHandler ()</h3>
-<pre class="programlisting">void	xmlSAX2InitDefaultSAXHandler	(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr, <br>					 int warning)<br>
-</pre>
-<p>Initialize the default XML SAX2 handler</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hdlr</tt></i>:</span></td>
-<td>the SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warning</tt></i>:</span></td>
-<td>flag if non-zero sets the handler warning procedure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2InitHtmlDefaultSAXHandler"></a>xmlSAX2InitHtmlDefaultSAXHandler ()</h3>
-<pre class="programlisting">void	xmlSAX2InitHtmlDefaultSAXHandler	(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr)<br>
-</pre>
-<p>Initialize the default HTML SAX2 handler</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>hdlr</tt></i>:</span></td>
-<td>the SAX handler</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2InternalSubset"></a>xmlSAX2InternalSubset ()</h3>
-<pre class="programlisting">void	xmlSAX2InternalSubset		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on internal subset declaration.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2IsStandalone"></a>xmlSAX2IsStandalone ()</h3>
-<pre class="programlisting">int	xmlSAX2IsStandalone		(void * ctx)<br>
-</pre>
-<p>Is this document tagged standalone ?</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2NotationDecl"></a>xmlSAX2NotationDecl ()</h3>
-<pre class="programlisting">void	xmlSAX2NotationDecl		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>What to do when a notation declaration has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2ProcessingInstruction"></a>xmlSAX2ProcessingInstruction ()</h3>
-<pre class="programlisting">void	xmlSAX2ProcessingInstruction	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data)<br>
-</pre>
-<p>A processing instruction has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>the target name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the PI data's</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2Reference"></a>xmlSAX2Reference ()</h3>
-<pre class="programlisting">void	xmlSAX2Reference		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>called when an entity <a href="libxml2-SAX2.html#xmlSAX2Reference">xmlSAX2Reference</a> is detected.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2ResolveEntity"></a>xmlSAX2ResolveEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlSAX2ResolveEntity	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>This is only used to load DTDs. The preferred way to install custom resolvers is <a href="libxml2-parser.html#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a>.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a parser input.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2SetDocumentLocator"></a>xmlSAX2SetDocumentLocator ()</h3>
-<pre class="programlisting">void	xmlSAX2SetDocumentLocator	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc)<br>
-</pre>
-<p>Receive the document locator at startup, actually xmlDefaultSAXLocator Everything is available on the context, so this is useless in our case.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loc</tt></i>:</span></td>
-<td>A SAX Locator</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2StartDocument"></a>xmlSAX2StartDocument ()</h3>
-<pre class="programlisting">void	xmlSAX2StartDocument		(void * ctx)<br>
-</pre>
-<p>called when the document start being processed.</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2StartElement"></a>xmlSAX2StartElement ()</h3>
-<pre class="programlisting">void	xmlSAX2StartElement		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts)<br>
-</pre>
-<p>DEPRECATED: Don't call this function directly. Called when an opening tag has been processed. Used for HTML and SAX1.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>The element name, including namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>atts</tt></i>:</span></td>
-<td>An array of name/value attributes pairs, NULL terminated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2StartElementNs"></a>xmlSAX2StartElementNs ()</h3>
-<pre class="programlisting">void	xmlSAX2StartElementNs		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 int nb_namespaces, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 int nb_attributes, <br>					 int nb_defaulted, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** attributes)<br>
-</pre>
-<p>SAX2 callback when an element start has been detected by the parser. It provides the namespace information for the element, as well as the new namespace declarations on the element.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localname</tt></i>:</span></td>
-<td>the local name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the element namespace prefix if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the element namespace name if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_namespaces</tt></i>:</span></td>
-<td>number of namespace definitions on that node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
-<td>pointer to the array of prefix/URI pairs namespace definitions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_attributes</tt></i>:</span></td>
-<td>the number of attributes on that node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_defaulted</tt></i>:</span></td>
-<td>the number of defaulted attributes.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attributes</tt></i>:</span></td>
-<td>pointer to the array of (localname/prefix/URI/value/end) attribute values.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAX2UnparsedEntityDecl"></a>xmlSAX2UnparsedEntityDecl ()</h3>
-<pre class="programlisting">void	xmlSAX2UnparsedEntityDecl	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName)<br>
-</pre>
-<p>What to do when an unparsed entity declaration is parsed</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>notationName</tt></i>:</span></td>
-<td>the name of the notation</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXDefaultVersion"></a>xmlSAXDefaultVersion ()</h3>
-<pre class="programlisting">int	xmlSAXDefaultVersion		(int version)<br>
-</pre>
-<p>DEPRECATED: Use parser option <a href="libxml2-parser.html#XML_PARSE_SAX1">XML_PARSE_SAX1</a>. Has no effect.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>version</tt></i>:</span></td>
-<td>the version, must be 2</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>2 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXVersion"></a>xmlSAXVersion ()</h3>
-<pre class="programlisting">int	xmlSAXVersion			(<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * hdlr, <br>					 int version)<br>
-</pre>
-<p>Initialize the default XML SAX handler according to the version</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hdlr</tt></i>:</span></td>
-<td>the SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>version</tt></i>:</span></td>
-<td>the version, 1 or 2</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-c14n.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-c14n.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-c14n.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-c14n.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,253 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>c14n: Provide Canonical XML and Exclusive XML Canonicalization</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-SAX2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-catalog.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">c14n</span></h2>
-<p>c14n - Provide Canonical XML and Exclusive XML Canonicalization</p>
-<p>the c14n modules provides a  "Canonical XML" implementation</p>
-<p>Author(s): Aleksey Sanin &lt;aleksey@aleksey.com&gt; </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef enum <a href="#xmlC14NMode">xmlC14NMode</a>;
-int	<a href="#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr);
-int	<a href="#xmlC14NDocSave">xmlC14NDocSave</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 const char * filename, <br>					 int compression);
-int	<a href="#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf);
-int	<a href="#xmlC14NExecute">xmlC14NExecute</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a> is_visible_callback, <br>					 void * user_data, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf);
-typedef int <a href="#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a>	(void * user_data, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NMode">Enum </a>xmlC14NMode</h3>
-<pre class="programlisting">enum <a href="#xmlC14NMode">xmlC14NMode</a> {
-    <a name="XML_C14N_1_0">XML_C14N_1_0</a> = 0 /* Original C14N 1.0 spec */
-    <a name="XML_C14N_EXCLUSIVE_1_0">XML_C14N_EXCLUSIVE_1_0</a> = 1 /* Exclusive C14N 1.0 spec */
-    <a name="XML_C14N_1_1">XML_C14N_1_1</a> = 2 /*  C14N 1.1 spec */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NIsVisibleCallback"></a>Function type xmlC14NIsVisibleCallback</h3>
-<pre class="programlisting">int	xmlC14NIsVisibleCallback	(void * user_data, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br>
-</pre>
-<p>Signature for a C14N callback on visible nodes</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the node should be included</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NDocDumpMemory"></a>xmlC14NDocDumpMemory ()</h3>
-<pre class="programlisting">int	xmlC14NDocDumpMemory		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr)<br>
-</pre>
-<p>Dumps the canonized image of given XML document into memory. For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document for canonization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>the nodes set to be included in the canonized image or NULL if all document nodes should be included</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the c14n mode (see @xmlC14NMode)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inclusive_ns_prefixes</tt></i>:</span></td>
-<td>the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>with_comments</tt></i>:</span></td>
-<td>include comments in the result (!=0) or not (==0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc_txt_ptr</tt></i>:</span></td>
-<td>the memory pointer for allocated canonical XML text; the caller of this functions is responsible for calling xmlFree() to free allocated memory</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written on success or a negative value on fail</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NDocSave"></a>xmlC14NDocSave ()</h3>
-<pre class="programlisting">int	xmlC14NDocSave			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 const char * filename, <br>					 int compression)<br>
-</pre>
-<p>Dumps the canonized image of given XML document into the file. For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document for canonization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>the nodes set to be included in the canonized image or NULL if all document nodes should be included</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the c14n mode (see @xmlC14NMode)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inclusive_ns_prefixes</tt></i>:</span></td>
-<td>the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>with_comments</tt></i>:</span></td>
-<td>include comments in the result (!=0) or not (==0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename to store canonical XML image</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>the compression level (zlib required): -1 - libxml default, 0 - uncompressed, &gt;0 - compression level</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written success or a negative value on fail</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NDocSaveTo"></a>xmlC14NDocSaveTo ()</h3>
-<pre class="programlisting">int	xmlC14NDocSaveTo		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf)<br>
-</pre>
-<p>Dumps the canonized image of given XML document into the provided buffer. For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document for canonization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>the nodes set to be included in the canonized image or NULL if all document nodes should be included</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the c14n mode (see @xmlC14NMode)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inclusive_ns_prefixes</tt></i>:</span></td>
-<td>the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>with_comments</tt></i>:</span></td>
-<td>include comments in the result (!=0) or not (==0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>non-negative value on success or a negative value on fail</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlC14NExecute"></a>xmlC14NExecute ()</h3>
-<pre class="programlisting">int	xmlC14NExecute			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a> is_visible_callback, <br>					 void * user_data, <br>					 int mode, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** inclusive_ns_prefixes, <br>					 int with_comments, <br>					 <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf)<br>
-</pre>
-<p>Dumps the canonized image of given XML document into the provided buffer. For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document for canonization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>is_visible_callback</tt></i>:</span></td>
-<td>the function to use to determine is node visible or not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>the first parameter for @is_visible_callback function (in most cases, it is nodes set)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the c14n mode (see @xmlC14NMode)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inclusive_ns_prefixes</tt></i>:</span></td>
-<td>the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>with_comments</tt></i>:</span></td>
-<td>include comments in the result (!=0) or not (==0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>non-negative value on success or a negative value on fail</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-catalog.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-catalog.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-catalog.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-catalog.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,887 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>catalog: interfaces to the Catalog handling system</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-c14n.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-chvalid.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">catalog</span></h2>
-<p>catalog - interfaces to the Catalog handling system</p>
-<p>the catalog module implements the support for XML Catalogs and SGML catalogs </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XML_CATALOGS_NAMESPACE">XML_CATALOGS_NAMESPACE</a>;
-#define <a href="#XML_CATALOG_PI">XML_CATALOG_PI</a>;
-typedef struct _xmlCatalog <a href="#xmlCatalog">xmlCatalog</a>;
-typedef enum <a href="#xmlCatalogAllow">xmlCatalogAllow</a>;
-typedef enum <a href="#xmlCatalogPrefer">xmlCatalogPrefer</a>;
-typedef <a href="libxml2-catalog.html#xmlCatalog">xmlCatalog</a> * <a href="#xmlCatalogPtr">xmlCatalogPtr</a>;
-int	<a href="#xmlACatalogAdd">xmlACatalogAdd</a>			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * orig, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * replace);
-void	<a href="#xmlACatalogDump">xmlACatalogDump</a>			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 FILE * out);
-int	<a href="#xmlACatalogRemove">xmlACatalogRemove</a>		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlACatalogResolve">xmlACatalogResolve</a>	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlACatalogResolvePublic">xmlACatalogResolvePublic</a>	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlACatalogResolveSystem">xmlACatalogResolveSystem</a>	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlACatalogResolveURI">xmlACatalogResolveURI</a>	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI);
-int	<a href="#xmlCatalogAdd">xmlCatalogAdd</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * orig, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * replace);
-void *	<a href="#xmlCatalogAddLocal">xmlCatalogAddLocal</a>		(void * catalogs, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL);
-void	<a href="#xmlCatalogCleanup">xmlCatalogCleanup</a>		(void);
-int	<a href="#xmlCatalogConvert">xmlCatalogConvert</a>		(void);
-void	<a href="#xmlCatalogDump">xmlCatalogDump</a>			(FILE * out);
-void	<a href="#xmlCatalogFreeLocal">xmlCatalogFreeLocal</a>		(void * catalogs);
-<a href="libxml2-catalog.html#xmlCatalogAllow">xmlCatalogAllow</a>	<a href="#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a>	(void);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogGetPublic">xmlCatalogGetPublic</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogGetSystem">xmlCatalogGetSystem</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-int	<a href="#xmlCatalogIsEmpty">xmlCatalogIsEmpty</a>		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogLocalResolve">xmlCatalogLocalResolve</a>	(void * catalogs, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogLocalResolveURI">xmlCatalogLocalResolveURI</a>	(void * catalogs, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI);
-int	<a href="#xmlCatalogRemove">xmlCatalogRemove</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogResolve">xmlCatalogResolve</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogResolvePublic">xmlCatalogResolvePublic</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogResolveSystem">xmlCatalogResolveSystem</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCatalogResolveURI">xmlCatalogResolveURI</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI);
-int	<a href="#xmlCatalogSetDebug">xmlCatalogSetDebug</a>		(int level);
-<a href="libxml2-catalog.html#xmlCatalogPrefer">xmlCatalogPrefer</a>	<a href="#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a>	(<a href="libxml2-catalog.html#xmlCatalogPrefer">xmlCatalogPrefer</a> prefer);
-void	<a href="#xmlCatalogSetDefaults">xmlCatalogSetDefaults</a>		(<a href="libxml2-catalog.html#xmlCatalogAllow">xmlCatalogAllow</a> allow);
-int	<a href="#xmlConvertSGMLCatalog">xmlConvertSGMLCatalog</a>		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal);
-void	<a href="#xmlFreeCatalog">xmlFreeCatalog</a>			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal);
-void	<a href="#xmlInitializeCatalog">xmlInitializeCatalog</a>		(void);
-<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	<a href="#xmlLoadACatalog">xmlLoadACatalog</a>		(const char * filename);
-int	<a href="#xmlLoadCatalog">xmlLoadCatalog</a>			(const char * filename);
-void	<a href="#xmlLoadCatalogs">xmlLoadCatalogs</a>			(const char * pathss);
-<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	<a href="#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a>	(const char * filename);
-<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	<a href="#xmlNewCatalog">xmlNewCatalog</a>		(int sgml);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseCatalogFile">xmlParseCatalogFile</a>	(const char * filename);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_CATALOGS_NAMESPACE">Macro </a>XML_CATALOGS_NAMESPACE</h3>
-<pre class="programlisting">#define <a href="#XML_CATALOGS_NAMESPACE">XML_CATALOGS_NAMESPACE</a>;
-</pre>
-<p>The namespace for the XML Catalogs elements.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_CATALOG_PI">Macro </a>XML_CATALOG_PI</h3>
-<pre class="programlisting">#define <a href="#XML_CATALOG_PI">XML_CATALOG_PI</a>;
-</pre>
-<p>The specific XML Catalog Processing Instruction name.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalog">Structure </a>xmlCatalog</h3>
-<pre class="programlisting">struct _xmlCatalog {
-The content of this structure is not made public by the API.
-} xmlCatalog;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogAllow">Enum </a>xmlCatalogAllow</h3>
-<pre class="programlisting">enum <a href="#xmlCatalogAllow">xmlCatalogAllow</a> {
-    <a name="XML_CATA_ALLOW_NONE">XML_CATA_ALLOW_NONE</a> = 0
-    <a name="XML_CATA_ALLOW_GLOBAL">XML_CATA_ALLOW_GLOBAL</a> = 1
-    <a name="XML_CATA_ALLOW_DOCUMENT">XML_CATA_ALLOW_DOCUMENT</a> = 2
-    <a name="XML_CATA_ALLOW_ALL">XML_CATA_ALLOW_ALL</a> = 3
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogPrefer">Enum </a>xmlCatalogPrefer</h3>
-<pre class="programlisting">enum <a href="#xmlCatalogPrefer">xmlCatalogPrefer</a> {
-    <a name="XML_CATA_PREFER_NONE">XML_CATA_PREFER_NONE</a> = 0
-    <a name="XML_CATA_PREFER_PUBLIC">XML_CATA_PREFER_PUBLIC</a> = 1
-    <a name="XML_CATA_PREFER_SYSTEM">XML_CATA_PREFER_SYSTEM</a> = 2
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogPtr">Typedef </a>xmlCatalogPtr</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalog">xmlCatalog</a> * xmlCatalogPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogAdd"></a>xmlACatalogAdd ()</h3>
-<pre class="programlisting">int	xmlACatalogAdd			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * orig, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * replace)<br>
-</pre>
-<p>Add an entry in the catalog, it may overwrite existing but different entries.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the type of record to add to the catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>orig</tt></i>:</span></td>
-<td>the system, public or prefix to match</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>replace</tt></i>:</span></td>
-<td>the replacement value for the match</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogDump"></a>xmlACatalogDump ()</h3>
-<pre class="programlisting">void	xmlACatalogDump			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 FILE * out)<br>
-</pre>
-<p>Dump the given catalog to the given file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the file.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogRemove"></a>xmlACatalogRemove ()</h3>
-<pre class="programlisting">int	xmlACatalogRemove		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Remove an entry from the catalog</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value to remove</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of entries removed if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogResolve"></a>xmlACatalogResolve ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlACatalogResolve	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Do a complete resolution lookup of an External Identifier</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogResolvePublic"></a>xmlACatalogResolvePublic ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlACatalogResolvePublic	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID)<br>
-</pre>
-<p>Try to lookup the catalog local reference associated to a public ID in that catalog</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local resource if found or NULL otherwise, the value returned must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogResolveSystem"></a>xmlACatalogResolveSystem ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlACatalogResolveSystem	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Try to lookup the catalog resource for a system ID</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resource if found or NULL otherwise, the value returned must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlACatalogResolveURI"></a>xmlACatalogResolveURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlACatalogResolveURI	(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI)<br>
-</pre>
-<p>Do a complete resolution lookup of an URI</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogAdd"></a>xmlCatalogAdd ()</h3>
-<pre class="programlisting">int	xmlCatalogAdd			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * orig, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * replace)<br>
-</pre>
-<p>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();</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 record to add to the catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>orig</tt></i>:</span></td>
-<td>the system, public or prefix to match</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>replace</tt></i>:</span></td>
-<td>the replacement value for the match</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogAddLocal"></a>xmlCatalogAddLocal ()</h3>
-<pre class="programlisting">void *	xmlCatalogAddLocal		(void * catalogs, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL)<br>
-</pre>
-<p>Add the new entry to the catalog list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catalogs</tt></i>:</span></td>
-<td>a document's list of catalogs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the URL to a new local catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the updated list</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogCleanup"></a>xmlCatalogCleanup ()</h3>
-<pre class="programlisting">void	xmlCatalogCleanup		(void)<br>
-</pre>
-<p>Free up all the memory associated with catalogs</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogConvert"></a>xmlCatalogConvert ()</h3>
-<pre class="programlisting">int	xmlCatalogConvert		(void)<br>
-</pre>
-<p>Convert all the SGML catalog entries as XML ones</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of entries converted if successful, -1 otherwise</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogDump"></a>xmlCatalogDump ()</h3>
-<pre class="programlisting">void	xmlCatalogDump			(FILE * out)<br>
-</pre>
-<p>Dump all the global catalog content to the given file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the file.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogFreeLocal"></a>xmlCatalogFreeLocal ()</h3>
-<pre class="programlisting">void	xmlCatalogFreeLocal		(void * catalogs)<br>
-</pre>
-<p>Free up the memory associated to the catalog list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>catalogs</tt></i>:</span></td>
-<td>a document's list of catalogs</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogGetDefaults"></a>xmlCatalogGetDefaults ()</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalogAllow">xmlCatalogAllow</a>	xmlCatalogGetDefaults	(void)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#XML_PARSE_NO_SYS_CATALOG">XML_PARSE_NO_SYS_CATALOG</a> and <a href="libxml2-parser.html#XML_PARSE_CATALOG_PI">XML_PARSE_CATALOG_PI</a>. Used to get the user preference w.r.t. to what catalogs should be accepted</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current <a href="libxml2-catalog.html#xmlCatalogAllow">xmlCatalogAllow</a> value</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogGetPublic"></a>xmlCatalogGetPublic ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogGetPublic	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID)<br>
-</pre>
-<p>Try to lookup the catalog reference associated to a public ID DEPRECATED, use xmlCatalogResolvePublic()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resource if found or NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogGetSystem"></a>xmlCatalogGetSystem ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogGetSystem	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Try to lookup the catalog reference associated to a system ID DEPRECATED, use xmlCatalogResolveSystem()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resource if found or NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogIsEmpty"></a>xmlCatalogIsEmpty ()</h3>
-<pre class="programlisting">int	xmlCatalogIsEmpty		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal)<br>
-</pre>
-<p>Check is a catalog is empty</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>should this create an SGML catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the catalog is empty, 0 if not, amd -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogLocalResolve"></a>xmlCatalogLocalResolve ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogLocalResolve	(void * catalogs, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Do a complete resolution lookup of an External Identifier using a document's private catalog list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catalogs</tt></i>:</span></td>
-<td>a document's list of catalogs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogLocalResolveURI"></a>xmlCatalogLocalResolveURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogLocalResolveURI	(void * catalogs, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI)<br>
-</pre>
-<p>Do a complete resolution lookup of an URI using a document's private catalog list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catalogs</tt></i>:</span></td>
-<td>a document's list of catalogs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogRemove"></a>xmlCatalogRemove ()</h3>
-<pre class="programlisting">int	xmlCatalogRemove		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Remove an entry from the catalog</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value to remove</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of entries removed if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogResolve"></a>xmlCatalogResolve ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogResolve	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Do a complete resolution lookup of an External Identifier</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogResolvePublic"></a>xmlCatalogResolvePublic ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogResolvePublic	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubID)<br>
-</pre>
-<p>Try to lookup the catalog reference associated to a public ID</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pubID</tt></i>:</span></td>
-<td>the public ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resource if found or NULL otherwise, the value returned must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogResolveSystem"></a>xmlCatalogResolveSystem ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogResolveSystem	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysID)<br>
-</pre>
-<p>Try to lookup the catalog resource for a system ID</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sysID</tt></i>:</span></td>
-<td>the system ID string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resource if found or NULL otherwise, the value returned must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogResolveURI"></a>xmlCatalogResolveURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCatalogResolveURI	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI)<br>
-</pre>
-<p>Do a complete resolution lookup of an URI</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the URI of the resource or NULL if not found, it must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogSetDebug"></a>xmlCatalogSetDebug ()</h3>
-<pre class="programlisting">int	xmlCatalogSetDebug		(int level)<br>
-</pre>
-<p>Used to set the debug level for catalog operation, 0 disable debugging, 1 enable it</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>level</tt></i>:</span></td>
-<td>the debug level of catalogs required</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the previous value of the catalog debugging level</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogSetDefaultPrefer"></a>xmlCatalogSetDefaultPrefer ()</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalogPrefer">xmlCatalogPrefer</a>	xmlCatalogSetDefaultPrefer	(<a href="libxml2-catalog.html#xmlCatalogPrefer">xmlCatalogPrefer</a> prefer)<br>
-</pre>
-<p>DEPRECATED: This setting is global and not thread-safe. 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 <a href="libxml2-catalog.html#XML_CATA_PREFER_PUBLIC">XML_CATA_PREFER_PUBLIC</a> or <a href="libxml2-catalog.html#XML_CATA_PREFER_SYSTEM">XML_CATA_PREFER_SYSTEM</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>prefer</tt></i>:</span></td>
-<td>the default preference for delegation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the previous value of the default preference for delegation</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCatalogSetDefaults"></a>xmlCatalogSetDefaults ()</h3>
-<pre class="programlisting">void	xmlCatalogSetDefaults		(<a href="libxml2-catalog.html#xmlCatalogAllow">xmlCatalogAllow</a> allow)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#XML_PARSE_NO_SYS_CATALOG">XML_PARSE_NO_SYS_CATALOG</a> and <a href="libxml2-parser.html#XML_PARSE_CATALOG_PI">XML_PARSE_CATALOG_PI</a>. Used to set the user preference w.r.t. to what catalogs should be accepted</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>allow</tt></i>:</span></td>
-<td>what catalogs should be accepted</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlConvertSGMLCatalog"></a>xmlConvertSGMLCatalog ()</h3>
-<pre class="programlisting">int	xmlConvertSGMLCatalog		(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal)<br>
-</pre>
-<p>Convert all the SGML catalog entries as XML ones</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>the catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of entries converted if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeCatalog"></a>xmlFreeCatalog ()</h3>
-<pre class="programlisting">void	xmlFreeCatalog			(<a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> catal)<br>
-</pre>
-<p>Free the memory allocated to a Catalog</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>catal</tt></i>:</span></td>
-<td>a Catalog</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitializeCatalog"></a>xmlInitializeCatalog ()</h3>
-<pre class="programlisting">void	xmlInitializeCatalog		(void)<br>
-</pre>
-<p>Load the default system catalog.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLoadACatalog"></a>xmlLoadACatalog ()</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	xmlLoadACatalog		(const char * filename)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file path</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the catalog parsed or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLoadCatalog"></a>xmlLoadCatalog ()</h3>
-<pre class="programlisting">int	xmlLoadCatalog			(const char * filename)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file path</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLoadCatalogs"></a>xmlLoadCatalogs ()</h3>
-<pre class="programlisting">void	xmlLoadCatalogs			(const char * pathss)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>pathss</tt></i>:</span></td>
-<td>a list of directories separated by a colon or a space.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLoadSGMLSuperCatalog"></a>xmlLoadSGMLSuperCatalog ()</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	xmlLoadSGMLSuperCatalog	(const char * filename)<br>
-</pre>
-<p>Load an SGML super catalog. It won't expand CATALOG or DELEGATE references. This is only needed for manipulating SGML Super Catalogs like adding and removing CATALOG or DELEGATE entries.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file path</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the catalog parsed or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewCatalog"></a>xmlNewCatalog ()</h3>
-<pre class="programlisting"><a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a>	xmlNewCatalog		(int sgml)<br>
-</pre>
-<p>create a new Catalog.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sgml</tt></i>:</span></td>
-<td>should this create an SGML catalog</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-catalog.html#xmlCatalogPtr">xmlCatalogPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCatalogFile"></a>xmlParseCatalogFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseCatalogFile	(const char * filename)<br>
-</pre>
-<p>parse an XML file and build a tree. It's like xmlParseFile() except it bypass all catalog lookups.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-chvalid.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-chvalid.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-chvalid.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-chvalid.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,581 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>chvalid: Unicode character range checking</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-catalog.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-debugXML.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">chvalid</span></h2>
-<p>chvalid - Unicode character range checking</p>
-<p>this module exports interfaces for the character range validation APIs  This file is automatically generated from the cvs source definition files using the genChRanges.py Python script </p>
-<p>Author(s): William Brack &lt;wbrack@mmm.com.hk&gt; </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#xmlIsBaseCharQ">xmlIsBaseCharQ</a>(c);
-#define <a href="#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a>(c);
-#define <a href="#xmlIsBlankQ">xmlIsBlankQ</a>(c);
-#define <a href="#xmlIsBlank_ch">xmlIsBlank_ch</a>(c);
-#define <a href="#xmlIsCharQ">xmlIsCharQ</a>(c);
-#define <a href="#xmlIsChar_ch">xmlIsChar_ch</a>(c);
-#define <a href="#xmlIsCombiningQ">xmlIsCombiningQ</a>(c);
-#define <a href="#xmlIsDigitQ">xmlIsDigitQ</a>(c);
-#define <a href="#xmlIsDigit_ch">xmlIsDigit_ch</a>(c);
-#define <a href="#xmlIsExtenderQ">xmlIsExtenderQ</a>(c);
-#define <a href="#xmlIsExtender_ch">xmlIsExtender_ch</a>(c);
-#define <a href="#xmlIsIdeographicQ">xmlIsIdeographicQ</a>(c);
-#define <a href="#xmlIsPubidCharQ">xmlIsPubidCharQ</a>(c);
-#define <a href="#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a>(c);
-typedef struct _xmlChLRange <a href="#xmlChLRange">xmlChLRange</a>;
-typedef <a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> * <a href="#xmlChLRangePtr">xmlChLRangePtr</a>;
-typedef struct _xmlChRangeGroup <a href="#xmlChRangeGroup">xmlChRangeGroup</a>;
-typedef <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * <a href="#xmlChRangeGroupPtr">xmlChRangeGroupPtr</a>;
-typedef struct _xmlChSRange <a href="#xmlChSRange">xmlChSRange</a>;
-typedef <a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> * <a href="#xmlChSRangePtr">xmlChSRangePtr</a>;
-int	<a href="#xmlCharInRange">xmlCharInRange</a>			(unsigned int val, <br>					 const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * rptr);
-int	<a href="#xmlIsBaseChar">xmlIsBaseChar</a>			(unsigned int ch);
-int	<a href="#xmlIsBlank">xmlIsBlank</a>			(unsigned int ch);
-int	<a href="#xmlIsChar">xmlIsChar</a>			(unsigned int ch);
-int	<a href="#xmlIsCombining">xmlIsCombining</a>			(unsigned int ch);
-int	<a href="#xmlIsDigit">xmlIsDigit</a>			(unsigned int ch);
-int	<a href="#xmlIsExtender">xmlIsExtender</a>			(unsigned int ch);
-int	<a href="#xmlIsIdeographic">xmlIsIdeographic</a>		(unsigned int ch);
-int	<a href="#xmlIsPubidChar">xmlIsPubidChar</a>			(unsigned int ch);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBaseCharQ">Macro </a>xmlIsBaseCharQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsBaseCharQ">xmlIsBaseCharQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBaseChar_ch">Macro </a>xmlIsBaseChar_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBlankQ">Macro </a>xmlIsBlankQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsBlankQ">xmlIsBlankQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBlank_ch">Macro </a>xmlIsBlank_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsBlank_ch">xmlIsBlank_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsCharQ">Macro </a>xmlIsCharQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsCharQ">xmlIsCharQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsChar_ch">Macro </a>xmlIsChar_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsChar_ch">xmlIsChar_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsCombiningQ">Macro </a>xmlIsCombiningQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsCombiningQ">xmlIsCombiningQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsDigitQ">Macro </a>xmlIsDigitQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsDigitQ">xmlIsDigitQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsDigit_ch">Macro </a>xmlIsDigit_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsDigit_ch">xmlIsDigit_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsExtenderQ">Macro </a>xmlIsExtenderQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsExtenderQ">xmlIsExtenderQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsExtender_ch">Macro </a>xmlIsExtender_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsExtender_ch">xmlIsExtender_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsIdeographicQ">Macro </a>xmlIsIdeographicQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsIdeographicQ">xmlIsIdeographicQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsPubidCharQ">Macro </a>xmlIsPubidCharQ</h3>
-<pre class="programlisting">#define <a href="#xmlIsPubidCharQ">xmlIsPubidCharQ</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsPubidChar_ch">Macro </a>xmlIsPubidChar_ch</h3>
-<pre class="programlisting">#define <a href="#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a>(c);
-</pre>
-<p>Automatically generated by genChRanges.py</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>char to validate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChLRange">Structure </a>xmlChLRange</h3>
-<pre class="programlisting">struct _xmlChLRange {
-    unsigned int	low
-    unsigned int	high
-} xmlChLRange;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChLRangePtr">Typedef </a>xmlChLRangePtr</h3>
-<pre class="programlisting"><a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> * xmlChLRangePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChRangeGroup">Structure </a>xmlChRangeGroup</h3>
-<pre class="programlisting">struct _xmlChRangeGroup {
-    int	nbShortRange
-    int	nbLongRange
-    const <a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> *	shortRange
-    const <a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> *	longRange
-} xmlChRangeGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChRangeGroupPtr">Typedef </a>xmlChRangeGroupPtr</h3>
-<pre class="programlisting"><a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * xmlChRangeGroupPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChSRange">Structure </a>xmlChSRange</h3>
-<pre class="programlisting">struct _xmlChSRange {
-    unsigned short	low
-    unsigned short	high
-} xmlChSRange;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChSRangePtr">Typedef </a>xmlChSRangePtr</h3>
-<pre class="programlisting"><a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> * xmlChSRangePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBaseCharGroup">Variable </a>xmlIsBaseCharGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsBaseCharGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsCharGroup">Variable </a>xmlIsCharGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsCharGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsCombiningGroup">Variable </a>xmlIsCombiningGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsCombiningGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsDigitGroup">Variable </a>xmlIsDigitGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsDigitGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsExtenderGroup">Variable </a>xmlIsExtenderGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsExtenderGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsIdeographicGroup">Variable </a>xmlIsIdeographicGroup</h3>
-<pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsIdeographicGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsPubidChar_tab">Variable </a>xmlIsPubidChar_tab</h3>
-<pre class="programlisting">const unsigned charxmlIsPubidChar_tab[256] xmlIsPubidChar_tab;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharInRange"></a>xmlCharInRange ()</h3>
-<pre class="programlisting">int	xmlCharInRange			(unsigned int val, <br>					 const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * rptr)<br>
-</pre>
-<p>Does a binary search of the range table to determine if char is valid</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>character to be validated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>rptr</tt></i>:</span></td>
-<td>pointer to range to be used to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if character valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBaseChar"></a>xmlIsBaseChar ()</h3>
-<pre class="programlisting">int	xmlIsBaseChar			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsBaseCharQ">xmlIsBaseCharQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBlank"></a>xmlIsBlank ()</h3>
-<pre class="programlisting">int	xmlIsBlank			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsBlank_ch">xmlIsBlank_ch</a> or <a href="libxml2-chvalid.html#xmlIsBlankQ">xmlIsBlankQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsChar"></a>xmlIsChar ()</h3>
-<pre class="programlisting">int	xmlIsChar			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsChar_ch">xmlIsChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsCharQ">xmlIsCharQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsCombining"></a>xmlIsCombining ()</h3>
-<pre class="programlisting">int	xmlIsCombining			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsCombiningQ">xmlIsCombiningQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsDigit"></a>xmlIsDigit ()</h3>
-<pre class="programlisting">int	xmlIsDigit			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsDigit_ch">xmlIsDigit_ch</a> or <a href="libxml2-chvalid.html#xmlIsDigitQ">xmlIsDigitQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsExtender"></a>xmlIsExtender ()</h3>
-<pre class="programlisting">int	xmlIsExtender			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsExtender_ch">xmlIsExtender_ch</a> or <a href="libxml2-chvalid.html#xmlIsExtenderQ">xmlIsExtenderQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsIdeographic"></a>xmlIsIdeographic ()</h3>
-<pre class="programlisting">int	xmlIsIdeographic		(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsIdeographicQ">xmlIsIdeographicQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsPubidChar"></a>xmlIsPubidChar ()</h3>
-<pre class="programlisting">int	xmlIsPubidChar			(unsigned int ch)<br>
-</pre>
-<p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsPubidCharQ">xmlIsPubidCharQ</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>character to validate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true if argument valid, false otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-debugXML.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-debugXML.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-debugXML.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-debugXML.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,300 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>debugXML: Tree debugging APIs</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-chvalid.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-dict.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">debugXML</span></h2>
-<p>debugXML - Tree debugging APIs</p>
-<p>Interfaces to a set of routines used for debugging the tree produced by the XML parser. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">int	<a href="#xmlDebugCheckDocument">xmlDebugCheckDocument</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-void	<a href="#xmlDebugDumpAttr">xmlDebugDumpAttr</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 int depth);
-void	<a href="#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 int depth);
-void	<a href="#xmlDebugDumpDTD">xmlDebugDumpDTD</a>			(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd);
-void	<a href="#xmlDebugDumpDocument">xmlDebugDumpDocument</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-void	<a href="#xmlDebugDumpDocumentHead">xmlDebugDumpDocumentHead</a>	(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-void	<a href="#xmlDebugDumpEntities">xmlDebugDumpEntities</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-void	<a href="#xmlDebugDumpNode">xmlDebugDumpNode</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth);
-void	<a href="#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth);
-void	<a href="#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a>		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth);
-void	<a href="#xmlDebugDumpString">xmlDebugDumpString</a>		(FILE * output, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugCheckDocument"></a>xmlDebugCheckDocument ()</h3>
-<pre class="programlisting">int	xmlDebugCheckDocument		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Check the document for potential content problems, and output the errors to @output</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of errors found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpAttr"></a>xmlDebugDumpAttr ()</h3>
-<pre class="programlisting">void	xmlDebugDumpAttr		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 int depth)<br>
-</pre>
-<p>Dumps debug information for the attribute</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpAttrList"></a>xmlDebugDumpAttrList ()</h3>
-<pre class="programlisting">void	xmlDebugDumpAttrList		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 int depth)<br>
-</pre>
-<p>Dumps debug information for the attribute list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpDTD"></a>xmlDebugDumpDTD ()</h3>
-<pre class="programlisting">void	xmlDebugDumpDTD			(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br>
-</pre>
-<p>Dumps debug information for the DTD</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>the DTD</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpDocument"></a>xmlDebugDumpDocument ()</h3>
-<pre class="programlisting">void	xmlDebugDumpDocument		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Dumps debug information for the document, it's recursive</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpDocumentHead"></a>xmlDebugDumpDocumentHead ()</h3>
-<pre class="programlisting">void	xmlDebugDumpDocumentHead	(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Dumps debug information concerning the document, not recursive</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpEntities"></a>xmlDebugDumpEntities ()</h3>
-<pre class="programlisting">void	xmlDebugDumpEntities		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Dumps debug information for all the entities in use by the document</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpNode"></a>xmlDebugDumpNode ()</h3>
-<pre class="programlisting">void	xmlDebugDumpNode		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth)<br>
-</pre>
-<p>Dumps debug information for the element node, it is recursive</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpNodeList"></a>xmlDebugDumpNodeList ()</h3>
-<pre class="programlisting">void	xmlDebugDumpNodeList		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth)<br>
-</pre>
-<p>Dumps debug information for the list of element node, it is recursive</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpOneNode"></a>xmlDebugDumpOneNode ()</h3>
-<pre class="programlisting">void	xmlDebugDumpOneNode		(FILE * output, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int depth)<br>
-</pre>
-<p>Dumps debug information for the element node, it is not recursive</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDebugDumpString"></a>xmlDebugDumpString ()</h3>
-<pre class="programlisting">void	xmlDebugDumpString		(FILE * output, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Dumps information about the string, shorten it if necessary</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-dict.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-dict.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-dict.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-dict.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,341 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>dict: string dictionary</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-debugXML.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-encoding.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">dict</span></h2>
-<p>dict - string dictionary</p>
-<p>dictionary of reusable strings, just used to avoid allocation and freeing operations. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlDict <a href="#xmlDict">xmlDict</a>;
-typedef <a href="libxml2-dict.html#xmlDict">xmlDict</a> * <a href="#xmlDictPtr">xmlDictPtr</a>;
-void	<a href="#xmlDictCleanup">xmlDictCleanup</a>			(void);
-<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlDictCreate">xmlDictCreate</a>		(void);
-<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlDictCreateSub">xmlDictCreateSub</a>	(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> sub);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlDictExists">xmlDictExists</a>		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int len);
-void	<a href="#xmlDictFree">xmlDictFree</a>			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-size_t	<a href="#xmlDictGetUsage">xmlDictGetUsage</a>			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlDictLookup">xmlDictLookup</a>		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int len);
-int	<a href="#xmlDictOwns">xmlDictOwns</a>			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlDictQLookup">xmlDictQLookup</a>		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlDictReference">xmlDictReference</a>		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-size_t	<a href="#xmlDictSetLimit">xmlDictSetLimit</a>			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 size_t limit);
-int	<a href="#xmlDictSize">xmlDictSize</a>			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-int	<a href="#xmlInitializeDict">xmlInitializeDict</a>		(void);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDict">Structure </a>xmlDict</h3>
-<pre class="programlisting">struct _xmlDict {
-The content of this structure is not made public by the API.
-} xmlDict;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictPtr">Typedef </a>xmlDictPtr</h3>
-<pre class="programlisting"><a href="libxml2-dict.html#xmlDict">xmlDict</a> * xmlDictPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictCleanup"></a>xmlDictCleanup ()</h3>
-<pre class="programlisting">void	xmlDictCleanup			(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictCreate"></a>xmlDictCreate ()</h3>
-<pre class="programlisting"><a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreate		(void)<br>
-</pre>
-<p>Create a new dictionary</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created dictionary, or NULL if an error occurred.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictCreateSub"></a>xmlDictCreateSub ()</h3>
-<pre class="programlisting"><a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreateSub	(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> sub)<br>
-</pre>
-<p>Create a new dictionary, inheriting strings from the read-only dictionary @sub. On lookup, strings are first searched in the new dictionary, then in @sub, and if not found are created in the new dictionary.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sub</tt></i>:</span></td>
-<td>an existing dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created dictionary, or NULL if an error occurred.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictExists"></a>xmlDictExists ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictExists		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int len)<br>
-</pre>
-<p>Check if a string exists in the dictionary.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the userdata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the name, if -1 it is recomputed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal copy of the name or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictFree"></a>xmlDictFree ()</h3>
-<pre class="programlisting">void	xmlDictFree			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictGetUsage"></a>xmlDictGetUsage ()</h3>
-<pre class="programlisting">size_t	xmlDictGetUsage			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Get how much memory is used by a dictionary for strings Added in 2.9.0</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the amount of strings allocated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictLookup"></a>xmlDictLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictLookup		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int len)<br>
-</pre>
-<p>Lookup a string and add it to the dictionary if it wasn't found.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>length of the key, if -1 it is recomputed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the interned copy of the string or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictOwns"></a>xmlDictOwns ()</h3>
-<pre class="programlisting">int	xmlDictOwns			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>check if a string is owned by the dictionary</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false and -1 in case of error -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictQLookup"></a>xmlDictQLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictQLookup		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Lookup the QName @prefix:@name and add it to the dictionary if it wasn't found.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the interned copy of the string or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictReference"></a>xmlDictReference ()</h3>
-<pre class="programlisting">int	xmlDictReference		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Increment the reference counter of a dictionary</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictSetLimit"></a>xmlDictSetLimit ()</h3>
-<pre class="programlisting">size_t	xmlDictSetLimit			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br>					 size_t limit)<br>
-</pre>
-<p>Set a size limit for the dictionary Added in 2.9.0</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>limit</tt></i>:</span></td>
-<td>the limit in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the previous limit of the dictionary or 0</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDictSize"></a>xmlDictSize ()</h3>
-<pre class="programlisting">int	xmlDictSize			(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Query the number of elements installed in the hash @dict.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>the dictionary</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of elements in the dictionary or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitializeDict"></a>xmlInitializeDict ()</h3>
-<pre class="programlisting">int	xmlInitializeDict		(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-encoding.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-encoding.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-encoding.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-encoding.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,882 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>encoding: interface for the encoding conversion functions</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-dict.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-entities.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">encoding</span></h2>
-<p>encoding - interface for the encoding conversion functions</p>
-<p>interface for the encoding conversion functions needed for XML basic encoding and iconv() support.  Related specs are rfc2044        (UTF-8 and UTF-16) F. Yergeau Alis Technologies [ISO-10646]    UTF-8 and UTF-16 in Annexes [ISO-8859-1]   ISO Latin-1 characters codes. [UNICODE]      The Unicode Consortium, "The Unicode Standard -- Worldwide Character Encoding -- Version 1.0", Addison- Wesley, Volume 1, 1991, Volume 2, 1992.  UTF-8 is described in Unicode Technical Report #4. [US-ASCII]     Coded Character Set--7-bit American Standard Code for Information Interchange, ANSI X3.4-1986. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#UTF8Toisolat1">UTF8Toisolat1</a>;
-#define <a href="#isolat1ToUTF8">isolat1ToUTF8</a>;
-typedef enum <a href="#xmlCharEncError">xmlCharEncError</a>;
-typedef enum <a href="#xmlCharEncFlags">xmlCharEncFlags</a>;
-typedef enum <a href="#xmlCharEncoding">xmlCharEncoding</a>;
-typedef struct _xmlCharEncodingHandler <a href="#xmlCharEncodingHandler">xmlCharEncodingHandler</a>;
-typedef <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * <a href="#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>;
-int	<a href="#xmlAddEncodingAlias">xmlAddEncodingAlias</a>		(const char * name, <br>					 const char * alias);
-int	<a href="#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a>		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler);
-typedef void <a href="#xmlCharEncConvCtxtDtor">xmlCharEncConvCtxtDtor</a>		(void * vctxt);
-typedef <a href="libxml2-encoding.html#xmlCharEncError">xmlCharEncError</a> <a href="#xmlCharEncConvFunc">xmlCharEncConvFunc</a>	(void * vctxt, <br>					 unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen, <br>					 int flush);
-typedef <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> <a href="#xmlCharEncConvImpl">xmlCharEncConvImpl</a>	(void * vctxt, <br>					 const char * name, <br>					 <a href="libxml2-encoding.html#xmlCharEncFlags">xmlCharEncFlags</a> flags, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out);
-int	<a href="#xmlCharEncFirstLine">xmlCharEncFirstLine</a>		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
-int	<a href="#xmlCharEncInFunc">xmlCharEncInFunc</a>		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlCharEncNewCustomHandler">xmlCharEncNewCustomHandler</a>	(const char * name, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvFunc">xmlCharEncConvFunc</a> input, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvFunc">xmlCharEncConvFunc</a> output, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvCtxtDtor">xmlCharEncConvCtxtDtor</a> ctxtDtor, <br>						 void * inputCtxt, <br>						 void * outputCtxt, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out);
-int	<a href="#xmlCharEncOutFunc">xmlCharEncOutFunc</a>		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in);
-typedef int <a href="#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a>	(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen);
-typedef int <a href="#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a>	(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen);
-void	<a href="#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a>	(void);
-void	<a href="#xmlCleanupEncodingAliases">xmlCleanupEncodingAliases</a>	(void);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlCreateCharEncodingHandler">xmlCreateCharEncodingHandler</a>	(const char * name, <br>						 <a href="libxml2-encoding.html#xmlCharEncFlags">xmlCharEncFlags</a> flags, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvImpl">xmlCharEncConvImpl</a> impl, <br>						 void * implCtxt, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out);
-int	<a href="#xmlDelEncodingAlias">xmlDelEncodingAlias</a>		(const char * alias);
-<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a>	<a href="#xmlDetectCharEncoding">xmlDetectCharEncoding</a>	(const unsigned char * in, <br>					 int len);
-<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	<a href="#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a>	(const char * name);
-<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	<a href="#xmlGetCharEncodingHandler">xmlGetCharEncodingHandler</a>	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-const char *	<a href="#xmlGetCharEncodingName">xmlGetCharEncodingName</a>	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-const char *	<a href="#xmlGetEncodingAlias">xmlGetEncodingAlias</a>	(const char * alias);
-void	<a href="#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a>	(void);
-int	<a href="#xmlIsolat1ToUTF8">xmlIsolat1ToUTF8</a>		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlLookupCharEncodingHandler">xmlLookupCharEncodingHandler</a>	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out);
-<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	<a href="#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a>	(const char * name, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a> input, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> output);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlOpenCharEncodingHandler">xmlOpenCharEncodingHandler</a>	(const char * name, <br>						 int output, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out);
-<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a>	<a href="#xmlParseCharEncoding">xmlParseCharEncoding</a>	(const char * name);
-void	<a href="#xmlRegisterCharEncodingHandler">xmlRegisterCharEncodingHandler</a>	(<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);
-int	<a href="#xmlUTF8ToIsolat1">xmlUTF8ToIsolat1</a>		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="UTF8Toisolat1">Macro </a>UTF8Toisolat1</h3>
-<pre class="programlisting">#define <a href="#UTF8Toisolat1">UTF8Toisolat1</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="isolat1ToUTF8">Macro </a>isolat1ToUTF8</h3>
-<pre class="programlisting">#define <a href="#isolat1ToUTF8">isolat1ToUTF8</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncError">Enum </a>xmlCharEncError</h3>
-<pre class="programlisting">enum <a href="#xmlCharEncError">xmlCharEncError</a> {
-    <a name="XML_ENC_ERR_MEMORY">XML_ENC_ERR_MEMORY</a> = -4
-    <a name="XML_ENC_ERR_SPACE">XML_ENC_ERR_SPACE</a> = -3
-    <a name="XML_ENC_ERR_INPUT">XML_ENC_ERR_INPUT</a> = -2
-    <a name="XML_ENC_ERR_INTERNAL">XML_ENC_ERR_INTERNAL</a> = -1
-    <a name="XML_ENC_ERR_SUCCESS">XML_ENC_ERR_SUCCESS</a> = 0
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncFlags">Enum </a>xmlCharEncFlags</h3>
-<pre class="programlisting">enum <a href="#xmlCharEncFlags">xmlCharEncFlags</a> {
-    <a name="XML_ENC_INPUT">XML_ENC_INPUT</a> = 1
-    <a name="XML_ENC_OUTPUT">XML_ENC_OUTPUT</a> = 2
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncoding">Enum </a>xmlCharEncoding</h3>
-<pre class="programlisting">enum <a href="#xmlCharEncoding">xmlCharEncoding</a> {
-    <a name="XML_CHAR_ENCODING_ERROR">XML_CHAR_ENCODING_ERROR</a> = -1 /* No char encoding detected */
-    <a name="XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a> = 0 /* No char encoding detected */
-    <a name="XML_CHAR_ENCODING_UTF8">XML_CHAR_ENCODING_UTF8</a> = 1 /* UTF-8 */
-    <a name="XML_CHAR_ENCODING_UTF16LE">XML_CHAR_ENCODING_UTF16LE</a> = 2 /* UTF-16 little endian */
-    <a name="XML_CHAR_ENCODING_UTF16BE">XML_CHAR_ENCODING_UTF16BE</a> = 3 /* UTF-16 big endian */
-    <a name="XML_CHAR_ENCODING_UCS4LE">XML_CHAR_ENCODING_UCS4LE</a> = 4 /* UCS-4 little endian */
-    <a name="XML_CHAR_ENCODING_UCS4BE">XML_CHAR_ENCODING_UCS4BE</a> = 5 /* UCS-4 big endian */
-    <a name="XML_CHAR_ENCODING_EBCDIC">XML_CHAR_ENCODING_EBCDIC</a> = 6 /* EBCDIC uh! */
-    <a name="XML_CHAR_ENCODING_UCS4_2143">XML_CHAR_ENCODING_UCS4_2143</a> = 7 /* UCS-4 unusual ordering */
-    <a name="XML_CHAR_ENCODING_UCS4_3412">XML_CHAR_ENCODING_UCS4_3412</a> = 8 /* UCS-4 unusual ordering */
-    <a name="XML_CHAR_ENCODING_UCS2">XML_CHAR_ENCODING_UCS2</a> = 9 /* UCS-2 */
-    <a name="XML_CHAR_ENCODING_8859_1">XML_CHAR_ENCODING_8859_1</a> = 10 /* ISO-8859-1 ISO Latin 1 */
-    <a name="XML_CHAR_ENCODING_8859_2">XML_CHAR_ENCODING_8859_2</a> = 11 /* ISO-8859-2 ISO Latin 2 */
-    <a name="XML_CHAR_ENCODING_8859_3">XML_CHAR_ENCODING_8859_3</a> = 12 /* ISO-8859-3 */
-    <a name="XML_CHAR_ENCODING_8859_4">XML_CHAR_ENCODING_8859_4</a> = 13 /* ISO-8859-4 */
-    <a name="XML_CHAR_ENCODING_8859_5">XML_CHAR_ENCODING_8859_5</a> = 14 /* ISO-8859-5 */
-    <a name="XML_CHAR_ENCODING_8859_6">XML_CHAR_ENCODING_8859_6</a> = 15 /* ISO-8859-6 */
-    <a name="XML_CHAR_ENCODING_8859_7">XML_CHAR_ENCODING_8859_7</a> = 16 /* ISO-8859-7 */
-    <a name="XML_CHAR_ENCODING_8859_8">XML_CHAR_ENCODING_8859_8</a> = 17 /* ISO-8859-8 */
-    <a name="XML_CHAR_ENCODING_8859_9">XML_CHAR_ENCODING_8859_9</a> = 18 /* ISO-8859-9 */
-    <a name="XML_CHAR_ENCODING_2022_JP">XML_CHAR_ENCODING_2022_JP</a> = 19 /* ISO-2022-JP */
-    <a name="XML_CHAR_ENCODING_SHIFT_JIS">XML_CHAR_ENCODING_SHIFT_JIS</a> = 20 /* Shift_JIS */
-    <a name="XML_CHAR_ENCODING_EUC_JP">XML_CHAR_ENCODING_EUC_JP</a> = 21 /* EUC-JP */
-    <a name="XML_CHAR_ENCODING_ASCII">XML_CHAR_ENCODING_ASCII</a> = 22 /* pure ASCII Available since 2.14.0 */
-    <a name="XML_CHAR_ENCODING_UTF16">XML_CHAR_ENCODING_UTF16</a> = 23 /* UTF-16 native */
-    <a name="XML_CHAR_ENCODING_HTML">XML_CHAR_ENCODING_HTML</a> = 24 /* HTML (output only) */
-    <a name="XML_CHAR_ENCODING_8859_10">XML_CHAR_ENCODING_8859_10</a> = 25 /* ISO-8859-10 */
-    <a name="XML_CHAR_ENCODING_8859_11">XML_CHAR_ENCODING_8859_11</a> = 26 /* ISO-8859-11 */
-    <a name="XML_CHAR_ENCODING_8859_13">XML_CHAR_ENCODING_8859_13</a> = 27 /* ISO-8859-13 */
-    <a name="XML_CHAR_ENCODING_8859_14">XML_CHAR_ENCODING_8859_14</a> = 28 /* ISO-8859-14 */
-    <a name="XML_CHAR_ENCODING_8859_15">XML_CHAR_ENCODING_8859_15</a> = 29 /* ISO-8859-15 */
-    <a name="XML_CHAR_ENCODING_8859_16">XML_CHAR_ENCODING_8859_16</a> = 30 /*  ISO-8859-16 */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncodingHandler">Structure </a>xmlCharEncodingHandler</h3>
-<pre class="programlisting">struct _xmlCharEncodingHandler {
-    char *	name
-    void *	inputCtxt
-    void *	outputCtxt
-    <a href="libxml2-encoding.html#xmlCharEncConvCtxtDtor">xmlCharEncConvCtxtDtor</a>	ctxtDtor
-    int	flags
-} xmlCharEncodingHandler;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncodingHandlerPtr">Typedef </a>xmlCharEncodingHandlerPtr</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * xmlCharEncodingHandlerPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncConvCtxtDtor"></a>Function type xmlCharEncConvCtxtDtor</h3>
-<pre class="programlisting">void	xmlCharEncConvCtxtDtor		(void * vctxt)<br>
-</pre>
-<p>Free a conversion context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>conversion context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncConvFunc"></a>Function type xmlCharEncConvFunc</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncError">xmlCharEncError</a>	xmlCharEncConvFunc	(void * vctxt, <br>					 unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen, <br>					 int flush)<br>
-</pre>
-<p>Convert between character encodings. The value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced. If the converter can consume partial multi-byte sequences, the @flush flag can be used to detect truncated sequences at EOF. Otherwise, the flag can be ignored.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>conversion context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of input bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flush</tt></i>:</span></td>
-<td>end of input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncConvImpl"></a>Function type xmlCharEncConvImpl</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlCharEncConvImpl	(void * vctxt, <br>					 const char * name, <br>					 <a href="libxml2-encoding.html#xmlCharEncFlags">xmlCharEncFlags</a> flags, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out)<br>
-</pre>
-<p>If this function returns XML_ERR_OK, it must fill the @out pointer with an encoding handler. The handler can be obtained from <a href="libxml2-encoding.html#xmlCharEncNewCustomHandler">xmlCharEncNewCustomHandler</a>. @flags can contain XML_ENC_INPUT, <a href="libxml2-encoding.html#XML_ENC_OUTPUT">XML_ENC_OUTPUT</a> or both.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>encoding name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>bit mask of flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to resulting handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncodingInputFunc"></a>Function type xmlCharEncodingInputFunc</h3>
-<pre class="programlisting">int	xmlCharEncodingInputFunc	(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen)<br>
-</pre>
-<p>Convert characters to UTF-8. On success, the value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the UTF-8 result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of chars in the original encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncodingOutputFunc"></a>Function type xmlCharEncodingOutputFunc</h3>
-<pre class="programlisting">int	xmlCharEncodingOutputFunc	(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen)<br>
-</pre>
-<p>Convert characters from UTF-8. On success, the value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of UTF-8 chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddEncodingAlias"></a>xmlAddEncodingAlias ()</h3>
-<pre class="programlisting">int	xmlAddEncodingAlias		(const char * name, <br>					 const char * alias)<br>
-</pre>
-<p>DEPRECATED: This function modifies global state and is not thread-safe. Registers an alias @alias for an encoding named @name. Existing alias will be overwritten.</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 encoding name as parsed, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>alias</tt></i>:</span></td>
-<td>the alias name as parsed, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncCloseFunc"></a>xmlCharEncCloseFunc ()</h3>
-<pre class="programlisting">int	xmlCharEncCloseFunc		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler)<br>
-</pre>
-<p>Releases an <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a>. Must be called after a handler is no longer in use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>char encoding transformation data structure</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncFirstLine"></a>xmlCharEncFirstLine ()</h3>
-<pre class="programlisting">int	xmlCharEncFirstLine		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in)<br>
-</pre>
-<p>DEPERECATED: Don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>char encoding transformation data structure</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the output.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncInFunc"></a>xmlCharEncInFunc ()</h3>
-<pre class="programlisting">int	xmlCharEncInFunc		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in)<br>
-</pre>
-<p>Generic front-end for the encoding handler input function</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>char encoding transformation data structure</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the output.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncNewCustomHandler"></a>xmlCharEncNewCustomHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlCharEncNewCustomHandler	(const char * name, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvFunc">xmlCharEncConvFunc</a> input, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvFunc">xmlCharEncConvFunc</a> output, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvCtxtDtor">xmlCharEncConvCtxtDtor</a> ctxtDtor, <br>						 void * inputCtxt, <br>						 void * outputCtxt, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out)<br>
-</pre>
-<p>Create a custom <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the encoding name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>input callback which converts to UTF-8</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>output callback which converts from UTF-8</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxtDtor</tt></i>:</span></td>
-<td>context destructor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inputCtxt</tt></i>:</span></td>
-<td>context for input callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outputCtxt</tt></i>:</span></td>
-<td>context for output callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to resulting handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharEncOutFunc"></a>xmlCharEncOutFunc ()</h3>
-<pre class="programlisting">int	xmlCharEncOutFunc		(<a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> * handler, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> out, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> in)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>char encoding transformation data structure</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the output.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> for the input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupCharEncodingHandlers"></a>xmlCleanupCharEncodingHandlers ()</h3>
-<pre class="programlisting">void	xmlCleanupCharEncodingHandlers	(void)<br>
-</pre>
-<p>DEPRECATED: This function will be made private. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all. Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupEncodingAliases"></a>xmlCleanupEncodingAliases ()</h3>
-<pre class="programlisting">void	xmlCleanupEncodingAliases	(void)<br>
-</pre>
-<p>DEPRECATED: This function modifies global state and is not thread-safe. Unregisters all aliases</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateCharEncodingHandler"></a>xmlCreateCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlCreateCharEncodingHandler	(const char * name, <br>						 <a href="libxml2-encoding.html#xmlCharEncFlags">xmlCharEncFlags</a> flags, <br>						 <a href="libxml2-encoding.html#xmlCharEncConvImpl">xmlCharEncConvImpl</a> impl, <br>						 void * implCtxt, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out)<br>
-</pre>
-<p>Find or create a handler matching the encoding. The following converters are looked up in order: - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - Custom implementation if provided - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled The handler must be closed with <a href="libxml2-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a>. If the encoding is UTF-8, a NULL handler and no error code will be returned. @flags can contain XML_ENC_INPUT, <a href="libxml2-encoding.html#XML_ENC_OUTPUT">XML_ENC_OUTPUT</a> or both. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>a string describing the char encoding.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>bit mask of flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>impl</tt></i>:</span></td>
-<td>a conversion implementation (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>implCtxt</tt></i>:</span></td>
-<td>user data for conversion implementation (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>XML_ERR_OK, <a href="libxml2-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a> or another <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> error code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDelEncodingAlias"></a>xmlDelEncodingAlias ()</h3>
-<pre class="programlisting">int	xmlDelEncodingAlias		(const char * alias)<br>
-</pre>
-<p>DEPRECATED: This function modifies global state and is not thread-safe. Unregisters an encoding alias @alias</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>alias</tt></i>:</span></td>
-<td>the alias name as parsed, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDetectCharEncoding"></a>xmlDetectCharEncoding ()</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a>	xmlDetectCharEncoding	(const unsigned char * in, <br>					 int len)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>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).</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>pointer to the length of the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>one of the XML_CHAR_ENCODING_... values.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFindCharEncodingHandler"></a>xmlFindCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	xmlFindCharEncodingHandler	(const char * name)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-encoding.html#xmlOpenCharEncodingHandler">xmlOpenCharEncodingHandler</a> which has better error reporting. If the encoding is UTF-8, this will return a no-op handler that shouldn't be used.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>a string describing the char encoding.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the handler or NULL if no handler was found or an error occurred.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetCharEncodingHandler"></a>xmlGetCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	xmlGetCharEncodingHandler	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-encoding.html#xmlLookupCharEncodingHandler">xmlLookupCharEncodingHandler</a> which has better error reporting.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>an <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> value.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the handler or NULL if no handler was found or an error occurred.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetCharEncodingName"></a>xmlGetCharEncodingName ()</h3>
-<pre class="programlisting">const char *	xmlGetCharEncodingName	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>The "canonical" name for XML encoding. C.f. http://www.w3.org/TR/REC-xml#charencoding Section 4.3.3 Character Encoding in Entities</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the canonical name for the given encoding</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetEncodingAlias"></a>xmlGetEncodingAlias ()</h3>
-<pre class="programlisting">const char *	xmlGetEncodingAlias	(const char * alias)<br>
-</pre>
-<p>DEPRECATED: This function is not thread-safe. Lookup an encoding name for the given alias.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>alias</tt></i>:</span></td>
-<td>the alias name as parsed, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not found, otherwise the original name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitCharEncodingHandlers"></a>xmlInitCharEncodingHandlers ()</h3>
-<pre class="programlisting">void	xmlInitCharEncodingHandlers	(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsolat1ToUTF8"></a>xmlIsolat1ToUTF8 ()</h3>
-<pre class="programlisting">int	xmlIsolat1ToUTF8		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen)<br>
-</pre>
-<p>Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8 block of chars out.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of ISO Latin 1 chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code. 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 produced.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLookupCharEncodingHandler"></a>xmlLookupCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlLookupCharEncodingHandler	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out)<br>
-</pre>
-<p>Find or create a handler matching the encoding. The following converters are looked up in order: - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled The handler must be closed with <a href="libxml2-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a>. If the encoding is UTF-8, a NULL handler and no error code will be returned. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>an <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> value.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>XML_ERR_OK, <a href="libxml2-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a> or another <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> error code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewCharEncodingHandler"></a>xmlNewCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	xmlNewCharEncodingHandler	(const char * name, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a> input, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> output)<br>
-</pre>
-<p>DEPRECATED: This function modifies global state and is not thread-safe. Create and registers an <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the encoding name, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the <a href="libxml2-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a> to read that encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> to write that encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> created (or NULL in case of error).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOpenCharEncodingHandler"></a>xmlOpenCharEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlOpenCharEncodingHandler	(const char * name, <br>						 int output, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandler">xmlCharEncodingHandler</a> ** out)<br>
-</pre>
-<p>Find or create a handler matching the encoding. The following converters are looked up in order: - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled The handler must be closed with <a href="libxml2-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a>. If the encoding is UTF-8, a NULL handler and no error code will be returned. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>a string describing the char encoding.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>boolean, use handler for output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>XML_ERR_OK, <a href="libxml2-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a> or another <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> error code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCharEncoding"></a>xmlParseCharEncoding ()</h3>
-<pre class="programlisting"><a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a>	xmlParseCharEncoding	(const char * name)<br>
-</pre>
-<p>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.</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 encoding name as parsed, in UTF-8 format (ASCII actually)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>one of the XML_CHAR_ENCODING_... values or <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a> if not recognized.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterCharEncodingHandler"></a>xmlRegisterCharEncodingHandler ()</h3>
-<pre class="programlisting">void	xmlRegisterCharEncodingHandler	(<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler)<br>
-</pre>
-<p>DEPRECATED: This function modifies global state and is not thread-safe. Register the char encoding handler.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler block</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8ToIsolat1"></a>xmlUTF8ToIsolat1 ()</h3>
-<pre class="programlisting">int	xmlUTF8ToIsolat1		(unsigned char * out, <br>					 int * outlen, <br>					 const unsigned char * in, <br>					 int * inlen)<br>
-</pre>
-<p>Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1 block of chars out.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a pointer to an array of bytes to store the result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>outlen</tt></i>:</span></td>
-<td>the length of @out</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a pointer to an array of UTF-8 chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inlen</tt></i>:</span></td>
-<td>the length of @in</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or an XML_ENC_ERR code. 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 produced.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-entities.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-entities.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-entities.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-entities.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,512 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>entities: interface for the XML entities handling</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-encoding.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-globals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">entities</span></h2>
-<p>entities - interface for the XML entities handling</p>
-<p>this module provides some of the entity API needed for the parser and applications. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlHashTable <a href="#xmlEntitiesTable">xmlEntitiesTable</a>;
-typedef <a href="libxml2-entities.html#xmlEntitiesTable">xmlEntitiesTable</a> * <a href="#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>;
-typedef enum <a href="#xmlEntityType">xmlEntityType</a>;
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlAddDocEntity">xmlAddDocEntity</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlAddDtdEntity">xmlAddDtdEntity</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlAddEntity">xmlAddEntity</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int extSubset, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> * out);
-<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	<a href="#xmlCopyEntitiesTable">xmlCopyEntitiesTable</a>	(<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table);
-<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	<a href="#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a>	(void);
-void	<a href="#xmlDumpEntitiesTable">xmlDumpEntitiesTable</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table);
-void	<a href="#xmlDumpEntityDecl">xmlDumpEntityDecl</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a>	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input);
-void	<a href="#xmlFreeEntitiesTable">xmlFreeEntitiesTable</a>		(<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table);
-void	<a href="#xmlFreeEntity">xmlFreeEntity</a>			(<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> entity);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlGetDocEntity">xmlGetDocEntity</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlGetDtdEntity">xmlGetDtdEntity</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlGetParameterEntity">xmlGetParameterEntity</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlGetPredefinedEntity">xmlGetPredefinedEntity</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlNewEntity">xmlNewEntity</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEntitiesTable">Structure </a>xmlEntitiesTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlEntitiesTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEntitiesTablePtr">Typedef </a>xmlEntitiesTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-entities.html#xmlEntitiesTable">xmlEntitiesTable</a> * xmlEntitiesTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEntityType">Enum </a>xmlEntityType</h3>
-<pre class="programlisting">enum <a href="#xmlEntityType">xmlEntityType</a> {
-    <a name="XML_INTERNAL_GENERAL_ENTITY">XML_INTERNAL_GENERAL_ENTITY</a> = 1
-    <a name="XML_EXTERNAL_GENERAL_PARSED_ENTITY">XML_EXTERNAL_GENERAL_PARSED_ENTITY</a> = 2
-    <a name="XML_EXTERNAL_GENERAL_UNPARSED_ENTITY">XML_EXTERNAL_GENERAL_UNPARSED_ENTITY</a> = 3
-    <a name="XML_INTERNAL_PARAMETER_ENTITY">XML_INTERNAL_PARAMETER_ENTITY</a> = 4
-    <a name="XML_EXTERNAL_PARAMETER_ENTITY">XML_EXTERNAL_PARAMETER_ENTITY</a> = 5
-    <a name="XML_INTERNAL_PREDEFINED_ENTITY">XML_INTERNAL_PREDEFINED_ENTITY</a> = 6
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddDocEntity"></a>xmlAddDocEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlAddDocEntity		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Register a new entity for this document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type XML_xxx_yyy_ENTITY</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the entity external ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the entity system ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the entity or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddDtdEntity"></a>xmlAddDtdEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlAddDtdEntity		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Register a new entity for this document DTD external subset.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type XML_xxx_yyy_ENTITY</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the entity external ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the entity system ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the entity or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddEntity"></a>xmlAddEntity ()</h3>
-<pre class="programlisting">int	xmlAddEntity			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int extSubset, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> * out)<br>
-</pre>
-<p>Register a new entity for this document. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>extSubset</tt></i>:</span></td>
-<td>add to the external or internal subset</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type XML_xxx_yyy_ENTITY</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the entity external ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the entity system ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to resulting entity (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> error code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyEntitiesTable"></a>xmlCopyEntitiesTable ()</h3>
-<pre class="programlisting"><a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	xmlCopyEntitiesTable	(<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br>
-</pre>
-<p>Build a copy of an entity table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An entity table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateEntitiesTable"></a>xmlCreateEntitiesTable ()</h3>
-<pre class="programlisting"><a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	xmlCreateEntitiesTable	(void)<br>
-</pre>
-<p>create and initialize an empty entities hash table. This really doesn't make sense and should be deprecated</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> just created or NULL in case of error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpEntitiesTable"></a>xmlDumpEntitiesTable ()</h3>
-<pre class="programlisting">void	xmlDumpEntitiesTable		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br>
-</pre>
-<p>This will dump the content of the entity table as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>An XML buffer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An entity table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpEntityDecl"></a>xmlDumpEntityDecl ()</h3>
-<pre class="programlisting">void	xmlDumpEntityDecl		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent)<br>
-</pre>
-<p>This will dump the content of the entity table as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>An XML buffer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ent</tt></i>:</span></td>
-<td>An entity table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEncodeEntitiesReentrant"></a>xmlEncodeEntitiesReentrant ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlEncodeEntitiesReentrant	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input)<br>
-</pre>
-<p>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. This escapes '&lt;', '&gt;', '&amp;' and '\r'. If the document has no encoding, non-ASCII codepoints are escaped. There is some special handling for HTML documents.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document containing the string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>A string to convert to XML.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>A newly allocated string with the substitution done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEncodeSpecialChars"></a>xmlEncodeSpecialChars ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlEncodeSpecialChars	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * input)<br>
-</pre>
-<p>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated. This escapes '&lt;', '&gt;', '&amp;', '"' and '\r' chars.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>unused</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>A string to convert to XML.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>A newly allocated string with the substitution done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeEntitiesTable"></a>xmlFreeEntitiesTable ()</h3>
-<pre class="programlisting">void	xmlFreeEntitiesTable		(<a href="libxml2-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br>
-</pre>
-<p>Deallocate the memory used by an entities hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An entity table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeEntity"></a>xmlFreeEntity ()</h3>
-<pre class="programlisting">void	xmlFreeEntity			(<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> entity)<br>
-</pre>
-<p>Frees the entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>entity</tt></i>:</span></td>
-<td>an entity</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDocEntity"></a>xmlGetDocEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlGetDocEntity		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Do an entity lookup in the document entity hash table and</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document referencing the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdEntity"></a>xmlGetDtdEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlGetDtdEntity		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Do an entity lookup in the DTD entity hash table and</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document referencing the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetParameterEntity"></a>xmlGetParameterEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlGetParameterEntity	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Do an entity lookup in the internal and external subsets and</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document referencing the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the corresponding parameter entity, if found. Returns A pointer to the entity structure or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetPredefinedEntity"></a>xmlGetPredefinedEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlGetPredefinedEntity	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Check whether this name is an predefined entity.</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 entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewEntity"></a>xmlNewEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlNewEntity		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a new entity, this differs from xmlAddDocEntity() that if the document is NULL or has no internal subset defined, then an unlinked entity structure will be returned, it is then the responsibility of the caller to link it to the document later or free it when not needed anymore.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type XML_xxx_yyy_ENTITY</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the entity external ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the entity system ID if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the entity or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-globals.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-globals.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-globals.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-globals.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,33 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>globals: interface for all global variables of the library</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-entities.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-hash.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">globals</span></h2>
-<p>globals - interface for all global variables of the library</p>
-<p>Deprecated, don't use </p>
-<p>Author(s): </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis"></pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en"></div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-hash.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-hash.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-hash.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-hash.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1100 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>hash: Chained hash tables</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-globals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-list.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">hash</span></h2>
-<p>hash - Chained hash tables</p>
-<p>This module implements the hash table support used in various places in the library. </p>
-<p>Author(s): Bjorn Reese &lt;bjorn.reese@systematic.dk&gt; </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
-typedef struct _xmlHashTable <a href="#xmlHashTable">xmlHashTable</a>;
-typedef <a href="libxml2-hash.html#xmlHashTable">xmlHashTable</a> * <a href="#xmlHashTablePtr">xmlHashTablePtr</a>;
-int	<a href="#xmlHashAdd">xmlHashAdd</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload);
-int	<a href="#xmlHashAdd2">xmlHashAdd2</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload);
-int	<a href="#xmlHashAdd3">xmlHashAdd3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload);
-int	<a href="#xmlHashAddEntry">xmlHashAddEntry</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload);
-int	<a href="#xmlHashAddEntry2">xmlHashAddEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload);
-int	<a href="#xmlHashAddEntry3">xmlHashAddEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload);
-typedef void * <a href="#xmlHashCopier">xmlHashCopier</a>			(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCopy">xmlHashCopy</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> copy);
-<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCopySafe">xmlHashCopySafe</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> copyFunc, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> deallocFunc);
-<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreate">xmlHashCreate</a>		(int size);
-<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreateDict">xmlHashCreateDict</a>	(int size, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-typedef void <a href="#xmlHashDeallocator">xmlHashDeallocator</a>		(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#xmlHashDefaultDeallocator">xmlHashDefaultDeallocator</a>	(void * entry, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key);
-void	<a href="#xmlHashFree">xmlHashFree</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-void *	<a href="#xmlHashLookup">xmlHashLookup</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key);
-void *	<a href="#xmlHashLookup2">xmlHashLookup2</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2);
-void *	<a href="#xmlHashLookup3">xmlHashLookup3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3);
-void *	<a href="#xmlHashQLookup">xmlHashQLookup</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void *	<a href="#xmlHashQLookup2">xmlHashQLookup2</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2);
-void *	<a href="#xmlHashQLookup3">xmlHashQLookup3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix3, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3);
-int	<a href="#xmlHashRemoveEntry">xmlHashRemoveEntry</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-int	<a href="#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-int	<a href="#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-void	<a href="#xmlHashScan">xmlHashScan</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> scan, <br>					 void * data);
-void	<a href="#xmlHashScan3">xmlHashScan3</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> scan, <br>					 void * data);
-void	<a href="#xmlHashScanFull">xmlHashScanFull</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> scan, <br>					 void * data);
-void	<a href="#xmlHashScanFull3">xmlHashScanFull3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> scan, <br>					 void * data);
-typedef void <a href="#xmlHashScanner">xmlHashScanner</a>			(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-typedef void <a href="#xmlHashScannerFull">xmlHashScannerFull</a>		(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3);
-int	<a href="#xmlHashSize">xmlHashSize</a>			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash);
-int	<a href="#xmlHashUpdateEntry">xmlHashUpdateEntry</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-int	<a href="#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-int	<a href="#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a>		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_CAST_FPTR">Macro </a>XML_CAST_FPTR</h3>
-<pre class="programlisting">#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
-</pre>
-<p>Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&amp;fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>fptr</tt></i>:</span></td>
-<td>pointer to a function</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashTable">Structure </a>xmlHashTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlHashTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashTablePtr">Typedef </a>xmlHashTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTable">xmlHashTable</a> * xmlHashTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashCopier"></a>Function type xmlHashCopier</h3>
-<pre class="programlisting">void *	xmlHashCopier			(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Callback to copy data from a hash.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>the data in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name associated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a copy of the data or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashDeallocator"></a>Function type xmlHashDeallocator</h3>
-<pre class="programlisting">void	xmlHashDeallocator		(void * payload, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Callback to free data from a hash.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>the data in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name associated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScanner"></a>Function type xmlHashScanner</h3>
-<pre class="programlisting">void	xmlHashScanner			(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Callback when scanning data in a hash with the simple scanner.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>the data in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra scanner data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name associated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScannerFull"></a>Function type xmlHashScannerFull</h3>
-<pre class="programlisting">void	xmlHashScannerFull		(void * payload, <br>					 void * data, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3)<br>
-</pre>
-<p>Callback when scanning data in a hash with the full scanner.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>the data in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra scanner data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name associated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name2</tt></i>:</span></td>
-<td>the second name associated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name3</tt></i>:</span></td>
-<td>the third name associated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAdd"></a>xmlHashAdd ()</h3>
-<pre class="programlisting">int	xmlHashAdd			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry. If an entry with this key already exists, payload will not be updated and 0 is returned. This return value can't be distinguished from out-of-memory errors, so this function should be used with care. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 on success, 0 if an entry exists and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAdd2"></a>xmlHashAdd2 ()</h3>
-<pre class="programlisting">int	xmlHashAdd2			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry with two strings as key. See <a href="libxml2-hash.html#xmlHashAdd">xmlHashAdd</a>. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 on success, 0 if an entry exists and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAdd3"></a>xmlHashAdd3 ()</h3>
-<pre class="programlisting">int	xmlHashAdd3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry with three strings as key. See <a href="libxml2-hash.html#xmlHashAdd">xmlHashAdd</a>. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 on success, 0 if an entry exists and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAddEntry"></a>xmlHashAddEntry ()</h3>
-<pre class="programlisting">int	xmlHashAddEntry			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry. If an entry with this key already exists, payload will not be updated and -1 is returned. This return value can't be distinguished from out-of-memory errors, so this function should be used with care. NOTE: This function doesn't allow to distinguish malloc failures from existing entries. Use <a href="libxml2-hash.html#xmlHashAdd">xmlHashAdd</a> instead.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAddEntry2"></a>xmlHashAddEntry2 ()</h3>
-<pre class="programlisting">int	xmlHashAddEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry with two strings as key. See <a href="libxml2-hash.html#xmlHashAddEntry">xmlHashAddEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashAddEntry3"></a>xmlHashAddEntry3 ()</h3>
-<pre class="programlisting">int	xmlHashAddEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload)<br>
-</pre>
-<p>Add a hash table entry with three strings as key. See <a href="libxml2-hash.html#xmlHashAddEntry">xmlHashAddEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashCopy"></a>xmlHashCopy ()</h3>
-<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCopy		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> copy)<br>
-</pre>
-<p>DEPRECATED: Leaks memory in error case. Copy the hash table using @copy to copy payloads.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>copy</tt></i>:</span></td>
-<td>copier function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new table or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashCopySafe"></a>xmlHashCopySafe ()</h3>
-<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCopySafe		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashCopier">xmlHashCopier</a> copyFunc, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> deallocFunc)<br>
-</pre>
-<p>Copy the hash table using @copyFunc to copy payloads. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>copyFunc</tt></i>:</span></td>
-<td>copier function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>deallocFunc</tt></i>:</span></td>
-<td>deallocation function in case of errors</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new table or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashCreate"></a>xmlHashCreate ()</h3>
-<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreate		(int size)<br>
-</pre>
-<p>Create a new hash table. Set size to zero if the number of entries can't be estimated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>initial size of the hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object, or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashCreateDict"></a>xmlHashCreateDict ()</h3>
-<pre class="programlisting"><a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreateDict	(int size, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Create a new hash table backed by a dictionary. This can reduce resource usage considerably if most keys passed to API functions originate from this dictionary.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the size of the hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>a dictionary to use for the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object, or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashDefaultDeallocator"></a>xmlHashDefaultDeallocator ()</h3>
-<pre class="programlisting">void	xmlHashDefaultDeallocator	(void * entry, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key)<br>
-</pre>
-<p>Free a hash table entry with <a href="libxml2-xmlmemory.html#xmlFree">xmlFree</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>entry</tt></i>:</span></td>
-<td>hash table entry</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>the entry's string key</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashFree"></a>xmlHashFree ()</h3>
-<pre class="programlisting">void	xmlHashFree			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Free the hash and its contents. The payload is deallocated with @dealloc if provided.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashLookup"></a>xmlHashLookup ()</h3>
-<pre class="programlisting">void *	xmlHashLookup			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key)<br>
-</pre>
-<p>Find the entry specified by @key.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashLookup2"></a>xmlHashLookup2 ()</h3>
-<pre class="programlisting">void *	xmlHashLookup2			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2)<br>
-</pre>
-<p>Find the payload specified by the (@key, @key2) tuple.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashLookup3"></a>xmlHashLookup3 ()</h3>
-<pre class="programlisting">void *	xmlHashLookup3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3)<br>
-</pre>
-<p>Find the payload specified by the (@key, @key2, @key3) tuple.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashQLookup"></a>xmlHashQLookup ()</h3>
-<pre class="programlisting">void *	xmlHashQLookup			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Find the payload specified by the QName @prefix:@name or @name.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>prefix of the string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>local name of the string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashQLookup2"></a>xmlHashQLookup2 ()</h3>
-<pre class="programlisting">void *	xmlHashQLookup2			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2)<br>
-</pre>
-<p>Find the payload specified by the QNames tuple.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>first prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>first local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix2</tt></i>:</span></td>
-<td>second prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name2</tt></i>:</span></td>
-<td>second local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashQLookup3"></a>xmlHashQLookup3 ()</h3>
-<pre class="programlisting">void *	xmlHashQLookup3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix3, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name3)<br>
-</pre>
-<p>Find the payload specified by the QNames tuple.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>first prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>first local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix2</tt></i>:</span></td>
-<td>second prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name2</tt></i>:</span></td>
-<td>second local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix3</tt></i>:</span></td>
-<td>third prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name3</tt></i>:</span></td>
-<td>third local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the payload or NULL if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashRemoveEntry"></a>xmlHashRemoveEntry ()</h3>
-<pre class="programlisting">int	xmlHashRemoveEntry		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Find the entry specified by the @key and remove it from the hash table. Payload will be freed with @dealloc.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for removed item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 if no entry was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashRemoveEntry2"></a>xmlHashRemoveEntry2 ()</h3>
-<pre class="programlisting">int	xmlHashRemoveEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Remove an entry with two strings as key. See <a href="libxml2-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for removed item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashRemoveEntry3"></a>xmlHashRemoveEntry3 ()</h3>
-<pre class="programlisting">int	xmlHashRemoveEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Remove an entry with three strings as key. See <a href="libxml2-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for removed item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScan"></a>xmlHashScan ()</h3>
-<pre class="programlisting">void	xmlHashScan			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> scan, <br>					 void * data)<br>
-</pre>
-<p>Scan the hash @table and apply @scan to each value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>scan</tt></i>:</span></td>
-<td>scanner function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra data passed to @scan</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScan3"></a>xmlHashScan3 ()</h3>
-<pre class="programlisting">void	xmlHashScan3			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashScanner">xmlHashScanner</a> scan, <br>					 void * data)<br>
-</pre>
-<p>Scan the hash @table and apply @scan to each value matching (@key, @key2, @key3) tuple. If one of the keys is null, the comparison is considered to match.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>scan</tt></i>:</span></td>
-<td>scanner function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra data passed to @scan</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScanFull"></a>xmlHashScanFull ()</h3>
-<pre class="programlisting">void	xmlHashScanFull			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> scan, <br>					 void * data)<br>
-</pre>
-<p>Scan the hash @table and apply @scan to each value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>scan</tt></i>:</span></td>
-<td>scanner function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra data passed to @scan</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashScanFull3"></a>xmlHashScanFull3 ()</h3>
-<pre class="programlisting">void	xmlHashScanFull3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 <a href="libxml2-hash.html#xmlHashScannerFull">xmlHashScannerFull</a> scan, <br>					 void * data)<br>
-</pre>
-<p>Scan the hash @table and apply @scan to each value matching (@key, @key2, @key3) tuple. If one of the keys is null, the comparison is considered to match.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>scan</tt></i>:</span></td>
-<td>scanner function for items in the hash</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>extra data passed to @scan</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashSize"></a>xmlHashSize ()</h3>
-<pre class="programlisting">int	xmlHashSize			(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash)<br>
-</pre>
-<p>Query the number of elements in the hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of elements in the hash table or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashUpdateEntry"></a>xmlHashUpdateEntry ()</h3>
-<pre class="programlisting">int	xmlHashUpdateEntry		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Add a hash table entry. If an entry with this key already exists, the old payload will be freed and updated with the new value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for replaced item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashUpdateEntry2"></a>xmlHashUpdateEntry2 ()</h3>
-<pre class="programlisting">int	xmlHashUpdateEntry2		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Add a hash table entry with two strings as key. See <a href="libxml2-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for replaced item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHashUpdateEntry3"></a>xmlHashUpdateEntry3 ()</h3>
-<pre class="programlisting">int	xmlHashUpdateEntry3		(<a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> hash, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key2, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * key3, <br>					 void * payload, <br>					 <a href="libxml2-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> dealloc)<br>
-</pre>
-<p>Add a hash table entry with three strings as key. See <a href="libxml2-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>hash</tt></i>:</span></td>
-<td>hash table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key</tt></i>:</span></td>
-<td>first string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key2</tt></i>:</span></td>
-<td>second string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>key3</tt></i>:</span></td>
-<td>third string key</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>payload</tt></i>:</span></td>
-<td>pointer to the payload</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dealloc</tt></i>:</span></td>
-<td>deallocator function for replaced item or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-list.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-list.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-list.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-list.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,730 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>list: lists interfaces</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-hash.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-nanohttp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">list</span></h2>
-<p>list - lists interfaces</p>
-<p>this module implement the list support used in various place in the library. </p>
-<p>Author(s): Gary Pennington &lt;Gary.Pennington@uk.sun.com&gt; </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlLink <a href="#xmlLink">xmlLink</a>;
-typedef <a href="libxml2-list.html#xmlLink">xmlLink</a> * <a href="#xmlLinkPtr">xmlLinkPtr</a>;
-typedef struct _xmlList <a href="#xmlList">xmlList</a>;
-typedef <a href="libxml2-list.html#xmlList">xmlList</a> * <a href="#xmlListPtr">xmlListPtr</a>;
-void *	<a href="#xmlLinkGetData">xmlLinkGetData</a>			(<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a> lk);
-int	<a href="#xmlListAppend">xmlListAppend</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-void	<a href="#xmlListClear">xmlListClear</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-int	<a href="#xmlListCopy">xmlListCopy</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> cur, <br>					 <a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> old);
-<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	<a href="#xmlListCreate">xmlListCreate</a>		(<a href="libxml2-list.html#xmlListDeallocator">xmlListDeallocator</a> deallocator, <br>					 <a href="libxml2-list.html#xmlListDataCompare">xmlListDataCompare</a> compare);
-typedef int <a href="#xmlListDataCompare">xmlListDataCompare</a>		(const void * data0, <br>					 const void * data1);
-typedef void <a href="#xmlListDeallocator">xmlListDeallocator</a>		(<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a> lk);
-void	<a href="#xmlListDelete">xmlListDelete</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	<a href="#xmlListDup">xmlListDup</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> old);
-int	<a href="#xmlListEmpty">xmlListEmpty</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a>	<a href="#xmlListEnd">xmlListEnd</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a>	<a href="#xmlListFront">xmlListFront</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-int	<a href="#xmlListInsert">xmlListInsert</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-void	<a href="#xmlListMerge">xmlListMerge</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l1, <br>					 <a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l2);
-void	<a href="#xmlListPopBack">xmlListPopBack</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-void	<a href="#xmlListPopFront">xmlListPopFront</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-int	<a href="#xmlListPushBack">xmlListPushBack</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-int	<a href="#xmlListPushFront">xmlListPushFront</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-int	<a href="#xmlListRemoveAll">xmlListRemoveAll</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-int	<a href="#xmlListRemoveFirst">xmlListRemoveFirst</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-int	<a href="#xmlListRemoveLast">xmlListRemoveLast</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-void	<a href="#xmlListReverse">xmlListReverse</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-void *	<a href="#xmlListReverseSearch">xmlListReverseSearch</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-void	<a href="#xmlListReverseWalk">xmlListReverseWalk</a>		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 <a href="libxml2-list.html#xmlListWalker">xmlListWalker</a> walker, <br>					 void * user);
-void *	<a href="#xmlListSearch">xmlListSearch</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data);
-int	<a href="#xmlListSize">xmlListSize</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-void	<a href="#xmlListSort">xmlListSort</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l);
-void	<a href="#xmlListWalk">xmlListWalk</a>			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 <a href="libxml2-list.html#xmlListWalker">xmlListWalker</a> walker, <br>					 void * user);
-typedef int <a href="#xmlListWalker">xmlListWalker</a>			(const void * data, <br>					 void * user);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLink">Structure </a>xmlLink</h3>
-<pre class="programlisting">struct _xmlLink {
-The content of this structure is not made public by the API.
-} xmlLink;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLinkPtr">Typedef </a>xmlLinkPtr</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlLink">xmlLink</a> * xmlLinkPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlList">Structure </a>xmlList</h3>
-<pre class="programlisting">struct _xmlList {
-The content of this structure is not made public by the API.
-} xmlList;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListPtr">Typedef </a>xmlListPtr</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlList">xmlList</a> * xmlListPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListDataCompare"></a>Function type xmlListDataCompare</h3>
-<pre class="programlisting">int	xmlListDataCompare		(const void * data0, <br>					 const void * data1)<br>
-</pre>
-<p>Callback function used to compare 2 data.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>data0</tt></i>:</span></td>
-<td>the first data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data1</tt></i>:</span></td>
-<td>the second data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 is equality, -1 or 1 otherwise depending on the ordering.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListDeallocator"></a>Function type xmlListDeallocator</h3>
-<pre class="programlisting">void	xmlListDeallocator		(<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a> lk)<br>
-</pre>
-<p>Callback function used to free data from a list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>lk</tt></i>:</span></td>
-<td>the data to deallocate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListWalker"></a>Function type xmlListWalker</h3>
-<pre class="programlisting">int	xmlListWalker			(const void * data, <br>					 void * user)<br>
-</pre>
-<p>Callback function used when walking a list with xmlListWalk().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the data found in the list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user</tt></i>:</span></td>
-<td>extra user provided data to the walker</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 to stop walking the list, 1 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLinkGetData"></a>xmlLinkGetData ()</h3>
-<pre class="programlisting">void *	xmlLinkGetData			(<a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a> lk)<br>
-</pre>
-<p>See Returns.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>lk</tt></i>:</span></td>
-<td>a link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the data referenced from this link</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListAppend"></a>xmlListAppend ()</h3>
-<pre class="programlisting">int	xmlListAppend			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Insert data in the ordered list at the end for this value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, 1 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListClear"></a>xmlListClear ()</h3>
-<pre class="programlisting">void	xmlListClear			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Remove the all data in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListCopy"></a>xmlListCopy ()</h3>
-<pre class="programlisting">int	xmlListCopy			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> cur, <br>					 <a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> old)<br>
-</pre>
-<p>Move all the element from the old list in the new list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the new list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>old</tt></i>:</span></td>
-<td>the old list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success 1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListCreate"></a>xmlListCreate ()</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	xmlListCreate		(<a href="libxml2-list.html#xmlListDeallocator">xmlListDeallocator</a> deallocator, <br>					 <a href="libxml2-list.html#xmlListDataCompare">xmlListDataCompare</a> compare)<br>
-</pre>
-<p>Create a new list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>deallocator</tt></i>:</span></td>
-<td>an optional deallocator function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compare</tt></i>:</span></td>
-<td>an optional comparison function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new list or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListDelete"></a>xmlListDelete ()</h3>
-<pre class="programlisting">void	xmlListDelete			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Deletes the list and its associated data</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListDup"></a>xmlListDup ()</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	xmlListDup		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> old)<br>
-</pre>
-<p>Duplicate the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>old</tt></i>:</span></td>
-<td>the list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new copy of the list or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListEmpty"></a>xmlListEmpty ()</h3>
-<pre class="programlisting">int	xmlListEmpty			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Is the list empty ?</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the list is empty, 0 if not empty and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListEnd"></a>xmlListEnd ()</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a>	xmlListEnd		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Get the last element in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last element in the list, or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListFront"></a>xmlListFront ()</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlLinkPtr">xmlLinkPtr</a>	xmlListFront		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Get the first element in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the first element in the list, or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListInsert"></a>xmlListInsert ()</h3>
-<pre class="programlisting">int	xmlListInsert			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Insert data in the ordered list at the beginning for this value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, 1 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListMerge"></a>xmlListMerge ()</h3>
-<pre class="programlisting">void	xmlListMerge			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l1, <br>					 <a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l2)<br>
-</pre>
-<p>include all the elements of the second list in the first one and clear the second list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l1</tt></i>:</span></td>
-<td>the original list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>l2</tt></i>:</span></td>
-<td>the new list</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListPopBack"></a>xmlListPopBack ()</h3>
-<pre class="programlisting">void	xmlListPopBack			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Removes the last element in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListPopFront"></a>xmlListPopFront ()</h3>
-<pre class="programlisting">void	xmlListPopFront			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Removes the first element in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListPushBack"></a>xmlListPushBack ()</h3>
-<pre class="programlisting">int	xmlListPushBack			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>add the new data at the end of the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>new data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if successful, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListPushFront"></a>xmlListPushFront ()</h3>
-<pre class="programlisting">int	xmlListPushFront		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>add the new data at the beginning of the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>new data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if successful, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListRemoveAll"></a>xmlListRemoveAll ()</h3>
-<pre class="programlisting">int	xmlListRemoveAll		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Remove the all instance associated to data in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>list data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of deallocation, or 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListRemoveFirst"></a>xmlListRemoveFirst ()</h3>
-<pre class="programlisting">int	xmlListRemoveFirst		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Remove the first instance associated to data in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>list data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if a deallocation occurred, or 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListRemoveLast"></a>xmlListRemoveLast ()</h3>
-<pre class="programlisting">int	xmlListRemoveLast		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Remove the last instance associated to data in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>list data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if a deallocation occurred, or 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListReverse"></a>xmlListReverse ()</h3>
-<pre class="programlisting">void	xmlListReverse			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Reverse the order of the elements in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListReverseSearch"></a>xmlListReverseSearch ()</h3>
-<pre class="programlisting">void *	xmlListReverseSearch		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Search the list in reverse order for an existing value of @data</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>a search value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value associated to @data or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListReverseWalk"></a>xmlListReverseWalk ()</h3>
-<pre class="programlisting">void	xmlListReverseWalk		(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 <a href="libxml2-list.html#xmlListWalker">xmlListWalker</a> walker, <br>					 void * user)<br>
-</pre>
-<p>Walk all the element of the list in reverse order and apply the walker function to it</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>walker</tt></i>:</span></td>
-<td>a processing function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user</tt></i>:</span></td>
-<td>a user parameter passed to the walker function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListSearch"></a>xmlListSearch ()</h3>
-<pre class="programlisting">void *	xmlListSearch			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 void * data)<br>
-</pre>
-<p>Search the list for an existing value of @data</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>a search value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value associated to @data or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListSize"></a>xmlListSize ()</h3>
-<pre class="programlisting">int	xmlListSize			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Get the number of elements in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of elements in the list or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListSort"></a>xmlListSort ()</h3>
-<pre class="programlisting">void	xmlListSort			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l)<br>
-</pre>
-<p>Sort all the elements in the list</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlListWalk"></a>xmlListWalk ()</h3>
-<pre class="programlisting">void	xmlListWalk			(<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a> l, <br>					 <a href="libxml2-list.html#xmlListWalker">xmlListWalker</a> walker, <br>					 void * user)<br>
-</pre>
-<p>Walk all the element of the first from first to last and apply the walker function to it</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>l</tt></i>:</span></td>
-<td>a list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>walker</tt></i>:</span></td>
-<td>a processing function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user</tt></i>:</span></td>
-<td>a user parameter passed to the walker function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-nanoftp.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-nanoftp.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-nanoftp.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-nanoftp.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,651 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nanoftp: minimal FTP implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-list.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-nanohttp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">nanoftp</span></h2>
-<p>nanoftp - minimal FTP implementation</p>
-<p>minimal FTP implementation allowing to fetch resources like external subset. This module is DEPRECATED, do not use any of its functions. </p>
-<p> WARNING: this module is deprecated !</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#INVALID_SOCKET">INVALID_SOCKET</a>;
-#define <a href="#SOCKET">SOCKET</a>;
-typedef void <a href="#ftpDataCallback">ftpDataCallback</a>			(void * userData, <br>					 const char * data, <br>					 int len);
-typedef void <a href="#ftpListCallback">ftpListCallback</a>			(void * userData, <br>					 const char * filename, <br>					 const char * attrib, <br>					 const char * owner, <br>					 const char * group, <br>					 unsigned long size, <br>					 int links, <br>					 int year, <br>					 const char * month, <br>					 int day, <br>					 int hour, <br>					 int minute);
-int	<a href="#xmlNanoFTPCheckResponse">xmlNanoFTPCheckResponse</a>		(void * ctx);
-void	<a href="#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a>		(void);
-int	<a href="#xmlNanoFTPClose">xmlNanoFTPClose</a>			(void * ctx);
-int	<a href="#xmlNanoFTPCloseConnection">xmlNanoFTPCloseConnection</a>	(void * ctx);
-int	<a href="#xmlNanoFTPConnect">xmlNanoFTPConnect</a>		(void * ctx);
-void *	<a href="#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a>		(const char * server, <br>					 int port);
-int	<a href="#xmlNanoFTPCwd">xmlNanoFTPCwd</a>			(void * ctx, <br>					 const char * directory);
-int	<a href="#xmlNanoFTPDele">xmlNanoFTPDele</a>			(void * ctx, <br>					 const char * file);
-void	<a href="#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a>		(void * ctx);
-int	<a href="#xmlNanoFTPGet">xmlNanoFTPGet</a>			(void * ctx, <br>					 <a href="libxml2-nanoftp.html#ftpDataCallback">ftpDataCallback</a> callback, <br>					 void * userData, <br>					 const char * filename);
-<a href="libxml2-nanoftp.html#SOCKET">SOCKET</a>	<a href="#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a>		(void * ctx);
-int	<a href="#xmlNanoFTPGetResponse">xmlNanoFTPGetResponse</a>		(void * ctx);
-<a href="libxml2-nanoftp.html#SOCKET">SOCKET</a>	<a href="#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a>		(void * ctx, <br>					 const char * filename);
-void	<a href="#xmlNanoFTPInit">xmlNanoFTPInit</a>			(void);
-int	<a href="#xmlNanoFTPList">xmlNanoFTPList</a>			(void * ctx, <br>					 <a href="libxml2-nanoftp.html#ftpListCallback">ftpListCallback</a> callback, <br>					 void * userData, <br>					 const char * filename);
-void *	<a href="#xmlNanoFTPNewCtxt">xmlNanoFTPNewCtxt</a>		(const char * URL);
-void *	<a href="#xmlNanoFTPOpen">xmlNanoFTPOpen</a>			(const char * URL);
-void	<a href="#xmlNanoFTPProxy">xmlNanoFTPProxy</a>			(const char * host, <br>					 int port, <br>					 const char * user, <br>					 const char * passwd, <br>					 int type);
-int	<a href="#xmlNanoFTPQuit">xmlNanoFTPQuit</a>			(void * ctx);
-int	<a href="#xmlNanoFTPRead">xmlNanoFTPRead</a>			(void * ctx, <br>					 void * dest, <br>					 int len);
-void	<a href="#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a>		(const char * URL);
-int	<a href="#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a>		(void * ctx, <br>					 const char * URL);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="INVALID_SOCKET">Macro </a>INVALID_SOCKET</h3>
-<pre class="programlisting">#define <a href="#INVALID_SOCKET">INVALID_SOCKET</a>;
-</pre>
-<p>macro used to provide portability of code to windows sockets the value to be used when the socket is not valid</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="SOCKET">Macro </a>SOCKET</h3>
-<pre class="programlisting">#define <a href="#SOCKET">SOCKET</a>;
-</pre>
-<p>macro used to provide portability of code to windows sockets</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="ftpDataCallback"></a>Function type ftpDataCallback</h3>
-<pre class="programlisting">void	ftpDataCallback			(void * userData, <br>					 const char * data, <br>					 int len)<br>
-</pre>
-<p>A callback for the <a href="libxml2-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a> command.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>the user provided context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the data received</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>its size in bytes</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="ftpListCallback"></a>Function type ftpListCallback</h3>
-<pre class="programlisting">void	ftpListCallback			(void * userData, <br>					 const char * filename, <br>					 const char * attrib, <br>					 const char * owner, <br>					 const char * group, <br>					 unsigned long size, <br>					 int links, <br>					 int year, <br>					 const char * month, <br>					 int day, <br>					 int hour, <br>					 int minute)<br>
-</pre>
-<p>A callback for the <a href="libxml2-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a> command. Note that only one of year and day:minute are specified.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>user provided data for the callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the file name (including "-&gt;" when links are shown)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attrib</tt></i>:</span></td>
-<td>the <a href="libxml2-SAX.html#attribute">attribute</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>owner</tt></i>:</span></td>
-<td>the owner string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>group</tt></i>:</span></td>
-<td>the group string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the file size</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>links</tt></i>:</span></td>
-<td>the link count</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>year</tt></i>:</span></td>
-<td>the year</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>month</tt></i>:</span></td>
-<td>the month</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>day</tt></i>:</span></td>
-<td>the day</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>hour</tt></i>:</span></td>
-<td>the hour</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>minute</tt></i>:</span></td>
-<td>the minute</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPCheckResponse"></a>xmlNanoFTPCheckResponse ()</h3>
-<pre class="programlisting">int	xmlNanoFTPCheckResponse		(void * ctx)<br>
-</pre>
-<p>Check if there is a response from the FTP server after a command.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the code number, or 0</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPCleanup"></a>xmlNanoFTPCleanup ()</h3>
-<pre class="programlisting">void	xmlNanoFTPCleanup		(void)<br>
-</pre>
-<p>Cleanup the FTP protocol layer. This cleanup proxy information.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPClose"></a>xmlNanoFTPClose ()</h3>
-<pre class="programlisting">int	xmlNanoFTPClose			(void * ctx)<br>
-</pre>
-<p>Close the connection and both control and transport</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPCloseConnection"></a>xmlNanoFTPCloseConnection ()</h3>
-<pre class="programlisting">int	xmlNanoFTPCloseConnection	(void * ctx)<br>
-</pre>
-<p>Close the data connection from the server</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPConnect"></a>xmlNanoFTPConnect ()</h3>
-<pre class="programlisting">int	xmlNanoFTPConnect		(void * ctx)<br>
-</pre>
-<p>Tries to open a control connection</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPConnectTo"></a>xmlNanoFTPConnectTo ()</h3>
-<pre class="programlisting">void *	xmlNanoFTPConnectTo		(const char * server, <br>					 int port)<br>
-</pre>
-<p>Tries to open a control connection to the given server/port</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>server</tt></i>:</span></td>
-<td>an FTP server name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>port</tt></i>:</span></td>
-<td>the port (use 21 if 0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an fTP context or NULL if it failed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPCwd"></a>xmlNanoFTPCwd ()</h3>
-<pre class="programlisting">int	xmlNanoFTPCwd			(void * ctx, <br>					 const char * directory)<br>
-</pre>
-<p>Tries to change the remote directory</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>directory</tt></i>:</span></td>
-<td>a directory on the server</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 1 if CWD worked, 0 if it failed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPDele"></a>xmlNanoFTPDele ()</h3>
-<pre class="programlisting">int	xmlNanoFTPDele			(void * ctx, <br>					 const char * file)<br>
-</pre>
-<p>Tries to delete an item (file or directory) from server</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>a file or directory on the server</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 1 if DELE worked, 0 if it failed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPFreeCtxt"></a>xmlNanoFTPFreeCtxt ()</h3>
-<pre class="programlisting">void	xmlNanoFTPFreeCtxt		(void * ctx)<br>
-</pre>
-<p>Frees the context after closing the connection.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPGet"></a>xmlNanoFTPGet ()</h3>
-<pre class="programlisting">int	xmlNanoFTPGet			(void * ctx, <br>					 <a href="libxml2-nanoftp.html#ftpDataCallback">ftpDataCallback</a> callback, <br>					 void * userData, <br>					 const char * filename)<br>
-</pre>
-<p>Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>callback</tt></i>:</span></td>
-<td>the user callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>the user callback data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the file to retrieve</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPGetConnection"></a>xmlNanoFTPGetConnection ()</h3>
-<pre class="programlisting"><a href="libxml2-nanoftp.html#SOCKET">SOCKET</a>	xmlNanoFTPGetConnection		(void * ctx)<br>
-</pre>
-<p>Try to open a data connection to the server. Currently only passive mode is supported.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPGetResponse"></a>xmlNanoFTPGetResponse ()</h3>
-<pre class="programlisting">int	xmlNanoFTPGetResponse		(void * ctx)<br>
-</pre>
-<p>Get the response from the FTP server after a command.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the code number</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPGetSocket"></a>xmlNanoFTPGetSocket ()</h3>
-<pre class="programlisting"><a href="libxml2-nanoftp.html#SOCKET">SOCKET</a>	xmlNanoFTPGetSocket		(void * ctx, <br>					 const char * filename)<br>
-</pre>
-<p>Initiate fetch of the given file from the server.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the file to retrieve (or NULL if path is in context).</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the socket for the data connection, or &lt;0 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPInit"></a>xmlNanoFTPInit ()</h3>
-<pre class="programlisting">void	xmlNanoFTPInit			(void)<br>
-</pre>
-<p>Initialize the FTP protocol layer. Currently it just checks for proxy information, and get the hostname</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPList"></a>xmlNanoFTPList ()</h3>
-<pre class="programlisting">int	xmlNanoFTPList			(void * ctx, <br>					 <a href="libxml2-nanoftp.html#ftpListCallback">ftpListCallback</a> callback, <br>					 void * userData, <br>					 const char * filename)<br>
-</pre>
-<p>Do a listing on the server. All files info are passed back in the callbacks.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>callback</tt></i>:</span></td>
-<td>the user callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>the user callback data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>optional files to list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPNewCtxt"></a>xmlNanoFTPNewCtxt ()</h3>
-<pre class="programlisting">void *	xmlNanoFTPNewCtxt		(const char * URL)<br>
-</pre>
-<p>Allocate and initialize a new FTP context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL used to initialize the context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an FTP context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPOpen"></a>xmlNanoFTPOpen ()</h3>
-<pre class="programlisting">void *	xmlNanoFTPOpen			(const char * URL)<br>
-</pre>
-<p>Start to fetch the given ftp:// resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the URL to the resource</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an FTP context, or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPProxy"></a>xmlNanoFTPProxy ()</h3>
-<pre class="programlisting">void	xmlNanoFTPProxy			(const char * host, <br>					 int port, <br>					 const char * user, <br>					 const char * passwd, <br>					 int type)<br>
-</pre>
-<p>Setup the FTP proxy information. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>host</tt></i>:</span></td>
-<td>the proxy host name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>port</tt></i>:</span></td>
-<td>the proxy port</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user</tt></i>:</span></td>
-<td>the proxy user name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>passwd</tt></i>:</span></td>
-<td>the proxy password</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the type of proxy 1 for using SITE, 2 for USER a@b</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPQuit"></a>xmlNanoFTPQuit ()</h3>
-<pre class="programlisting">int	xmlNanoFTPQuit			(void * ctx)<br>
-</pre>
-<p>Send a QUIT command to the server</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPRead"></a>xmlNanoFTPRead ()</h3>
-<pre class="programlisting">int	xmlNanoFTPRead			(void * ctx, <br>					 void * dest, <br>					 int len)<br>
-</pre>
-<p>This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.</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 FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dest</tt></i>:</span></td>
-<td>a buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the buffer length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPScanProxy"></a>xmlNanoFTPScanProxy ()</h3>
-<pre class="programlisting">void	xmlNanoFTPScanProxy		(const char * URL)<br>
-</pre>
-<p>(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 information.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The proxy URL used to initialize the proxy context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoFTPUpdateURL"></a>xmlNanoFTPUpdateURL ()</h3>
-<pre class="programlisting">int	xmlNanoFTPUpdateURL		(void * ctx, <br>					 const char * URL)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an FTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL used to update the context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if Ok, -1 in case of error (other host).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-nanohttp.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-nanohttp.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-nanohttp.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-nanohttp.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,446 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nanohttp: minimal HTTP implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-list.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-parser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">nanohttp</span></h2>
-<p>nanohttp - minimal HTTP implementation</p>
-<p>minimal HTTP implementation allowing to fetch resources like external subset. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">const char *	<a href="#xmlNanoHTTPAuthHeader">xmlNanoHTTPAuthHeader</a>	(void * ctx);
-void	<a href="#xmlNanoHTTPCleanup">xmlNanoHTTPCleanup</a>		(void);
-void	<a href="#xmlNanoHTTPClose">xmlNanoHTTPClose</a>		(void * ctx);
-int	<a href="#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a>	(void * ctx);
-const char *	<a href="#xmlNanoHTTPEncoding">xmlNanoHTTPEncoding</a>	(void * ctx);
-int	<a href="#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a>		(const char * URL, <br>					 const char * filename, <br>					 char ** contentType);
-void	<a href="#xmlNanoHTTPInit">xmlNanoHTTPInit</a>			(void);
-void *	<a href="#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a>		(const char * URL, <br>					 const char * method, <br>					 const char * input, <br>					 char ** contentType, <br>					 const char * headers, <br>					 int ilen);
-void *	<a href="#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a>		(const char * URL, <br>					 const char * method, <br>					 const char * input, <br>					 char ** contentType, <br>					 char ** redir, <br>					 const char * headers, <br>					 int ilen);
-const char *	<a href="#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a>	(void * ctx);
-void *	<a href="#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a>			(const char * URL, <br>					 char ** contentType);
-void *	<a href="#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a>		(const char * URL, <br>					 char ** contentType, <br>					 char ** redir);
-int	<a href="#xmlNanoHTTPRead">xmlNanoHTTPRead</a>			(void * ctx, <br>					 void * dest, <br>					 int len);
-const char *	<a href="#xmlNanoHTTPRedir">xmlNanoHTTPRedir</a>	(void * ctx);
-int	<a href="#xmlNanoHTTPReturnCode">xmlNanoHTTPReturnCode</a>		(void * ctx);
-int	<a href="#xmlNanoHTTPSave">xmlNanoHTTPSave</a>			(void * ctxt, <br>					 const char * filename);
-void	<a href="#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a>		(const char * URL);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPAuthHeader"></a>xmlNanoHTTPAuthHeader ()</h3>
-<pre class="programlisting">const char *	xmlNanoHTTPAuthHeader	(void * ctx)<br>
-</pre>
-<p>Get the authentication header of an HTTP context</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the stashed value of the WWW-Authenticate or Proxy-Authenticate header.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPCleanup"></a>xmlNanoHTTPCleanup ()</h3>
-<pre class="programlisting">void	xmlNanoHTTPCleanup		(void)<br>
-</pre>
-<p>Cleanup the HTTP protocol layer.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPClose"></a>xmlNanoHTTPClose ()</h3>
-<pre class="programlisting">void	xmlNanoHTTPClose		(void * ctx)<br>
-</pre>
-<p>This function closes an HTTP context, it ends up the connection and free all data related to it.</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 HTTP context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPContentLength"></a>xmlNanoHTTPContentLength ()</h3>
-<pre class="programlisting">int	xmlNanoHTTPContentLength	(void * ctx)<br>
-</pre>
-<p>Provides the specified content length from the HTTP header.</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPEncoding"></a>xmlNanoHTTPEncoding ()</h3>
-<pre class="programlisting">const char *	xmlNanoHTTPEncoding	(void * ctx)<br>
-</pre>
-<p>Provides the specified encoding if specified in the HTTP headers.</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the specified encoding or NULL if not available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPFetch"></a>xmlNanoHTTPFetch ()</h3>
-<pre class="programlisting">int	xmlNanoHTTPFetch		(const char * URL, <br>					 const char * filename, <br>					 char ** contentType)<br>
-</pre>
-<p>This function try to fetch the indicated resource via HTTP GET and save it's content in the file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename where the content should be saved</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>contentType</tt></i>:</span></td>
-<td>if available the Content-Type information will be returned at that location</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of failure, 0 in case of success. The contentType, if provided must be freed by the caller</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPInit"></a>xmlNanoHTTPInit ()</h3>
-<pre class="programlisting">void	xmlNanoHTTPInit			(void)<br>
-</pre>
-<p>Initialize the HTTP protocol layer. Currently it just checks for proxy information</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPMethod"></a>xmlNanoHTTPMethod ()</h3>
-<pre class="programlisting">void *	xmlNanoHTTPMethod		(const char * URL, <br>					 const char * method, <br>					 const char * input, <br>					 char ** contentType, <br>					 const char * headers, <br>					 int ilen)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>method</tt></i>:</span></td>
-<td>the HTTP method to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the input string if any</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>contentType</tt></i>:</span></td>
-<td>the Content-Type information IN and OUT</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>headers</tt></i>:</span></td>
-<td>the extra headers</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ilen</tt></i>:</span></td>
-<td>input length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPMethodRedir"></a>xmlNanoHTTPMethodRedir ()</h3>
-<pre class="programlisting">void *	xmlNanoHTTPMethodRedir		(const char * URL, <br>					 const char * method, <br>					 const char * input, <br>					 char ** contentType, <br>					 char ** redir, <br>					 const char * headers, <br>					 int ilen)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>method</tt></i>:</span></td>
-<td>the HTTP method to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the input string if any</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>contentType</tt></i>:</span></td>
-<td>the Content-Type information IN and OUT</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>redir</tt></i>:</span></td>
-<td>the redirected URL OUT</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>headers</tt></i>:</span></td>
-<td>the extra headers</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ilen</tt></i>:</span></td>
-<td>input length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL in case of failure, otherwise a request handler. The contentType, or redir, if provided must be freed by the caller</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPMimeType"></a>xmlNanoHTTPMimeType ()</h3>
-<pre class="programlisting">const char *	xmlNanoHTTPMimeType	(void * ctx)<br>
-</pre>
-<p>Provides the specified Mime-Type if specified in the HTTP headers.</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the specified Mime-Type or NULL if not available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPOpen"></a>xmlNanoHTTPOpen ()</h3>
-<pre class="programlisting">void *	xmlNanoHTTPOpen			(const char * URL, <br>					 char ** contentType)<br>
-</pre>
-<p>This function try to open a connection to the indicated resource via HTTP GET.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>contentType</tt></i>:</span></td>
-<td>if available the Content-Type information will be returned at that location</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPOpenRedir"></a>xmlNanoHTTPOpenRedir ()</h3>
-<pre class="programlisting">void *	xmlNanoHTTPOpenRedir		(const char * URL, <br>					 char ** contentType, <br>					 char ** redir)<br>
-</pre>
-<p>This function try to open a connection to the indicated resource via HTTP GET.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>contentType</tt></i>:</span></td>
-<td>if available the Content-Type information will be returned at that location</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>redir</tt></i>:</span></td>
-<td>if available the redirected URL will be returned</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPRead"></a>xmlNanoHTTPRead ()</h3>
-<pre class="programlisting">int	xmlNanoHTTPRead			(void * ctx, <br>					 void * dest, <br>					 int len)<br>
-</pre>
-<p>This function tries to read @len bytes from the existing HTTP connection and saves them in @dest. This is a blocking call.</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dest</tt></i>:</span></td>
-<td>a buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the buffer length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPRedir"></a>xmlNanoHTTPRedir ()</h3>
-<pre class="programlisting">const char *	xmlNanoHTTPRedir	(void * ctx)<br>
-</pre>
-<p>Provides the specified redirection URL if available from the HTTP header.</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the specified redirection URL or NULL if not redirected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPReturnCode"></a>xmlNanoHTTPReturnCode ()</h3>
-<pre class="programlisting">int	xmlNanoHTTPReturnCode		(void * ctx)<br>
-</pre>
-<p>Get the latest HTTP return code received</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 HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the HTTP return code for the request.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPSave"></a>xmlNanoHTTPSave ()</h3>
-<pre class="programlisting">int	xmlNanoHTTPSave			(void * ctxt, <br>					 const char * filename)<br>
-</pre>
-<p>This function saves the output of the HTTP transaction to a file It closes and free the context at the end</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the HTTP context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename where the content should be saved</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of failure, 0 in case of success.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNanoHTTPScanProxy"></a>xmlNanoHTTPScanProxy ()</h3>
-<pre class="programlisting">void	xmlNanoHTTPScanProxy		(const char * URL)<br>
-</pre>
-<p>(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 information.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The proxy URL used to initialize the proxy context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-parser.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-parser.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-parser.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-parser.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,4179 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>parser: the core parser module</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-nanohttp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-parserInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">parser</span></h2>
-<p>parser - the core parser module</p>
-<p>Interfaces, constants and types related to the XML parser </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a>;
-#define <a href="#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a>;
-typedef struct _xmlAttrHashBucket <a href="#xmlAttrHashBucket">xmlAttrHashBucket</a>;
-typedef enum <a href="#xmlFeature">xmlFeature</a>;
-typedef enum <a href="#xmlParserInputFlags">xmlParserInputFlags</a>;
-typedef enum <a href="#xmlParserInputState">xmlParserInputState</a>;
-typedef enum <a href="#xmlParserMode">xmlParserMode</a>;
-typedef struct _xmlParserNodeInfo <a href="#xmlParserNodeInfo">xmlParserNodeInfo</a>;
-typedef <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> * <a href="#xmlParserNodeInfoPtr">xmlParserNodeInfoPtr</a>;
-typedef struct _xmlParserNodeInfoSeq <a href="#xmlParserNodeInfoSeq">xmlParserNodeInfoSeq</a>;
-typedef <a href="libxml2-parser.html#xmlParserNodeInfoSeq">xmlParserNodeInfoSeq</a> * <a href="#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a>;
-typedef struct _xmlParserNsData <a href="#xmlParserNsData">xmlParserNsData</a>;
-typedef enum <a href="#xmlParserOption">xmlParserOption</a>;
-typedef enum <a href="#xmlParserStatus">xmlParserStatus</a>;
-typedef enum <a href="#xmlResourceType">xmlResourceType</a>;
-typedef struct _xmlSAXHandlerV1 <a href="#xmlSAXHandlerV1">xmlSAXHandlerV1</a>;
-typedef <a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * <a href="#xmlSAXHandlerV1Ptr">xmlSAXHandlerV1Ptr</a>;
-typedef struct _xmlStartTag <a href="#xmlStartTag">xmlStartTag</a>;
-typedef void <a href="#attributeDeclSAXFunc">attributeDeclSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree);
-typedef void <a href="#attributeSAXFunc">attributeSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-typedef void <a href="#cdataBlockSAXFunc">cdataBlockSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len);
-typedef void <a href="#charactersSAXFunc">charactersSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-typedef void <a href="#commentSAXFunc">commentSAXFunc</a>			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-typedef void <a href="#elementDeclSAXFunc">elementDeclSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content);
-typedef void <a href="#endDocumentSAXFunc">endDocumentSAXFunc</a>		(void * ctx);
-typedef void <a href="#endElementNsSAX2Func">endElementNsSAX2Func</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI);
-typedef void <a href="#endElementSAXFunc">endElementSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-typedef void <a href="#entityDeclSAXFunc">entityDeclSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-typedef void <a href="#errorSAXFunc">errorSAXFunc</a>			(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef void <a href="#externalSubsetSAXFunc">externalSubsetSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-typedef void <a href="#fatalErrorSAXFunc">fatalErrorSAXFunc</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#getEntitySAXFunc">getEntitySAXFunc</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-typedef <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> <a href="#getParameterEntitySAXFunc">getParameterEntitySAXFunc</a>	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-typedef int <a href="#hasExternalSubsetSAXFunc">hasExternalSubsetSAXFunc</a>	(void * ctx);
-typedef int <a href="#hasInternalSubsetSAXFunc">hasInternalSubsetSAXFunc</a>	(void * ctx);
-typedef void <a href="#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len);
-typedef void <a href="#internalSubsetSAXFunc">internalSubsetSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-typedef int <a href="#isStandaloneSAXFunc">isStandaloneSAXFunc</a>		(void * ctx);
-typedef void <a href="#notationDeclSAXFunc">notationDeclSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-typedef void <a href="#processingInstructionSAXFunc">processingInstructionSAXFunc</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data);
-typedef void <a href="#referenceSAXFunc">referenceSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-typedef <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> <a href="#resolveEntitySAXFunc">resolveEntitySAXFunc</a>	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-typedef void <a href="#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a>	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc);
-typedef void <a href="#startDocumentSAXFunc">startDocumentSAXFunc</a>		(void * ctx);
-typedef void <a href="#startElementNsSAX2Func">startElementNsSAX2Func</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 int nb_namespaces, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 int nb_attributes, <br>					 int nb_defaulted, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** attributes);
-typedef void <a href="#startElementSAXFunc">startElementSAXFunc</a>		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts);
-typedef void <a href="#unparsedEntityDeclSAXFunc">unparsedEntityDeclSAXFunc</a>	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName);
-typedef void <a href="#warningSAXFunc">warningSAXFunc</a>			(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-long	<a href="#xmlByteConsumed">xmlByteConsumed</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlCleanupGlobals">xmlCleanupGlobals</a>		(void);
-void	<a href="#xmlCleanupParser">xmlCleanupParser</a>		(void);
-void	<a href="#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a>		(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq);
-void	<a href="#xmlClearParserCtxt">xmlClearParserCtxt</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateDocParserCtxt">xmlCreateDocParserCtxt</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateIOParserCtxt">xmlCreateIOParserCtxt</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>						 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>						 void * ioctx, <br>						 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 const char * chunk, <br>						 int size, <br>						 const char * filename);
-void *	<a href="#xmlCtxtGetCatalogs">xmlCtxtGetCatalogs</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCtxtGetDeclaredEncoding">xmlCtxtGetDeclaredEncoding</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlCtxtGetDict">xmlCtxtGetDict</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtGetDocument">xmlCtxtGetDocument</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtGetOptions">xmlCtxtGetOptions</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void *	<a href="#xmlCtxtGetPrivate">xmlCtxtGetPrivate</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> *	<a href="#xmlCtxtGetSaxHandler">xmlCtxtGetSaxHandler</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtGetStandalone">xmlCtxtGetStandalone</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-parser.html#xmlParserStatus">xmlParserStatus</a>	<a href="#xmlCtxtGetStatus">xmlCtxtGetStatus</a>	(<a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> * ctxt);
-<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	<a href="#xmlCtxtGetValidCtxt">xmlCtxtGetValidCtxt</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCtxtGetVersion">xmlCtxtGetVersion</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtIsHtml">xmlCtxtIsHtml</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtIsStopped">xmlCtxtIsStopped</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlCtxtParseContent">xmlCtxtParseContent</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int hasTextDecl);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtParseDocument">xmlCtxtParseDocument</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlCtxtParseDtd">xmlCtxtParseDtd</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtReadDoc">xmlCtxtReadDoc</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtReadFd">xmlCtxtReadFd</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtReadFile">xmlCtxtReadFile</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtReadIO">xmlCtxtReadIO</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCtxtReadMemory">xmlCtxtReadMemory</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-void	<a href="#xmlCtxtReset">xmlCtxtReset</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtResetPush">xmlCtxtResetPush</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 const char * filename, <br>					 const char * encoding);
-void	<a href="#xmlCtxtSetCatalogs">xmlCtxtSetCatalogs</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 void * catalogs);
-void	<a href="#xmlCtxtSetCharEncConvImpl">xmlCtxtSetCharEncConvImpl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncConvImpl">xmlCharEncConvImpl</a> impl, <br>					 void * vctxt);
-void	<a href="#xmlCtxtSetDict">xmlCtxtSetDict</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict);
-void	<a href="#xmlCtxtSetErrorHandler">xmlCtxtSetErrorHandler</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data);
-void	<a href="#xmlCtxtSetMaxAmplification">xmlCtxtSetMaxAmplification</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 unsigned maxAmpl);
-int	<a href="#xmlCtxtSetOptions">xmlCtxtSetOptions</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options);
-void	<a href="#xmlCtxtSetPrivate">xmlCtxtSetPrivate</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 void * priv);
-void	<a href="#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * vctxt);
-int	<a href="#xmlCtxtSetSaxHandler">xmlCtxtSetSaxHandler</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax);
-int	<a href="#xmlCtxtUseOptions">xmlCtxtUseOptions</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options);
-int	<a href="#xmlCtxtValidateDocument">xmlCtxtValidateDocument</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlCtxtValidateDtd">xmlCtxtValidateDtd</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd);
-typedef <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> <a href="#xmlExternalEntityLoader">xmlExternalEntityLoader</a>	(const char * URL, <br>						 const char * ID, <br>						 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> context);
-void	<a href="#xmlFreeParserCtxt">xmlFreeParserCtxt</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a>	<a href="#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a>	(void);
-int	<a href="#xmlHasFeature">xmlHasFeature</a>			(<a href="libxml2-parser.html#xmlFeature">xmlFeature</a> feature);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlIOParseDTD">xmlIOParseDTD</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-void	<a href="#xmlInitGlobals">xmlInitGlobals</a>			(void);
-void	<a href="#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a>		(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq);
-void	<a href="#xmlInitParser">xmlInitParser</a>			(void);
-int	<a href="#xmlInitParserCtxt">xmlInitParserCtxt</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlInputSetEncodingHandler">xmlInputSetEncodingHandler</a>	(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);
-int	<a href="#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a>		(int val);
-int	<a href="#xmlLineNumbersDefault">xmlLineNumbersDefault</a>		(int val);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlLoadExternalEntity">xmlLoadExternalEntity</a>	(const char * URL, <br>						 const char * ID, <br>						 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewIOInputStream">xmlNewIOInputStream</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> buf, <br>						 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputFromFd">xmlNewInputFromFd</a>	(const char * url, <br>						 int fd, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputFromIO">xmlNewInputFromIO</a>	(const char * url, <br>						 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioRead, <br>						 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioClose, <br>						 void * ioCtxt, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputFromMemory">xmlNewInputFromMemory</a>	(const char * url, <br>						 const void * mem, <br>						 size_t size, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputFromString">xmlNewInputFromString</a>	(const char * url, <br>						 const char * str, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlNewInputFromUrl">xmlNewInputFromUrl</a>	(const char * filename, <br>					 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> * out);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlNewParserCtxt">xmlNewParserCtxt</a>	(void);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a>	(const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax, <br>						 void * userData);
-int	<a href="#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 int depth, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * lst);
-int	<a href="#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 int depth, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut, <br>						 int recover);
-int	<a href="#xmlParseChunk">xmlParseChunk</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 int terminate);
-int	<a href="#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlParseDTD">xmlParseDTD</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseDoc">xmlParseDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur);
-int	<a href="#xmlParseDocument">xmlParseDocument</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseEntity">xmlParseEntity</a>		(const char * filename);
-int	<a href="#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlParseExternalEntity">xmlParseExternalEntity</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 int depth, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * list);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseFile">xmlParseFile</a>		(const char * filename);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlParseInNodeContext">xmlParseInNodeContext</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const char * data, <br>					 int datalen, <br>					 int options, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseMemory">xmlParseMemory</a>		(const char * buffer, <br>					 int size);
-void	<a href="#xmlParserAddNodeInfo">xmlParserAddNodeInfo</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlParserNodeInfoPtr">xmlParserNodeInfoPtr</a> info);
-const <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> *	<a href="#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctx, <br>							 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-unsigned long	<a href="#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a>	(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-typedef void <a href="#xmlParserInputDeallocate">xmlParserInputDeallocate</a>	(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-int	<a href="#xmlParserInputGrow">xmlParserInputGrow</a>		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br>					 int len);
-int	<a href="#xmlParserInputRead">xmlParserInputRead</a>		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br>					 int len);
-int	<a href="#xmlPedanticParserDefault">xmlPedanticParserDefault</a>	(int val);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlReadDoc">xmlReadDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlReadFd">xmlReadFd</a>		(int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlReadFile">xmlReadFile</a>		(const char * filename, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlReadIO">xmlReadIO</a>		(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlReadMemory">xmlReadMemory</a>		(const char * buffer, <br>					 int size, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlRecoverDoc">xmlRecoverDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlRecoverFile">xmlRecoverFile</a>		(const char * filename);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlRecoverMemory">xmlRecoverMemory</a>	(const char * buffer, <br>					 int size);
-typedef <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> <a href="#xmlResourceLoader">xmlResourceLoader</a>	(void * ctxt, <br>					 const char * url, <br>					 const char * publicId, <br>					 <a href="libxml2-parser.html#xmlResourceType">xmlResourceType</a> type, <br>					 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> * out);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlSAXParseDTD">xmlSAXParseDTD</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseDoc">xmlSAXParseDoc</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int recovery);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseEntity">xmlSAXParseEntity</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseFile">xmlSAXParseFile</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename, <br>					 int recovery);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename, <br>					 int recovery, <br>					 void * data);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseMemory">xmlSAXParseMemory</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * buffer, <br>					 int size, <br>					 int recovery);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a>	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 const char * buffer, <br>						 int size, <br>						 int recovery, <br>						 void * data);
-int	<a href="#xmlSAXUserParseFile">xmlSAXUserParseFile</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 const char * filename);
-int	<a href="#xmlSAXUserParseMemory">xmlSAXUserParseMemory</a>		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 const char * buffer, <br>					 int size);
-void	<a href="#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a>	(<a href="libxml2-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a> f);
-void	<a href="#xmlSetupParserForBuffer">xmlSetupParserForBuffer</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buffer, <br>					 const char * filename);
-void	<a href="#xmlStopParser">xmlStopParser</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a>	(int val);
-int	<a href="#xmlThrDefDoValidityCheckingDefaultValue">xmlThrDefDoValidityCheckingDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefGetWarningsDefaultValue">xmlThrDefGetWarningsDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefKeepBlanksDefaultValue">xmlThrDefKeepBlanksDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefLineNumbersDefaultValue">xmlThrDefLineNumbersDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefLoadExtDtdDefaultValue">xmlThrDefLoadExtDtdDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefPedanticParserDefaultValue">xmlThrDefPedanticParserDefaultValue</a>	(int v);
-int	<a href="#xmlThrDefSubstituteEntitiesDefaultValue">xmlThrDefSubstituteEntitiesDefaultValue</a>	(int v);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_DEFAULT_VERSION">Macro </a>XML_DEFAULT_VERSION</h3>
-<pre class="programlisting">#define <a href="#XML_DEFAULT_VERSION">XML_DEFAULT_VERSION</a>;
-</pre>
-<p>The default version of XML used: 1.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SAX2_MAGIC">Macro </a>XML_SAX2_MAGIC</h3>
-<pre class="programlisting">#define <a href="#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a>;
-</pre>
-<p>Special constant found in SAX2 blocks initialized fields</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttrHashBucket">Structure </a>xmlAttrHashBucket</h3>
-<pre class="programlisting">struct _xmlAttrHashBucket {
-The content of this structure is not made public by the API.
-} xmlAttrHashBucket;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFeature">Enum </a>xmlFeature</h3>
-<pre class="programlisting">enum <a href="#xmlFeature">xmlFeature</a> {
-    <a name="XML_WITH_THREAD">XML_WITH_THREAD</a> = 1
-    <a name="XML_WITH_TREE">XML_WITH_TREE</a> = 2
-    <a name="XML_WITH_OUTPUT">XML_WITH_OUTPUT</a> = 3
-    <a name="XML_WITH_PUSH">XML_WITH_PUSH</a> = 4
-    <a name="XML_WITH_READER">XML_WITH_READER</a> = 5
-    <a name="XML_WITH_PATTERN">XML_WITH_PATTERN</a> = 6
-    <a name="XML_WITH_WRITER">XML_WITH_WRITER</a> = 7
-    <a name="XML_WITH_SAX1">XML_WITH_SAX1</a> = 8
-    <a name="XML_WITH_FTP">XML_WITH_FTP</a> = 9
-    <a name="XML_WITH_HTTP">XML_WITH_HTTP</a> = 10
-    <a name="XML_WITH_VALID">XML_WITH_VALID</a> = 11
-    <a name="XML_WITH_HTML">XML_WITH_HTML</a> = 12
-    <a name="XML_WITH_LEGACY">XML_WITH_LEGACY</a> = 13
-    <a name="XML_WITH_C14N">XML_WITH_C14N</a> = 14
-    <a name="XML_WITH_CATALOG">XML_WITH_CATALOG</a> = 15
-    <a name="XML_WITH_XPATH">XML_WITH_XPATH</a> = 16
-    <a name="XML_WITH_XPTR">XML_WITH_XPTR</a> = 17
-    <a name="XML_WITH_XINCLUDE">XML_WITH_XINCLUDE</a> = 18
-    <a name="XML_WITH_ICONV">XML_WITH_ICONV</a> = 19
-    <a name="XML_WITH_ISO8859X">XML_WITH_ISO8859X</a> = 20
-    <a name="XML_WITH_UNICODE">XML_WITH_UNICODE</a> = 21
-    <a name="XML_WITH_REGEXP">XML_WITH_REGEXP</a> = 22
-    <a name="XML_WITH_AUTOMATA">XML_WITH_AUTOMATA</a> = 23
-    <a name="XML_WITH_EXPR">XML_WITH_EXPR</a> = 24
-    <a name="XML_WITH_SCHEMAS">XML_WITH_SCHEMAS</a> = 25
-    <a name="XML_WITH_SCHEMATRON">XML_WITH_SCHEMATRON</a> = 26
-    <a name="XML_WITH_MODULES">XML_WITH_MODULES</a> = 27
-    <a name="XML_WITH_DEBUG">XML_WITH_DEBUG</a> = 28
-    <a name="XML_WITH_DEBUG_MEM">XML_WITH_DEBUG_MEM</a> = 29
-    <a name="XML_WITH_DEBUG_RUN">XML_WITH_DEBUG_RUN</a> = 30 /* unused */
-    <a name="XML_WITH_ZLIB">XML_WITH_ZLIB</a> = 31
-    <a name="XML_WITH_ICU">XML_WITH_ICU</a> = 32
-    <a name="XML_WITH_LZMA">XML_WITH_LZMA</a> = 33
-    <a name="XML_WITH_RELAXNG">XML_WITH_RELAXNG</a> = 34 /* since 2.14.0 */
-    <a name="XML_WITH_NONE">XML_WITH_NONE</a> = 99999 /*  just to be sure of allocation size */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputFlags">Enum </a>xmlParserInputFlags</h3>
-<pre class="programlisting">enum <a href="#xmlParserInputFlags">xmlParserInputFlags</a> {
-    <a name="XML_INPUT_BUF_STATIC">XML_INPUT_BUF_STATIC</a> = 2
-    <a name="XML_INPUT_BUF_ZERO_TERMINATED">XML_INPUT_BUF_ZERO_TERMINATED</a> = 4
-    <a name="XML_INPUT_UNZIP">XML_INPUT_UNZIP</a> = 8
-    <a name="XML_INPUT_NETWORK">XML_INPUT_NETWORK</a> = 16
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputState">Enum </a>xmlParserInputState</h3>
-<pre class="programlisting">enum <a href="#xmlParserInputState">xmlParserInputState</a> {
-    <a name="XML_PARSER_EOF">XML_PARSER_EOF</a> = -1 /* nothing is to be parsed */
-    <a name="XML_PARSER_START">XML_PARSER_START</a> = 0 /* nothing has been parsed */
-    <a name="XML_PARSER_MISC">XML_PARSER_MISC</a> = 1 /* Misc* before int subset */
-    <a name="XML_PARSER_PI">XML_PARSER_PI</a> = 2 /* Within a processing instruction */
-    <a name="XML_PARSER_DTD">XML_PARSER_DTD</a> = 3 /* within some DTD content */
-    <a name="XML_PARSER_PROLOG">XML_PARSER_PROLOG</a> = 4 /* Misc* after internal subset */
-    <a name="XML_PARSER_COMMENT">XML_PARSER_COMMENT</a> = 5 /* within a comment */
-    <a name="XML_PARSER_START_TAG">XML_PARSER_START_TAG</a> = 6 /* within a start tag */
-    <a name="XML_PARSER_CONTENT">XML_PARSER_CONTENT</a> = 7 /* within the content */
-    <a name="XML_PARSER_CDATA_SECTION">XML_PARSER_CDATA_SECTION</a> = 8 /* within a CDATA section */
-    <a name="XML_PARSER_END_TAG">XML_PARSER_END_TAG</a> = 9 /* within a closing tag */
-    <a name="XML_PARSER_ENTITY_DECL">XML_PARSER_ENTITY_DECL</a> = 10 /* within an entity declaration */
-    <a name="XML_PARSER_ENTITY_VALUE">XML_PARSER_ENTITY_VALUE</a> = 11 /* within an entity value in a decl */
-    <a name="XML_PARSER_ATTRIBUTE_VALUE">XML_PARSER_ATTRIBUTE_VALUE</a> = 12 /* within an attribute value */
-    <a name="XML_PARSER_SYSTEM_LITERAL">XML_PARSER_SYSTEM_LITERAL</a> = 13 /* within a SYSTEM value */
-    <a name="XML_PARSER_EPILOG">XML_PARSER_EPILOG</a> = 14 /* the Misc* after the last end tag */
-    <a name="XML_PARSER_IGNORE">XML_PARSER_IGNORE</a> = 15 /* within an IGNORED section */
-    <a name="XML_PARSER_PUBLIC_LITERAL">XML_PARSER_PUBLIC_LITERAL</a> = 16 /* within a PUBLIC value */
-    <a name="XML_PARSER_XML_DECL">XML_PARSER_XML_DECL</a> = 17 /*  before XML decl (but after BOM) */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserMode">Enum </a>xmlParserMode</h3>
-<pre class="programlisting">enum <a href="#xmlParserMode">xmlParserMode</a> {
-    <a name="XML_PARSE_UNKNOWN">XML_PARSE_UNKNOWN</a> = 0
-    <a name="XML_PARSE_DOM">XML_PARSE_DOM</a> = 1
-    <a name="XML_PARSE_SAX">XML_PARSE_SAX</a> = 2
-    <a name="XML_PARSE_PUSH_DOM">XML_PARSE_PUSH_DOM</a> = 3
-    <a name="XML_PARSE_PUSH_SAX">XML_PARSE_PUSH_SAX</a> = 4
-    <a name="XML_PARSE_READER">XML_PARSE_READER</a> = 5
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserNodeInfo">Structure </a>xmlParserNodeInfo</h3>
-<pre class="programlisting">struct _xmlParserNodeInfo {
-    const struct _xmlNode *	node
-    unsigned long	begin_pos
-    unsigned long	begin_line
-    unsigned long	end_pos
-    unsigned long	end_line
-} xmlParserNodeInfo;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserNodeInfoPtr">Typedef </a>xmlParserNodeInfoPtr</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> * xmlParserNodeInfoPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserNodeInfoSeq">Structure </a>xmlParserNodeInfoSeq</h3>
-<pre class="programlisting">struct _xmlParserNodeInfoSeq {
-    unsigned long	maximum
-    unsigned long	length
-    <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> *	buffer
-} xmlParserNodeInfoSeq;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserNodeInfoSeqPtr">Typedef </a>xmlParserNodeInfoSeqPtr</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlParserNodeInfoSeq">xmlParserNodeInfoSeq</a> * xmlParserNodeInfoSeqPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserNsData">Structure </a>xmlParserNsData</h3>
-<pre class="programlisting">struct _xmlParserNsData {
-The content of this structure is not made public by the API.
-} xmlParserNsData;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserOption">Enum </a>xmlParserOption</h3>
-<pre class="programlisting">enum <a href="#xmlParserOption">xmlParserOption</a> {
-    <a name="XML_PARSE_RECOVER">XML_PARSE_RECOVER</a> = 1 /* recover on errors */
-    <a name="XML_PARSE_NOENT">XML_PARSE_NOENT</a> = 2 /* substitute entities */
-    <a name="XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a> = 4 /* load the external subset */
-    <a name="XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a> = 8 /* default DTD attributes */
-    <a name="XML_PARSE_DTDVALID">XML_PARSE_DTDVALID</a> = 16 /* validate with the DTD */
-    <a name="XML_PARSE_NOERROR">XML_PARSE_NOERROR</a> = 32 /* suppress error reports */
-    <a name="XML_PARSE_NOWARNING">XML_PARSE_NOWARNING</a> = 64 /* suppress warning reports */
-    <a name="XML_PARSE_PEDANTIC">XML_PARSE_PEDANTIC</a> = 128 /* pedantic error reporting */
-    <a name="XML_PARSE_NOBLANKS">XML_PARSE_NOBLANKS</a> = 256 /* remove blank nodes */
-    <a name="XML_PARSE_SAX1">XML_PARSE_SAX1</a> = 512 /* use the SAX1 interface internally */
-    <a name="XML_PARSE_XINCLUDE">XML_PARSE_XINCLUDE</a> = 1024 /* Implement XInclude substitution */
-    <a name="XML_PARSE_NONET">XML_PARSE_NONET</a> = 2048 /* Forbid network access */
-    <a name="XML_PARSE_NODICT">XML_PARSE_NODICT</a> = 4096 /* Do not reuse the context dictionary */
-    <a name="XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a> = 8192 /* remove redundant namespaces declarations */
-    <a name="XML_PARSE_NOCDATA">XML_PARSE_NOCDATA</a> = 16384 /* merge CDATA as text nodes */
-    <a name="XML_PARSE_NOXINCNODE">XML_PARSE_NOXINCNODE</a> = 32768 /* do not generate XINCLUDE START/END nodes */
-    <a name="XML_PARSE_COMPACT">XML_PARSE_COMPACT</a> = 65536 /* compact small text nodes; no modification of the tree allowed afterwards (will possibly crash if you try to modify the tree) */
-    <a name="XML_PARSE_OLD10">XML_PARSE_OLD10</a> = 131072 /* parse using XML-1.0 before update 5 */
-    <a name="XML_PARSE_NOBASEFIX">XML_PARSE_NOBASEFIX</a> = 262144 /* do not fixup XINCLUDE xml:base uris */
-    <a name="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 /* relax any hardcoded limit from the parser */
-    <a name="XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> = 1048576 /* parse using SAX2 interface before 2.7.0 */
-    <a name="XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> = 2097152 /* ignore internal document encoding hint */
-    <a name="XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> = 4194304 /* Store big lines numbers in text PSVI field since 2.13.0 */
-    <a name="XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a> = 8388608 /* disable loading of external content since 2.14.0 */
-    <a name="XML_PARSE_UNZIP">XML_PARSE_UNZIP</a> = 16777216 /* allow compressed content */
-    <a name="XML_PARSE_NO_SYS_CATALOG">XML_PARSE_NO_SYS_CATALOG</a> = 33554432 /* disable global system catalog */
-    <a name="XML_PARSE_CATALOG_PI">XML_PARSE_CATALOG_PI</a> = 67108864 /*  allow catalog PIs */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserStatus">Enum </a>xmlParserStatus</h3>
-<pre class="programlisting">enum <a href="#xmlParserStatus">xmlParserStatus</a> {
-    <a name="XML_STATUS_NOT_WELL_FORMED">XML_STATUS_NOT_WELL_FORMED</a> = 1
-    <a name="XML_STATUS_NOT_NS_WELL_FORMED">XML_STATUS_NOT_NS_WELL_FORMED</a> = 2
-    <a name="XML_STATUS_DTD_VALIDATION_FAILED">XML_STATUS_DTD_VALIDATION_FAILED</a> = 4
-    <a name="XML_STATUS_CATASTROPHIC_ERROR">XML_STATUS_CATASTROPHIC_ERROR</a> = 8
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlResourceType">Enum </a>xmlResourceType</h3>
-<pre class="programlisting">enum <a href="#xmlResourceType">xmlResourceType</a> {
-    <a name="XML_RESOURCE_UNKNOWN">XML_RESOURCE_UNKNOWN</a> = 0
-    <a name="XML_RESOURCE_MAIN_DOCUMENT">XML_RESOURCE_MAIN_DOCUMENT</a> = 1
-    <a name="XML_RESOURCE_DTD">XML_RESOURCE_DTD</a> = 2
-    <a name="XML_RESOURCE_GENERAL_ENTITY">XML_RESOURCE_GENERAL_ENTITY</a> = 3
-    <a name="XML_RESOURCE_PARAMETER_ENTITY">XML_RESOURCE_PARAMETER_ENTITY</a> = 4
-    <a name="XML_RESOURCE_XINCLUDE">XML_RESOURCE_XINCLUDE</a> = 5
-    <a name="XML_RESOURCE_XINCLUDE_TEXT">XML_RESOURCE_XINCLUDE_TEXT</a> = 6
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXHandlerV1">Structure </a>xmlSAXHandlerV1</h3>
-<pre class="programlisting">struct _xmlSAXHandlerV1 {
-    <a href="libxml2-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a>	internalSubset
-    <a href="libxml2-parser.html#isStandaloneSAXFunc">isStandaloneSAXFunc</a>	isStandalone
-    <a href="libxml2-parser.html#hasInternalSubsetSAXFunc">hasInternalSubsetSAXFunc</a>	hasInternalSubset
-    <a href="libxml2-parser.html#hasExternalSubsetSAXFunc">hasExternalSubsetSAXFunc</a>	hasExternalSubset
-    <a href="libxml2-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a>	resolveEntity
-    <a href="libxml2-parser.html#getEntitySAXFunc">getEntitySAXFunc</a>	getEntity
-    <a href="libxml2-parser.html#entityDeclSAXFunc">entityDeclSAXFunc</a>	entityDecl
-    <a href="libxml2-parser.html#notationDeclSAXFunc">notationDeclSAXFunc</a>	notationDecl
-    <a href="libxml2-parser.html#attributeDeclSAXFunc">attributeDeclSAXFunc</a>	attributeDecl
-    <a href="libxml2-parser.html#elementDeclSAXFunc">elementDeclSAXFunc</a>	elementDecl
-    <a href="libxml2-parser.html#unparsedEntityDeclSAXFunc">unparsedEntityDeclSAXFunc</a>	unparsedEntityDecl
-    <a href="libxml2-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a>	setDocumentLocator
-    <a href="libxml2-parser.html#startDocumentSAXFunc">startDocumentSAXFunc</a>	startDocument
-    <a href="libxml2-parser.html#endDocumentSAXFunc">endDocumentSAXFunc</a>	endDocument
-    <a href="libxml2-parser.html#startElementSAXFunc">startElementSAXFunc</a>	startElement
-    <a href="libxml2-parser.html#endElementSAXFunc">endElementSAXFunc</a>	endElement
-    <a href="libxml2-parser.html#referenceSAXFunc">referenceSAXFunc</a>	reference
-    <a href="libxml2-parser.html#charactersSAXFunc">charactersSAXFunc</a>	characters
-    <a href="libxml2-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a>	ignorableWhitespace
-    <a href="libxml2-parser.html#processingInstructionSAXFunc">processingInstructionSAXFunc</a>	processingInstruction
-    <a href="libxml2-parser.html#commentSAXFunc">commentSAXFunc</a>	comment
-    <a href="libxml2-parser.html#warningSAXFunc">warningSAXFunc</a>	warning
-    <a href="libxml2-parser.html#errorSAXFunc">errorSAXFunc</a>	error
-    <a href="libxml2-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a>	fatalError
-    <a href="libxml2-parser.html#getParameterEntitySAXFunc">getParameterEntitySAXFunc</a>	getParameterEntity
-    <a href="libxml2-parser.html#cdataBlockSAXFunc">cdataBlockSAXFunc</a>	cdataBlock
-    <a href="libxml2-parser.html#externalSubsetSAXFunc">externalSubsetSAXFunc</a>	externalSubset
-    unsigned int	initialized
-} xmlSAXHandlerV1;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXHandlerV1Ptr">Typedef </a>xmlSAXHandlerV1Ptr</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlSAXHandlerV1">xmlSAXHandlerV1</a> * xmlSAXHandlerV1Ptr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStartTag">Structure </a>xmlStartTag</h3>
-<pre class="programlisting">struct _xmlStartTag {
-The content of this structure is not made public by the API.
-} xmlStartTag;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="attributeDeclSAXFunc"></a>Function type attributeDeclSAXFunc</h3>
-<pre class="programlisting">void	attributeDeclSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * fullname, <br>					 int type, <br>					 int def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree)<br>
-</pre>
-<p>An attribute definition has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fullname</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the attribute type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>def</tt></i>:</span></td>
-<td>the type of default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>defaultValue</tt></i>:</span></td>
-<td>the attribute default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>the tree of enumerated value set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="attributeSAXFunc"></a>Function type attributeSAXFunc</h3>
-<pre class="programlisting">void	attributeSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>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 <a href="libxml2-tree.html#xmlAttr">xmlAttr</a> element added to the element.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The attribute name, including namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>The attribute value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="cdataBlockSAXFunc"></a>Function type cdataBlockSAXFunc</h3>
-<pre class="programlisting">void	cdataBlockSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len)<br>
-</pre>
-<p>Called when a pcdata block has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>The pcdata content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the block length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="charactersSAXFunc"></a>Function type charactersSAXFunc</h3>
-<pre class="programlisting">void	charactersSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>Receiving some chars from the parser.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="commentSAXFunc"></a>Function type commentSAXFunc</h3>
-<pre class="programlisting">void	commentSAXFunc			(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>A comment has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the comment content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="elementDeclSAXFunc"></a>Function type elementDeclSAXFunc</h3>
-<pre class="programlisting">void	elementDeclSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content)<br>
-</pre>
-<p>An element definition has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the element type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the element value tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="endDocumentSAXFunc"></a>Function type endDocumentSAXFunc</h3>
-<pre class="programlisting">void	endDocumentSAXFunc		(void * ctx)<br>
-</pre>
-<p>Called when the document end has been detected.</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="endElementNsSAX2Func"></a>Function type endElementNsSAX2Func</h3>
-<pre class="programlisting">void	endElementNsSAX2Func		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI)<br>
-</pre>
-<p>SAX2 callback when an element end has been detected by the parser. It provides the namespace information for the element.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localname</tt></i>:</span></td>
-<td>the local name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the element namespace prefix if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the element namespace name if available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="endElementSAXFunc"></a>Function type endElementSAXFunc</h3>
-<pre class="programlisting">void	endElementSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Called when the end of an element has been detected.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The element name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="entityDeclSAXFunc"></a>Function type entityDeclSAXFunc</h3>
-<pre class="programlisting">void	entityDeclSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>An entity definition has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the entity type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the entity value (without processing).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="errorSAXFunc"></a>Function type errorSAXFunc</h3>
-<pre class="programlisting">void	errorSAXFunc			(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format an error messages, callback.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="externalSubsetSAXFunc"></a>Function type externalSubsetSAXFunc</h3>
-<pre class="programlisting">void	externalSubsetSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on external subset declaration.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="fatalErrorSAXFunc"></a>Function type fatalErrorSAXFunc</h3>
-<pre class="programlisting">void	fatalErrorSAXFunc		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format fatal error messages, callback. Note: so far fatalError() SAX callbacks are not used, error() get all the callbacks for errors.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getEntitySAXFunc"></a>Function type getEntitySAXFunc</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	getEntitySAXFunc	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get an entity by name.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="getParameterEntitySAXFunc"></a>Function type getParameterEntitySAXFunc</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	getParameterEntitySAXFunc	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Get a parameter entity by name.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="hasExternalSubsetSAXFunc"></a>Function type hasExternalSubsetSAXFunc</h3>
-<pre class="programlisting">int	hasExternalSubsetSAXFunc	(void * ctx)<br>
-</pre>
-<p>Does this document has an external subset?</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="hasInternalSubsetSAXFunc"></a>Function type hasInternalSubsetSAXFunc</h3>
-<pre class="programlisting">int	hasInternalSubsetSAXFunc	(void * ctx)<br>
-</pre>
-<p>Does this document has an internal subset.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="ignorableWhitespaceSAXFunc"></a>Function type ignorableWhitespaceSAXFunc</h3>
-<pre class="programlisting">void	ignorableWhitespaceSAXFunc	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ch, <br>					 int len)<br>
-</pre>
-<p>Receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use characters.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ch</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="internalSubsetSAXFunc"></a>Function type internalSubsetSAXFunc</h3>
-<pre class="programlisting">void	internalSubsetSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Callback on internal subset declaration.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the root element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the SYSTEM ID (e.g. filename or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="isStandaloneSAXFunc"></a>Function type isStandaloneSAXFunc</h3>
-<pre class="programlisting">int	isStandaloneSAXFunc		(void * ctx)<br>
-</pre>
-<p>Is this document tagged standalone?</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="notationDeclSAXFunc"></a>Function type notationDeclSAXFunc</h3>
-<pre class="programlisting">void	notationDeclSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>What to do when a notation declaration has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="processingInstructionSAXFunc"></a>Function type processingInstructionSAXFunc</h3>
-<pre class="programlisting">void	processingInstructionSAXFunc	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data)<br>
-</pre>
-<p>A processing instruction has been parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>the target name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the PI data's</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="referenceSAXFunc"></a>Function type referenceSAXFunc</h3>
-<pre class="programlisting">void	referenceSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Called when an entity reference is detected.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The entity name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="resolveEntitySAXFunc"></a>Function type resolveEntitySAXFunc</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	resolveEntitySAXFunc	(void * ctx, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>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's own entity resolution routine</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> if inlined or NULL for DOM behaviour.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="setDocumentLocatorSAXFunc"></a>Function type setDocumentLocatorSAXFunc</h3>
-<pre class="programlisting">void	setDocumentLocatorSAXFunc	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a> loc)<br>
-</pre>
-<p>Receive the document locator at startup, actually xmlDefaultSAXLocator. Everything is available on the context, so this is useless in our case.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loc</tt></i>:</span></td>
-<td>A SAX Locator</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="startDocumentSAXFunc"></a>Function type startDocumentSAXFunc</h3>
-<pre class="programlisting">void	startDocumentSAXFunc		(void * ctx)<br>
-</pre>
-<p>Called when the document start being processed.</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 user data (XML parser context)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="startElementNsSAX2Func"></a>Function type startElementNsSAX2Func</h3>
-<pre class="programlisting">void	startElementNsSAX2Func		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 int nb_namespaces, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 int nb_attributes, <br>					 int nb_defaulted, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** attributes)<br>
-</pre>
-<p>SAX2 callback when an element start has been detected by the parser. It provides the namespace information for the element, as well as the new namespace declarations on the element.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localname</tt></i>:</span></td>
-<td>the local name of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the element namespace prefix if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the element namespace name if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_namespaces</tt></i>:</span></td>
-<td>number of namespace definitions on that node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
-<td>pointer to the array of prefix/URI pairs namespace definitions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_attributes</tt></i>:</span></td>
-<td>the number of attributes on that node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nb_defaulted</tt></i>:</span></td>
-<td>the number of defaulted attributes. The defaulted ones are at the end of the array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attributes</tt></i>:</span></td>
-<td>pointer to the array of (localname/prefix/URI/value/end) attribute values.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="startElementSAXFunc"></a>Function type startElementSAXFunc</h3>
-<pre class="programlisting">void	startElementSAXFunc		(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** atts)<br>
-</pre>
-<p>Called when an opening tag has been processed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The element name, including namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>atts</tt></i>:</span></td>
-<td>An array of name/value attributes pairs, NULL terminated</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="unparsedEntityDeclSAXFunc"></a>Function type unparsedEntityDeclSAXFunc</h3>
-<pre class="programlisting">void	unparsedEntityDeclSAXFunc	(void * ctx, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName)<br>
-</pre>
-<p>What to do when an unparsed entity declaration is parsed.</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 user data (XML parser context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>The name of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>The public ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>The system ID of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>notationName</tt></i>:</span></td>
-<td>the name of the notation</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="warningSAXFunc"></a>Function type warningSAXFunc</h3>
-<pre class="programlisting">void	warningSAXFunc			(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format a warning messages, callback.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlExternalEntityLoader"></a>Function type xmlExternalEntityLoader</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlExternalEntityLoader	(const char * URL, <br>						 const char * ID, <br>						 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> context)<br>
-</pre>
-<p>External entity loaders types.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>The System ID of the resource requested</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ID</tt></i>:</span></td>
-<td>The Public ID of the resource requested</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>the XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the entity input parser.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputDeallocate"></a>Function type xmlParserInputDeallocate</h3>
-<pre class="programlisting">void	xmlParserInputDeallocate	(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Callback for freeing some parser input allocations.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string to deallocate</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlResourceLoader"></a>Function type xmlResourceLoader</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlResourceLoader	(void * ctxt, <br>					 const char * url, <br>					 const char * publicId, <br>					 <a href="libxml2-parser.html#xmlResourceType">xmlResourceType</a> type, <br>					 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> * out)<br>
-</pre>
-<p>Callback for custom resource loaders. @flags can contain <a href="libxml2-parser.html#XML_INPUT_UNZIP">XML_INPUT_UNZIP</a> and <a href="libxml2-parser.html#XML_INPUT_NETWORK">XML_INPUT_NETWORK</a>. On success, @out should be set to a new parser input object and <a href="libxml2-xmlerror.html#XML_ERR_OK">XML_ERR_OK</a> should be returned.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>URL to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>publid ID from DTD (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>resource type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>result pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserVersion">Variable </a>xmlParserVersion</h3>
-<pre class="programlisting">const char * const xmlParserVersion;
-</pre>
-<p>Constant string describing the internal version of the library</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlByteConsumed"></a>xmlByteConsumed ()</h3>
-<pre class="programlisting">long	xmlByteConsumed			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Don't use. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the index in bytes from the beginning of the entity or -1 in case the index could not be computed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupGlobals"></a>xmlCleanupGlobals ()</h3>
-<pre class="programlisting">void	xmlCleanupGlobals		(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupParser"></a>xmlCleanupParser ()</h3>
-<pre class="programlisting">void	xmlCleanupParser		(void)<br>
-</pre>
-<p>This function is named somewhat misleadingly. It does not clean up parser state but global memory allocated by the library itself. Since 2.9.11, cleanup is performed automatically if a shared or dynamic libxml2 library is unloaded. This function should only be used to avoid false positives from memory leak checkers in static builds. WARNING: <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> assumes that all other threads that called libxml2 functions have terminated. No library calls must be made after calling this function. In general, THIS FUNCTION SHOULD ONLY BE CALLED RIGHT BEFORE THE WHOLE PROCESS EXITS.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlClearNodeInfoSeq"></a>xmlClearNodeInfoSeq ()</h3>
-<pre class="programlisting">void	xmlClearNodeInfoSeq		(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq)<br>
-</pre>
-<p>DEPRECATED: Don't use. -- Clear (release memory and reinitialize) node info sequence</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>seq</tt></i>:</span></td>
-<td>a node info sequence pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlClearParserCtxt"></a>xmlClearParserCtxt ()</h3>
-<pre class="programlisting">void	xmlClearParserCtxt		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Clear (release owned resources) and reinitialize a parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateDocParserCtxt"></a>xmlCreateDocParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateDocParserCtxt	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Creates a parser context for an XML in-memory document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a pointer to an array of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateIOParserCtxt"></a>xmlCreateIOParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateIOParserCtxt	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>						 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>						 void * ioctx, <br>						 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>Create a parser context for using the XML parser with an existing I/O stream</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a SAX handler (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>user data for SAX callbacks (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreatePushParserCtxt"></a>xmlCreatePushParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreatePushParserCtxt	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 const char * chunk, <br>						 int size, <br>						 const char * filename)<br>
-</pre>
-<p>Create a parser context for using the XML parser in push mode. See <a href="libxml2-parser.html#xmlParseChunk">xmlParseChunk</a>. Passing an initial chunk is useless and deprecated. The push parser doesn't support recovery mode or the <a href="libxml2-parser.html#XML_PARSE_NOBLANKS">XML_PARSE_NOBLANKS</a> option. @filename is used as base URI to fetch external entities and for error reports.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a SAX handler (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>user data for SAX callbacks (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>chunk</tt></i>:</span></td>
-<td>initial chunk (optional, deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>size of initial chunk in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>file name or URI (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetCatalogs"></a>xmlCtxtGetCatalogs ()</h3>
-<pre class="programlisting">void *	xmlCtxtGetCatalogs		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local catalogs.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetDeclaredEncoding"></a>xmlCtxtGetDeclaredEncoding ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCtxtGetDeclaredEncoding	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the encoding from the encoding declaration. This can differ from the actual encoding.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetDict"></a>xmlCtxtGetDict ()</h3>
-<pre class="programlisting"><a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlCtxtGetDict		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the dictionary.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetDocument"></a>xmlCtxtGetDocument ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtGetDocument	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parsed document or NULL if a fatal error occurred when parsing. The document must be freed by the caller. Resets the context's document to NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetOptions"></a>xmlCtxtGetOptions ()</h3>
-<pre class="programlisting">int	xmlCtxtGetOptions		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Get the current options of the parser context. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current options set in the parser context, or -1 if ctxt is NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetPrivate"></a>xmlCtxtGetPrivate ()</h3>
-<pre class="programlisting">void *	xmlCtxtGetPrivate		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the private application data.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetSaxHandler"></a>xmlCtxtGetSaxHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> *	xmlCtxtGetSaxHandler	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the SAX handler struct. This is not a copy and must not be freed. Handlers can be updated.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetStandalone"></a>xmlCtxtGetStandalone ()</h3>
-<pre class="programlisting">int	xmlCtxtGetStandalone		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value from the standalone document declaration.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetStatus"></a>xmlCtxtGetStatus ()</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlParserStatus">xmlParserStatus</a>	xmlCtxtGetStatus	(<a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> * ctxt)<br>
-</pre>
-<p>Get well-formedness and validation status after parsing. Also reports catastrophic errors which are not related to parsing like out-of-memory, I/O or other errors. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a bitmask of XML_STATUS_* flags ORed together.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetValidCtxt"></a>xmlCtxtGetValidCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	xmlCtxtGetValidCtxt	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the validation context.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetVersion"></a>xmlCtxtGetVersion ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCtxtGetVersion	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the version from the XML declaration.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtIsHtml"></a>xmlCtxtIsHtml ()</h3>
-<pre class="programlisting">int	xmlCtxtIsHtml			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if this is a HTML parser context, 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtIsStopped"></a>xmlCtxtIsStopped ()</h3>
-<pre class="programlisting">int	xmlCtxtIsStopped		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the parser is stopped, 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtParseContent"></a>xmlCtxtParseContent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlCtxtParseContent	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int hasTextDecl)<br>
-</pre>
-<p>Parse a well-balanced chunk of XML matching the 'content' production. Namespaces in scope of @node and entities of @node's document are recognized. When validating, the DTD of @node's document is used. Always consumes @input even in error case. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>target node or document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>hasTextDecl</tt></i>:</span></td>
-<td>whether to parse text declaration</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a node list or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtParseDocument"></a>xmlCtxtParseDocument ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtParseDocument	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>Parse an XML document and return the resulting document tree. Takes ownership of the input object. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtParseDtd"></a>xmlCtxtParseDtd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlCtxtParseDtd		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicId, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemId)<br>
-</pre>
-<p>Parse a DTD. Option <a href="libxml2-parser.html#XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a> should be enabled in the parser context to make external entities work. Availabe since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>a parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicId</tt></i>:</span></td>
-<td>public ID of the DTD (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>systemId</tt></i>:</span></td>
-<td>system ID of the DTD (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error. @input will be freed by the function in any case.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReadDoc"></a>xmlCtxtReadDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtReadDoc		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML in-memory document and build a tree. @URL is used as base to resolve external entities and for error reporting. See <a href="libxml2-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a pointer to a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReadFd"></a>xmlCtxtReadFd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtReadFd		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML document from a file descriptor and build a tree. NOTE that the file descriptor will not be closed when the context is freed or reset. @URL is used as base to resolve external entities and for error reporting. See <a href="libxml2-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReadFile"></a>xmlCtxtReadFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtReadFile		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML file from the filesystem, the network or a user-defined resource loader. This function always enables the <a href="libxml2-parser.html#XML_PARSE_UNZIP">XML_PARSE_UNZIP</a> option for backward compatibility. This feature is potentially insecure and might be removed from later versions.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReadIO"></a>xmlCtxtReadIO ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtReadIO		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>parse an XML document from I/O functions and source and build a tree. This reuses the existing @ctxt parser context @URL is used as base to resolve external entities and for error reporting. See <a href="libxml2-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReadMemory"></a>xmlCtxtReadMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCtxtReadMemory	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML in-memory document and build a tree. The input buffer must not contain a terminating null byte. @URL is used as base to resolve external entities and for error reporting. See <a href="libxml2-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtReset"></a>xmlCtxtReset ()</h3>
-<pre class="programlisting">void	xmlCtxtReset			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Reset a parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtResetPush"></a>xmlCtxtResetPush ()</h3>
-<pre class="programlisting">int	xmlCtxtResetPush		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 const char * filename, <br>					 const char * encoding)<br>
-</pre>
-<p>Reset a push parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>chunk</tt></i>:</span></td>
-<td>a pointer to an array of chars</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>number of chars in the array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>an optional file name or URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and 1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetCatalogs"></a>xmlCtxtSetCatalogs ()</h3>
-<pre class="programlisting">void	xmlCtxtSetCatalogs		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 void * catalogs)<br>
-</pre>
-<p>Available since 2.14.0. Set the local catalogs.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>catalogs</tt></i>:</span></td>
-<td>catalogs pointer</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetCharEncConvImpl"></a>xmlCtxtSetCharEncConvImpl ()</h3>
-<pre class="programlisting">void	xmlCtxtSetCharEncConvImpl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncConvImpl">xmlCharEncConvImpl</a> impl, <br>					 void * vctxt)<br>
-</pre>
-<p>Installs a custom implementation to convert between character encodings. This bypasses legacy feature like global encoding handlers or encoding aliases. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>impl</tt></i>:</span></td>
-<td>callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetDict"></a>xmlCtxtSetDict ()</h3>
-<pre class="programlisting">void	xmlCtxtSetDict			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br>
-</pre>
-<p>Available since 2.14.0. Set the dictionary. This should only be done immediately after creating a parser context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>dictionary</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetErrorHandler"></a>xmlCtxtSetErrorHandler ()</h3>
-<pre class="programlisting">void	xmlCtxtSetErrorHandler		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated. This is the recommended way to collect errors from the parser and takes precedence over all other error reporting mechanisms. These are (in order of precedence): - per-context structured handler (xmlCtxtSetErrorHandler) - per-context structured "serror" SAX handler - global structured handler (xmlSetStructuredErrorFunc) - per-context generic "error" and "warning" SAX handlers - global generic handler (xmlSetGenericErrorFunc) - print to stderr Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>error handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data for error handler</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetMaxAmplification"></a>xmlCtxtSetMaxAmplification ()</h3>
-<pre class="programlisting">void	xmlCtxtSetMaxAmplification	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 unsigned maxAmpl)<br>
-</pre>
-<p>To protect against exponential entity expansion ("billion laughs"), the size of serialized output is (roughly) limited to the input size multiplied by this factor. The default value is 5. When working with documents making heavy use of entity expansion, it can be necessary to increase the value. For security reasons, this should only be considered when processing trusted input.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>maxAmpl</tt></i>:</span></td>
-<td>maximum amplification factor</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetOptions"></a>xmlCtxtSetOptions ()</h3>
-<pre class="programlisting">int	xmlCtxtSetOptions		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>Applies the options to the parser context. Unset options are cleared. Available since 2.13.0. With older versions, you can use <a href="libxml2-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a>. <a href="libxml2-parser.html#XML_PARSE_RECOVER">XML_PARSE_RECOVER</a> Enable "recovery" mode which allows non-wellformed documents. How this mode behaves exactly is unspecified and may change without further notice. Use of this feature is DISCOURAGED. Not supported by the push parser. <a href="libxml2-parser.html#XML_PARSE_NOENT">XML_PARSE_NOENT</a> Despite the confusing name, this option enables substitution of entities. The resulting tree won't contain any entity reference nodes. This option also enables loading of external entities (both general and parameter entities) which is dangerous. If you process untrusted data, it's recommended to set the <a href="libxml2-parser.html#XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a> option to disable loading of external entities. <a href="libxml2-parser.html#XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a> Enables loading of an external DTD and the loading and substitution of external parameter entities. Has no effect if <a href="libxml2-parser.html#XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a> is set. <a href="libxml2-parser.html#XML_PARSE_DTDATTR">XML_PARSE_DTDATTR</a> Adds default attributes from the DTD to the result document. Implies XML_PARSE_DTDLOAD, but loading of external content can be disabled with <a href="libxml2-parser.html#XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a>. <a href="libxml2-parser.html#XML_PARSE_DTDVALID">XML_PARSE_DTDVALID</a> This option enables DTD validation which requires to load external DTDs and external entities (both general and parameter entities) unless <a href="libxml2-parser.html#XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a> was set. <a href="libxml2-parser.html#XML_PARSE_NO_XXE">XML_PARSE_NO_XXE</a> Disables loading of external DTDs or entities. Available since 2.13.0. <a href="libxml2-parser.html#XML_PARSE_NOERROR">XML_PARSE_NOERROR</a> Disable error and warning reports to the error handlers. Errors are still accessible with <a href="libxml2-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a>. <a href="libxml2-parser.html#XML_PARSE_NOWARNING">XML_PARSE_NOWARNING</a> Disable warning reports. <a href="libxml2-parser.html#XML_PARSE_PEDANTIC">XML_PARSE_PEDANTIC</a> Enable some pedantic warnings. <a href="libxml2-parser.html#XML_PARSE_NOBLANKS">XML_PARSE_NOBLANKS</a> Remove some whitespace from the result document. Where to remove whitespace depends on DTD element declarations or a broken heuristic with unfixable bugs. Use of this option is DISCOURAGED. Not supported by the push parser. <a href="libxml2-parser.html#XML_PARSE_SAX1">XML_PARSE_SAX1</a> Always invoke the deprecated SAX1 startElement and endElement handlers. This option is DEPRECATED. <a href="libxml2-parser.html#XML_PARSE_NONET">XML_PARSE_NONET</a> Disable network access with the builtin HTTP client. <a href="libxml2-parser.html#XML_PARSE_NODICT">XML_PARSE_NODICT</a> Create a document without interned strings, making all strings separate memory allocations. <a href="libxml2-parser.html#XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a> Remove redundant namespace declarations from the result document. <a href="libxml2-parser.html#XML_PARSE_NOCDATA">XML_PARSE_NOCDATA</a> Output normal text nodes instead of CDATA nodes. <a href="libxml2-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a> Store small strings directly in the node struct to save memory. <a href="libxml2-parser.html#XML_PARSE_OLD10">XML_PARSE_OLD10</a> Use old Name productions from before XML 1.0 Fifth Edition. This options is DEPRECATED. <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> Relax some internal limits. Maximum size of text nodes, tags, comments, processing instructions, CDATA sections, entity values normal: 10M huge: 1B Maximum size of names, system literals, pubid literals normal: 50K huge: 10M Maximum nesting depth of elements normal: 256 huge: 2048 Maximum nesting depth of entities normal: 20 huge: 40 <a href="libxml2-parser.html#XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> Enable an unspecified legacy mode for SAX parsers. This option is DEPRECATED. <a href="libxml2-parser.html#XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> Ignore the encoding in the XML declaration. This option is mostly unneeded these days. The only effect is to enforce UTF-8 decoding of ASCII-like data. <a href="libxml2-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> Enable reporting of line numbers larger than 65535. <a href="libxml2-parser.html#XML_PARSE_UNZIP">XML_PARSE_UNZIP</a> Enable input decompression. Setting this option is discouraged to avoid zip bombs. Available since 2.14.0. <a href="libxml2-parser.html#XML_PARSE_NO_SYS_CATALOG">XML_PARSE_NO_SYS_CATALOG</a> Disables the global system XML catalog. Available since 2.14.0. <a href="libxml2-parser.html#XML_PARSE_CATALOG_PI">XML_PARSE_CATALOG_PI</a> Enable XML catalog processing instructions. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a bitmask of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> values</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, the set of unknown or unimplemented options in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetPrivate"></a>xmlCtxtSetPrivate ()</h3>
-<pre class="programlisting">void	xmlCtxtSetPrivate		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 void * priv)<br>
-</pre>
-<p>Available since 2.14.0. Set the private application data.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>priv</tt></i>:</span></td>
-<td>private application data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetResourceLoader"></a>xmlCtxtSetResourceLoader ()</h3>
-<pre class="programlisting">void	xmlCtxtSetResourceLoader	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * vctxt)<br>
-</pre>
-<p>Installs a custom callback to load documents, DTDs or external entities. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loader</tt></i>:</span></td>
-<td>callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtSetSaxHandler"></a>xmlCtxtSetSaxHandler ()</h3>
-<pre class="programlisting">int	xmlCtxtSetSaxHandler		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax)<br>
-</pre>
-<p>Available since 2.14.0. Set the SAX handler struct to a copy of @sax.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success or -1 if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtUseOptions"></a>xmlCtxtUseOptions ()</h3>
-<pre class="programlisting">int	xmlCtxtUseOptions		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlCtxtSetOptions">xmlCtxtSetOptions</a>. Applies the options to the parser context. The following options are never cleared and can only be enabled: <a href="libxml2-parser.html#XML_PARSE_NOERROR">XML_PARSE_NOERROR</a> <a href="libxml2-parser.html#XML_PARSE_NOWARNING">XML_PARSE_NOWARNING</a> <a href="libxml2-parser.html#XML_PARSE_NONET">XML_PARSE_NONET</a> <a href="libxml2-parser.html#XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a> <a href="libxml2-parser.html#XML_PARSE_NOCDATA">XML_PARSE_NOCDATA</a> <a href="libxml2-parser.html#XML_PARSE_COMPACT">XML_PARSE_COMPACT</a> <a href="libxml2-parser.html#XML_PARSE_OLD10">XML_PARSE_OLD10</a> <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> <a href="libxml2-parser.html#XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> <a href="libxml2-parser.html#XML_PARSE_IGNORE_ENC">XML_PARSE_IGNORE_ENC</a> <a href="libxml2-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, the set of unknown or unimplemented options in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtValidateDocument"></a>xmlCtxtValidateDocument ()</h3>
-<pre class="programlisting">int	xmlCtxtValidateDocument		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Validate a document. Like <a href="libxml2-valid.html#xmlValidateDocument">xmlValidateDocument</a> but uses the parser context's error handler. Option <a href="libxml2-parser.html#XML_PARSE_DTDLOAD">XML_PARSE_DTDLOAD</a> should be enabled in the parser context to make external entities work. Availabe since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtValidateDtd"></a>xmlCtxtValidateDtd ()</h3>
-<pre class="programlisting">int	xmlCtxtValidateDtd		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br>
-</pre>
-<p>Validate a document against a DTD. Like <a href="libxml2-valid.html#xmlValidateDtd">xmlValidateDtd</a> but uses the parser context's error handler. Availabe since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a dtd instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeParserCtxt"></a>xmlFreeParserCtxt ()</h3>
-<pre class="programlisting">void	xmlFreeParserCtxt		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetExternalEntityLoader"></a>xmlGetExternalEntityLoader ()</h3>
-<pre class="programlisting"><a href="libxml2-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a>	xmlGetExternalEntityLoader	(void)<br>
-</pre>
-<p>DEPRECATED: See <a href="libxml2-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a>. Get the default external entity resolver function for the application</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a> function pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHasFeature"></a>xmlHasFeature ()</h3>
-<pre class="programlisting">int	xmlHasFeature			(<a href="libxml2-parser.html#xmlFeature">xmlFeature</a> feature)<br>
-</pre>
-<p>Examines if the library has been compiled with a given feature.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>feature</tt></i>:</span></td>
-<td>the feature to be examined</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a non-zero value if the feature exist, otherwise zero. Returns zero (0) if the feature does not exist or an unknown unknown feature is requested, non-zero otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOParseDTD"></a>xmlIOParseDTD ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlIOParseDTD		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlCtxtParseDtd">xmlCtxtParseDtd</a>. Load and parse a DTD</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 or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>an Input Buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error. @input will be freed by the function in any case.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitGlobals"></a>xmlInitGlobals ()</h3>
-<pre class="programlisting">void	xmlInitGlobals			(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitNodeInfoSeq"></a>xmlInitNodeInfoSeq ()</h3>
-<pre class="programlisting">void	xmlInitNodeInfoSeq		(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq)<br>
-</pre>
-<p>DEPRECATED: Don't use. -- Initialize (set to initial state) node info sequence</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>seq</tt></i>:</span></td>
-<td>a node info sequence pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitParser"></a>xmlInitParser ()</h3>
-<pre class="programlisting">void	xmlInitParser			(void)<br>
-</pre>
-<p>Initialization function for the XML parser. For older versions, it's recommended to call this function once from the main thread before using the library in multithreaded programs. Since 2.14.0, there's no distinction between threads. It should be unnecessary to call this function.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitParserCtxt"></a>xmlInitParserCtxt ()</h3>
-<pre class="programlisting">int	xmlInitParserCtxt		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function which will be made private in a future version. Initialize a parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInputSetEncodingHandler"></a>xmlInputSetEncodingHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlInputSetEncodingHandler	(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler)<br>
-</pre>
-<p>Use encoding handler to decode input data. Closes the handler on error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the input stream</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the encoding handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlKeepBlanksDefault"></a>xmlKeepBlanksDefault ()</h3>
-<pre class="programlisting">int	xmlKeepBlanksDefault		(int val)<br>
-</pre>
-<p>DEPRECATED: Use the modern options API with <a href="libxml2-parser.html#XML_PARSE_NOBLANKS">XML_PARSE_NOBLANKS</a>. 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'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 "empty" nodes generated. This value also affect autogeneration of indentation when saving code if blanks sections are kept, indentation is not generated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>int 0 or 1</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last value for 0 for no substitution, 1 for substitution.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLineNumbersDefault"></a>xmlLineNumbersDefault ()</h3>
-<pre class="programlisting">int	xmlLineNumbersDefault		(int val)<br>
-</pre>
-<p>DEPRECATED: The modern options API always enables line numbers. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>int 0 or 1</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last value for 0 for no substitution, 1 for substitution.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLoadExternalEntity"></a>xmlLoadExternalEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlLoadExternalEntity	(const char * URL, <br>						 const char * ID, <br>						 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>@URL is a filename or URL. If if contains the substring "://", it is assumed to be a Legacy Extended IRI. Otherwise, it is treated as a filesystem path. @ID is an optional XML public ID, typically from a doctype declaration. It is used for catalog lookups. If catalog lookup is enabled (default is yes) and URL or ID are found in system or local XML catalogs, URL is replaced with the result. Then the following resource loaders will be called if they were registered (in order of precedence): - the resource loader set with <a href="libxml2-parser.html#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a> - the global external entity loader set with <a href="libxml2-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a> (without catalog resolution, deprecated) - the per-thread <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> set with <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a> (deprecated) - the default loader which will return - the result from a matching global input callback set with <a href="libxml2-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a> (deprecated) - a HTTP resource if support is compiled in. - a file opened from the filesystem, with automatic detection of compressed files if support is compiled in.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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 Public ID for the entity to load</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the context in which the entity is called or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewIOInputStream"></a>xmlNewIOInputStream ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewIOInputStream	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> buf, <br>						 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>Create a new input stream structure encapsulating the @input into a stream suitable for the parser.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an input buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new input stream or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromFd"></a>xmlNewInputFromFd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputFromFd	(const char * url, <br>						 int fd, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags)<br>
-</pre>
-<p>Creates a new parser input to read from a zero-terminated string. @url is used as base to resolve external entities and for error reporting. @fd is closed after parsing has finished. Supported @flags are <a href="libxml2-parser.html#XML_INPUT_UNZIP">XML_INPUT_UNZIP</a> to decompress data automatically. This feature is deprecated and will be removed in a future release. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>input flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new parser input or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromIO"></a>xmlNewInputFromIO ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputFromIO	(const char * url, <br>						 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioRead, <br>						 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioClose, <br>						 void * ioCtxt, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags)<br>
-</pre>
-<p>Creates a new parser input to read from input callbacks and cintext. @url is used as base to resolve external entities and for error reporting. @ioRead is called to read new data into a provided buffer. It must return the number of bytes written into the buffer ot a negative <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code on failure. @ioClose is called after parsing has finished. @ioCtxt is an opaque pointer passed to the callbacks. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioRead</tt></i>:</span></td>
-<td>read callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioClose</tt></i>:</span></td>
-<td>close callback (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioCtxt</tt></i>:</span></td>
-<td>IO context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>unused, pass 0</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new parser input or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromMemory"></a>xmlNewInputFromMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputFromMemory	(const char * url, <br>						 const void * mem, <br>						 size_t size, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags)<br>
-</pre>
-<p>Creates a new parser input to read from a memory area. @url is used as base to resolve external entities and for error reporting. If the <a href="libxml2-parser.html#XML_INPUT_BUF_STATIC">XML_INPUT_BUF_STATIC</a> flag is set, the memory area must stay unchanged until parsing has finished. This can avoid temporary copies. If the <a href="libxml2-parser.html#XML_INPUT_BUF_ZERO_TERMINATED">XML_INPUT_BUF_ZERO_TERMINATED</a> flag is set, the memory area must contain a zero byte after the buffer at position @size. This can avoid temporary copies. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>pointer to char array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>size of array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>optimization hints</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new parser input or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromString"></a>xmlNewInputFromString ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputFromString	(const char * url, <br>						 const char * str, <br>						 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags)<br>
-</pre>
-<p>Creates a new parser input to read from a zero-terminated string. @url is used as base to resolve external entities and for error reporting. If the <a href="libxml2-parser.html#XML_INPUT_BUF_STATIC">XML_INPUT_BUF_STATIC</a> flag is set, the string must stay unchanged until parsing has finished. This can avoid temporary copies. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>url</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>zero-terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>optimization hints</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new parser input or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromUrl"></a>xmlNewInputFromUrl ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlNewInputFromUrl	(const char * filename, <br>					 <a href="libxml2-parser.html#xmlParserInputFlags">xmlParserInputFlags</a> flags, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> * out)<br>
-</pre>
-<p>Create a new input stream based on a file or a URL. The flag <a href="libxml2-parser.html#XML_INPUT_UNZIP">XML_INPUT_UNZIP</a> allows decompression. The flag <a href="libxml2-parser.html#XML_INPUT_NETWORK">XML_INPUT_NETWORK</a> allows network access. The following resource loaders will be called if they were registered (in order of precedence): - the per-thread <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> set with <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a> (deprecated) - the default loader which will return - the result from a matching global input callback set with <a href="libxml2-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a> (deprecated) - a HTTP resource if support is compiled in. - a file opened from the filesystem, with automatic detection of compressed files if support is compiled in. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename to use as entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>XML_INPUT flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to new parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewParserCtxt"></a>xmlNewParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlNewParserCtxt	(void)<br>
-</pre>
-<p>Allocate and initialize a new parser context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> or NULL</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewSAXParserCtxt"></a>xmlNewSAXParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlNewSAXParserCtxt	(const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax, <br>						 void * userData)<br>
-</pre>
-<p>Allocate and initialize a new SAX parser context. If userData is NULL, the parser context will be passed as user data. Available since 2.11.0. If you want support older versions, it's best to invoke <a href="libxml2-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a> and set ctxt-&gt;sax with struct assignment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> or NULL if memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseBalancedChunkMemory"></a>xmlParseBalancedChunkMemory ()</h3>
-<pre class="programlisting">int	xmlParseBalancedChunkMemory	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 int depth, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * lst)<br>
-</pre>
-<p>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)*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document the chunk pertains to (must not be NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>the SAX handler block (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>Used for loop detection, use 0</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the input string in UTF8 or ISO-Latin (zero terminated)</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 chunk is well balanced, -1 in case of args problem and the parser error code otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseBalancedChunkMemoryRecover"></a>xmlParseBalancedChunkMemoryRecover ()</h3>
-<pre class="programlisting">int	xmlParseBalancedChunkMemoryRecover	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 void * user_data, <br>						 int depth, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut, <br>						 int recover)<br>
-</pre>
-<p>Parse a well-balanced chunk of an XML document 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)*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document the chunk pertains to (must not be NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>the SAX handler block (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>Used for loop detection, use 0</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the input string in UTF8 or ISO-Latin (zero terminated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>listOut</tt></i>:</span></td>
-<td>the return value for the set of parsed nodes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>recover</tt></i>:</span></td>
-<td>return nodes even if the data is broken (use 0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the chunk is well balanced, or thehe 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, assuming the parsing succeeded to some extent.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseChunk"></a>xmlParseChunk ()</h3>
-<pre class="programlisting">int	xmlParseChunk			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * chunk, <br>					 int size, <br>					 int terminate)<br>
-</pre>
-<p>Parse a chunk of memory in push parser mode. Assumes that the parser context was initialized with <a href="libxml2-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a>. The last chunk, which will often be empty, must be marked with the @terminate flag. With the default SAX callbacks, the resulting document will be available in ctxt-&gt;myDoc. This pointer will not be freed when calling <a href="libxml2-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a> and must be freed by the caller. If the document isn't well-formed, it will still be returned in ctxt-&gt;myDoc. As an exception, <a href="libxml2-parser.html#xmlCtxtResetPush">xmlCtxtResetPush</a> will free the document in ctxt-&gt;myDoc. So ctxt-&gt;myDoc should be set to NULL after extracting the document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>chunk</tt></i>:</span></td>
-<td>chunk of memory</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>size of chunk in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>terminate</tt></i>:</span></td>
-<td>last chunk indicator</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code (0 on success).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCtxtExternalEntity"></a>xmlParseCtxtExternalEntity ()</h3>
-<pre class="programlisting">int	xmlParseCtxtExternalEntity	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut)<br>
-</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>ctxt</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>listOut</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseDTD"></a>xmlParseDTD ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlParseDTD		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-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="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseDoc"></a>xmlParseDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadDoc">xmlReadDoc</a>. 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="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseDocument"></a>xmlParseDocument ()</h3>
-<pre class="programlisting">int	xmlParseDocument		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Parse an XML document and invoke the SAX handlers. This is useful if you're only interested in custom SAX callbacks. If you want a document tree, use <a href="libxml2-parser.html#xmlCtxtParseDocument">xmlCtxtParseDocument</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0, -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEntity"></a>xmlParseEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseEntity		(const char * filename)<br>
-</pre>
-<p>parse an XML external entity out of context and build a tree. [78] extParsedEnt ::= TextDecl? content This correspond to a "Well Balanced" chunk</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseExtParsedEnt"></a>xmlParseExtParsedEnt ()</h3>
-<pre class="programlisting">int	xmlParseExtParsedEnt		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse a general parsed entity 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>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0, -1 in case of error. the parser context is augmented as a result of the parsing.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseExternalEntity"></a>xmlParseExternalEntity ()</h3>
-<pre class="programlisting">int	xmlParseExternalEntity		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 int depth, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * list)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a>. Parse an external general entity 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>doc</tt></i>:</span></td>
-<td>the document the chunk pertains to</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>the SAX handler block (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks (possibly NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>Used for loop detection, use 0</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>list</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseFile"></a>xmlParseFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseFile		(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadFile">xmlReadFile</a>. parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree if the file was wellformed, NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseInNodeContext"></a>xmlParseInNodeContext ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlParseInNodeContext	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const char * data, <br>					 int datalen, <br>					 int options, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * listOut)<br>
-</pre>
-<p>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)* This function assumes the encoding of @node's document which is typically not what you want. A better alternative is <a href="libxml2-parser.html#xmlCtxtParseContent">xmlCtxtParseContent</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the context node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the input string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>datalen</tt></i>:</span></td>
-<td>the input string length in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>listOut</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>
-<a href="libxml2-xmlerror.html#XML_ERR_OK">XML_ERR_OK</a> if the chunk is well balanced, and the parser error code otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseMemory"></a>xmlParseMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseMemory		(const char * buffer, <br>					 int size)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadMemory">xmlReadMemory</a>. parse an XML in-memory block and build a tree.</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserAddNodeInfo"></a>xmlParserAddNodeInfo ()</h3>
-<pre class="programlisting">void	xmlParserAddNodeInfo		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlParserNodeInfoPtr">xmlParserNodeInfoPtr</a> info)<br>
-</pre>
-<p>DEPRECATED: Don't use. Insert node info record into the sorted sequence</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>info</tt></i>:</span></td>
-<td>a node info sequence pointer</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserFindNodeInfo"></a>xmlParserFindNodeInfo ()</h3>
-<pre class="programlisting">const <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> *	xmlParserFindNodeInfo	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctx, <br>							 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>DEPRECATED: Don't use. Find the parser node info struct for a given node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>an XML node within the tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> block pointer or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserFindNodeInfoIndex"></a>xmlParserFindNodeInfoIndex ()</h3>
-<pre class="programlisting">unsigned long	xmlParserFindNodeInfoIndex	(<a href="libxml2-parser.html#xmlParserNodeInfoSeqPtr">xmlParserNodeInfoSeqPtr</a> seq, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>DEPRECATED: Don't use. <a href="libxml2-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a> : Find the index that the info record for the given node is or should be at in a sorted sequence</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>seq</tt></i>:</span></td>
-<td>a node info sequence pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>an XML node pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a long indicating the position of the record</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputGrow"></a>xmlParserInputGrow ()</h3>
-<pre class="programlisting">int	xmlParserInputGrow		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Don't use. This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an XML parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>an indicative size for the lookahead</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the amount of char read, or -1 in case of error, 0 indicate the end of this entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputRead"></a>xmlParserInputRead ()</h3>
-<pre class="programlisting">int	xmlParserInputRead		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: This function was internal and is deprecated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an XML parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>an indicative size for the lookahead</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 as this is an error to use it.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPedanticParserDefault"></a>xmlPedanticParserDefault ()</h3>
-<pre class="programlisting">int	xmlPedanticParserDefault	(int val)<br>
-</pre>
-<p>DEPRECATED: Use the modern options API with <a href="libxml2-parser.html#XML_PARSE_PEDANTIC">XML_PARSE_PEDANTIC</a>. Set and return the previous value for enabling pedantic warnings.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>int 0 or 1</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last value for 0 for no substitution, 1 for substitution.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReadDoc"></a>xmlReadDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlReadDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an XML document from a zero-terminated string. See <a href="libxml2-parser.html#xmlCtxtReadDoc">xmlCtxtReadDoc</a> for details.</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 a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReadFd"></a>xmlReadFd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlReadFd		(int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML from a file descriptor and build a tree. See <a href="libxml2-parser.html#xmlCtxtReadFd">xmlCtxtReadFd</a> for details. NOTE that the file descriptor will not be closed when the context is freed or reset.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReadFile"></a>xmlReadFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlReadFile		(const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Convenience function to parse an XML file from the filesystem, the network or a global user-define resource loader. This function always enables the <a href="libxml2-parser.html#XML_PARSE_UNZIP">XML_PARSE_UNZIP</a> option for backward compatibility. If a "-" filename is passed, it will read from stdin. Both of these features are potentially insecure and might be removed from later versions. See <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReadIO"></a>xmlReadIO ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlReadIO		(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML document from I/O functions and context and build a tree. See <a href="libxml2-parser.html#xmlCtxtReadIO">xmlCtxtReadIO</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReadMemory"></a>xmlReadMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlReadMemory		(const char * buffer, <br>					 int size, <br>					 const char * url, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Parse an XML in-memory document and build a tree. The input buffer must not contain a terminating null byte. See <a href="libxml2-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a> for details.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>url</tt></i>:</span></td>
-<td>base URL (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRecoverDoc"></a>xmlRecoverDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlRecoverDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadDoc">xmlReadDoc</a> with <a href="libxml2-parser.html#XML_PARSE_RECOVER">XML_PARSE_RECOVER</a>. parse an XML in-memory document and build a tree. In the case the document is not Well Formed, a attempt to build a tree is tried anyway</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="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree or NULL in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRecoverFile"></a>xmlRecoverFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlRecoverFile		(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadFile">xmlReadFile</a> with <a href="libxml2-parser.html#XML_PARSE_RECOVER">XML_PARSE_RECOVER</a>. 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, it attempts to build a tree anyway</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree or NULL in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRecoverMemory"></a>xmlRecoverMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlRecoverMemory	(const char * buffer, <br>					 int size)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlReadMemory">xmlReadMemory</a> with <a href="libxml2-parser.html#XML_PARSE_RECOVER">XML_PARSE_RECOVER</a>. parse an XML in-memory block and build a tree. In the case the document is not Well Formed, an attempt to build a tree is tried 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 or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseDTD"></a>xmlSAXParseDTD ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlSAXParseDTD		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlCtxtParseDtd">xmlCtxtParseDtd</a>. 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="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseDoc"></a>xmlSAXParseDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseDoc		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int recovery)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadDoc">xmlCtxtReadDoc</a>. 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="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseEntity"></a>xmlSAXParseEntity ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseEntity	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename)<br>
-</pre>
-<p>DEPRECATED: Don't use. 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>
-<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>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseFile"></a>xmlSAXParseFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseFile		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename, <br>					 int recovery)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a>. 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.</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>filename</tt></i>:</span></td>
-<td>the filename</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseFileWithData"></a>xmlSAXParseFileWithData ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseFileWithData	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * filename, <br>					 int recovery, <br>					 void * data)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a>. 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's _private member, so it is available nearly everywhere in libxml</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>filename</tt></i>:</span></td>
-<td>the filename</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>data</tt></i>:</span></td>
-<td>the userdata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseMemory"></a>xmlSAXParseMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseMemory	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 const char * buffer, <br>					 int size, <br>					 int recovery)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a>. 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.</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>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>recovery</tt></i>:</span></td>
-<td>work in recovery mode, i.e. tries to read not 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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXParseMemoryWithData"></a>xmlSAXParseMemoryWithData ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseMemoryWithData	(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>						 const char * buffer, <br>						 int size, <br>						 int recovery, <br>						 void * data)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a>. 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's _private member, so it is available nearly everywhere in libxml</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>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>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>data</tt></i>:</span></td>
-<td>the userdata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the resulting document tree</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXUserParseFile"></a>xmlSAXUserParseFile ()</h3>
-<pre class="programlisting">int	xmlSAXUserParseFile		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 const char * filename)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a>. parse an XML file and call the given SAX handler routines. Automatic support for ZLIB/Compress compressed document is provided</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success or a error number otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXUserParseMemory"></a>xmlSAXUserParseMemory ()</h3>
-<pre class="programlisting">int	xmlSAXUserParseMemory		(<a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br>					 void * user_data, <br>					 const char * buffer, <br>					 int size)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewSAXParserCtxt">xmlNewSAXParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a>. parse an XML in-memory buffer and call the given SAX handler 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>a SAX handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>The user data returned on SAX callbacks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>an in-memory XML document input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the length of the XML document in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success or a error number otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetExternalEntityLoader"></a>xmlSetExternalEntityLoader ()</h3>
-<pre class="programlisting">void	xmlSetExternalEntityLoader	(<a href="libxml2-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a> f)<br>
-</pre>
-<p>DEPRECATED: This is a global setting and not thread-safe. Use <a href="libxml2-parser.html#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a> or similar functions. Changes the default external entity resolver function for the application.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the new entity resolver function</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetupParserForBuffer"></a>xmlSetupParserForBuffer ()</h3>
-<pre class="programlisting">void	xmlSetupParserForBuffer		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buffer, <br>					 const char * filename)<br>
-</pre>
-<p>DEPRECATED: Don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStopParser"></a>xmlStopParser ()</h3>
-<pre class="programlisting">void	xmlStopParser			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Blocks further parser processing</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSubstituteEntitiesDefault"></a>xmlSubstituteEntitiesDefault ()</h3>
-<pre class="programlisting">int	xmlSubstituteEntitiesDefault	(int val)<br>
-</pre>
-<p>DEPRECATED: Use the modern options API with <a href="libxml2-parser.html#XML_PARSE_NOENT">XML_PARSE_NOENT</a>. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>int 0 or 1</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last value for 0 for no substitution, 1 for substitution.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefDoValidityCheckingDefaultValue"></a>xmlThrDefDoValidityCheckingDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefDoValidityCheckingDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefGetWarningsDefaultValue"></a>xmlThrDefGetWarningsDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefGetWarningsDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefKeepBlanksDefaultValue"></a>xmlThrDefKeepBlanksDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefKeepBlanksDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefLineNumbersDefaultValue"></a>xmlThrDefLineNumbersDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefLineNumbersDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefLoadExtDtdDefaultValue"></a>xmlThrDefLoadExtDtdDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefLoadExtDtdDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefPedanticParserDefaultValue"></a>xmlThrDefPedanticParserDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefPedanticParserDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefSubstituteEntitiesDefaultValue"></a>xmlThrDefSubstituteEntitiesDefaultValue ()</h3>
-<pre class="programlisting">int	xmlThrDefSubstituteEntitiesDefaultValue	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-parserInternals.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-parserInternals.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-parserInternals.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-parserInternals.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,2191 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>parserInternals: internals routines and limits exported by the parser.</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-pattern.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">parserInternals</span></h2>
-<p>parserInternals - internals routines and limits exported by the parser.</p>
-<p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a>(c);
-#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a>(c);
-#define <a href="#IS_BASECHAR">IS_BASECHAR</a>(c);
-#define <a href="#IS_BLANK">IS_BLANK</a>(c);
-#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a>(c);
-#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a>(c);
-#define <a href="#IS_CHAR">IS_CHAR</a>(c);
-#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a>(c);
-#define <a href="#IS_COMBINING">IS_COMBINING</a>(c);
-#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a>(c);
-#define <a href="#IS_DIGIT">IS_DIGIT</a>(c);
-#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a>(c);
-#define <a href="#IS_EXTENDER">IS_EXTENDER</a>(c);
-#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a>(c);
-#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a>(c);
-#define <a href="#IS_LETTER">IS_LETTER</a>(c);
-#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a>(c);
-#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a>(c);
-#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a>(c);
-#define <a href="#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a>;
-#define <a href="#XML_MAX_HUGE_LENGTH">XML_MAX_HUGE_LENGTH</a>;
-#define <a href="#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a>;
-#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a>;
-#define <a href="#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a>;
-#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
-#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a>;
-#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a>;
-#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a>;
-#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a>;
-#define <a href="#inputPop">inputPop</a>;
-#define <a href="#inputPush">inputPush</a>;
-#define <a href="#xmlParserMaxDepth">xmlParserMaxDepth</a>;
-int	<a href="#xmlCheckLanguageID">xmlCheckLanguageID</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * lang);
-int	<a href="#xmlCopyChar">xmlCopyChar</a>			(int len, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * out, <br>					 int val);
-int	<a href="#xmlCopyCharMultiByte">xmlCopyCharMultiByte</a>		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * out, <br>					 int val);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a>	(const char * filename);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateMemoryParserCtxt">xmlCreateMemoryParserCtxt</a>	(const char * buffer, <br>							 int size);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a>	(const char * filename, <br>						 int options);
-void	<a href="#xmlCtxtErrMemory">xmlCtxtErrMemory</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlCtxtPopInput">xmlCtxtPopInput</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlCtxtPushInput">xmlCtxtPushInput</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> value);
-int	<a href="#xmlCurrentChar">xmlCurrentChar</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int * len);
-void	<a href="#xmlFreeInputStream">xmlFreeInputStream</a>		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-int	<a href="#xmlIsLetter">xmlIsLetter</a>			(int c);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewEntityInputStream">xmlNewEntityInputStream</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputFromFile">xmlNewInputFromFile</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const char * filename);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewInputStream">xmlNewInputStream</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNewStringInputStream">xmlNewStringInputStream</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buffer);
-void	<a href="#xmlNextChar">xmlNextChar</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseAttValue">xmlParseAttValue</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseAttribute">xmlParseAttribute</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** value);
-void	<a href="#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlParseAttributeType">xmlParseAttributeType</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> * tree);
-void	<a href="#xmlParseCDSect">xmlParseCDSect</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseCharData">xmlParseCharData</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int cdata);
-int	<a href="#xmlParseCharRef">xmlParseCharRef</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseComment">xmlParseComment</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseContent">xmlParseContent</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlParseDefaultDecl">xmlParseDefaultDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** value);
-void	<a href="#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseElement">xmlParseElement</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int inputchk);
-int	<a href="#xmlParseElementContentDecl">xmlParseElementContentDecl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> * result);
-int	<a href="#xmlParseElementDecl">xmlParseElementDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int inputchk);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseEncName">xmlParseEncName</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseEncodingDecl">xmlParseEncodingDecl</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseEndTag">xmlParseEndTag</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseEntityDecl">xmlParseEntityDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	<a href="#xmlParseEntityRef">xmlParseEntityRef</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseEntityValue">xmlParseEntityValue</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** orig);
-int	<a href="#xmlParseEnumeratedType">xmlParseEnumeratedType</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> * tree);
-<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	<a href="#xmlParseEnumerationType">xmlParseEnumerationType</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseExternalID">xmlParseExternalID</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** publicID, <br>					 int strict);
-void	<a href="#xmlParseExternalSubset">xmlParseExternalSubset</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-void	<a href="#xmlParseMarkupDecl">xmlParseMarkupDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseMisc">xmlParseMisc</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseName">xmlParseName</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseNmtoken">xmlParseNmtoken</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseNotationDecl">xmlParseNotationDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	<a href="#xmlParseNotationType">xmlParseNotationType</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParsePEReference">xmlParsePEReference</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParsePI">xmlParsePI</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParsePITarget">xmlParsePITarget</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParsePubidLiteral">xmlParsePubidLiteral</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseReference">xmlParseReference</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlParseSDDecl">xmlParseSDDecl</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseStartTag">xmlParseStartTag</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseSystemLiteral">xmlParseSystemLiteral</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseTextDecl">xmlParseTextDecl</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseVersionInfo">xmlParseVersionInfo</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlParseVersionNum">xmlParseVersionNum</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParseXMLDecl">xmlParseXMLDecl</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParserHandlePEReference">xmlParserHandlePEReference</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-void	<a href="#xmlParserInputShrink">xmlParserInputShrink</a>		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>	<a href="#xmlPopInput">xmlPopInput</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-int	<a href="#xmlPushInput">xmlPushInput</a>			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-int	<a href="#xmlSkipBlankChars">xmlSkipBlankChars</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSplitQName">xmlSplitQName</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** prefixOut);
-int	<a href="#xmlStringCurrentChar">xmlStringCurrentChar</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int * len);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStringDecodeEntities">xmlStringDecodeEntities</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int what, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end2, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end3);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 int len, <br>						 int what, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end2, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end3);
-int	<a href="#xmlSwitchEncoding">xmlSwitchEncoding</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-int	<a href="#xmlSwitchEncodingName">xmlSwitchEncodingName</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * encoding);
-int	<a href="#xmlSwitchInputEncoding">xmlSwitchInputEncoding</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);
-int	<a href="#xmlSwitchToEncoding">xmlSwitchToEncoding</a>		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_ASCII_DIGIT">Macro </a>IS_ASCII_DIGIT</h3>
-<pre class="programlisting">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a>(c);
-</pre>
-<p>Macro to check [0-9]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_ASCII_LETTER">Macro </a>IS_ASCII_LETTER</h3>
-<pre class="programlisting">#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a>(c);
-</pre>
-<p>Macro to check [a-zA-Z]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_BASECHAR">Macro </a>IS_BASECHAR</h3>
-<pre class="programlisting">#define <a href="#IS_BASECHAR">IS_BASECHAR</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [85] BaseChar ::= ... long list see REC ...</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_BLANK">Macro </a>IS_BLANK</h3>
-<pre class="programlisting">#define <a href="#IS_BLANK">IS_BLANK</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [3] S ::= (#x20 | #x9 | #xD | #xA)+</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_BLANK_CH">Macro </a>IS_BLANK_CH</h3>
-<pre class="programlisting">#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a>(c);
-</pre>
-<p>Behaviour same as <a href="libxml2-parserInternals.html#IS_BLANK">IS_BLANK</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value (normally unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_BYTE_CHAR">Macro </a>IS_BYTE_CHAR</h3>
-<pre class="programlisting">#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [2] Char ::= #x9 | #xA | #xD | [#x20...] any byte character in the accepted range</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an byte value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_CHAR">Macro </a>IS_CHAR</h3>
-<pre class="programlisting">#define <a href="#IS_CHAR">IS_CHAR</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_CHAR_CH">Macro </a>IS_CHAR_CH</h3>
-<pre class="programlisting">#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a>(c);
-</pre>
-<p>Behaves like <a href="libxml2-parserInternals.html#IS_CHAR">IS_CHAR</a> on single-byte value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> (usually an unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_COMBINING">Macro </a>IS_COMBINING</h3>
-<pre class="programlisting">#define <a href="#IS_COMBINING">IS_COMBINING</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [87] CombiningChar ::= ... long list see REC ...</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_COMBINING_CH">Macro </a>IS_COMBINING_CH</h3>
-<pre class="programlisting">#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a>(c);
-</pre>
-<p>Always false (all combining chars &gt; 0xff)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> (usually an unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_DIGIT">Macro </a>IS_DIGIT</h3>
-<pre class="programlisting">#define <a href="#IS_DIGIT">IS_DIGIT</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [88] Digit ::= ... long list see REC ...</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_DIGIT_CH">Macro </a>IS_DIGIT_CH</h3>
-<pre class="programlisting">#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a>(c);
-</pre>
-<p>Behaves like <a href="libxml2-parserInternals.html#IS_DIGIT">IS_DIGIT</a> but with a single byte argument</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value (usually an unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_EXTENDER">Macro </a>IS_EXTENDER</h3>
-<pre class="programlisting">#define <a href="#IS_EXTENDER">IS_EXTENDER</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_EXTENDER_CH">Macro </a>IS_EXTENDER_CH</h3>
-<pre class="programlisting">#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a>(c);
-</pre>
-<p>Behaves like <a href="libxml2-parserInternals.html#IS_EXTENDER">IS_EXTENDER</a> but with a single-byte argument</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value (usually an unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_IDEOGRAPHIC">Macro </a>IS_IDEOGRAPHIC</h3>
-<pre class="programlisting">#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_LETTER">Macro </a>IS_LETTER</h3>
-<pre class="programlisting">#define <a href="#IS_LETTER">IS_LETTER</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [84] Letter ::= BaseChar | Ideographic</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_LETTER_CH">Macro </a>IS_LETTER_CH</h3>
-<pre class="programlisting">#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a>(c);
-</pre>
-<p>Macro behaves like IS_LETTER, but only check base chars</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value (normally unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_PUBIDCHAR">Macro </a>IS_PUBIDCHAR</h3>
-<pre class="programlisting">#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a>(c);
-</pre>
-<p>Macro to check the following production in the XML spec: [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an UNICODE value (int)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="IS_PUBIDCHAR_CH">Macro </a>IS_PUBIDCHAR_CH</h3>
-<pre class="programlisting">#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a>(c);
-</pre>
-<p>Same as <a href="libxml2-parserInternals.html#IS_PUBIDCHAR">IS_PUBIDCHAR</a> but for single-byte value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> value (normally unsigned char)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_DICTIONARY_LIMIT">Macro </a>XML_MAX_DICTIONARY_LIMIT</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a>;
-</pre>
-<p>Maximum size allowed by the parser for a dictionary by default This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_HUGE_LENGTH">Macro </a>XML_MAX_HUGE_LENGTH</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_HUGE_LENGTH">XML_MAX_HUGE_LENGTH</a>;
-</pre>
-<p>Maximum size allowed when <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> is set.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_LOOKUP_LIMIT">Macro </a>XML_MAX_LOOKUP_LIMIT</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_LOOKUP_LIMIT">XML_MAX_LOOKUP_LIMIT</a>;
-</pre>
-<p>Maximum size allowed by the parser for ahead lookup This is an upper boundary enforced by the parser to avoid bad behaviour on "unfriendly' content Introduced in 2.9.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_NAMELEN">Macro </a>XML_MAX_NAMELEN</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a>;
-</pre>
-<p>Identifiers can be longer, but this will be more costly at runtime.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_NAME_LENGTH">Macro </a>XML_MAX_NAME_LENGTH</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a>;
-</pre>
-<p>Maximum size allowed for a markup identifier. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Note that with the use of parsing dictionaries overriding the limit may result in more runtime memory usage in face of "unfriendly' content Introduced in 2.9.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_MAX_TEXT_LENGTH">Macro </a>XML_MAX_TEXT_LENGTH</h3>
-<pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
-</pre>
-<p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it. Introduced in 2.9.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SUBSTITUTE_BOTH">Macro </a>XML_SUBSTITUTE_BOTH</h3>
-<pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a>;
-</pre>
-<p>Both general and parameter entities need to be substituted.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SUBSTITUTE_NONE">Macro </a>XML_SUBSTITUTE_NONE</h3>
-<pre class="programlisting">#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a>;
-</pre>
-<p>If no entities need to be substituted.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SUBSTITUTE_PEREF">Macro </a>XML_SUBSTITUTE_PEREF</h3>
-<pre class="programlisting">#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a>;
-</pre>
-<p>Whether parameter entities need to be substituted.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SUBSTITUTE_REF">Macro </a>XML_SUBSTITUTE_REF</h3>
-<pre class="programlisting">#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a>;
-</pre>
-<p>Whether general entities need to be substituted.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="inputPop">Macro </a>inputPop</h3>
-<pre class="programlisting">#define <a href="#inputPop">inputPop</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="inputPush">Macro </a>inputPush</h3>
-<pre class="programlisting">#define <a href="#inputPush">inputPush</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserMaxDepth">Macro </a>xmlParserMaxDepth</h3>
-<pre class="programlisting">#define <a href="#xmlParserMaxDepth">xmlParserMaxDepth</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringComment">Variable </a>xmlStringComment</h3>
-<pre class="programlisting">const xmlCharxmlStringComment[] xmlStringComment;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringText">Variable </a>xmlStringText</h3>
-<pre class="programlisting">const xmlCharxmlStringText[] xmlStringText;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringTextNoenc">Variable </a>xmlStringTextNoenc</h3>
-<pre class="programlisting">const xmlCharxmlStringTextNoenc[] xmlStringTextNoenc;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCheckLanguageID"></a>xmlCheckLanguageID ()</h3>
-<pre class="programlisting">int	xmlCheckLanguageID		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * lang)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. 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 ('-' Subcode)* [34] Langcode ::= ISO639Code | IanaCode | UserCode [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+ [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+ The current REC reference the successors of RFC 1766, currently 5646 http://www.rfc-editor.org/rfc/rfc5646.txt langtag = language ["-" script] ["-" region] *("-" variant) *("-" extension) ["-" privateuse] language = 2*3ALPHA ; shortest ISO 639 code ["-" extlang] ; sometimes followed by ; extended language subtags / 4ALPHA ; or reserved for future use / 5*8ALPHA ; or registered language subtag extlang = 3ALPHA ; selected ISO 639 codes *2("-" 3ALPHA) ; permanently reserved script = 4ALPHA ; ISO 15924 code region = 2ALPHA ; ISO 3166-1 code / 3DIGIT ; UN M.49 code variant = 5*8alphanum ; registered variants / (DIGIT 3alphanum) extension = singleton 1*("-" (2*8alphanum)) ; Single alphanumerics ; "x" reserved for private use singleton = DIGIT ; 0 - 9 / %x41-57 ; A - W / %x59-5A ; Y - Z / %x61-77 ; a - w / %x79-7A ; y - z it sounds right to still allow Irregular i-xxx IANA and user codes too The parser below doesn't try to cope with extension or privateuse that could be added but that's not interoperable anyway</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>lang</tt></i>:</span></td>
-<td>pointer to the string value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if correct 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyChar"></a>xmlCopyChar ()</h3>
-<pre class="programlisting">int	xmlCopyChar			(int len, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * out, <br>					 int val)<br>
-</pre>
-<p>DEPRECATED: Don't use. append the char value in the array</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>Ignored, compatibility</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to an array of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the char value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> written</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyCharMultiByte"></a>xmlCopyCharMultiByte ()</h3>
-<pre class="programlisting">int	xmlCopyCharMultiByte		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * out, <br>					 int val)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. append the char value in the array</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>pointer to an array of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the char value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> written</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateEntityParserCtxt"></a>xmlCreateEntityParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateEntityParserCtxt	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URL, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base)<br>
-</pre>
-<p>DEPRECATED: Don't use. Create a parser context for an external entity Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the entity URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ID</tt></i>:</span></td>
-<td>the entity PUBLIC ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>base</tt></i>:</span></td>
-<td>a possible base for the target URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateFileParserCtxt"></a>xmlCreateFileParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateFileParserCtxt	(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a>. Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateMemoryParserCtxt"></a>xmlCreateMemoryParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateMemoryParserCtxt	(const char * buffer, <br>							 int size)<br>
-</pre>
-<p>Create a parser context for an XML in-memory document. The input buffer must not contain a terminating null byte.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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 new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateURLParserCtxt"></a>xmlCreateURLParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlCreateURLParserCtxt	(const char * filename, <br>						 int options)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a> and <a href="libxml2-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a>. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser context or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtErrMemory"></a>xmlCtxtErrMemory ()</h3>
-<pre class="programlisting">void	xmlCtxtErrMemory		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Handle an out-of-memory error. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtPopInput"></a>xmlCtxtPopInput ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlCtxtPopInput	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Pops the top parser input from the input stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the input just removed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtPushInput"></a>xmlCtxtPushInput ()</h3>
-<pre class="programlisting">int	xmlCtxtPushInput		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> value)<br>
-</pre>
-<p>Pushes a new parser input on top of the input stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, the index in the stack otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCurrentChar"></a>xmlCurrentChar ()</h3>
-<pre class="programlisting">int	xmlCurrentChar			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int * len)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. 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 "#xD#xA" 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.)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>pointer to the length of the char read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current char value and its length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeInputStream"></a>xmlFreeInputStream ()</h3>
-<pre class="programlisting">void	xmlFreeInputStream		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>Free up an input stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsLetter"></a>xmlIsLetter ()</h3>
-<pre class="programlisting">int	xmlIsLetter			(int c)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Check whether the character is allowed by the production [84] Letter ::= BaseChar | Ideographic</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>c</tt></i>:</span></td>
-<td>an unicode character (int)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if not, non-zero otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewEntityInputStream"></a>xmlNewEntityInputStream ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewEntityInputStream	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. Create a new input stream based on an <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ent</tt></i>:</span></td>
-<td>an Entity pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new input stream or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputFromFile"></a>xmlNewInputFromFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputFromFile	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const char * filename)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromUrl">xmlNewInputFromUrl</a>. Create a new input stream based on a file or an URL.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename to use as entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new input stream or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewInputStream"></a>xmlNewInputStream ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewInputStream	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromUrl">xmlNewInputFromUrl</a> or similar functions. Create a new input stream structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new input stream or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewStringInputStream"></a>xmlNewStringInputStream ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNewStringInputStream	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buffer)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromString">xmlNewInputFromString</a>. Create a new input stream based on a memory buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>an memory buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new input stream</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNextChar"></a>xmlNextChar ()</h3>
-<pre class="programlisting">void	xmlNextChar			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. Skip to the next char input char.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseAttValue"></a>xmlParseAttValue ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseAttValue	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse a value for an attribute Note: the parser won't do substitution of entities here, this will be handled later in <a href="libxml2-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a> [10] AttValue ::= '"' ([^&lt;&amp;"] | Reference)* '"' | "'" ([^&lt;&amp;'] | Reference)* "'" 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 "#xD#xA" 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the AttValue parsed or NULL. The value has to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseAttribute"></a>xmlParseAttribute ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseAttribute	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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 "&amp;lt;") 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? '=' S? With namespace: [NS 11] Attribute ::= QName Eq AttValue Also the case QName == xmlns:??? is handled independently as a namespace definition.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** used to store the value of the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute name, and the value in *value.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseAttributeListDecl"></a>xmlParseAttributeListDecl ()</h3>
-<pre class="programlisting">void	xmlParseAttributeListDecl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an attribute list declaration for an element. Always consumes '&lt;!'. [52] AttlistDecl ::= '&lt;!ATTLIST' S Name AttDef* S? '&gt;' [53] AttDef ::= S Name S AttType S DefaultDecl</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseAttributeType"></a>xmlParseAttributeType ()</h3>
-<pre class="programlisting">int	xmlParseAttributeType		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> * tree)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the Attribute list def for an element [54] AttType ::= StringType | TokenizedType | EnumeratedType [55] StringType ::= 'CDATA' [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>the enumeration tree built while parsing</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute type</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCDSect"></a>xmlParseCDSect ()</h3>
-<pre class="programlisting">void	xmlParseCDSect			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse escaped pure raw content. Always consumes '&lt;!['. [18] CDSect ::= CDStart CData CDEnd [19] CDStart ::= '&lt;![CDATA[' [20] Data ::= (Char* - (Char* ']]&gt;' Char*)) [21] CDEnd ::= ']]&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCharData"></a>xmlParseCharData ()</h3>
-<pre class="programlisting">void	xmlParseCharData		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 int cdata)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cdata</tt></i>:</span></td>
-<td>unused</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseCharRef"></a>xmlParseCharRef ()</h3>
-<pre class="programlisting">int	xmlParseCharRef			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse a numeric character reference. Always consumes '&amp;'. [66] CharRef ::= '&amp;#' [0-9]+ ';' | '&amp;#x' [0-9a-fA-F]+ ';' [ WFC: Legal Character ] Characters referred to using character references must match the production for Char.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value parsed (as an int), 0 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseComment"></a>xmlParseComment ()</h3>
-<pre class="programlisting">void	xmlParseComment			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an XML (SGML) comment. Always consumes '&lt;!'. The spec says that "For compatibility, the string "--" (double-hyphen) must not occur within comments. " [15] Comment ::= '&lt;!--' ((Char - '-') | ('-' (Char - '-')))* '--&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseContent"></a>xmlParseContent ()</h3>
-<pre class="programlisting">void	xmlParseContent			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Parse XML element content. This is useful if you're only interested in custom SAX callbacks. If you want a node list, use <a href="libxml2-parser.html#xmlCtxtParseContent">xmlCtxtParseContent</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseDefaultDecl"></a>xmlParseDefaultDecl ()</h3>
-<pre class="programlisting">int	xmlParseDefaultDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an attribute default declaration [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' 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()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>Receive a possible fixed default value for the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, <a href="libxml2-tree.html#XML_ATTRIBUTE_IMPLIED">XML_ATTRIBUTE_IMPLIED</a> or <a href="libxml2-tree.html#XML_ATTRIBUTE_FIXED">XML_ATTRIBUTE_FIXED</a>.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseDocTypeDecl"></a>xmlParseDocTypeDecl ()</h3>
-<pre class="programlisting">void	xmlParseDocTypeDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse a DOCTYPE declaration [28] doctypedecl ::= '&lt;!DOCTYPE' S Name (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '&gt;' [ VC: Root Element Type ] The Name in the document type declaration must match the element type of the root element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseElement"></a>xmlParseElement ()</h3>
-<pre class="programlisting">void	xmlParseElement			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML element [39] element ::= EmptyElemTag | STag content ETag [ WFC: Element Type Match ] The Name in an element's end-tag must match the element type in the start-tag.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseElementChildrenContentDecl"></a>xmlParseElementChildrenContentDecl ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlParseElementChildrenContentDecl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int inputchk)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the declaration for a Mixed Element content The leading '(' and spaces have been skipped in <a href="libxml2-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a> [47] children ::= (choice | seq) ('?' | '*' | '+')? [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')? [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' [ 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 ,).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inputchk</tt></i>:</span></td>
-<td>the input used for the current entity, needed for boundary checks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the tree of <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> describing the element hierarchy.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseElementContentDecl"></a>xmlParseElementContentDecl ()</h3>
-<pre class="programlisting">int	xmlParseElementContentDecl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> * result)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the declaration for an Element content either Mixed or Children, the cases EMPTY and ANY are handled directly in <a href="libxml2-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a> [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the element being defined.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>result</tt></i>:</span></td>
-<td>the Element Content pointer will be stored here if any</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the type of element content XML_ELEMENT_TYPE_xxx</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseElementDecl"></a>xmlParseElementDecl ()</h3>
-<pre class="programlisting">int	xmlParseElementDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an element declaration. Always consumes '&lt;!'. [45] elementdecl ::= '&lt;!ELEMENT' S Name S contentspec S? '&gt;' [ VC: Unique Element Type Declaration ] No element type may be declared more than once</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the type of the element, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseElementMixedContentDecl"></a>xmlParseElementMixedContentDecl ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlParseElementMixedContentDecl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int inputchk)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the declaration for a Mixed Element content The leading '(' and spaces have been skipped in <a href="libxml2-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a> [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#PCDATA' S? ')' [ 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inputchk</tt></i>:</span></td>
-<td>the input used for the current entity, needed for boundary checks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the list of the <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> describing the element choices</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEncName"></a>xmlParseEncName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseEncName		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the XML encoding name [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the encoding name value or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEncodingDecl"></a>xmlParseEncodingDecl ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseEncodingDecl	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the XML encoding declaration [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'") this setups the conversion filters.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the encoding value or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEndTag"></a>xmlParseEndTag ()</h3>
-<pre class="programlisting">void	xmlParseEndTag			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an end of tag [42] ETag ::= '&lt;/' Name S? '&gt;' With namespace [NS 9] ETag ::= '&lt;/' QName S? '&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEntityDecl"></a>xmlParseEntityDecl ()</h3>
-<pre class="programlisting">void	xmlParseEntityDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an entity declaration. Always consumes '&lt;!'. [70] EntityDecl ::= GEDecl | PEDecl [71] GEDecl ::= '&lt;!ENTITY' S Name S EntityDef S? '&gt;' [72] PEDecl ::= '&lt;!ENTITY' S '%' S Name S PEDef S? '&gt;' [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?) [74] PEDef ::= EntityValue | ExternalID [76] NDataDecl ::= S 'NDATA' S Name [ VC: Notation Declared ] The Name must match the declared name of a notation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEntityRef"></a>xmlParseEntityRef ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	xmlParseEntityRef	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a> if found, or NULL otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEntityValue"></a>xmlParseEntityValue ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseEntityValue	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** orig)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse a value for ENTITY declarations [9] EntityValue ::= '"' ([^%&amp;"] | PEReference | Reference)* '"' | "'" ([^%&amp;'] | PEReference | Reference)* "'"</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>orig</tt></i>:</span></td>
-<td>if non-NULL store a copy of the original entity value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the EntityValue parsed with reference substituted or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEnumeratedType"></a>xmlParseEnumeratedType ()</h3>
-<pre class="programlisting">int	xmlParseEnumeratedType		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> * tree)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an Enumerated attribute type. [57] EnumeratedType ::= NotationType | Enumeration [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>the enumeration tree built while parsing</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>
-<a href="libxml2-tree.html#XML_ATTRIBUTE_ENUMERATION">XML_ATTRIBUTE_ENUMERATION</a> or <a href="libxml2-tree.html#XML_ATTRIBUTE_NOTATION">XML_ATTRIBUTE_NOTATION</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseEnumerationType"></a>xmlParseEnumerationType ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	xmlParseEnumerationType	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an Enumeration attribute type. [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [ VC: Enumeration ] Values of this type must match one of the Nmtoken tokens in the declaration</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the enumeration attribute tree built while parsing</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseExternalID"></a>xmlParseExternalID ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseExternalID	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** publicID, <br>					 int strict)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse an External ID or a Public ID NOTE: Productions [75] and [83] interact badly since [75] can generate 'PUBLIC' S PubidLiteral S SystemLiteral [75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral [83] PublicID ::= 'PUBLIC' S PubidLiteral</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicID</tt></i>:</span></td>
-<td>a xmlChar** receiving PubidLiteral</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strict</tt></i>:</span></td>
-<td>indicate whether we should restrict parsing to only production [75], see NOTE below</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseExternalSubset"></a>xmlParseExternalSubset ()</h3>
-<pre class="programlisting">void	xmlParseExternalSubset		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse Markup declarations from an external subset [30] extSubset ::= textDecl? extSubsetDecl [31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the system identifier (or URL)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseMarkupDecl"></a>xmlParseMarkupDecl ()</h3>
-<pre class="programlisting">void	xmlParseMarkupDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse markup declarations. Always consumes '&lt;!' or '&lt;?'. [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.)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseMisc"></a>xmlParseMisc ()</h3>
-<pre class="programlisting">void	xmlParseMisc			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML Misc* optional field. [27] Misc ::= Comment | PI | S</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseName"></a>xmlParseName ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseName		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML name. [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender [5] Name ::= (Letter | '_' | ':') (NameChar)* [6] Names ::= Name (#x20 Name)*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the Name parsed or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseNmtoken"></a>xmlParseNmtoken ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseNmtoken		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML Nmtoken. [7] Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the Nmtoken parsed or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseNotationDecl"></a>xmlParseNotationDecl ()</h3>
-<pre class="programlisting">void	xmlParseNotationDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse a notation declaration. Always consumes '&lt;!'. [82] NotationDecl ::= '&lt;!NOTATION' S Name S (ExternalID | PublicID) S? '&gt;' Hence there is actually 3 choices: 'PUBLIC' S PubidLiteral 'PUBLIC' S PubidLiteral S SystemLiteral and 'SYSTEM' S SystemLiteral See the NOTE on xmlParseExternalID().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseNotationType"></a>xmlParseNotationType ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	xmlParseNotationType	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an Notation attribute type. Note: the leading 'NOTATION' S part has already being parsed... [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [ 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the notation attribute tree built while parsing</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParsePEReference"></a>xmlParsePEReference ()</h3>
-<pre class="programlisting">void	xmlParsePEReference		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse a parameter entity reference. Always consumes '%'. The entity content is handled directly by pushing it's content as a new input stream. [69] PEReference ::= '%' Name ';' [ 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 "standalone='yes'", ... ... 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 "standalone='no'", ... ... 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParsePI"></a>xmlParsePI ()</h3>
-<pre class="programlisting">void	xmlParsePI			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML Processing Instruction. [16] PI ::= '&lt;?' PITarget (S (Char* - (Char* '?&gt;' Char*)))? '?&gt;' The processing is transferred to SAX once parsed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParsePITarget"></a>xmlParsePITarget ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParsePITarget	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the name of a PI [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the PITarget name or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParsePubidLiteral"></a>xmlParsePubidLiteral ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParsePubidLiteral	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML public literal [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the PubidLiteral parsed or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseReference"></a>xmlParseReference ()</h3>
-<pre class="programlisting">void	xmlParseReference		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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. Always consumes '&amp;'. [67] Reference ::= EntityRef | CharRef</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseSDDecl"></a>xmlParseSDDecl ()</h3>
-<pre class="programlisting">int	xmlParseSDDecl			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the XML standalone declaration [32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"')) [ VC: Standalone Document Declaration ] TODO The standalone document declaration must have the value "no" 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if standalone="yes" 0 if standalone="no" -2 if standalone attribute is missing or invalid (A standalone value of -2 means that the XML declaration was found, but no value was specified for the standalone attribute).</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseStartTag"></a>xmlParseStartTag ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseStartTag	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse a start tag. Always consumes '&lt;'. [40] STag ::= '&lt;' Name (S Attribute)* S? '&gt;' [ WFC: Unique Att Spec ] No attribute name may appear more than once in the same start-tag or empty-element tag. [44] EmptyElemTag ::= '&lt;' Name (S Attribute)* S? '/&gt;' [ 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 ::= '&lt;' QName (S Attribute)* S? '&gt;' [NS 10] EmptyElement ::= '&lt;' QName (S Attribute)* S? '/&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the element name parsed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseSystemLiteral"></a>xmlParseSystemLiteral ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseSystemLiteral	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML Literal [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the SystemLiteral parsed or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseTextDecl"></a>xmlParseTextDecl ()</h3>
-<pre class="programlisting">void	xmlParseTextDecl		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML declaration header for external entities [77] TextDecl ::= '&lt;?xml' VersionInfo? EncodingDecl S? '?&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseVersionInfo"></a>xmlParseVersionInfo ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseVersionInfo	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the XML version. [24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ") [25] Eq ::= S? '=' S?</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the version string, e.g. "1.0"</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseVersionNum"></a>xmlParseVersionNum ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlParseVersionNum	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse the XML version value. [26] VersionNum ::= '1.' [0-9]+ In practice allow [0-9].[0-9]+ at that level</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the string giving the XML version number, or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseXMLDecl"></a>xmlParseXMLDecl ()</h3>
-<pre class="programlisting">void	xmlParseXMLDecl			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. parse an XML declaration header [23] XMLDecl ::= '&lt;?xml' VersionInfo EncodingDecl? SDDecl? S? '?&gt;'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserHandlePEReference"></a>xmlParserHandlePEReference ()</h3>
-<pre class="programlisting">void	xmlParserHandlePEReference	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. [69] PEReference ::= '%' Name ';' [ 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 "standalone='yes'", ... ... 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 "standalone='no'", ... ... 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputShrink"></a>xmlParserInputShrink ()</h3>
-<pre class="programlisting">void	xmlParserInputShrink		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> in)<br>
-</pre>
-<p>DEPRECATED: Don't use. This function removes used input for the parser.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>an XML parser input</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPopInput"></a>xmlPopInput ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a>	xmlPopInput			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> in the parser context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPushInput"></a>xmlPushInput ()</h3>
-<pre class="programlisting">int	xmlPushInput			(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Push an input stream onto the stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>an XML parser input fragment (entity, XML fragment ...).</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error or the index in the input stack</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSkipBlankChars"></a>xmlSkipBlankChars ()</h3>
-<pre class="programlisting">int	xmlSkipBlankChars		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. Skip whitespace in the input stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of space chars skipped</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSplitQName"></a>xmlSplitQName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSplitQName		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** prefixOut)<br>
-</pre>
-<p>DEPRECATED: Don't use. parse an UTF8 encoded XML qualified name string [NS 5] QName ::= (Prefix ':')? LocalPart [NS 6] Prefix ::= NCName [NS 7] LocalPart ::= NCName</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefixOut</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> **</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local part, and prefix is updated to get the Prefix if any.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringCurrentChar"></a>xmlStringCurrentChar ()</h3>
-<pre class="programlisting">int	xmlStringCurrentChar		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int * len)<br>
-</pre>
-<p>DEPRECATED: Internal function, do not use. The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>pointer to the beginning of the char</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>pointer to the length of the char read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current char value and its length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringDecodeEntities"></a>xmlStringDecodeEntities ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStringDecodeEntities	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int what, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end2, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end3)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the input string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>what</tt></i>:</span></td>
-<td>combination of <a href="libxml2-parserInternals.html#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a> and <a href="libxml2-parserInternals.html#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end2</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end3</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>A newly allocated string with the substitution done. The caller must deallocate it !</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringLenDecodeEntities"></a>xmlStringLenDecodeEntities ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStringLenDecodeEntities	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 int len, <br>						 int what, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end2, <br>						 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> end3)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the input string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the string length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>what</tt></i>:</span></td>
-<td>combination of <a href="libxml2-parserInternals.html#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a> and <a href="libxml2-parserInternals.html#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end2</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>end3</tt></i>:</span></td>
-<td>an end marker xmlChar, 0 if none</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>A newly allocated string with the substitution done. The caller must deallocate it !</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSwitchEncoding"></a>xmlSwitchEncoding ()</h3>
-<pre class="programlisting">int	xmlSwitchEncoding		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>Use encoding specified by enum to decode input data. This overrides the encoding found in the XML declaration. This function can also be used to override the encoding of chunks passed to <a href="libxml2-parser.html#xmlParseChunk">xmlParseChunk</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the encoding value (number)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSwitchEncodingName"></a>xmlSwitchEncodingName ()</h3>
-<pre class="programlisting">int	xmlSwitchEncodingName		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 const char * encoding)<br>
-</pre>
-<p>Use specified encoding to decode input data. This overrides the encoding found in the XML declaration. This function can also be used to override the encoding of chunks passed to <a href="libxml2-parser.html#xmlParseChunk">xmlParseChunk</a>. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSwitchInputEncoding"></a>xmlSwitchInputEncoding ()</h3>
-<pre class="programlisting">int	xmlSwitchInputEncoding		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Use encoding handler to decode input data.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context, only for error reporting</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the input stream</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the encoding handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSwitchToEncoding"></a>xmlSwitchToEncoding ()</h3>
-<pre class="programlisting">int	xmlSwitchToEncoding		(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> handler)<br>
-</pre>
-<p>Use encoding handler to decode input data. This function can be used to enforce the encoding of chunks passed to <a href="libxml2-parser.html#xmlParseChunk">xmlParseChunk</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the encoding handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-pattern.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-pattern.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-pattern.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-pattern.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,484 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>pattern: pattern expression handling</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-parserInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-relaxng.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">pattern</span></h2>
-<p>pattern - pattern expression handling</p>
-<p>allows to compile and test pattern expressions for nodes either in a tree or based on a parser state. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlPattern <a href="#xmlPattern">xmlPattern</a>;
-typedef enum <a href="#xmlPatternFlags">xmlPatternFlags</a>;
-typedef <a href="libxml2-pattern.html#xmlPattern">xmlPattern</a> * <a href="#xmlPatternPtr">xmlPatternPtr</a>;
-typedef struct _xmlStreamCtxt <a href="#xmlStreamCtxt">xmlStreamCtxt</a>;
-typedef <a href="libxml2-pattern.html#xmlStreamCtxt">xmlStreamCtxt</a> * <a href="#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>;
-void	<a href="#xmlFreePattern">xmlFreePattern</a>			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-void	<a href="#xmlFreePatternList">xmlFreePatternList</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-void	<a href="#xmlFreeStreamCtxt">xmlFreeStreamCtxt</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream);
-int	<a href="#xmlPatternCompileSafe">xmlPatternCompileSafe</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 <a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> * patternOut);
-int	<a href="#xmlPatternFromRoot">xmlPatternFromRoot</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>	<a href="#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a>	(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-int	<a href="#xmlPatternMatch">xmlPatternMatch</a>			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlPatternMaxDepth">xmlPatternMaxDepth</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-int	<a href="#xmlPatternMinDepth">xmlPatternMinDepth</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-int	<a href="#xmlPatternStreamable">xmlPatternStreamable</a>		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp);
-<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a>	<a href="#xmlPatterncompile">xmlPatterncompile</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces);
-int	<a href="#xmlStreamPop">xmlStreamPop</a>			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream);
-int	<a href="#xmlStreamPush">xmlStreamPush</a>			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
-int	<a href="#xmlStreamPushAttr">xmlStreamPushAttr</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
-int	<a href="#xmlStreamPushNode">xmlStreamPushNode</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 int nodeType);
-int	<a href="#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a>		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> streamCtxt);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPattern">Structure </a>xmlPattern</h3>
-<pre class="programlisting">struct _xmlPattern {
-The content of this structure is not made public by the API.
-} xmlPattern;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternFlags">Enum </a>xmlPatternFlags</h3>
-<pre class="programlisting">enum <a href="#xmlPatternFlags">xmlPatternFlags</a> {
-    <a name="XML_PATTERN_DEFAULT">XML_PATTERN_DEFAULT</a> = 0 /* simple pattern match */
-    <a name="XML_PATTERN_XPATH">XML_PATTERN_XPATH</a> = 1 /* standard XPath pattern */
-    <a name="XML_PATTERN_XSSEL">XML_PATTERN_XSSEL</a> = 2 /* XPath subset for schema selector */
-    <a name="XML_PATTERN_XSFIELD">XML_PATTERN_XSFIELD</a> = 4 /*  XPath subset for schema field */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternPtr">Typedef </a>xmlPatternPtr</h3>
-<pre class="programlisting"><a href="libxml2-pattern.html#xmlPattern">xmlPattern</a> * xmlPatternPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamCtxt">Structure </a>xmlStreamCtxt</h3>
-<pre class="programlisting">struct _xmlStreamCtxt {
-The content of this structure is not made public by the API.
-} xmlStreamCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamCtxtPtr">Typedef </a>xmlStreamCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-pattern.html#xmlStreamCtxt">xmlStreamCtxt</a> * xmlStreamCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreePattern"></a>xmlFreePattern ()</h3>
-<pre class="programlisting">void	xmlFreePattern			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Free up the memory allocated by @comp</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>an XSLT comp</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreePatternList"></a>xmlFreePatternList ()</h3>
-<pre class="programlisting">void	xmlFreePatternList		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Free up the memory allocated by all the elements of @comp</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>an XSLT comp list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeStreamCtxt"></a>xmlFreeStreamCtxt ()</h3>
-<pre class="programlisting">void	xmlFreeStreamCtxt		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br>
-</pre>
-<p>Free the stream context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>the stream context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternCompileSafe"></a>xmlPatternCompileSafe ()</h3>
-<pre class="programlisting">int	xmlPatternCompileSafe		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces, <br>					 <a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> * patternOut)<br>
-</pre>
-<p>Compile a pattern. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pattern</tt></i>:</span></td>
-<td>the pattern to compile</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>an optional dictionary for interned strings</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>compilation flags, see <a href="libxml2-pattern.html#xmlPatternFlags">xmlPatternFlags</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
-<td>the prefix definitions, array of [URI, prefix] or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>patternOut</tt></i>:</span></td>
-<td>output pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternFromRoot"></a>xmlPatternFromRoot ()</h3>
-<pre class="programlisting">int	xmlPatternFromRoot		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Check if the pattern must be looked at from the root.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternGetStreamCtxt"></a>xmlPatternGetStreamCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a>	xmlPatternGetStreamCtxt	(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Get a streaming context for that pattern Use <a href="libxml2-pattern.html#xmlFreeStreamCtxt">xmlFreeStreamCtxt</a> to free the context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the context or NULL in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternMatch"></a>xmlPatternMatch ()</h3>
-<pre class="programlisting">int	xmlPatternMatch			(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Test whether the node matches the pattern</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if it matches, 0 if it doesn't and -1 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternMaxDepth"></a>xmlPatternMaxDepth ()</h3>
-<pre class="programlisting">int	xmlPatternMaxDepth		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Check the maximum depth reachable by a pattern</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-2 if no limit (using //), otherwise the depth, and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternMinDepth"></a>xmlPatternMinDepth ()</h3>
-<pre class="programlisting">int	xmlPatternMinDepth		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error otherwise the depth,</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatternStreamable"></a>xmlPatternStreamable ()</h3>
-<pre class="programlisting">int	xmlPatternStreamable		(<a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a> comp)<br>
-</pre>
-<p>Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if streamable, 0 if not and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPatterncompile"></a>xmlPatterncompile ()</h3>
-<pre class="programlisting"><a href="libxml2-pattern.html#xmlPatternPtr">xmlPatternPtr</a>	xmlPatterncompile	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 <a href="libxml2-dict.html#xmlDict">xmlDict</a> * dict, <br>					 int flags, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)<br>
-</pre>
-<p>Compile a pattern.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pattern</tt></i>:</span></td>
-<td>the pattern to compile</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dict</tt></i>:</span></td>
-<td>an optional dictionary for interned strings</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>compilation flags, see <a href="libxml2-pattern.html#xmlPatternFlags">xmlPatternFlags</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
-<td>the prefix definitions, array of [URI, prefix] or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the compiled form of the pattern or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamPop"></a>xmlStreamPop ()</h3>
-<pre class="programlisting">int	xmlStreamPop			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream)<br>
-</pre>
-<p>push one level from the stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>the stream context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamPush"></a>xmlStreamPush ()</h3>
-<pre class="programlisting">int	xmlStreamPush			(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns)<br>
-</pre>
-<p>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Otherwise the function will act as if it has been given an element-node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>the stream context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the current name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamPushAttr"></a>xmlStreamPushAttr ()</h3>
-<pre class="programlisting">int	xmlStreamPushAttr		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns)<br>
-</pre>
-<p>Push new attribute data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Otherwise the function will act as if it has been given an attribute-node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>the stream context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the current name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamPushNode"></a>xmlStreamPushNode ()</h3>
-<pre class="programlisting">int	xmlStreamPushNode		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> stream, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 int nodeType)<br>
-</pre>
-<p>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Different from xmlStreamPush() this function can be fed with nodes of type: element-, attribute-, text-, cdata-section-, comment- and processing-instruction-node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>the stream context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the current name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodeType</tt></i>:</span></td>
-<td>the type of the node being pushed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStreamWantsAnyNode"></a>xmlStreamWantsAnyNode ()</h3>
-<pre class="programlisting">int	xmlStreamWantsAnyNode		(<a href="libxml2-pattern.html#xmlStreamCtxtPtr">xmlStreamCtxtPtr</a> streamCtxt)<br>
-</pre>
-<p>Query if the streaming pattern additionally needs to be fed with text-, cdata-section-, comment- and processing-instruction-nodes. If the result is 0 then only element-nodes and attribute-nodes need to be pushed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>streamCtxt</tt></i>:</span></td>
-<td>the stream context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of need of nodes of the above described types, 0 otherwise. -1 on API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-relaxng.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-relaxng.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-relaxng.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-relaxng.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,818 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>relaxng: implementation of the Relax-NG validation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-pattern.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-schemasInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">relaxng</span></h2>
-<p>relaxng - implementation of the Relax-NG validation</p>
-<p>implementation of the Relax-NG validation </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlRelaxNG <a href="#xmlRelaxNG">xmlRelaxNG</a>;
-typedef struct _xmlRelaxNGParserCtxt <a href="#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a>;
-typedef <a href="libxml2-relaxng.html#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a> * <a href="#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>;
-typedef enum <a href="#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a>;
-typedef <a href="libxml2-relaxng.html#xmlRelaxNG">xmlRelaxNG</a> * <a href="#xmlRelaxNGPtr">xmlRelaxNGPtr</a>;
-typedef struct _xmlRelaxNGValidCtxt <a href="#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a>;
-typedef <a href="libxml2-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a> * <a href="#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a>;
-typedef enum <a href="#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a>;
-void	<a href="#xmlRelaxNGCleanupTypes">xmlRelaxNGCleanupTypes</a>		(void);
-void	<a href="#xmlRelaxNGDump">xmlRelaxNGDump</a>			(FILE * output, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema);
-void	<a href="#xmlRelaxNGDumpTree">xmlRelaxNGDumpTree</a>		(FILE * output, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema);
-void	<a href="#xmlRelaxNGFree">xmlRelaxNGFree</a>			(<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema);
-void	<a href="#xmlRelaxNGFreeParserCtxt">xmlRelaxNGFreeParserCtxt</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt);
-void	<a href="#xmlRelaxNGFreeValidCtxt">xmlRelaxNGFreeValidCtxt</a>		(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt);
-int	<a href="#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br>					 void ** ctx);
-int	<a href="#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br>					 void ** ctx);
-int	<a href="#xmlRelaxNGInitTypes">xmlRelaxNGInitTypes</a>		(void);
-<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	<a href="#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	<a href="#xmlRelaxNGNewMemParserCtxt">xmlRelaxNGNewMemParserCtxt</a>	(const char * buffer, <br>							 int size);
-<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	<a href="#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a>	(const char * URL);
-<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a>	<a href="#xmlRelaxNGNewValidCtxt">xmlRelaxNGNewValidCtxt</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema);
-<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a>	<a href="#xmlRelaxNGParse">xmlRelaxNGParse</a>		(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt);
-void	<a href="#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br>					 void * ctx);
-void	<a href="#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx);
-void	<a href="#xmlRelaxNGSetResourceLoader">xmlRelaxNGSetResourceLoader</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * vctxt);
-void	<a href="#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br>					 void * ctx);
-void	<a href="#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx);
-int	<a href="#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a>		(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-int	<a href="#xmlRelaxNGValidatePopElement">xmlRelaxNGValidatePopElement</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-int	<a href="#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br>					 int len);
-int	<a href="#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a>	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-typedef void <a href="#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef void <a href="#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-int	<a href="#xmlRelaxParserSetFlag">xmlRelaxParserSetFlag</a>		(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 int flags);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNG">Structure </a>xmlRelaxNG</h3>
-<pre class="programlisting">struct _xmlRelaxNG {
-The content of this structure is not made public by the API.
-} xmlRelaxNG;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGParserCtxt">Structure </a>xmlRelaxNGParserCtxt</h3>
-<pre class="programlisting">struct _xmlRelaxNGParserCtxt {
-The content of this structure is not made public by the API.
-} xmlRelaxNGParserCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGParserCtxtPtr">Typedef </a>xmlRelaxNGParserCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxt">xmlRelaxNGParserCtxt</a> * xmlRelaxNGParserCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGParserFlag">Enum </a>xmlRelaxNGParserFlag</h3>
-<pre class="programlisting">enum <a href="#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a> {
-    <a name="XML_RELAXNGP_NONE">XML_RELAXNGP_NONE</a> = 0
-    <a name="XML_RELAXNGP_FREE_DOC">XML_RELAXNGP_FREE_DOC</a> = 1
-    <a name="XML_RELAXNGP_CRNG">XML_RELAXNGP_CRNG</a> = 2
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGPtr">Typedef </a>xmlRelaxNGPtr</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNG">xmlRelaxNG</a> * xmlRelaxNGPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidCtxt">Structure </a>xmlRelaxNGValidCtxt</h3>
-<pre class="programlisting">struct _xmlRelaxNGValidCtxt {
-The content of this structure is not made public by the API.
-} xmlRelaxNGValidCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidCtxtPtr">Typedef </a>xmlRelaxNGValidCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGValidCtxt">xmlRelaxNGValidCtxt</a> * xmlRelaxNGValidCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidErr">Enum </a>xmlRelaxNGValidErr</h3>
-<pre class="programlisting">enum <a href="#xmlRelaxNGValidErr">xmlRelaxNGValidErr</a> {
-    <a name="XML_RELAXNG_OK">XML_RELAXNG_OK</a> = 0
-    <a name="XML_RELAXNG_ERR_MEMORY">XML_RELAXNG_ERR_MEMORY</a> = 1
-    <a name="XML_RELAXNG_ERR_TYPE">XML_RELAXNG_ERR_TYPE</a> = 2
-    <a name="XML_RELAXNG_ERR_TYPEVAL">XML_RELAXNG_ERR_TYPEVAL</a> = 3
-    <a name="XML_RELAXNG_ERR_DUPID">XML_RELAXNG_ERR_DUPID</a> = 4
-    <a name="XML_RELAXNG_ERR_TYPECMP">XML_RELAXNG_ERR_TYPECMP</a> = 5
-    <a name="XML_RELAXNG_ERR_NOSTATE">XML_RELAXNG_ERR_NOSTATE</a> = 6
-    <a name="XML_RELAXNG_ERR_NODEFINE">XML_RELAXNG_ERR_NODEFINE</a> = 7
-    <a name="XML_RELAXNG_ERR_LISTEXTRA">XML_RELAXNG_ERR_LISTEXTRA</a> = 8
-    <a name="XML_RELAXNG_ERR_LISTEMPTY">XML_RELAXNG_ERR_LISTEMPTY</a> = 9
-    <a name="XML_RELAXNG_ERR_INTERNODATA">XML_RELAXNG_ERR_INTERNODATA</a> = 10
-    <a name="XML_RELAXNG_ERR_INTERSEQ">XML_RELAXNG_ERR_INTERSEQ</a> = 11
-    <a name="XML_RELAXNG_ERR_INTEREXTRA">XML_RELAXNG_ERR_INTEREXTRA</a> = 12
-    <a name="XML_RELAXNG_ERR_ELEMNAME">XML_RELAXNG_ERR_ELEMNAME</a> = 13
-    <a name="XML_RELAXNG_ERR_ATTRNAME">XML_RELAXNG_ERR_ATTRNAME</a> = 14
-    <a name="XML_RELAXNG_ERR_ELEMNONS">XML_RELAXNG_ERR_ELEMNONS</a> = 15
-    <a name="XML_RELAXNG_ERR_ATTRNONS">XML_RELAXNG_ERR_ATTRNONS</a> = 16
-    <a name="XML_RELAXNG_ERR_ELEMWRONGNS">XML_RELAXNG_ERR_ELEMWRONGNS</a> = 17
-    <a name="XML_RELAXNG_ERR_ATTRWRONGNS">XML_RELAXNG_ERR_ATTRWRONGNS</a> = 18
-    <a name="XML_RELAXNG_ERR_ELEMEXTRANS">XML_RELAXNG_ERR_ELEMEXTRANS</a> = 19
-    <a name="XML_RELAXNG_ERR_ATTREXTRANS">XML_RELAXNG_ERR_ATTREXTRANS</a> = 20
-    <a name="XML_RELAXNG_ERR_ELEMNOTEMPTY">XML_RELAXNG_ERR_ELEMNOTEMPTY</a> = 21
-    <a name="XML_RELAXNG_ERR_NOELEM">XML_RELAXNG_ERR_NOELEM</a> = 22
-    <a name="XML_RELAXNG_ERR_NOTELEM">XML_RELAXNG_ERR_NOTELEM</a> = 23
-    <a name="XML_RELAXNG_ERR_ATTRVALID">XML_RELAXNG_ERR_ATTRVALID</a> = 24
-    <a name="XML_RELAXNG_ERR_CONTENTVALID">XML_RELAXNG_ERR_CONTENTVALID</a> = 25
-    <a name="XML_RELAXNG_ERR_EXTRACONTENT">XML_RELAXNG_ERR_EXTRACONTENT</a> = 26
-    <a name="XML_RELAXNG_ERR_INVALIDATTR">XML_RELAXNG_ERR_INVALIDATTR</a> = 27
-    <a name="XML_RELAXNG_ERR_DATAELEM">XML_RELAXNG_ERR_DATAELEM</a> = 28
-    <a name="XML_RELAXNG_ERR_VALELEM">XML_RELAXNG_ERR_VALELEM</a> = 29
-    <a name="XML_RELAXNG_ERR_LISTELEM">XML_RELAXNG_ERR_LISTELEM</a> = 30
-    <a name="XML_RELAXNG_ERR_DATATYPE">XML_RELAXNG_ERR_DATATYPE</a> = 31
-    <a name="XML_RELAXNG_ERR_VALUE">XML_RELAXNG_ERR_VALUE</a> = 32
-    <a name="XML_RELAXNG_ERR_LIST">XML_RELAXNG_ERR_LIST</a> = 33
-    <a name="XML_RELAXNG_ERR_NOGRAMMAR">XML_RELAXNG_ERR_NOGRAMMAR</a> = 34
-    <a name="XML_RELAXNG_ERR_EXTRADATA">XML_RELAXNG_ERR_EXTRADATA</a> = 35
-    <a name="XML_RELAXNG_ERR_LACKDATA">XML_RELAXNG_ERR_LACKDATA</a> = 36
-    <a name="XML_RELAXNG_ERR_INTERNAL">XML_RELAXNG_ERR_INTERNAL</a> = 37
-    <a name="XML_RELAXNG_ERR_ELEMWRONG">XML_RELAXNG_ERR_ELEMWRONG</a> = 38
-    <a name="XML_RELAXNG_ERR_TEXTWRONG">XML_RELAXNG_ERR_TEXTWRONG</a> = 39
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidityErrorFunc"></a>Function type xmlRelaxNGValidityErrorFunc</h3>
-<pre class="programlisting">void	xmlRelaxNGValidityErrorFunc	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of an error callback from a Relax-NG validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidityWarningFunc"></a>Function type xmlRelaxNGValidityWarningFunc</h3>
-<pre class="programlisting">void	xmlRelaxNGValidityWarningFunc	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of a warning callback from a Relax-NG validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGCleanupTypes"></a>xmlRelaxNGCleanupTypes ()</h3>
-<pre class="programlisting">void	xmlRelaxNGCleanupTypes		(void)<br>
-</pre>
-<p>DEPRECATED: This function will be made private. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all. Cleanup the default Schemas type library associated to RelaxNG</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGDump"></a>xmlRelaxNGDump ()</h3>
-<pre class="programlisting">void	xmlRelaxNGDump			(FILE * output, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br>
-</pre>
-<p>Dump a RelaxNG structure back</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the file output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGDumpTree"></a>xmlRelaxNGDumpTree ()</h3>
-<pre class="programlisting">void	xmlRelaxNGDumpTree		(FILE * output, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br>
-</pre>
-<p>Dump the transformed RelaxNG tree.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the file output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGFree"></a>xmlRelaxNGFree ()</h3>
-<pre class="programlisting">void	xmlRelaxNGFree			(<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br>
-</pre>
-<p>Deallocate a RelaxNG structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGFreeParserCtxt"></a>xmlRelaxNGFreeParserCtxt ()</h3>
-<pre class="programlisting">void	xmlRelaxNGFreeParserCtxt	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGFreeValidCtxt"></a>xmlRelaxNGFreeValidCtxt ()</h3>
-<pre class="programlisting">void	xmlRelaxNGFreeValidCtxt		(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGGetParserErrors"></a>xmlRelaxNGGetParserErrors ()</h3>
-<pre class="programlisting">int	xmlRelaxNGGetParserErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br>					 void ** ctx)<br>
-</pre>
-<p>Get the callback information used to handle errors for a validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error callback result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning callback result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>contextual data for the callbacks result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of failure, 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGGetValidErrors"></a>xmlRelaxNGGetValidErrors ()</h3>
-<pre class="programlisting">int	xmlRelaxNGGetValidErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> * err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> * warn, <br>					 void ** ctx)<br>
-</pre>
-<p>Get the error and warning callback information</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error function result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning function result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error and 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGInitTypes"></a>xmlRelaxNGInitTypes ()</h3>
-<pre class="programlisting">int	xmlRelaxNGInitTypes		(void)<br>
-</pre>
-<p>Initialize the default type libraries.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGNewDocParserCtxt"></a>xmlRelaxNGNewDocParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	xmlRelaxNGNewDocParserCtxt	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a preparsed document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGNewMemParserCtxt"></a>xmlRelaxNGNewMemParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	xmlRelaxNGNewMemParserCtxt	(const char * buffer, <br>							 int size)<br>
-</pre>
-<p>Create an XML RelaxNGs parse context for that memory buffer expected to contain an XML RelaxNGs file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a pointer to a char array containing the schemas</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 parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGNewParserCtxt"></a>xmlRelaxNGNewParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a>	xmlRelaxNGNewParserCtxt	(const char * URL)<br>
-</pre>
-<p>Create an XML RelaxNGs parse context for that file/resource expected to contain an XML RelaxNGs file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the location of the schema</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGNewValidCtxt"></a>xmlRelaxNGNewValidCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a>	xmlRelaxNGNewValidCtxt	(<a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br>
-</pre>
-<p>Create an XML RelaxNGs validation context based on the given schema</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a precompiled XML RelaxNGs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the validation context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGParse"></a>xmlRelaxNGParse ()</h3>
-<pre class="programlisting"><a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a>	xmlRelaxNGParse		(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal XML RelaxNG structure built from the resource or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGSetParserErrors"></a>xmlRelaxNGSetParserErrors ()</h3>
-<pre class="programlisting">void	xmlRelaxNGSetParserErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br>					 void * ctx)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-relaxng.html#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a>. Set the callback functions used to handle errors for a validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>contextual data for the callbacks</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGSetParserStructuredErrors"></a>xmlRelaxNGSetParserStructuredErrors ()</h3>
-<pre class="programlisting">void	xmlRelaxNGSetParserStructuredErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx)<br>
-</pre>
-<p>Set the callback functions used to handle errors for a parsing context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>serror</tt></i>:</span></td>
-<td>the error callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>contextual data for the callbacks</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGSetResourceLoader"></a>xmlRelaxNGSetResourceLoader ()</h3>
-<pre class="programlisting">void	xmlRelaxNGSetResourceLoader	(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * vctxt)<br>
-</pre>
-<p>Set the callback function used to load external resources.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loader</tt></i>:</span></td>
-<td>the callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>contextual data for the callbacks</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGSetValidErrors"></a>xmlRelaxNGSetValidErrors ()</h3>
-<pre class="programlisting">void	xmlRelaxNGSetValidErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc">xmlRelaxNGValidityErrorFunc</a> err, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc">xmlRelaxNGValidityWarningFunc</a> warn, <br>					 void * ctx)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a>. Set the error and warning callback information</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGSetValidStructuredErrors"></a>xmlRelaxNGSetValidStructuredErrors ()</h3>
-<pre class="programlisting">void	xmlRelaxNGSetValidStructuredErrors	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx)<br>
-</pre>
-<p>Set the structured error callback</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>serror</tt></i>:</span></td>
-<td>the structured error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidateDoc"></a>xmlRelaxNGValidateDoc ()</h3>
-<pre class="programlisting">int	xmlRelaxNGValidateDoc		(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Validate a document tree in memory.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Relax-NG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a parsed document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the document is valid, a positive error code number otherwise and -1 in case of internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidateFullElement"></a>xmlRelaxNGValidateFullElement ()</h3>
-<pre class="programlisting">int	xmlRelaxNGValidateFullElement	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br>
-</pre>
-<p>Validate a full subtree when xmlRelaxNGValidatePushElement() returned 0 and the content of the node has been expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidatePopElement"></a>xmlRelaxNGValidatePopElement ()</h3>
-<pre class="programlisting">int	xmlRelaxNGValidatePopElement	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br>
-</pre>
-<p>Pop the element end from the RelaxNG validation stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the RelaxNG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidatePushCData"></a>xmlRelaxNGValidatePushCData ()</h3>
-<pre class="programlisting">int	xmlRelaxNGValidatePushCData	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br>					 int len)<br>
-</pre>
-<p>check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the RelaxNG validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>some character data read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxNGValidatePushElement"></a>xmlRelaxNGValidatePushElement ()</h3>
-<pre class="programlisting">int	xmlRelaxNGValidatePushElement	(<a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br>
-</pre>
-<p>Push a new element start on the RelaxNG validation stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or 0 if validating the element requires a full node, and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRelaxParserSetFlag"></a>xmlRelaxParserSetFlag ()</h3>
-<pre class="programlisting">int	xmlRelaxParserSetFlag		(<a href="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr">xmlRelaxNGParserCtxtPtr</a> ctxt, <br>					 int flags)<br>
-</pre>
-<p>Semi private function used to pass information to a parser context which are a combination of <a href="libxml2-relaxng.html#xmlRelaxNGParserFlag">xmlRelaxNGParserFlag</a> .</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a RelaxNG parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of flags values</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-schemasInternals.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-schemasInternals.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-schemasInternals.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-schemasInternals.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1303 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>schemasInternals: internal interfaces for XML Schemas</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-schematron.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">schemasInternals</span></h2>
-<p>schemasInternals - internal interfaces for XML Schemas</p>
-<p>internal interfaces for the XML Schemas handling and schema validity checking The Schemas development is a Work In Progress. Some of those interfaces are not guaranteed to be API or ABI stable ! </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a>;
-#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a>;
-#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a>;
-#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a>;
-#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a>;
-#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a>;
-#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a>;
-#define <a href="#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a>;
-#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a>;
-#define <a href="#XML_SCHEMAS_ATTRGROUP_REDEFINED">XML_SCHEMAS_ATTRGROUP_REDEFINED</a>;
-#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a>;
-#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a>;
-#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a>;
-#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a>;
-#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a>;
-#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a>;
-#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a>;
-#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a>;
-#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a>;
-#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a>;
-#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a>;
-#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a>;
-#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a>;
-#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a>;
-#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a>;
-#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a>;
-#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a>;
-#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a>;
-#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a>;
-#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a>;
-#define <a href="#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a>;
-#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a>;
-#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a>;
-#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a>;
-#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a>;
-#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a>;
-#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a>;
-#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a>;
-#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a>;
-#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a>;
-#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a>;
-#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a>;
-#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a>;
-#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a>;
-#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_FIXUP_1">XML_SCHEMAS_TYPE_FIXUP_1</a>;
-#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a>;
-#define <a href="#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a>;
-#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a>;
-#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a>;
-#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a>;
-#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a>;
-#define <a href="#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a>;
-#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a>;
-#define <a href="#XML_SCHEMAS_TYPE_REDEFINED">XML_SCHEMAS_TYPE_REDEFINED</a>;
-#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a>;
-#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a>;
-#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a>;
-#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a>;
-#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</a>;
-#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE">XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE</a>;
-#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a>;
-#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a>;
-typedef struct _xmlSchemaAnnot <a href="#xmlSchemaAnnot">xmlSchemaAnnot</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaAnnot">xmlSchemaAnnot</a> * <a href="#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>;
-typedef struct _xmlSchemaAttribute <a href="#xmlSchemaAttribute">xmlSchemaAttribute</a>;
-typedef struct _xmlSchemaAttributeGroup <a href="#xmlSchemaAttributeGroup">xmlSchemaAttributeGroup</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaAttributeGroup">xmlSchemaAttributeGroup</a> * <a href="#xmlSchemaAttributeGroupPtr">xmlSchemaAttributeGroupPtr</a>;
-typedef struct _xmlSchemaAttributeLink <a href="#xmlSchemaAttributeLink">xmlSchemaAttributeLink</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaAttributeLink">xmlSchemaAttributeLink</a> * <a href="#xmlSchemaAttributeLinkPtr">xmlSchemaAttributeLinkPtr</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaAttribute">xmlSchemaAttribute</a> * <a href="#xmlSchemaAttributePtr">xmlSchemaAttributePtr</a>;
-typedef enum <a href="#xmlSchemaContentType">xmlSchemaContentType</a>;
-typedef struct _xmlSchemaElement <a href="#xmlSchemaElement">xmlSchemaElement</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaElement">xmlSchemaElement</a> * <a href="#xmlSchemaElementPtr">xmlSchemaElementPtr</a>;
-typedef struct _xmlSchemaFacet <a href="#xmlSchemaFacet">xmlSchemaFacet</a>;
-typedef struct _xmlSchemaFacetLink <a href="#xmlSchemaFacetLink">xmlSchemaFacetLink</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaFacetLink">xmlSchemaFacetLink</a> * <a href="#xmlSchemaFacetLinkPtr">xmlSchemaFacetLinkPtr</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaFacet">xmlSchemaFacet</a> * <a href="#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>;
-typedef struct _xmlSchemaNotation <a href="#xmlSchemaNotation">xmlSchemaNotation</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaNotation">xmlSchemaNotation</a> * <a href="#xmlSchemaNotationPtr">xmlSchemaNotationPtr</a>;
-typedef struct _xmlSchemaType <a href="#xmlSchemaType">xmlSchemaType</a>;
-typedef struct _xmlSchemaTypeLink <a href="#xmlSchemaTypeLink">xmlSchemaTypeLink</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaTypeLink">xmlSchemaTypeLink</a> * <a href="#xmlSchemaTypeLinkPtr">xmlSchemaTypeLinkPtr</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaType">xmlSchemaType</a> * <a href="#xmlSchemaTypePtr">xmlSchemaTypePtr</a>;
-typedef enum <a href="#xmlSchemaTypeType">xmlSchemaTypeType</a>;
-typedef struct _xmlSchemaVal <a href="#xmlSchemaVal">xmlSchemaVal</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaVal">xmlSchemaVal</a> * <a href="#xmlSchemaValPtr">xmlSchemaValPtr</a>;
-typedef enum <a href="#xmlSchemaValType">xmlSchemaValType</a>;
-typedef struct _xmlSchemaWildcard <a href="#xmlSchemaWildcard">xmlSchemaWildcard</a>;
-typedef struct _xmlSchemaWildcardNs <a href="#xmlSchemaWildcardNs">xmlSchemaWildcardNs</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaWildcardNs">xmlSchemaWildcardNs</a> * <a href="#xmlSchemaWildcardNsPtr">xmlSchemaWildcardNsPtr</a>;
-typedef <a href="libxml2-schemasInternals.html#xmlSchemaWildcard">xmlSchemaWildcard</a> * <a href="#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a>;
-void	<a href="#xmlSchemaFreeType">xmlSchemaFreeType</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type);
-void	<a href="#xmlSchemaFreeWildcard">xmlSchemaFreeWildcard</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a> wildcard);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANYATTR_LAX">Macro </a>XML_SCHEMAS_ANYATTR_LAX</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a>;
-</pre>
-<p>Ignore validation non definition on attributes Obsolete, not used anymore.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANYATTR_SKIP">Macro </a>XML_SCHEMAS_ANYATTR_SKIP</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a>;
-</pre>
-<p>Skip unknown attribute from validation Obsolete, not used anymore.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANYATTR_STRICT">Macro </a>XML_SCHEMAS_ANYATTR_STRICT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a>;
-</pre>
-<p>Apply strict validation rules on attributes Obsolete, not used anymore.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANY_LAX">Macro </a>XML_SCHEMAS_ANY_LAX</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a>;
-</pre>
-<p>Used by wildcards. Validate if type found, don't worry if not found</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANY_SKIP">Macro </a>XML_SCHEMAS_ANY_SKIP</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a>;
-</pre>
-<p>Skip unknown attribute from validation</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ANY_STRICT">Macro </a>XML_SCHEMAS_ANY_STRICT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a>;
-</pre>
-<p>Used by wildcards. Apply strict validation rules</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTRGROUP_GLOBAL">Macro </a>XML_SCHEMAS_ATTRGROUP_GLOBAL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a>;
-</pre>
-<p>The attribute group has been defined.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTRGROUP_HAS_REFS">Macro </a>XML_SCHEMAS_ATTRGROUP_HAS_REFS</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a>;
-</pre>
-<p>Whether this attr. group contains attr. group references.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTRGROUP_MARKED">Macro </a>XML_SCHEMAS_ATTRGROUP_MARKED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a>;
-</pre>
-<p>Marks the attr group as marked; used for circular checks.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTRGROUP_REDEFINED">Macro </a>XML_SCHEMAS_ATTRGROUP_REDEFINED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_REDEFINED">XML_SCHEMAS_ATTRGROUP_REDEFINED</a>;
-</pre>
-<p>The attr group was redefined.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">Macro </a>XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a>;
-</pre>
-<p>The attribute wildcard has been built.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_FIXED">Macro </a>XML_SCHEMAS_ATTR_FIXED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a>;
-</pre>
-<p>the attribute has a fixed value</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_GLOBAL">Macro </a>XML_SCHEMAS_ATTR_GLOBAL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a>;
-</pre>
-<p>allow elements in no namespace</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">Macro </a>XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a>;
-</pre>
-<p>this is set when the "type" and "ref" references have been resolved.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_NSDEFAULT">Macro </a>XML_SCHEMAS_ATTR_NSDEFAULT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a>;
-</pre>
-<p>allow elements in no namespace</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_USE_OPTIONAL">Macro </a>XML_SCHEMAS_ATTR_USE_OPTIONAL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a>;
-</pre>
-<p>The attribute is optional.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_USE_PROHIBITED">Macro </a>XML_SCHEMAS_ATTR_USE_PROHIBITED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a>;
-</pre>
-<p>Used by wildcards. The attribute is prohibited.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ATTR_USE_REQUIRED">Macro </a>XML_SCHEMAS_ATTR_USE_REQUIRED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a>;
-</pre>
-<p>The attribute is required.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">Macro </a>XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a>;
-</pre>
-<p>the schema has "extension" in the set of blockDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">Macro </a>XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a>;
-</pre>
-<p>the schema has "restriction" in the set of blockDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">Macro </a>XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a>;
-</pre>
-<p>the schema has "substitution" in the set of blockDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_ABSTRACT">Macro </a>XML_SCHEMAS_ELEM_ABSTRACT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a>;
-</pre>
-<p>the element is abstract</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_BLOCK_ABSENT">Macro </a>XML_SCHEMAS_ELEM_BLOCK_ABSENT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a>;
-</pre>
-<p>the "block" attribute is absent</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_BLOCK_EXTENSION">Macro </a>XML_SCHEMAS_ELEM_BLOCK_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a>;
-</pre>
-<p>disallowed substitutions are absent</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">Macro </a>XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a>;
-</pre>
-<p>disallowed substitutions: "restriction"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">Macro </a>XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a>;
-</pre>
-<p>disallowed substitutions: "substitution"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_CIRCULAR">Macro </a>XML_SCHEMAS_ELEM_CIRCULAR</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a>;
-</pre>
-<p>a helper flag for the search of circular references.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_DEFAULT">Macro </a>XML_SCHEMAS_ELEM_DEFAULT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a>;
-</pre>
-<p>the element has a default value</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_FINAL_ABSENT">Macro </a>XML_SCHEMAS_ELEM_FINAL_ABSENT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a>;
-</pre>
-<p>substitution group exclusions are absent</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_FINAL_EXTENSION">Macro </a>XML_SCHEMAS_ELEM_FINAL_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a>;
-</pre>
-<p>substitution group exclusions: "extension"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_FINAL_RESTRICTION">Macro </a>XML_SCHEMAS_ELEM_FINAL_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a>;
-</pre>
-<p>substitution group exclusions: "restriction"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_FIXED">Macro </a>XML_SCHEMAS_ELEM_FIXED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a>;
-</pre>
-<p>the element has a fixed value</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_GLOBAL">Macro </a>XML_SCHEMAS_ELEM_GLOBAL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a>;
-</pre>
-<p>the element is global</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_INTERNAL_CHECKED">Macro </a>XML_SCHEMAS_ELEM_INTERNAL_CHECKED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a>;
-</pre>
-<p>this is set when the elem decl has been checked against all constraints</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">Macro </a>XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a>;
-</pre>
-<p>this is set when "type", "ref", "substitutionGroup" references have been resolved.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_NILLABLE">Macro </a>XML_SCHEMAS_ELEM_NILLABLE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a>;
-</pre>
-<p>the element is nillable</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_NSDEFAULT">Macro </a>XML_SCHEMAS_ELEM_NSDEFAULT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a>;
-</pre>
-<p>allow elements in no namespace Obsolete, not used anymore.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_REF">Macro </a>XML_SCHEMAS_ELEM_REF</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a>;
-</pre>
-<p>the element is a reference to a type</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">Macro </a>XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a>;
-</pre>
-<p>the declaration is a substitution group head</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_ELEM_TOPLEVEL">Macro </a>XML_SCHEMAS_ELEM_TOPLEVEL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a>;
-</pre>
-<p>the element is top level obsolete: use <a href="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a> instead</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FACET_COLLAPSE">Macro </a>XML_SCHEMAS_FACET_COLLAPSE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a>;
-</pre>
-<p>collapse the types of the facet</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FACET_PRESERVE">Macro </a>XML_SCHEMAS_FACET_PRESERVE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a>;
-</pre>
-<p>preserve the type of the facet</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FACET_REPLACE">Macro </a>XML_SCHEMAS_FACET_REPLACE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a>;
-</pre>
-<p>replace the type of the facet</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FACET_UNKNOWN">Macro </a>XML_SCHEMAS_FACET_UNKNOWN</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a>;
-</pre>
-<p>unknown facet handling</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">Macro </a>XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a>;
-</pre>
-<p>the schema has "extension" in the set of finalDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FINAL_DEFAULT_LIST">Macro </a>XML_SCHEMAS_FINAL_DEFAULT_LIST</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a>;
-</pre>
-<p>the schema has "list" in the set of finalDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">Macro </a>XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a>;
-</pre>
-<p>the schema has "restriction" in the set of finalDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_FINAL_DEFAULT_UNION">Macro </a>XML_SCHEMAS_FINAL_DEFAULT_UNION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a>;
-</pre>
-<p>the schema has "union" in the set of finalDefault.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_INCLUDING_CONVERT_NS">Macro </a>XML_SCHEMAS_INCLUDING_CONVERT_NS</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a>;
-</pre>
-<p>the schema is currently including an other schema with no target namespace.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_QUALIF_ATTR">Macro </a>XML_SCHEMAS_QUALIF_ATTR</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a>;
-</pre>
-<p>Reflects attributeFormDefault == qualified in an XML schema document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_QUALIF_ELEM">Macro </a>XML_SCHEMAS_QUALIF_ELEM</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a>;
-</pre>
-<p>Reflects elementFormDefault == qualified in an XML schema document.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_ABSTRACT">Macro </a>XML_SCHEMAS_TYPE_ABSTRACT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a>;
-</pre>
-<p>the simple/complexType is abstract.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_BLOCK_DEFAULT">Macro </a>XML_SCHEMAS_TYPE_BLOCK_DEFAULT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a>;
-</pre>
-<p>the complexType did not specify 'block' so use the default of the &lt;schema&gt; item.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_BLOCK_EXTENSION">Macro </a>XML_SCHEMAS_TYPE_BLOCK_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a>;
-</pre>
-<p>the complexType has a 'block' of "extension".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">Macro </a>XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a>;
-</pre>
-<p>the complexType has a 'block' of "restriction".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">Macro </a>XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a>;
-</pre>
-<p>Marks the item as a builtin primitive.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">Macro </a>XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a>;
-</pre>
-<p>the simple or complex type has a derivation method of "extension".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">Macro </a>XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a>;
-</pre>
-<p>the simple or complex type has a derivation method of "restriction".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FACETSNEEDVALUE">Macro </a>XML_SCHEMAS_TYPE_FACETSNEEDVALUE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a>;
-</pre>
-<p>indicates if the facets need a computed value</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FINAL_DEFAULT">Macro </a>XML_SCHEMAS_TYPE_FINAL_DEFAULT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a>;
-</pre>
-<p>the simpleType has a final of "default".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FINAL_EXTENSION">Macro </a>XML_SCHEMAS_TYPE_FINAL_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a>;
-</pre>
-<p>the complexType has a final of "extension".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FINAL_LIST">Macro </a>XML_SCHEMAS_TYPE_FINAL_LIST</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a>;
-</pre>
-<p>the simpleType has a final of "list".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FINAL_RESTRICTION">Macro </a>XML_SCHEMAS_TYPE_FINAL_RESTRICTION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a>;
-</pre>
-<p>the simpleType/complexType has a final of "restriction".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FINAL_UNION">Macro </a>XML_SCHEMAS_TYPE_FINAL_UNION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a>;
-</pre>
-<p>the simpleType has a final of "union".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_FIXUP_1">Macro </a>XML_SCHEMAS_TYPE_FIXUP_1</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FIXUP_1">XML_SCHEMAS_TYPE_FIXUP_1</a>;
-</pre>
-<p>First stage of fixup was done.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_GLOBAL">Macro </a>XML_SCHEMAS_TYPE_GLOBAL</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a>;
-</pre>
-<p>the type is global</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_HAS_FACETS">Macro </a>XML_SCHEMAS_TYPE_HAS_FACETS</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a>;
-</pre>
-<p>has facets</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_INTERNAL_INVALID">Macro </a>XML_SCHEMAS_TYPE_INTERNAL_INVALID</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a>;
-</pre>
-<p>indicates that the type is invalid</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">Macro </a>XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a>;
-</pre>
-<p>indicates that the type was typefixed</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_MARKED">Macro </a>XML_SCHEMAS_TYPE_MARKED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a>;
-</pre>
-<p>Marks the item as marked; used for circular checks.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_MIXED">Macro </a>XML_SCHEMAS_TYPE_MIXED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a>;
-</pre>
-<p>the element content type is mixed</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_NORMVALUENEEDED">Macro </a>XML_SCHEMAS_TYPE_NORMVALUENEEDED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a>;
-</pre>
-<p>indicates if the facets (pattern) need a normalized value</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">Macro </a>XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a>;
-</pre>
-<p>the complexType owns an attribute wildcard, i.e. it can be freed by the complexType</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_REDEFINED">Macro </a>XML_SCHEMAS_TYPE_REDEFINED</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_REDEFINED">XML_SCHEMAS_TYPE_REDEFINED</a>;
-</pre>
-<p>The type was redefined.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_VARIETY_ABSENT">Macro </a>XML_SCHEMAS_TYPE_VARIETY_ABSENT</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a>;
-</pre>
-<p>the simpleType has a variety of "absent". TODO: Actually not necessary :-/, since if none of the variety flags occur then it's automatically absent.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_VARIETY_ATOMIC">Macro </a>XML_SCHEMAS_TYPE_VARIETY_ATOMIC</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a>;
-</pre>
-<p>the simpleType has a variety of "union".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_VARIETY_LIST">Macro </a>XML_SCHEMAS_TYPE_VARIETY_LIST</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a>;
-</pre>
-<p>the simpleType has a variety of "list".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_VARIETY_UNION">Macro </a>XML_SCHEMAS_TYPE_VARIETY_UNION</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a>;
-</pre>
-<p>the simpleType has a variety of "union".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">Macro </a>XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</a>;
-</pre>
-<p>a whitespace-facet value of "collapse"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE">Macro </a>XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE">XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE</a>;
-</pre>
-<p>a whitespace-facet value of "preserve"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">Macro </a>XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE">XML_SCHEMAS_TYPE_WHITESPACE_REPLACE</a>;
-</pre>
-<p>a whitespace-facet value of "replace"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_SCHEMAS_WILDCARD_COMPLETE">Macro </a>XML_SCHEMAS_WILDCARD_COMPLETE</h3>
-<pre class="programlisting">#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a>;
-</pre>
-<p>If the wildcard is complete.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAnnot">Structure </a>xmlSchemaAnnot</h3>
-<pre class="programlisting">struct _xmlSchemaAnnot {
-    struct _xmlSchemaAnnot *	next
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	content
-} xmlSchemaAnnot;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAnnotPtr">Typedef </a>xmlSchemaAnnotPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaAnnot">xmlSchemaAnnot</a> * xmlSchemaAnnotPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttribute">Structure </a>xmlSchemaAttribute</h3>
-<pre class="programlisting">struct _xmlSchemaAttribute {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    struct _xmlSchemaAttribute *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ref
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refNs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	typeName
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	typeNs
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	base
-    int	occurs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	defValue
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	subtypes
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-    int	flags
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refPrefix
-    <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	defVal
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributePtr">xmlSchemaAttributePtr</a>	refDecl
-} xmlSchemaAttribute;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttributeGroup">Structure </a>xmlSchemaAttributeGroup</h3>
-<pre class="programlisting">struct _xmlSchemaAttributeGroup {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    struct _xmlSchemaAttribute *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ref
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refNs
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributePtr">xmlSchemaAttributePtr</a>	attributes
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	flags
-    <a href="libxml2-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a>	attributeWildcard
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refPrefix
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributeGroupPtr">xmlSchemaAttributeGroupPtr</a>	refItem
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-    void *	attrUses
-} xmlSchemaAttributeGroup;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttributeGroupPtr">Typedef </a>xmlSchemaAttributeGroupPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaAttributeGroup">xmlSchemaAttributeGroup</a> * xmlSchemaAttributeGroupPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttributeLink">Structure </a>xmlSchemaAttributeLink</h3>
-<pre class="programlisting">struct _xmlSchemaAttributeLink {
-    struct _xmlSchemaAttributeLink *	next
-    struct _xmlSchemaAttribute *	attr
-} xmlSchemaAttributeLink;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttributeLinkPtr">Typedef </a>xmlSchemaAttributeLinkPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaAttributeLink">xmlSchemaAttributeLink</a> * xmlSchemaAttributeLinkPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaAttributePtr">Typedef </a>xmlSchemaAttributePtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaAttribute">xmlSchemaAttribute</a> * xmlSchemaAttributePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaContentType">Enum </a>xmlSchemaContentType</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaContentType">xmlSchemaContentType</a> {
-    <a name="XML_SCHEMA_CONTENT_UNKNOWN">XML_SCHEMA_CONTENT_UNKNOWN</a> = 0
-    <a name="XML_SCHEMA_CONTENT_EMPTY">XML_SCHEMA_CONTENT_EMPTY</a> = 1
-    <a name="XML_SCHEMA_CONTENT_ELEMENTS">XML_SCHEMA_CONTENT_ELEMENTS</a> = 2
-    <a name="XML_SCHEMA_CONTENT_MIXED">XML_SCHEMA_CONTENT_MIXED</a> = 3
-    <a name="XML_SCHEMA_CONTENT_SIMPLE">XML_SCHEMA_CONTENT_SIMPLE</a> = 4
-    <a name="XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS">XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS</a> = 5 /* Obsolete */
-    <a name="XML_SCHEMA_CONTENT_BASIC">XML_SCHEMA_CONTENT_BASIC</a> = 6
-    <a name="XML_SCHEMA_CONTENT_ANY">XML_SCHEMA_CONTENT_ANY</a> = 7
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaElement">Structure </a>xmlSchemaElement</h3>
-<pre class="programlisting">struct _xmlSchemaElement {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    struct _xmlSchemaType *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ref
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refNs
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	subtypes
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributePtr">xmlSchemaAttributePtr</a>	attributes
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	minOccurs
-    int	maxOccurs
-    int	flags
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	namedType
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	namedTypeNs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	substGroup
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	substGroupNs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	scope
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	value
-    struct _xmlSchemaElement *	refDecl
-    <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	contModel
-    <a href="libxml2-schemasInternals.html#xmlSchemaContentType">xmlSchemaContentType</a>	contentType
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refPrefix
-    <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	defVal
-    void *	idcs
-} xmlSchemaElement;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaElementPtr">Typedef </a>xmlSchemaElementPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaElement">xmlSchemaElement</a> * xmlSchemaElementPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFacet">Structure </a>xmlSchemaFacet</h3>
-<pre class="programlisting">struct _xmlSchemaFacet {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    struct _xmlSchemaFacet *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	value
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	fixed
-    int	whitespace
-    <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	val
-    <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	regexp
-} xmlSchemaFacet;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFacetLink">Structure </a>xmlSchemaFacetLink</h3>
-<pre class="programlisting">struct _xmlSchemaFacetLink {
-    struct _xmlSchemaFacetLink *	next
-    <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>	facet
-} xmlSchemaFacetLink;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFacetLinkPtr">Typedef </a>xmlSchemaFacetLinkPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaFacetLink">xmlSchemaFacetLink</a> * xmlSchemaFacetLinkPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFacetPtr">Typedef </a>xmlSchemaFacetPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaFacet">xmlSchemaFacet</a> * xmlSchemaFacetPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNotation">Structure </a>xmlSchemaNotation</h3>
-<pre class="programlisting">struct _xmlSchemaNotation {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	identifier
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-} xmlSchemaNotation;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNotationPtr">Typedef </a>xmlSchemaNotationPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaNotation">xmlSchemaNotation</a> * xmlSchemaNotationPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaType">Structure </a>xmlSchemaType</h3>
-<pre class="programlisting">struct _xmlSchemaType {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    struct _xmlSchemaType *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ref
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refNs
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	subtypes
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributePtr">xmlSchemaAttributePtr</a>	attributes
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	minOccurs
-    int	maxOccurs
-    int	flags
-    <a href="libxml2-schemasInternals.html#xmlSchemaContentType">xmlSchemaContentType</a>	contentType
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	base
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	baseNs
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	baseType
-    <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>	facets
-    struct _xmlSchemaType *	redef
-    int	recurse
-    <a href="libxml2-schemasInternals.html#xmlSchemaAttributeLinkPtr">xmlSchemaAttributeLinkPtr</a> *	attributeUses
-    <a href="libxml2-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a>	attributeWildcard
-    int	builtInType
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeLinkPtr">xmlSchemaTypeLinkPtr</a>	memberTypes
-    <a href="libxml2-schemasInternals.html#xmlSchemaFacetLinkPtr">xmlSchemaFacetLinkPtr</a>	facetSet
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	refPrefix
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	contentTypeDef
-    <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	contModel
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-    void *	attrUses
-} xmlSchemaType;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaTypeLink">Structure </a>xmlSchemaTypeLink</h3>
-<pre class="programlisting">struct _xmlSchemaTypeLink {
-    struct _xmlSchemaTypeLink *	next
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	type
-} xmlSchemaTypeLink;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaTypeLinkPtr">Typedef </a>xmlSchemaTypeLinkPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaTypeLink">xmlSchemaTypeLink</a> * xmlSchemaTypeLinkPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaTypePtr">Typedef </a>xmlSchemaTypePtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaType">xmlSchemaType</a> * xmlSchemaTypePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaTypeType">Enum </a>xmlSchemaTypeType</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaTypeType">xmlSchemaTypeType</a> {
-    <a name="XML_SCHEMA_TYPE_BASIC">XML_SCHEMA_TYPE_BASIC</a> = 1 /* A built-in datatype */
-    <a name="XML_SCHEMA_TYPE_ANY">XML_SCHEMA_TYPE_ANY</a> = 2
-    <a name="XML_SCHEMA_TYPE_FACET">XML_SCHEMA_TYPE_FACET</a> = 3
-    <a name="XML_SCHEMA_TYPE_SIMPLE">XML_SCHEMA_TYPE_SIMPLE</a> = 4
-    <a name="XML_SCHEMA_TYPE_COMPLEX">XML_SCHEMA_TYPE_COMPLEX</a> = 5
-    <a name="XML_SCHEMA_TYPE_SEQUENCE">XML_SCHEMA_TYPE_SEQUENCE</a> = 6
-    <a name="XML_SCHEMA_TYPE_CHOICE">XML_SCHEMA_TYPE_CHOICE</a> = 7
-    <a name="XML_SCHEMA_TYPE_ALL">XML_SCHEMA_TYPE_ALL</a> = 8
-    <a name="XML_SCHEMA_TYPE_SIMPLE_CONTENT">XML_SCHEMA_TYPE_SIMPLE_CONTENT</a> = 9
-    <a name="XML_SCHEMA_TYPE_COMPLEX_CONTENT">XML_SCHEMA_TYPE_COMPLEX_CONTENT</a> = 10
-    <a name="XML_SCHEMA_TYPE_UR">XML_SCHEMA_TYPE_UR</a> = 11
-    <a name="XML_SCHEMA_TYPE_RESTRICTION">XML_SCHEMA_TYPE_RESTRICTION</a> = 12
-    <a name="XML_SCHEMA_TYPE_EXTENSION">XML_SCHEMA_TYPE_EXTENSION</a> = 13
-    <a name="XML_SCHEMA_TYPE_ELEMENT">XML_SCHEMA_TYPE_ELEMENT</a> = 14
-    <a name="XML_SCHEMA_TYPE_ATTRIBUTE">XML_SCHEMA_TYPE_ATTRIBUTE</a> = 15
-    <a name="XML_SCHEMA_TYPE_ATTRIBUTEGROUP">XML_SCHEMA_TYPE_ATTRIBUTEGROUP</a> = 16
-    <a name="XML_SCHEMA_TYPE_GROUP">XML_SCHEMA_TYPE_GROUP</a> = 17
-    <a name="XML_SCHEMA_TYPE_NOTATION">XML_SCHEMA_TYPE_NOTATION</a> = 18
-    <a name="XML_SCHEMA_TYPE_LIST">XML_SCHEMA_TYPE_LIST</a> = 19
-    <a name="XML_SCHEMA_TYPE_UNION">XML_SCHEMA_TYPE_UNION</a> = 20
-    <a name="XML_SCHEMA_TYPE_ANY_ATTRIBUTE">XML_SCHEMA_TYPE_ANY_ATTRIBUTE</a> = 21
-    <a name="XML_SCHEMA_TYPE_IDC_UNIQUE">XML_SCHEMA_TYPE_IDC_UNIQUE</a> = 22
-    <a name="XML_SCHEMA_TYPE_IDC_KEY">XML_SCHEMA_TYPE_IDC_KEY</a> = 23
-    <a name="XML_SCHEMA_TYPE_IDC_KEYREF">XML_SCHEMA_TYPE_IDC_KEYREF</a> = 24
-    <a name="XML_SCHEMA_TYPE_PARTICLE">XML_SCHEMA_TYPE_PARTICLE</a> = 25
-    <a name="XML_SCHEMA_TYPE_ATTRIBUTE_USE">XML_SCHEMA_TYPE_ATTRIBUTE_USE</a> = 26
-    <a name="XML_SCHEMA_FACET_MININCLUSIVE">XML_SCHEMA_FACET_MININCLUSIVE</a> = 1000
-    <a name="XML_SCHEMA_FACET_MINEXCLUSIVE">XML_SCHEMA_FACET_MINEXCLUSIVE</a> = 1001
-    <a name="XML_SCHEMA_FACET_MAXINCLUSIVE">XML_SCHEMA_FACET_MAXINCLUSIVE</a> = 1002
-    <a name="XML_SCHEMA_FACET_MAXEXCLUSIVE">XML_SCHEMA_FACET_MAXEXCLUSIVE</a> = 1003
-    <a name="XML_SCHEMA_FACET_TOTALDIGITS">XML_SCHEMA_FACET_TOTALDIGITS</a> = 1004
-    <a name="XML_SCHEMA_FACET_FRACTIONDIGITS">XML_SCHEMA_FACET_FRACTIONDIGITS</a> = 1005
-    <a name="XML_SCHEMA_FACET_PATTERN">XML_SCHEMA_FACET_PATTERN</a> = 1006
-    <a name="XML_SCHEMA_FACET_ENUMERATION">XML_SCHEMA_FACET_ENUMERATION</a> = 1007
-    <a name="XML_SCHEMA_FACET_WHITESPACE">XML_SCHEMA_FACET_WHITESPACE</a> = 1008
-    <a name="XML_SCHEMA_FACET_LENGTH">XML_SCHEMA_FACET_LENGTH</a> = 1009
-    <a name="XML_SCHEMA_FACET_MAXLENGTH">XML_SCHEMA_FACET_MAXLENGTH</a> = 1010
-    <a name="XML_SCHEMA_FACET_MINLENGTH">XML_SCHEMA_FACET_MINLENGTH</a> = 1011
-    <a name="XML_SCHEMA_EXTRA_QNAMEREF">XML_SCHEMA_EXTRA_QNAMEREF</a> = 2000
-    <a name="XML_SCHEMA_EXTRA_ATTR_USE_PROHIB">XML_SCHEMA_EXTRA_ATTR_USE_PROHIB</a> = 2001
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaVal">Structure </a>xmlSchemaVal</h3>
-<pre class="programlisting">struct _xmlSchemaVal {
-The content of this structure is not made public by the API.
-} xmlSchemaVal;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValPtr">Typedef </a>xmlSchemaValPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaVal">xmlSchemaVal</a> * xmlSchemaValPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValType">Enum </a>xmlSchemaValType</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaValType">xmlSchemaValType</a> {
-    <a name="XML_SCHEMAS_UNKNOWN">XML_SCHEMAS_UNKNOWN</a> = 0
-    <a name="XML_SCHEMAS_STRING">XML_SCHEMAS_STRING</a> = 1
-    <a name="XML_SCHEMAS_NORMSTRING">XML_SCHEMAS_NORMSTRING</a> = 2
-    <a name="XML_SCHEMAS_DECIMAL">XML_SCHEMAS_DECIMAL</a> = 3
-    <a name="XML_SCHEMAS_TIME">XML_SCHEMAS_TIME</a> = 4
-    <a name="XML_SCHEMAS_GDAY">XML_SCHEMAS_GDAY</a> = 5
-    <a name="XML_SCHEMAS_GMONTH">XML_SCHEMAS_GMONTH</a> = 6
-    <a name="XML_SCHEMAS_GMONTHDAY">XML_SCHEMAS_GMONTHDAY</a> = 7
-    <a name="XML_SCHEMAS_GYEAR">XML_SCHEMAS_GYEAR</a> = 8
-    <a name="XML_SCHEMAS_GYEARMONTH">XML_SCHEMAS_GYEARMONTH</a> = 9
-    <a name="XML_SCHEMAS_DATE">XML_SCHEMAS_DATE</a> = 10
-    <a name="XML_SCHEMAS_DATETIME">XML_SCHEMAS_DATETIME</a> = 11
-    <a name="XML_SCHEMAS_DURATION">XML_SCHEMAS_DURATION</a> = 12
-    <a name="XML_SCHEMAS_FLOAT">XML_SCHEMAS_FLOAT</a> = 13
-    <a name="XML_SCHEMAS_DOUBLE">XML_SCHEMAS_DOUBLE</a> = 14
-    <a name="XML_SCHEMAS_BOOLEAN">XML_SCHEMAS_BOOLEAN</a> = 15
-    <a name="XML_SCHEMAS_TOKEN">XML_SCHEMAS_TOKEN</a> = 16
-    <a name="XML_SCHEMAS_LANGUAGE">XML_SCHEMAS_LANGUAGE</a> = 17
-    <a name="XML_SCHEMAS_NMTOKEN">XML_SCHEMAS_NMTOKEN</a> = 18
-    <a name="XML_SCHEMAS_NMTOKENS">XML_SCHEMAS_NMTOKENS</a> = 19
-    <a name="XML_SCHEMAS_NAME">XML_SCHEMAS_NAME</a> = 20
-    <a name="XML_SCHEMAS_QNAME">XML_SCHEMAS_QNAME</a> = 21
-    <a name="XML_SCHEMAS_NCNAME">XML_SCHEMAS_NCNAME</a> = 22
-    <a name="XML_SCHEMAS_ID">XML_SCHEMAS_ID</a> = 23
-    <a name="XML_SCHEMAS_IDREF">XML_SCHEMAS_IDREF</a> = 24
-    <a name="XML_SCHEMAS_IDREFS">XML_SCHEMAS_IDREFS</a> = 25
-    <a name="XML_SCHEMAS_ENTITY">XML_SCHEMAS_ENTITY</a> = 26
-    <a name="XML_SCHEMAS_ENTITIES">XML_SCHEMAS_ENTITIES</a> = 27
-    <a name="XML_SCHEMAS_NOTATION">XML_SCHEMAS_NOTATION</a> = 28
-    <a name="XML_SCHEMAS_ANYURI">XML_SCHEMAS_ANYURI</a> = 29
-    <a name="XML_SCHEMAS_INTEGER">XML_SCHEMAS_INTEGER</a> = 30
-    <a name="XML_SCHEMAS_NPINTEGER">XML_SCHEMAS_NPINTEGER</a> = 31
-    <a name="XML_SCHEMAS_NINTEGER">XML_SCHEMAS_NINTEGER</a> = 32
-    <a name="XML_SCHEMAS_NNINTEGER">XML_SCHEMAS_NNINTEGER</a> = 33
-    <a name="XML_SCHEMAS_PINTEGER">XML_SCHEMAS_PINTEGER</a> = 34
-    <a name="XML_SCHEMAS_INT">XML_SCHEMAS_INT</a> = 35
-    <a name="XML_SCHEMAS_UINT">XML_SCHEMAS_UINT</a> = 36
-    <a name="XML_SCHEMAS_LONG">XML_SCHEMAS_LONG</a> = 37
-    <a name="XML_SCHEMAS_ULONG">XML_SCHEMAS_ULONG</a> = 38
-    <a name="XML_SCHEMAS_SHORT">XML_SCHEMAS_SHORT</a> = 39
-    <a name="XML_SCHEMAS_USHORT">XML_SCHEMAS_USHORT</a> = 40
-    <a name="XML_SCHEMAS_BYTE">XML_SCHEMAS_BYTE</a> = 41
-    <a name="XML_SCHEMAS_UBYTE">XML_SCHEMAS_UBYTE</a> = 42
-    <a name="XML_SCHEMAS_HEXBINARY">XML_SCHEMAS_HEXBINARY</a> = 43
-    <a name="XML_SCHEMAS_BASE64BINARY">XML_SCHEMAS_BASE64BINARY</a> = 44
-    <a name="XML_SCHEMAS_ANYTYPE">XML_SCHEMAS_ANYTYPE</a> = 45
-    <a name="XML_SCHEMAS_ANYSIMPLETYPE">XML_SCHEMAS_ANYSIMPLETYPE</a> = 46
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWildcard">Structure </a>xmlSchemaWildcard</h3>
-<pre class="programlisting">struct _xmlSchemaWildcard {
-    <a href="libxml2-schemasInternals.html#xmlSchemaTypeType">xmlSchemaTypeType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	minOccurs
-    int	maxOccurs
-    int	processContents
-    int	any
-    <a href="libxml2-schemasInternals.html#xmlSchemaWildcardNsPtr">xmlSchemaWildcardNsPtr</a>	nsSet
-    <a href="libxml2-schemasInternals.html#xmlSchemaWildcardNsPtr">xmlSchemaWildcardNsPtr</a>	negNsSet
-    int	flags
-} xmlSchemaWildcard;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWildcardNs">Structure </a>xmlSchemaWildcardNs</h3>
-<pre class="programlisting">struct _xmlSchemaWildcardNs {
-    struct _xmlSchemaWildcardNs *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	value
-} xmlSchemaWildcardNs;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWildcardNsPtr">Typedef </a>xmlSchemaWildcardNsPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaWildcardNs">xmlSchemaWildcardNs</a> * xmlSchemaWildcardNsPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWildcardPtr">Typedef </a>xmlSchemaWildcardPtr</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaWildcard">xmlSchemaWildcard</a> * xmlSchemaWildcardPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeType"></a>xmlSchemaFreeType ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeType		(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type)<br>
-</pre>
-<p>Deallocate a Schema Type structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>a schema type structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeWildcard"></a>xmlSchemaFreeWildcard ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeWildcard		(<a href="libxml2-schemasInternals.html#xmlSchemaWildcardPtr">xmlSchemaWildcardPtr</a> wildcard)<br>
-</pre>
-<p>Deallocates a wildcard structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>wildcard</tt></i>:</span></td>
-<td>a wildcard structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-schematron.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-schematron.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-schematron.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-schematron.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,382 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>schematron: XML Schematron implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-schemasInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-threads.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">schematron</span></h2>
-<p>schematron - XML Schematron implementation</p>
-<p>interface to the XML Schematron validity checking. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlSchematron <a href="#xmlSchematron">xmlSchematron</a>;
-typedef struct _xmlSchematronParserCtxt <a href="#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a>;
-typedef <a href="libxml2-schematron.html#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a> * <a href="#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>;
-typedef <a href="libxml2-schematron.html#xmlSchematron">xmlSchematron</a> * <a href="#xmlSchematronPtr">xmlSchematronPtr</a>;
-typedef struct _xmlSchematronValidCtxt <a href="#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a>;
-typedef <a href="libxml2-schematron.html#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a> * <a href="#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a>;
-typedef enum <a href="#xmlSchematronValidOptions">xmlSchematronValidOptions</a>;
-void	<a href="#xmlSchematronFree">xmlSchematronFree</a>		(<a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema);
-void	<a href="#xmlSchematronFreeParserCtxt">xmlSchematronFreeParserCtxt</a>	(<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt);
-void	<a href="#xmlSchematronFreeValidCtxt">xmlSchematronFreeValidCtxt</a>	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt);
-<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	<a href="#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	<a href="#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a>	(const char * buffer, <br>							 int size);
-<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	<a href="#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a>	(const char * URL);
-<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a>	<a href="#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a>	(<a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema, <br>							 int options);
-<a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a>	<a href="#xmlSchematronParse">xmlSchematronParse</a>	(<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt);
-void	<a href="#xmlSchematronSetValidStructuredErrors">xmlSchematronSetValidStructuredErrors</a>	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx);
-int	<a href="#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a>	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> instance);
-typedef void <a href="#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef void <a href="#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a>	(void * ctx, <br>						 const char * msg, <br>						 ... ...);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematron">Structure </a>xmlSchematron</h3>
-<pre class="programlisting">struct _xmlSchematron {
-The content of this structure is not made public by the API.
-} xmlSchematron;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronParserCtxt">Structure </a>xmlSchematronParserCtxt</h3>
-<pre class="programlisting">struct _xmlSchematronParserCtxt {
-The content of this structure is not made public by the API.
-} xmlSchematronParserCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronParserCtxtPtr">Typedef </a>xmlSchematronParserCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronParserCtxt">xmlSchematronParserCtxt</a> * xmlSchematronParserCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronPtr">Typedef </a>xmlSchematronPtr</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematron">xmlSchematron</a> * xmlSchematronPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidCtxt">Structure </a>xmlSchematronValidCtxt</h3>
-<pre class="programlisting">struct _xmlSchematronValidCtxt {
-The content of this structure is not made public by the API.
-} xmlSchematronValidCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidCtxtPtr">Typedef </a>xmlSchematronValidCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronValidCtxt">xmlSchematronValidCtxt</a> * xmlSchematronValidCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidOptions">Enum </a>xmlSchematronValidOptions</h3>
-<pre class="programlisting">enum <a href="#xmlSchematronValidOptions">xmlSchematronValidOptions</a> {
-    <a name="XML_SCHEMATRON_OUT_QUIET">XML_SCHEMATRON_OUT_QUIET</a> = 1 /* quiet no report */
-    <a name="XML_SCHEMATRON_OUT_TEXT">XML_SCHEMATRON_OUT_TEXT</a> = 2 /* build a textual report */
-    <a name="XML_SCHEMATRON_OUT_XML">XML_SCHEMATRON_OUT_XML</a> = 4 /* output SVRL */
-    <a name="XML_SCHEMATRON_OUT_ERROR">XML_SCHEMATRON_OUT_ERROR</a> = 8 /* output via xmlStructuredErrorFunc */
-    <a name="XML_SCHEMATRON_OUT_FILE">XML_SCHEMATRON_OUT_FILE</a> = 256 /* output to a file descriptor */
-    <a name="XML_SCHEMATRON_OUT_BUFFER">XML_SCHEMATRON_OUT_BUFFER</a> = 512 /* output to a buffer */
-    <a name="XML_SCHEMATRON_OUT_IO">XML_SCHEMATRON_OUT_IO</a> = 1024 /*  output to I/O mechanism */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidityErrorFunc"></a>Function type xmlSchematronValidityErrorFunc</h3>
-<pre class="programlisting">void	xmlSchematronValidityErrorFunc	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of an error callback from a Schematron validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidityWarningFunc"></a>Function type xmlSchematronValidityWarningFunc</h3>
-<pre class="programlisting">void	xmlSchematronValidityWarningFunc	(void * ctx, <br>						 const char * msg, <br>						 ... ...)<br>
-</pre>
-<p>Signature of a warning callback from a Schematron validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronFree"></a>xmlSchematronFree ()</h3>
-<pre class="programlisting">void	xmlSchematronFree		(<a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema)<br>
-</pre>
-<p>Deallocate a Schematron structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronFreeParserCtxt"></a>xmlSchematronFreeParserCtxt ()</h3>
-<pre class="programlisting">void	xmlSchematronFreeParserCtxt	(<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronFreeValidCtxt"></a>xmlSchematronFreeValidCtxt ()</h3>
-<pre class="programlisting">void	xmlSchematronFreeValidCtxt	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronNewDocParserCtxt"></a>xmlSchematronNewDocParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	xmlSchematronNewDocParserCtxt	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Create an XML Schematrons parse context for that document. NB. The document may be modified during the parsing process.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a preparsed document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronNewMemParserCtxt"></a>xmlSchematronNewMemParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	xmlSchematronNewMemParserCtxt	(const char * buffer, <br>							 int size)<br>
-</pre>
-<p>Create an XML Schematrons parse context for that memory buffer expected to contain an XML Schematrons file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a pointer to a char array containing the schemas</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 parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronNewParserCtxt"></a>xmlSchematronNewParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a>	xmlSchematronNewParserCtxt	(const char * URL)<br>
-</pre>
-<p>Create an XML Schematrons parse context for that file/resource expected to contain an XML Schematrons file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the location of the schema</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronNewValidCtxt"></a>xmlSchematronNewValidCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a>	xmlSchematronNewValidCtxt	(<a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a> schema, <br>							 int options)<br>
-</pre>
-<p>Create an XML Schematrons validation context based on the given schema.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a precompiled XML Schematrons</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of <a href="libxml2-schematron.html#xmlSchematronValidOptions">xmlSchematronValidOptions</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the validation context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronParse"></a>xmlSchematronParse ()</h3>
-<pre class="programlisting"><a href="libxml2-schematron.html#xmlSchematronPtr">xmlSchematronPtr</a>	xmlSchematronParse	(<a href="libxml2-schematron.html#xmlSchematronParserCtxtPtr">xmlSchematronParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal XML Schematron structure built from the resource or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronSetValidStructuredErrors"></a>xmlSchematronSetValidStructuredErrors ()</h3>
-<pre class="programlisting">void	xmlSchematronSetValidStructuredErrors	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx)<br>
-</pre>
-<p>Set the structured error callback</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a Schematron validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>serror</tt></i>:</span></td>
-<td>the structured error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchematronValidateDoc"></a>xmlSchematronValidateDoc ()</h3>
-<pre class="programlisting">int	xmlSchematronValidateDoc	(<a href="libxml2-schematron.html#xmlSchematronValidCtxtPtr">xmlSchematronValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> instance)<br>
-</pre>
-<p>Validate a tree instance against the schematron</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>instance</tt></i>:</span></td>
-<td>the document instance tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of internal error and an error count otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-threads.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-threads.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-threads.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-threads.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,254 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>threads: interfaces for thread handling</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-schematron.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-tree.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">threads</span></h2>
-<p>threads - interfaces for thread handling</p>
-<p>set of generic threading related routines should work with pthreads, Windows native or TLS threads </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlMutex <a href="#xmlMutex">xmlMutex</a>;
-typedef <a href="libxml2-threads.html#xmlMutex">xmlMutex</a> * <a href="#xmlMutexPtr">xmlMutexPtr</a>;
-typedef struct _xmlRMutex <a href="#xmlRMutex">xmlRMutex</a>;
-typedef <a href="libxml2-threads.html#xmlRMutex">xmlRMutex</a> * <a href="#xmlRMutexPtr">xmlRMutexPtr</a>;
-int	<a href="#xmlCheckThreadLocalStorage">xmlCheckThreadLocalStorage</a>	(void);
-void	<a href="#xmlCleanupThreads">xmlCleanupThreads</a>		(void);
-void	<a href="#xmlFreeMutex">xmlFreeMutex</a>			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok);
-void	<a href="#xmlFreeRMutex">xmlFreeRMutex</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
-void	<a href="#xmlInitThreads">xmlInitThreads</a>			(void);
-void	<a href="#xmlLockLibrary">xmlLockLibrary</a>			(void);
-void	<a href="#xmlMutexLock">xmlMutexLock</a>			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok);
-void	<a href="#xmlMutexUnlock">xmlMutexUnlock</a>			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok);
-<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a>	<a href="#xmlNewMutex">xmlNewMutex</a>		(void);
-<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a>	<a href="#xmlNewRMutex">xmlNewRMutex</a>		(void);
-void	<a href="#xmlRMutexLock">xmlRMutexLock</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
-void	<a href="#xmlRMutexUnlock">xmlRMutexUnlock</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
-void	<a href="#xmlUnlockLibrary">xmlUnlockLibrary</a>		(void);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMutex">Structure </a>xmlMutex</h3>
-<pre class="programlisting">struct _xmlMutex {
-The content of this structure is not made public by the API.
-} xmlMutex;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMutexPtr">Typedef </a>xmlMutexPtr</h3>
-<pre class="programlisting"><a href="libxml2-threads.html#xmlMutex">xmlMutex</a> * xmlMutexPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRMutex">Structure </a>xmlRMutex</h3>
-<pre class="programlisting">struct _xmlRMutex {
-The content of this structure is not made public by the API.
-} xmlRMutex;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRMutexPtr">Typedef </a>xmlRMutexPtr</h3>
-<pre class="programlisting"><a href="libxml2-threads.html#xmlRMutex">xmlRMutex</a> * xmlRMutexPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCheckThreadLocalStorage"></a>xmlCheckThreadLocalStorage ()</h3>
-<pre class="programlisting">int	xmlCheckThreadLocalStorage	(void)<br>
-</pre>
-<p>Check whether thread-local storage could be allocated. In cross-platform code running in multithreaded environments, this function should be called once in each thread before calling other library functions to make sure that thread-local storage was allocated properly.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success or -1 if a memory allocation failed. A failed allocation signals a typically fatal and irrecoverable out-of-memory situation. Don't call any library functions in this case. Available since 2.12.0.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupThreads"></a>xmlCleanupThreads ()</h3>
-<pre class="programlisting">void	xmlCleanupThreads		(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeMutex"></a>xmlFreeMutex ()</h3>
-<pre class="programlisting">void	xmlFreeMutex			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br>
-</pre>
-<p>Free a mutex.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the simple mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeRMutex"></a>xmlFreeRMutex ()</h3>
-<pre class="programlisting">void	xmlFreeRMutex			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok)<br>
-</pre>
-<p>xmlRFreeMutex() is used to reclaim resources associated with a reentrant mutex.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the reentrant mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitThreads"></a>xmlInitThreads ()</h3>
-<pre class="programlisting">void	xmlInitThreads			(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLockLibrary"></a>xmlLockLibrary ()</h3>
-<pre class="programlisting">void	xmlLockLibrary			(void)<br>
-</pre>
-<p>xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMutexLock"></a>xmlMutexLock ()</h3>
-<pre class="programlisting">void	xmlMutexLock			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br>
-</pre>
-<p>xmlMutexLock() is used to lock a libxml2 token.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the simple mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMutexUnlock"></a>xmlMutexUnlock ()</h3>
-<pre class="programlisting">void	xmlMutexUnlock			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br>
-</pre>
-<p>xmlMutexUnlock() is used to unlock a libxml2 token.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the simple mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewMutex"></a>xmlNewMutex ()</h3>
-<pre class="programlisting"><a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a>	xmlNewMutex		(void)<br>
-</pre>
-<p>xmlNewMutex() is used to allocate a libxml2 token struct for use in synchronizing access to data.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new simple mutex pointer or NULL in case of error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewRMutex"></a>xmlNewRMutex ()</h3>
-<pre class="programlisting"><a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a>	xmlNewRMutex		(void)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reentrant mutex pointer or NULL in case of error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRMutexLock"></a>xmlRMutexLock ()</h3>
-<pre class="programlisting">void	xmlRMutexLock			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok)<br>
-</pre>
-<p>xmlRMutexLock() is used to lock a libxml2 token_r.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the reentrant mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRMutexUnlock"></a>xmlRMutexUnlock ()</h3>
-<pre class="programlisting">void	xmlRMutexUnlock			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok)<br>
-</pre>
-<p>xmlRMutexUnlock() is used to unlock a libxml2 token_r.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>tok</tt></i>:</span></td>
-<td>the reentrant mutex</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUnlockLibrary"></a>xmlUnlockLibrary ()</h3>
-<pre class="programlisting">void	xmlUnlockLibrary		(void)<br>
-</pre>
-<p>xmlUnlockLibrary() is used to release a re-entrant lock on the libxml2 library.</p>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-tree.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-tree.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-tree.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-tree.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,5486 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>tree: interfaces for tree manipulation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-threads.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-uri.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">tree</span></h2>
-<p>tree - interfaces for tree manipulation</p>
-<p>this module describes the structures found in an tree resulting from an XML or HTML parsing, as well as the API provided for various processing on that tree </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a>;
-#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a>;
-#define <a href="#XML_GET_LINE">XML_GET_LINE</a>;
-#define <a href="#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a>;
-#define <a href="#XML_XML_ID">XML_XML_ID</a>;
-#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a>;
-#define <a href="#xmlBufferAllocScheme">xmlBufferAllocScheme</a>;
-#define <a href="#xmlChildrenNode">xmlChildrenNode</a>;
-#define <a href="#xmlDefaultBufferSize">xmlDefaultBufferSize</a>;
-#define <a href="#xmlRootNode">xmlRootNode</a>;
-typedef struct _xmlAttr <a href="#xmlAttr">xmlAttr</a>;
-typedef <a href="libxml2-tree.html#xmlAttr">xmlAttr</a> * <a href="#xmlAttrPtr">xmlAttrPtr</a>;
-typedef struct _xmlAttribute <a href="#xmlAttribute">xmlAttribute</a>;
-typedef enum <a href="#xmlAttributeDefault">xmlAttributeDefault</a>;
-typedef <a href="libxml2-tree.html#xmlAttribute">xmlAttribute</a> * <a href="#xmlAttributePtr">xmlAttributePtr</a>;
-typedef enum <a href="#xmlAttributeType">xmlAttributeType</a>;
-typedef struct _xmlBuf <a href="#xmlBuf">xmlBuf</a>;
-typedef <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * <a href="#xmlBufPtr">xmlBufPtr</a>;
-typedef struct _xmlBuffer <a href="#xmlBuffer">xmlBuffer</a>;
-typedef enum <a href="#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>;
-typedef <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * <a href="#xmlBufferPtr">xmlBufferPtr</a>;
-typedef struct _xmlDOMWrapCtxt <a href="#xmlDOMWrapCtxt">xmlDOMWrapCtxt</a>;
-typedef <a href="libxml2-tree.html#xmlDOMWrapCtxt">xmlDOMWrapCtxt</a> * <a href="#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a>;
-typedef struct _xmlDoc <a href="#xmlDoc">xmlDoc</a>;
-typedef enum <a href="#xmlDocProperties">xmlDocProperties</a>;
-typedef <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * <a href="#xmlDocPtr">xmlDocPtr</a>;
-typedef struct _xmlDtd <a href="#xmlDtd">xmlDtd</a>;
-typedef <a href="libxml2-tree.html#xmlDtd">xmlDtd</a> * <a href="#xmlDtdPtr">xmlDtdPtr</a>;
-typedef struct _xmlElement <a href="#xmlElement">xmlElement</a>;
-typedef struct _xmlElementContent <a href="#xmlElementContent">xmlElementContent</a>;
-typedef enum <a href="#xmlElementContentOccur">xmlElementContentOccur</a>;
-typedef <a href="libxml2-tree.html#xmlElementContent">xmlElementContent</a> * <a href="#xmlElementContentPtr">xmlElementContentPtr</a>;
-typedef enum <a href="#xmlElementContentType">xmlElementContentType</a>;
-typedef <a href="libxml2-tree.html#xmlElement">xmlElement</a> * <a href="#xmlElementPtr">xmlElementPtr</a>;
-typedef enum <a href="#xmlElementType">xmlElementType</a>;
-typedef enum <a href="#xmlElementTypeVal">xmlElementTypeVal</a>;
-typedef struct _xmlEntity <a href="#xmlEntity">xmlEntity</a>;
-typedef <a href="libxml2-tree.html#xmlEntity">xmlEntity</a> * <a href="#xmlEntityPtr">xmlEntityPtr</a>;
-typedef struct _xmlEnumeration <a href="#xmlEnumeration">xmlEnumeration</a>;
-typedef <a href="libxml2-tree.html#xmlEnumeration">xmlEnumeration</a> * <a href="#xmlEnumerationPtr">xmlEnumerationPtr</a>;
-typedef struct _xmlID <a href="#xmlID">xmlID</a>;
-typedef <a href="libxml2-tree.html#xmlID">xmlID</a> * <a href="#xmlIDPtr">xmlIDPtr</a>;
-typedef struct _xmlNode <a href="#xmlNode">xmlNode</a>;
-typedef <a href="libxml2-tree.html#xmlNode">xmlNode</a> * <a href="#xmlNodePtr">xmlNodePtr</a>;
-typedef struct _xmlNotation <a href="#xmlNotation">xmlNotation</a>;
-typedef <a href="libxml2-tree.html#xmlNotation">xmlNotation</a> * <a href="#xmlNotationPtr">xmlNotationPtr</a>;
-typedef struct _xmlNs <a href="#xmlNs">xmlNs</a>;
-typedef <a href="libxml2-tree.html#xmlNs">xmlNs</a> * <a href="#xmlNsPtr">xmlNsPtr</a>;
-typedef <a href="libxml2-tree.html#xmlElementType">xmlElementType</a> <a href="#xmlNsType">xmlNsType</a>;
-typedef struct _xmlOutputBuffer <a href="#xmlOutputBuffer">xmlOutputBuffer</a>;
-typedef <a href="libxml2-tree.html#xmlOutputBuffer">xmlOutputBuffer</a> * <a href="#xmlOutputBufferPtr">xmlOutputBufferPtr</a>;
-typedef struct _xmlParserCtxt <a href="#xmlParserCtxt">xmlParserCtxt</a>;
-typedef <a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> * <a href="#xmlParserCtxtPtr">xmlParserCtxtPtr</a>;
-typedef struct _xmlParserInput <a href="#xmlParserInput">xmlParserInput</a>;
-typedef struct _xmlParserInputBuffer <a href="#xmlParserInputBuffer">xmlParserInputBuffer</a>;
-typedef <a href="libxml2-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a> * <a href="#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>;
-typedef <a href="libxml2-tree.html#xmlParserInput">xmlParserInput</a> * <a href="#xmlParserInputPtr">xmlParserInputPtr</a>;
-typedef struct _xmlRef <a href="#xmlRef">xmlRef</a>;
-typedef <a href="libxml2-tree.html#xmlRef">xmlRef</a> * <a href="#xmlRefPtr">xmlRefPtr</a>;
-typedef struct _xmlSAXHandler <a href="#xmlSAXHandler">xmlSAXHandler</a>;
-typedef <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * <a href="#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a>;
-typedef struct _xmlSAXLocator <a href="#xmlSAXLocator">xmlSAXLocator</a>;
-typedef <a href="libxml2-tree.html#xmlSAXLocator">xmlSAXLocator</a> * <a href="#xmlSAXLocatorPtr">xmlSAXLocatorPtr</a>;
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddChild">xmlAddChild</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddChildList">xmlAddChildList</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddNextSibling">xmlAddNextSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> prev, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddPrevSibling">xmlAddPrevSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> next, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlAddSibling">xmlAddSibling</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-void	<a href="#xmlAttrSerializeTxtContent">xmlAttrSerializeTxtContent</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBufContent">xmlBufContent</a>		(const <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * buf);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBufEnd">xmlBufEnd</a>		(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf);
-int	<a href="#xmlBufGetNodeContent">xmlBufGetNodeContent</a>		(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-size_t	<a href="#xmlBufNodeDump">xmlBufNodeDump</a>			(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format);
-size_t	<a href="#xmlBufShrink">xmlBufShrink</a>			(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 size_t len);
-size_t	<a href="#xmlBufUse">xmlBufUse</a>			(const <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf);
-int	<a href="#xmlBufferAdd">xmlBufferAdd</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int len);
-int	<a href="#xmlBufferAddHead">xmlBufferAddHead</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int len);
-int	<a href="#xmlBufferCCat">xmlBufferCCat</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const char * str);
-int	<a href="#xmlBufferCat">xmlBufferCat</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBufferContent">xmlBufferContent</a>	(const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf);
-<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	<a href="#xmlBufferCreate">xmlBufferCreate</a>		(void);
-<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	<a href="#xmlBufferCreateSize">xmlBufferCreateSize</a>	(size_t size);
-<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	<a href="#xmlBufferCreateStatic">xmlBufferCreateStatic</a>	(void * mem, <br>					 size_t size);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBufferDetach">xmlBufferDetach</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
-int	<a href="#xmlBufferDump">xmlBufferDump</a>			(FILE * file, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
-void	<a href="#xmlBufferEmpty">xmlBufferEmpty</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
-void	<a href="#xmlBufferFree">xmlBufferFree</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
-int	<a href="#xmlBufferGrow">xmlBufferGrow</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int len);
-int	<a href="#xmlBufferLength">xmlBufferLength</a>			(const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf);
-int	<a href="#xmlBufferResize">xmlBufferResize</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int size);
-void	<a href="#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme);
-int	<a href="#xmlBufferShrink">xmlBufferShrink</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int len);
-void	<a href="#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
-void	<a href="#xmlBufferWriteChar">xmlBufferWriteChar</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const char * string);
-void	<a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBuildQName">xmlBuildQName</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * memory, <br>					 int len);
-unsigned long	<a href="#xmlChildElementCount">xmlChildElementCount</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlCopyDoc">xmlCopyDoc</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int recursive);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlCopyDtd">xmlCopyDtd</a>		(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlCopyNamespace">xmlCopyNamespace</a>	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlCopyNamespaceList">xmlCopyNamespaceList</a>	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlCopyNode">xmlCopyNode</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int extended);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlCopyNodeList">xmlCopyNodeList</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlCopyProp">xmlCopyProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlCopyPropList">xmlCopyPropList</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlCreateIntSubset">xmlCreateIntSubset</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-typedef <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a>	(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsName, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsPrefix);
-int	<a href="#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a>		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br>					 int options);
-int	<a href="#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a>		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br>					 int deep, <br>					 int options);
-void	<a href="#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a>		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a>	<a href="#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a>	(void);
-int	<a href="#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a>	(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 int options);
-int	<a href="#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a>		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int options);
-<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a>	<a href="#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a>	(<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a> func);
-typedef void <a href="#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocCopyNode">xmlDocCopyNode</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int extended);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocCopyNodeList">xmlDocCopyNodeList</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlDocDump">xmlDocDump</a>			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-void	<a href="#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size, <br>					 int format);
-void	<a href="#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br>					 int * doc_txt_len, <br>					 const char * txt_encoding, <br>					 int format);
-void	<a href="#xmlDocDumpMemory">xmlDocDumpMemory</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size);
-void	<a href="#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br>					 int * doc_txt_len, <br>					 const char * txt_encoding);
-int	<a href="#xmlDocFormatDump">xmlDocFormatDump</a>		(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 int format);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocGetRootElement">xmlDocGetRootElement</a>	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlDocSetRootElement">xmlDocSetRootElement</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> root);
-void	<a href="#xmlElemDump">xmlElemDump</a>			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlFirstElementChild">xmlFirstElementChild</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
-void	<a href="#xmlFreeDoc">xmlFreeDoc</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-void	<a href="#xmlFreeDtd">xmlFreeDtd</a>			(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur);
-void	<a href="#xmlFreeNode">xmlFreeNode</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-void	<a href="#xmlFreeNodeList">xmlFreeNodeList</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-void	<a href="#xmlFreeNs">xmlFreeNs</a>			(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
-void	<a href="#xmlFreeNsList">xmlFreeNsList</a>			(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur);
-void	<a href="#xmlFreeProp">xmlFreeProp</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-void	<a href="#xmlFreePropList">xmlFreePropList</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>	<a href="#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a>	(void);
-int	<a href="#xmlGetCompressMode">xmlGetCompressMode</a>		(void);
-int	<a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlGetIntSubset">xmlGetIntSubset</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlGetLastChild">xmlGetLastChild</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * parent);
-long	<a href="#xmlGetLineNo">xmlGetLineNo</a>			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetNoNsProp">xmlGetNoNsProp</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetNodePath">xmlGetNodePath</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> *	<a href="#xmlGetNsList">xmlGetNsList</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
-int	<a href="#xmlGetNsListSafe">xmlGetNsListSafe</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ** out);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetNsProp">xmlGetNsProp</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlGetProp">xmlGetProp</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlHasNsProp">xmlHasNsProp</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlHasProp">xmlHasProp</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlIsBlankNode">xmlIsBlankNode</a>			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
-int	<a href="#xmlIsXHTML">xmlIsXHTML</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicID);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlLastElementChild">xmlLastElementChild</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewCDataBlock">xmlNewCDataBlock</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewCharRef">xmlNewCharRef</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewChild">xmlNewChild</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewComment">xmlNewComment</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlNewDoc">xmlNewDoc</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * version);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocComment">xmlNewDocComment</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocFragment">xmlNewDocFragment</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocNode">xmlNewDocNode</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocPI">xmlNewDocPI</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlNewDocProp">xmlNewDocProp</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocRawNode">xmlNewDocRawNode</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocText">xmlNewDocText</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewDocTextLen">xmlNewDocTextLen</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlNewDtd">xmlNewDtd</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewNode">xmlNewNode</a>		(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewNodeEatName">xmlNewNodeEatName</a>	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlNewNs">xmlNewNs</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlNewNsProp">xmlNewNsProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlNewNsPropEatName">xmlNewNsPropEatName</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewPI">xmlNewPI</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlNewProp">xmlNewProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewReference">xmlNewReference</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewText">xmlNewText</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewTextChild">xmlNewTextChild</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNewTextLen">xmlNewTextLen</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlNextElementSibling">xmlNextElementSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlNodeAddContent">xmlNodeAddContent</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-int	<a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-int	<a href="#xmlNodeDump">xmlNodeDump</a>			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format);
-void	<a href="#xmlNodeDumpOutput">xmlNodeDumpOutput</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format, <br>					 const char * encoding);
-int	<a href="#xmlNodeGetAttrValue">xmlNodeGetAttrValue</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsUri, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** out);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeGetBase">xmlNodeGetBase</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-int	<a href="#xmlNodeGetBaseSafe">xmlNodeGetBaseSafe</a>		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** baseOut);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeGetContent">xmlNodeGetContent</a>	(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeGetLang">xmlNodeGetLang</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-int	<a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a>		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur);
-int	<a href="#xmlNodeIsText">xmlNodeIsText</a>			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeListGetRawString">xmlNodeListGetRawString</a>	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br>					 int inLine);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNodeListGetString">xmlNodeListGetString</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br>					 int inLine);
-int	<a href="#xmlNodeSetBase">xmlNodeSetBase</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * uri);
-int	<a href="#xmlNodeSetContent">xmlNodeSetContent</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlNodeSetContentLen">xmlNodeSetContentLen</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-int	<a href="#xmlNodeSetLang">xmlNodeSetLang</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * lang);
-void	<a href="#xmlNodeSetName">xmlNodeSetName</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int val);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlReconciliateNs">xmlReconciliateNs</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree);
-<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a>	<a href="#xmlRegisterNodeDefault">xmlRegisterNodeDefault</a>	(<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a> func);
-typedef void <a href="#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlRemoveProp">xmlRemoveProp</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlReplaceNode">xmlReplaceNode</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> old, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-int	<a href="#xmlSaveFile">xmlSaveFile</a>			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur);
-int	<a href="#xmlSaveFileEnc">xmlSaveFileEnc</a>			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding);
-int	<a href="#xmlSaveFileTo">xmlSaveFileTo</a>			(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding);
-int	<a href="#xmlSaveFormatFile">xmlSaveFormatFile</a>		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 int format);
-int	<a href="#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a>		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-int	<a href="#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlSearchNs">xmlSearchNs</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
-<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	<a href="#xmlSearchNsByHref">xmlSearchNsByHref</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href);
-void	<a href="#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a>	(<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme);
-void	<a href="#xmlSetCompressMode">xmlSetCompressMode</a>		(int mode);
-void	<a href="#xmlSetDocCompressMode">xmlSetDocCompressMode</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int mode);
-int	<a href="#xmlSetListDoc">xmlSetListDoc</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-void	<a href="#xmlSetNs">xmlSetNs</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlSetNsProp">xmlSetNsProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlSetProp">xmlSetProp</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlSetTreeDoc">xmlSetTreeDoc</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSplitQName2">xmlSplitQName2</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** prefix);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSplitQName3">xmlSplitQName3</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int * len);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlStringGetNodeList">xmlStringGetNodeList</a>	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a>	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len);
-int	<a href="#xmlTextConcat">xmlTextConcat</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlTextMerge">xmlTextMerge</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> first, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> second);
-<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a>	<a href="#xmlThrDefDeregisterNodeDefault">xmlThrDefDeregisterNodeDefault</a>	(<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a> func);
-<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a>	<a href="#xmlThrDefRegisterNodeDefault">xmlThrDefRegisterNodeDefault</a>	(<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a> func);
-void	<a href="#xmlUnlinkNode">xmlUnlinkNode</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-int	<a href="#xmlUnsetNsProp">xmlUnsetNsProp</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlUnsetProp">xmlUnsetProp</a>			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlValidateNCName">xmlValidateNCName</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space);
-int	<a href="#xmlValidateNMToken">xmlValidateNMToken</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space);
-int	<a href="#xmlValidateName">xmlValidateName</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space);
-int	<a href="#xmlValidateQName">xmlValidateQName</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML2_NEW_BUFFER">Macro </a>LIBXML2_NEW_BUFFER</h3>
-<pre class="programlisting">#define <a href="#LIBXML2_NEW_BUFFER">LIBXML2_NEW_BUFFER</a>;
-</pre>
-<p>Macro used to express that the API use the new buffers for <a href="libxml2-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a> and <a href="libxml2-tree.html#xmlOutputBuffer">xmlOutputBuffer</a>. The change was introduced in 2.9.0.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_GET_CONTENT">Macro </a>XML_GET_CONTENT</h3>
-<pre class="programlisting">#define <a href="#XML_GET_CONTENT">XML_GET_CONTENT</a>;
-</pre>
-<p>Macro to extract the content pointer of a node.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_GET_LINE">Macro </a>XML_GET_LINE</h3>
-<pre class="programlisting">#define <a href="#XML_GET_LINE">XML_GET_LINE</a>;
-</pre>
-<p>Macro to extract the line number of an element node.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_LOCAL_NAMESPACE">Macro </a>XML_LOCAL_NAMESPACE</h3>
-<pre class="programlisting">#define <a href="#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a>;
-</pre>
-<p>A namespace declaration node.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_XML_ID">Macro </a>XML_XML_ID</h3>
-<pre class="programlisting">#define <a href="#XML_XML_ID">XML_XML_ID</a>;
-</pre>
-<p>This is the name for the special xml:id attribute</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_XML_NAMESPACE">Macro </a>XML_XML_NAMESPACE</h3>
-<pre class="programlisting">#define <a href="#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a>;
-</pre>
-<p>This is the namespace for the special xml: prefix predefined in the XML Namespace specification.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferAllocScheme">Macro </a>xmlBufferAllocScheme</h3>
-<pre class="programlisting">#define <a href="#xmlBufferAllocScheme">xmlBufferAllocScheme</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChildrenNode">Macro </a>xmlChildrenNode</h3>
-<pre class="programlisting">#define <a href="#xmlChildrenNode">xmlChildrenNode</a>;
-</pre>
-<p>Macro for compatibility naming layer with libxml1. Maps to "children."</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDefaultBufferSize">Macro </a>xmlDefaultBufferSize</h3>
-<pre class="programlisting">#define <a href="#xmlDefaultBufferSize">xmlDefaultBufferSize</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRootNode">Macro </a>xmlRootNode</h3>
-<pre class="programlisting">#define <a href="#xmlRootNode">xmlRootNode</a>;
-</pre>
-<p>Macro for compatibility naming layer with libxml1. Maps to "children".</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttr">Structure </a>xmlAttr</h3>
-<pre class="programlisting">struct _xmlAttr {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlNode *	parent
-    struct _xmlAttr *	next
-    struct _xmlAttr *	prev
-    struct _xmlDoc *	doc
-    <a href="libxml2-tree.html#xmlNs">xmlNs</a> *	ns
-    <a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a>	atype
-    void *	psvi
-    struct _xmlID *	id
-} xmlAttr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttrPtr">Typedef </a>xmlAttrPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttr">xmlAttr</a> * xmlAttrPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttribute">Structure </a>xmlAttribute</h3>
-<pre class="programlisting">struct _xmlAttribute {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlDtd *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    struct _xmlAttribute *	nexth
-    <a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a>	atype
-    <a href="libxml2-tree.html#xmlAttributeDefault">xmlAttributeDefault</a>	def
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	defaultValue
-    <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	tree
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	prefix
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	elem
-} xmlAttribute;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttributeDefault">Enum </a>xmlAttributeDefault</h3>
-<pre class="programlisting">enum <a href="#xmlAttributeDefault">xmlAttributeDefault</a> {
-    <a name="XML_ATTRIBUTE_NONE">XML_ATTRIBUTE_NONE</a> = 1
-    <a name="XML_ATTRIBUTE_REQUIRED">XML_ATTRIBUTE_REQUIRED</a> = 2
-    <a name="XML_ATTRIBUTE_IMPLIED">XML_ATTRIBUTE_IMPLIED</a> = 3
-    <a name="XML_ATTRIBUTE_FIXED">XML_ATTRIBUTE_FIXED</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttributePtr">Typedef </a>xmlAttributePtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttribute">xmlAttribute</a> * xmlAttributePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttributeType">Enum </a>xmlAttributeType</h3>
-<pre class="programlisting">enum <a href="#xmlAttributeType">xmlAttributeType</a> {
-    <a name="XML_ATTRIBUTE_CDATA">XML_ATTRIBUTE_CDATA</a> = 1
-    <a name="XML_ATTRIBUTE_ID">XML_ATTRIBUTE_ID</a> = 2
-    <a name="XML_ATTRIBUTE_IDREF">XML_ATTRIBUTE_IDREF</a> = 3
-    <a name="XML_ATTRIBUTE_IDREFS">XML_ATTRIBUTE_IDREFS</a> = 4
-    <a name="XML_ATTRIBUTE_ENTITY">XML_ATTRIBUTE_ENTITY</a> = 5
-    <a name="XML_ATTRIBUTE_ENTITIES">XML_ATTRIBUTE_ENTITIES</a> = 6
-    <a name="XML_ATTRIBUTE_NMTOKEN">XML_ATTRIBUTE_NMTOKEN</a> = 7
-    <a name="XML_ATTRIBUTE_NMTOKENS">XML_ATTRIBUTE_NMTOKENS</a> = 8
-    <a name="XML_ATTRIBUTE_ENUMERATION">XML_ATTRIBUTE_ENUMERATION</a> = 9
-    <a name="XML_ATTRIBUTE_NOTATION">XML_ATTRIBUTE_NOTATION</a> = 10
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuf">Structure </a>xmlBuf</h3>
-<pre class="programlisting">struct _xmlBuf {
-The content of this structure is not made public by the API.
-} xmlBuf;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufPtr">Typedef </a>xmlBufPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * xmlBufPtr;
-</pre>
-<p>A pointer to a buffer structure, the actual structure internals are not public</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuffer">Structure </a>xmlBuffer</h3>
-<pre class="programlisting">struct _xmlBuffer {
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	content
-    unsigned int	use
-    unsigned int	size
-    <a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>	alloc
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	contentIO
-} xmlBuffer;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferAllocationScheme">Enum </a>xmlBufferAllocationScheme</h3>
-<pre class="programlisting">enum <a href="#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> {
-    <a name="XML_BUFFER_ALLOC_DOUBLEIT">XML_BUFFER_ALLOC_DOUBLEIT</a> = 1 /* double each time one need to grow */
-    <a name="XML_BUFFER_ALLOC_EXACT">XML_BUFFER_ALLOC_EXACT</a> = 2 /* grow only to the minimal size */
-    <a name="XML_BUFFER_ALLOC_IMMUTABLE">XML_BUFFER_ALLOC_IMMUTABLE</a> = 3 /* immutable buffer, deprecated */
-    <a name="XML_BUFFER_ALLOC_IO">XML_BUFFER_ALLOC_IO</a> = 4 /* special allocation scheme used for I/O */
-    <a name="XML_BUFFER_ALLOC_HYBRID">XML_BUFFER_ALLOC_HYBRID</a> = 5 /* exact up to a threshold, and doubleit thereafter */
-    <a name="XML_BUFFER_ALLOC_BOUNDED">XML_BUFFER_ALLOC_BOUNDED</a> = 6 /*  limit the upper size of the buffer */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferPtr">Typedef </a>xmlBufferPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * xmlBufferPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapCtxt">Structure </a>xmlDOMWrapCtxt</h3>
-<pre class="programlisting">struct _xmlDOMWrapCtxt {
-    void *	_private
-    int	type
-    void *	namespaceMap
-    <a href="libxml2-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a>	getNsForNodeFunc
-} xmlDOMWrapCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapCtxtPtr">Typedef </a>xmlDOMWrapCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDOMWrapCtxt">xmlDOMWrapCtxt</a> * xmlDOMWrapCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDoc">Structure </a>xmlDoc</h3>
-<pre class="programlisting">struct _xmlDoc {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    char *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlNode *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    int	compression
-    int	standalone
-    struct _xmlDtd *	intSubset
-    struct _xmlDtd *	extSubset
-    struct _xmlNs *	oldNs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	version
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	encoding
-    void *	ids
-    void *	refs
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	URL
-    int	charset
-    struct _xmlDict *	dict
-    void *	psvi
-    int	parseFlags
-    int	properties
-} xmlDoc;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocProperties">Enum </a>xmlDocProperties</h3>
-<pre class="programlisting">enum <a href="#xmlDocProperties">xmlDocProperties</a> {
-    <a name="XML_DOC_WELLFORMED">XML_DOC_WELLFORMED</a> = 1 /* document is XML well formed */
-    <a name="XML_DOC_NSVALID">XML_DOC_NSVALID</a> = 2 /* document is Namespace valid */
-    <a name="XML_DOC_OLD10">XML_DOC_OLD10</a> = 4 /* parsed with old XML-1.0 parser */
-    <a name="XML_DOC_DTDVALID">XML_DOC_DTDVALID</a> = 8 /* DTD validation was successful */
-    <a name="XML_DOC_XINCLUDE">XML_DOC_XINCLUDE</a> = 16 /* XInclude substitution was done */
-    <a name="XML_DOC_USERBUILT">XML_DOC_USERBUILT</a> = 32 /* Document was built using the API and not by parsing an instance */
-    <a name="XML_DOC_INTERNAL">XML_DOC_INTERNAL</a> = 64 /* built for internal processing */
-    <a name="XML_DOC_HTML">XML_DOC_HTML</a> = 128 /*  parsed or built HTML document */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocPtr">Typedef </a>xmlDocPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * xmlDocPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDtd">Structure </a>xmlDtd</h3>
-<pre class="programlisting">struct _xmlDtd {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlDoc *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    void *	notations
-    void *	elements
-    void *	attributes
-    void *	entities
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ExternalID
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	SystemID
-    void *	pentities
-} xmlDtd;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDtdPtr">Typedef </a>xmlDtdPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtd">xmlDtd</a> * xmlDtdPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElement">Structure </a>xmlElement</h3>
-<pre class="programlisting">struct _xmlElement {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlDtd *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    <a href="libxml2-tree.html#xmlElementTypeVal">xmlElementTypeVal</a>	etype
-    <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	content
-    <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	attributes
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	prefix
-    <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	contModel
-    void *	contModel
-} xmlElement;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementContent">Structure </a>xmlElementContent</h3>
-<pre class="programlisting">struct _xmlElementContent {
-    <a href="libxml2-tree.html#xmlElementContentType">xmlElementContentType</a>	type
-    <a href="libxml2-tree.html#xmlElementContentOccur">xmlElementContentOccur</a>	ocur
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlElementContent *	c1
-    struct _xmlElementContent *	c2
-    struct _xmlElementContent *	parent
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	prefix
-} xmlElementContent;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementContentOccur">Enum </a>xmlElementContentOccur</h3>
-<pre class="programlisting">enum <a href="#xmlElementContentOccur">xmlElementContentOccur</a> {
-    <a name="XML_ELEMENT_CONTENT_ONCE">XML_ELEMENT_CONTENT_ONCE</a> = 1
-    <a name="XML_ELEMENT_CONTENT_OPT">XML_ELEMENT_CONTENT_OPT</a> = 2
-    <a name="XML_ELEMENT_CONTENT_MULT">XML_ELEMENT_CONTENT_MULT</a> = 3
-    <a name="XML_ELEMENT_CONTENT_PLUS">XML_ELEMENT_CONTENT_PLUS</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementContentPtr">Typedef </a>xmlElementContentPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContent">xmlElementContent</a> * xmlElementContentPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementContentType">Enum </a>xmlElementContentType</h3>
-<pre class="programlisting">enum <a href="#xmlElementContentType">xmlElementContentType</a> {
-    <a name="XML_ELEMENT_CONTENT_PCDATA">XML_ELEMENT_CONTENT_PCDATA</a> = 1
-    <a name="XML_ELEMENT_CONTENT_ELEMENT">XML_ELEMENT_CONTENT_ELEMENT</a> = 2
-    <a name="XML_ELEMENT_CONTENT_SEQ">XML_ELEMENT_CONTENT_SEQ</a> = 3
-    <a name="XML_ELEMENT_CONTENT_OR">XML_ELEMENT_CONTENT_OR</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementPtr">Typedef </a>xmlElementPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElement">xmlElement</a> * xmlElementPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementType">Enum </a>xmlElementType</h3>
-<pre class="programlisting">enum <a href="#xmlElementType">xmlElementType</a> {
-    <a name="XML_ELEMENT_NODE">XML_ELEMENT_NODE</a> = 1
-    <a name="XML_ATTRIBUTE_NODE">XML_ATTRIBUTE_NODE</a> = 2
-    <a name="XML_TEXT_NODE">XML_TEXT_NODE</a> = 3
-    <a name="XML_CDATA_SECTION_NODE">XML_CDATA_SECTION_NODE</a> = 4
-    <a name="XML_ENTITY_REF_NODE">XML_ENTITY_REF_NODE</a> = 5
-    <a name="XML_ENTITY_NODE">XML_ENTITY_NODE</a> = 6 /* unused */
-    <a name="XML_PI_NODE">XML_PI_NODE</a> = 7
-    <a name="XML_COMMENT_NODE">XML_COMMENT_NODE</a> = 8
-    <a name="XML_DOCUMENT_NODE">XML_DOCUMENT_NODE</a> = 9
-    <a name="XML_DOCUMENT_TYPE_NODE">XML_DOCUMENT_TYPE_NODE</a> = 10 /* unused */
-    <a name="XML_DOCUMENT_FRAG_NODE">XML_DOCUMENT_FRAG_NODE</a> = 11
-    <a name="XML_NOTATION_NODE">XML_NOTATION_NODE</a> = 12 /* unused */
-    <a name="XML_HTML_DOCUMENT_NODE">XML_HTML_DOCUMENT_NODE</a> = 13
-    <a name="XML_DTD_NODE">XML_DTD_NODE</a> = 14
-    <a name="XML_ELEMENT_DECL">XML_ELEMENT_DECL</a> = 15
-    <a name="XML_ATTRIBUTE_DECL">XML_ATTRIBUTE_DECL</a> = 16
-    <a name="XML_ENTITY_DECL">XML_ENTITY_DECL</a> = 17
-    <a name="XML_NAMESPACE_DECL">XML_NAMESPACE_DECL</a> = 18
-    <a name="XML_XINCLUDE_START">XML_XINCLUDE_START</a> = 19
-    <a name="XML_XINCLUDE_END">XML_XINCLUDE_END</a> = 20 /*  XML_DOCB_DOCUMENT_NODE= 21 removed */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementTypeVal">Enum </a>xmlElementTypeVal</h3>
-<pre class="programlisting">enum <a href="#xmlElementTypeVal">xmlElementTypeVal</a> {
-    <a name="XML_ELEMENT_TYPE_UNDEFINED">XML_ELEMENT_TYPE_UNDEFINED</a> = 0
-    <a name="XML_ELEMENT_TYPE_EMPTY">XML_ELEMENT_TYPE_EMPTY</a> = 1
-    <a name="XML_ELEMENT_TYPE_ANY">XML_ELEMENT_TYPE_ANY</a> = 2
-    <a name="XML_ELEMENT_TYPE_MIXED">XML_ELEMENT_TYPE_MIXED</a> = 3
-    <a name="XML_ELEMENT_TYPE_ELEMENT">XML_ELEMENT_TYPE_ELEMENT</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEntity">Structure </a>xmlEntity</h3>
-<pre class="programlisting">struct _xmlEntity {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlDtd *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	orig
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	content
-    int	length
-    <a href="libxml2-entities.html#xmlEntityType">xmlEntityType</a>	etype
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	ExternalID
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	SystemID
-    struct _xmlEntity *	nexte
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	URI
-    int	owner
-    int	flags
-    unsigned long	expandedSize
-} xmlEntity;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEntityPtr">Typedef </a>xmlEntityPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEntity">xmlEntity</a> * xmlEntityPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEnumeration">Structure </a>xmlEnumeration</h3>
-<pre class="programlisting">struct _xmlEnumeration {
-    struct _xmlEnumeration *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-} xmlEnumeration;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlEnumerationPtr">Typedef </a>xmlEnumerationPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEnumeration">xmlEnumeration</a> * xmlEnumerationPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlID">Structure </a>xmlID</h3>
-<pre class="programlisting">struct _xmlID {
-    struct _xmlID *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	value
-    <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	attr
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    int	lineno
-    struct _xmlDoc *	doc
-} xmlID;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIDPtr">Typedef </a>xmlIDPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlID">xmlID</a> * xmlIDPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNode">Structure </a>xmlNode</h3>
-<pre class="programlisting">struct _xmlNode {
-    void *	_private
-    <a href="libxml2-tree.html#xmlElementType">xmlElementType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    struct _xmlNode *	children
-    struct _xmlNode *	last
-    struct _xmlNode *	parent
-    struct _xmlNode *	next
-    struct _xmlNode *	prev
-    struct _xmlDoc *	doc
-    <a href="libxml2-tree.html#xmlNs">xmlNs</a> *	ns
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	content
-    struct _xmlAttr *	properties
-    <a href="libxml2-tree.html#xmlNs">xmlNs</a> *	nsDef
-    void *	psvi
-    unsigned short	line
-    unsigned short	extra
-} xmlNode;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodePtr">Typedef </a>xmlNodePtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNode">xmlNode</a> * xmlNodePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNotation">Structure </a>xmlNotation</h3>
-<pre class="programlisting">struct _xmlNotation {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	PublicID
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	SystemID
-} xmlNotation;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNotationPtr">Typedef </a>xmlNotationPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNotation">xmlNotation</a> * xmlNotationPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNs">Structure </a>xmlNs</h3>
-<pre class="programlisting">struct _xmlNs {
-    struct _xmlNs *	next
-    <a href="libxml2-tree.html#xmlNsType">xmlNsType</a>	type
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	href
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	prefix
-    void *	_private
-    struct _xmlDoc *	context
-} xmlNs;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNsPtr">Typedef </a>xmlNsPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNs">xmlNs</a> * xmlNsPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNsType">Typedef </a>xmlNsType</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementType">xmlElementType</a> xmlNsType;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBuffer">Structure </a>xmlOutputBuffer</h3>
-<pre class="programlisting">struct _xmlOutputBuffer {
-    void *	context
-    <a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a>	writecallback
-    <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a>	closecallback
-    <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	encoder
-    <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a>	buffer
-    <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a>	conv
-    int	written
-    int	error
-} xmlOutputBuffer;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferPtr">Typedef </a>xmlOutputBufferPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBuffer">xmlOutputBuffer</a> * xmlOutputBufferPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserCtxt">Structure </a>xmlParserCtxt</h3>
-<pre class="programlisting">struct _xmlParserCtxt {
-    struct _xmlSAXHandler *	sax
-    void *	userData
-    <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	myDoc
-    int	wellFormed
-    int	replaceEntities
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	version
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	encoding
-    int	standalone
-    int	html
-    <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	input
-    int	inputNr
-    int	inputMax
-    <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> *	inputTab
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	nodeNr
-    int	nodeMax
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> *	nodeTab
-    int	record_info
-    <a href="libxml2-parser.html#xmlParserNodeInfoSeq">xmlParserNodeInfoSeq</a>	node_seq
-    int	errNo
-    int	hasExternalSubset
-    int	hasPErefs
-    int	external
-    int	valid
-    int	validate
-    <a href="libxml2-valid.html#xmlValidCtxt">xmlValidCtxt</a>	vctxt
-    <a href="libxml2-parser.html#xmlParserInputState">xmlParserInputState</a>	instate
-    int	token
-    char *	directory
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    int	nameNr
-    int	nameMax
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> **	nameTab
-    long	nbChars
-    long	checkIndex
-    int	keepBlanks
-    int	disableSAX
-    int	inSubset
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	intSubName
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	extSubURI
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	extSubSystem
-    int *	space
-    int	spaceNr
-    int	spaceMax
-    int *	spaceTab
-    int	depth
-    <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	entity
-    int	charset
-    int	nodelen
-    int	nodemem
-    int	pedantic
-    void *	_private
-    int	loadsubset
-    int	linenumbers
-    void *	catalogs
-    int	recovery
-    int	progressive
-    <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	dict
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> **	atts
-    int	maxatts
-    int	docdict
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	str_xml
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	str_xmlns
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	str_xml_ns
-    int	sax2
-    int	nsNr
-    int	nsMax
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> **	nsTab
-    unsigned *	attallocs
-    <a href="libxml2-parser.html#xmlStartTag">xmlStartTag</a> *	pushTab
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	attsDefault
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	attsSpecial
-    int	nsWellFormed
-    int	options
-    int	dictNames
-    int	freeElemsNr
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	freeElems
-    int	freeAttrsNr
-    <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	freeAttrs
-    <a href="libxml2-xmlerror.html#xmlError">xmlError</a>	lastError
-    <a href="libxml2-parser.html#xmlParserMode">xmlParserMode</a>	parseMode
-    unsigned long	nbentities
-    unsigned long	sizeentities
-    <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> *	nodeInfo
-    int	nodeInfoNr
-    int	nodeInfoMax
-    <a href="libxml2-parser.html#xmlParserNodeInfo">xmlParserNodeInfo</a> *	nodeInfoTab
-    int	input_id
-    unsigned long	sizeentcopy
-    int	endCheckState
-    unsigned short	nbErrors
-    unsigned short	nbWarnings
-    unsigned	maxAmpl
-    <a href="libxml2-parser.html#xmlParserNsData">xmlParserNsData</a> *	nsdb
-    unsigned	attrHashMax
-    <a href="libxml2-parser.html#xmlAttrHashBucket">xmlAttrHashBucket</a> *	attrHash
-    <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a>	errorHandler
-    void *	errorCtxt
-    <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a>	resourceLoader
-    void *	resourceCtxt
-    <a href="libxml2-encoding.html#xmlCharEncConvImpl">xmlCharEncConvImpl</a>	convImpl
-    void *	convCtxt
-} xmlParserCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserCtxtPtr">Typedef </a>xmlParserCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxt">xmlParserCtxt</a> * xmlParserCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInput">Structure </a>xmlParserInput</h3>
-<pre class="programlisting">struct _xmlParserInput {
-    <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	buf
-    const char *	filename
-    const char *	directory
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	base
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	cur
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	end
-    int	length
-    int	line
-    int	col
-    unsigned long	consumed
-    <a href="libxml2-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a>	free
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	encoding
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	version
-    int	flags
-    int	id
-    unsigned long	parentConsumed
-    <a href="libxml2-tree.html#xmlEntityPtr">xmlEntityPtr</a>	entity
-} xmlParserInput;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBuffer">Structure </a>xmlParserInputBuffer</h3>
-<pre class="programlisting">struct _xmlParserInputBuffer {
-    void *	context
-    <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a>	readcallback
-    <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a>	closecallback
-    <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a>	encoder
-    <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a>	buffer
-    <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a>	raw
-    int	compressed
-    int	error
-    unsigned long	rawconsumed
-} xmlParserInputBuffer;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferPtr">Typedef </a>xmlParserInputBufferPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a> * xmlParserInputBufferPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputPtr">Typedef </a>xmlParserInputPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInput">xmlParserInput</a> * xmlParserInputPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRef">Structure </a>xmlRef</h3>
-<pre class="programlisting">struct _xmlRef {
-    struct _xmlRef *	next
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	value
-    <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	attr
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    int	lineno
-} xmlRef;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRefPtr">Typedef </a>xmlRefPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlRef">xmlRef</a> * xmlRefPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXHandler">Structure </a>xmlSAXHandler</h3>
-<pre class="programlisting">struct _xmlSAXHandler {
-    <a href="libxml2-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a>	internalSubset
-    <a href="libxml2-parser.html#isStandaloneSAXFunc">isStandaloneSAXFunc</a>	isStandalone
-    <a href="libxml2-parser.html#hasInternalSubsetSAXFunc">hasInternalSubsetSAXFunc</a>	hasInternalSubset
-    <a href="libxml2-parser.html#hasExternalSubsetSAXFunc">hasExternalSubsetSAXFunc</a>	hasExternalSubset
-    <a href="libxml2-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a>	resolveEntity
-    <a href="libxml2-parser.html#getEntitySAXFunc">getEntitySAXFunc</a>	getEntity
-    <a href="libxml2-parser.html#entityDeclSAXFunc">entityDeclSAXFunc</a>	entityDecl
-    <a href="libxml2-parser.html#notationDeclSAXFunc">notationDeclSAXFunc</a>	notationDecl
-    <a href="libxml2-parser.html#attributeDeclSAXFunc">attributeDeclSAXFunc</a>	attributeDecl
-    <a href="libxml2-parser.html#elementDeclSAXFunc">elementDeclSAXFunc</a>	elementDecl
-    <a href="libxml2-parser.html#unparsedEntityDeclSAXFunc">unparsedEntityDeclSAXFunc</a>	unparsedEntityDecl
-    <a href="libxml2-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a>	setDocumentLocator
-    <a href="libxml2-parser.html#startDocumentSAXFunc">startDocumentSAXFunc</a>	startDocument
-    <a href="libxml2-parser.html#endDocumentSAXFunc">endDocumentSAXFunc</a>	endDocument
-    <a href="libxml2-parser.html#startElementSAXFunc">startElementSAXFunc</a>	startElement
-    <a href="libxml2-parser.html#endElementSAXFunc">endElementSAXFunc</a>	endElement
-    <a href="libxml2-parser.html#referenceSAXFunc">referenceSAXFunc</a>	reference
-    <a href="libxml2-parser.html#charactersSAXFunc">charactersSAXFunc</a>	characters
-    <a href="libxml2-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a>	ignorableWhitespace
-    <a href="libxml2-parser.html#processingInstructionSAXFunc">processingInstructionSAXFunc</a>	processingInstruction
-    <a href="libxml2-parser.html#commentSAXFunc">commentSAXFunc</a>	comment
-    <a href="libxml2-parser.html#warningSAXFunc">warningSAXFunc</a>	warning
-    <a href="libxml2-parser.html#errorSAXFunc">errorSAXFunc</a>	error
-    <a href="libxml2-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a>	fatalError
-    <a href="libxml2-parser.html#getParameterEntitySAXFunc">getParameterEntitySAXFunc</a>	getParameterEntity
-    <a href="libxml2-parser.html#cdataBlockSAXFunc">cdataBlockSAXFunc</a>	cdataBlock
-    <a href="libxml2-parser.html#externalSubsetSAXFunc">externalSubsetSAXFunc</a>	externalSubset
-    unsigned int	initialized
-    void *	_private
-    <a href="libxml2-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a>	startElementNs
-    <a href="libxml2-parser.html#endElementNsSAX2Func">endElementNsSAX2Func</a>	endElementNs
-    <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a>	serror
-} xmlSAXHandler;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXHandlerPtr">Typedef </a>xmlSAXHandlerPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * xmlSAXHandlerPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXLocator">Structure </a>xmlSAXLocator</h3>
-<pre class="programlisting">struct _xmlSAXLocator {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *(*getPublicId)	getPublicId
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *(*getSystemId)	getSystemId
-    int(*getLineNumber)	getLineNumber
-    int(*getColumnNumber)	getColumnNumber
-} xmlSAXLocator;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSAXLocatorPtr">Typedef </a>xmlSAXLocatorPtr</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlSAXLocator">xmlSAXLocator</a> * xmlSAXLocatorPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapAcquireNsFunction"></a>Function type xmlDOMWrapAcquireNsFunction</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlDOMWrapAcquireNsFunction	(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsName, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsPrefix)<br>
-</pre>
-<p>A function called to acquire namespaces (xmlNs) from the wrapper.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a DOM wrapper context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the context node (element or attribute)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nsName</tt></i>:</span></td>
-<td>the requested namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nsPrefix</tt></i>:</span></td>
-<td>the requested namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> or NULL in case of an error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDeregisterNodeFunc"></a>Function type xmlDeregisterNodeFunc</h3>
-<pre class="programlisting">void	xmlDeregisterNodeFunc		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Signature for the deregistration callback of a discarded node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterNodeFunc"></a>Function type xmlRegisterNodeFunc</h3>
-<pre class="programlisting">void	xmlRegisterNodeFunc		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Signature for the registration callback of a created node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddChild"></a>xmlAddChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlAddChild		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlink @cur and append it to the children of @parent. If @cur is a text node, it may be merged with an adjacent text node and freed. In this case the text node containing the merged content is returned. If @cur is an attribute node, it is appended to the attributes of @parent. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed. General notes: Move operations like <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a> can cause element or attribute nodes to reference namespaces that aren't declared in one of their ancestors. This can lead to use-after-free errors if the elements containing the declarations are freed later, especially when moving nodes from one document to another. You should consider calling <a href="libxml2-tree.html#xmlReconciliateNs">xmlReconciliateNs</a> after a move operation to normalize namespaces. Another option is to call <a href="libxml2-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a> with the target parent before moving a node. For the most part, move operations don't check whether the resulting tree structure is valid. Users must make sure that parent nodes only receive children of valid types. Inserted child nodes must never be an ancestor of the parent node to avoid cycles in the tree structure. In general, only document, document fragments, elements and attributes should be used as parent nodes. When moving a node between documents and a memory allocation fails, the node's content will be corrupted and it will be unlinked. In this case, the node must be freed manually. Moving DTDs between documents isn't supported.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the child node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddChildList"></a>xmlAddChildList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlAddChildList		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Append a node list to another node. See <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first node in the list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last child or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddNextSibling"></a>xmlAddNextSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlAddNextSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> prev, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlinks @cur and inserts it as next sibling after @prev. Unlike <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a> this function does not merge text nodes. If @cur is an attribute node, it is inserted after attribute @prev. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed. See the notes in <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>prev</tt></i>:</span></td>
-<td>the target node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the new node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddPrevSibling"></a>xmlAddPrevSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlAddPrevSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> next, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlinks @cur and inserts it as previous sibling before @next. Unlike <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a> this function does not merge text nodes. If @cur is an attribute node, it is inserted before attribute @next. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed. See the notes in <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>next</tt></i>:</span></td>
-<td>the target node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the new node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddSibling"></a>xmlAddSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlAddSibling		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlinks @cur and inserts it as last sibling of @node. If @cur is a text node, it may be merged with an adjacent text node and freed. In this case the text node containing the merged content is returned. If @cur is an attribute node, it is appended to the attribute list containing @node. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed. See the notes in <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the target node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the new node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttrSerializeTxtContent"></a>xmlAttrSerializeTxtContent ()</h3>
-<pre class="programlisting">void	xmlAttrSerializeTxtContent	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string)<br>
-</pre>
-<p>Serialize text attribute values to an xml simple buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the text content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufContent"></a>xmlBufContent ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBufContent		(const <a href="libxml2-tree.html#xmlBuf">xmlBuf</a> * buf)<br>
-</pre>
-<p>Function to extract the content of a buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufEnd"></a>xmlBufEnd ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBufEnd		(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br>
-</pre>
-<p>Function to extract the end of the content of a buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the end of the internal content or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufGetNodeContent"></a>xmlBufGetNodeContent ()</h3>
-<pre class="programlisting">int	xmlBufGetNodeContent		(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buf with this value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>a buffer <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufNodeDump"></a>xmlBufNodeDump ()</h3>
-<pre class="programlisting">size_t	xmlBufNodeDump			(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>level</tt></i>:</span></td>
-<td>the imbrication level for indenting</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>is formatting allowed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written to the buffer, in case of error 0 is returned or @buf stores the error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufShrink"></a>xmlBufShrink ()</h3>
-<pre class="programlisting">size_t	xmlBufShrink			(<a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf, <br>					 size_t len)<br>
-</pre>
-<p>DEPRECATED: Don't use. Remove the beginning of an XML buffer. NOTE that this routine behaviour differs from xmlBufferShrink() as it will return 0 on error instead of -1 due to size_t being used as the return type.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to dump</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to remove</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte removed or 0 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufUse"></a>xmlBufUse ()</h3>
-<pre class="programlisting">size_t	xmlBufUse			(const <a href="libxml2-tree.html#xmlBufPtr">xmlBufPtr</a> buf)<br>
-</pre>
-<p>Function to get the length of a buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the length of data in the internal content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferAdd"></a>xmlBufferAdd ()</h3>
-<pre class="programlisting">int	xmlBufferAdd			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int len)<br>
-</pre>
-<p>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to dump</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the #xmlChar string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of #xmlChar to add</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferAddHead"></a>xmlBufferAddHead ()</h3>
-<pre class="programlisting">int	xmlBufferAddHead		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int len)<br>
-</pre>
-<p>Add a string range to the beginning of an XML buffer. if len == -1, the length of @str is recomputed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the #xmlChar string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of #xmlChar to add</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferCCat"></a>xmlBufferCCat ()</h3>
-<pre class="programlisting">int	xmlBufferCCat			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const char * str)<br>
-</pre>
-<p>Append a zero terminated C string to an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to dump</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the C char string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferCat"></a>xmlBufferCat ()</h3>
-<pre class="programlisting">int	xmlBufferCat			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Append a zero terminated string to an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to add to</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the #xmlChar string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 successful, a positive error code number otherwise and -1 in case of internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferContent"></a>xmlBufferContent ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBufferContent	(const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br>
-</pre>
-<p>Function to extract the content of a buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferCreate"></a>xmlBufferCreate ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	xmlBufferCreate		(void)<br>
-</pre>
-<p>routine to create an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new structure.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferCreateSize"></a>xmlBufferCreateSize ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	xmlBufferCreateSize	(size_t size)<br>
-</pre>
-<p>routine to create an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>initial size of buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new structure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferCreateStatic"></a>xmlBufferCreateStatic ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>	xmlBufferCreateStatic	(void * mem, <br>					 size_t size)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>the memory area</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the size in byte</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an XML buffer initialized with bytes.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferDetach"></a>xmlBufferDetach ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBufferDetach		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br>
-</pre>
-<p>Remove the string contained in a buffer and gie it back to the caller. The buffer is reset to an empty content. This doesn't work with immutable buffers as they can't be reset.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the previous string contained by the buffer.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferDump"></a>xmlBufferDump ()</h3>
-<pre class="programlisting">int	xmlBufferDump			(FILE * file, <br>					 <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br>
-</pre>
-<p>Dumps an XML buffer to a FILE *.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to dump</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of #xmlChar written</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferEmpty"></a>xmlBufferEmpty ()</h3>
-<pre class="programlisting">void	xmlBufferEmpty			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br>
-</pre>
-<p>empty a buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferFree"></a>xmlBufferFree ()</h3>
-<pre class="programlisting">void	xmlBufferFree			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf)<br>
-</pre>
-<p>Frees an XML buffer. It frees both the content and the structure which encapsulate it.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferGrow"></a>xmlBufferGrow ()</h3>
-<pre class="programlisting">int	xmlBufferGrow			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int len)<br>
-</pre>
-<p>DEPRECATED: Don't use. Grow the available space of an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the minimum free size to allocate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new available space or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferLength"></a>xmlBufferLength ()</h3>
-<pre class="programlisting">int	xmlBufferLength			(const <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> * buf)<br>
-</pre>
-<p>Function to get the length of a buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the length of data in the internal content</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferResize"></a>xmlBufferResize ()</h3>
-<pre class="programlisting">int	xmlBufferResize			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int size)<br>
-</pre>
-<p>DEPRECATED: Don't use. Resize a buffer to accommodate minimum size of @size.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to resize</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the desired size</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of problems, 1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferSetAllocationScheme"></a>xmlBufferSetAllocationScheme ()</h3>
-<pre class="programlisting">void	xmlBufferSetAllocationScheme	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme)<br>
-</pre>
-<p>Sets the allocation scheme for this buffer. For libxml2 before 2.14, it is recommended to set this to XML_BUFFER_ALLOC_DOUBLE_IT. Has no effect on 2.14 or later.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to tune</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>scheme</tt></i>:</span></td>
-<td>allocation scheme to use</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferShrink"></a>xmlBufferShrink ()</h3>
-<pre class="programlisting">int	xmlBufferShrink			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 unsigned int len)<br>
-</pre>
-<p>DEPRECATED: Don't use. Remove the beginning of an XML buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the buffer to dump</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to remove</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of #xmlChar removed, or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferWriteCHAR"></a>xmlBufferWriteCHAR ()</h3>
-<pre class="programlisting">void	xmlBufferWriteCHAR		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string)<br>
-</pre>
-<p>routine which manages and grows an output buffer. This one adds xmlChars at the end of the buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the string to add</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferWriteChar"></a>xmlBufferWriteChar ()</h3>
-<pre class="programlisting">void	xmlBufferWriteChar		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const char * string)<br>
-</pre>
-<p>routine which manage and grows an output buffer. This one add C chars at the end of the array.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the string to add</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBufferWriteQuotedString"></a>xmlBufferWriteQuotedString ()</h3>
-<pre class="programlisting">void	xmlBufferWriteQuotedString	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>the string to add</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuildQName"></a>xmlBuildQName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildQName		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * memory, <br>					 int len)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ncname</tt></i>:</span></td>
-<td>the Name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>memory</tt></i>:</span></td>
-<td>preallocated memory</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>preallocated memory length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChildElementCount"></a>xmlChildElementCount ()</h3>
-<pre class="programlisting">unsigned long	xmlChildElementCount	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br>
-</pre>
-<p>Count the number of child nodes which are elements. Note that entity references are not expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of element children or 0 if arguments are invalid.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyDoc"></a>xmlCopyDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlCopyDoc		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int recursive)<br>
-</pre>
-<p>Copy a document. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>recursive</tt></i>:</span></td>
-<td>if not zero do a recursive copy.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied document or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyDtd"></a>xmlCopyDtd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlCopyDtd		(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br>
-</pre>
-<p>Copy a DTD.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied DTD or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyNamespace"></a>xmlCopyNamespace ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlCopyNamespace	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur)<br>
-</pre>
-<p>Copy a namespace.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the namespace</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied namespace or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyNamespaceList"></a>xmlCopyNamespaceList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlCopyNamespaceList	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur)<br>
-</pre>
-<p>Copy a namespace list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first namespace</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the head of the copied list or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyNode"></a>xmlCopyNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlCopyNode		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int extended)<br>
-</pre>
-<p>Copy a node. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlDocCopyNode">xmlDocCopyNode</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>extended</tt></i>:</span></td>
-<td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied node or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyNodeList"></a>xmlCopyNodeList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlCopyNodeList		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Copy a node list and all children. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the first node in the list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the head of the copied list or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyProp"></a>xmlCopyProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlCopyProp		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br>
-</pre>
-<p>Create a copy of the attribute. This function sets the parent pointer of the copy to @target but doesn't set the attribute on the target element. Users should consider to set the attribute by calling <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a> afterwards or reset the parent pointer to NULL.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>the element where the attribute will be grafted</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied attribute or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyPropList"></a>xmlCopyPropList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlCopyPropList		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> target, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br>
-</pre>
-<p>Create a copy of an attribute list. This function sets the parent pointers of the copied attributes to @target but doesn't set the attributes on the target element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>the element where the attributes will be grafted</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the head of the copied list or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateIntSubset"></a>xmlCreateIntSubset ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlCreateIntSubset	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Create a DTD node. If a document is provided and it already has an internal subset, the existing DTD object is returned without creating a new object. If the document has no internal subset, it will be set to the created DTD.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document pointer (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the DTD name (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external (PUBLIC) ID (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the system ID (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new or existing DTD object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapAdoptNode"></a>xmlDOMWrapAdoptNode ()</h3>
-<pre class="programlisting">int	xmlDOMWrapAdoptNode		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br>					 int options)<br>
-</pre>
-<p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the optional context for custom processing</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sourceDoc</tt></i>:</span></td>
-<td>the optional sourceDoc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to start with</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>destDoc</tt></i>:</span></td>
-<td>the destination doc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>destParent</tt></i>:</span></td>
-<td>the optional new parent of @node in @destDoc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>option flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapCloneNode"></a>xmlDOMWrapCloneNode ()</h3>
-<pre class="programlisting">int	xmlDOMWrapCloneNode		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br>					 int deep, <br>					 int options)<br>
-</pre>
-<p>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used. This is the case when you don't know already where the cloned branch will be added to. If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. TODO: 1) What to do with XInclude? Currently this returns an error for XInclude.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the optional context for custom processing</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sourceDoc</tt></i>:</span></td>
-<td>the optional sourceDoc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to start with</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>resNode</tt></i>:</span></td>
-<td>the clone of the given @node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>destDoc</tt></i>:</span></td>
-<td>the destination doc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>destParent</tt></i>:</span></td>
-<td>the optional new parent of @node in @destDoc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>deep</tt></i>:</span></td>
-<td>descend into child if set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>option flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the operation succeeded, 1 if a node of unsupported (or not yet supported) type was given, -1 on API/internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapFreeCtxt"></a>xmlDOMWrapFreeCtxt ()</h3>
-<pre class="programlisting">void	xmlDOMWrapFreeCtxt		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Frees the DOM-wrapper context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the DOM-wrapper context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapNewCtxt"></a>xmlDOMWrapNewCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a>	xmlDOMWrapNewCtxt	(void)<br>
-</pre>
-<p>Allocates and initializes a new DOM-wrapper context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> or NULL in case of an internal error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapReconcileNamespaces"></a>xmlDOMWrapReconcileNamespaces ()</h3>
-<pre class="programlisting">int	xmlDOMWrapReconcileNamespaces	(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 int options)<br>
-</pre>
-<p>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>DOM wrapper context, unused at the moment</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element-node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>option flags</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if succeeded, -1 otherwise and on API/internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDOMWrapRemoveNode"></a>xmlDOMWrapRemoveNode ()</h3>
-<pre class="programlisting">int	xmlDOMWrapRemoveNode		(<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int options)<br>
-</pre>
-<p>Unlinks the given node from its owner. This will substitute ns-references to node-&gt;nsDef for ns-references to doc-&gt;oldNs, thus ensuring the removed branch to be autark wrt ns-references. NOTE: This function was not intensively tested.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a DOM wrapper context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the doc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to be removed.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>set of options, unused at the moment</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 if the node is not supported, -1 on API and internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDeregisterNodeDefault"></a>xmlDeregisterNodeDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a>	xmlDeregisterNodeDefault	(<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a> func)<br>
-</pre>
-<p>DEPRECATED: don't use Registers a callback for node destruction</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td>function pointer to the new DeregisterNodeFunc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the previous value of the deregistration function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocCopyNode"></a>xmlDocCopyNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlDocCopyNode		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int extended)<br>
-</pre>
-<p>Copy a node into another document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>extended</tt></i>:</span></td>
-<td>if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copied node or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocCopyNodeList"></a>xmlDocCopyNodeList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlDocCopyNodeList	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Copy a node list and all children into a new document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the first node in the list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the head of the copied list or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocDump"></a>xmlDocDump ()</h3>
-<pre class="programlisting">int	xmlDocDump			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br>
-</pre>
-<p>Dump an XML document to an open FILE.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the FILE*</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocDumpFormatMemory"></a>xmlDocDumpFormatMemory ()</h3>
-<pre class="programlisting">void	xmlDocDumpFormatMemory		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size, <br>					 int format)<br>
-</pre>
-<p>Dump an XML document in memory and return the #xmlChar * and it's size. It'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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>OUT: the memory pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>OUT: the memory length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocDumpFormatMemoryEnc"></a>xmlDocDumpFormatMemoryEnc ()</h3>
-<pre class="programlisting">void	xmlDocDumpFormatMemoryEnc	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br>					 int * doc_txt_len, <br>					 const char * txt_encoding, <br>					 int format)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out_doc</tt></i>:</span></td>
-<td>Document to generate XML text from</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc_txt_ptr</tt></i>:</span></td>
-<td>Memory pointer for allocated XML text</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc_txt_len</tt></i>:</span></td>
-<td>Length of the generated XML text</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>txt_encoding</tt></i>:</span></td>
-<td>Character encoding to use when generating XML text</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocDumpMemory"></a>xmlDocDumpMemory ()</h3>
-<pre class="programlisting">void	xmlDocDumpMemory		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** mem, <br>					 int * size)<br>
-</pre>
-<p>Dump an XML document in memory and return the #xmlChar * and it's size in bytes. It'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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>OUT: the memory pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>OUT: the memory length</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocDumpMemoryEnc"></a>xmlDocDumpMemoryEnc ()</h3>
-<pre class="programlisting">void	xmlDocDumpMemoryEnc		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br>					 int * doc_txt_len, <br>					 const char * txt_encoding)<br>
-</pre>
-<p>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().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out_doc</tt></i>:</span></td>
-<td>Document to generate XML text from</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc_txt_ptr</tt></i>:</span></td>
-<td>Memory pointer for allocated XML text</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc_txt_len</tt></i>:</span></td>
-<td>Length of the generated XML text</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>txt_encoding</tt></i>:</span></td>
-<td>Character encoding to use when generating XML text</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocFormatDump"></a>xmlDocFormatDump ()</h3>
-<pre class="programlisting">int	xmlDocFormatDump		(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 int format)<br>
-</pre>
-<p>Dump an XML document to an open FILE.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the FILE*</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocGetRootElement"></a>xmlDocGetRootElement ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlDocGetRootElement	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br>
-</pre>
-<p>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the root element or NULL if no element was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDocSetRootElement"></a>xmlDocSetRootElement ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlDocSetRootElement	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> root)<br>
-</pre>
-<p>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...). @root must be an element node. It is unlinked before insertion.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>root</tt></i>:</span></td>
-<td>the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the unlinked old root element or NULL if the document didn't have a root element or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElemDump"></a>xmlElemDump ()</h3>
-<pre class="programlisting">void	xmlElemDump			(FILE * f, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Dump an XML/HTML node, recursive behaviour, children are printed too.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFirstElementChild"></a>xmlFirstElementChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlFirstElementChild	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br>
-</pre>
-<p>Find the first child node which is an element. Note that entity references are not expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the first element or NULL if parent has no children.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeDoc"></a>xmlFreeDoc ()</h3>
-<pre class="programlisting">void	xmlFreeDoc			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br>
-</pre>
-<p>Free a document including all children and associated DTDs.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>pointer to the document</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeDtd"></a>xmlFreeDtd ()</h3>
-<pre class="programlisting">void	xmlFreeDtd			(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur)<br>
-</pre>
-<p>Free a DTD structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the DTD structure to free up</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeNode"></a>xmlFreeNode ()</h3>
-<pre class="programlisting">void	xmlFreeNode			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Free a node including all the children. This doesn't unlink the node from the tree. Call <a href="libxml2-tree.html#xmlUnlinkNode">xmlUnlinkNode</a> first unless @cur is a root node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeNodeList"></a>xmlFreeNodeList ()</h3>
-<pre class="programlisting">void	xmlFreeNodeList			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Free a node list including all children.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first node in the list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeNs"></a>xmlFreeNs ()</h3>
-<pre class="programlisting">void	xmlFreeNs			(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur)<br>
-</pre>
-<p>Free an <a href="libxml2-tree.html#xmlNs">xmlNs</a> object.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the namespace pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeNsList"></a>xmlFreeNsList ()</h3>
-<pre class="programlisting">void	xmlFreeNsList			(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> cur)<br>
-</pre>
-<p>Free a list of <a href="libxml2-tree.html#xmlNs">xmlNs</a> objects.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first namespace pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeProp"></a>xmlFreeProp ()</h3>
-<pre class="programlisting">void	xmlFreeProp			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br>
-</pre>
-<p>Free an attribute including all children.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>an attribute</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreePropList"></a>xmlFreePropList ()</h3>
-<pre class="programlisting">void	xmlFreePropList			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br>
-</pre>
-<p>Free an attribute list including all children.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the first attribute in the list</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetBufferAllocationScheme"></a>xmlGetBufferAllocationScheme ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a>	xmlGetBufferAllocationScheme	(void)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a>. Types are <a href="libxml2-tree.html#XML_BUFFER_ALLOC_EXACT">XML_BUFFER_ALLOC_EXACT</a> - use exact sizes, keeps memory usage down <a href="libxml2-tree.html#XML_BUFFER_ALLOC_DOUBLEIT">XML_BUFFER_ALLOC_DOUBLEIT</a> - double buffer when extra needed, improves performance <a href="libxml2-tree.html#XML_BUFFER_ALLOC_HYBRID">XML_BUFFER_ALLOC_HYBRID</a> - use exact sizes on small strings to keep memory usage tight in normal usage, and doubleit on large strings to avoid pathological performance.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current allocation scheme</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetCompressMode"></a>xmlGetCompressMode ()</h3>
-<pre class="programlisting">int	xmlGetCompressMode		(void)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a> get the default compression mode used, ZLIB based.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 (uncompressed) to 9 (max compression)</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDocCompressMode"></a>xmlGetDocCompressMode ()</h3>
-<pre class="programlisting">int	xmlGetDocCompressMode		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br>
-</pre>
-<p>get the compression ratio for a document, ZLIB based</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 (uncompressed) to 9 (max compression)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetIntSubset"></a>xmlGetIntSubset ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlGetIntSubset		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc)<br>
-</pre>
-<p>Get the internal subset of a document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the DTD object or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetLastChild"></a>xmlGetLastChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlGetLastChild		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * parent)<br>
-</pre>
-<p>Find the last child of a node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last child or NULL if parent has no children.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetLineNo"></a>xmlGetLineNo ()</h3>
-<pre class="programlisting">long	xmlGetLineNo			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br>
-</pre>
-<p>Get line number of @node. Try to override the limitation of lines being store in 16 bits ints if <a href="libxml2-parser.html#XML_PARSE_BIG_LINES">XML_PARSE_BIG_LINES</a> parser option was used</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>valid node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the line number if successful, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetNoNsProp"></a>xmlGetNoNsProp ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlGetNoNsProp		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>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. This function is similar to <a href="libxml2-tree.html#xmlGetProp">xmlGetProp</a> except it will accept only an attribute in no namespace. NOTE: This function doesn't allow to distinguish malloc failures from missing attributes. It's more robust to use <a href="libxml2-tree.html#xmlNodeGetAttrValue">xmlNodeGetAttrValue</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute value or NULL if not found or a memory allocation failed. It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetNodePath"></a>xmlGetNodePath ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlGetNodePath		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br>
-</pre>
-<p>Build a structure based Path for the given node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new path or NULL in case of error. The caller must free the returned string</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetNsList"></a>xmlGetNsList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> *	xmlGetNsList		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br>
-</pre>
-<p>Find all in-scope namespaces of a node. Use <a href="libxml2-tree.html#xmlGetNsListSafe">xmlGetNsListSafe</a> for better error reporting.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a NULL terminated array of namespace pointers that must be freed by the caller or NULL if no namespaces were found or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetNsListSafe"></a>xmlGetNsListSafe ()</h3>
-<pre class="programlisting">int	xmlGetNsListSafe		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ** out)<br>
-</pre>
-<p>Find all in-scope namespaces of a node. @out returns a NULL terminated array of namespace pointers that must be freed by the caller. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the returned namespace array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 if no namespaces were found, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetNsProp"></a>xmlGetNsProp ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlGetNsProp		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br>
-</pre>
-<p>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. NOTE: This function doesn't allow to distinguish malloc failures from missing attributes. It's more robust to use <a href="libxml2-tree.html#xmlNodeGetAttrValue">xmlNodeGetAttrValue</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nameSpace</tt></i>:</span></td>
-<td>the URI of the namespace</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute value or NULL if not found or a memory allocation failed. It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetProp"></a>xmlGetProp ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlGetProp		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>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. NOTE: This function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing. NOTE: This function doesn't allow to distinguish malloc failures from missing attributes. It's more robust to use <a href="libxml2-tree.html#xmlNodeGetAttrValue">xmlNodeGetAttrValue</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute value or NULL if not found or a memory allocation failed. It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHasNsProp"></a>xmlHasNsProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlHasNsProp		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br>
-</pre>
-<p>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. Note that a namespace of NULL indicates to use the default namespace.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nameSpace</tt></i>:</span></td>
-<td>the URI of the namespace</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute or the attribute declaration or NULL if neither was found. Also returns NULL if a memory allocation failed making this function unreliable.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlHasProp"></a>xmlHasProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlHasProp		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search an attribute associated to a node This function also looks in DTD attribute declaration for #FIXED or default declaration values.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute or the attribute declaration or NULL if neither was found. Also returns NULL if a memory allocation failed making this function unreliable.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsBlankNode"></a>xmlIsBlankNode ()</h3>
-<pre class="programlisting">int	xmlIsBlankNode			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br>
-</pre>
-<p>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 yes, 0 no</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsXHTML"></a>xmlIsXHTML ()</h3>
-<pre class="programlisting">int	xmlIsXHTML			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * publicID)<br>
-</pre>
-<p>Try to find if the document correspond to an XHTML DTD</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>systemID</tt></i>:</span></td>
-<td>the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>publicID</tt></i>:</span></td>
-<td>the public identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if not and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlLastElementChild"></a>xmlLastElementChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlLastElementChild	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br>
-</pre>
-<p>Find the last child node which is an element. Note that entity references are not expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last element or NULL if parent has no children.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewCDataBlock"></a>xmlNewCDataBlock ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCDataBlock	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Create a CDATA section node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>size of text content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewCharRef"></a>xmlNewCharRef ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewCharRef		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>This function is MISNAMED. It doesn't create a character reference but an entity reference. Create an empty entity reference node. This function doesn't attempt to look up the entity in @doc. Entity names like '&amp;entity;' are handled as well.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewChild"></a>xmlNewChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewChild		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a new child element and append it to a parent element. If @ns is NULL, the newly created element inherits the namespace of the parent. If provided, @content is expected to be a valid XML attribute value possibly containing character and entity references. Text and entity reference node will be added to the child element, see <a href="libxml2-tree.html#xmlNewDocNode">xmlNewDocNode</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the child</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text content with XML references (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewComment"></a>xmlNewComment ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewComment		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocComment">xmlNewDocComment</a>. Create a comment node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the comment content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDoc"></a>xmlNewDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlNewDoc		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * version)<br>
-</pre>
-<p>Creates a new XML document. If version is NULL, "1.0" is used.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>version</tt></i>:</span></td>
-<td>XML version string like "1.0" (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new document or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocComment"></a>xmlNewDocComment ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocComment	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a comment node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the comment content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocFragment"></a>xmlNewDocFragment ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocFragment	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Create a document fragment node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocNode"></a>xmlNewDocNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocNode		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create an element node. If provided, @content is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. Only references are handled, nested elements, comments or PIs are not. See <a href="libxml2-tree.html#xmlNewDocRawNode">xmlNewDocRawNode</a> for an alternative. General notes on object creation: Each node and all its children are associated with the same document. The document should be provided when creating nodes to avoid a performance penalty when adding the node to a document tree. Note that a document only owns nodes reachable from the root node. Unlinked subtrees must be freed manually.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the node name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text content with XML references (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocNodeEatName"></a>xmlNewDocNodeEatName ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocNodeEatName	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create an element node. Like xmlNewDocNode, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the node name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text content with XML references (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocPI"></a>xmlNewDocPI ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocPI		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a processing instruction object.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the processing instruction target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the PI content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocProp"></a>xmlNewDocProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlNewDocProp		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Create an attribute object. If provided, @value is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. If you want to pass a raw string, see <a href="libxml2-tree.html#xmlNewProp">xmlNewProp</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>attribute value with XML references (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocRawNode"></a>xmlNewDocRawNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocRawNode	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create an element node. If provided, @value should be a raw, unescaped string.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the node name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocText"></a>xmlNewDocText ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocText		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a new text node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocTextLen"></a>xmlNewDocTextLen ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewDocTextLen	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Create a new text node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>size of text content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDtd"></a>xmlNewDtd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlNewDtd		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>Create a DTD node. If a document is provided, it is an error if it already has an external subset. If the document has no external subset, it will be set to the created DTD. To create an internal subset, use xmlCreateIntSubset().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document pointer (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the DTD name (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ExternalID</tt></i>:</span></td>
-<td>the external ID (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the system ID (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new DTD object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewNode"></a>xmlNewNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewNode		(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Create an element node. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocNode">xmlNewDocNode</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the node name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewNodeEatName"></a>xmlNewNodeEatName ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewNodeEatName	(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Create an element node. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a>. Like xmlNewNode, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the node name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewNs"></a>xmlNewNs ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlNewNs		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>Create a new namespace. For a default namespace, @prefix should be NULL. The namespace URI in @href is not checked. You should make sure to pass a valid URI. If @node is provided, it must be an element node. The namespace will be appended to the node's namespace declarations. It is an error if the node already has a definition for the prefix or default namespace.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the element carrying the namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>href</tt></i>:</span></td>
-<td>the URI associated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the prefix for the namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new namespace pointer or NULL if arguments are invalid, the prefix is already in use or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewNsProp"></a>xmlNewNsProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlNewNsProp		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Create an attribute object. If provided, @value should be a raw, unescaped string. If @node is provided, the created attribute will be appended without checking for duplicate names. It is an error if @node is not an element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the parent node (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the local name of the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value of the attribute (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewNsPropEatName"></a>xmlNewNsPropEatName ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlNewNsPropEatName	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Like xmlNewNsProp, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the parent node (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the local name of the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value of the attribute (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewPI"></a>xmlNewPI ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewPI		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a processing instruction node. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocPI">xmlNewDocPI</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the processing instruction target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the PI content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewProp"></a>xmlNewProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlNewProp		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Create an attribute node. If provided, @value should be a raw, unescaped string. If @node is provided, the created attribute will be appended without checking for duplicate names. It is an error if @node is not an element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the parent node (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value of the attribute (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewReference"></a>xmlNewReference ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewReference		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Create a new entity reference node, linking the result with the entity in @doc if found. Entity names like '&amp;entity;' are handled as well.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the target document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewText"></a>xmlNewText ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewText		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a text node. Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocText">xmlNewDocText</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextChild"></a>xmlNewTextChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewTextChild		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Create a new child element and append it to a parent element. If @ns is NULL, the newly created element inherits the namespace of the parent. If @content is provided, a text node will be added to the child element, see <a href="libxml2-tree.html#xmlNewDocRawNode">xmlNewDocRawNode</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>parent</tt></i>:</span></td>
-<td>the parent node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a namespace (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the child</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content of the child (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextLen"></a>xmlNewTextLen ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNewTextLen		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Use of this function is DISCOURAGED in favor of <a href="libxml2-tree.html#xmlNewDocTextLen">xmlNewDocTextLen</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>raw text content (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>size of text content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new node object or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNextElementSibling"></a>xmlNextElementSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlNextElementSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Find the closest following sibling which is a element. Note that entity references are not expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the sibling or NULL if no sibling was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeAddContent"></a>xmlNodeAddContent ()</h3>
-<pre class="programlisting">int	xmlNodeAddContent		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being modified</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>extra content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeAddContentLen"></a>xmlNodeAddContentLen ()</h3>
-<pre class="programlisting">int	xmlNodeAddContentLen		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being modified</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>extra content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the size of @content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeBufGetContent"></a>xmlNodeBufGetContent ()</h3>
-<pre class="programlisting">int	xmlNodeBufGetContent		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>Read the value of a node @cur, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buffer with this value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeDump"></a>xmlNodeDump ()</h3>
-<pre class="programlisting">int	xmlNodeDump			(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format)<br>
-</pre>
-<p>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. Since this is using <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> structures it is limited to 2GB and somehow deprecated, use xmlNodeDumpOutput() instead.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>level</tt></i>:</span></td>
-<td>the imbrication level for indenting</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>is formatting allowed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written to the buffer or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeDumpOutput"></a>xmlNodeDumpOutput ()</h3>
-<pre class="programlisting">void	xmlNodeDumpOutput		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int level, <br>					 int format, <br>					 const char * encoding)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>level</tt></i>:</span></td>
-<td>the imbrication level for indenting</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>is formatting allowed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>an optional encoding string</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetAttrValue"></a>xmlNodeGetAttrValue ()</h3>
-<pre class="programlisting">int	xmlNodeGetAttrValue		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nsUri, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** out)<br>
-</pre>
-<p>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. The returned value must be freed by the caller. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nsUri</tt></i>:</span></td>
-<td>the URI of the namespace</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>the returned string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 if no attribute was found, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetBase"></a>xmlNodeGetBase ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNodeGetBase		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>See <a href="libxml2-tree.html#xmlNodeGetBaseSafe">xmlNodeGetBaseSafe</a>. This function doesn't allow to distinguish memory allocation failures from a non-existing base.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document the node pertains to</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being checked</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the base URL, or NULL if not found It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetBaseSafe"></a>xmlNodeGetBaseSafe ()</h3>
-<pre class="programlisting">int	xmlNodeGetBaseSafe		(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** baseOut)<br>
-</pre>
-<p>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 doc-&gt;URL in this case Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document the node pertains to</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being checked</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>baseOut</tt></i>:</span></td>
-<td>pointer to base</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, 1 if a URI or argument is invalid, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetContent"></a>xmlNodeGetContent ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNodeGetContent	(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>Read the value of a node, this can be either the text carried directly by this node if it's a TEXT node or the aggregate string of the values carried by this node child's (TEXT and ENTITY_REF). Entity references are substituted.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new #xmlChar * or NULL if no content is available. It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetLang"></a>xmlNodeGetLang ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNodeGetLang		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>Searches the language of a node, i.e. the values of the xml:lang attribute or the one carried by the nearest ancestor.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being checked</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the lang value, or NULL if not found It's up to the caller to free the memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeGetSpacePreserve"></a>xmlNodeGetSpacePreserve ()</h3>
-<pre class="programlisting">int	xmlNodeGetSpacePreserve		(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * cur)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being checked</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 if xml:space is not inherited, 0 if "default", 1 if "preserve"</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeIsText"></a>xmlNodeIsText ()</h3>
-<pre class="programlisting">int	xmlNodeIsText			(const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * node)<br>
-</pre>
-<p>Is this node a Text node ?</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 yes, 0 no</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeListGetRawString"></a>xmlNodeListGetRawString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNodeListGetRawString	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br>					 int inLine)<br>
-</pre>
-<p>Serializes attribute children (text and entity reference nodes) into a string. If @inLine is true, entity references will be substituted. Otherwise, entity references will be kept and special characters like '&amp;' will be escaped.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>list</tt></i>:</span></td>
-<td>a node list of attribute children</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inLine</tt></i>:</span></td>
-<td>whether entity references are substituted</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeListGetString"></a>xmlNodeListGetString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNodeListGetString	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-tree.html#xmlNode">xmlNode</a> * list, <br>					 int inLine)<br>
-</pre>
-<p>Serializes attribute children (text and entity reference nodes) into a string. If @inLine is true, entity references will be substituted. Otherwise, entity references will be kept and special characters like '&amp;' as well as non-ASCII chars will be escaped. See <a href="libxml2-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a> for an alternative option.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>list</tt></i>:</span></td>
-<td>a node list of attribute children</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inLine</tt></i>:</span></td>
-<td>whether entity references are substituted</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string or NULL if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetBase"></a>xmlNodeSetBase ()</h3>
-<pre class="programlisting">int	xmlNodeSetBase			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * uri)<br>
-</pre>
-<p>Set (or reset) the base URI of a node, i.e. the value of the xml:base attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being changed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>the new base URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, -1 on error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetContent"></a>xmlNodeSetContent ()</h3>
-<pre class="programlisting">int	xmlNodeSetContent		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Replace the text content of a node. Sets the raw text content of text, CDATA, comment or PI nodes. For element and attribute nodes, removes all children and replaces them by parsing @content which is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. Unfortunately, there isn't an API to pass raw content directly. An inefficient work-around is to escape the content with <a href="libxml2-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a> before passing it. A better trick is clearing the old content with xmlNodeSetContent(node, NULL) first and then calling xmlNodeAddContent(node, content). Unlike this function, <a href="libxml2-tree.html#xmlNodeAddContent">xmlNodeAddContent</a> accepts raw text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being modified</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the new value of the content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetContentLen"></a>xmlNodeSetContentLen ()</h3>
-<pre class="programlisting">int	xmlNodeSetContentLen		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>See <a href="libxml2-tree.html#xmlNodeSetContent">xmlNodeSetContent</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being modified</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the new value of the content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the size of @content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 on error, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetLang"></a>xmlNodeSetLang ()</h3>
-<pre class="programlisting">int	xmlNodeSetLang			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * lang)<br>
-</pre>
-<p>Set the language of a node, i.e. the values of the xml:lang attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being changed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>lang</tt></i>:</span></td>
-<td>the language description</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 if arguments are invalid, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetName"></a>xmlNodeSetName ()</h3>
-<pre class="programlisting">void	xmlNodeSetName			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Set (or reset) the name of a node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being changed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the new tag name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetSpacePreserve"></a>xmlNodeSetSpacePreserve ()</h3>
-<pre class="programlisting">int	xmlNodeSetSpacePreserve		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br>					 int val)<br>
-</pre>
-<p>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node being changed</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the xml:space value ("0": default, 1: "preserve")</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, 1 if arguments are invalid, -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPreviousElementSibling"></a>xmlPreviousElementSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlPreviousElementSibling	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Find the closest preceding sibling which is a element. Note that entity references are not expanded.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the sibling or NULL if no sibling was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReconciliateNs"></a>xmlReconciliateNs ()</h3>
-<pre class="programlisting">int	xmlReconciliateNs		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>a node defining the subtree to reconciliate</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterNodeDefault"></a>xmlRegisterNodeDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a>	xmlRegisterNodeDefault	(<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a> func)<br>
-</pre>
-<p>DEPRECATED: don't use Registers a callback for node creation</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td>function pointer to the new RegisterNodeFunc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the old value of the registration function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRemoveProp"></a>xmlRemoveProp ()</h3>
-<pre class="programlisting">int	xmlRemoveProp			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br>
-</pre>
-<p>Unlink and free an attribute including all children. Note this doesn't work for namespace declarations. The attribute must have a non-NULL parent pointer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>an attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success or -1 if the attribute was not found or arguments are invalid.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReplaceNode"></a>xmlReplaceNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlReplaceNode		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> old, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlink the old node. If @cur is provided, it is unlinked and inserted in place of @old. It is an error if @old has no parent. Unlike xmlAddChild, this function doesn't merge text nodes or delete duplicate attributes. See the notes in <a href="libxml2-tree.html#xmlAddChild">xmlAddChild</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>old</tt></i>:</span></td>
-<td>the old node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@old or NULL if arguments are invalid or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFile"></a>xmlSaveFile ()</h3>
-<pre class="programlisting">int	xmlSaveFile			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br>
-</pre>
-<p>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is "-" the stdout file is used.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename (or URL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFileEnc"></a>xmlSaveFileEnc ()</h3>
-<pre class="programlisting">int	xmlSaveFileEnc			(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding)<br>
-</pre>
-<p>Dump an XML document, converting it to the given encoding</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename (or URL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the name of an encoding (or NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFileTo"></a>xmlSaveFileTo ()</h3>
-<pre class="programlisting">int	xmlSaveFileTo			(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding)<br>
-</pre>
-<p>Dump an XML document to an I/O buffer. Warning ! This call xmlOutputBufferClose() on buf which is not available after this call.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an output I/O buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding if any assuming the I/O layer handles the transcoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFormatFile"></a>xmlSaveFormatFile ()</h3>
-<pre class="programlisting">int	xmlSaveFormatFile		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 int format)<br>
-</pre>
-<p>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is "-" 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename (or URL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFormatFileEnc"></a>xmlSaveFormatFileEnc ()</h3>
-<pre class="programlisting">int	xmlSaveFormatFileEnc		(const char * filename, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an XML document to a file or an URL.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URL to output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document being saved</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the name of the encoding to use or NULL.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces be added.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFormatFileTo"></a>xmlSaveFormatFileTo ()</h3>
-<pre class="programlisting">int	xmlSaveFormatFileTo		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br>					 const char * encoding, <br>					 int format)<br>
-</pre>
-<p>Dump an XML document to an I/O buffer. Warning ! This call xmlOutputBufferClose() on buf which is not available after this call.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an output I/O buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding if any assuming the I/O layer handles the transcoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>should formatting spaces been added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSearchNs"></a>xmlSearchNs ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlSearchNs		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace)<br>
-</pre>
-<p>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't allow to cross entities boundaries. If you don't declare the namespace within those you will be in troubles !!! A warning is generated to cover this case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nameSpace</tt></i>:</span></td>
-<td>the namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace pointer or NULL if no namespace was found or a memory allocation failed. Allocations can only fail if the "xml" namespace is queried.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSearchNsByHref"></a>xmlSearchNsByHref ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a>	xmlSearchNsByHref	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href)<br>
-</pre>
-<p>Search a Ns aliasing a given URI. Recurse on the parents until it finds the defined namespace or return NULL otherwise.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the current node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>href</tt></i>:</span></td>
-<td>the namespace value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace pointer or NULL if no namespace was found or a memory allocation failed. Allocations can only fail if the "xml" namespace is queried.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetBufferAllocationScheme"></a>xmlSetBufferAllocationScheme ()</h3>
-<pre class="programlisting">void	xmlSetBufferAllocationScheme	(<a href="libxml2-tree.html#xmlBufferAllocationScheme">xmlBufferAllocationScheme</a> scheme)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a>. Set the buffer allocation method. Types are <a href="libxml2-tree.html#XML_BUFFER_ALLOC_EXACT">XML_BUFFER_ALLOC_EXACT</a> - use exact sizes, keeps memory usage down <a href="libxml2-tree.html#XML_BUFFER_ALLOC_DOUBLEIT">XML_BUFFER_ALLOC_DOUBLEIT</a> - double buffer when extra needed, improves performance</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>scheme</tt></i>:</span></td>
-<td>allocation method to use</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetCompressMode"></a>xmlSetCompressMode ()</h3>
-<pre class="programlisting">void	xmlSetCompressMode		(int mode)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a> set the default compression mode used, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the compression ratio</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetDocCompressMode"></a>xmlSetDocCompressMode ()</h3>
-<pre class="programlisting">void	xmlSetDocCompressMode		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int mode)<br>
-</pre>
-<p>set the compression ratio for a document, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mode</tt></i>:</span></td>
-<td>the compression ratio</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetListDoc"></a>xmlSetListDoc ()</h3>
-<pre class="programlisting">int	xmlSetListDoc			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> list, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Associate all subtrees in @list with a new document. Internal function, see <a href="libxml2-tree.html#xmlSetTreeDoc">xmlSetTreeDoc</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>list</tt></i>:</span></td>
-<td>a node list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>new document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success. If a memory allocation fails, returns -1. All subtrees will be updated on failure but some strings may be lost.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetNs"></a>xmlSetNs ()</h3>
-<pre class="programlisting">void	xmlSetNs			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br>
-</pre>
-<p>Set the namespace of an element or attribute node. Passing a NULL namespace unsets the namespace.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node in the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a namespace pointer (optional)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetNsProp"></a>xmlSetNsProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlSetNsProp		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Set (or reset) an attribute carried by a node. The ns structure must be in scope, this is not checked</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute pointer.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetProp"></a>xmlSetProp ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlSetProp		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Set (or reset) an attribute carried by a node. If @name has a prefix, then the corresponding namespace-binding will be used, if in scope; it is an error it there's no such ns-binding for the prefix in scope.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name (a QName)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the attribute pointer.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetTreeDoc"></a>xmlSetTreeDoc ()</h3>
-<pre class="programlisting">int	xmlSetTreeDoc			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>This is an internal function which shouldn't be used. It is invoked by functions like xmlAddChild, <a href="libxml2-tree.html#xmlAddSibling">xmlAddSibling</a> or <a href="libxml2-tree.html#xmlReplaceNode">xmlReplaceNode</a>. @tree must be the root node of an unlinked subtree. Associate all nodes in a tree with a new document. Also copy strings from the old document's dictionary and remove ID attributes from the old ID table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>root of a subtree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>new document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success. If a memory allocation fails, returns -1. The whole tree will be updated on failure but some strings may be lost.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSplitQName2"></a>xmlSplitQName2 ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSplitQName2		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** prefix)<br>
-</pre>
-<p>DEPRECATED: This function doesn't report malloc failures. parse an XML qualified name string [NS 5] QName ::= (Prefix ':')? LocalPart [NS 6] Prefix ::= NCName [NS 7] LocalPart ::= NCName</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 full QName</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>a <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> **</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if the name doesn't have a prefix. Otherwise, returns the local part, and prefix is updated to get the Prefix. Both the return value and the prefix must be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSplitQName3"></a>xmlSplitQName3 ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSplitQName3		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 int * len)<br>
-</pre>
-<p>parse an XML qualified name string,i</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 full QName</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>an int *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if it is not a Qualified Name, otherwise, update len with the length in byte of the prefix and return a pointer to the start of the name without the prefix</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringGetNodeList"></a>xmlStringGetNodeList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlStringGetNodeList	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlNodeSetContent">xmlNodeSetContent</a>. Parse an attribute value and build a node list containing only text and entity reference nodes. The resulting nodes will be associated with the document if provided. The document is also used to look up entities. The input is not validated. Syntax errors or references to undeclared entities will be ignored silently with unspecified results.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the first child or NULL if the value if empty or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStringLenGetNodeList"></a>xmlStringLenGetNodeList ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlStringLenGetNodeList	(const <a href="libxml2-tree.html#xmlDoc">xmlDoc</a> * doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a>. See <a href="libxml2-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document (optional)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>maximum length of the attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the first child or NULL if the value if empty or a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextConcat"></a>xmlTextConcat ()</h3>
-<pre class="programlisting">int	xmlTextConcat			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Concat the given string at the end of the existing node content. If @len is -1, the string length will be calculated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>@content length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextMerge"></a>xmlTextMerge ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlTextMerge		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> first, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> second)<br>
-</pre>
-<p>Merge the second text node into the first. If @first is NULL, @second is returned. Otherwise, the second node is unlinked and freed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>first</tt></i>:</span></td>
-<td>the first text node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>second</tt></i>:</span></td>
-<td>the second text node being merged</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the first text node augmented or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefDeregisterNodeDefault"></a>xmlThrDefDeregisterNodeDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a>	xmlThrDefDeregisterNodeDefault	(<a href="libxml2-tree.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a> func)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefRegisterNodeDefault"></a>xmlThrDefRegisterNodeDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a>	xmlThrDefRegisterNodeDefault	(<a href="libxml2-tree.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a> func)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUnlinkNode"></a>xmlUnlinkNode ()</h3>
-<pre class="programlisting">void	xmlUnlinkNode			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Unlink a node from its tree. The node is not freed. Unless it is reinserted, it must be managed manually and freed eventually by calling <a href="libxml2-tree.html#xmlFreeNode">xmlFreeNode</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUnsetNsProp"></a>xmlUnsetNsProp ()</h3>
-<pre class="programlisting">int	xmlUnsetNsProp			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Remove an attribute carried by a node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the namespace definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful, -1 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUnsetProp"></a>xmlUnsetProp ()</h3>
-<pre class="programlisting">int	xmlUnsetProp			(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Remove an attribute carried by a node. This handles only attributes in no namespace.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful, -1 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNCName"></a>xmlValidateNCName ()</h3>
-<pre class="programlisting">int	xmlValidateNCName		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space)<br>
-</pre>
-<p>Check that a value conforms to the lexical space of NCName</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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>space</tt></i>:</span></td>
-<td>allow spaces in front and end of the string</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNMToken"></a>xmlValidateNMToken ()</h3>
-<pre class="programlisting">int	xmlValidateNMToken		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space)<br>
-</pre>
-<p>Check that a value conforms to the lexical space of NMToken</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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>space</tt></i>:</span></td>
-<td>allow spaces in front and end of the string</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateName"></a>xmlValidateName ()</h3>
-<pre class="programlisting">int	xmlValidateName			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space)<br>
-</pre>
-<p>Check that a value conforms to the lexical space of Name</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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>space</tt></i>:</span></td>
-<td>allow spaces in front and end of the string</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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateQName"></a>xmlValidateQName ()</h3>
-<pre class="programlisting">int	xmlValidateQName		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 int space)<br>
-</pre>
-<p>Check that a value conforms to the lexical space of QName</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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>space</tt></i>:</span></td>
-<td>allow spaces in front and end of the string</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>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-uri.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-uri.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-uri.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-uri.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,499 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>uri: library of generic URI related routines</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-valid.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">uri</span></h2>
-<p>uri - library of generic URI related routines</p>
-<p>library of generic URI related routines Implements RFC 2396 </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlURI <a href="#xmlURI">xmlURI</a>;
-typedef <a href="libxml2-uri.html#xmlURI">xmlURI</a> * <a href="#xmlURIPtr">xmlURIPtr</a>;
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBuildRelativeURI">xmlBuildRelativeURI</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base);
-int	<a href="#xmlBuildRelativeURISafe">xmlBuildRelativeURISafe</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** valPtr);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlBuildURI">xmlBuildURI</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base);
-int	<a href="#xmlBuildURISafe">xmlBuildURISafe</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** valPtr);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCanonicPath">xmlCanonicPath</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path);
-<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	<a href="#xmlCreateURI">xmlCreateURI</a>		(void);
-void	<a href="#xmlFreeURI">xmlFreeURI</a>			(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri);
-int	<a href="#xmlNormalizeURIPath">xmlNormalizeURIPath</a>		(char * path);
-<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	<a href="#xmlParseURI">xmlParseURI</a>		(const char * str);
-<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	<a href="#xmlParseURIRaw">xmlParseURIRaw</a>		(const char * str, <br>					 int raw);
-int	<a href="#xmlParseURIReference">xmlParseURIReference</a>		(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri, <br>					 const char * str);
-int	<a href="#xmlParseURISafe">xmlParseURISafe</a>			(const char * str, <br>					 <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> * uriOut);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlPathToURI">xmlPathToURI</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path);
-void	<a href="#xmlPrintURI">xmlPrintURI</a>			(FILE * stream, <br>					 <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSaveUri">xmlSaveUri</a>		(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlURIEscape">xmlURIEscape</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlURIEscapeStr">xmlURIEscapeStr</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * list);
-char *	<a href="#xmlURIUnescapeString">xmlURIUnescapeString</a>		(const char * str, <br>					 int len, <br>					 char * target);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlURI">Structure </a>xmlURI</h3>
-<pre class="programlisting">struct _xmlURI {
-    char *	scheme
-    char *	opaque
-    char *	authority
-    char *	server
-    char *	user
-    int	port
-    char *	path
-    char *	query
-    char *	fragment
-    int	cleanup
-    char *	query_raw
-} xmlURI;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlURIPtr">Typedef </a>xmlURIPtr</h3>
-<pre class="programlisting"><a href="libxml2-uri.html#xmlURI">xmlURI</a> * xmlURIPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuildRelativeURI"></a>xmlBuildRelativeURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildRelativeURI	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base)<br>
-</pre>
-<p>See <a href="libxml2-uri.html#xmlBuildRelativeURISafe">xmlBuildRelativeURISafe</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI reference under consideration</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>base</tt></i>:</span></td>
-<td>the base value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new URI string (to be freed by the caller) or NULL in case error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuildRelativeURISafe"></a>xmlBuildRelativeURISafe ()</h3>
-<pre class="programlisting">int	xmlBuildRelativeURISafe		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** valPtr)<br>
-</pre>
-<p>Expresses the URI of the reference in terms relative to the base. Some examples of this operation include: base = "http://site1.com/docs/book1.html" URI input URI returned http://site1.com/docs/pic1.gif pic1.gif http://site2.com/docs/pic1.gif http://site2.com/docs/pic1.gif base = "docs/book1.html" URI input URI returned docs/pic1.gif pic1.gif docs/img/pic1.gif img/pic1.gif img/pic1.gif ../img/pic1.gif http://site1.com/docs/pic1.gif http://site1.com/docs/pic1.gif Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI reference under consideration</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>base</tt></i>:</span></td>
-<td>the base value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>valPtr</tt></i>:</span></td>
-<td>pointer to result URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, -1 if a memory allocation failed or an error code if URI or base are invalid.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuildURI"></a>xmlBuildURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildURI		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI instance found in the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>base</tt></i>:</span></td>
-<td>the base value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new URI string (to be freed by the caller) or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlBuildURISafe"></a>xmlBuildURISafe ()</h3>
-<pre class="programlisting">int	xmlBuildURISafe			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * URI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * base, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** valPtr)<br>
-</pre>
-<p>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 Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI instance found in the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>base</tt></i>:</span></td>
-<td>the base value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>valPtr</tt></i>:</span></td>
-<td>pointer to result URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, -1 if a memory allocation failed or an error code if URI or base are invalid.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCanonicPath"></a>xmlCanonicPath ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCanonicPath		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path)<br>
-</pre>
-<p>Prepares a path. If the path contains the substring "://", it is considered a Legacy Extended IRI. Characters which aren't allowed in URIs are escaped. Otherwise, the path is considered a filesystem path which is copied without modification. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>path</tt></i>:</span></td>
-<td>the resource locator in a filesystem notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the escaped path.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateURI"></a>xmlCreateURI ()</h3>
-<pre class="programlisting"><a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	xmlCreateURI		(void)<br>
-</pre>
-<p>Simply creates an empty <a href="libxml2-uri.html#xmlURI">xmlURI</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new structure or NULL in case of error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeURI"></a>xmlFreeURI ()</h3>
-<pre class="programlisting">void	xmlFreeURI			(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri)<br>
-</pre>
-<p>Free up the <a href="libxml2-uri.html#xmlURI">xmlURI</a> struct</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>pointer to an <a href="libxml2-uri.html#xmlURI">xmlURI</a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNormalizeURIPath"></a>xmlNormalizeURIPath ()</h3>
-<pre class="programlisting">int	xmlNormalizeURIPath		(char * path)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>path</tt></i>:</span></td>
-<td>pointer to the path string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or an error code</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseURI"></a>xmlParseURI ()</h3>
-<pre class="programlisting"><a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	xmlParseURI		(const char * str)<br>
-</pre>
-<p>Parse an URI based on RFC 3986 URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the URI string to analyze</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly built <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseURIRaw"></a>xmlParseURIRaw ()</h3>
-<pre class="programlisting"><a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a>	xmlParseURIRaw		(const char * str, <br>					 int raw)<br>
-</pre>
-<p>Parse an URI but allows to keep intact the original fragments. URI-reference = URI / relative-ref</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the URI string to analyze</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>raw</tt></i>:</span></td>
-<td>if 1 unescaping of URI pieces are disabled</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly built <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseURIReference"></a>xmlParseURIReference ()</h3>
-<pre class="programlisting">int	xmlParseURIReference		(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri, <br>					 const char * str)<br>
-</pre>
-<p>Parse an URI reference string based on RFC 3986 and fills in the appropriate fields of the @uri structure URI-reference = URI / relative-ref</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>pointer to an URI structure</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string to analyze</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or the error code</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParseURISafe"></a>xmlParseURISafe ()</h3>
-<pre class="programlisting">int	xmlParseURISafe			(const char * str, <br>					 <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> * uriOut)<br>
-</pre>
-<p>Parse an URI based on RFC 3986 URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the URI string to analyze</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>uriOut</tt></i>:</span></td>
-<td>optional pointer to parsed URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, an error code (typically 1) if the URI is invalid or -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPathToURI"></a>xmlPathToURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlPathToURI		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path)<br>
-</pre>
-<p>Constructs an URI expressing the existing path</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>path</tt></i>:</span></td>
-<td>the resource locator in a filesystem notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new URI, 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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPrintURI"></a>xmlPrintURI ()</h3>
-<pre class="programlisting">void	xmlPrintURI			(FILE * stream, <br>					 <a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri)<br>
-</pre>
-<p>Prints the URI in the stream @stream.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>stream</tt></i>:</span></td>
-<td>a FILE* for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>pointer to an <a href="libxml2-uri.html#xmlURI">xmlURI</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveUri"></a>xmlSaveUri ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSaveUri		(<a href="libxml2-uri.html#xmlURIPtr">xmlURIPtr</a> uri)<br>
-</pre>
-<p>Save the URI as an escaped string</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>pointer to an <a href="libxml2-uri.html#xmlURI">xmlURI</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new string (to be deallocated by caller)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlURIEscape"></a>xmlURIEscape ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlURIEscape		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Escaping routine, does not do validity checks ! It will try to escape the chars needing this, but this is heuristic based it's impossible to be sure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string of the URI to escape</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an copy of the string, but escaped 25 May 2001 Uses <a href="libxml2-uri.html#xmlParseURI">xmlParseURI</a> and <a href="libxml2-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a> to try to escape correctly according to RFC2396. - Carl Douglas</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlURIEscapeStr"></a>xmlURIEscapeStr ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlURIEscapeStr		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * list)<br>
-</pre>
-<p>This routine escapes a string to hex, ignoring unreserved characters a-z, A-Z, 0-9, "-._~", a few sub-delims "!*'()", the gen-delim "@" (why?) and the characters in the exception list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>string to escape</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>list</tt></i>:</span></td>
-<td>exception list string of chars not to escape</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new escaped string or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlURIUnescapeString"></a>xmlURIUnescapeString ()</h3>
-<pre class="programlisting">char *	xmlURIUnescapeString		(const char * str, <br>					 int len, <br>					 char * target)<br>
-</pre>
-<p>Unescaping routine, but does not check that the string is an URI. The output is a direct unsigned char translation of %XX values (no encoding) Note that the length of the result can only be smaller or same size as the input string.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string to unescape</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length in bytes to unescape (or &lt;= 0 to indicate full string)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>optional destination buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a copy of the string, but unescaped, will return NULL only in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-valid.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-valid.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-valid.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-valid.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,2145 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>valid: The DTD validation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-uri.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xinclude.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">valid</span></h2>
-<p>valid - The DTD validation</p>
-<p>API for the DTD handling and the validity checking </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlHashTable <a href="#xmlAttributeTable">xmlAttributeTable</a>;
-typedef <a href="libxml2-valid.html#xmlAttributeTable">xmlAttributeTable</a> * <a href="#xmlAttributeTablePtr">xmlAttributeTablePtr</a>;
-typedef struct _xmlHashTable <a href="#xmlElementTable">xmlElementTable</a>;
-typedef <a href="libxml2-valid.html#xmlElementTable">xmlElementTable</a> * <a href="#xmlElementTablePtr">xmlElementTablePtr</a>;
-typedef struct _xmlHashTable <a href="#xmlIDTable">xmlIDTable</a>;
-typedef <a href="libxml2-valid.html#xmlIDTable">xmlIDTable</a> * <a href="#xmlIDTablePtr">xmlIDTablePtr</a>;
-typedef struct _xmlHashTable <a href="#xmlNotationTable">xmlNotationTable</a>;
-typedef <a href="libxml2-valid.html#xmlNotationTable">xmlNotationTable</a> * <a href="#xmlNotationTablePtr">xmlNotationTablePtr</a>;
-typedef struct _xmlHashTable <a href="#xmlRefTable">xmlRefTable</a>;
-typedef <a href="libxml2-valid.html#xmlRefTable">xmlRefTable</a> * <a href="#xmlRefTablePtr">xmlRefTablePtr</a>;
-typedef struct _xmlValidCtxt <a href="#xmlValidCtxt">xmlValidCtxt</a>;
-typedef <a href="libxml2-valid.html#xmlValidCtxt">xmlValidCtxt</a> * <a href="#xmlValidCtxtPtr">xmlValidCtxtPtr</a>;
-typedef struct _xmlValidState <a href="#xmlValidState">xmlValidState</a>;
-typedef <a href="libxml2-valid.html#xmlValidState">xmlValidState</a> * <a href="#xmlValidStatePtr">xmlValidStatePtr</a>;
-<a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	<a href="#xmlAddAttributeDecl">xmlAddAttributeDecl</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 <a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br>					 <a href="libxml2-tree.html#xmlAttributeDefault">xmlAttributeDefault</a> def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree);
-<a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	<a href="#xmlAddElementDecl">xmlAddElementDecl</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-tree.html#xmlElementTypeVal">xmlElementTypeVal</a> type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content);
-<a href="libxml2-tree.html#xmlIDPtr">xmlIDPtr</a>	<a href="#xmlAddID">xmlAddID</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-int	<a href="#xmlAddIDSafe">xmlAddIDSafe</a>			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-<a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a>	<a href="#xmlAddNotationDecl">xmlAddNotationDecl</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * PublicID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID);
-<a href="libxml2-tree.html#xmlRefPtr">xmlRefPtr</a>	<a href="#xmlAddRef">xmlAddRef</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-<a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a>	<a href="#xmlCopyAttributeTable">xmlCopyAttributeTable</a>	(<a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlCopyDocElementContent">xmlCopyDocElementContent</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>							 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlCopyElementContent">xmlCopyElementContent</a>	(<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur);
-<a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a>	<a href="#xmlCopyElementTable">xmlCopyElementTable</a>	(<a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table);
-<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	<a href="#xmlCopyEnumeration">xmlCopyEnumeration</a>	(<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur);
-<a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a>	<a href="#xmlCopyNotationTable">xmlCopyNotationTable</a>	(<a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table);
-<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	<a href="#xmlCreateEnumeration">xmlCreateEnumeration</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#xmlDumpAttributeDecl">xmlDumpAttributeDecl</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> attr);
-void	<a href="#xmlDumpAttributeTable">xmlDumpAttributeTable</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table);
-void	<a href="#xmlDumpElementDecl">xmlDumpElementDecl</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem);
-void	<a href="#xmlDumpElementTable">xmlDumpElementTable</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table);
-void	<a href="#xmlDumpNotationDecl">xmlDumpNotationDecl</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a> nota);
-void	<a href="#xmlDumpNotationTable">xmlDumpNotationTable</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table);
-void	<a href="#xmlFreeAttributeTable">xmlFreeAttributeTable</a>		(<a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table);
-void	<a href="#xmlFreeDocElementContent">xmlFreeDocElementContent</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur);
-void	<a href="#xmlFreeElementContent">xmlFreeElementContent</a>		(<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur);
-void	<a href="#xmlFreeElementTable">xmlFreeElementTable</a>		(<a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table);
-void	<a href="#xmlFreeEnumeration">xmlFreeEnumeration</a>		(<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur);
-void	<a href="#xmlFreeIDTable">xmlFreeIDTable</a>			(<a href="libxml2-valid.html#xmlIDTablePtr">xmlIDTablePtr</a> table);
-void	<a href="#xmlFreeNotationTable">xmlFreeNotationTable</a>		(<a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table);
-void	<a href="#xmlFreeRefTable">xmlFreeRefTable</a>			(<a href="libxml2-valid.html#xmlRefTablePtr">xmlRefTablePtr</a> table);
-void	<a href="#xmlFreeValidCtxt">xmlFreeValidCtxt</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> cur);
-<a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	<a href="#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a>	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	<a href="#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a>	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a>	<a href="#xmlGetDtdNotationDesc">xmlGetDtdNotationDesc</a>	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	<a href="#xmlGetDtdQAttrDesc">xmlGetDtdQAttrDesc</a>	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-<a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	<a href="#xmlGetDtdQElementDesc">xmlGetDtdQElementDesc</a>	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	<a href="#xmlGetID">xmlGetID</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID);
-<a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	<a href="#xmlGetRefs">xmlGetRefs</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID);
-int	<a href="#xmlIsID">xmlIsID</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-int	<a href="#xmlIsMixedElement">xmlIsMixedElement</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlIsRef">xmlIsRef</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlNewDocElementContent">xmlNewDocElementContent</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 <a href="libxml2-tree.html#xmlElementContentType">xmlElementContentType</a> type);
-<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlNewElementContent">xmlNewElementContent</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 <a href="libxml2-tree.html#xmlElementContentType">xmlElementContentType</a> type);
-<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	<a href="#xmlNewValidCtxt">xmlNewValidCtxt</a>		(void);
-int	<a href="#xmlRemoveID">xmlRemoveID</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-int	<a href="#xmlRemoveRef">xmlRemoveRef</a>			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr);
-void	<a href="#xmlSnprintfElementContent">xmlSnprintfElementContent</a>	(char * buf, <br>					 int size, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content, <br>					 int englob);
-void	<a href="#xmlSprintfElementContent">xmlSprintfElementContent</a>	(char * buf, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content, <br>					 int englob);
-int	<a href="#xmlValidBuildContentModel">xmlValidBuildContentModel</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>							 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>							 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a>	(<a href="libxml2-tree.html#xmlElementContent">xmlElementContent</a> * ctree, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** names, <br>					 int * len, <br>					 int max);
-int	<a href="#xmlValidGetValidElements">xmlValidGetValidElements</a>	(<a href="libxml2-tree.html#xmlNode">xmlNode</a> * prev, <br>					 <a href="libxml2-tree.html#xmlNode">xmlNode</a> * next, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** names, <br>					 int max);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> attr);
-int	<a href="#xmlValidateAttributeValue">xmlValidateAttributeValue</a>	(<a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateDocument">xmlValidateDocument</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> vctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a>	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlValidateDtd">xmlValidateDtd</a>			(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd);
-int	<a href="#xmlValidateDtdFinal">xmlValidateDtdFinal</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlValidateElement">xmlValidateElement</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> root);
-int	<a href="#xmlValidateElementDecl">xmlValidateElementDecl</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem);
-int	<a href="#xmlValidateNameValue">xmlValidateNameValue</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateNamesValue">xmlValidateNamesValue</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateNmtokenValue">xmlValidateNmtokenValue</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateNmtokensValue">xmlValidateNmtokensValue</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateNotationDecl">xmlValidateNotationDecl</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a> nota);
-int	<a href="#xmlValidateNotationUse">xmlValidateNotationUse</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName);
-int	<a href="#xmlValidateOneAttribute">xmlValidateOneAttribute</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidateOneElement">xmlValidateOneElement</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-int	<a href="#xmlValidateOneNamespace">xmlValidateOneNamespace</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlValidatePopElement">xmlValidatePopElement</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * qname);
-int	<a href="#xmlValidatePushCData">xmlValidatePushCData</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br>					 int len);
-int	<a href="#xmlValidatePushElement">xmlValidatePushElement</a>		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * qname);
-int	<a href="#xmlValidateRoot">xmlValidateRoot</a>			(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-typedef void <a href="#xmlValidityErrorFunc">xmlValidityErrorFunc</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef void <a href="#xmlValidityWarningFunc">xmlValidityWarningFunc</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttributeTable">Structure </a>xmlAttributeTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlAttributeTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAttributeTablePtr">Typedef </a>xmlAttributeTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlAttributeTable">xmlAttributeTable</a> * xmlAttributeTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementTable">Structure </a>xmlElementTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlElementTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlElementTablePtr">Typedef </a>xmlElementTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlElementTable">xmlElementTable</a> * xmlElementTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIDTable">Structure </a>xmlIDTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlIDTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIDTablePtr">Typedef </a>xmlIDTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlIDTable">xmlIDTable</a> * xmlIDTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNotationTable">Structure </a>xmlNotationTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlNotationTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNotationTablePtr">Typedef </a>xmlNotationTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlNotationTable">xmlNotationTable</a> * xmlNotationTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRefTable">Structure </a>xmlRefTable</h3>
-<pre class="programlisting">struct _xmlHashTable {
-The content of this structure is not made public by the API.
-} xmlRefTable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRefTablePtr">Typedef </a>xmlRefTablePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlRefTable">xmlRefTable</a> * xmlRefTablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidCtxt">Structure </a>xmlValidCtxt</h3>
-<pre class="programlisting">struct _xmlValidCtxt {
-    void *	userData
-    <a href="libxml2-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a>	error
-    <a href="libxml2-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a>	warning
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	nodeNr
-    int	nodeMax
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> *	nodeTab
-    unsigned int	flags
-    <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	doc
-    int	valid
-    <a href="libxml2-valid.html#xmlValidState">xmlValidState</a> *	vstate
-    int	vstateNr
-    int	vstateMax
-    <a href="libxml2-valid.html#xmlValidState">xmlValidState</a> *	vstateTab
-    <a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a>	am
-    <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	state
-    void *	am
-    void *	state
-} xmlValidCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidCtxtPtr">Typedef </a>xmlValidCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlValidCtxt">xmlValidCtxt</a> * xmlValidCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidState">Structure </a>xmlValidState</h3>
-<pre class="programlisting">struct _xmlValidState {
-The content of this structure is not made public by the API.
-} xmlValidState;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidStatePtr">Typedef </a>xmlValidStatePtr</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlValidState">xmlValidState</a> * xmlValidStatePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidityErrorFunc"></a>Function type xmlValidityErrorFunc</h3>
-<pre class="programlisting">void	xmlValidityErrorFunc		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Callback called when a validity error is found. This is a message oriented function similar to an *printf function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>usually an <a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> 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.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the string to format *printf like vararg</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>remaining arguments to the format</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidityWarningFunc"></a>Function type xmlValidityWarningFunc</h3>
-<pre class="programlisting">void	xmlValidityWarningFunc		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Callback called when a validity warning is found. This is a message oriented function similar to an *printf function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>usually an <a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> 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.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the string to format *printf like vararg</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>remaining arguments to the format</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddAttributeDecl"></a>xmlAddAttributeDecl ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	xmlAddAttributeDecl	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns, <br>					 <a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br>					 <a href="libxml2-tree.html#xmlAttributeDefault">xmlAttributeDefault</a> def, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * defaultValue, <br>					 <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> tree)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Register a new attribute declaration Note that @tree becomes the ownership of the DTD</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>pointer to the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the attribute namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the attribute type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>def</tt></i>:</span></td>
-<td>the attribute default type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>defaultValue</tt></i>:</span></td>
-<td>the attribute default value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>if it's an enumeration, the associated list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not new, otherwise the attribute decl</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddElementDecl"></a>xmlAddElementDecl ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	xmlAddElementDecl	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-tree.html#xmlElementTypeVal">xmlElementTypeVal</a> type, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Register a new element declaration</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>pointer to the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the element type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the element content tree or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddID"></a>xmlAddID ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlIDPtr">xmlIDPtr</a>	xmlAddID		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>Register a new id declaration</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>pointer to the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute holding the ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the new <a href="libxml2-tree.html#xmlIDPtr">xmlIDPtr</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddIDSafe"></a>xmlAddIDSafe ()</h3>
-<pre class="programlisting">int	xmlAddIDSafe			(<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Register a new id declaration Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute holding the ID</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute (ID) value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 on success, 0 if the ID already exists, -1 if a memory allocation fails.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddNotationDecl"></a>xmlAddNotationDecl ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a>	xmlAddNotationDecl	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * PublicID, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Register a new notation declaration</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>pointer to the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the entity name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>PublicID</tt></i>:</span></td>
-<td>the public identifier or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>SystemID</tt></i>:</span></td>
-<td>the system identifier or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the entity</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAddRef"></a>xmlAddRef ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlRefPtr">xmlRefPtr</a>	xmlAddRef		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>DEPRECATED, do not use. This function will be removed from the public API. Register a new ref declaration</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>pointer to the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute holding the Ref</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the new <a href="libxml2-tree.html#xmlRefPtr">xmlRefPtr</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyAttributeTable"></a>xmlCopyAttributeTable ()</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a>	xmlCopyAttributeTable	(<a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Build a copy of an attribute table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An attribute table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyDocElementContent"></a>xmlCopyDocElementContent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlCopyDocElementContent	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>							 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Build a copy of an element content description.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document owning the element declaration</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>An element content pointer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyElementContent"></a>xmlCopyElementContent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlCopyElementContent	(<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Build a copy of an element content description. Deprecated, use <a href="libxml2-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>An element content pointer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyElementTable"></a>xmlCopyElementTable ()</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a>	xmlCopyElementTable	(<a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Build a copy of an element table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An element table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyEnumeration"></a>xmlCopyEnumeration ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	xmlCopyEnumeration	(<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Copy an enumeration attribute node (recursive).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the tree to copy.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> just created or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyNotationTable"></a>xmlCopyNotationTable ()</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a>	xmlCopyNotationTable	(<a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Build a copy of a notation table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>A notation table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCreateEnumeration"></a>xmlCreateEnumeration ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	xmlCreateEnumeration	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. create and initialize an enumeration attribute node.</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 enumeration name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> just created or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpAttributeDecl"></a>xmlDumpAttributeDecl ()</h3>
-<pre class="programlisting">void	xmlDumpAttributeDecl		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> attr)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlsave.html#xmlSaveTree">xmlSaveTree</a>. This will dump the content of the attribute declaration as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>An attribute declaration</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpAttributeTable"></a>xmlDumpAttributeTable ()</h3>
-<pre class="programlisting">void	xmlDumpAttributeTable		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Don't use. This will dump the content of the attribute table as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An attribute table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpElementDecl"></a>xmlDumpElementDecl ()</h3>
-<pre class="programlisting">void	xmlDumpElementDecl		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlsave.html#xmlSaveTree">xmlSaveTree</a>. This will dump the content of the element declaration as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>An element table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpElementTable"></a>xmlDumpElementTable ()</h3>
-<pre class="programlisting">void	xmlDumpElementTable		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Don't use. This will dump the content of the element table as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An element table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpNotationDecl"></a>xmlDumpNotationDecl ()</h3>
-<pre class="programlisting">void	xmlDumpNotationDecl		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a> nota)<br>
-</pre>
-<p>DEPRECATED: Don't use. This will dump the content the notation declaration as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nota</tt></i>:</span></td>
-<td>A notation declaration</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlDumpNotationTable"></a>xmlDumpNotationTable ()</h3>
-<pre class="programlisting">void	xmlDumpNotationTable		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>					 <a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Don't use. This will dump the content of the notation table as an XML DTD definition</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the XML buffer output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>A notation table</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeAttributeTable"></a>xmlFreeAttributeTable ()</h3>
-<pre class="programlisting">void	xmlFreeAttributeTable		(<a href="libxml2-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Deallocate the memory used by an entities hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An attribute table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeDocElementContent"></a>xmlFreeDocElementContent ()</h3>
-<pre class="programlisting">void	xmlFreeDocElementContent	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Free an element content structure. The whole subtree is removed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document owning the element declaration</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the element content tree to free</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeElementContent"></a>xmlFreeElementContent ()</h3>
-<pre class="programlisting">void	xmlFreeElementContent		(<a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Free an element content structure. The whole subtree is removed. Deprecated, use <a href="libxml2-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a> instead</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the element content tree to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeElementTable"></a>xmlFreeElementTable ()</h3>
-<pre class="programlisting">void	xmlFreeElementTable		(<a href="libxml2-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Deallocate the memory used by an element hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An element table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeEnumeration"></a>xmlFreeEnumeration ()</h3>
-<pre class="programlisting">void	xmlFreeEnumeration		(<a href="libxml2-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)<br>
-</pre>
-<p>free an enumeration attribute node (recursive).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the tree to free.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeIDTable"></a>xmlFreeIDTable ()</h3>
-<pre class="programlisting">void	xmlFreeIDTable			(<a href="libxml2-valid.html#xmlIDTablePtr">xmlIDTablePtr</a> table)<br>
-</pre>
-<p>Deallocate the memory used by an ID hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An id table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeNotationTable"></a>xmlFreeNotationTable ()</h3>
-<pre class="programlisting">void	xmlFreeNotationTable		(<a href="libxml2-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Deallocate the memory used by an entities hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An notation table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeRefTable"></a>xmlFreeRefTable ()</h3>
-<pre class="programlisting">void	xmlFreeRefTable			(<a href="libxml2-valid.html#xmlRefTablePtr">xmlRefTablePtr</a> table)<br>
-</pre>
-<p>DEPRECATED, do not use. This function will be removed from the public API. Deallocate the memory used by an Ref hash table.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>table</tt></i>:</span></td>
-<td>An ref table</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeValidCtxt"></a>xmlFreeValidCtxt ()</h3>
-<pre class="programlisting">void	xmlFreeValidCtxt		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> cur)<br>
-</pre>
-<p>Free a validation context structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the validation context to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdAttrDesc"></a>xmlGetDtdAttrDesc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	xmlGetDtdAttrDesc	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search the DTD for the description of this attribute on this element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a pointer to the DtD to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> if found or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdElementDesc"></a>xmlGetDtdElementDesc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	xmlGetDtdElementDesc	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search the DTD for the description of this element NOTE: A NULL return value can also mean that a memory allocation failed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a pointer to the DtD to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> if found or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdNotationDesc"></a>xmlGetDtdNotationDesc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a>	xmlGetDtdNotationDesc	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search the DTD for the description of this notation</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a pointer to the DtD to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the notation name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a> if found or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdQAttrDesc"></a>xmlGetDtdQAttrDesc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a>	xmlGetDtdQAttrDesc	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>Search the DTD for the description of this qualified attribute on this element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a pointer to the DtD to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the attribute namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> if found or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetDtdQElementDesc"></a>xmlGetDtdQElementDesc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a>	xmlGetDtdQElementDesc	(<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>Search the DTD for the description of this element</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a pointer to the DtD to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the element namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> if found or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetID"></a>xmlGetID ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a>	xmlGetID		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID)<br>
-</pre>
-<p>Search the attribute declaring the given ID</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>pointer to the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ID</tt></i>:</span></td>
-<td>the ID value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not found, otherwise the <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> defining the ID</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetRefs"></a>xmlGetRefs ()</h3>
-<pre class="programlisting"><a href="libxml2-list.html#xmlListPtr">xmlListPtr</a>	xmlGetRefs		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ID)<br>
-</pre>
-<p>DEPRECATED, do not use. This function will be removed from the public API. Find the set of references for the supplied ID.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>pointer to the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ID</tt></i>:</span></td>
-<td>the ID value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not found, otherwise node set for the ID.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsID"></a>xmlIsID ()</h3>
-<pre class="programlisting">int	xmlIsID			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element carrying the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or 1 depending on the lookup result or -1 if a memory allocation failed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsMixedElement"></a>xmlIsMixedElement ()</h3>
-<pre class="programlisting">int	xmlIsMixedElement		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search in the DtDs whether an element accept Mixed content (or ANY) basically if it is supposed to accept text childs</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no, 1 if yes, and -1 if no element description is available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIsRef"></a>xmlIsRef ()</h3>
-<pre class="programlisting">int	xmlIsRef			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>DEPRECATED, do not use. This function will be removed from the public API. 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).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the element carrying the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or 1 depending on the lookup result</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewDocElementContent"></a>xmlNewDocElementContent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlNewDocElementContent	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 <a href="libxml2-tree.html#xmlElementContentType">xmlElementContentType</a> type)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Allocate an element content structure for the document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the subelement name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the type of element content decl</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the new element content structure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewElementContent"></a>xmlNewElementContent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlNewElementContent	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 <a href="libxml2-tree.html#xmlElementContentType">xmlElementContentType</a> type)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Allocate an element content structure. Deprecated in favor of <a href="libxml2-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the subelement name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the type of element content decl</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the new element content structure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewValidCtxt"></a>xmlNewValidCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	xmlNewValidCtxt		(void)<br>
-</pre>
-<p>Allocate a validation context structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if not, otherwise the new validation context structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRemoveID"></a>xmlRemoveID ()</h3>
-<pre class="programlisting">int	xmlRemoveID			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>Remove the given attribute from the ID table maintained internally.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 if the lookup failed and 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRemoveRef"></a>xmlRemoveRef ()</h3>
-<pre class="programlisting">int	xmlRemoveRef			(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br>
-</pre>
-<p>DEPRECATED, do not use. This function will be removed from the public API. Remove the given attribute from the Ref table maintained internally.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>the attribute</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 if the lookup failed and 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSnprintfElementContent"></a>xmlSnprintfElementContent ()</h3>
-<pre class="programlisting">void	xmlSnprintfElementContent	(char * buf, <br>					 int size, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content, <br>					 int englob)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. This will dump the content of the element content definition Intended just for the debug routine</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an output buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the buffer size</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>An element table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>englob</tt></i>:</span></td>
-<td>1 if one must print the englobing parenthesis, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSprintfElementContent"></a>xmlSprintfElementContent ()</h3>
-<pre class="programlisting">void	xmlSprintfElementContent	(char * buf, <br>					 <a href="libxml2-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> content, <br>					 int englob)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Deprecated, unsafe, use <a href="libxml2-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an output buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>An element table</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>englob</tt></i>:</span></td>
-<td>1 if one must print the englobing parenthesis, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidBuildContentModel"></a>xmlValidBuildContentModel ()</h3>
-<pre class="programlisting">int	xmlValidBuildContentModel	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. (Re)Build the automata associated to the content model of this element</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element declaration node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, 0 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidCtxtNormalizeAttributeValue"></a>xmlValidCtxtNormalizeAttributeValue ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlValidCtxtNormalizeAttributeValue	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>							 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>							 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the parent</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidGetPotentialChildren"></a>xmlValidGetPotentialChildren ()</h3>
-<pre class="programlisting">int	xmlValidGetPotentialChildren	(<a href="libxml2-tree.html#xmlElementContent">xmlElementContent</a> * ctree, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** names, <br>					 int * len, <br>					 int max)<br>
-</pre>
-<p>Build/extend a list of potential children allowed by the content tree</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctree</tt></i>:</span></td>
-<td>an element content tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>names</tt></i>:</span></td>
-<td>an array to store the list of child names</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>a pointer to the number of element in the list</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</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 number of element in the list, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidGetValidElements"></a>xmlValidGetValidElements ()</h3>
-<pre class="programlisting">int	xmlValidGetValidElements	(<a href="libxml2-tree.html#xmlNode">xmlNode</a> * prev, <br>					 <a href="libxml2-tree.html#xmlNode">xmlNode</a> * next, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** names, <br>					 int max)<br>
-</pre>
-<p>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 'node': xmlValidGetValidElements(node-&gt;prev, node, ... to insert next 'node': xmlValidGetValidElements(node, node-&gt;next, ... to replace 'node': xmlValidGetValidElements(node-&gt;prev, node-&gt;next, ... to prepend a child to 'node': xmlValidGetValidElements(NULL, node-&gt;childs, to append a child to 'node': 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>prev</tt></i>:</span></td>
-<td>an element to insert after</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>next</tt></i>:</span></td>
-<td>an element to insert next</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>names</tt></i>:</span></td>
-<td>an array to store the list of child names</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</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 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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidNormalizeAttributeValue"></a>xmlValidNormalizeAttributeValue ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlValidNormalizeAttributeValue	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>the parent</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateAttributeDecl"></a>xmlValidateAttributeDecl ()</h3>
-<pre class="programlisting">int	xmlValidateAttributeDecl	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlAttributePtr">xmlAttributePtr</a> attr)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>an attribute definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateAttributeValue"></a>xmlValidateAttributeValue ()</h3>
-<pre class="programlisting">int	xmlValidateAttributeValue	(<a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>an attribute type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an attribute value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateDocument"></a>xmlValidateDocument ()</h3>
-<pre class="programlisting">int	xmlValidateDocument		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> vctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>DEPRECATED: This function can't report malloc or other failures. Use <a href="libxml2-parser.html#xmlCtxtValidateDocument">xmlCtxtValidateDocument</a>. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateDocumentFinal"></a>xmlValidateDocumentFinal ()</h3>
-<pre class="programlisting">int	xmlValidateDocumentFinal	(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateDtd"></a>xmlValidateDtd ()</h3>
-<pre class="programlisting">int	xmlValidateDtd			(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>dtd</tt></i>:</span></td>
-<td>a dtd instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateDtdFinal"></a>xmlValidateDtdFinal ()</h3>
-<pre class="programlisting">int	xmlValidateDtdFinal		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 if invalid and -1 if not well-formed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateElement"></a>xmlValidateElement ()</h3>
-<pre class="programlisting">int	xmlValidateElement		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> root)<br>
-</pre>
-<p>Try to validate the subtree under an element</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>root</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateElementDecl"></a>xmlValidateElementDecl ()</h3>
-<pre class="programlisting">int	xmlValidateElementDecl		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlElementPtr">xmlElementPtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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 ]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNameValue"></a>xmlValidateNameValue ()</h3>
-<pre class="programlisting">int	xmlValidateNameValue		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Validate that the given value match Name production</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an Name value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNamesValue"></a>xmlValidateNamesValue ()</h3>
-<pre class="programlisting">int	xmlValidateNamesValue		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Validate that the given value match Names production</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an Names value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNmtokenValue"></a>xmlValidateNmtokenValue ()</h3>
-<pre class="programlisting">int	xmlValidateNmtokenValue		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Validate that the given value match Nmtoken production [ VC: Name Token ]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an Nmtoken value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNmtokensValue"></a>xmlValidateNmtokensValue ()</h3>
-<pre class="programlisting">int	xmlValidateNmtokensValue	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Validate that the given value match Nmtokens production [ VC: Name Token ]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>an Nmtokens value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNotationDecl"></a>xmlValidateNotationDecl ()</h3>
-<pre class="programlisting">int	xmlValidateNotationDecl		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNotationPtr">xmlNotationPtr</a> nota)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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 ...</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nota</tt></i>:</span></td>
-<td>a notation definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateNotationUse"></a>xmlValidateNotationUse ()</h3>
-<pre class="programlisting">int	xmlValidateNotationUse		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * notationName)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Validate that the given name match a notation declaration. - [ VC: Notation Declared ]</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>notationName</tt></i>:</span></td>
-<td>the notation name to check</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateOneAttribute"></a>xmlValidateOneAttribute ()</h3>
-<pre class="programlisting">int	xmlValidateOneAttribute		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 <a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>attr</tt></i>:</span></td>
-<td>an attribute instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value (without entities processing)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateOneElement"></a>xmlValidateOneElement ()</h3>
-<pre class="programlisting">int	xmlValidateOneElement		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Try to validate a single element and it'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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateOneNamespace"></a>xmlValidateOneNamespace ()</h3>
-<pre class="programlisting">int	xmlValidateOneNamespace		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>an namespace declaration instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the attribute value (without entities processing)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidatePopElement"></a>xmlValidatePopElement ()</h3>
-<pre class="programlisting">int	xmlValidatePopElement		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * qname)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Pop the element end from the validation stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>qname</tt></i>:</span></td>
-<td>the qualified name as appearing in the serialization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidatePushCData"></a>xmlValidatePushCData ()</h3>
-<pre class="programlisting">int	xmlValidatePushCData		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * data, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. check the CData parsed for validation in the current stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>some character data read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidatePushElement"></a>xmlValidatePushElement ()</h3>
-<pre class="programlisting">int	xmlValidatePushElement		(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * qname)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Push a new element start on the validation stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>qname</tt></i>:</span></td>
-<td>the qualified name as appearing in the serialization</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if no validation problem was found or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlValidateRoot"></a>xmlValidateRoot ()</h3>
-<pre class="programlisting">int	xmlValidateRoot			(<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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't try to recurse or apply other check to the element</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid or 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xinclude.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xinclude.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xinclude.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xinclude.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,464 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xinclude: implementation of XInclude</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-valid.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xlink.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xinclude</span></h2>
-<p>xinclude - implementation of XInclude</p>
-<p>API to handle XInclude processing, implements the World Wide Web Consortium Last Call Working Draft 10 November 2003</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XINCLUDE_FALLBACK">XINCLUDE_FALLBACK</a>;
-#define <a href="#XINCLUDE_HREF">XINCLUDE_HREF</a>;
-#define <a href="#XINCLUDE_NODE">XINCLUDE_NODE</a>;
-#define <a href="#XINCLUDE_NS">XINCLUDE_NS</a>;
-#define <a href="#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a>;
-#define <a href="#XINCLUDE_PARSE">XINCLUDE_PARSE</a>;
-#define <a href="#XINCLUDE_PARSE_ENCODING">XINCLUDE_PARSE_ENCODING</a>;
-#define <a href="#XINCLUDE_PARSE_TEXT">XINCLUDE_PARSE_TEXT</a>;
-#define <a href="#XINCLUDE_PARSE_XML">XINCLUDE_PARSE_XML</a>;
-#define <a href="#XINCLUDE_PARSE_XPOINTER">XINCLUDE_PARSE_XPOINTER</a>;
-typedef struct _xmlXIncludeCtxt <a href="#xmlXIncludeCtxt">xmlXIncludeCtxt</a>;
-typedef <a href="libxml2-xinclude.html#xmlXIncludeCtxt">xmlXIncludeCtxt</a> * <a href="#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a>;
-void	<a href="#xmlXIncludeFreeContext">xmlXIncludeFreeContext</a>		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt);
-int	<a href="#xmlXIncludeGetLastError">xmlXIncludeGetLastError</a>		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt);
-<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a>	<a href="#xmlXIncludeNewContext">xmlXIncludeNewContext</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlXIncludeProcess">xmlXIncludeProcess</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlXIncludeProcessFlags">xmlXIncludeProcessFlags</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int flags);
-int	<a href="#xmlXIncludeProcessFlagsData">xmlXIncludeProcessFlagsData</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int flags, <br>					 void * data);
-int	<a href="#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a>		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlXIncludeProcessTree">xmlXIncludeProcessTree</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree);
-int	<a href="#xmlXIncludeProcessTreeFlags">xmlXIncludeProcessTreeFlags</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 int flags);
-int	<a href="#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 int flags, <br>					 void * data);
-void	<a href="#xmlXIncludeSetErrorHandler">xmlXIncludeSetErrorHandler</a>	(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data);
-int	<a href="#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a>		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 int flags);
-void	<a href="#xmlXIncludeSetResourceLoader">xmlXIncludeSetResourceLoader</a>	(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_FALLBACK">Macro </a>XINCLUDE_FALLBACK</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_FALLBACK">XINCLUDE_FALLBACK</a>;
-</pre>
-<p>Macro defining "fallback"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_HREF">Macro </a>XINCLUDE_HREF</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_HREF">XINCLUDE_HREF</a>;
-</pre>
-<p>Macro defining "href"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_NODE">Macro </a>XINCLUDE_NODE</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_NODE">XINCLUDE_NODE</a>;
-</pre>
-<p>Macro defining "include"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_NS">Macro </a>XINCLUDE_NS</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_NS">XINCLUDE_NS</a>;
-</pre>
-<p>Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_OLD_NS">Macro </a>XINCLUDE_OLD_NS</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a>;
-</pre>
-<p>Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_PARSE">Macro </a>XINCLUDE_PARSE</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_PARSE">XINCLUDE_PARSE</a>;
-</pre>
-<p>Macro defining "parse"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_PARSE_ENCODING">Macro </a>XINCLUDE_PARSE_ENCODING</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_PARSE_ENCODING">XINCLUDE_PARSE_ENCODING</a>;
-</pre>
-<p>Macro defining "encoding"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_PARSE_TEXT">Macro </a>XINCLUDE_PARSE_TEXT</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_PARSE_TEXT">XINCLUDE_PARSE_TEXT</a>;
-</pre>
-<p>Macro defining "text"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_PARSE_XML">Macro </a>XINCLUDE_PARSE_XML</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_PARSE_XML">XINCLUDE_PARSE_XML</a>;
-</pre>
-<p>Macro defining "xml"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XINCLUDE_PARSE_XPOINTER">Macro </a>XINCLUDE_PARSE_XPOINTER</h3>
-<pre class="programlisting">#define <a href="#XINCLUDE_PARSE_XPOINTER">XINCLUDE_PARSE_XPOINTER</a>;
-</pre>
-<p>Macro defining "xpointer"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeCtxt">Structure </a>xmlXIncludeCtxt</h3>
-<pre class="programlisting">struct _xmlXIncludeCtxt {
-The content of this structure is not made public by the API.
-} xmlXIncludeCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeCtxtPtr">Typedef </a>xmlXIncludeCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-xinclude.html#xmlXIncludeCtxt">xmlXIncludeCtxt</a> * xmlXIncludeCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeFreeContext"></a>xmlXIncludeFreeContext ()</h3>
-<pre class="programlisting">void	xmlXIncludeFreeContext		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free an XInclude context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XInclude context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeGetLastError"></a>xmlXIncludeGetLastError ()</h3>
-<pre class="programlisting">int	xmlXIncludeGetLastError		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XInclude processing context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last error code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeNewContext"></a>xmlXIncludeNewContext ()</h3>
-<pre class="programlisting"><a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a>	xmlXIncludeNewContext	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Creates a new XInclude context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>an XML Document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcess"></a>xmlXIncludeProcess ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcess		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Implement the XInclude substitution on the XML document @doc</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessFlags"></a>xmlXIncludeProcessFlags ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessFlags		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int flags)<br>
-</pre>
-<p>Implement the XInclude substitution on the XML document @doc</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> used for parsing XML includes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessFlagsData"></a>xmlXIncludeProcessFlagsData ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessFlagsData	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 int flags, <br>					 void * data)<br>
-</pre>
-<p>Implement the XInclude substitution on the XML document @doc</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> used for parsing XML includes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>application data that will be passed to the parser context in the _private field of the parser context(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessNode"></a>xmlXIncludeProcessNode ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessNode		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Implement the XInclude substitution for the given subtree reusing the information and data coming from the given context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an existing XInclude context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node in an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessTree"></a>xmlXIncludeProcessTree ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessTree		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br>
-</pre>
-<p>Implement the XInclude substitution for the given subtree</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>a node in an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessTreeFlags"></a>xmlXIncludeProcessTreeFlags ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessTreeFlags	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 int flags)<br>
-</pre>
-<p>Implement the XInclude substitution for the given subtree</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>a node in an XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> used for parsing XML includes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeProcessTreeFlagsData"></a>xmlXIncludeProcessTreeFlagsData ()</h3>
-<pre class="programlisting">int	xmlXIncludeProcessTreeFlagsData	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree, <br>					 int flags, <br>					 void * data)<br>
-</pre>
-<p>Implement the XInclude substitution on the XML node @tree</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>tree</tt></i>:</span></td>
-<td>an XML node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> used for parsing XML includes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>application data that will be passed to the parser context in the _private field of the parser context(s)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if no substitution were done, -1 if some processing failed or the number of substitutions done.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeSetErrorHandler"></a>xmlXIncludeSetErrorHandler ()</h3>
-<pre class="programlisting">void	xmlXIncludeSetErrorHandler	(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XInclude processing context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>error handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data which will be passed to the handler</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeSetFlags"></a>xmlXIncludeSetFlags ()</h3>
-<pre class="programlisting">int	xmlXIncludeSetFlags		(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 int flags)<br>
-</pre>
-<p>Set the flags used for further processing of XML resources.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XInclude processing context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>flags</tt></i>:</span></td>
-<td>a set of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a> used for parsing XML includes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXIncludeSetResourceLoader"></a>xmlXIncludeSetResourceLoader ()</h3>
-<pre class="programlisting">void	xmlXIncludeSetResourceLoader	(<a href="libxml2-xinclude.html#xmlXIncludeCtxtPtr">xmlXIncludeCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called to load included documents. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XInclude processing context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loader</tt></i>:</span></td>
-<td>resource loader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data which will be passed to the loader</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xlink.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xlink.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xlink.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xlink.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,382 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xlink: unfinished XLink detection module</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xinclude.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlIO.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xlink</span></h2>
-<p>xlink - unfinished XLink detection module</p>
-<p>unfinished XLink detection module </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef enum <a href="#xlinkActuate">xlinkActuate</a>;
-typedef <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xlinkHRef">xlinkHRef</a>;
-typedef struct _xlinkHandler <a href="#xlinkHandler">xlinkHandler</a>;
-typedef <a href="libxml2-xlink.html#xlinkHandler">xlinkHandler</a> * <a href="#xlinkHandlerPtr">xlinkHandlerPtr</a>;
-typedef <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xlinkRole">xlinkRole</a>;
-typedef enum <a href="#xlinkShow">xlinkShow</a>;
-typedef <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xlinkTitle">xlinkTitle</a>;
-typedef enum <a href="#xlinkType">xlinkType</a>;
-typedef void <a href="#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a>		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int nbLocators, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> * hrefs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * roles, <br>					 int nbArcs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * from, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * to, <br>					 <a href="libxml2-xlink.html#xlinkShow">xlinkShow</a> * show, <br>					 <a href="libxml2-xlink.html#xlinkActuate">xlinkActuate</a> * actuate, <br>					 int nbTitles, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> * titles, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** langs);
-typedef void <a href="#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a>	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int nbLocators, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> * hrefs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * roles, <br>					 int nbTitles, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> * titles, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** langs);
-<a href="libxml2-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a>	<a href="#xlinkGetDefaultDetect">xlinkGetDefaultDetect</a>	(void);
-<a href="libxml2-xlink.html#xlinkHandlerPtr">xlinkHandlerPtr</a>	<a href="#xlinkGetDefaultHandler">xlinkGetDefaultHandler</a>	(void);
-<a href="libxml2-xlink.html#xlinkType">xlinkType</a>	<a href="#xlinkIsLink">xlinkIsLink</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-typedef void <a href="#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a>		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-void	<a href="#xlinkSetDefaultDetect">xlinkSetDefaultDetect</a>		(<a href="libxml2-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a> func);
-void	<a href="#xlinkSetDefaultHandler">xlinkSetDefaultHandler</a>		(<a href="libxml2-xlink.html#xlinkHandlerPtr">xlinkHandlerPtr</a> handler);
-typedef void <a href="#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a>		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> href, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> role, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> title);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkActuate">Enum </a>xlinkActuate</h3>
-<pre class="programlisting">enum <a href="#xlinkActuate">xlinkActuate</a> {
-    <a name="XLINK_ACTUATE_NONE">XLINK_ACTUATE_NONE</a> = 0
-    <a name="XLINK_ACTUATE_AUTO">XLINK_ACTUATE_AUTO</a> = 1
-    <a name="XLINK_ACTUATE_ONREQUEST">XLINK_ACTUATE_ONREQUEST</a> = 2
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkHRef">Typedef </a>xlinkHRef</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xlinkHRef;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkHandler">Structure </a>xlinkHandler</h3>
-<pre class="programlisting">struct _xlinkHandler {
-    <a href="libxml2-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a>	simple
-    <a href="libxml2-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a>	extended
-    <a href="libxml2-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a>	set
-} xlinkHandler;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkHandlerPtr">Typedef </a>xlinkHandlerPtr</h3>
-<pre class="programlisting"><a href="libxml2-xlink.html#xlinkHandler">xlinkHandler</a> * xlinkHandlerPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkRole">Typedef </a>xlinkRole</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xlinkRole;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkShow">Enum </a>xlinkShow</h3>
-<pre class="programlisting">enum <a href="#xlinkShow">xlinkShow</a> {
-    <a name="XLINK_SHOW_NONE">XLINK_SHOW_NONE</a> = 0
-    <a name="XLINK_SHOW_NEW">XLINK_SHOW_NEW</a> = 1
-    <a name="XLINK_SHOW_EMBED">XLINK_SHOW_EMBED</a> = 2
-    <a name="XLINK_SHOW_REPLACE">XLINK_SHOW_REPLACE</a> = 3
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkTitle">Typedef </a>xlinkTitle</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * xlinkTitle;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkType">Enum </a>xlinkType</h3>
-<pre class="programlisting">enum <a href="#xlinkType">xlinkType</a> {
-    <a name="XLINK_TYPE_NONE">XLINK_TYPE_NONE</a> = 0
-    <a name="XLINK_TYPE_SIMPLE">XLINK_TYPE_SIMPLE</a> = 1
-    <a name="XLINK_TYPE_EXTENDED">XLINK_TYPE_EXTENDED</a> = 2
-    <a name="XLINK_TYPE_EXTENDED_SET">XLINK_TYPE_EXTENDED_SET</a> = 3
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkExtendedLinkFunk"></a>Function type xlinkExtendedLinkFunk</h3>
-<pre class="programlisting">void	xlinkExtendedLinkFunk		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int nbLocators, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> * hrefs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * roles, <br>					 int nbArcs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * from, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * to, <br>					 <a href="libxml2-xlink.html#xlinkShow">xlinkShow</a> * show, <br>					 <a href="libxml2-xlink.html#xlinkActuate">xlinkActuate</a> * actuate, <br>					 int nbTitles, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> * titles, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** langs)<br>
-</pre>
-<p>This is the prototype for a extended link detection callback.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>user data pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node carrying the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbLocators</tt></i>:</span></td>
-<td>the number of locators detected on the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>hrefs</tt></i>:</span></td>
-<td>pointer to the array of locator hrefs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>roles</tt></i>:</span></td>
-<td>pointer to the array of locator roles</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbArcs</tt></i>:</span></td>
-<td>the number of arcs detected on the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>pointer to the array of source roles found on the arcs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>pointer to the array of target roles found on the arcs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>show</tt></i>:</span></td>
-<td>array of values for the show attributes found on the arcs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>actuate</tt></i>:</span></td>
-<td>array of values for the actuate attributes found on the arcs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbTitles</tt></i>:</span></td>
-<td>the number of titles detected on the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>titles</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>langs</tt></i>:</span></td>
-<td>array of xml:lang values for the titles</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkExtendedLinkSetFunk"></a>Function type xlinkExtendedLinkSetFunk</h3>
-<pre class="programlisting">void	xlinkExtendedLinkSetFunk	(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 int nbLocators, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> * hrefs, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> * roles, <br>					 int nbTitles, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> * titles, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** langs)<br>
-</pre>
-<p>This is the prototype for a extended link set detection callback.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>user data pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node carrying the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbLocators</tt></i>:</span></td>
-<td>the number of locators detected on the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>hrefs</tt></i>:</span></td>
-<td>pointer to the array of locator hrefs</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>roles</tt></i>:</span></td>
-<td>pointer to the array of locator roles</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbTitles</tt></i>:</span></td>
-<td>the number of titles detected on the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>titles</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>langs</tt></i>:</span></td>
-<td>array of xml:lang values for the titles</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkNodeDetectFunc"></a>Function type xlinkNodeDetectFunc</h3>
-<pre class="programlisting">void	xlinkNodeDetectFunc		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>This is the prototype for the link detection routine. It calls the default link detection callbacks upon link detection.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>user data pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to check</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkSimpleLinkFunk"></a>Function type xlinkSimpleLinkFunk</h3>
-<pre class="programlisting">void	xlinkSimpleLinkFunk		(void * ctx, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 const <a href="libxml2-xlink.html#xlinkHRef">xlinkHRef</a> href, <br>					 const <a href="libxml2-xlink.html#xlinkRole">xlinkRole</a> role, <br>					 const <a href="libxml2-xlink.html#xlinkTitle">xlinkTitle</a> title)<br>
-</pre>
-<p>This is the prototype for a simple link detection callback.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>user data pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node carrying the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>href</tt></i>:</span></td>
-<td>the target of the link</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>role</tt></i>:</span></td>
-<td>the role string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>title</tt></i>:</span></td>
-<td>the link title</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkGetDefaultDetect"></a>xlinkGetDefaultDetect ()</h3>
-<pre class="programlisting"><a href="libxml2-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a>	xlinkGetDefaultDetect	(void)<br>
-</pre>
-<p>DEPRECATED: Don't use. Get the default xlink detection routine</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current function or NULL;</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkGetDefaultHandler"></a>xlinkGetDefaultHandler ()</h3>
-<pre class="programlisting"><a href="libxml2-xlink.html#xlinkHandlerPtr">xlinkHandlerPtr</a>	xlinkGetDefaultHandler	(void)<br>
-</pre>
-<p>DEPRECATED: Don't use. Get the default xlink handler.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the current <a href="libxml2-xlink.html#xlinkHandlerPtr">xlinkHandlerPtr</a> value.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkIsLink"></a>xlinkIsLink ()</h3>
-<pre class="programlisting"><a href="libxml2-xlink.html#xlinkType">xlinkType</a>	xlinkIsLink		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>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't try to do full checking of the link validity but tries to detect and return the appropriate link type.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the document containing the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node pointer itself</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xlink.html#xlinkType">xlinkType</a> of the node (XLINK_TYPE_NONE if there is no link detected.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkSetDefaultDetect"></a>xlinkSetDefaultDetect ()</h3>
-<pre class="programlisting">void	xlinkSetDefaultDetect		(<a href="libxml2-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a> func)<br>
-</pre>
-<p>DEPRECATED: Don't use. Set the default xlink detection routine</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td>pointer to the new detection routine.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xlinkSetDefaultHandler"></a>xlinkSetDefaultHandler ()</h3>
-<pre class="programlisting">void	xlinkSetDefaultHandler		(<a href="libxml2-xlink.html#xlinkHandlerPtr">xlinkHandlerPtr</a> handler)<br>
-</pre>
-<p>DEPRECATED: Don't use. Set the default xlink handlers</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the new value for the xlink handler block</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlIO.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlIO.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlIO.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlIO.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1496 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlIO: interface for the I/O interfaces used by the parser</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xlink.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlautomata.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlIO</span></h2>
-<p>xmlIO - interface for the I/O interfaces used by the parser</p>
-<p>interface for the I/O interfaces used by the parser </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlAllocOutputBuffer">xmlAllocOutputBuffer</a>	(<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlAllocParserInputBuffer">xmlAllocParserInputBuffer</a>	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-int	<a href="#xmlCheckFilename">xmlCheckFilename</a>		(const char * path);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlCheckHTTPInput">xmlCheckHTTPInput</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> ret);
-void	<a href="#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a>	(void);
-void	<a href="#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a>	(void);
-int	<a href="#xmlFileClose">xmlFileClose</a>			(void * context);
-int	<a href="#xmlFileMatch">xmlFileMatch</a>			(const char * filename);
-void *	<a href="#xmlFileOpen">xmlFileOpen</a>			(const char * filename);
-int	<a href="#xmlFileRead">xmlFileRead</a>			(void * context, <br>					 char * buffer, <br>					 int len);
-void	<a href="#xmlFreeParserInputBuffer">xmlFreeParserInputBuffer</a>	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in);
-int	<a href="#xmlIOHTTPClose">xmlIOHTTPClose</a>			(void * context);
-int	<a href="#xmlIOHTTPMatch">xmlIOHTTPMatch</a>			(const char * filename);
-void *	<a href="#xmlIOHTTPOpen">xmlIOHTTPOpen</a>			(const char * filename);
-void *	<a href="#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a>			(const char * post_uri, <br>					 int compression);
-int	<a href="#xmlIOHTTPRead">xmlIOHTTPRead</a>			(void * context, <br>					 char * buffer, <br>					 int len);
-typedef int <a href="#xmlInputCloseCallback">xmlInputCloseCallback</a>		(void * context);
-typedef int <a href="#xmlInputMatchCallback">xmlInputMatchCallback</a>		(char const * filename);
-typedef void * <a href="#xmlInputOpenCallback">xmlInputOpenCallback</a>		(char const * filename);
-typedef int <a href="#xmlInputReadCallback">xmlInputReadCallback</a>		(void * context, <br>					 char * buffer, <br>					 int len);
-<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	<a href="#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a>	(const char * URL, <br>							 const char * ID, <br>							 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path);
-int	<a href="#xmlOutputBufferClose">xmlOutputBufferClose</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlOutputBufferCreateBuffer">xmlOutputBufferCreateBuffer</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder);
-<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlOutputBufferCreateFd">xmlOutputBufferCreateFd</a>	(int fd, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder);
-<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlOutputBufferCreateFile">xmlOutputBufferCreateFile</a>	(FILE * file, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder);
-<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a>	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br>							 int compression);
-<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a>	<a href="#xmlOutputBufferCreateFilenameDefault">xmlOutputBufferCreateFilenameDefault</a>	(<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a> func);
-typedef <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> <a href="#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a>	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br>							 int compression);
-<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	<a href="#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a>	(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>						 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>						 void * ioctx, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder);
-int	<a href="#xmlOutputBufferFlush">xmlOutputBufferFlush</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlOutputBufferGetContent">xmlOutputBufferGetContent</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-size_t	<a href="#xmlOutputBufferGetSize">xmlOutputBufferGetSize</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-int	<a href="#xmlOutputBufferWrite">xmlOutputBufferWrite</a>		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 int len, <br>					 const char * data);
-int	<a href="#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escaping);
-int	<a href="#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 const char * str);
-typedef int <a href="#xmlOutputCloseCallback">xmlOutputCloseCallback</a>		(void * context);
-typedef int <a href="#xmlOutputMatchCallback">xmlOutputMatchCallback</a>		(char const * filename);
-typedef void * <a href="#xmlOutputOpenCallback">xmlOutputOpenCallback</a>		(char const * filename);
-typedef int <a href="#xmlOutputWriteCallback">xmlOutputWriteCallback</a>		(void * context, <br>					 const char * buffer, <br>					 int len);
-char *	<a href="#xmlParserGetDirectory">xmlParserGetDirectory</a>		(const char * filename);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateFd">xmlParserInputBufferCreateFd</a>	(int fd, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateFile">xmlParserInputBufferCreateFile</a>	(FILE * file, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a>	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a>	<a href="#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a>	(<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> func);
-typedef <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> <a href="#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a>	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateIO">xmlParserInputBufferCreateIO</a>	(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>							 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>							 void * ioctx, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a>	(const char * mem, <br>							 int size, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a>	(const char * mem, <br>							 int size, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc);
-int	<a href="#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a>	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len);
-int	<a href="#xmlParserInputBufferPush">xmlParserInputBufferPush</a>	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len, <br>					 const char * buf);
-int	<a href="#xmlParserInputBufferRead">xmlParserInputBufferRead</a>	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len);
-int	<a href="#xmlPopInputCallbacks">xmlPopInputCallbacks</a>		(void);
-int	<a href="#xmlPopOutputCallbacks">xmlPopOutputCallbacks</a>		(void);
-void	<a href="#xmlRegisterDefaultInputCallbacks">xmlRegisterDefaultInputCallbacks</a>	(void);
-void	<a href="#xmlRegisterDefaultOutputCallbacks">xmlRegisterDefaultOutputCallbacks</a>	(void);
-void	<a href="#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a>	(void);
-int	<a href="#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a>	(<a href="libxml2-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a> matchFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputOpenCallback">xmlInputOpenCallback</a> openFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> readFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> closeFunc);
-int	<a href="#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a>	(<a href="libxml2-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a> matchFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a> openFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> writeFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> closeFunc);
-<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a>	<a href="#xmlThrDefOutputBufferCreateFilenameDefault">xmlThrDefOutputBufferCreateFilenameDefault</a>	(<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a> func);
-<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a>	<a href="#xmlThrDefParserInputBufferCreateFilenameDefault">xmlThrDefParserInputBufferCreateFilenameDefault</a>	(<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> func);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInputCloseCallback"></a>Function type xmlInputCloseCallback</h3>
-<pre class="programlisting">int	xmlInputCloseCallback		(void * context)<br>
-</pre>
-<p>Callback used in the I/O Input API to close the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>an Input context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInputMatchCallback"></a>Function type xmlInputMatchCallback</h3>
-<pre class="programlisting">int	xmlInputMatchCallback		(char const * filename)<br>
-</pre>
-<p>Callback used in the I/O Input API to detect if the current handler can provide input functionality for this resource.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if yes and 0 if another Input module should be used</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInputOpenCallback"></a>Function type xmlInputOpenCallback</h3>
-<pre class="programlisting">void *	xmlInputOpenCallback		(char const * filename)<br>
-</pre>
-<p>Callback used in the I/O Input API to open the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an Input context or NULL in case or error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInputReadCallback"></a>Function type xmlInputReadCallback</h3>
-<pre class="programlisting">int	xmlInputReadCallback		(void * context, <br>					 char * buffer, <br>					 int len)<br>
-</pre>
-<p>Callback used in the I/O Input API to read the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>an Input context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>the buffer to store data read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the buffer in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes read or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateFilenameFunc"></a>Function type xmlOutputBufferCreateFilenameFunc</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateFilenameFunc	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br>							 int compression)<br>
-</pre>
-<p>Signature for the function doing the lookup for a suitable output method corresponding to an URI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI to write to</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> in case of success or NULL if no method was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputCloseCallback"></a>Function type xmlOutputCloseCallback</h3>
-<pre class="programlisting">int	xmlOutputCloseCallback		(void * context)<br>
-</pre>
-<p>Callback used in the I/O Output API to close the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>an Output context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputMatchCallback"></a>Function type xmlOutputMatchCallback</h3>
-<pre class="programlisting">int	xmlOutputMatchCallback		(char const * filename)<br>
-</pre>
-<p>Callback used in the I/O Output API to detect if the current handler can provide output functionality for this resource.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if yes and 0 if another Output module should be used</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputOpenCallback"></a>Function type xmlOutputOpenCallback</h3>
-<pre class="programlisting">void *	xmlOutputOpenCallback		(char const * filename)<br>
-</pre>
-<p>Callback used in the I/O Output API to open the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the filename or URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an Output context or NULL in case or error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputWriteCallback"></a>Function type xmlOutputWriteCallback</h3>
-<pre class="programlisting">int	xmlOutputWriteCallback		(void * context, <br>					 const char * buffer, <br>					 int len)<br>
-</pre>
-<p>Callback used in the I/O Output API to write to the resource</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>an Output context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>the buffer of data to write</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the buffer in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateFilenameFunc"></a>Function type xmlParserInputBufferCreateFilenameFunc</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateFilenameFunc	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>Signature for the function doing the lookup for a suitable input method corresponding to an URI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI to read from</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the requested source encoding</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in case of success or NULL if no method was found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAllocOutputBuffer"></a>xmlAllocOutputBuffer ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlAllocOutputBuffer	(<a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)<br>
-</pre>
-<p>Create a buffered parser output Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the encoding converter or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAllocParserInputBuffer"></a>xmlAllocParserInputBuffer ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlAllocParserInputBuffer	(<a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use xmlNewInputFrom*. Create a buffered parser input for progressive parsing. The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCheckFilename"></a>xmlCheckFilename ()</h3>
-<pre class="programlisting">int	xmlCheckFilename		(const char * path)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. if stat is not available on the target machine,</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>path</tt></i>:</span></td>
-<td>the path to check</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1. if stat fails, returns 0 (if calling stat on the filename fails, it can't be right). if stat succeeds and the file is a directory, returns 2. otherwise returns 1.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCheckHTTPInput"></a>xmlCheckHTTPInput ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlCheckHTTPInput	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> ret)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ret</tt></i>:</span></td>
-<td>an XML parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the input or NULL in case of HTTP error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupInputCallbacks"></a>xmlCleanupInputCallbacks ()</h3>
-<pre class="programlisting">void	xmlCleanupInputCallbacks	(void)<br>
-</pre>
-<p>clears the entire input callback table. this includes the compiled-in I/O.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupOutputCallbacks"></a>xmlCleanupOutputCallbacks ()</h3>
-<pre class="programlisting">void	xmlCleanupOutputCallbacks	(void)<br>
-</pre>
-<p>clears the entire output callback table. this includes the compiled-in I/O callbacks.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFileClose"></a>xmlFileClose ()</h3>
-<pre class="programlisting">int	xmlFileClose			(void * context)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>the I/O context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or -1 an error code case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFileMatch"></a>xmlFileMatch ()</h3>
-<pre class="programlisting">int	xmlFileMatch			(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the URI for matching</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if matches, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFileOpen"></a>xmlFileOpen ()</h3>
-<pre class="programlisting">void *	xmlFileOpen			(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the URI for matching</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an IO context or NULL in case or failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFileRead"></a>xmlFileRead ()</h3>
-<pre class="programlisting">int	xmlFileRead			(void * context, <br>					 char * buffer, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>the I/O context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>where to drop data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>number of bytes to write</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes read or &lt; 0 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeParserInputBuffer"></a>xmlFreeParserInputBuffer ()</h3>
-<pre class="programlisting">void	xmlFreeParserInputBuffer	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in)<br>
-</pre>
-<p>Free up the memory used by a buffered parser input</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a buffered parser input</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOHTTPClose"></a>xmlIOHTTPClose ()</h3>
-<pre class="programlisting">int	xmlIOHTTPClose			(void * context)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Close an HTTP I/O channel</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>the I/O context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOHTTPMatch"></a>xmlIOHTTPMatch ()</h3>
-<pre class="programlisting">int	xmlIOHTTPMatch			(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. check if the URI matches an HTTP one</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the URI for matching</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if matches, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOHTTPOpen"></a>xmlIOHTTPOpen ()</h3>
-<pre class="programlisting">void *	xmlIOHTTPOpen			(const char * filename)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. open an HTTP I/O channel</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the URI for matching</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an I/O context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOHTTPOpenW"></a>xmlIOHTTPOpenW ()</h3>
-<pre class="programlisting">void *	xmlIOHTTPOpenW			(const char * post_uri, <br>					 int compression)<br>
-</pre>
-<p>DEPRECATED: Support for HTTP POST has been removed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>post_uri</tt></i>:</span></td>
-<td>The destination URI for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>The compression desired for the document.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlIOHTTPRead"></a>xmlIOHTTPRead ()</h3>
-<pre class="programlisting">int	xmlIOHTTPRead			(void * context, <br>					 char * buffer, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Read @len bytes to @buffer from the I/O channel.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>context</tt></i>:</span></td>
-<td>the I/O context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>where to drop data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>number of bytes to write</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of bytes written</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNoNetExternalEntityLoader"></a>xmlNoNetExternalEntityLoader ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a>	xmlNoNetExternalEntityLoader	(const char * URL, <br>							 const char * ID, <br>							 <a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#XML_PARSE_NONET">XML_PARSE_NONET</a>. A specific entity loader disabling network accesses, though still allowing local catalog accesses for resolution.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<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>ctxt</tt></i>:</span></td>
-<td>the context in which the entity is called or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new allocated xmlParserInputPtr, or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNormalizeWindowsPath"></a>xmlNormalizeWindowsPath ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlNormalizeWindowsPath	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * path)<br>
-</pre>
-<p>DEPRECATED: This never really worked.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>path</tt></i>:</span></td>
-<td>the input file path</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a copy of path.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferClose"></a>xmlOutputBufferClose ()</h3>
-<pre class="programlisting">int	xmlOutputBufferClose		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br>
-</pre>
-<p>flushes and close the output I/O channel and free up all the associated resources</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a buffered output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or a negative <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateBuffer"></a>xmlOutputBufferCreateBuffer ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateBuffer	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)<br>
-</pre>
-<p>Create a buffered output for the progressive saving to a <a href="libxml2-tree.html#xmlBuffer">xmlBuffer</a> Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the encoding converter or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateFd"></a>xmlOutputBufferCreateFd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateFd	(int fd, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)<br>
-</pre>
-<p>Create a buffered output for the progressive saving to a file descriptor Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>a file descriptor number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the encoding converter or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateFile"></a>xmlOutputBufferCreateFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateFile	(FILE * file, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)<br>
-</pre>
-<p>Create a buffered output for the progressive saving to a FILE * buffered C I/O Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>a FILE*</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the encoding converter or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateFilename"></a>xmlOutputBufferCreateFilename ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateFilename	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder, <br>							 int compression)<br>
-</pre>
-<p>Create a buffered output for the progressive saving of a file If filename is "-' 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. Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>a C string containing the URI or filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the encoding converter or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>the compression ration (0 none, 9 max).</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateFilenameDefault"></a>xmlOutputBufferCreateFilenameDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a>	xmlOutputBufferCreateFilenameDefault	(<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a> func)<br>
-</pre>
-<p>Registers a callback for URI output file handling</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td>function pointer to the new OutputBufferCreateFilenameFunc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the old value of the registration function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferCreateIO"></a>xmlOutputBufferCreateIO ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>	xmlOutputBufferCreateIO	(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>						 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>						 void * ioctx, <br>						 <a href="libxml2-encoding.html#xmlCharEncodingHandlerPtr">xmlCharEncodingHandlerPtr</a> encoder)<br>
-</pre>
-<p>Create a buffered output for the progressive saving to an I/O handler Consumes @encoder even in error case.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>iowrite</tt></i>:</span></td>
-<td>an I/O write function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoder</tt></i>:</span></td>
-<td>the charset encoding if known</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser output or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferFlush"></a>xmlOutputBufferFlush ()</h3>
-<pre class="programlisting">int	xmlOutputBufferFlush		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br>
-</pre>
-<p>flushes the output I/O channel</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a buffered output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferGetContent"></a>xmlOutputBufferGetContent ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlOutputBufferGetContent	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br>
-</pre>
-<p>Gives a pointer to the data currently held in the output buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the data or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferGetSize"></a>xmlOutputBufferGetSize ()</h3>
-<pre class="programlisting">size_t	xmlOutputBufferGetSize		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br>
-</pre>
-<p>Gives the length of the data currently held in the output buffer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case or error or no data is held, the size otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferWrite"></a>xmlOutputBufferWrite ()</h3>
-<pre class="programlisting">int	xmlOutputBufferWrite		(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 int len, <br>					 const char * data)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a buffered parser output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the size in bytes of the array.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>an char array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars immediately written, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferWriteEscape"></a>xmlOutputBufferWriteEscape ()</h3>
-<pre class="programlisting">int	xmlOutputBufferWriteEscape	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escaping)<br>
-</pre>
-<p>Write the content of the string in the output I/O buffer This routine escapes the characters 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a buffered parser output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a zero terminated UTF-8 string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>escaping</tt></i>:</span></td>
-<td>an optional escaping function (or NULL)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars immediately written, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlOutputBufferWriteString"></a>xmlOutputBufferWriteString ()</h3>
-<pre class="programlisting">int	xmlOutputBufferWriteString	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out, <br>					 const char * str)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>a buffered parser output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a zero terminated C string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars immediately written, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserGetDirectory"></a>xmlParserGetDirectory ()</h3>
-<pre class="programlisting">char *	xmlParserGetDirectory		(const char * filename)<br>
-</pre>
-<p>lookup the directory for that file</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the path to a file</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new allocated string containing the directory, or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateFd"></a>xmlParserInputBufferCreateFd ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateFd	(int fd, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromFd">xmlNewInputFromFd</a>. Create a buffered parser input for the progressive parsing for the input from a file descriptor The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>a file descriptor number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateFile"></a>xmlParserInputBufferCreateFile ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateFile	(FILE * file, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Don't use. Create a buffered parser input for the progressive parsing of a FILE * buffered C I/O The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>a FILE*</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateFilename"></a>xmlParserInputBufferCreateFilename ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateFilename	(const char * URI, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromUrl">xmlNewInputFromUrl</a>. Create a buffered parser input for the progressive parsing of a file Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. Do an encoding check if enc == <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>a C string containing the URI or filename</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateFilenameDefault"></a>xmlParserInputBufferCreateFilenameDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a>	xmlParserInputBufferCreateFilenameDefault	(<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> func)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a> or similar functions. Registers a callback for URI input file handling</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td>function pointer to the new ParserInputBufferCreateFilenameFunc</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the old value of the registration function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateIO"></a>xmlParserInputBufferCreateIO ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateIO	(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>							 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>							 void * ioctx, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromIO">xmlNewInputFromIO</a>. Create a buffered parser input for the progressive parsing for the input from an I/O handler The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateMem"></a>xmlParserInputBufferCreateMem ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateMem	(const char * mem, <br>							 int size, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromMemory">xmlNewInputFromMemory</a>. Create a parser input buffer for parsing from a memory area. This function makes a copy of the whole input buffer. If you are sure that the contents of the buffer will remain valid until the document was parsed, you can avoid the copy by using <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a>. The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>the memory input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the length of the memory block</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known (deprecated)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferCreateStatic"></a>xmlParserInputBufferCreateStatic ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlParserInputBufferCreateStatic	(const char * mem, <br>							 int size, <br>							 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlNewInputFromMemory">xmlNewInputFromMemory</a>. Create a parser input buffer for parsing from a memory area. This functions assumes that the contents of the input buffer remain valid until the document was parsed. Use <a href="libxml2-xmlIO.html#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a> otherwise. The encoding argument is deprecated and should be set to <a href="libxml2-encoding.html#XML_CHAR_ENCODING_NONE">XML_CHAR_ENCODING_NONE</a>. The encoding can be changed with <a href="libxml2-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a> or <a href="libxml2-parserInternals.html#xmlSwitchEncodingName">xmlSwitchEncodingName</a> later on.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>the memory input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the length of the memory block</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>the charset encoding if known</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new parser input or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferGrow"></a>xmlParserInputBufferGrow ()</h3>
-<pre class="programlisting">int	xmlParserInputBufferGrow	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a buffered parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>indicative value of the amount of chars to read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars read and stored in the buffer, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferPush"></a>xmlParserInputBufferPush ()</h3>
-<pre class="programlisting">int	xmlParserInputBufferPush	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len, <br>					 const char * buf)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a buffered parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the size in bytes of the array.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>an char array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars read and stored in the buffer, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserInputBufferRead"></a>xmlParserInputBufferRead ()</h3>
-<pre class="programlisting">int	xmlParserInputBufferRead	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> in, <br>					 int len)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Same as <a href="libxml2-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>in</tt></i>:</span></td>
-<td>a buffered parser input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>indicative value of the amount of chars to read</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of chars read and stored in the buffer, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPopInputCallbacks"></a>xmlPopInputCallbacks ()</h3>
-<pre class="programlisting">int	xmlPopInputCallbacks		(void)<br>
-</pre>
-<p>Clear the top input callback from the input stack. this includes the compiled-in I/O.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of input callback registered or -1 in case of error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlPopOutputCallbacks"></a>xmlPopOutputCallbacks ()</h3>
-<pre class="programlisting">int	xmlPopOutputCallbacks		(void)<br>
-</pre>
-<p>Remove the top output callbacks from the output stack. This includes the compiled-in I/O.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of output callback registered or -1 in case of error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterDefaultInputCallbacks"></a>xmlRegisterDefaultInputCallbacks ()</h3>
-<pre class="programlisting">void	xmlRegisterDefaultInputCallbacks	(void)<br>
-</pre>
-<p>Registers the default compiled-in I/O handlers.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterDefaultOutputCallbacks"></a>xmlRegisterDefaultOutputCallbacks ()</h3>
-<pre class="programlisting">void	xmlRegisterDefaultOutputCallbacks	(void)<br>
-</pre>
-<p>Registers the default compiled-in I/O handlers.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterHTTPPostCallbacks"></a>xmlRegisterHTTPPostCallbacks ()</h3>
-<pre class="programlisting">void	xmlRegisterHTTPPostCallbacks	(void)<br>
-</pre>
-<p>DEPRECATED: Support for HTTP POST has been removed.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterInputCallbacks"></a>xmlRegisterInputCallbacks ()</h3>
-<pre class="programlisting">int	xmlRegisterInputCallbacks	(<a href="libxml2-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a> matchFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputOpenCallback">xmlInputOpenCallback</a> openFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> readFunc, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> closeFunc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-parser.html#xmlCtxtSetResourceLoader">xmlCtxtSetResourceLoader</a> or similar functions. Register a new set of I/O callback for handling parser input.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>matchFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>openFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlInputOpenCallback">xmlInputOpenCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>readFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>closeFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the registered handler number or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegisterOutputCallbacks"></a>xmlRegisterOutputCallbacks ()</h3>
-<pre class="programlisting">int	xmlRegisterOutputCallbacks	(<a href="libxml2-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a> matchFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a> openFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> writeFunc, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> closeFunc)<br>
-</pre>
-<p>Register a new set of I/O callback for handling output.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>matchFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>openFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>writeFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>closeFunc</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the registered handler number or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefOutputBufferCreateFilenameDefault"></a>xmlThrDefOutputBufferCreateFilenameDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a>	xmlThrDefOutputBufferCreateFilenameDefault	(<a href="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a> func)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefParserInputBufferCreateFilenameDefault"></a>xmlThrDefParserInputBufferCreateFilenameDefault ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a>	xmlThrDefParserInputBufferCreateFilenameDefault	(<a href="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a> func)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>func</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlautomata.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlautomata.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlautomata.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlautomata.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,696 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlautomata: API to build regexp automata</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlIO.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlerror.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlautomata</span></h2>
-<p>xmlautomata - API to build regexp automata</p>
-<p>the API to build regexp automata </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlAutomata <a href="#xmlAutomata">xmlAutomata</a>;
-typedef <a href="libxml2-xmlautomata.html#xmlAutomata">xmlAutomata</a> * <a href="#xmlAutomataPtr">xmlAutomataPtr</a>;
-typedef struct _xmlAutomataState <a href="#xmlAutomataState">xmlAutomataState</a>;
-typedef <a href="libxml2-xmlautomata.html#xmlAutomataState">xmlAutomataState</a> * <a href="#xmlAutomataStatePtr">xmlAutomataStatePtr</a>;
-<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	<a href="#xmlAutomataCompile">xmlAutomataCompile</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataGetInitState">xmlAutomataGetInitState</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am);
-int	<a href="#xmlAutomataIsDeterminist">xmlAutomataIsDeterminist</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 int lax);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 int min, <br>							 int max, <br>							 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 int min, <br>							 int max, <br>							 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 int counter);
-int	<a href="#xmlAutomataNewCounter">xmlAutomataNewCounter</a>		(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>					 int min, <br>					 int max);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 int counter);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>						 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>						 int min, <br>						 int max, <br>						 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 int min, <br>							 int max, <br>							 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewState">xmlAutomataNewState</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewTransition">xmlAutomataNewTransition</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 void * data);
-<a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	<a href="#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 void * data);
-int	<a href="#xmlAutomataSetFinalState">xmlAutomataSetFinalState</a>	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>					 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> state);
-void	<a href="#xmlFreeAutomata">xmlFreeAutomata</a>			(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am);
-<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a>	<a href="#xmlNewAutomata">xmlNewAutomata</a>		(void);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomata">Structure </a>xmlAutomata</h3>
-<pre class="programlisting">struct _xmlAutomata {
-The content of this structure is not made public by the API.
-} xmlAutomata;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataPtr">Typedef </a>xmlAutomataPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomata">xmlAutomata</a> * xmlAutomataPtr;
-</pre>
-<p>A libxml automata description, It can be compiled into a regexp</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataState">Structure </a>xmlAutomataState</h3>
-<pre class="programlisting">struct _xmlAutomataState {
-The content of this structure is not made public by the API.
-} xmlAutomataState;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataStatePtr">Typedef </a>xmlAutomataStatePtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataState">xmlAutomataState</a> * xmlAutomataStatePtr;
-</pre>
-<p>A state int the automata description,</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataCompile"></a>xmlAutomataCompile ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	xmlAutomataCompile	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)<br>
-</pre>
-<p>Compile the automata into a Reg Exp ready for being executed. The automata should be free after this point.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the compiled regexp or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataGetInitState"></a>xmlAutomataGetInitState ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataGetInitState	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)<br>
-</pre>
-<p>Initial state lookup</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the initial state of the automata</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataIsDeterminist"></a>xmlAutomataIsDeterminist ()</h3>
-<pre class="programlisting">int	xmlAutomataIsDeterminist	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)<br>
-</pre>
-<p>Checks if an automata is determinist.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if not, and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewAllTrans"></a>xmlAutomataNewAllTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewAllTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 int lax)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>lax</tt></i>:</span></td>
-<td>allow to transition if not all all transitions have been activated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewCountTrans"></a>xmlAutomataNewCountTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewCountTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 int min, <br>							 int max, <br>							 void * data)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>min</tt></i>:</span></td>
-<td>the minimum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</tt></i>:</span></td>
-<td>the maximum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewCountTrans2"></a>xmlAutomataNewCountTrans2 ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewCountTrans2	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 int min, <br>							 int max, <br>							 void * data)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token2</tt></i>:</span></td>
-<td>the second input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>min</tt></i>:</span></td>
-<td>the minimum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</tt></i>:</span></td>
-<td>the maximum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewCountedTrans"></a>xmlAutomataNewCountedTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewCountedTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 int counter)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>counter</tt></i>:</span></td>
-<td>the counter associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewCounter"></a>xmlAutomataNewCounter ()</h3>
-<pre class="programlisting">int	xmlAutomataNewCounter		(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>					 int min, <br>					 int max)<br>
-</pre>
-<p>Create a new counter</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>min</tt></i>:</span></td>
-<td>the minimal value on the counter</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</tt></i>:</span></td>
-<td>the maximal value on the counter</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the counter number or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewCounterTrans"></a>xmlAutomataNewCounterTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewCounterTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 int counter)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>counter</tt></i>:</span></td>
-<td>the counter associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewEpsilon"></a>xmlAutomataNewEpsilon ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewEpsilon	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewNegTrans"></a>xmlAutomataNewNegTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewNegTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>						 void * data)<br>
-</pre>
-<p>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 any value except (@token,@token2) Note that if @token2 is not NULL, then (X, NULL) won't match to follow # the semantic of XSD ##other</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the first input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token2</tt></i>:</span></td>
-<td>the second input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data passed to the callback function if the transition is activated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewOnceTrans"></a>xmlAutomataNewOnceTrans ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewOnceTrans	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>						 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>						 int min, <br>						 int max, <br>						 void * data)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>min</tt></i>:</span></td>
-<td>the minimum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</tt></i>:</span></td>
-<td>the maximum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewOnceTrans2"></a>xmlAutomataNewOnceTrans2 ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewOnceTrans2	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 int min, <br>							 int max, <br>							 void * data)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token2</tt></i>:</span></td>
-<td>the second input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>min</tt></i>:</span></td>
-<td>the minimum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>max</tt></i>:</span></td>
-<td>the maximum successive occurrences of token</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewState"></a>xmlAutomataNewState ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewState	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)<br>
-</pre>
-<p>Create a new disconnected state in the automata</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewTransition"></a>xmlAutomataNewTransition ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewTransition	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 void * data)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data passed to the callback function if the transition is activated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataNewTransition2"></a>xmlAutomataNewTransition2 ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a>	xmlAutomataNewTransition2	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> from, <br>							 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> to, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token2, <br>							 void * data)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>the starting point of the transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>the target point of the transition or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the first input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token2</tt></i>:</span></td>
-<td>the second input string associated to that transition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data passed to the callback function if the transition is activated</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the target state or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlAutomataSetFinalState"></a>xmlAutomataSetFinalState ()</h3>
-<pre class="programlisting">int	xmlAutomataSetFinalState	(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am, <br>					 <a href="libxml2-xmlautomata.html#xmlAutomataStatePtr">xmlAutomataStatePtr</a> state)<br>
-</pre>
-<p>Makes that state a final state</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>state</tt></i>:</span></td>
-<td>a state in this automata</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeAutomata"></a>xmlFreeAutomata ()</h3>
-<pre class="programlisting">void	xmlFreeAutomata			(<a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a> am)<br>
-</pre>
-<p>Free an automata</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>am</tt></i>:</span></td>
-<td>an automata</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewAutomata"></a>xmlNewAutomata ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlautomata.html#xmlAutomataPtr">xmlAutomataPtr</a>	xmlNewAutomata		(void)<br>
-</pre>
-<p>Create a new automata</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new object or NULL in case of failure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlerror.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlerror.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlerror.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlerror.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1286 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlerror: error handling</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlautomata.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlexports.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlerror</span></h2>
-<p>xmlerror - error handling</p>
-<p>the API used to report errors </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a>;
-typedef struct _xmlError <a href="#xmlError">xmlError</a>;
-typedef enum <a href="#xmlErrorDomain">xmlErrorDomain</a>;
-typedef enum <a href="#xmlErrorLevel">xmlErrorLevel</a>;
-typedef <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * <a href="#xmlErrorPtr">xmlErrorPtr</a>;
-typedef enum <a href="#xmlParserErrors">xmlParserErrors</a>;
-int	<a href="#xmlCopyError">xmlCopyError</a>			(const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * from, <br>					 <a href="libxml2-xmlerror.html#xmlErrorPtr">xmlErrorPtr</a> to);
-const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	<a href="#xmlCtxtGetLastError">xmlCtxtGetLastError</a>	(void * ctx);
-void	<a href="#xmlCtxtResetLastError">xmlCtxtResetLastError</a>		(void * ctx);
-void	<a href="#xmlFormatError">xmlFormatError</a>			(const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * err, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> channel, <br>					 void * data);
-typedef void <a href="#xmlGenericErrorFunc">xmlGenericErrorFunc</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	<a href="#xmlGetLastError">xmlGetLastError</a>	(void);
-void	<a href="#xmlParserError">xmlParserError</a>			(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-void	<a href="#xmlParserPrintFileContext">xmlParserPrintFileContext</a>	(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-void	<a href="#xmlParserPrintFileInfo">xmlParserPrintFileInfo</a>		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input);
-void	<a href="#xmlParserValidityError">xmlParserValidityError</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-void	<a href="#xmlParserValidityWarning">xmlParserValidityWarning</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-void	<a href="#xmlParserWarning">xmlParserWarning</a>		(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-void	<a href="#xmlResetError">xmlResetError</a>			(<a href="libxml2-xmlerror.html#xmlErrorPtr">xmlErrorPtr</a> err);
-void	<a href="#xmlResetLastError">xmlResetLastError</a>		(void);
-void	<a href="#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a>		(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> handler);
-void	<a href="#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a>	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler);
-typedef void <a href="#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a>		(void * userData, <br>					 const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * error);
-void	<a href="#xmlThrDefSetGenericErrorFunc">xmlThrDefSetGenericErrorFunc</a>	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> handler);
-void	<a href="#xmlThrDefSetStructuredErrorFunc">xmlThrDefSetStructuredErrorFunc</a>	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="initGenericErrorDefaultFunc">Macro </a>initGenericErrorDefaultFunc</h3>
-<pre class="programlisting">#define <a href="#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlError">Structure </a>xmlError</h3>
-<pre class="programlisting">struct _xmlError {
-    int	domain
-    int	code
-    char *	message
-    <a href="libxml2-xmlerror.html#xmlErrorLevel">xmlErrorLevel</a>	level
-    char *	file
-    int	line
-    char *	str1
-    char *	str2
-    char *	str3
-    int	int1
-    int	int2
-    void *	ctxt
-    void *	node
-} xmlError;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlErrorDomain">Enum </a>xmlErrorDomain</h3>
-<pre class="programlisting">enum <a href="#xmlErrorDomain">xmlErrorDomain</a> {
-    <a name="XML_FROM_NONE">XML_FROM_NONE</a> = 0
-    <a name="XML_FROM_PARSER">XML_FROM_PARSER</a> = 1 /* The XML parser */
-    <a name="XML_FROM_TREE">XML_FROM_TREE</a> = 2 /* The tree module */
-    <a name="XML_FROM_NAMESPACE">XML_FROM_NAMESPACE</a> = 3 /* The XML Namespace module */
-    <a name="XML_FROM_DTD">XML_FROM_DTD</a> = 4 /* The XML DTD validation with parser contex */
-    <a name="XML_FROM_HTML">XML_FROM_HTML</a> = 5 /* The HTML parser */
-    <a name="XML_FROM_MEMORY">XML_FROM_MEMORY</a> = 6 /* The memory allocator */
-    <a name="XML_FROM_OUTPUT">XML_FROM_OUTPUT</a> = 7 /* The serialization code */
-    <a name="XML_FROM_IO">XML_FROM_IO</a> = 8 /* The Input/Output stack */
-    <a name="XML_FROM_FTP">XML_FROM_FTP</a> = 9 /* The FTP module */
-    <a name="XML_FROM_HTTP">XML_FROM_HTTP</a> = 10 /* The HTTP module */
-    <a name="XML_FROM_XINCLUDE">XML_FROM_XINCLUDE</a> = 11 /* The XInclude processing */
-    <a name="XML_FROM_XPATH">XML_FROM_XPATH</a> = 12 /* The XPath module */
-    <a name="XML_FROM_XPOINTER">XML_FROM_XPOINTER</a> = 13 /* The XPointer module */
-    <a name="XML_FROM_REGEXP">XML_FROM_REGEXP</a> = 14 /* The regular expressions module */
-    <a name="XML_FROM_DATATYPE">XML_FROM_DATATYPE</a> = 15 /* The W3C XML Schemas Datatype module */
-    <a name="XML_FROM_SCHEMASP">XML_FROM_SCHEMASP</a> = 16 /* The W3C XML Schemas parser module */
-    <a name="XML_FROM_SCHEMASV">XML_FROM_SCHEMASV</a> = 17 /* The W3C XML Schemas validation module */
-    <a name="XML_FROM_RELAXNGP">XML_FROM_RELAXNGP</a> = 18 /* The Relax-NG parser module */
-    <a name="XML_FROM_RELAXNGV">XML_FROM_RELAXNGV</a> = 19 /* The Relax-NG validator module */
-    <a name="XML_FROM_CATALOG">XML_FROM_CATALOG</a> = 20 /* The Catalog module */
-    <a name="XML_FROM_C14N">XML_FROM_C14N</a> = 21 /* The Canonicalization module */
-    <a name="XML_FROM_XSLT">XML_FROM_XSLT</a> = 22 /* The XSLT engine from libxslt */
-    <a name="XML_FROM_VALID">XML_FROM_VALID</a> = 23 /* The XML DTD validation with valid context */
-    <a name="XML_FROM_CHECK">XML_FROM_CHECK</a> = 24 /* The error checking module */
-    <a name="XML_FROM_WRITER">XML_FROM_WRITER</a> = 25 /* The xmlwriter module */
-    <a name="XML_FROM_MODULE">XML_FROM_MODULE</a> = 26 /* The dynamically loaded module modul */
-    <a name="XML_FROM_I18N">XML_FROM_I18N</a> = 27 /* The module handling character conversion */
-    <a name="XML_FROM_SCHEMATRONV">XML_FROM_SCHEMATRONV</a> = 28 /* The Schematron validator module */
-    <a name="XML_FROM_BUFFER">XML_FROM_BUFFER</a> = 29 /* The buffers module */
-    <a name="XML_FROM_URI">XML_FROM_URI</a> = 30 /*  The URI module */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlErrorLevel">Enum </a>xmlErrorLevel</h3>
-<pre class="programlisting">enum <a href="#xmlErrorLevel">xmlErrorLevel</a> {
-    <a name="XML_ERR_NONE">XML_ERR_NONE</a> = 0
-    <a name="XML_ERR_WARNING">XML_ERR_WARNING</a> = 1 /* A simple warning */
-    <a name="XML_ERR_ERROR">XML_ERR_ERROR</a> = 2 /* A recoverable error */
-    <a name="XML_ERR_FATAL">XML_ERR_FATAL</a> = 3 /*  A fatal error */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlErrorPtr">Typedef </a>xmlErrorPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlError">xmlError</a> * xmlErrorPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserErrors">Enum </a>xmlParserErrors</h3>
-<pre class="programlisting">enum <a href="#xmlParserErrors">xmlParserErrors</a> {
-    <a name="XML_ERR_OK">XML_ERR_OK</a> = 0
-    <a name="XML_ERR_INTERNAL_ERROR">XML_ERR_INTERNAL_ERROR</a> = 1 /* 1 */
-    <a name="XML_ERR_NO_MEMORY">XML_ERR_NO_MEMORY</a> = 2 /* 2 */
-    <a name="XML_ERR_DOCUMENT_START">XML_ERR_DOCUMENT_START</a> = 3 /* 3 */
-    <a name="XML_ERR_DOCUMENT_EMPTY">XML_ERR_DOCUMENT_EMPTY</a> = 4 /* 4 */
-    <a name="XML_ERR_DOCUMENT_END">XML_ERR_DOCUMENT_END</a> = 5 /* 5 */
-    <a name="XML_ERR_INVALID_HEX_CHARREF">XML_ERR_INVALID_HEX_CHARREF</a> = 6 /* 6 */
-    <a name="XML_ERR_INVALID_DEC_CHARREF">XML_ERR_INVALID_DEC_CHARREF</a> = 7 /* 7 */
-    <a name="XML_ERR_INVALID_CHARREF">XML_ERR_INVALID_CHARREF</a> = 8 /* 8 */
-    <a name="XML_ERR_INVALID_CHAR">XML_ERR_INVALID_CHAR</a> = 9 /* 9 */
-    <a name="XML_ERR_CHARREF_AT_EOF">XML_ERR_CHARREF_AT_EOF</a> = 10 /* 10 */
-    <a name="XML_ERR_CHARREF_IN_PROLOG">XML_ERR_CHARREF_IN_PROLOG</a> = 11 /* 11 */
-    <a name="XML_ERR_CHARREF_IN_EPILOG">XML_ERR_CHARREF_IN_EPILOG</a> = 12 /* 12 */
-    <a name="XML_ERR_CHARREF_IN_DTD">XML_ERR_CHARREF_IN_DTD</a> = 13 /* 13 */
-    <a name="XML_ERR_ENTITYREF_AT_EOF">XML_ERR_ENTITYREF_AT_EOF</a> = 14 /* 14 */
-    <a name="XML_ERR_ENTITYREF_IN_PROLOG">XML_ERR_ENTITYREF_IN_PROLOG</a> = 15 /* 15 */
-    <a name="XML_ERR_ENTITYREF_IN_EPILOG">XML_ERR_ENTITYREF_IN_EPILOG</a> = 16 /* 16 */
-    <a name="XML_ERR_ENTITYREF_IN_DTD">XML_ERR_ENTITYREF_IN_DTD</a> = 17 /* 17 */
-    <a name="XML_ERR_PEREF_AT_EOF">XML_ERR_PEREF_AT_EOF</a> = 18 /* 18 */
-    <a name="XML_ERR_PEREF_IN_PROLOG">XML_ERR_PEREF_IN_PROLOG</a> = 19 /* 19 */
-    <a name="XML_ERR_PEREF_IN_EPILOG">XML_ERR_PEREF_IN_EPILOG</a> = 20 /* 20 */
-    <a name="XML_ERR_PEREF_IN_INT_SUBSET">XML_ERR_PEREF_IN_INT_SUBSET</a> = 21 /* 21 */
-    <a name="XML_ERR_ENTITYREF_NO_NAME">XML_ERR_ENTITYREF_NO_NAME</a> = 22 /* 22 */
-    <a name="XML_ERR_ENTITYREF_SEMICOL_MISSING">XML_ERR_ENTITYREF_SEMICOL_MISSING</a> = 23 /* 23 */
-    <a name="XML_ERR_PEREF_NO_NAME">XML_ERR_PEREF_NO_NAME</a> = 24 /* 24 */
-    <a name="XML_ERR_PEREF_SEMICOL_MISSING">XML_ERR_PEREF_SEMICOL_MISSING</a> = 25 /* 25 */
-    <a name="XML_ERR_UNDECLARED_ENTITY">XML_ERR_UNDECLARED_ENTITY</a> = 26 /* 26 */
-    <a name="XML_WAR_UNDECLARED_ENTITY">XML_WAR_UNDECLARED_ENTITY</a> = 27 /* 27 */
-    <a name="XML_ERR_UNPARSED_ENTITY">XML_ERR_UNPARSED_ENTITY</a> = 28 /* 28 */
-    <a name="XML_ERR_ENTITY_IS_EXTERNAL">XML_ERR_ENTITY_IS_EXTERNAL</a> = 29 /* 29 */
-    <a name="XML_ERR_ENTITY_IS_PARAMETER">XML_ERR_ENTITY_IS_PARAMETER</a> = 30 /* 30 */
-    <a name="XML_ERR_UNKNOWN_ENCODING">XML_ERR_UNKNOWN_ENCODING</a> = 31 /* 31 */
-    <a name="XML_ERR_UNSUPPORTED_ENCODING">XML_ERR_UNSUPPORTED_ENCODING</a> = 32 /* 32 */
-    <a name="XML_ERR_STRING_NOT_STARTED">XML_ERR_STRING_NOT_STARTED</a> = 33 /* 33 */
-    <a name="XML_ERR_STRING_NOT_CLOSED">XML_ERR_STRING_NOT_CLOSED</a> = 34 /* 34 */
-    <a name="XML_ERR_NS_DECL_ERROR">XML_ERR_NS_DECL_ERROR</a> = 35 /* 35 */
-    <a name="XML_ERR_ENTITY_NOT_STARTED">XML_ERR_ENTITY_NOT_STARTED</a> = 36 /* 36 */
-    <a name="XML_ERR_ENTITY_NOT_FINISHED">XML_ERR_ENTITY_NOT_FINISHED</a> = 37 /* 37 */
-    <a name="XML_ERR_LT_IN_ATTRIBUTE">XML_ERR_LT_IN_ATTRIBUTE</a> = 38 /* 38 */
-    <a name="XML_ERR_ATTRIBUTE_NOT_STARTED">XML_ERR_ATTRIBUTE_NOT_STARTED</a> = 39 /* 39 */
-    <a name="XML_ERR_ATTRIBUTE_NOT_FINISHED">XML_ERR_ATTRIBUTE_NOT_FINISHED</a> = 40 /* 40 */
-    <a name="XML_ERR_ATTRIBUTE_WITHOUT_VALUE">XML_ERR_ATTRIBUTE_WITHOUT_VALUE</a> = 41 /* 41 */
-    <a name="XML_ERR_ATTRIBUTE_REDEFINED">XML_ERR_ATTRIBUTE_REDEFINED</a> = 42 /* 42 */
-    <a name="XML_ERR_LITERAL_NOT_STARTED">XML_ERR_LITERAL_NOT_STARTED</a> = 43 /* 43 */
-    <a name="XML_ERR_LITERAL_NOT_FINISHED">XML_ERR_LITERAL_NOT_FINISHED</a> = 44 /* 44 */
-    <a name="XML_ERR_COMMENT_NOT_FINISHED">XML_ERR_COMMENT_NOT_FINISHED</a> = 45 /* 45 */
-    <a name="XML_ERR_PI_NOT_STARTED">XML_ERR_PI_NOT_STARTED</a> = 46 /* 46 */
-    <a name="XML_ERR_PI_NOT_FINISHED">XML_ERR_PI_NOT_FINISHED</a> = 47 /* 47 */
-    <a name="XML_ERR_NOTATION_NOT_STARTED">XML_ERR_NOTATION_NOT_STARTED</a> = 48 /* 48 */
-    <a name="XML_ERR_NOTATION_NOT_FINISHED">XML_ERR_NOTATION_NOT_FINISHED</a> = 49 /* 49 */
-    <a name="XML_ERR_ATTLIST_NOT_STARTED">XML_ERR_ATTLIST_NOT_STARTED</a> = 50 /* 50 */
-    <a name="XML_ERR_ATTLIST_NOT_FINISHED">XML_ERR_ATTLIST_NOT_FINISHED</a> = 51 /* 51 */
-    <a name="XML_ERR_MIXED_NOT_STARTED">XML_ERR_MIXED_NOT_STARTED</a> = 52 /* 52 */
-    <a name="XML_ERR_MIXED_NOT_FINISHED">XML_ERR_MIXED_NOT_FINISHED</a> = 53 /* 53 */
-    <a name="XML_ERR_ELEMCONTENT_NOT_STARTED">XML_ERR_ELEMCONTENT_NOT_STARTED</a> = 54 /* 54 */
-    <a name="XML_ERR_ELEMCONTENT_NOT_FINISHED">XML_ERR_ELEMCONTENT_NOT_FINISHED</a> = 55 /* 55 */
-    <a name="XML_ERR_XMLDECL_NOT_STARTED">XML_ERR_XMLDECL_NOT_STARTED</a> = 56 /* 56 */
-    <a name="XML_ERR_XMLDECL_NOT_FINISHED">XML_ERR_XMLDECL_NOT_FINISHED</a> = 57 /* 57 */
-    <a name="XML_ERR_CONDSEC_NOT_STARTED">XML_ERR_CONDSEC_NOT_STARTED</a> = 58 /* 58 */
-    <a name="XML_ERR_CONDSEC_NOT_FINISHED">XML_ERR_CONDSEC_NOT_FINISHED</a> = 59 /* 59 */
-    <a name="XML_ERR_EXT_SUBSET_NOT_FINISHED">XML_ERR_EXT_SUBSET_NOT_FINISHED</a> = 60 /* 60 */
-    <a name="XML_ERR_DOCTYPE_NOT_FINISHED">XML_ERR_DOCTYPE_NOT_FINISHED</a> = 61 /* 61 */
-    <a name="XML_ERR_MISPLACED_CDATA_END">XML_ERR_MISPLACED_CDATA_END</a> = 62 /* 62 */
-    <a name="XML_ERR_CDATA_NOT_FINISHED">XML_ERR_CDATA_NOT_FINISHED</a> = 63 /* 63 */
-    <a name="XML_ERR_RESERVED_XML_NAME">XML_ERR_RESERVED_XML_NAME</a> = 64 /* 64 */
-    <a name="XML_ERR_SPACE_REQUIRED">XML_ERR_SPACE_REQUIRED</a> = 65 /* 65 */
-    <a name="XML_ERR_SEPARATOR_REQUIRED">XML_ERR_SEPARATOR_REQUIRED</a> = 66 /* 66 */
-    <a name="XML_ERR_NMTOKEN_REQUIRED">XML_ERR_NMTOKEN_REQUIRED</a> = 67 /* 67 */
-    <a name="XML_ERR_NAME_REQUIRED">XML_ERR_NAME_REQUIRED</a> = 68 /* 68 */
-    <a name="XML_ERR_PCDATA_REQUIRED">XML_ERR_PCDATA_REQUIRED</a> = 69 /* 69 */
-    <a name="XML_ERR_URI_REQUIRED">XML_ERR_URI_REQUIRED</a> = 70 /* 70 */
-    <a name="XML_ERR_PUBID_REQUIRED">XML_ERR_PUBID_REQUIRED</a> = 71 /* 71 */
-    <a name="XML_ERR_LT_REQUIRED">XML_ERR_LT_REQUIRED</a> = 72 /* 72 */
-    <a name="XML_ERR_GT_REQUIRED">XML_ERR_GT_REQUIRED</a> = 73 /* 73 */
-    <a name="XML_ERR_LTSLASH_REQUIRED">XML_ERR_LTSLASH_REQUIRED</a> = 74 /* 74 */
-    <a name="XML_ERR_EQUAL_REQUIRED">XML_ERR_EQUAL_REQUIRED</a> = 75 /* 75 */
-    <a name="XML_ERR_TAG_NAME_MISMATCH">XML_ERR_TAG_NAME_MISMATCH</a> = 76 /* 76 */
-    <a name="XML_ERR_TAG_NOT_FINISHED">XML_ERR_TAG_NOT_FINISHED</a> = 77 /* 77 */
-    <a name="XML_ERR_STANDALONE_VALUE">XML_ERR_STANDALONE_VALUE</a> = 78 /* 78 */
-    <a name="XML_ERR_ENCODING_NAME">XML_ERR_ENCODING_NAME</a> = 79 /* 79 */
-    <a name="XML_ERR_HYPHEN_IN_COMMENT">XML_ERR_HYPHEN_IN_COMMENT</a> = 80 /* 80 */
-    <a name="XML_ERR_INVALID_ENCODING">XML_ERR_INVALID_ENCODING</a> = 81 /* 81 */
-    <a name="XML_ERR_EXT_ENTITY_STANDALONE">XML_ERR_EXT_ENTITY_STANDALONE</a> = 82 /* 82 */
-    <a name="XML_ERR_CONDSEC_INVALID">XML_ERR_CONDSEC_INVALID</a> = 83 /* 83 */
-    <a name="XML_ERR_VALUE_REQUIRED">XML_ERR_VALUE_REQUIRED</a> = 84 /* 84 */
-    <a name="XML_ERR_NOT_WELL_BALANCED">XML_ERR_NOT_WELL_BALANCED</a> = 85 /* 85 */
-    <a name="XML_ERR_EXTRA_CONTENT">XML_ERR_EXTRA_CONTENT</a> = 86 /* 86 */
-    <a name="XML_ERR_ENTITY_CHAR_ERROR">XML_ERR_ENTITY_CHAR_ERROR</a> = 87 /* 87 */
-    <a name="XML_ERR_ENTITY_PE_INTERNAL">XML_ERR_ENTITY_PE_INTERNAL</a> = 88 /* 88 */
-    <a name="XML_ERR_ENTITY_LOOP">XML_ERR_ENTITY_LOOP</a> = 89 /* 89 */
-    <a name="XML_ERR_ENTITY_BOUNDARY">XML_ERR_ENTITY_BOUNDARY</a> = 90 /* 90 */
-    <a name="XML_ERR_INVALID_URI">XML_ERR_INVALID_URI</a> = 91 /* 91 */
-    <a name="XML_ERR_URI_FRAGMENT">XML_ERR_URI_FRAGMENT</a> = 92 /* 92 */
-    <a name="XML_WAR_CATALOG_PI">XML_WAR_CATALOG_PI</a> = 93 /* 93 */
-    <a name="XML_ERR_NO_DTD">XML_ERR_NO_DTD</a> = 94 /* 94 */
-    <a name="XML_ERR_CONDSEC_INVALID_KEYWORD">XML_ERR_CONDSEC_INVALID_KEYWORD</a> = 95 /* 95 */
-    <a name="XML_ERR_VERSION_MISSING">XML_ERR_VERSION_MISSING</a> = 96 /* 96 */
-    <a name="XML_WAR_UNKNOWN_VERSION">XML_WAR_UNKNOWN_VERSION</a> = 97 /* 97 */
-    <a name="XML_WAR_LANG_VALUE">XML_WAR_LANG_VALUE</a> = 98 /* 98 */
-    <a name="XML_WAR_NS_URI">XML_WAR_NS_URI</a> = 99 /* 99 */
-    <a name="XML_WAR_NS_URI_RELATIVE">XML_WAR_NS_URI_RELATIVE</a> = 100 /* 100 */
-    <a name="XML_ERR_MISSING_ENCODING">XML_ERR_MISSING_ENCODING</a> = 101 /* 101 */
-    <a name="XML_WAR_SPACE_VALUE">XML_WAR_SPACE_VALUE</a> = 102 /* 102 */
-    <a name="XML_ERR_NOT_STANDALONE">XML_ERR_NOT_STANDALONE</a> = 103 /* 103 */
-    <a name="XML_ERR_ENTITY_PROCESSING">XML_ERR_ENTITY_PROCESSING</a> = 104 /* 104 */
-    <a name="XML_ERR_NOTATION_PROCESSING">XML_ERR_NOTATION_PROCESSING</a> = 105 /* 105 */
-    <a name="XML_WAR_NS_COLUMN">XML_WAR_NS_COLUMN</a> = 106 /* 106 */
-    <a name="XML_WAR_ENTITY_REDEFINED">XML_WAR_ENTITY_REDEFINED</a> = 107 /* 107 */
-    <a name="XML_ERR_UNKNOWN_VERSION">XML_ERR_UNKNOWN_VERSION</a> = 108 /* 108 */
-    <a name="XML_ERR_VERSION_MISMATCH">XML_ERR_VERSION_MISMATCH</a> = 109 /* 109 */
-    <a name="XML_ERR_NAME_TOO_LONG">XML_ERR_NAME_TOO_LONG</a> = 110 /* 110 */
-    <a name="XML_ERR_USER_STOP">XML_ERR_USER_STOP</a> = 111 /* 111 */
-    <a name="XML_ERR_COMMENT_ABRUPTLY_ENDED">XML_ERR_COMMENT_ABRUPTLY_ENDED</a> = 112 /* 112 */
-    <a name="XML_WAR_ENCODING_MISMATCH">XML_WAR_ENCODING_MISMATCH</a> = 113 /* 113 */
-    <a name="XML_ERR_RESOURCE_LIMIT">XML_ERR_RESOURCE_LIMIT</a> = 114 /* 114 */
-    <a name="XML_ERR_ARGUMENT">XML_ERR_ARGUMENT</a> = 115 /* 115 */
-    <a name="XML_ERR_SYSTEM">XML_ERR_SYSTEM</a> = 116 /* 116 */
-    <a name="XML_ERR_REDECL_PREDEF_ENTITY">XML_ERR_REDECL_PREDEF_ENTITY</a> = 117 /* 117 */
-    <a name="XML_ERR_INT_SUBSET_NOT_FINISHED">XML_ERR_INT_SUBSET_NOT_FINISHED</a> = 118 /* 118 */
-    <a name="XML_NS_ERR_XML_NAMESPACE">XML_NS_ERR_XML_NAMESPACE</a> = 200
-    <a name="XML_NS_ERR_UNDEFINED_NAMESPACE">XML_NS_ERR_UNDEFINED_NAMESPACE</a> = 201 /* 201 */
-    <a name="XML_NS_ERR_QNAME">XML_NS_ERR_QNAME</a> = 202 /* 202 */
-    <a name="XML_NS_ERR_ATTRIBUTE_REDEFINED">XML_NS_ERR_ATTRIBUTE_REDEFINED</a> = 203 /* 203 */
-    <a name="XML_NS_ERR_EMPTY">XML_NS_ERR_EMPTY</a> = 204 /* 204 */
-    <a name="XML_NS_ERR_COLON">XML_NS_ERR_COLON</a> = 205 /* 205 */
-    <a name="XML_DTD_ATTRIBUTE_DEFAULT">XML_DTD_ATTRIBUTE_DEFAULT</a> = 500
-    <a name="XML_DTD_ATTRIBUTE_REDEFINED">XML_DTD_ATTRIBUTE_REDEFINED</a> = 501 /* 501 */
-    <a name="XML_DTD_ATTRIBUTE_VALUE">XML_DTD_ATTRIBUTE_VALUE</a> = 502 /* 502 */
-    <a name="XML_DTD_CONTENT_ERROR">XML_DTD_CONTENT_ERROR</a> = 503 /* 503 */
-    <a name="XML_DTD_CONTENT_MODEL">XML_DTD_CONTENT_MODEL</a> = 504 /* 504 */
-    <a name="XML_DTD_CONTENT_NOT_DETERMINIST">XML_DTD_CONTENT_NOT_DETERMINIST</a> = 505 /* 505 */
-    <a name="XML_DTD_DIFFERENT_PREFIX">XML_DTD_DIFFERENT_PREFIX</a> = 506 /* 506 */
-    <a name="XML_DTD_ELEM_DEFAULT_NAMESPACE">XML_DTD_ELEM_DEFAULT_NAMESPACE</a> = 507 /* 507 */
-    <a name="XML_DTD_ELEM_NAMESPACE">XML_DTD_ELEM_NAMESPACE</a> = 508 /* 508 */
-    <a name="XML_DTD_ELEM_REDEFINED">XML_DTD_ELEM_REDEFINED</a> = 509 /* 509 */
-    <a name="XML_DTD_EMPTY_NOTATION">XML_DTD_EMPTY_NOTATION</a> = 510 /* 510 */
-    <a name="XML_DTD_ENTITY_TYPE">XML_DTD_ENTITY_TYPE</a> = 511 /* 511 */
-    <a name="XML_DTD_ID_FIXED">XML_DTD_ID_FIXED</a> = 512 /* 512 */
-    <a name="XML_DTD_ID_REDEFINED">XML_DTD_ID_REDEFINED</a> = 513 /* 513 */
-    <a name="XML_DTD_ID_SUBSET">XML_DTD_ID_SUBSET</a> = 514 /* 514 */
-    <a name="XML_DTD_INVALID_CHILD">XML_DTD_INVALID_CHILD</a> = 515 /* 515 */
-    <a name="XML_DTD_INVALID_DEFAULT">XML_DTD_INVALID_DEFAULT</a> = 516 /* 516 */
-    <a name="XML_DTD_LOAD_ERROR">XML_DTD_LOAD_ERROR</a> = 517 /* 517 */
-    <a name="XML_DTD_MISSING_ATTRIBUTE">XML_DTD_MISSING_ATTRIBUTE</a> = 518 /* 518 */
-    <a name="XML_DTD_MIXED_CORRUPT">XML_DTD_MIXED_CORRUPT</a> = 519 /* 519 */
-    <a name="XML_DTD_MULTIPLE_ID">XML_DTD_MULTIPLE_ID</a> = 520 /* 520 */
-    <a name="XML_DTD_NO_DOC">XML_DTD_NO_DOC</a> = 521 /* 521 */
-    <a name="XML_DTD_NO_DTD">XML_DTD_NO_DTD</a> = 522 /* 522 */
-    <a name="XML_DTD_NO_ELEM_NAME">XML_DTD_NO_ELEM_NAME</a> = 523 /* 523 */
-    <a name="XML_DTD_NO_PREFIX">XML_DTD_NO_PREFIX</a> = 524 /* 524 */
-    <a name="XML_DTD_NO_ROOT">XML_DTD_NO_ROOT</a> = 525 /* 525 */
-    <a name="XML_DTD_NOTATION_REDEFINED">XML_DTD_NOTATION_REDEFINED</a> = 526 /* 526 */
-    <a name="XML_DTD_NOTATION_VALUE">XML_DTD_NOTATION_VALUE</a> = 527 /* 527 */
-    <a name="XML_DTD_NOT_EMPTY">XML_DTD_NOT_EMPTY</a> = 528 /* 528 */
-    <a name="XML_DTD_NOT_PCDATA">XML_DTD_NOT_PCDATA</a> = 529 /* 529 */
-    <a name="XML_DTD_NOT_STANDALONE">XML_DTD_NOT_STANDALONE</a> = 530 /* 530 */
-    <a name="XML_DTD_ROOT_NAME">XML_DTD_ROOT_NAME</a> = 531 /* 531 */
-    <a name="XML_DTD_STANDALONE_WHITE_SPACE">XML_DTD_STANDALONE_WHITE_SPACE</a> = 532 /* 532 */
-    <a name="XML_DTD_UNKNOWN_ATTRIBUTE">XML_DTD_UNKNOWN_ATTRIBUTE</a> = 533 /* 533 */
-    <a name="XML_DTD_UNKNOWN_ELEM">XML_DTD_UNKNOWN_ELEM</a> = 534 /* 534 */
-    <a name="XML_DTD_UNKNOWN_ENTITY">XML_DTD_UNKNOWN_ENTITY</a> = 535 /* 535 */
-    <a name="XML_DTD_UNKNOWN_ID">XML_DTD_UNKNOWN_ID</a> = 536 /* 536 */
-    <a name="XML_DTD_UNKNOWN_NOTATION">XML_DTD_UNKNOWN_NOTATION</a> = 537 /* 537 */
-    <a name="XML_DTD_STANDALONE_DEFAULTED">XML_DTD_STANDALONE_DEFAULTED</a> = 538 /* 538 */
-    <a name="XML_DTD_XMLID_VALUE">XML_DTD_XMLID_VALUE</a> = 539 /* 539 */
-    <a name="XML_DTD_XMLID_TYPE">XML_DTD_XMLID_TYPE</a> = 540 /* 540 */
-    <a name="XML_DTD_DUP_TOKEN">XML_DTD_DUP_TOKEN</a> = 541 /* 541 */
-    <a name="XML_HTML_STRUCURE_ERROR">XML_HTML_STRUCURE_ERROR</a> = 800
-    <a name="XML_HTML_UNKNOWN_TAG">XML_HTML_UNKNOWN_TAG</a> = 801 /* 801 */
-    <a name="XML_HTML_INCORRECTLY_OPENED_COMMENT">XML_HTML_INCORRECTLY_OPENED_COMMENT</a> = 802 /* 802 */
-    <a name="XML_RNGP_ANYNAME_ATTR_ANCESTOR">XML_RNGP_ANYNAME_ATTR_ANCESTOR</a> = 1000
-    <a name="XML_RNGP_ATTR_CONFLICT">XML_RNGP_ATTR_CONFLICT</a> = 1001 /* 1001 */
-    <a name="XML_RNGP_ATTRIBUTE_CHILDREN">XML_RNGP_ATTRIBUTE_CHILDREN</a> = 1002 /* 1002 */
-    <a name="XML_RNGP_ATTRIBUTE_CONTENT">XML_RNGP_ATTRIBUTE_CONTENT</a> = 1003 /* 1003 */
-    <a name="XML_RNGP_ATTRIBUTE_EMPTY">XML_RNGP_ATTRIBUTE_EMPTY</a> = 1004 /* 1004 */
-    <a name="XML_RNGP_ATTRIBUTE_NOOP">XML_RNGP_ATTRIBUTE_NOOP</a> = 1005 /* 1005 */
-    <a name="XML_RNGP_CHOICE_CONTENT">XML_RNGP_CHOICE_CONTENT</a> = 1006 /* 1006 */
-    <a name="XML_RNGP_CHOICE_EMPTY">XML_RNGP_CHOICE_EMPTY</a> = 1007 /* 1007 */
-    <a name="XML_RNGP_CREATE_FAILURE">XML_RNGP_CREATE_FAILURE</a> = 1008 /* 1008 */
-    <a name="XML_RNGP_DATA_CONTENT">XML_RNGP_DATA_CONTENT</a> = 1009 /* 1009 */
-    <a name="XML_RNGP_DEF_CHOICE_AND_INTERLEAVE">XML_RNGP_DEF_CHOICE_AND_INTERLEAVE</a> = 1010 /* 1010 */
-    <a name="XML_RNGP_DEFINE_CREATE_FAILED">XML_RNGP_DEFINE_CREATE_FAILED</a> = 1011 /* 1011 */
-    <a name="XML_RNGP_DEFINE_EMPTY">XML_RNGP_DEFINE_EMPTY</a> = 1012 /* 1012 */
-    <a name="XML_RNGP_DEFINE_MISSING">XML_RNGP_DEFINE_MISSING</a> = 1013 /* 1013 */
-    <a name="XML_RNGP_DEFINE_NAME_MISSING">XML_RNGP_DEFINE_NAME_MISSING</a> = 1014 /* 1014 */
-    <a name="XML_RNGP_ELEM_CONTENT_EMPTY">XML_RNGP_ELEM_CONTENT_EMPTY</a> = 1015 /* 1015 */
-    <a name="XML_RNGP_ELEM_CONTENT_ERROR">XML_RNGP_ELEM_CONTENT_ERROR</a> = 1016 /* 1016 */
-    <a name="XML_RNGP_ELEMENT_EMPTY">XML_RNGP_ELEMENT_EMPTY</a> = 1017 /* 1017 */
-    <a name="XML_RNGP_ELEMENT_CONTENT">XML_RNGP_ELEMENT_CONTENT</a> = 1018 /* 1018 */
-    <a name="XML_RNGP_ELEMENT_NAME">XML_RNGP_ELEMENT_NAME</a> = 1019 /* 1019 */
-    <a name="XML_RNGP_ELEMENT_NO_CONTENT">XML_RNGP_ELEMENT_NO_CONTENT</a> = 1020 /* 1020 */
-    <a name="XML_RNGP_ELEM_TEXT_CONFLICT">XML_RNGP_ELEM_TEXT_CONFLICT</a> = 1021 /* 1021 */
-    <a name="XML_RNGP_EMPTY">XML_RNGP_EMPTY</a> = 1022 /* 1022 */
-    <a name="XML_RNGP_EMPTY_CONSTRUCT">XML_RNGP_EMPTY_CONSTRUCT</a> = 1023 /* 1023 */
-    <a name="XML_RNGP_EMPTY_CONTENT">XML_RNGP_EMPTY_CONTENT</a> = 1024 /* 1024 */
-    <a name="XML_RNGP_EMPTY_NOT_EMPTY">XML_RNGP_EMPTY_NOT_EMPTY</a> = 1025 /* 1025 */
-    <a name="XML_RNGP_ERROR_TYPE_LIB">XML_RNGP_ERROR_TYPE_LIB</a> = 1026 /* 1026 */
-    <a name="XML_RNGP_EXCEPT_EMPTY">XML_RNGP_EXCEPT_EMPTY</a> = 1027 /* 1027 */
-    <a name="XML_RNGP_EXCEPT_MISSING">XML_RNGP_EXCEPT_MISSING</a> = 1028 /* 1028 */
-    <a name="XML_RNGP_EXCEPT_MULTIPLE">XML_RNGP_EXCEPT_MULTIPLE</a> = 1029 /* 1029 */
-    <a name="XML_RNGP_EXCEPT_NO_CONTENT">XML_RNGP_EXCEPT_NO_CONTENT</a> = 1030 /* 1030 */
-    <a name="XML_RNGP_EXTERNALREF_EMTPY">XML_RNGP_EXTERNALREF_EMTPY</a> = 1031 /* 1031 */
-    <a name="XML_RNGP_EXTERNAL_REF_FAILURE">XML_RNGP_EXTERNAL_REF_FAILURE</a> = 1032 /* 1032 */
-    <a name="XML_RNGP_EXTERNALREF_RECURSE">XML_RNGP_EXTERNALREF_RECURSE</a> = 1033 /* 1033 */
-    <a name="XML_RNGP_FORBIDDEN_ATTRIBUTE">XML_RNGP_FORBIDDEN_ATTRIBUTE</a> = 1034 /* 1034 */
-    <a name="XML_RNGP_FOREIGN_ELEMENT">XML_RNGP_FOREIGN_ELEMENT</a> = 1035 /* 1035 */
-    <a name="XML_RNGP_GRAMMAR_CONTENT">XML_RNGP_GRAMMAR_CONTENT</a> = 1036 /* 1036 */
-    <a name="XML_RNGP_GRAMMAR_EMPTY">XML_RNGP_GRAMMAR_EMPTY</a> = 1037 /* 1037 */
-    <a name="XML_RNGP_GRAMMAR_MISSING">XML_RNGP_GRAMMAR_MISSING</a> = 1038 /* 1038 */
-    <a name="XML_RNGP_GRAMMAR_NO_START">XML_RNGP_GRAMMAR_NO_START</a> = 1039 /* 1039 */
-    <a name="XML_RNGP_GROUP_ATTR_CONFLICT">XML_RNGP_GROUP_ATTR_CONFLICT</a> = 1040 /* 1040 */
-    <a name="XML_RNGP_HREF_ERROR">XML_RNGP_HREF_ERROR</a> = 1041 /* 1041 */
-    <a name="XML_RNGP_INCLUDE_EMPTY">XML_RNGP_INCLUDE_EMPTY</a> = 1042 /* 1042 */
-    <a name="XML_RNGP_INCLUDE_FAILURE">XML_RNGP_INCLUDE_FAILURE</a> = 1043 /* 1043 */
-    <a name="XML_RNGP_INCLUDE_RECURSE">XML_RNGP_INCLUDE_RECURSE</a> = 1044 /* 1044 */
-    <a name="XML_RNGP_INTERLEAVE_ADD">XML_RNGP_INTERLEAVE_ADD</a> = 1045 /* 1045 */
-    <a name="XML_RNGP_INTERLEAVE_CREATE_FAILED">XML_RNGP_INTERLEAVE_CREATE_FAILED</a> = 1046 /* 1046 */
-    <a name="XML_RNGP_INTERLEAVE_EMPTY">XML_RNGP_INTERLEAVE_EMPTY</a> = 1047 /* 1047 */
-    <a name="XML_RNGP_INTERLEAVE_NO_CONTENT">XML_RNGP_INTERLEAVE_NO_CONTENT</a> = 1048 /* 1048 */
-    <a name="XML_RNGP_INVALID_DEFINE_NAME">XML_RNGP_INVALID_DEFINE_NAME</a> = 1049 /* 1049 */
-    <a name="XML_RNGP_INVALID_URI">XML_RNGP_INVALID_URI</a> = 1050 /* 1050 */
-    <a name="XML_RNGP_INVALID_VALUE">XML_RNGP_INVALID_VALUE</a> = 1051 /* 1051 */
-    <a name="XML_RNGP_MISSING_HREF">XML_RNGP_MISSING_HREF</a> = 1052 /* 1052 */
-    <a name="XML_RNGP_NAME_MISSING">XML_RNGP_NAME_MISSING</a> = 1053 /* 1053 */
-    <a name="XML_RNGP_NEED_COMBINE">XML_RNGP_NEED_COMBINE</a> = 1054 /* 1054 */
-    <a name="XML_RNGP_NOTALLOWED_NOT_EMPTY">XML_RNGP_NOTALLOWED_NOT_EMPTY</a> = 1055 /* 1055 */
-    <a name="XML_RNGP_NSNAME_ATTR_ANCESTOR">XML_RNGP_NSNAME_ATTR_ANCESTOR</a> = 1056 /* 1056 */
-    <a name="XML_RNGP_NSNAME_NO_NS">XML_RNGP_NSNAME_NO_NS</a> = 1057 /* 1057 */
-    <a name="XML_RNGP_PARAM_FORBIDDEN">XML_RNGP_PARAM_FORBIDDEN</a> = 1058 /* 1058 */
-    <a name="XML_RNGP_PARAM_NAME_MISSING">XML_RNGP_PARAM_NAME_MISSING</a> = 1059 /* 1059 */
-    <a name="XML_RNGP_PARENTREF_CREATE_FAILED">XML_RNGP_PARENTREF_CREATE_FAILED</a> = 1060 /* 1060 */
-    <a name="XML_RNGP_PARENTREF_NAME_INVALID">XML_RNGP_PARENTREF_NAME_INVALID</a> = 1061 /* 1061 */
-    <a name="XML_RNGP_PARENTREF_NO_NAME">XML_RNGP_PARENTREF_NO_NAME</a> = 1062 /* 1062 */
-    <a name="XML_RNGP_PARENTREF_NO_PARENT">XML_RNGP_PARENTREF_NO_PARENT</a> = 1063 /* 1063 */
-    <a name="XML_RNGP_PARENTREF_NOT_EMPTY">XML_RNGP_PARENTREF_NOT_EMPTY</a> = 1064 /* 1064 */
-    <a name="XML_RNGP_PARSE_ERROR">XML_RNGP_PARSE_ERROR</a> = 1065 /* 1065 */
-    <a name="XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME">XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME</a> = 1066 /* 1066 */
-    <a name="XML_RNGP_PAT_ATTR_ATTR">XML_RNGP_PAT_ATTR_ATTR</a> = 1067 /* 1067 */
-    <a name="XML_RNGP_PAT_ATTR_ELEM">XML_RNGP_PAT_ATTR_ELEM</a> = 1068 /* 1068 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_ATTR">XML_RNGP_PAT_DATA_EXCEPT_ATTR</a> = 1069 /* 1069 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_ELEM">XML_RNGP_PAT_DATA_EXCEPT_ELEM</a> = 1070 /* 1070 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_EMPTY">XML_RNGP_PAT_DATA_EXCEPT_EMPTY</a> = 1071 /* 1071 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_GROUP">XML_RNGP_PAT_DATA_EXCEPT_GROUP</a> = 1072 /* 1072 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE">XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE</a> = 1073 /* 1073 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_LIST">XML_RNGP_PAT_DATA_EXCEPT_LIST</a> = 1074 /* 1074 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_ONEMORE">XML_RNGP_PAT_DATA_EXCEPT_ONEMORE</a> = 1075 /* 1075 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_REF">XML_RNGP_PAT_DATA_EXCEPT_REF</a> = 1076 /* 1076 */
-    <a name="XML_RNGP_PAT_DATA_EXCEPT_TEXT">XML_RNGP_PAT_DATA_EXCEPT_TEXT</a> = 1077 /* 1077 */
-    <a name="XML_RNGP_PAT_LIST_ATTR">XML_RNGP_PAT_LIST_ATTR</a> = 1078 /* 1078 */
-    <a name="XML_RNGP_PAT_LIST_ELEM">XML_RNGP_PAT_LIST_ELEM</a> = 1079 /* 1079 */
-    <a name="XML_RNGP_PAT_LIST_INTERLEAVE">XML_RNGP_PAT_LIST_INTERLEAVE</a> = 1080 /* 1080 */
-    <a name="XML_RNGP_PAT_LIST_LIST">XML_RNGP_PAT_LIST_LIST</a> = 1081 /* 1081 */
-    <a name="XML_RNGP_PAT_LIST_REF">XML_RNGP_PAT_LIST_REF</a> = 1082 /* 1082 */
-    <a name="XML_RNGP_PAT_LIST_TEXT">XML_RNGP_PAT_LIST_TEXT</a> = 1083 /* 1083 */
-    <a name="XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME">XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME</a> = 1084 /* 1084 */
-    <a name="XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME">XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME</a> = 1085 /* 1085 */
-    <a name="XML_RNGP_PAT_ONEMORE_GROUP_ATTR">XML_RNGP_PAT_ONEMORE_GROUP_ATTR</a> = 1086 /* 1086 */
-    <a name="XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR">XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR</a> = 1087 /* 1087 */
-    <a name="XML_RNGP_PAT_START_ATTR">XML_RNGP_PAT_START_ATTR</a> = 1088 /* 1088 */
-    <a name="XML_RNGP_PAT_START_DATA">XML_RNGP_PAT_START_DATA</a> = 1089 /* 1089 */
-    <a name="XML_RNGP_PAT_START_EMPTY">XML_RNGP_PAT_START_EMPTY</a> = 1090 /* 1090 */
-    <a name="XML_RNGP_PAT_START_GROUP">XML_RNGP_PAT_START_GROUP</a> = 1091 /* 1091 */
-    <a name="XML_RNGP_PAT_START_INTERLEAVE">XML_RNGP_PAT_START_INTERLEAVE</a> = 1092 /* 1092 */
-    <a name="XML_RNGP_PAT_START_LIST">XML_RNGP_PAT_START_LIST</a> = 1093 /* 1093 */
-    <a name="XML_RNGP_PAT_START_ONEMORE">XML_RNGP_PAT_START_ONEMORE</a> = 1094 /* 1094 */
-    <a name="XML_RNGP_PAT_START_TEXT">XML_RNGP_PAT_START_TEXT</a> = 1095 /* 1095 */
-    <a name="XML_RNGP_PAT_START_VALUE">XML_RNGP_PAT_START_VALUE</a> = 1096 /* 1096 */
-    <a name="XML_RNGP_PREFIX_UNDEFINED">XML_RNGP_PREFIX_UNDEFINED</a> = 1097 /* 1097 */
-    <a name="XML_RNGP_REF_CREATE_FAILED">XML_RNGP_REF_CREATE_FAILED</a> = 1098 /* 1098 */
-    <a name="XML_RNGP_REF_CYCLE">XML_RNGP_REF_CYCLE</a> = 1099 /* 1099 */
-    <a name="XML_RNGP_REF_NAME_INVALID">XML_RNGP_REF_NAME_INVALID</a> = 1100 /* 1100 */
-    <a name="XML_RNGP_REF_NO_DEF">XML_RNGP_REF_NO_DEF</a> = 1101 /* 1101 */
-    <a name="XML_RNGP_REF_NO_NAME">XML_RNGP_REF_NO_NAME</a> = 1102 /* 1102 */
-    <a name="XML_RNGP_REF_NOT_EMPTY">XML_RNGP_REF_NOT_EMPTY</a> = 1103 /* 1103 */
-    <a name="XML_RNGP_START_CHOICE_AND_INTERLEAVE">XML_RNGP_START_CHOICE_AND_INTERLEAVE</a> = 1104 /* 1104 */
-    <a name="XML_RNGP_START_CONTENT">XML_RNGP_START_CONTENT</a> = 1105 /* 1105 */
-    <a name="XML_RNGP_START_EMPTY">XML_RNGP_START_EMPTY</a> = 1106 /* 1106 */
-    <a name="XML_RNGP_START_MISSING">XML_RNGP_START_MISSING</a> = 1107 /* 1107 */
-    <a name="XML_RNGP_TEXT_EXPECTED">XML_RNGP_TEXT_EXPECTED</a> = 1108 /* 1108 */
-    <a name="XML_RNGP_TEXT_HAS_CHILD">XML_RNGP_TEXT_HAS_CHILD</a> = 1109 /* 1109 */
-    <a name="XML_RNGP_TYPE_MISSING">XML_RNGP_TYPE_MISSING</a> = 1110 /* 1110 */
-    <a name="XML_RNGP_TYPE_NOT_FOUND">XML_RNGP_TYPE_NOT_FOUND</a> = 1111 /* 1111 */
-    <a name="XML_RNGP_TYPE_VALUE">XML_RNGP_TYPE_VALUE</a> = 1112 /* 1112 */
-    <a name="XML_RNGP_UNKNOWN_ATTRIBUTE">XML_RNGP_UNKNOWN_ATTRIBUTE</a> = 1113 /* 1113 */
-    <a name="XML_RNGP_UNKNOWN_COMBINE">XML_RNGP_UNKNOWN_COMBINE</a> = 1114 /* 1114 */
-    <a name="XML_RNGP_UNKNOWN_CONSTRUCT">XML_RNGP_UNKNOWN_CONSTRUCT</a> = 1115 /* 1115 */
-    <a name="XML_RNGP_UNKNOWN_TYPE_LIB">XML_RNGP_UNKNOWN_TYPE_LIB</a> = 1116 /* 1116 */
-    <a name="XML_RNGP_URI_FRAGMENT">XML_RNGP_URI_FRAGMENT</a> = 1117 /* 1117 */
-    <a name="XML_RNGP_URI_NOT_ABSOLUTE">XML_RNGP_URI_NOT_ABSOLUTE</a> = 1118 /* 1118 */
-    <a name="XML_RNGP_VALUE_EMPTY">XML_RNGP_VALUE_EMPTY</a> = 1119 /* 1119 */
-    <a name="XML_RNGP_VALUE_NO_CONTENT">XML_RNGP_VALUE_NO_CONTENT</a> = 1120 /* 1120 */
-    <a name="XML_RNGP_XMLNS_NAME">XML_RNGP_XMLNS_NAME</a> = 1121 /* 1121 */
-    <a name="XML_RNGP_XML_NS">XML_RNGP_XML_NS</a> = 1122 /* 1122 */
-    <a name="XML_XPATH_EXPRESSION_OK">XML_XPATH_EXPRESSION_OK</a> = 1200
-    <a name="XML_XPATH_NUMBER_ERROR">XML_XPATH_NUMBER_ERROR</a> = 1201 /* 1201 */
-    <a name="XML_XPATH_UNFINISHED_LITERAL_ERROR">XML_XPATH_UNFINISHED_LITERAL_ERROR</a> = 1202 /* 1202 */
-    <a name="XML_XPATH_START_LITERAL_ERROR">XML_XPATH_START_LITERAL_ERROR</a> = 1203 /* 1203 */
-    <a name="XML_XPATH_VARIABLE_REF_ERROR">XML_XPATH_VARIABLE_REF_ERROR</a> = 1204 /* 1204 */
-    <a name="XML_XPATH_UNDEF_VARIABLE_ERROR">XML_XPATH_UNDEF_VARIABLE_ERROR</a> = 1205 /* 1205 */
-    <a name="XML_XPATH_INVALID_PREDICATE_ERROR">XML_XPATH_INVALID_PREDICATE_ERROR</a> = 1206 /* 1206 */
-    <a name="XML_XPATH_EXPR_ERROR">XML_XPATH_EXPR_ERROR</a> = 1207 /* 1207 */
-    <a name="XML_XPATH_UNCLOSED_ERROR">XML_XPATH_UNCLOSED_ERROR</a> = 1208 /* 1208 */
-    <a name="XML_XPATH_UNKNOWN_FUNC_ERROR">XML_XPATH_UNKNOWN_FUNC_ERROR</a> = 1209 /* 1209 */
-    <a name="XML_XPATH_INVALID_OPERAND">XML_XPATH_INVALID_OPERAND</a> = 1210 /* 1210 */
-    <a name="XML_XPATH_INVALID_TYPE">XML_XPATH_INVALID_TYPE</a> = 1211 /* 1211 */
-    <a name="XML_XPATH_INVALID_ARITY">XML_XPATH_INVALID_ARITY</a> = 1212 /* 1212 */
-    <a name="XML_XPATH_INVALID_CTXT_SIZE">XML_XPATH_INVALID_CTXT_SIZE</a> = 1213 /* 1213 */
-    <a name="XML_XPATH_INVALID_CTXT_POSITION">XML_XPATH_INVALID_CTXT_POSITION</a> = 1214 /* 1214 */
-    <a name="XML_XPATH_MEMORY_ERROR">XML_XPATH_MEMORY_ERROR</a> = 1215 /* 1215 */
-    <a name="XML_XPTR_SYNTAX_ERROR">XML_XPTR_SYNTAX_ERROR</a> = 1216 /* 1216 */
-    <a name="XML_XPTR_RESOURCE_ERROR">XML_XPTR_RESOURCE_ERROR</a> = 1217 /* 1217 */
-    <a name="XML_XPTR_SUB_RESOURCE_ERROR">XML_XPTR_SUB_RESOURCE_ERROR</a> = 1218 /* 1218 */
-    <a name="XML_XPATH_UNDEF_PREFIX_ERROR">XML_XPATH_UNDEF_PREFIX_ERROR</a> = 1219 /* 1219 */
-    <a name="XML_XPATH_ENCODING_ERROR">XML_XPATH_ENCODING_ERROR</a> = 1220 /* 1220 */
-    <a name="XML_XPATH_INVALID_CHAR_ERROR">XML_XPATH_INVALID_CHAR_ERROR</a> = 1221 /* 1221 */
-    <a name="XML_TREE_INVALID_HEX">XML_TREE_INVALID_HEX</a> = 1300
-    <a name="XML_TREE_INVALID_DEC">XML_TREE_INVALID_DEC</a> = 1301 /* 1301 */
-    <a name="XML_TREE_UNTERMINATED_ENTITY">XML_TREE_UNTERMINATED_ENTITY</a> = 1302 /* 1302 */
-    <a name="XML_TREE_NOT_UTF8">XML_TREE_NOT_UTF8</a> = 1303 /* 1303 */
-    <a name="XML_SAVE_NOT_UTF8">XML_SAVE_NOT_UTF8</a> = 1400
-    <a name="XML_SAVE_CHAR_INVALID">XML_SAVE_CHAR_INVALID</a> = 1401 /* 1401 */
-    <a name="XML_SAVE_NO_DOCTYPE">XML_SAVE_NO_DOCTYPE</a> = 1402 /* 1402 */
-    <a name="XML_SAVE_UNKNOWN_ENCODING">XML_SAVE_UNKNOWN_ENCODING</a> = 1403 /* 1403 */
-    <a name="XML_REGEXP_COMPILE_ERROR">XML_REGEXP_COMPILE_ERROR</a> = 1450
-    <a name="XML_IO_UNKNOWN">XML_IO_UNKNOWN</a> = 1500
-    <a name="XML_IO_EACCES">XML_IO_EACCES</a> = 1501 /* 1501 */
-    <a name="XML_IO_EAGAIN">XML_IO_EAGAIN</a> = 1502 /* 1502 */
-    <a name="XML_IO_EBADF">XML_IO_EBADF</a> = 1503 /* 1503 */
-    <a name="XML_IO_EBADMSG">XML_IO_EBADMSG</a> = 1504 /* 1504 */
-    <a name="XML_IO_EBUSY">XML_IO_EBUSY</a> = 1505 /* 1505 */
-    <a name="XML_IO_ECANCELED">XML_IO_ECANCELED</a> = 1506 /* 1506 */
-    <a name="XML_IO_ECHILD">XML_IO_ECHILD</a> = 1507 /* 1507 */
-    <a name="XML_IO_EDEADLK">XML_IO_EDEADLK</a> = 1508 /* 1508 */
-    <a name="XML_IO_EDOM">XML_IO_EDOM</a> = 1509 /* 1509 */
-    <a name="XML_IO_EEXIST">XML_IO_EEXIST</a> = 1510 /* 1510 */
-    <a name="XML_IO_EFAULT">XML_IO_EFAULT</a> = 1511 /* 1511 */
-    <a name="XML_IO_EFBIG">XML_IO_EFBIG</a> = 1512 /* 1512 */
-    <a name="XML_IO_EINPROGRESS">XML_IO_EINPROGRESS</a> = 1513 /* 1513 */
-    <a name="XML_IO_EINTR">XML_IO_EINTR</a> = 1514 /* 1514 */
-    <a name="XML_IO_EINVAL">XML_IO_EINVAL</a> = 1515 /* 1515 */
-    <a name="XML_IO_EIO">XML_IO_EIO</a> = 1516 /* 1516 */
-    <a name="XML_IO_EISDIR">XML_IO_EISDIR</a> = 1517 /* 1517 */
-    <a name="XML_IO_EMFILE">XML_IO_EMFILE</a> = 1518 /* 1518 */
-    <a name="XML_IO_EMLINK">XML_IO_EMLINK</a> = 1519 /* 1519 */
-    <a name="XML_IO_EMSGSIZE">XML_IO_EMSGSIZE</a> = 1520 /* 1520 */
-    <a name="XML_IO_ENAMETOOLONG">XML_IO_ENAMETOOLONG</a> = 1521 /* 1521 */
-    <a name="XML_IO_ENFILE">XML_IO_ENFILE</a> = 1522 /* 1522 */
-    <a name="XML_IO_ENODEV">XML_IO_ENODEV</a> = 1523 /* 1523 */
-    <a name="XML_IO_ENOENT">XML_IO_ENOENT</a> = 1524 /* 1524 */
-    <a name="XML_IO_ENOEXEC">XML_IO_ENOEXEC</a> = 1525 /* 1525 */
-    <a name="XML_IO_ENOLCK">XML_IO_ENOLCK</a> = 1526 /* 1526 */
-    <a name="XML_IO_ENOMEM">XML_IO_ENOMEM</a> = 1527 /* 1527 */
-    <a name="XML_IO_ENOSPC">XML_IO_ENOSPC</a> = 1528 /* 1528 */
-    <a name="XML_IO_ENOSYS">XML_IO_ENOSYS</a> = 1529 /* 1529 */
-    <a name="XML_IO_ENOTDIR">XML_IO_ENOTDIR</a> = 1530 /* 1530 */
-    <a name="XML_IO_ENOTEMPTY">XML_IO_ENOTEMPTY</a> = 1531 /* 1531 */
-    <a name="XML_IO_ENOTSUP">XML_IO_ENOTSUP</a> = 1532 /* 1532 */
-    <a name="XML_IO_ENOTTY">XML_IO_ENOTTY</a> = 1533 /* 1533 */
-    <a name="XML_IO_ENXIO">XML_IO_ENXIO</a> = 1534 /* 1534 */
-    <a name="XML_IO_EPERM">XML_IO_EPERM</a> = 1535 /* 1535 */
-    <a name="XML_IO_EPIPE">XML_IO_EPIPE</a> = 1536 /* 1536 */
-    <a name="XML_IO_ERANGE">XML_IO_ERANGE</a> = 1537 /* 1537 */
-    <a name="XML_IO_EROFS">XML_IO_EROFS</a> = 1538 /* 1538 */
-    <a name="XML_IO_ESPIPE">XML_IO_ESPIPE</a> = 1539 /* 1539 */
-    <a name="XML_IO_ESRCH">XML_IO_ESRCH</a> = 1540 /* 1540 */
-    <a name="XML_IO_ETIMEDOUT">XML_IO_ETIMEDOUT</a> = 1541 /* 1541 */
-    <a name="XML_IO_EXDEV">XML_IO_EXDEV</a> = 1542 /* 1542 */
-    <a name="XML_IO_NETWORK_ATTEMPT">XML_IO_NETWORK_ATTEMPT</a> = 1543 /* 1543 */
-    <a name="XML_IO_ENCODER">XML_IO_ENCODER</a> = 1544 /* 1544 */
-    <a name="XML_IO_FLUSH">XML_IO_FLUSH</a> = 1545 /* 1545 */
-    <a name="XML_IO_WRITE">XML_IO_WRITE</a> = 1546 /* 1546 */
-    <a name="XML_IO_NO_INPUT">XML_IO_NO_INPUT</a> = 1547 /* 1547 */
-    <a name="XML_IO_BUFFER_FULL">XML_IO_BUFFER_FULL</a> = 1548 /* 1548 */
-    <a name="XML_IO_LOAD_ERROR">XML_IO_LOAD_ERROR</a> = 1549 /* 1549 */
-    <a name="XML_IO_ENOTSOCK">XML_IO_ENOTSOCK</a> = 1550 /* 1550 */
-    <a name="XML_IO_EISCONN">XML_IO_EISCONN</a> = 1551 /* 1551 */
-    <a name="XML_IO_ECONNREFUSED">XML_IO_ECONNREFUSED</a> = 1552 /* 1552 */
-    <a name="XML_IO_ENETUNREACH">XML_IO_ENETUNREACH</a> = 1553 /* 1553 */
-    <a name="XML_IO_EADDRINUSE">XML_IO_EADDRINUSE</a> = 1554 /* 1554 */
-    <a name="XML_IO_EALREADY">XML_IO_EALREADY</a> = 1555 /* 1555 */
-    <a name="XML_IO_EAFNOSUPPORT">XML_IO_EAFNOSUPPORT</a> = 1556 /* 1556 */
-    <a name="XML_IO_UNSUPPORTED_PROTOCOL">XML_IO_UNSUPPORTED_PROTOCOL</a> = 1557 /* 1557 */
-    <a name="XML_XINCLUDE_RECURSION">XML_XINCLUDE_RECURSION</a> = 1600
-    <a name="XML_XINCLUDE_PARSE_VALUE">XML_XINCLUDE_PARSE_VALUE</a> = 1601 /* 1601 */
-    <a name="XML_XINCLUDE_ENTITY_DEF_MISMATCH">XML_XINCLUDE_ENTITY_DEF_MISMATCH</a> = 1602 /* 1602 */
-    <a name="XML_XINCLUDE_NO_HREF">XML_XINCLUDE_NO_HREF</a> = 1603 /* 1603 */
-    <a name="XML_XINCLUDE_NO_FALLBACK">XML_XINCLUDE_NO_FALLBACK</a> = 1604 /* 1604 */
-    <a name="XML_XINCLUDE_HREF_URI">XML_XINCLUDE_HREF_URI</a> = 1605 /* 1605 */
-    <a name="XML_XINCLUDE_TEXT_FRAGMENT">XML_XINCLUDE_TEXT_FRAGMENT</a> = 1606 /* 1606 */
-    <a name="XML_XINCLUDE_TEXT_DOCUMENT">XML_XINCLUDE_TEXT_DOCUMENT</a> = 1607 /* 1607 */
-    <a name="XML_XINCLUDE_INVALID_CHAR">XML_XINCLUDE_INVALID_CHAR</a> = 1608 /* 1608 */
-    <a name="XML_XINCLUDE_BUILD_FAILED">XML_XINCLUDE_BUILD_FAILED</a> = 1609 /* 1609 */
-    <a name="XML_XINCLUDE_UNKNOWN_ENCODING">XML_XINCLUDE_UNKNOWN_ENCODING</a> = 1610 /* 1610 */
-    <a name="XML_XINCLUDE_MULTIPLE_ROOT">XML_XINCLUDE_MULTIPLE_ROOT</a> = 1611 /* 1611 */
-    <a name="XML_XINCLUDE_XPTR_FAILED">XML_XINCLUDE_XPTR_FAILED</a> = 1612 /* 1612 */
-    <a name="XML_XINCLUDE_XPTR_RESULT">XML_XINCLUDE_XPTR_RESULT</a> = 1613 /* 1613 */
-    <a name="XML_XINCLUDE_INCLUDE_IN_INCLUDE">XML_XINCLUDE_INCLUDE_IN_INCLUDE</a> = 1614 /* 1614 */
-    <a name="XML_XINCLUDE_FALLBACKS_IN_INCLUDE">XML_XINCLUDE_FALLBACKS_IN_INCLUDE</a> = 1615 /* 1615 */
-    <a name="XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE">XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE</a> = 1616 /* 1616 */
-    <a name="XML_XINCLUDE_DEPRECATED_NS">XML_XINCLUDE_DEPRECATED_NS</a> = 1617 /* 1617 */
-    <a name="XML_XINCLUDE_FRAGMENT_ID">XML_XINCLUDE_FRAGMENT_ID</a> = 1618 /* 1618 */
-    <a name="XML_CATALOG_MISSING_ATTR">XML_CATALOG_MISSING_ATTR</a> = 1650
-    <a name="XML_CATALOG_ENTRY_BROKEN">XML_CATALOG_ENTRY_BROKEN</a> = 1651 /* 1651 */
-    <a name="XML_CATALOG_PREFER_VALUE">XML_CATALOG_PREFER_VALUE</a> = 1652 /* 1652 */
-    <a name="XML_CATALOG_NOT_CATALOG">XML_CATALOG_NOT_CATALOG</a> = 1653 /* 1653 */
-    <a name="XML_CATALOG_RECURSION">XML_CATALOG_RECURSION</a> = 1654 /* 1654 */
-    <a name="XML_SCHEMAP_PREFIX_UNDEFINED">XML_SCHEMAP_PREFIX_UNDEFINED</a> = 1700
-    <a name="XML_SCHEMAP_ATTRFORMDEFAULT_VALUE">XML_SCHEMAP_ATTRFORMDEFAULT_VALUE</a> = 1701 /* 1701 */
-    <a name="XML_SCHEMAP_ATTRGRP_NONAME_NOREF">XML_SCHEMAP_ATTRGRP_NONAME_NOREF</a> = 1702 /* 1702 */
-    <a name="XML_SCHEMAP_ATTR_NONAME_NOREF">XML_SCHEMAP_ATTR_NONAME_NOREF</a> = 1703 /* 1703 */
-    <a name="XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF">XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF</a> = 1704 /* 1704 */
-    <a name="XML_SCHEMAP_ELEMFORMDEFAULT_VALUE">XML_SCHEMAP_ELEMFORMDEFAULT_VALUE</a> = 1705 /* 1705 */
-    <a name="XML_SCHEMAP_ELEM_NONAME_NOREF">XML_SCHEMAP_ELEM_NONAME_NOREF</a> = 1706 /* 1706 */
-    <a name="XML_SCHEMAP_EXTENSION_NO_BASE">XML_SCHEMAP_EXTENSION_NO_BASE</a> = 1707 /* 1707 */
-    <a name="XML_SCHEMAP_FACET_NO_VALUE">XML_SCHEMAP_FACET_NO_VALUE</a> = 1708 /* 1708 */
-    <a name="XML_SCHEMAP_FAILED_BUILD_IMPORT">XML_SCHEMAP_FAILED_BUILD_IMPORT</a> = 1709 /* 1709 */
-    <a name="XML_SCHEMAP_GROUP_NONAME_NOREF">XML_SCHEMAP_GROUP_NONAME_NOREF</a> = 1710 /* 1710 */
-    <a name="XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI">XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI</a> = 1711 /* 1711 */
-    <a name="XML_SCHEMAP_IMPORT_REDEFINE_NSNAME">XML_SCHEMAP_IMPORT_REDEFINE_NSNAME</a> = 1712 /* 1712 */
-    <a name="XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI">XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI</a> = 1713 /* 1713 */
-    <a name="XML_SCHEMAP_INVALID_BOOLEAN">XML_SCHEMAP_INVALID_BOOLEAN</a> = 1714 /* 1714 */
-    <a name="XML_SCHEMAP_INVALID_ENUM">XML_SCHEMAP_INVALID_ENUM</a> = 1715 /* 1715 */
-    <a name="XML_SCHEMAP_INVALID_FACET">XML_SCHEMAP_INVALID_FACET</a> = 1716 /* 1716 */
-    <a name="XML_SCHEMAP_INVALID_FACET_VALUE">XML_SCHEMAP_INVALID_FACET_VALUE</a> = 1717 /* 1717 */
-    <a name="XML_SCHEMAP_INVALID_MAXOCCURS">XML_SCHEMAP_INVALID_MAXOCCURS</a> = 1718 /* 1718 */
-    <a name="XML_SCHEMAP_INVALID_MINOCCURS">XML_SCHEMAP_INVALID_MINOCCURS</a> = 1719 /* 1719 */
-    <a name="XML_SCHEMAP_INVALID_REF_AND_SUBTYPE">XML_SCHEMAP_INVALID_REF_AND_SUBTYPE</a> = 1720 /* 1720 */
-    <a name="XML_SCHEMAP_INVALID_WHITE_SPACE">XML_SCHEMAP_INVALID_WHITE_SPACE</a> = 1721 /* 1721 */
-    <a name="XML_SCHEMAP_NOATTR_NOREF">XML_SCHEMAP_NOATTR_NOREF</a> = 1722 /* 1722 */
-    <a name="XML_SCHEMAP_NOTATION_NO_NAME">XML_SCHEMAP_NOTATION_NO_NAME</a> = 1723 /* 1723 */
-    <a name="XML_SCHEMAP_NOTYPE_NOREF">XML_SCHEMAP_NOTYPE_NOREF</a> = 1724 /* 1724 */
-    <a name="XML_SCHEMAP_REF_AND_SUBTYPE">XML_SCHEMAP_REF_AND_SUBTYPE</a> = 1725 /* 1725 */
-    <a name="XML_SCHEMAP_RESTRICTION_NONAME_NOREF">XML_SCHEMAP_RESTRICTION_NONAME_NOREF</a> = 1726 /* 1726 */
-    <a name="XML_SCHEMAP_SIMPLETYPE_NONAME">XML_SCHEMAP_SIMPLETYPE_NONAME</a> = 1727 /* 1727 */
-    <a name="XML_SCHEMAP_TYPE_AND_SUBTYPE">XML_SCHEMAP_TYPE_AND_SUBTYPE</a> = 1728 /* 1728 */
-    <a name="XML_SCHEMAP_UNKNOWN_ALL_CHILD">XML_SCHEMAP_UNKNOWN_ALL_CHILD</a> = 1729 /* 1729 */
-    <a name="XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD">XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD</a> = 1730 /* 1730 */
-    <a name="XML_SCHEMAP_UNKNOWN_ATTR_CHILD">XML_SCHEMAP_UNKNOWN_ATTR_CHILD</a> = 1731 /* 1731 */
-    <a name="XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD">XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD</a> = 1732 /* 1732 */
-    <a name="XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP">XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP</a> = 1733 /* 1733 */
-    <a name="XML_SCHEMAP_UNKNOWN_BASE_TYPE">XML_SCHEMAP_UNKNOWN_BASE_TYPE</a> = 1734 /* 1734 */
-    <a name="XML_SCHEMAP_UNKNOWN_CHOICE_CHILD">XML_SCHEMAP_UNKNOWN_CHOICE_CHILD</a> = 1735 /* 1735 */
-    <a name="XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD">XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD</a> = 1736 /* 1736 */
-    <a name="XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD">XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD</a> = 1737 /* 1737 */
-    <a name="XML_SCHEMAP_UNKNOWN_ELEM_CHILD">XML_SCHEMAP_UNKNOWN_ELEM_CHILD</a> = 1738 /* 1738 */
-    <a name="XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD">XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD</a> = 1739 /* 1739 */
-    <a name="XML_SCHEMAP_UNKNOWN_FACET_CHILD">XML_SCHEMAP_UNKNOWN_FACET_CHILD</a> = 1740 /* 1740 */
-    <a name="XML_SCHEMAP_UNKNOWN_FACET_TYPE">XML_SCHEMAP_UNKNOWN_FACET_TYPE</a> = 1741 /* 1741 */
-    <a name="XML_SCHEMAP_UNKNOWN_GROUP_CHILD">XML_SCHEMAP_UNKNOWN_GROUP_CHILD</a> = 1742 /* 1742 */
-    <a name="XML_SCHEMAP_UNKNOWN_IMPORT_CHILD">XML_SCHEMAP_UNKNOWN_IMPORT_CHILD</a> = 1743 /* 1743 */
-    <a name="XML_SCHEMAP_UNKNOWN_LIST_CHILD">XML_SCHEMAP_UNKNOWN_LIST_CHILD</a> = 1744 /* 1744 */
-    <a name="XML_SCHEMAP_UNKNOWN_NOTATION_CHILD">XML_SCHEMAP_UNKNOWN_NOTATION_CHILD</a> = 1745 /* 1745 */
-    <a name="XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD">XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD</a> = 1746 /* 1746 */
-    <a name="XML_SCHEMAP_UNKNOWN_REF">XML_SCHEMAP_UNKNOWN_REF</a> = 1747 /* 1747 */
-    <a name="XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD">XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD</a> = 1748 /* 1748 */
-    <a name="XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD">XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD</a> = 1749 /* 1749 */
-    <a name="XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD">XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD</a> = 1750 /* 1750 */
-    <a name="XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD">XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD</a> = 1751 /* 1751 */
-    <a name="XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD">XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD</a> = 1752 /* 1752 */
-    <a name="XML_SCHEMAP_UNKNOWN_TYPE">XML_SCHEMAP_UNKNOWN_TYPE</a> = 1753 /* 1753 */
-    <a name="XML_SCHEMAP_UNKNOWN_UNION_CHILD">XML_SCHEMAP_UNKNOWN_UNION_CHILD</a> = 1754 /* 1754 */
-    <a name="XML_SCHEMAP_ELEM_DEFAULT_FIXED">XML_SCHEMAP_ELEM_DEFAULT_FIXED</a> = 1755 /* 1755 */
-    <a name="XML_SCHEMAP_REGEXP_INVALID">XML_SCHEMAP_REGEXP_INVALID</a> = 1756 /* 1756 */
-    <a name="XML_SCHEMAP_FAILED_LOAD">XML_SCHEMAP_FAILED_LOAD</a> = 1757 /* 1757 */
-    <a name="XML_SCHEMAP_NOTHING_TO_PARSE">XML_SCHEMAP_NOTHING_TO_PARSE</a> = 1758 /* 1758 */
-    <a name="XML_SCHEMAP_NOROOT">XML_SCHEMAP_NOROOT</a> = 1759 /* 1759 */
-    <a name="XML_SCHEMAP_REDEFINED_GROUP">XML_SCHEMAP_REDEFINED_GROUP</a> = 1760 /* 1760 */
-    <a name="XML_SCHEMAP_REDEFINED_TYPE">XML_SCHEMAP_REDEFINED_TYPE</a> = 1761 /* 1761 */
-    <a name="XML_SCHEMAP_REDEFINED_ELEMENT">XML_SCHEMAP_REDEFINED_ELEMENT</a> = 1762 /* 1762 */
-    <a name="XML_SCHEMAP_REDEFINED_ATTRGROUP">XML_SCHEMAP_REDEFINED_ATTRGROUP</a> = 1763 /* 1763 */
-    <a name="XML_SCHEMAP_REDEFINED_ATTR">XML_SCHEMAP_REDEFINED_ATTR</a> = 1764 /* 1764 */
-    <a name="XML_SCHEMAP_REDEFINED_NOTATION">XML_SCHEMAP_REDEFINED_NOTATION</a> = 1765 /* 1765 */
-    <a name="XML_SCHEMAP_FAILED_PARSE">XML_SCHEMAP_FAILED_PARSE</a> = 1766 /* 1766 */
-    <a name="XML_SCHEMAP_UNKNOWN_PREFIX">XML_SCHEMAP_UNKNOWN_PREFIX</a> = 1767 /* 1767 */
-    <a name="XML_SCHEMAP_DEF_AND_PREFIX">XML_SCHEMAP_DEF_AND_PREFIX</a> = 1768 /* 1768 */
-    <a name="XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD">XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD</a> = 1769 /* 1769 */
-    <a name="XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI">XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI</a> = 1770 /* 1770 */
-    <a name="XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI">XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI</a> = 1771 /* 1771 */
-    <a name="XML_SCHEMAP_NOT_SCHEMA">XML_SCHEMAP_NOT_SCHEMA</a> = 1772 /* 1772 */
-    <a name="XML_SCHEMAP_UNKNOWN_MEMBER_TYPE">XML_SCHEMAP_UNKNOWN_MEMBER_TYPE</a> = 1773 /* 1773 */
-    <a name="XML_SCHEMAP_INVALID_ATTR_USE">XML_SCHEMAP_INVALID_ATTR_USE</a> = 1774 /* 1774 */
-    <a name="XML_SCHEMAP_RECURSIVE">XML_SCHEMAP_RECURSIVE</a> = 1775 /* 1775 */
-    <a name="XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE">XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE</a> = 1776 /* 1776 */
-    <a name="XML_SCHEMAP_INVALID_ATTR_COMBINATION">XML_SCHEMAP_INVALID_ATTR_COMBINATION</a> = 1777 /* 1777 */
-    <a name="XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION">XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION</a> = 1778 /* 1778 */
-    <a name="XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD">XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD</a> = 1779 /* 1779 */
-    <a name="XML_SCHEMAP_INVALID_ATTR_NAME">XML_SCHEMAP_INVALID_ATTR_NAME</a> = 1780 /* 1780 */
-    <a name="XML_SCHEMAP_REF_AND_CONTENT">XML_SCHEMAP_REF_AND_CONTENT</a> = 1781 /* 1781 */
-    <a name="XML_SCHEMAP_CT_PROPS_CORRECT_1">XML_SCHEMAP_CT_PROPS_CORRECT_1</a> = 1782 /* 1782 */
-    <a name="XML_SCHEMAP_CT_PROPS_CORRECT_2">XML_SCHEMAP_CT_PROPS_CORRECT_2</a> = 1783 /* 1783 */
-    <a name="XML_SCHEMAP_CT_PROPS_CORRECT_3">XML_SCHEMAP_CT_PROPS_CORRECT_3</a> = 1784 /* 1784 */
-    <a name="XML_SCHEMAP_CT_PROPS_CORRECT_4">XML_SCHEMAP_CT_PROPS_CORRECT_4</a> = 1785 /* 1785 */
-    <a name="XML_SCHEMAP_CT_PROPS_CORRECT_5">XML_SCHEMAP_CT_PROPS_CORRECT_5</a> = 1786 /* 1786 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1</a> = 1787 /* 1787 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1</a> = 1788 /* 1788 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2</a> = 1789 /* 1789 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2</a> = 1790 /* 1790 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3</a> = 1791 /* 1791 */
-    <a name="XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER">XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER</a> = 1792 /* 1792 */
-    <a name="XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE">XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE</a> = 1793 /* 1793 */
-    <a name="XML_SCHEMAP_UNION_NOT_EXPRESSIBLE">XML_SCHEMAP_UNION_NOT_EXPRESSIBLE</a> = 1794 /* 1794 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_3_1">XML_SCHEMAP_SRC_IMPORT_3_1</a> = 1795 /* 1795 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_3_2">XML_SCHEMAP_SRC_IMPORT_3_2</a> = 1796 /* 1796 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1</a> = 1797 /* 1797 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2</a> = 1798 /* 1798 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3</a> = 1799 /* 1799 */
-    <a name="XML_SCHEMAP_COS_CT_EXTENDS_1_3">XML_SCHEMAP_COS_CT_EXTENDS_1_3</a> = 1800 /* 1800 */
-    <a name="XML_SCHEMAV_NOROOT">XML_SCHEMAV_NOROOT</a> = 1801
-    <a name="XML_SCHEMAV_UNDECLAREDELEM">XML_SCHEMAV_UNDECLAREDELEM</a> = 1802 /* 1802 */
-    <a name="XML_SCHEMAV_NOTTOPLEVEL">XML_SCHEMAV_NOTTOPLEVEL</a> = 1803 /* 1803 */
-    <a name="XML_SCHEMAV_MISSING">XML_SCHEMAV_MISSING</a> = 1804 /* 1804 */
-    <a name="XML_SCHEMAV_WRONGELEM">XML_SCHEMAV_WRONGELEM</a> = 1805 /* 1805 */
-    <a name="XML_SCHEMAV_NOTYPE">XML_SCHEMAV_NOTYPE</a> = 1806 /* 1806 */
-    <a name="XML_SCHEMAV_NOROLLBACK">XML_SCHEMAV_NOROLLBACK</a> = 1807 /* 1807 */
-    <a name="XML_SCHEMAV_ISABSTRACT">XML_SCHEMAV_ISABSTRACT</a> = 1808 /* 1808 */
-    <a name="XML_SCHEMAV_NOTEMPTY">XML_SCHEMAV_NOTEMPTY</a> = 1809 /* 1809 */
-    <a name="XML_SCHEMAV_ELEMCONT">XML_SCHEMAV_ELEMCONT</a> = 1810 /* 1810 */
-    <a name="XML_SCHEMAV_HAVEDEFAULT">XML_SCHEMAV_HAVEDEFAULT</a> = 1811 /* 1811 */
-    <a name="XML_SCHEMAV_NOTNILLABLE">XML_SCHEMAV_NOTNILLABLE</a> = 1812 /* 1812 */
-    <a name="XML_SCHEMAV_EXTRACONTENT">XML_SCHEMAV_EXTRACONTENT</a> = 1813 /* 1813 */
-    <a name="XML_SCHEMAV_INVALIDATTR">XML_SCHEMAV_INVALIDATTR</a> = 1814 /* 1814 */
-    <a name="XML_SCHEMAV_INVALIDELEM">XML_SCHEMAV_INVALIDELEM</a> = 1815 /* 1815 */
-    <a name="XML_SCHEMAV_NOTDETERMINIST">XML_SCHEMAV_NOTDETERMINIST</a> = 1816 /* 1816 */
-    <a name="XML_SCHEMAV_CONSTRUCT">XML_SCHEMAV_CONSTRUCT</a> = 1817 /* 1817 */
-    <a name="XML_SCHEMAV_INTERNAL">XML_SCHEMAV_INTERNAL</a> = 1818 /* 1818 */
-    <a name="XML_SCHEMAV_NOTSIMPLE">XML_SCHEMAV_NOTSIMPLE</a> = 1819 /* 1819 */
-    <a name="XML_SCHEMAV_ATTRUNKNOWN">XML_SCHEMAV_ATTRUNKNOWN</a> = 1820 /* 1820 */
-    <a name="XML_SCHEMAV_ATTRINVALID">XML_SCHEMAV_ATTRINVALID</a> = 1821 /* 1821 */
-    <a name="XML_SCHEMAV_VALUE">XML_SCHEMAV_VALUE</a> = 1822 /* 1822 */
-    <a name="XML_SCHEMAV_FACET">XML_SCHEMAV_FACET</a> = 1823 /* 1823 */
-    <a name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1">XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1</a> = 1824 /* 1824 */
-    <a name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2">XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2</a> = 1825 /* 1825 */
-    <a name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3">XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3</a> = 1826 /* 1826 */
-    <a name="XML_SCHEMAV_CVC_TYPE_3_1_1">XML_SCHEMAV_CVC_TYPE_3_1_1</a> = 1827 /* 1827 */
-    <a name="XML_SCHEMAV_CVC_TYPE_3_1_2">XML_SCHEMAV_CVC_TYPE_3_1_2</a> = 1828 /* 1828 */
-    <a name="XML_SCHEMAV_CVC_FACET_VALID">XML_SCHEMAV_CVC_FACET_VALID</a> = 1829 /* 1829 */
-    <a name="XML_SCHEMAV_CVC_LENGTH_VALID">XML_SCHEMAV_CVC_LENGTH_VALID</a> = 1830 /* 1830 */
-    <a name="XML_SCHEMAV_CVC_MINLENGTH_VALID">XML_SCHEMAV_CVC_MINLENGTH_VALID</a> = 1831 /* 1831 */
-    <a name="XML_SCHEMAV_CVC_MAXLENGTH_VALID">XML_SCHEMAV_CVC_MAXLENGTH_VALID</a> = 1832 /* 1832 */
-    <a name="XML_SCHEMAV_CVC_MININCLUSIVE_VALID">XML_SCHEMAV_CVC_MININCLUSIVE_VALID</a> = 1833 /* 1833 */
-    <a name="XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID">XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID</a> = 1834 /* 1834 */
-    <a name="XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID">XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID</a> = 1835 /* 1835 */
-    <a name="XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID">XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID</a> = 1836 /* 1836 */
-    <a name="XML_SCHEMAV_CVC_TOTALDIGITS_VALID">XML_SCHEMAV_CVC_TOTALDIGITS_VALID</a> = 1837 /* 1837 */
-    <a name="XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID">XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID</a> = 1838 /* 1838 */
-    <a name="XML_SCHEMAV_CVC_PATTERN_VALID">XML_SCHEMAV_CVC_PATTERN_VALID</a> = 1839 /* 1839 */
-    <a name="XML_SCHEMAV_CVC_ENUMERATION_VALID">XML_SCHEMAV_CVC_ENUMERATION_VALID</a> = 1840 /* 1840 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1">XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1</a> = 1841 /* 1841 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2">XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2</a> = 1842 /* 1842 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3">XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3</a> = 1843 /* 1843 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4">XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4</a> = 1844 /* 1844 */
-    <a name="XML_SCHEMAV_CVC_ELT_1">XML_SCHEMAV_CVC_ELT_1</a> = 1845 /* 1845 */
-    <a name="XML_SCHEMAV_CVC_ELT_2">XML_SCHEMAV_CVC_ELT_2</a> = 1846 /* 1846 */
-    <a name="XML_SCHEMAV_CVC_ELT_3_1">XML_SCHEMAV_CVC_ELT_3_1</a> = 1847 /* 1847 */
-    <a name="XML_SCHEMAV_CVC_ELT_3_2_1">XML_SCHEMAV_CVC_ELT_3_2_1</a> = 1848 /* 1848 */
-    <a name="XML_SCHEMAV_CVC_ELT_3_2_2">XML_SCHEMAV_CVC_ELT_3_2_2</a> = 1849 /* 1849 */
-    <a name="XML_SCHEMAV_CVC_ELT_4_1">XML_SCHEMAV_CVC_ELT_4_1</a> = 1850 /* 1850 */
-    <a name="XML_SCHEMAV_CVC_ELT_4_2">XML_SCHEMAV_CVC_ELT_4_2</a> = 1851 /* 1851 */
-    <a name="XML_SCHEMAV_CVC_ELT_4_3">XML_SCHEMAV_CVC_ELT_4_3</a> = 1852 /* 1852 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_1_1">XML_SCHEMAV_CVC_ELT_5_1_1</a> = 1853 /* 1853 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_1_2">XML_SCHEMAV_CVC_ELT_5_1_2</a> = 1854 /* 1854 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_2_1">XML_SCHEMAV_CVC_ELT_5_2_1</a> = 1855 /* 1855 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_2_2_1">XML_SCHEMAV_CVC_ELT_5_2_2_1</a> = 1856 /* 1856 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_2_2_2_1">XML_SCHEMAV_CVC_ELT_5_2_2_2_1</a> = 1857 /* 1857 */
-    <a name="XML_SCHEMAV_CVC_ELT_5_2_2_2_2">XML_SCHEMAV_CVC_ELT_5_2_2_2_2</a> = 1858 /* 1858 */
-    <a name="XML_SCHEMAV_CVC_ELT_6">XML_SCHEMAV_CVC_ELT_6</a> = 1859 /* 1859 */
-    <a name="XML_SCHEMAV_CVC_ELT_7">XML_SCHEMAV_CVC_ELT_7</a> = 1860 /* 1860 */
-    <a name="XML_SCHEMAV_CVC_ATTRIBUTE_1">XML_SCHEMAV_CVC_ATTRIBUTE_1</a> = 1861 /* 1861 */
-    <a name="XML_SCHEMAV_CVC_ATTRIBUTE_2">XML_SCHEMAV_CVC_ATTRIBUTE_2</a> = 1862 /* 1862 */
-    <a name="XML_SCHEMAV_CVC_ATTRIBUTE_3">XML_SCHEMAV_CVC_ATTRIBUTE_3</a> = 1863 /* 1863 */
-    <a name="XML_SCHEMAV_CVC_ATTRIBUTE_4">XML_SCHEMAV_CVC_ATTRIBUTE_4</a> = 1864 /* 1864 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1">XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1</a> = 1865 /* 1865 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1">XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1</a> = 1866 /* 1866 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2">XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2</a> = 1867 /* 1867 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_4">XML_SCHEMAV_CVC_COMPLEX_TYPE_4</a> = 1868 /* 1868 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1">XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1</a> = 1869 /* 1869 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2">XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2</a> = 1870 /* 1870 */
-    <a name="XML_SCHEMAV_ELEMENT_CONTENT">XML_SCHEMAV_ELEMENT_CONTENT</a> = 1871 /* 1871 */
-    <a name="XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING">XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING</a> = 1872 /* 1872 */
-    <a name="XML_SCHEMAV_CVC_COMPLEX_TYPE_1">XML_SCHEMAV_CVC_COMPLEX_TYPE_1</a> = 1873 /* 1873 */
-    <a name="XML_SCHEMAV_CVC_AU">XML_SCHEMAV_CVC_AU</a> = 1874 /* 1874 */
-    <a name="XML_SCHEMAV_CVC_TYPE_1">XML_SCHEMAV_CVC_TYPE_1</a> = 1875 /* 1875 */
-    <a name="XML_SCHEMAV_CVC_TYPE_2">XML_SCHEMAV_CVC_TYPE_2</a> = 1876 /* 1876 */
-    <a name="XML_SCHEMAV_CVC_IDC">XML_SCHEMAV_CVC_IDC</a> = 1877 /* 1877 */
-    <a name="XML_SCHEMAV_CVC_WILDCARD">XML_SCHEMAV_CVC_WILDCARD</a> = 1878 /* 1878 */
-    <a name="XML_SCHEMAV_MISC">XML_SCHEMAV_MISC</a> = 1879 /* 1879 */
-    <a name="XML_XPTR_UNKNOWN_SCHEME">XML_XPTR_UNKNOWN_SCHEME</a> = 1900
-    <a name="XML_XPTR_CHILDSEQ_START">XML_XPTR_CHILDSEQ_START</a> = 1901 /* 1901 */
-    <a name="XML_XPTR_EVAL_FAILED">XML_XPTR_EVAL_FAILED</a> = 1902 /* 1902 */
-    <a name="XML_XPTR_EXTRA_OBJECTS">XML_XPTR_EXTRA_OBJECTS</a> = 1903 /* 1903 */
-    <a name="XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a> = 1950
-    <a name="XML_C14N_REQUIRES_UTF8">XML_C14N_REQUIRES_UTF8</a> = 1951 /* 1951 */
-    <a name="XML_C14N_CREATE_STACK">XML_C14N_CREATE_STACK</a> = 1952 /* 1952 */
-    <a name="XML_C14N_INVALID_NODE">XML_C14N_INVALID_NODE</a> = 1953 /* 1953 */
-    <a name="XML_C14N_UNKNOW_NODE">XML_C14N_UNKNOW_NODE</a> = 1954 /* 1954 */
-    <a name="XML_C14N_RELATIVE_NAMESPACE">XML_C14N_RELATIVE_NAMESPACE</a> = 1955 /* 1955 */
-    <a name="XML_FTP_PASV_ANSWER">XML_FTP_PASV_ANSWER</a> = 2000
-    <a name="XML_FTP_EPSV_ANSWER">XML_FTP_EPSV_ANSWER</a> = 2001 /* 2001 */
-    <a name="XML_FTP_ACCNT">XML_FTP_ACCNT</a> = 2002 /* 2002 */
-    <a name="XML_FTP_URL_SYNTAX">XML_FTP_URL_SYNTAX</a> = 2003 /* 2003 */
-    <a name="XML_HTTP_URL_SYNTAX">XML_HTTP_URL_SYNTAX</a> = 2020
-    <a name="XML_HTTP_USE_IP">XML_HTTP_USE_IP</a> = 2021 /* 2021 */
-    <a name="XML_HTTP_UNKNOWN_HOST">XML_HTTP_UNKNOWN_HOST</a> = 2022 /* 2022 */
-    <a name="XML_SCHEMAP_SRC_SIMPLE_TYPE_1">XML_SCHEMAP_SRC_SIMPLE_TYPE_1</a> = 3000
-    <a name="XML_SCHEMAP_SRC_SIMPLE_TYPE_2">XML_SCHEMAP_SRC_SIMPLE_TYPE_2</a> = 3001 /* 3001 */
-    <a name="XML_SCHEMAP_SRC_SIMPLE_TYPE_3">XML_SCHEMAP_SRC_SIMPLE_TYPE_3</a> = 3002 /* 3002 */
-    <a name="XML_SCHEMAP_SRC_SIMPLE_TYPE_4">XML_SCHEMAP_SRC_SIMPLE_TYPE_4</a> = 3003 /* 3003 */
-    <a name="XML_SCHEMAP_SRC_RESOLVE">XML_SCHEMAP_SRC_RESOLVE</a> = 3004 /* 3004 */
-    <a name="XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE</a> = 3005 /* 3005 */
-    <a name="XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE">XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE</a> = 3006 /* 3006 */
-    <a name="XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES">XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES</a> = 3007 /* 3007 */
-    <a name="XML_SCHEMAP_ST_PROPS_CORRECT_1">XML_SCHEMAP_ST_PROPS_CORRECT_1</a> = 3008 /* 3008 */
-    <a name="XML_SCHEMAP_ST_PROPS_CORRECT_2">XML_SCHEMAP_ST_PROPS_CORRECT_2</a> = 3009 /* 3009 */
-    <a name="XML_SCHEMAP_ST_PROPS_CORRECT_3">XML_SCHEMAP_ST_PROPS_CORRECT_3</a> = 3010 /* 3010 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_1_1">XML_SCHEMAP_COS_ST_RESTRICTS_1_1</a> = 3011 /* 3011 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_1_2">XML_SCHEMAP_COS_ST_RESTRICTS_1_2</a> = 3012 /* 3012 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1">XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1</a> = 3013 /* 3013 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2">XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2</a> = 3014 /* 3014 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_1">XML_SCHEMAP_COS_ST_RESTRICTS_2_1</a> = 3015 /* 3015 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1</a> = 3016 /* 3016 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2</a> = 3017 /* 3017 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1</a> = 3018 /* 3018 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2</a> = 3019 /* 3019 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3</a> = 3020 /* 3020 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4</a> = 3021 /* 3021 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5">XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5</a> = 3022 /* 3022 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_1">XML_SCHEMAP_COS_ST_RESTRICTS_3_1</a> = 3023 /* 3023 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1</a> = 3024 /* 3024 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2</a> = 3025 /* 3025 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2</a> = 3026 /* 3026 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1</a> = 3027 /* 3027 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3</a> = 3028 /* 3028 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4</a> = 3029 /* 3029 */
-    <a name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5">XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5</a> = 3030 /* 3030 */
-    <a name="XML_SCHEMAP_COS_ST_DERIVED_OK_2_1">XML_SCHEMAP_COS_ST_DERIVED_OK_2_1</a> = 3031 /* 3031 */
-    <a name="XML_SCHEMAP_COS_ST_DERIVED_OK_2_2">XML_SCHEMAP_COS_ST_DERIVED_OK_2_2</a> = 3032 /* 3032 */
-    <a name="XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED">XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED</a> = 3033 /* 3033 */
-    <a name="XML_SCHEMAP_S4S_ELEM_MISSING">XML_SCHEMAP_S4S_ELEM_MISSING</a> = 3034 /* 3034 */
-    <a name="XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED">XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED</a> = 3035 /* 3035 */
-    <a name="XML_SCHEMAP_S4S_ATTR_MISSING">XML_SCHEMAP_S4S_ATTR_MISSING</a> = 3036 /* 3036 */
-    <a name="XML_SCHEMAP_S4S_ATTR_INVALID_VALUE">XML_SCHEMAP_S4S_ATTR_INVALID_VALUE</a> = 3037 /* 3037 */
-    <a name="XML_SCHEMAP_SRC_ELEMENT_1">XML_SCHEMAP_SRC_ELEMENT_1</a> = 3038 /* 3038 */
-    <a name="XML_SCHEMAP_SRC_ELEMENT_2_1">XML_SCHEMAP_SRC_ELEMENT_2_1</a> = 3039 /* 3039 */
-    <a name="XML_SCHEMAP_SRC_ELEMENT_2_2">XML_SCHEMAP_SRC_ELEMENT_2_2</a> = 3040 /* 3040 */
-    <a name="XML_SCHEMAP_SRC_ELEMENT_3">XML_SCHEMAP_SRC_ELEMENT_3</a> = 3041 /* 3041 */
-    <a name="XML_SCHEMAP_P_PROPS_CORRECT_1">XML_SCHEMAP_P_PROPS_CORRECT_1</a> = 3042 /* 3042 */
-    <a name="XML_SCHEMAP_P_PROPS_CORRECT_2_1">XML_SCHEMAP_P_PROPS_CORRECT_2_1</a> = 3043 /* 3043 */
-    <a name="XML_SCHEMAP_P_PROPS_CORRECT_2_2">XML_SCHEMAP_P_PROPS_CORRECT_2_2</a> = 3044 /* 3044 */
-    <a name="XML_SCHEMAP_E_PROPS_CORRECT_2">XML_SCHEMAP_E_PROPS_CORRECT_2</a> = 3045 /* 3045 */
-    <a name="XML_SCHEMAP_E_PROPS_CORRECT_3">XML_SCHEMAP_E_PROPS_CORRECT_3</a> = 3046 /* 3046 */
-    <a name="XML_SCHEMAP_E_PROPS_CORRECT_4">XML_SCHEMAP_E_PROPS_CORRECT_4</a> = 3047 /* 3047 */
-    <a name="XML_SCHEMAP_E_PROPS_CORRECT_5">XML_SCHEMAP_E_PROPS_CORRECT_5</a> = 3048 /* 3048 */
-    <a name="XML_SCHEMAP_E_PROPS_CORRECT_6">XML_SCHEMAP_E_PROPS_CORRECT_6</a> = 3049 /* 3049 */
-    <a name="XML_SCHEMAP_SRC_INCLUDE">XML_SCHEMAP_SRC_INCLUDE</a> = 3050 /* 3050 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_1">XML_SCHEMAP_SRC_ATTRIBUTE_1</a> = 3051 /* 3051 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_2">XML_SCHEMAP_SRC_ATTRIBUTE_2</a> = 3052 /* 3052 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_3_1">XML_SCHEMAP_SRC_ATTRIBUTE_3_1</a> = 3053 /* 3053 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_3_2">XML_SCHEMAP_SRC_ATTRIBUTE_3_2</a> = 3054 /* 3054 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_4">XML_SCHEMAP_SRC_ATTRIBUTE_4</a> = 3055 /* 3055 */
-    <a name="XML_SCHEMAP_NO_XMLNS">XML_SCHEMAP_NO_XMLNS</a> = 3056 /* 3056 */
-    <a name="XML_SCHEMAP_NO_XSI">XML_SCHEMAP_NO_XSI</a> = 3057 /* 3057 */
-    <a name="XML_SCHEMAP_COS_VALID_DEFAULT_1">XML_SCHEMAP_COS_VALID_DEFAULT_1</a> = 3058 /* 3058 */
-    <a name="XML_SCHEMAP_COS_VALID_DEFAULT_2_1">XML_SCHEMAP_COS_VALID_DEFAULT_2_1</a> = 3059 /* 3059 */
-    <a name="XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1">XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1</a> = 3060 /* 3060 */
-    <a name="XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2">XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2</a> = 3061 /* 3061 */
-    <a name="XML_SCHEMAP_CVC_SIMPLE_TYPE">XML_SCHEMAP_CVC_SIMPLE_TYPE</a> = 3062 /* 3062 */
-    <a name="XML_SCHEMAP_COS_CT_EXTENDS_1_1">XML_SCHEMAP_COS_CT_EXTENDS_1_1</a> = 3063 /* 3063 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_1_1">XML_SCHEMAP_SRC_IMPORT_1_1</a> = 3064 /* 3064 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_1_2">XML_SCHEMAP_SRC_IMPORT_1_2</a> = 3065 /* 3065 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_2">XML_SCHEMAP_SRC_IMPORT_2</a> = 3066 /* 3066 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_2_1">XML_SCHEMAP_SRC_IMPORT_2_1</a> = 3067 /* 3067 */
-    <a name="XML_SCHEMAP_SRC_IMPORT_2_2">XML_SCHEMAP_SRC_IMPORT_2_2</a> = 3068 /* 3068 */
-    <a name="XML_SCHEMAP_INTERNAL">XML_SCHEMAP_INTERNAL</a> = 3069 /* 3069 non-W3C */
-    <a name="XML_SCHEMAP_NOT_DETERMINISTIC">XML_SCHEMAP_NOT_DETERMINISTIC</a> = 3070 /* 3070 non-W3C */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1">XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1</a> = 3071 /* 3071 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2">XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2</a> = 3072 /* 3072 */
-    <a name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3">XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3</a> = 3073 /* 3073 */
-    <a name="XML_SCHEMAP_MG_PROPS_CORRECT_1">XML_SCHEMAP_MG_PROPS_CORRECT_1</a> = 3074 /* 3074 */
-    <a name="XML_SCHEMAP_MG_PROPS_CORRECT_2">XML_SCHEMAP_MG_PROPS_CORRECT_2</a> = 3075 /* 3075 */
-    <a name="XML_SCHEMAP_SRC_CT_1">XML_SCHEMAP_SRC_CT_1</a> = 3076 /* 3076 */
-    <a name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3">XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3</a> = 3077 /* 3077 */
-    <a name="XML_SCHEMAP_AU_PROPS_CORRECT_2">XML_SCHEMAP_AU_PROPS_CORRECT_2</a> = 3078 /* 3078 */
-    <a name="XML_SCHEMAP_A_PROPS_CORRECT_2">XML_SCHEMAP_A_PROPS_CORRECT_2</a> = 3079 /* 3079 */
-    <a name="XML_SCHEMAP_C_PROPS_CORRECT">XML_SCHEMAP_C_PROPS_CORRECT</a> = 3080 /* 3080 */
-    <a name="XML_SCHEMAP_SRC_REDEFINE">XML_SCHEMAP_SRC_REDEFINE</a> = 3081 /* 3081 */
-    <a name="XML_SCHEMAP_SRC_IMPORT">XML_SCHEMAP_SRC_IMPORT</a> = 3082 /* 3082 */
-    <a name="XML_SCHEMAP_WARN_SKIP_SCHEMA">XML_SCHEMAP_WARN_SKIP_SCHEMA</a> = 3083 /* 3083 */
-    <a name="XML_SCHEMAP_WARN_UNLOCATED_SCHEMA">XML_SCHEMAP_WARN_UNLOCATED_SCHEMA</a> = 3084 /* 3084 */
-    <a name="XML_SCHEMAP_WARN_ATTR_REDECL_PROH">XML_SCHEMAP_WARN_ATTR_REDECL_PROH</a> = 3085 /* 3085 */
-    <a name="XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH">XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH</a> = 3086 /* 3085 */
-    <a name="XML_SCHEMAP_AG_PROPS_CORRECT">XML_SCHEMAP_AG_PROPS_CORRECT</a> = 3087 /* 3086 */
-    <a name="XML_SCHEMAP_COS_CT_EXTENDS_1_2">XML_SCHEMAP_COS_CT_EXTENDS_1_2</a> = 3088 /* 3087 */
-    <a name="XML_SCHEMAP_AU_PROPS_CORRECT">XML_SCHEMAP_AU_PROPS_CORRECT</a> = 3089 /* 3088 */
-    <a name="XML_SCHEMAP_A_PROPS_CORRECT_3">XML_SCHEMAP_A_PROPS_CORRECT_3</a> = 3090 /* 3089 */
-    <a name="XML_SCHEMAP_COS_ALL_LIMITED">XML_SCHEMAP_COS_ALL_LIMITED</a> = 3091 /* 3090 */
-    <a name="XML_SCHEMATRONV_ASSERT">XML_SCHEMATRONV_ASSERT</a> = 4000 /* 4000 */
-    <a name="XML_SCHEMATRONV_REPORT">XML_SCHEMATRONV_REPORT</a> = 4001
-    <a name="XML_MODULE_OPEN">XML_MODULE_OPEN</a> = 4900 /* 4900 */
-    <a name="XML_MODULE_CLOSE">XML_MODULE_CLOSE</a> = 4901 /* 4901 */
-    <a name="XML_CHECK_FOUND_ELEMENT">XML_CHECK_FOUND_ELEMENT</a> = 5000
-    <a name="XML_CHECK_FOUND_ATTRIBUTE">XML_CHECK_FOUND_ATTRIBUTE</a> = 5001 /* 5001 */
-    <a name="XML_CHECK_FOUND_TEXT">XML_CHECK_FOUND_TEXT</a> = 5002 /* 5002 */
-    <a name="XML_CHECK_FOUND_CDATA">XML_CHECK_FOUND_CDATA</a> = 5003 /* 5003 */
-    <a name="XML_CHECK_FOUND_ENTITYREF">XML_CHECK_FOUND_ENTITYREF</a> = 5004 /* 5004 */
-    <a name="XML_CHECK_FOUND_ENTITY">XML_CHECK_FOUND_ENTITY</a> = 5005 /* 5005 */
-    <a name="XML_CHECK_FOUND_PI">XML_CHECK_FOUND_PI</a> = 5006 /* 5006 */
-    <a name="XML_CHECK_FOUND_COMMENT">XML_CHECK_FOUND_COMMENT</a> = 5007 /* 5007 */
-    <a name="XML_CHECK_FOUND_DOCTYPE">XML_CHECK_FOUND_DOCTYPE</a> = 5008 /* 5008 */
-    <a name="XML_CHECK_FOUND_FRAGMENT">XML_CHECK_FOUND_FRAGMENT</a> = 5009 /* 5009 */
-    <a name="XML_CHECK_FOUND_NOTATION">XML_CHECK_FOUND_NOTATION</a> = 5010 /* 5010 */
-    <a name="XML_CHECK_UNKNOWN_NODE">XML_CHECK_UNKNOWN_NODE</a> = 5011 /* 5011 */
-    <a name="XML_CHECK_ENTITY_TYPE">XML_CHECK_ENTITY_TYPE</a> = 5012 /* 5012 */
-    <a name="XML_CHECK_NO_PARENT">XML_CHECK_NO_PARENT</a> = 5013 /* 5013 */
-    <a name="XML_CHECK_NO_DOC">XML_CHECK_NO_DOC</a> = 5014 /* 5014 */
-    <a name="XML_CHECK_NO_NAME">XML_CHECK_NO_NAME</a> = 5015 /* 5015 */
-    <a name="XML_CHECK_NO_ELEM">XML_CHECK_NO_ELEM</a> = 5016 /* 5016 */
-    <a name="XML_CHECK_WRONG_DOC">XML_CHECK_WRONG_DOC</a> = 5017 /* 5017 */
-    <a name="XML_CHECK_NO_PREV">XML_CHECK_NO_PREV</a> = 5018 /* 5018 */
-    <a name="XML_CHECK_WRONG_PREV">XML_CHECK_WRONG_PREV</a> = 5019 /* 5019 */
-    <a name="XML_CHECK_NO_NEXT">XML_CHECK_NO_NEXT</a> = 5020 /* 5020 */
-    <a name="XML_CHECK_WRONG_NEXT">XML_CHECK_WRONG_NEXT</a> = 5021 /* 5021 */
-    <a name="XML_CHECK_NOT_DTD">XML_CHECK_NOT_DTD</a> = 5022 /* 5022 */
-    <a name="XML_CHECK_NOT_ATTR">XML_CHECK_NOT_ATTR</a> = 5023 /* 5023 */
-    <a name="XML_CHECK_NOT_ATTR_DECL">XML_CHECK_NOT_ATTR_DECL</a> = 5024 /* 5024 */
-    <a name="XML_CHECK_NOT_ELEM_DECL">XML_CHECK_NOT_ELEM_DECL</a> = 5025 /* 5025 */
-    <a name="XML_CHECK_NOT_ENTITY_DECL">XML_CHECK_NOT_ENTITY_DECL</a> = 5026 /* 5026 */
-    <a name="XML_CHECK_NOT_NS_DECL">XML_CHECK_NOT_NS_DECL</a> = 5027 /* 5027 */
-    <a name="XML_CHECK_NO_HREF">XML_CHECK_NO_HREF</a> = 5028 /* 5028 */
-    <a name="XML_CHECK_WRONG_PARENT">XML_CHECK_WRONG_PARENT</a> = 5029 /* 5029 */
-    <a name="XML_CHECK_NS_SCOPE">XML_CHECK_NS_SCOPE</a> = 5030 /* 5030 */
-    <a name="XML_CHECK_NS_ANCESTOR">XML_CHECK_NS_ANCESTOR</a> = 5031 /* 5031 */
-    <a name="XML_CHECK_NOT_UTF8">XML_CHECK_NOT_UTF8</a> = 5032 /* 5032 */
-    <a name="XML_CHECK_NO_DICT">XML_CHECK_NO_DICT</a> = 5033 /* 5033 */
-    <a name="XML_CHECK_NOT_NCNAME">XML_CHECK_NOT_NCNAME</a> = 5034 /* 5034 */
-    <a name="XML_CHECK_OUTSIDE_DICT">XML_CHECK_OUTSIDE_DICT</a> = 5035 /* 5035 */
-    <a name="XML_CHECK_WRONG_NAME">XML_CHECK_WRONG_NAME</a> = 5036 /* 5036 */
-    <a name="XML_CHECK_NAME_NOT_NULL">XML_CHECK_NAME_NOT_NULL</a> = 5037 /* 5037 */
-    <a name="XML_I18N_NO_NAME">XML_I18N_NO_NAME</a> = 6000
-    <a name="XML_I18N_NO_HANDLER">XML_I18N_NO_HANDLER</a> = 6001 /* 6001 */
-    <a name="XML_I18N_EXCESS_HANDLER">XML_I18N_EXCESS_HANDLER</a> = 6002 /* 6002 */
-    <a name="XML_I18N_CONV_FAILED">XML_I18N_CONV_FAILED</a> = 6003 /* 6003 */
-    <a name="XML_I18N_NO_OUTPUT">XML_I18N_NO_OUTPUT</a> = 6004 /* 6004 */
-    <a name="XML_BUF_OVERFLOW">XML_BUF_OVERFLOW</a> = 7000
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGenericErrorFunc"></a>Function type xmlGenericErrorFunc</h3>
-<pre class="programlisting">void	xmlGenericErrorFunc		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of the function to use when there is an error and no parsing or validity context available .</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>a parsing context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>the extra arguments of the varargs to format the message</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStructuredErrorFunc"></a>Function type xmlStructuredErrorFunc</h3>
-<pre class="programlisting">void	xmlStructuredErrorFunc		(void * userData, <br>					 const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * error)<br>
-</pre>
-<p>Signature of the function to use when there is an error and the module handles the new error reporting mechanism.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>userData</tt></i>:</span></td>
-<td>user provided data for the error callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>error</tt></i>:</span></td>
-<td>the error being raised.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCopyError"></a>xmlCopyError ()</h3>
-<pre class="programlisting">int	xmlCopyError			(const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * from, <br>					 <a href="libxml2-xmlerror.html#xmlErrorPtr">xmlErrorPtr</a> to)<br>
-</pre>
-<p>Save the original error to the new place.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>from</tt></i>:</span></td>
-<td>a source error</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>to</tt></i>:</span></td>
-<td>a target error</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtGetLastError"></a>xmlCtxtGetLastError ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	xmlCtxtGetLastError	(void * ctx)<br>
-</pre>
-<p>Get the last parsing error registered.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>NULL if no error occurred or a pointer to the error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCtxtResetLastError"></a>xmlCtxtResetLastError ()</h3>
-<pre class="programlisting">void	xmlCtxtResetLastError		(void * ctx)<br>
-</pre>
-<p>Cleanup the last global error registered. For parsing error this does not change the well-formedness result.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFormatError"></a>xmlFormatError ()</h3>
-<pre class="programlisting">void	xmlFormatError			(const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> * err, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> channel, <br>					 void * data)<br>
-</pre>
-<p>Report a formatted error to a printf-like callback. This can result in a verbose multi-line report including additional information from the parser context. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>channel</tt></i>:</span></td>
-<td>callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data for callback</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetLastError"></a>xmlGetLastError ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	xmlGetLastError	(void)<br>
-</pre>
-<p>Get the last global error registered. This is per thread if compiled with thread support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserError"></a>xmlParserError ()</h3>
-<pre class="programlisting">void	xmlParserError			(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format an error messages, gives file, line, position and extra parameters.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserPrintFileContext"></a>xmlParserPrintFileContext ()</h3>
-<pre class="programlisting">void	xmlParserPrintFileContext	(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlerror.html#xmlFormatError">xmlFormatError</a>. Displays current context within the input content for error tracking</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserPrintFileInfo"></a>xmlParserPrintFileInfo ()</h3>
-<pre class="programlisting">void	xmlParserPrintFileInfo		(<a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlerror.html#xmlFormatError">xmlFormatError</a>. Displays the associated file and line information for the current input</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> input</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserValidityError"></a>xmlParserValidityError ()</h3>
-<pre class="programlisting">void	xmlParserValidityError		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format an validity error messages, gives file, line, position and extra parameters.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserValidityWarning"></a>xmlParserValidityWarning ()</h3>
-<pre class="programlisting">void	xmlParserValidityWarning	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format a validity warning messages, gives file, line, position and extra parameters.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserWarning"></a>xmlParserWarning ()</h3>
-<pre class="programlisting">void	xmlParserWarning		(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Display and format a warning messages, gives file, line, position and extra parameters.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>an XML parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message to display/transmit</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message display</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlResetError"></a>xmlResetError ()</h3>
-<pre class="programlisting">void	xmlResetError			(<a href="libxml2-xmlerror.html#xmlErrorPtr">xmlErrorPtr</a> err)<br>
-</pre>
-<p>Cleanup the error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>pointer to the error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlResetLastError"></a>xmlResetLastError ()</h3>
-<pre class="programlisting">void	xmlResetLastError		(void)<br>
-</pre>
-<p>Cleanup the last global error registered. For parsing error this does not change the well-formedness result.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetGenericErrorFunc"></a>xmlSetGenericErrorFunc ()</h3>
-<pre class="programlisting">void	xmlSetGenericErrorFunc		(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> handler)<br>
-</pre>
-<p>DEPRECATED: See <a href="libxml2-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a> for alternatives. Set the global "generic" handler and context for error messages. The generic error handler will only receive fragments of error messages which should be concatenated or printed to a stream. If handler is NULL, use the built-in default handler which prints to stderr. Since this is a global setting, it's a good idea to reset the error handler to its default value after collecting the errors you're interested in. For multi-threaded applications, this must be set separately for each thread.</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 new error handling context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the new handler function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSetStructuredErrorFunc"></a>xmlSetStructuredErrorFunc ()</h3>
-<pre class="programlisting">void	xmlSetStructuredErrorFunc	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler)<br>
-</pre>
-<p>DEPRECATED: Use a per-context error handler. It's recommended to use the per-context error handlers instead: - <a href="libxml2-parser.html#xmlCtxtSetErrorHandler">xmlCtxtSetErrorHandler</a> (since 2.13.0) - <a href="libxml2-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a> - <a href="libxml2-xpath.html#xmlXPathSetErrorHandler">xmlXPathSetErrorHandler</a> (since 2.13.0) - <a href="libxml2-xinclude.html#xmlXIncludeSetErrorHandler">xmlXIncludeSetErrorHandler</a> (since 2.13.0) - <a href="libxml2-xmlschemas.html#xmlSchemaSetParserStructuredErrors">xmlSchemaSetParserStructuredErrors</a> - <a href="libxml2-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a> - <a href="libxml2-relaxng.html#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a> - <a href="libxml2-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a> Set the global "structured" handler and context for error messages. If handler is NULL, the error handler is deactivated. The structured error handler takes precedence over "generic" handlers, even per-context generic handlers. Since this is a global setting, it's a good idea to deactivate the error handler after collecting the errors you're interested in. For multi-threaded applications, this must be set separately for each thread.</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 new error handling context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>the new handler function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefSetGenericErrorFunc"></a>xmlThrDefSetGenericErrorFunc ()</h3>
-<pre class="programlisting">void	xmlThrDefSetGenericErrorFunc	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlGenericErrorFunc">xmlGenericErrorFunc</a> handler)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefSetStructuredErrorFunc"></a>xmlThrDefSetStructuredErrorFunc ()</h3>
-<pre class="programlisting">void	xmlThrDefSetStructuredErrorFunc	(void * ctx, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlexports.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlexports.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlexports.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlexports.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,33 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlexports: macros for marking symbols as exportable/importable.</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlerror.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlmemory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlexports</span></h2>
-<p>xmlexports - macros for marking symbols as exportable/importable.</p>
-<p>macros for marking symbols as exportable/importable. </p>
-<p>Author(s): </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis"></pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en"></div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlmemory.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlmemory.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlmemory.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlmemory.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,662 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlmemory: interface for the memory allocator</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlexports.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlmodule.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlmemory</span></h2>
-<p>xmlmemory - interface for the memory allocator</p>
-<p>provides interfaces for the memory allocator, including debugging capabilities. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">void	<a href="#xmlCleanupMemory">xmlCleanupMemory</a>		(void);
-typedef void <a href="#xmlFreeFunc">xmlFreeFunc</a>			(void * mem);
-int	<a href="#xmlGcMemGet">xmlGcMemGet</a>			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> * freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocAtomicFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> * reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> * strdupFunc);
-int	<a href="#xmlGcMemSetup">xmlGcMemSetup</a>			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocAtomicFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> strdupFunc);
-int	<a href="#xmlInitMemory">xmlInitMemory</a>			(void);
-void *	<a href="#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a>		(size_t size, <br>					 const char * file, <br>					 int line);
-typedef void * <a href="#xmlMallocFunc">xmlMallocFunc</a>			(size_t size);
-void *	<a href="#xmlMallocLoc">xmlMallocLoc</a>			(size_t size, <br>					 const char * file, <br>					 int line);
-int	<a href="#xmlMemBlocks">xmlMemBlocks</a>			(void);
-void	<a href="#xmlMemDisplay">xmlMemDisplay</a>			(FILE * fp);
-void	<a href="#xmlMemDisplayLast">xmlMemDisplayLast</a>		(FILE * fp, <br>					 long nbBytes);
-void	<a href="#xmlMemFree">xmlMemFree</a>			(void * ptr);
-int	<a href="#xmlMemGet">xmlMemGet</a>			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> * freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> * reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> * strdupFunc);
-void *	<a href="#xmlMemMalloc">xmlMemMalloc</a>			(size_t size);
-void *	<a href="#xmlMemRealloc">xmlMemRealloc</a>			(void * ptr, <br>					 size_t size);
-int	<a href="#xmlMemSetup">xmlMemSetup</a>			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> strdupFunc);
-void	<a href="#xmlMemShow">xmlMemShow</a>			(FILE * fp, <br>					 int nr);
-size_t	<a href="#xmlMemSize">xmlMemSize</a>			(void * ptr);
-char *	<a href="#xmlMemStrdupLoc">xmlMemStrdupLoc</a>			(const char * str, <br>					 const char * file, <br>					 int line);
-int	<a href="#xmlMemUsed">xmlMemUsed</a>			(void);
-void	<a href="#xmlMemoryDump">xmlMemoryDump</a>			(void);
-char *	<a href="#xmlMemoryStrdup">xmlMemoryStrdup</a>			(const char * str);
-typedef void * <a href="#xmlReallocFunc">xmlReallocFunc</a>			(void * mem, <br>					 size_t size);
-void *	<a href="#xmlReallocLoc">xmlReallocLoc</a>			(void * ptr, <br>					 size_t size, <br>					 const char * file, <br>					 int line);
-typedef char * <a href="#xmlStrdupFunc">xmlStrdupFunc</a>			(const char * str);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeFunc"></a>Function type xmlFreeFunc</h3>
-<pre class="programlisting">void	xmlFreeFunc			(void * mem)<br>
-</pre>
-<p>Signature for a free() implementation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>an already allocated block of memory</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMallocFunc"></a>Function type xmlMallocFunc</h3>
-<pre class="programlisting">void *	xmlMallocFunc			(size_t size)<br>
-</pre>
-<p>Signature for a malloc() implementation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the size requested in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the newly allocated block or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReallocFunc"></a>Function type xmlReallocFunc</h3>
-<pre class="programlisting">void *	xmlReallocFunc			(void * mem, <br>					 size_t size)<br>
-</pre>
-<p>Signature for a realloc() implementation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>mem</tt></i>:</span></td>
-<td>an already allocated block of memory</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>the new size requested in bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the newly reallocated block or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrdupFunc"></a>Function type xmlStrdupFunc</h3>
-<pre class="programlisting">char *	xmlStrdupFunc			(const char * str)<br>
-</pre>
-<p>Signature for an strdup() implementation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copy of the string or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFree">Variable </a>xmlFree</h3>
-<pre class="programlisting"><a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> xmlFree;
-</pre>
-<p>@mem: an already allocated block of memory The variable holding the libxml free() implementation</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMalloc">Variable </a>xmlMalloc</h3>
-<pre class="programlisting"><a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> xmlMalloc;
-</pre>
-<p>@size: the size requested in bytes The variable holding the libxml malloc() implementation Returns a pointer to the newly allocated block or NULL in case of error</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMallocAtomic">Variable </a>xmlMallocAtomic</h3>
-<pre class="programlisting"><a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> xmlMallocAtomic;
-</pre>
-<p>@size: the size requested in bytes The variable holding the libxml malloc() implementation for atomic data (i.e. blocks not containing pointers), useful when using a garbage collecting allocator. Returns a pointer to the newly allocated block or NULL in case of error</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemStrdup">Variable </a>xmlMemStrdup</h3>
-<pre class="programlisting"><a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> xmlMemStrdup;
-</pre>
-<p>@str: a zero terminated string The variable holding the libxml strdup() implementation Returns the copy of the string or NULL in case of error</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRealloc">Variable </a>xmlRealloc</h3>
-<pre class="programlisting"><a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> xmlRealloc;
-</pre>
-<p>@mem: an already allocated block of memory @size: the new size requested in bytes The variable holding the libxml realloc() implementation Returns a pointer to the newly reallocated block or NULL in case of error</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCleanupMemory"></a>xmlCleanupMemory ()</h3>
-<pre class="programlisting">void	xmlCleanupMemory		(void)<br>
-</pre>
-<p>DEPRECATED: This function is a no-op. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have call cleanup functions at all.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGcMemGet"></a>xmlGcMemGet ()</h3>
-<pre class="programlisting">int	xmlGcMemGet			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> * freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocAtomicFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> * reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> * strdupFunc)<br>
-</pre>
-<p>DEPRECATED: <a href="libxml2-xmlmemory.html#xmlMemGet">xmlMemGet</a>. 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>freeFunc</tt></i>:</span></td>
-<td>place to save the free() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocFunc</tt></i>:</span></td>
-<td>place to save the malloc() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocAtomicFunc</tt></i>:</span></td>
-<td>place to save the atomic malloc() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>reallocFunc</tt></i>:</span></td>
-<td>place to save the realloc() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strdupFunc</tt></i>:</span></td>
-<td>place to save the strdup() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGcMemSetup"></a>xmlGcMemSetup ()</h3>
-<pre class="programlisting">int	xmlGcMemSetup			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocAtomicFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> strdupFunc)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlmemory.html#xmlMemSetup">xmlMemSetup</a>. 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 ?</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>freeFunc</tt></i>:</span></td>
-<td>the free() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocFunc</tt></i>:</span></td>
-<td>the malloc() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocAtomicFunc</tt></i>:</span></td>
-<td>the malloc() function to use for atomic allocations</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>reallocFunc</tt></i>:</span></td>
-<td>the realloc() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strdupFunc</tt></i>:</span></td>
-<td>the strdup() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlInitMemory"></a>xmlInitMemory ()</h3>
-<pre class="programlisting">int	xmlInitMemory			(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMallocAtomicLoc"></a>xmlMallocAtomicLoc ()</h3>
-<pre class="programlisting">void *	xmlMallocAtomicLoc		(size_t size, <br>					 const char * file, <br>					 int line)<br>
-</pre>
-<p>DEPRECATED: don't use</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>an unsigned int specifying the size in byte to allocate.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>the line number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the allocated area or NULL in case of lack of memory.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMallocLoc"></a>xmlMallocLoc ()</h3>
-<pre class="programlisting">void *	xmlMallocLoc			(size_t size, <br>					 const char * file, <br>					 int line)<br>
-</pre>
-<p>DEPRECATED: don't use</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>an int specifying the size in byte to allocate.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>the line number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the allocated area or NULL in case of lack of memory.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemBlocks"></a>xmlMemBlocks ()</h3>
-<pre class="programlisting">int	xmlMemBlocks			(void)<br>
-</pre>
-<p>Provides the number of memory areas currently allocated</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int representing the number of blocks</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemDisplay"></a>xmlMemDisplay ()</h3>
-<pre class="programlisting">void	xmlMemDisplay			(FILE * fp)<br>
-</pre>
-<p>DEPRECATED: This feature was removed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>fp</tt></i>:</span></td>
-<td>a FILE descriptor</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemDisplayLast"></a>xmlMemDisplayLast ()</h3>
-<pre class="programlisting">void	xmlMemDisplayLast		(FILE * fp, <br>					 long nbBytes)<br>
-</pre>
-<p>DEPRECATED: This feature was removed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fp</tt></i>:</span></td>
-<td>a FILE descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbBytes</tt></i>:</span></td>
-<td>the amount of memory to dump</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemFree"></a>xmlMemFree ()</h3>
-<pre class="programlisting">void	xmlMemFree			(void * ptr)<br>
-</pre>
-<p>a free() equivalent, with error checking.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ptr</tt></i>:</span></td>
-<td>the memory block pointer</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemGet"></a>xmlMemGet ()</h3>
-<pre class="programlisting">int	xmlMemGet			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> * freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> * mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> * reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> * strdupFunc)<br>
-</pre>
-<p>Provides the memory access functions set currently in use</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>freeFunc</tt></i>:</span></td>
-<td>place to save the free() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocFunc</tt></i>:</span></td>
-<td>place to save the malloc() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>reallocFunc</tt></i>:</span></td>
-<td>place to save the realloc() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strdupFunc</tt></i>:</span></td>
-<td>place to save the strdup() function in use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemMalloc"></a>xmlMemMalloc ()</h3>
-<pre class="programlisting">void *	xmlMemMalloc			(size_t size)<br>
-</pre>
-<p>a malloc() equivalent, with logging of the allocation info.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>an int specifying the size in byte to allocate.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the allocated area or NULL in case of lack of memory.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemRealloc"></a>xmlMemRealloc ()</h3>
-<pre class="programlisting">void *	xmlMemRealloc			(void * ptr, <br>					 size_t size)<br>
-</pre>
-<p>a realloc() equivalent, with logging of the allocation info.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ptr</tt></i>:</span></td>
-<td>the initial memory block pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>an int specifying the size in byte to allocate.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the allocated area or NULL in case of lack of memory.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemSetup"></a>xmlMemSetup ()</h3>
-<pre class="programlisting">int	xmlMemSetup			(<a href="libxml2-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a> freeFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a> mallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a> reallocFunc, <br>					 <a href="libxml2-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a> strdupFunc)<br>
-</pre>
-<p>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 ?</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>freeFunc</tt></i>:</span></td>
-<td>the free() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>mallocFunc</tt></i>:</span></td>
-<td>the malloc() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>reallocFunc</tt></i>:</span></td>
-<td>the realloc() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strdupFunc</tt></i>:</span></td>
-<td>the strdup() function to use</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemShow"></a>xmlMemShow ()</h3>
-<pre class="programlisting">void	xmlMemShow			(FILE * fp, <br>					 int nr)<br>
-</pre>
-<p>DEPRECATED: This feature was removed.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fp</tt></i>:</span></td>
-<td>a FILE descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nr</tt></i>:</span></td>
-<td>number of entries to dump</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemSize"></a>xmlMemSize ()</h3>
-<pre class="programlisting">size_t	xmlMemSize			(void * ptr)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ptr</tt></i>:</span></td>
-<td>pointer to the memory allocation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the size of a memory allocation.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemStrdupLoc"></a>xmlMemStrdupLoc ()</h3>
-<pre class="programlisting">char *	xmlMemStrdupLoc			(const char * str, <br>					 const char * file, <br>					 int line)<br>
-</pre>
-<p>DEPRECATED: don't use</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the initial string pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>the line number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new string or NULL if allocation error occurred.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemUsed"></a>xmlMemUsed ()</h3>
-<pre class="programlisting">int	xmlMemUsed			(void)<br>
-</pre>
-<p>Provides the amount of memory currently allocated</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int representing the amount of memory allocated.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemoryDump"></a>xmlMemoryDump ()</h3>
-<pre class="programlisting">void	xmlMemoryDump			(void)<br>
-</pre>
-<p>DEPRECATED: This feature was removed.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlMemoryStrdup"></a>xmlMemoryStrdup ()</h3>
-<pre class="programlisting">char *	xmlMemoryStrdup			(const char * str)<br>
-</pre>
-<p>a strdup() equivalent, with logging of the allocation info.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the initial string pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new string or NULL if allocation error occurred.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReallocLoc"></a>xmlReallocLoc ()</h3>
-<pre class="programlisting">void *	xmlReallocLoc			(void * ptr, <br>					 size_t size, <br>					 const char * file, <br>					 int line)<br>
-</pre>
-<p>DEPRECATED: don't use</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ptr</tt></i>:</span></td>
-<td>the initial memory block pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>size</tt></i>:</span></td>
-<td>an int specifying the size in byte to allocate.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>the line number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the allocated area or NULL in case of lack of memory.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlmodule.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlmodule.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlmodule.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlmodule.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,167 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlmodule: dynamic module loading</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlmemory.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlreader.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlmodule</span></h2>
-<p>xmlmodule - dynamic module loading</p>
-<p>basic API for dynamic module loading, used by libexslt added in 2.6.17 </p>
-<p>Author(s): Joel W. Reed </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlModule <a href="#xmlModule">xmlModule</a>;
-typedef enum <a href="#xmlModuleOption">xmlModuleOption</a>;
-typedef <a href="libxml2-xmlmodule.html#xmlModule">xmlModule</a> * <a href="#xmlModulePtr">xmlModulePtr</a>;
-int	<a href="#xmlModuleClose">xmlModuleClose</a>			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module);
-int	<a href="#xmlModuleFree">xmlModuleFree</a>			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module);
-<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a>	<a href="#xmlModuleOpen">xmlModuleOpen</a>		(const char * name, <br>					 int options);
-int	<a href="#xmlModuleSymbol">xmlModuleSymbol</a>			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module, <br>					 const char * name, <br>					 void ** symbol);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModule">Structure </a>xmlModule</h3>
-<pre class="programlisting">struct _xmlModule {
-The content of this structure is not made public by the API.
-} xmlModule;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModuleOption">Enum </a>xmlModuleOption</h3>
-<pre class="programlisting">enum <a href="#xmlModuleOption">xmlModuleOption</a> {
-    <a name="XML_MODULE_LAZY">XML_MODULE_LAZY</a> = 1 /* lazy binding */
-    <a name="XML_MODULE_LOCAL">XML_MODULE_LOCAL</a> = 2 /*  local binding */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModulePtr">Typedef </a>xmlModulePtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlmodule.html#xmlModule">xmlModule</a> * xmlModulePtr;
-</pre>
-<p>A handle to a dynamically loaded module</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModuleClose"></a>xmlModuleClose ()</h3>
-<pre class="programlisting">int	xmlModuleClose			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module)<br>
-</pre>
-<p>The close operations unload the associated module and free the data associated to the module.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>module</tt></i>:</span></td>
-<td>the module handle</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of argument error and -2 if the module could not be closed/unloaded.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModuleFree"></a>xmlModuleFree ()</h3>
-<pre class="programlisting">int	xmlModuleFree			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module)<br>
-</pre>
-<p>The free operations free the data associated to the module but does not unload the associated shared library which may still be in use.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>module</tt></i>:</span></td>
-<td>the module handle</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of argument error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModuleOpen"></a>xmlModuleOpen ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a>	xmlModuleOpen		(const char * name, <br>					 int options)<br>
-</pre>
-<p>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * . TODO: options are not yet implemented.</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 module name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of <a href="libxml2-xmlmodule.html#xmlModuleOption">xmlModuleOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a handle for the module or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlModuleSymbol"></a>xmlModuleSymbol ()</h3>
-<pre class="programlisting">int	xmlModuleSymbol			(<a href="libxml2-xmlmodule.html#xmlModulePtr">xmlModulePtr</a> module, <br>					 const char * name, <br>					 void ** symbol)<br>
-</pre>
-<p>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * .</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>module</tt></i>:</span></td>
-<td>the module</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the symbol</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>symbol</tt></i>:</span></td>
-<td>the resulting symbol address</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the symbol was found, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlreader.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlreader.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlreader.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlreader.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,2418 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlreader: the XMLReader implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlmodule.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlregexp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlreader</span></h2>
-<p>xmlreader - the XMLReader implementation</p>
-<p>API of the XML streaming API based on C# interfaces. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef enum <a href="#xmlParserProperties">xmlParserProperties</a>;
-typedef enum <a href="#xmlParserSeverities">xmlParserSeverities</a>;
-typedef enum <a href="#xmlReaderTypes">xmlReaderTypes</a>;
-typedef struct _xmlTextReader <a href="#xmlTextReader">xmlTextReader</a>;
-typedef void * <a href="#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a>;
-typedef enum <a href="#xmlTextReaderMode">xmlTextReaderMode</a>;
-typedef <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a> * <a href="#xmlTextReaderPtr">xmlTextReaderPtr</a>;
-void	<a href="#xmlFreeTextReader">xmlFreeTextReader</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlNewTextReader">xmlNewTextReader</a>	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>						 const char * URI);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlNewTextReaderFilename">xmlNewTextReaderFilename</a>	(const char * URI);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderForDoc">xmlReaderForDoc</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderForFd">xmlReaderForFd</a>	(int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderForFile">xmlReaderForFile</a>	(const char * filename, <br>						 const char * encoding, <br>						 int options);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderForIO">xmlReaderForIO</a>	(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderForMemory">xmlReaderForMemory</a>	(const char * buffer, <br>						 int size, <br>						 const char * URL, <br>						 const char * encoding, <br>						 int options);
-int	<a href="#xmlReaderNewDoc">xmlReaderNewDoc</a>			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlReaderNewFd">xmlReaderNewFd</a>			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlReaderNewFile">xmlReaderNewFile</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlReaderNewIO">xmlReaderNewIO</a>			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlReaderNewMemory">xmlReaderNewMemory</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlReaderNewWalker">xmlReaderNewWalker</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	<a href="#xmlReaderWalker">xmlReaderWalker</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlTextReaderAttributeCount">xmlTextReaderAttributeCount</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderBaseUri">xmlTextReaderBaseUri</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-long	<a href="#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderClose">xmlTextReaderClose</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstBaseUri">xmlTextReaderConstBaseUri</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstEncoding">xmlTextReaderConstEncoding</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstLocalName">xmlTextReaderConstLocalName</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstName">xmlTextReaderConstName</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstNamespaceUri">xmlTextReaderConstNamespaceUri</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstPrefix">xmlTextReaderConstPrefix</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstString">xmlTextReaderConstString</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstValue">xmlTextReaderConstValue</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstXmlLang">xmlTextReaderConstXmlLang</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderConstXmlVersion">xmlTextReaderConstXmlVersion</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderDepth">xmlTextReaderDepth</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-typedef void <a href="#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a>		(void * arg, <br>					 const char * msg, <br>					 <a href="libxml2-xmlreader.html#xmlParserSeverities">xmlParserSeverities</a> severity, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlTextReaderExpand">xmlTextReaderExpand</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderGetAttribute">xmlTextReaderGetAttribute</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderGetAttributeNo">xmlTextReaderGetAttributeNo</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 int no);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderGetAttributeNs">xmlTextReaderGetAttributeNs</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI);
-void	<a href="#xmlTextReaderGetErrorHandler">xmlTextReaderGetErrorHandler</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a> * f, <br>					 void ** arg);
-const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	<a href="#xmlTextReaderGetLastError">xmlTextReaderGetLastError</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderGetParserColumnNumber">xmlTextReaderGetParserColumnNumber</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderGetParserLineNumber">xmlTextReaderGetParserLineNumber</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderGetParserProp">xmlTextReaderGetParserProp</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int prop);
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	<a href="#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderHasAttributes">xmlTextReaderHasAttributes</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderHasValue">xmlTextReaderHasValue</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderIsDefault">xmlTextReaderIsDefault</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderIsEmptyElement">xmlTextReaderIsEmptyElement</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderIsNamespaceDecl">xmlTextReaderIsNamespaceDecl</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderIsValid">xmlTextReaderIsValid</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderLocalName">xmlTextReaderLocalName</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderLocatorBaseURI">xmlTextReaderLocatorBaseURI</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator);
-int	<a href="#xmlTextReaderLocatorLineNumber">xmlTextReaderLocatorLineNumber</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderLookupNamespace">xmlTextReaderLookupNamespace</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-int	<a href="#xmlTextReaderMoveToAttribute">xmlTextReaderMoveToAttribute</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextReaderMoveToAttributeNo">xmlTextReaderMoveToAttributeNo</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int no);
-int	<a href="#xmlTextReaderMoveToAttributeNs">xmlTextReaderMoveToAttributeNs</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI);
-int	<a href="#xmlTextReaderMoveToElement">xmlTextReaderMoveToElement</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderMoveToFirstAttribute">xmlTextReaderMoveToFirstAttribute</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderMoveToNextAttribute">xmlTextReaderMoveToNextAttribute</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderName">xmlTextReaderName</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderNamespaceUri">xmlTextReaderNamespaceUri</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderNext">xmlTextReaderNext</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderNodeType">xmlTextReaderNodeType</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderNormalization">xmlTextReaderNormalization</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderPrefix">xmlTextReaderPrefix</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlTextReaderPreserve">xmlTextReaderPreserve</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces);
-int	<a href="#xmlTextReaderQuoteChar">xmlTextReaderQuoteChar</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderRead">xmlTextReaderRead</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderReadAttributeValue">xmlTextReaderReadAttributeValue</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderReadState">xmlTextReaderReadState</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderReadString">xmlTextReaderReadString</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-int	<a href="#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema);
-int	<a href="#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * rng);
-int	<a href="#xmlTextReaderRelaxNGValidateCtxt">xmlTextReaderRelaxNGValidateCtxt</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 <a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>						 int options);
-int	<a href="#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * xsd);
-int	<a href="#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 int options);
-void	<a href="#xmlTextReaderSetErrorHandler">xmlTextReaderSetErrorHandler</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a> f, <br>					 void * arg);
-void	<a href="#xmlTextReaderSetMaxAmplification">xmlTextReaderSetMaxAmplification</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 unsigned maxAmpl);
-int	<a href="#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int prop, <br>					 int value);
-void	<a href="#xmlTextReaderSetResourceLoader">xmlTextReaderSetResourceLoader</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data);
-int	<a href="#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema);
-void	<a href="#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> f, <br>						 void * arg);
-int	<a href="#xmlTextReaderSetup">xmlTextReaderSetup</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options);
-int	<a href="#xmlTextReaderStandalone">xmlTextReaderStandalone</a>		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderValue">xmlTextReaderValue</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlTextReaderXmlLang">xmlTextReaderXmlLang</a>	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserProperties">Enum </a>xmlParserProperties</h3>
-<pre class="programlisting">enum <a href="#xmlParserProperties">xmlParserProperties</a> {
-    <a name="XML_PARSER_LOADDTD">XML_PARSER_LOADDTD</a> = 1
-    <a name="XML_PARSER_DEFAULTATTRS">XML_PARSER_DEFAULTATTRS</a> = 2
-    <a name="XML_PARSER_VALIDATE">XML_PARSER_VALIDATE</a> = 3
-    <a name="XML_PARSER_SUBST_ENTITIES">XML_PARSER_SUBST_ENTITIES</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlParserSeverities">Enum </a>xmlParserSeverities</h3>
-<pre class="programlisting">enum <a href="#xmlParserSeverities">xmlParserSeverities</a> {
-    <a name="XML_PARSER_SEVERITY_VALIDITY_WARNING">XML_PARSER_SEVERITY_VALIDITY_WARNING</a> = 1
-    <a name="XML_PARSER_SEVERITY_VALIDITY_ERROR">XML_PARSER_SEVERITY_VALIDITY_ERROR</a> = 2
-    <a name="XML_PARSER_SEVERITY_WARNING">XML_PARSER_SEVERITY_WARNING</a> = 3
-    <a name="XML_PARSER_SEVERITY_ERROR">XML_PARSER_SEVERITY_ERROR</a> = 4
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderTypes">Enum </a>xmlReaderTypes</h3>
-<pre class="programlisting">enum <a href="#xmlReaderTypes">xmlReaderTypes</a> {
-    <a name="XML_READER_TYPE_NONE">XML_READER_TYPE_NONE</a> = 0
-    <a name="XML_READER_TYPE_ELEMENT">XML_READER_TYPE_ELEMENT</a> = 1
-    <a name="XML_READER_TYPE_ATTRIBUTE">XML_READER_TYPE_ATTRIBUTE</a> = 2
-    <a name="XML_READER_TYPE_TEXT">XML_READER_TYPE_TEXT</a> = 3
-    <a name="XML_READER_TYPE_CDATA">XML_READER_TYPE_CDATA</a> = 4
-    <a name="XML_READER_TYPE_ENTITY_REFERENCE">XML_READER_TYPE_ENTITY_REFERENCE</a> = 5
-    <a name="XML_READER_TYPE_ENTITY">XML_READER_TYPE_ENTITY</a> = 6
-    <a name="XML_READER_TYPE_PROCESSING_INSTRUCTION">XML_READER_TYPE_PROCESSING_INSTRUCTION</a> = 7
-    <a name="XML_READER_TYPE_COMMENT">XML_READER_TYPE_COMMENT</a> = 8
-    <a name="XML_READER_TYPE_DOCUMENT">XML_READER_TYPE_DOCUMENT</a> = 9
-    <a name="XML_READER_TYPE_DOCUMENT_TYPE">XML_READER_TYPE_DOCUMENT_TYPE</a> = 10
-    <a name="XML_READER_TYPE_DOCUMENT_FRAGMENT">XML_READER_TYPE_DOCUMENT_FRAGMENT</a> = 11
-    <a name="XML_READER_TYPE_NOTATION">XML_READER_TYPE_NOTATION</a> = 12
-    <a name="XML_READER_TYPE_WHITESPACE">XML_READER_TYPE_WHITESPACE</a> = 13
-    <a name="XML_READER_TYPE_SIGNIFICANT_WHITESPACE">XML_READER_TYPE_SIGNIFICANT_WHITESPACE</a> = 14
-    <a name="XML_READER_TYPE_END_ELEMENT">XML_READER_TYPE_END_ELEMENT</a> = 15
-    <a name="XML_READER_TYPE_END_ENTITY">XML_READER_TYPE_END_ENTITY</a> = 16
-    <a name="XML_READER_TYPE_XML_DECLARATION">XML_READER_TYPE_XML_DECLARATION</a> = 17
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReader">Structure </a>xmlTextReader</h3>
-<pre class="programlisting">struct _xmlTextReader {
-The content of this structure is not made public by the API.
-} xmlTextReader;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderLocatorPtr">Typedef </a>xmlTextReaderLocatorPtr</h3>
-<pre class="programlisting">void * xmlTextReaderLocatorPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMode">Enum </a>xmlTextReaderMode</h3>
-<pre class="programlisting">enum <a href="#xmlTextReaderMode">xmlTextReaderMode</a> {
-    <a name="XML_TEXTREADER_MODE_INITIAL">XML_TEXTREADER_MODE_INITIAL</a> = 0
-    <a name="XML_TEXTREADER_MODE_INTERACTIVE">XML_TEXTREADER_MODE_INTERACTIVE</a> = 1
-    <a name="XML_TEXTREADER_MODE_ERROR">XML_TEXTREADER_MODE_ERROR</a> = 2
-    <a name="XML_TEXTREADER_MODE_EOF">XML_TEXTREADER_MODE_EOF</a> = 3
-    <a name="XML_TEXTREADER_MODE_CLOSED">XML_TEXTREADER_MODE_CLOSED</a> = 4
-    <a name="XML_TEXTREADER_MODE_READING">XML_TEXTREADER_MODE_READING</a> = 5
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderPtr">Typedef </a>xmlTextReaderPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a> * xmlTextReaderPtr;
-</pre>
-<p>Pointer to an xmlReader context.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderErrorFunc"></a>Function type xmlTextReaderErrorFunc</h3>
-<pre class="programlisting">void	xmlTextReaderErrorFunc		(void * arg, <br>					 const char * msg, <br>					 <a href="libxml2-xmlreader.html#xmlParserSeverities">xmlParserSeverities</a> severity, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator)<br>
-</pre>
-<p>Signature of an error callback from a reader parser</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>arg</tt></i>:</span></td>
-<td>the user argument</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>severity</tt></i>:</span></td>
-<td>the severity of the error</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>locator</tt></i>:</span></td>
-<td>a locator indicating where the error occurred</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeTextReader"></a>xmlFreeTextReader ()</h3>
-<pre class="programlisting">void	xmlFreeTextReader		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Deallocate all the resources associated to the reader</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextReader"></a>xmlNewTextReader ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlNewTextReader	(<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>						 const char * URI)<br>
-</pre>
-<p>Create an <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a> structure fed with @input</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> used to read data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI information for the source if available</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextReaderFilename"></a>xmlNewTextReaderFilename ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlNewTextReaderFilename	(const char * URI)<br>
-</pre>
-<p>Create an <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a> structure fed with the resource at @URI</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URI</tt></i>:</span></td>
-<td>the URI of the resource to process</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderForDoc"></a>xmlReaderForDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderForDoc	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>.</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 a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderForFd"></a>xmlReaderForFd ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderForFd	(int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create an xmltextReader for an XML from a file descriptor. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. NOTE that the file descriptor will not be closed when the reader is closed or reset.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderForFile"></a>xmlReaderForFile ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderForFile	(const char * filename, <br>						 const char * encoding, <br>						 int options)<br>
-</pre>
-<p>parse an XML file from the filesystem or the network. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderForIO"></a>xmlReaderForIO ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderForIO	(<a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create an xmltextReader for an XML document from I/O functions and source. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderForMemory"></a>xmlReaderForMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderForMemory	(const char * buffer, <br>						 int size, <br>						 const char * URL, <br>						 const char * encoding, <br>						 int options)<br>
-</pre>
-<p>Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewDoc"></a>xmlReaderNewDoc ()</h3>
-<pre class="programlisting">int	xmlReaderNewDoc			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>a pointer to a zero terminated string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewFd"></a>xmlReaderNewFd ()</h3>
-<pre class="programlisting">int	xmlReaderNewFd			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int fd, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>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 <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>an open file descriptor</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewFile"></a>xmlReaderNewFile ()</h3>
-<pre class="programlisting">int	xmlReaderNewFile		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>parse an XML file from the filesystem or the network. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file or URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewIO"></a>xmlReaderNewIO ()</h3>
-<pre class="programlisting">int	xmlReaderNewIO			(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a> ioread, <br>					 <a href="libxml2-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Setup an xmltextReader to parse an XML document from I/O functions and source. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioread</tt></i>:</span></td>
-<td>an I/O read function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewMemory"></a>xmlReaderNewMemory ()</h3>
-<pre class="programlisting">int	xmlReaderNewMemory		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * buffer, <br>					 int size, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a 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>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderNewWalker"></a>xmlReaderNewWalker ()</h3>
-<pre class="programlisting">int	xmlReaderNewWalker		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Setup an xmltextReader to parse a preparsed XML document. This reuses the existing @reader <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a preparsed document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlReaderWalker"></a>xmlReaderWalker ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a>	xmlReaderWalker	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Create an xmltextReader for a preparsed document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a preparsed document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new reader or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderAttributeCount"></a>xmlTextReaderAttributeCount ()</h3>
-<pre class="programlisting">int	xmlTextReaderAttributeCount	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Provides the number of attributes of the current node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 i no attributes, -1 in case of error or the attribute count</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderBaseUri"></a>xmlTextReaderBaseUri ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderBaseUri	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The base URI of the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the base URI or NULL if not available, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderByteConsumed"></a>xmlTextReaderByteConsumed ()</h3>
-<pre class="programlisting">long	xmlTextReaderByteConsumed	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>DEPRECATED: The returned value is mostly random and useless. It reflects the parser reading ahead and is in no way related to the current node. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the index in bytes from the beginning of the entity or -1 in case the index could not be computed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderClose"></a>xmlTextReaderClose ()</h3>
-<pre class="programlisting">int	xmlTextReaderClose		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>This method releases any resources allocated by the current instance changes the state to Closed and close any underlying input.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstBaseUri"></a>xmlTextReaderConstBaseUri ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstBaseUri	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The base URI of the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the base URI or NULL if not available, the string will be deallocated with the reader</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstEncoding"></a>xmlTextReaderConstEncoding ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstEncoding	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Determine the encoding of the document being read.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the encoding of the document or NULL in case of error. The string is deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstLocalName"></a>xmlTextReaderConstLocalName ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstLocalName	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The local name of the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local name or NULL if not available, the string will be deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstName"></a>xmlTextReaderConstName ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstName	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The qualified name of the node, equal to Prefix :LocalName.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local name or NULL if not available, the string is deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstNamespaceUri"></a>xmlTextReaderConstNamespaceUri ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstNamespaceUri	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The URI defining the namespace associated with the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace URI or NULL if not available, the string will be deallocated with the reader</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstPrefix"></a>xmlTextReaderConstPrefix ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstPrefix	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>A shorthand reference to the namespace associated with the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the prefix or NULL if not available, the string is deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstString"></a>xmlTextReaderConstString ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstString	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Get an interned string from the reader, allows for example to speedup string name comparisons</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the string to intern.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an interned copy of the string or NULL in case of error. The string will be deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstValue"></a>xmlTextReaderConstValue ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstValue	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Provides the text value of the node if present</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the string or NULL if not available. The result will be deallocated on the next Read() operation.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstXmlLang"></a>xmlTextReaderConstXmlLang ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstXmlLang	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The xml:lang scope within which the node resides.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the xml:lang value or NULL if none exists.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderConstXmlVersion"></a>xmlTextReaderConstXmlVersion ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderConstXmlVersion	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Determine the XML version of the document being read.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the XML version of the document or NULL in case of error. The string is deallocated with the reader.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderCurrentDoc"></a>xmlTextReaderCurrentDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlTextReaderCurrentDoc	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Hacking interface allowing to get the <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> corresponding to the current document being accessed by the <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>. 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderCurrentNode"></a>xmlTextReaderCurrentNode ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlTextReaderCurrentNode	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Hacking interface allowing to get the <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> corresponding to the current node being accessed by the <a href="libxml2-xmlreader.html#xmlTextReader">xmlTextReader</a>. This is dangerous because the underlying node may be destroyed on the next Reads.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderDepth"></a>xmlTextReaderDepth ()</h3>
-<pre class="programlisting">int	xmlTextReaderDepth		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The depth of the node in the tree.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the depth or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderExpand"></a>xmlTextReaderExpand ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlTextReaderExpand	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Reads the contents of the current node and the full subtree. It then makes the subtree available until the next xmlTextReaderRead() call</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a node pointer valid until the next xmlTextReaderRead() call or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetAttribute"></a>xmlTextReaderGetAttribute ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderGetAttribute	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Provides the value of the attribute with the specified qualified name.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the qualified name of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetAttributeNo"></a>xmlTextReaderGetAttributeNo ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderGetAttributeNo	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 int no)<br>
-</pre>
-<p>Provides the value of the attribute with the specified index relative to the containing element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>no</tt></i>:</span></td>
-<td>the zero-based index of the attribute relative to the containing element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetAttributeNs"></a>xmlTextReaderGetAttributeNs ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderGetAttributeNs	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)<br>
-</pre>
-<p>Provides the value of the specified attribute</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localName</tt></i>:</span></td>
-<td>the local name of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>the namespace URI of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetErrorHandler"></a>xmlTextReaderGetErrorHandler ()</h3>
-<pre class="programlisting">void	xmlTextReaderGetErrorHandler	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a> * f, <br>					 void ** arg)<br>
-</pre>
-<p>Retrieve the error callback function and user argument.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the callback function or NULL is no callback has been registered</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>arg</tt></i>:</span></td>
-<td>a user argument</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetLastError"></a>xmlTextReaderGetLastError ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlerror.html#xmlError">xmlError</a> *	xmlTextReaderGetLastError	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the last error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetParserColumnNumber"></a>xmlTextReaderGetParserColumnNumber ()</h3>
-<pre class="programlisting">int	xmlTextReaderGetParserColumnNumber	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Provide the column number of the current parsing point.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the user data (XML reader context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int or 0 if not available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetParserLineNumber"></a>xmlTextReaderGetParserLineNumber ()</h3>
-<pre class="programlisting">int	xmlTextReaderGetParserLineNumber	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Provide the line number of the current parsing point.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the user data (XML reader context)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an int or 0 if not available</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetParserProp"></a>xmlTextReaderGetParserProp ()</h3>
-<pre class="programlisting">int	xmlTextReaderGetParserProp	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int prop)<br>
-</pre>
-<p>Read the parser internal property.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prop</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlParserProperties">xmlParserProperties</a> to get</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value, usually 0 or 1, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderGetRemainder"></a>xmlTextReaderGetRemainder ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a>	xmlTextReaderGetRemainder	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>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 progressed past what's left in reader-&gt;input, and there is an allocation problem. Best would be to rewrite it differently.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> attached to the XML or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderHasAttributes"></a>xmlTextReaderHasAttributes ()</h3>
-<pre class="programlisting">int	xmlTextReaderHasAttributes	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Whether the node has attributes.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false, and -1 in case or error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderHasValue"></a>xmlTextReaderHasValue ()</h3>
-<pre class="programlisting">int	xmlTextReaderHasValue		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Whether the node can have a text value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false, and -1 in case or error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderIsDefault"></a>xmlTextReaderIsDefault ()</h3>
-<pre class="programlisting">int	xmlTextReaderIsDefault		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Whether an Attribute node was generated from the default value defined in the DTD or schema.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if not defaulted, 1 if defaulted, and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderIsEmptyElement"></a>xmlTextReaderIsEmptyElement ()</h3>
-<pre class="programlisting">int	xmlTextReaderIsEmptyElement	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Check if the current node is empty</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if empty, 0 if not and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderIsNamespaceDecl"></a>xmlTextReaderIsNamespaceDecl ()</h3>
-<pre class="programlisting">int	xmlTextReaderIsNamespaceDecl	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Determine whether the current node is a namespace declaration rather than a regular attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderIsValid"></a>xmlTextReaderIsValid ()</h3>
-<pre class="programlisting">int	xmlTextReaderIsValid		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Retrieve the validity status from the parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the flag value 1 if valid, 0 if no, and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderLocalName"></a>xmlTextReaderLocalName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderLocalName	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The local name of the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local name or NULL if not available, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderLocatorBaseURI"></a>xmlTextReaderLocatorBaseURI ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderLocatorBaseURI	(<a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator)<br>
-</pre>
-<p>Obtain the base URI for the given locator.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>locator</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the base URI or NULL in case of error, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderLocatorLineNumber"></a>xmlTextReaderLocatorLineNumber ()</h3>
-<pre class="programlisting">int	xmlTextReaderLocatorLineNumber	(<a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> locator)<br>
-</pre>
-<p>Obtain the line number for the given locator.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>locator</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderLocatorPtr">xmlTextReaderLocatorPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the line number or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderLookupNamespace"></a>xmlTextReaderLookupNamespace ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderLookupNamespace	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>Resolves a namespace prefix in the scope of the current element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the prefix whose namespace URI is to be resolved. To return the default namespace, specify NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToAttribute"></a>xmlTextReaderMoveToAttribute ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToAttribute	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Moves the position of the current instance to the attribute with the specified qualified name.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the qualified name of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToAttributeNo"></a>xmlTextReaderMoveToAttributeNo ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToAttributeNo	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int no)<br>
-</pre>
-<p>Moves the position of the current instance to the attribute with the specified index relative to the containing element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>no</tt></i>:</span></td>
-<td>the zero-based index of the attribute relative to the containing element.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToAttributeNs"></a>xmlTextReaderMoveToAttributeNs ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToAttributeNs	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)<br>
-</pre>
-<p>Moves the position of the current instance to the attribute with the specified local name and namespace URI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localName</tt></i>:</span></td>
-<td>the local name of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>the namespace URI of the attribute.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToElement"></a>xmlTextReaderMoveToElement ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToElement	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Moves the position of the current instance to the node that contains the current Attribute node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not moved</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToFirstAttribute"></a>xmlTextReaderMoveToFirstAttribute ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToFirstAttribute	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Moves the position of the current instance to the first attribute associated with the current node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderMoveToNextAttribute"></a>xmlTextReaderMoveToNextAttribute ()</h3>
-<pre class="programlisting">int	xmlTextReaderMoveToNextAttribute	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Moves the position of the current instance to the next attribute associated with the current node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, -1 in case of error, 0 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderName"></a>xmlTextReaderName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderName	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The qualified name of the node, equal to Prefix :LocalName.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the local name or NULL if not available, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderNamespaceUri"></a>xmlTextReaderNamespaceUri ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderNamespaceUri	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The URI defining the namespace associated with the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace URI or NULL if not available, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderNext"></a>xmlTextReaderNext ()</h3>
-<pre class="programlisting">int	xmlTextReaderNext		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Skip to the node following the current one in document order while avoiding the subtree if any.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderNextSibling"></a>xmlTextReaderNextSibling ()</h3>
-<pre class="programlisting">int	xmlTextReaderNextSibling	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderNodeType"></a>xmlTextReaderNodeType ()</h3>
-<pre class="programlisting">int	xmlTextReaderNodeType		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Get the node type of the current node Reference: http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlReaderTypes">xmlReaderTypes</a> of the current node or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderNormalization"></a>xmlTextReaderNormalization ()</h3>
-<pre class="programlisting">int	xmlTextReaderNormalization	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>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 behaviour of accepting out of range character entities like &amp;#0; is of course not supported either.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderPrefix"></a>xmlTextReaderPrefix ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderPrefix	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>A shorthand reference to the namespace associated with the node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the prefix or NULL if not available, if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderPreserve"></a>xmlTextReaderPreserve ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlTextReaderPreserve	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderPreservePattern"></a>xmlTextReaderPreservePattern ()</h3>
-<pre class="programlisting">int	xmlTextReaderPreservePattern	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pattern, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** namespaces)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pattern</tt></i>:</span></td>
-<td>an XPath subset pattern</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaces</tt></i>:</span></td>
-<td>the prefix definitions, array of [URI, prefix] or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a non-negative number in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderQuoteChar"></a>xmlTextReaderQuoteChar ()</h3>
-<pre class="programlisting">int	xmlTextReaderQuoteChar		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The quotation mark character used to enclose the value of an attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>" or ' and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderRead"></a>xmlTextReaderRead ()</h3>
-<pre class="programlisting">int	xmlTextReaderRead		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Moves the position of the current instance to the next node in the stream, exposing its properties.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderReadAttributeValue"></a>xmlTextReaderReadAttributeValue ()</h3>
-<pre class="programlisting">int	xmlTextReaderReadAttributeValue	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Parses an attribute value into one or more Text and EntityReference nodes.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 in case of success, 0 if the reader was not positioned on an attribute node or all the attribute values have been read, or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderReadInnerXml"></a>xmlTextReaderReadInnerXml ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderReadInnerXml	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Reads the contents of the current node, including child nodes and markup.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderReadOuterXml"></a>xmlTextReaderReadOuterXml ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderReadOuterXml	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Reads the contents of the current node, including child nodes and markup.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the node and any XML content, or NULL if the current node cannot be serialized. The string must be deallocated by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderReadState"></a>xmlTextReaderReadState ()</h3>
-<pre class="programlisting">int	xmlTextReaderReadState		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Gets the read state of the reader.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the state value, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderReadString"></a>xmlTextReaderReadString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderReadString	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Reads the contents of an element or a text node as a string.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a string containing the contents of the non-empty Element or Text node (including CDATA sections), or NULL if the reader is positioned on any other type of node. The string must be deallocated by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderRelaxNGSetSchema"></a>xmlTextReaderRelaxNGSetSchema ()</h3>
-<pre class="programlisting">int	xmlTextReaderRelaxNGSetSchema	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-relaxng.html#xmlRelaxNGPtr">xmlRelaxNGPtr</a> schema)<br>
-</pre>
-<p>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 deactivated. @ The @schema should not be freed until the reader is deallocated or its use has been deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a precompiled RelaxNG schema</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the RelaxNG validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderRelaxNGValidate"></a>xmlTextReaderRelaxNGValidate ()</h3>
-<pre class="programlisting">int	xmlTextReaderRelaxNGValidate	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * rng)<br>
-</pre>
-<p>Use RelaxNG schema to validate the document as it is processed. Activation is only possible before the first Read(). If @rng is NULL, then RelaxNG schema validation is deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>rng</tt></i>:</span></td>
-<td>the path to a RelaxNG schema or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the schemas validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderRelaxNGValidateCtxt"></a>xmlTextReaderRelaxNGValidateCtxt ()</h3>
-<pre class="programlisting">int	xmlTextReaderRelaxNGValidateCtxt	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 <a href="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr">xmlRelaxNGValidCtxtPtr</a> ctxt, <br>						 int options)<br>
-</pre>
-<p>Use RelaxNG schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then RelaxNG schema validation is deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the RelaxNG schema validation context or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>options (not used yet)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the schemas validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSchemaValidate"></a>xmlTextReaderSchemaValidate ()</h3>
-<pre class="programlisting">int	xmlTextReaderSchemaValidate	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 const char * xsd)<br>
-</pre>
-<p>Use W3C XSD schema to validate the document as it is processed. Activation is only possible before the first Read(). If @xsd is NULL, then XML Schema validation is deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>xsd</tt></i>:</span></td>
-<td>the path to a W3C XSD schema or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the schemas validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSchemaValidateCtxt"></a>xmlTextReaderSchemaValidateCtxt ()</h3>
-<pre class="programlisting">int	xmlTextReaderSchemaValidateCtxt	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>Use W3C XSD schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then XML Schema validation is deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XML Schema validation context or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>options (not used yet)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the schemas validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetErrorHandler"></a>xmlTextReaderSetErrorHandler ()</h3>
-<pre class="programlisting">void	xmlTextReaderSetErrorHandler	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a> f, <br>					 void * arg)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a>. Register a callback function that will be called on error and warnings. If @f is NULL, the default error and warning handlers are restored.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the callback function to call on error and warnings</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>arg</tt></i>:</span></td>
-<td>a user argument to pass to the callback function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetMaxAmplification"></a>xmlTextReaderSetMaxAmplification ()</h3>
-<pre class="programlisting">void	xmlTextReaderSetMaxAmplification	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 unsigned maxAmpl)<br>
-</pre>
-<p>Set the maximum amplification factor. See <a href="libxml2-parser.html#xmlCtxtSetMaxAmplification">xmlCtxtSetMaxAmplification</a>.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>maxAmpl</tt></i>:</span></td>
-<td>maximum amplification factor</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetParserProp"></a>xmlTextReaderSetParserProp ()</h3>
-<pre class="programlisting">int	xmlTextReaderSetParserProp	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 int prop, <br>					 int value)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prop</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlParserProperties">xmlParserProperties</a> to set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>usually 0 or 1 to (de)activate it</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the call was successful, or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetResourceLoader"></a>xmlTextReaderSetResourceLoader ()</h3>
-<pre class="programlisting">void	xmlTextReaderSetResourceLoader	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called to load external resources like entities. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>thr reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loader</tt></i>:</span></td>
-<td>resource loader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data which will be passed to the loader</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetSchema"></a>xmlTextReaderSetSchema ()</h3>
-<pre class="programlisting">int	xmlTextReaderSetSchema		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema)<br>
-</pre>
-<p>Use XSD Schema to validate the document as it is processed. Activation is only possible before the first Read(). if @schema is NULL, then Schema validation is deactivated. The @schema should not be freed until the reader is deallocated or its use has been deactivated.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a precompiled Schema schema</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case the Schema validation could be (de)activated and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetStructuredErrorHandler"></a>xmlTextReaderSetStructuredErrorHandler ()</h3>
-<pre class="programlisting">void	xmlTextReaderSetStructuredErrorHandler	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> f, <br>						 void * arg)<br>
-</pre>
-<p>Register a callback function that will be called on error and warnings. If @f is NULL, the default error and warning handlers are restored.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the callback function to call on error and warnings</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>arg</tt></i>:</span></td>
-<td>a user argument to pass to the callback function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderSetup"></a>xmlTextReaderSetup ()</h3>
-<pre class="programlisting">int	xmlTextReaderSetup		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 const char * URL, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Setup an XML reader with new options</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>an XML reader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>
-<a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> used to feed the reader, will be destroyed with it.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the base URL to use for the document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the document encoding, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-parser.html#xmlParserOption">xmlParserOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderStandalone"></a>xmlTextReaderStandalone ()</h3>
-<pre class="programlisting">int	xmlTextReaderStandalone		(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Determine the standalone status of the document being read.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderValue"></a>xmlTextReaderValue ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderValue	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>Provides the text value of the node if present</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the string or NULL if not available. The result must be deallocated with xmlFree()</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextReaderXmlLang"></a>xmlTextReaderXmlLang ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlTextReaderXmlLang	(<a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> reader)<br>
-</pre>
-<p>The xml:lang scope within which the node resides.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>reader</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlreader.html#xmlTextReaderPtr">xmlTextReaderPtr</a> used</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the xml:lang value or NULL if none exists., if non NULL it need to be freed by the caller.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlregexp.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlregexp.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlregexp.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlregexp.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,402 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlregexp: regular expressions handling</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlreader.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlsave.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlregexp</span></h2>
-<p>xmlregexp - regular expressions handling</p>
-<p>basic API for libxml regular expressions handling used for XML Schemas and validation. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlRegExecCtxt <a href="#xmlRegExecCtxt">xmlRegExecCtxt</a>;
-typedef <a href="libxml2-xmlregexp.html#xmlRegExecCtxt">xmlRegExecCtxt</a> * <a href="#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a>;
-typedef struct _xmlRegexp <a href="#xmlRegexp">xmlRegexp</a>;
-typedef <a href="libxml2-xmlregexp.html#xmlRegexp">xmlRegexp</a> * <a href="#xmlRegexpPtr">xmlRegexpPtr</a>;
-typedef void <a href="#xmlRegExecCallbacks">xmlRegExecCallbacks</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>					 void * transdata, <br>					 void * inputdata);
-int	<a href="#xmlRegExecErrInfo">xmlRegExecErrInfo</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** string, <br>					 int * nbval, <br>					 int * nbneg, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** values, <br>					 int * terminal);
-int	<a href="#xmlRegExecNextValues">xmlRegExecNextValues</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 int * nbval, <br>					 int * nbneg, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** values, <br>					 int * terminal);
-int	<a href="#xmlRegExecPushString">xmlRegExecPushString</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 void * data);
-int	<a href="#xmlRegExecPushString2">xmlRegExecPushString2</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value2, <br>					 void * data);
-void	<a href="#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a>		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec);
-void	<a href="#xmlRegFreeRegexp">xmlRegFreeRegexp</a>		(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> regexp);
-<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a>	<a href="#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a>	(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp, <br>						 <a href="libxml2-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a> callback, <br>						 void * data);
-<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	<a href="#xmlRegexpCompile">xmlRegexpCompile</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * regexp);
-int	<a href="#xmlRegexpExec">xmlRegexpExec</a>			(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a>		(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp);
-void	<a href="#xmlRegexpPrint">xmlRegexpPrint</a>			(FILE * output, <br>					 <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> regexp);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecCtxt">Structure </a>xmlRegExecCtxt</h3>
-<pre class="programlisting">struct _xmlRegExecCtxt {
-The content of this structure is not made public by the API.
-} xmlRegExecCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecCtxtPtr">Typedef </a>xmlRegExecCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlRegExecCtxt">xmlRegExecCtxt</a> * xmlRegExecCtxtPtr;
-</pre>
-<p>A libxml progressive regular expression evaluation context</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexp">Structure </a>xmlRegexp</h3>
-<pre class="programlisting">struct _xmlRegexp {
-The content of this structure is not made public by the API.
-} xmlRegexp;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexpPtr">Typedef </a>xmlRegexpPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlRegexp">xmlRegexp</a> * xmlRegexpPtr;
-</pre>
-<p>A libxml regular expression, they can actually be far more complex thank the POSIX regex expressions.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecCallbacks"></a>Function type xmlRegExecCallbacks</h3>
-<pre class="programlisting">void	xmlRegExecCallbacks		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * token, <br>					 void * transdata, <br>					 void * inputdata)<br>
-</pre>
-<p>Callback function when doing a transition in the automata</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>the regular expression context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>token</tt></i>:</span></td>
-<td>the current token string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>transdata</tt></i>:</span></td>
-<td>transition data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inputdata</tt></i>:</span></td>
-<td>input data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecErrInfo"></a>xmlRegExecErrInfo ()</h3>
-<pre class="programlisting">int	xmlRegExecErrInfo		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** string, <br>					 int * nbval, <br>					 int * nbneg, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** values, <br>					 int * terminal)<br>
-</pre>
-<p>Extract error information 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>a regexp execution context generating an error</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>string</tt></i>:</span></td>
-<td>return value for the error string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbval</tt></i>:</span></td>
-<td>pointer to the number of accepted values IN/OUT</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbneg</tt></i>:</span></td>
-<td>return number of negative transitions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>values</tt></i>:</span></td>
-<td>pointer to the array of acceptable values</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>terminal</tt></i>:</span></td>
-<td>return value if this was a terminal state</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>will be freed with the @exec context and don't need to be deallocated. Returns: 0 in case of success or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecNextValues"></a>xmlRegExecNextValues ()</h3>
-<pre class="programlisting">int	xmlRegExecNextValues		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 int * nbval, <br>					 int * nbneg, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** values, <br>					 int * terminal)<br>
-</pre>
-<p>Extract information 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>a regexp execution context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbval</tt></i>:</span></td>
-<td>pointer to the number of accepted values IN/OUT</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nbneg</tt></i>:</span></td>
-<td>return number of negative transitions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>values</tt></i>:</span></td>
-<td>pointer to the array of acceptable values</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>terminal</tt></i>:</span></td>
-<td>return value if this was a terminal state</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>will be freed with the @exec context and don't need to be deallocated. Returns: 0 in case of success or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecPushString"></a>xmlRegExecPushString ()</h3>
-<pre class="programlisting">int	xmlRegExecPushString		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 void * data)<br>
-</pre>
-<p>Push one input token in the execution context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>a regexp execution context or NULL to indicate the end</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>a string token input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the token to reuse in callbacks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the regexp reached a final state, 0 if non-final, and a negative value in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegExecPushString2"></a>xmlRegExecPushString2 ()</h3>
-<pre class="programlisting">int	xmlRegExecPushString2		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value2, <br>					 void * data)<br>
-</pre>
-<p>Push one input token in the execution context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>a regexp execution context or NULL to indicate the end</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the first string token input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value2</tt></i>:</span></td>
-<td>the second string token input</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>data associated to the token to reuse in callbacks</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the regexp reached a final state, 0 if non-final, and a negative value in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegFreeExecCtxt"></a>xmlRegFreeExecCtxt ()</h3>
-<pre class="programlisting">void	xmlRegFreeExecCtxt		(<a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a> exec)<br>
-</pre>
-<p>Free the structures associated to a regular expression evaluation context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>exec</tt></i>:</span></td>
-<td>a regular expression evaluation context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegFreeRegexp"></a>xmlRegFreeRegexp ()</h3>
-<pre class="programlisting">void	xmlRegFreeRegexp		(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> regexp)<br>
-</pre>
-<p>Free a regexp</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>regexp</tt></i>:</span></td>
-<td>the regexp</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegNewExecCtxt"></a>xmlRegNewExecCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlRegExecCtxtPtr">xmlRegExecCtxtPtr</a>	xmlRegNewExecCtxt	(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp, <br>						 <a href="libxml2-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a> callback, <br>						 void * data)<br>
-</pre>
-<p>Build a context used for progressive evaluation of a regexp.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>a precompiled regular expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>callback</tt></i>:</span></td>
-<td>a callback function used for handling progresses in the automata matching phase</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the context data associated to the callback in this context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexpCompile"></a>xmlRegexpCompile ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a>	xmlRegexpCompile	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * regexp)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>regexp</tt></i>:</span></td>
-<td>a regular expression string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the compiled expression or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexpExec"></a>xmlRegexpExec ()</h3>
-<pre class="programlisting">int	xmlRegexpExec			(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Check if the regular expression generates the value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the compiled regular expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>the value to check against the regular expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if it matches, 0 if not and a negative value in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexpIsDeterminist"></a>xmlRegexpIsDeterminist ()</h3>
-<pre class="programlisting">int	xmlRegexpIsDeterminist		(<a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> comp)<br>
-</pre>
-<p>Check if the regular expression is determinist</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the compiled regular expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if it yes, 0 if not and a negative value in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlRegexpPrint"></a>xmlRegexpPrint ()</h3>
-<pre class="programlisting">void	xmlRegexpPrint			(FILE * output, <br>					 <a href="libxml2-xmlregexp.html#xmlRegexpPtr">xmlRegexpPtr</a> regexp)<br>
-</pre>
-<p>DEPRECATED: Don't use. No-op since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the file for the output debug</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>regexp</tt></i>:</span></td>
-<td>the compiled regexp</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlsave.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlsave.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlsave.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlsave.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,465 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlsave: the XML document serializer</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlregexp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlschemas.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlsave</span></h2>
-<p>xmlsave - the XML document serializer</p>
-<p>API to save document or subtree of document </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlSaveCtxt <a href="#xmlSaveCtxt">xmlSaveCtxt</a>;
-typedef <a href="libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt</a> * <a href="#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>;
-typedef enum <a href="#xmlSaveOption">xmlSaveOption</a>;
-int	<a href="#xmlSaveClose">xmlSaveClose</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
-long	<a href="#xmlSaveDoc">xmlSaveDoc</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	<a href="#xmlSaveFinish">xmlSaveFinish</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
-int	<a href="#xmlSaveFlush">xmlSaveFlush</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt);
-int	<a href="#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape);
-int	<a href="#xmlSaveSetEscape">xmlSaveSetEscape</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape);
-int	<a href="#xmlSaveSetIndentString">xmlSaveSetIndentString</a>		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 const char * indent);
-<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToBuffer">xmlSaveToBuffer</a>		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToFd">xmlSaveToFd</a>		(int fd, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToFilename">xmlSaveToFilename</a>	(const char * filename, <br>					 const char * encoding, <br>					 int options);
-<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	<a href="#xmlSaveToIO">xmlSaveToIO</a>		(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * encoding, <br>					 int options);
-long	<a href="#xmlSaveTree">xmlSaveTree</a>			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-int	<a href="#xmlThrDefIndentTreeOutput">xmlThrDefIndentTreeOutput</a>	(int v);
-int	<a href="#xmlThrDefSaveNoEmptyTags">xmlThrDefSaveNoEmptyTags</a>	(int v);
-const char *	<a href="#xmlThrDefTreeIndentString">xmlThrDefTreeIndentString</a>	(const char * v);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveCtxt">Structure </a>xmlSaveCtxt</h3>
-<pre class="programlisting">struct _xmlSaveCtxt {
-The content of this structure is not made public by the API.
-} xmlSaveCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveCtxtPtr">Typedef </a>xmlSaveCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxt">xmlSaveCtxt</a> * xmlSaveCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveOption">Enum </a>xmlSaveOption</h3>
-<pre class="programlisting">enum <a href="#xmlSaveOption">xmlSaveOption</a> {
-    <a name="XML_SAVE_FORMAT">XML_SAVE_FORMAT</a> = 1 /* format save output */
-    <a name="XML_SAVE_NO_DECL">XML_SAVE_NO_DECL</a> = 2 /* drop the xml declaration */
-    <a name="XML_SAVE_NO_EMPTY">XML_SAVE_NO_EMPTY</a> = 4 /* no empty tags */
-    <a name="XML_SAVE_NO_XHTML">XML_SAVE_NO_XHTML</a> = 8 /* disable XHTML1 specific rules */
-    <a name="XML_SAVE_XHTML">XML_SAVE_XHTML</a> = 16 /* force XHTML1 specific rules */
-    <a name="XML_SAVE_AS_XML">XML_SAVE_AS_XML</a> = 32 /* force XML serialization on HTML doc */
-    <a name="XML_SAVE_AS_HTML">XML_SAVE_AS_HTML</a> = 64 /* force HTML serialization on XML doc */
-    <a name="XML_SAVE_WSNONSIG">XML_SAVE_WSNONSIG</a> = 128 /* format with non-significant whitespace Available since 2.14.0 */
-    <a name="XML_SAVE_EMPTY">XML_SAVE_EMPTY</a> = 256 /* force empty tags, overriding global */
-    <a name="XML_SAVE_NO_INDENT">XML_SAVE_NO_INDENT</a> = 512 /* disable indenting */
-    <a name="XML_SAVE_INDENT">XML_SAVE_INDENT</a> = 1024 /*  force indenting, overriding global */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveClose"></a>xmlSaveClose ()</h3>
-<pre class="programlisting">int	xmlSaveClose			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveDoc"></a>xmlSaveDoc ()</h3>
-<pre class="programlisting">long	xmlSaveDoc			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFinish"></a>xmlSaveFinish ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a>	xmlSaveFinish		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveFlush"></a>xmlSaveFlush ()</h3>
-<pre class="programlisting">int	xmlSaveFlush			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Flush a document saving context, i.e. make sure that all bytes have been output.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveSetAttrEscape"></a>xmlSaveSetAttrEscape ()</h3>
-<pre class="programlisting">int	xmlSaveSetAttrEscape		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape)<br>
-</pre>
-<p>DEPRECATED: Don't use. Has no effect.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>escape</tt></i>:</span></td>
-<td>the escaping function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveSetEscape"></a>xmlSaveSetEscape ()</h3>
-<pre class="programlisting">int	xmlSaveSetEscape		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a> escape)<br>
-</pre>
-<p>DEPRECATED: Don't use. Set a custom escaping function to be used for text in element content</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>escape</tt></i>:</span></td>
-<td>the escaping function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if successful or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveSetIndentString"></a>xmlSaveSetIndentString ()</h3>
-<pre class="programlisting">int	xmlSaveSetIndentString		(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 const char * indent)<br>
-</pre>
-<p>Sets the indent string. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>save context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>indent</tt></i>:</span></td>
-<td>indent string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, -1 if the string is NULL, empty or too long.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveToBuffer"></a>xmlSaveToBuffer ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToBuffer		(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create a document saving context serializing to a buffer with the encoding and the options given</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a buffer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding name to use or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of xmlSaveOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new serialization context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveToFd"></a>xmlSaveToFd ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToFd		(int fd, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create a document saving context serializing to a file descriptor with the encoding and the options given.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>fd</tt></i>:</span></td>
-<td>a file descriptor number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding name to use or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of xmlSaveOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new serialization context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveToFilename"></a>xmlSaveToFilename ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToFilename	(const char * filename, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>a file name or an URL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding name to use or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of xmlSaveOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new serialization context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveToIO"></a>xmlSaveToIO ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a>	xmlSaveToIO		(<a href="libxml2-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a> iowrite, <br>					 <a href="libxml2-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a> ioclose, <br>					 void * ioctx, <br>					 const char * encoding, <br>					 int options)<br>
-</pre>
-<p>Create a document saving context serializing to a file descriptor with the encoding and the options given</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>iowrite</tt></i>:</span></td>
-<td>an I/O write function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioclose</tt></i>:</span></td>
-<td>an I/O close function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ioctx</tt></i>:</span></td>
-<td>an I/O handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding name to use or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a set of xmlSaveOptions</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new serialization context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSaveTree"></a>xmlSaveTree ()</h3>
-<pre class="programlisting">long	xmlSaveTree			(<a href="libxml2-xmlsave.html#xmlSaveCtxtPtr">xmlSaveCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a document saving context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the top node of the subtree to save</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of byte written or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefIndentTreeOutput"></a>xmlThrDefIndentTreeOutput ()</h3>
-<pre class="programlisting">int	xmlThrDefIndentTreeOutput	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefSaveNoEmptyTags"></a>xmlThrDefSaveNoEmptyTags ()</h3>
-<pre class="programlisting">int	xmlThrDefSaveNoEmptyTags	(int v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlThrDefTreeIndentString"></a>xmlThrDefTreeIndentString ()</h3>
-<pre class="programlisting">const char *	xmlThrDefTreeIndentString	(const char * v)<br>
-</pre>
-<p></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>v</tt></i>:</span></td>
-<td></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlschemas.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlschemas.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlschemas.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlschemas.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,968 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlschemas: incomplete XML Schemas structure implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlsave.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlschemastypes.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlschemas</span></h2>
-<p>xmlschemas - incomplete XML Schemas structure implementation</p>
-<p>interface to the XML Schemas handling and schema validity checking, it is incomplete right now. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef struct _xmlSchema <a href="#xmlSchema">xmlSchema</a>;
-typedef struct _xmlSchemaParserCtxt <a href="#xmlSchemaParserCtxt">xmlSchemaParserCtxt</a>;
-typedef <a href="libxml2-xmlschemas.html#xmlSchemaParserCtxt">xmlSchemaParserCtxt</a> * <a href="#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>;
-typedef <a href="libxml2-xmlschemas.html#xmlSchema">xmlSchema</a> * <a href="#xmlSchemaPtr">xmlSchemaPtr</a>;
-typedef <a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugStruct">xmlSchemaSAXPlugStruct</a> * <a href="#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a>;
-typedef struct _xmlSchemaSAXPlug <a href="#xmlSchemaSAXPlugStruct">xmlSchemaSAXPlugStruct</a>;
-typedef struct _xmlSchemaValidCtxt <a href="#xmlSchemaValidCtxt">xmlSchemaValidCtxt</a>;
-typedef <a href="libxml2-xmlschemas.html#xmlSchemaValidCtxt">xmlSchemaValidCtxt</a> * <a href="#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a>;
-typedef enum <a href="#xmlSchemaValidError">xmlSchemaValidError</a>;
-typedef enum <a href="#xmlSchemaValidOption">xmlSchemaValidOption</a>;
-void	<a href="#xmlSchemaDump">xmlSchemaDump</a>			(FILE * output, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema);
-void	<a href="#xmlSchemaFree">xmlSchemaFree</a>			(<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema);
-void	<a href="#xmlSchemaFreeParserCtxt">xmlSchemaFreeParserCtxt</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt);
-void	<a href="#xmlSchemaFreeValidCtxt">xmlSchemaFreeValidCtxt</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt);
-int	<a href="#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br>					 void ** ctx);
-int	<a href="#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br>					 void ** ctx);
-int	<a href="#xmlSchemaIsValid">xmlSchemaIsValid</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt);
-<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	<a href="#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	<a href="#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a>	(const char * buffer, <br>							 int size);
-<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	<a href="#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a>	(const char * URL);
-<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a>	<a href="#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema);
-<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a>	<a href="#xmlSchemaParse">xmlSchemaParse</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt);
-<a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a>	<a href="#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> * sax, <br>						 void ** user_data);
-int	<a href="#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a> plug);
-void	<a href="#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br>					 void * ctx);
-void	<a href="#xmlSchemaSetParserStructuredErrors">xmlSchemaSetParserStructuredErrors</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx);
-void	<a href="#xmlSchemaSetResourceLoader">xmlSchemaSetResourceLoader</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data);
-void	<a href="#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br>					 void * ctx);
-int	<a href="#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 int options);
-void	<a href="#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx);
-int	<a href="#xmlSchemaValidCtxtGetOptions">xmlSchemaValidCtxtGetOptions</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt);
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	<a href="#xmlSchemaValidCtxtGetParserCtxt">xmlSchemaValidCtxtGetParserCtxt</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt);
-int	<a href="#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlSchemaValidateFile">xmlSchemaValidateFile</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 int options);
-int	<a href="#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
-void	<a href="#xmlSchemaValidateSetFilename">xmlSchemaValidateSetFilename</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br>					 const char * filename);
-void	<a href="#xmlSchemaValidateSetLocator">xmlSchemaValidateSetLocator</a>	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br>					 void * ctxt);
-int	<a href="#xmlSchemaValidateStream">xmlSchemaValidateStream</a>		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br>					 const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax, <br>					 void * user_data);
-typedef void <a href="#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-typedef int <a href="#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a>	(void * ctx, <br>					 const char ** file, <br>					 unsigned long * line);
-typedef void <a href="#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a>	(void * ctx, <br>					 const char * msg, <br>					 ... ...);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchema">Structure </a>xmlSchema</h3>
-<pre class="programlisting">struct _xmlSchema {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	targetNamespace
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	version
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	id
-    <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	doc
-    <a href="libxml2-schemasInternals.html#xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>	annot
-    int	flags
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	typeDecl
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	attrDecl
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	attrgrpDecl
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	elemDecl
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	notaDecl
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	schemasImports
-    void *	_private
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	groupDecl
-    <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	dict
-    void *	includes
-    int	preserve
-    int	counter
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	idcDef
-    void *	volatiles
-} xmlSchema;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaParserCtxt">Structure </a>xmlSchemaParserCtxt</h3>
-<pre class="programlisting">struct _xmlSchemaParserCtxt {
-The content of this structure is not made public by the API.
-} xmlSchemaParserCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaParserCtxtPtr">Typedef </a>xmlSchemaParserCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaParserCtxt">xmlSchemaParserCtxt</a> * xmlSchemaParserCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaPtr">Typedef </a>xmlSchemaPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchema">xmlSchema</a> * xmlSchemaPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSAXPlugPtr">Typedef </a>xmlSchemaSAXPlugPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugStruct">xmlSchemaSAXPlugStruct</a> * xmlSchemaSAXPlugPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSAXPlugStruct">Structure </a>xmlSchemaSAXPlugStruct</h3>
-<pre class="programlisting">struct _xmlSchemaSAXPlug {
-The content of this structure is not made public by the API.
-} xmlSchemaSAXPlugStruct;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidCtxt">Structure </a>xmlSchemaValidCtxt</h3>
-<pre class="programlisting">struct _xmlSchemaValidCtxt {
-The content of this structure is not made public by the API.
-} xmlSchemaValidCtxt;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidCtxtPtr">Typedef </a>xmlSchemaValidCtxtPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaValidCtxt">xmlSchemaValidCtxt</a> * xmlSchemaValidCtxtPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidError">Enum </a>xmlSchemaValidError</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaValidError">xmlSchemaValidError</a> {
-    <a name="XML_SCHEMAS_ERR_OK">XML_SCHEMAS_ERR_OK</a> = 0
-    <a name="XML_SCHEMAS_ERR_NOROOT">XML_SCHEMAS_ERR_NOROOT</a> = 1
-    <a name="XML_SCHEMAS_ERR_UNDECLAREDELEM">XML_SCHEMAS_ERR_UNDECLAREDELEM</a> = 2
-    <a name="XML_SCHEMAS_ERR_NOTTOPLEVEL">XML_SCHEMAS_ERR_NOTTOPLEVEL</a> = 3
-    <a name="XML_SCHEMAS_ERR_MISSING">XML_SCHEMAS_ERR_MISSING</a> = 4
-    <a name="XML_SCHEMAS_ERR_WRONGELEM">XML_SCHEMAS_ERR_WRONGELEM</a> = 5
-    <a name="XML_SCHEMAS_ERR_NOTYPE">XML_SCHEMAS_ERR_NOTYPE</a> = 6
-    <a name="XML_SCHEMAS_ERR_NOROLLBACK">XML_SCHEMAS_ERR_NOROLLBACK</a> = 7
-    <a name="XML_SCHEMAS_ERR_ISABSTRACT">XML_SCHEMAS_ERR_ISABSTRACT</a> = 8
-    <a name="XML_SCHEMAS_ERR_NOTEMPTY">XML_SCHEMAS_ERR_NOTEMPTY</a> = 9
-    <a name="XML_SCHEMAS_ERR_ELEMCONT">XML_SCHEMAS_ERR_ELEMCONT</a> = 10
-    <a name="XML_SCHEMAS_ERR_HAVEDEFAULT">XML_SCHEMAS_ERR_HAVEDEFAULT</a> = 11
-    <a name="XML_SCHEMAS_ERR_NOTNILLABLE">XML_SCHEMAS_ERR_NOTNILLABLE</a> = 12
-    <a name="XML_SCHEMAS_ERR_EXTRACONTENT">XML_SCHEMAS_ERR_EXTRACONTENT</a> = 13
-    <a name="XML_SCHEMAS_ERR_INVALIDATTR">XML_SCHEMAS_ERR_INVALIDATTR</a> = 14
-    <a name="XML_SCHEMAS_ERR_INVALIDELEM">XML_SCHEMAS_ERR_INVALIDELEM</a> = 15
-    <a name="XML_SCHEMAS_ERR_NOTDETERMINIST">XML_SCHEMAS_ERR_NOTDETERMINIST</a> = 16
-    <a name="XML_SCHEMAS_ERR_CONSTRUCT">XML_SCHEMAS_ERR_CONSTRUCT</a> = 17
-    <a name="XML_SCHEMAS_ERR_INTERNAL">XML_SCHEMAS_ERR_INTERNAL</a> = 18
-    <a name="XML_SCHEMAS_ERR_NOTSIMPLE">XML_SCHEMAS_ERR_NOTSIMPLE</a> = 19
-    <a name="XML_SCHEMAS_ERR_ATTRUNKNOWN">XML_SCHEMAS_ERR_ATTRUNKNOWN</a> = 20
-    <a name="XML_SCHEMAS_ERR_ATTRINVALID">XML_SCHEMAS_ERR_ATTRINVALID</a> = 21
-    <a name="XML_SCHEMAS_ERR_VALUE">XML_SCHEMAS_ERR_VALUE</a> = 22
-    <a name="XML_SCHEMAS_ERR_FACET">XML_SCHEMAS_ERR_FACET</a> = 23
-    <a name="XML_SCHEMAS_ERR_">XML_SCHEMAS_ERR_</a> = 24
-    <a name="XML_SCHEMAS_ERR_XXX">XML_SCHEMAS_ERR_XXX</a> = 25
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidOption">Enum </a>xmlSchemaValidOption</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaValidOption">xmlSchemaValidOption</a> {
-    <a name="XML_SCHEMA_VAL_VC_I_CREATE">XML_SCHEMA_VAL_VC_I_CREATE</a> = 1 /*  Default/fixed: create an attribute node * or an element's text node on the instance. * */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidityErrorFunc"></a>Function type xmlSchemaValidityErrorFunc</h3>
-<pre class="programlisting">void	xmlSchemaValidityErrorFunc	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of an error callback from an XSD validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidityLocatorFunc"></a>Function type xmlSchemaValidityLocatorFunc</h3>
-<pre class="programlisting">int	xmlSchemaValidityLocatorFunc	(void * ctx, <br>					 const char ** file, <br>					 unsigned long * line)<br>
-</pre>
-<p>A schemas validation locator, a callback called by the validator. This is used when file or node information are not available to find out what file and line number are affected</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>user provided context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>returned file information</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>returned line information</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidityWarningFunc"></a>Function type xmlSchemaValidityWarningFunc</h3>
-<pre class="programlisting">void	xmlSchemaValidityWarningFunc	(void * ctx, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Signature of a warning callback from an XSD validation</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 validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaDump"></a>xmlSchemaDump ()</h3>
-<pre class="programlisting">void	xmlSchemaDump			(FILE * output, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema)<br>
-</pre>
-<p>Dump a Schema structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the file output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFree"></a>xmlSchemaFree ()</h3>
-<pre class="programlisting">void	xmlSchemaFree			(<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema)<br>
-</pre>
-<p>Deallocate a Schema structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a schema structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeParserCtxt"></a>xmlSchemaFreeParserCtxt ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeParserCtxt		(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeValidCtxt"></a>xmlSchemaFreeValidCtxt ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeValidCtxt		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Free the resources associated to the schema validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetParserErrors"></a>xmlSchemaGetParserErrors ()</h3>
-<pre class="programlisting">int	xmlSchemaGetParserErrors	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br>					 void ** ctx)<br>
-</pre>
-<p>Get the callback information used to handle errors for a parser context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a XMl-Schema parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error callback result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning callback result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>contextual data for the callbacks result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of failure, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetValidErrors"></a>xmlSchemaGetValidErrors ()</h3>
-<pre class="programlisting">int	xmlSchemaGetValidErrors		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> * err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> * warn, <br>					 void ** ctx)<br>
-</pre>
-<p>Get the error and warning callback information</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a XML-Schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error function result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning function result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error and 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaIsValid"></a>xmlSchemaIsValid ()</h3>
-<pre class="programlisting">int	xmlSchemaIsValid		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Check if any error was detected during validation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if valid so far, 0 if errors were detected, and -1 in case of internal error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewDocParserCtxt"></a>xmlSchemaNewDocParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	xmlSchemaNewDocParserCtxt	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Create an XML Schemas parse context for that document. NB. The document may be modified during the parsing process.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a preparsed document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewMemParserCtxt"></a>xmlSchemaNewMemParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	xmlSchemaNewMemParserCtxt	(const char * buffer, <br>							 int size)<br>
-</pre>
-<p>Create an XML Schemas parse context for that memory buffer expected to contain an XML Schemas file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buffer</tt></i>:</span></td>
-<td>a pointer to a char array containing the schemas</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 parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewParserCtxt"></a>xmlSchemaNewParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a>	xmlSchemaNewParserCtxt	(const char * URL)<br>
-</pre>
-<p>Create an XML Schemas parse context for that file/resource expected to contain an XML Schemas file.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>URL</tt></i>:</span></td>
-<td>the location of the schema</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewValidCtxt"></a>xmlSchemaNewValidCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a>	xmlSchemaNewValidCtxt	(<a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a> schema)<br>
-</pre>
-<p>Create an XML Schemas validation context based on the given schema.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>schema</tt></i>:</span></td>
-<td>a precompiled XML Schemas</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the validation context or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaParse"></a>xmlSchemaParse ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaPtr">xmlSchemaPtr</a>	xmlSchemaParse		(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt)<br>
-</pre>
-<p>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the internal XML Schema structure built from the resource or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSAXPlug"></a>xmlSchemaSAXPlug ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a>	xmlSchemaSAXPlug	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> * sax, <br>						 void ** user_data)<br>
-</pre>
-<p>Plug a SAX based validation layer in a SAX parsing event flow. The original @saxptr and @dataptr data are replaced by new pointers but the calls to the original will be maintained.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a pointer to the original <a href="libxml2-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>a pointer to the original SAX user data pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to a data structure needed to unplug the validation layer or NULL in case of errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSAXUnplug"></a>xmlSchemaSAXUnplug ()</h3>
-<pre class="programlisting">int	xmlSchemaSAXUnplug		(<a href="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr">xmlSchemaSAXPlugPtr</a> plug)<br>
-</pre>
-<p>Unplug a SAX based validation layer in a SAX parsing event flow. The original pointers used in the call are restored.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>plug</tt></i>:</span></td>
-<td>a data structure returned by <a href="libxml2-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of failure.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetParserErrors"></a>xmlSchemaSetParserErrors ()</h3>
-<pre class="programlisting">void	xmlSchemaSetParserErrors	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br>					 void * ctx)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlschemas.html#xmlSchemaSetParserStructuredErrors">xmlSchemaSetParserStructuredErrors</a>. Set the callback functions used to handle errors for a validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning callback</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>contextual data for the callbacks</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetParserStructuredErrors"></a>xmlSchemaSetParserStructuredErrors ()</h3>
-<pre class="programlisting">void	xmlSchemaSetParserStructuredErrors	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx)<br>
-</pre>
-<p>Set the structured error callback</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>serror</tt></i>:</span></td>
-<td>the structured error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetResourceLoader"></a>xmlSchemaSetResourceLoader ()</h3>
-<pre class="programlisting">void	xmlSchemaSetResourceLoader	(<a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> ctxt, <br>					 <a href="libxml2-parser.html#xmlResourceLoader">xmlResourceLoader</a> loader, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called to load documents or external entities. Available since 2.14.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>schema parser</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>loader</tt></i>:</span></td>
-<td>resource loader</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data which will be passed to the loader</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetValidErrors"></a>xmlSchemaSetValidErrors ()</h3>
-<pre class="programlisting">void	xmlSchemaSetValidErrors		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc">xmlSchemaValidityErrorFunc</a> err, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc">xmlSchemaValidityWarningFunc</a> warn, <br>					 void * ctx)<br>
-</pre>
-<p>DEPRECATED: Use <a href="libxml2-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a>. Set the error and warning callback information</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>the error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>warn</tt></i>:</span></td>
-<td>the warning function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetValidOptions"></a>xmlSchemaSetValidOptions ()</h3>
-<pre class="programlisting">int	xmlSchemaSetValidOptions	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 int options)<br>
-</pre>
-<p>Sets the options to be used during the validation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a combination of <a href="libxml2-xmlschemas.html#xmlSchemaValidOption">xmlSchemaValidOption</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of an API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaSetValidStructuredErrors"></a>xmlSchemaSetValidStructuredErrors ()</h3>
-<pre class="programlisting">void	xmlSchemaSetValidStructuredErrors	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>						 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> serror, <br>						 void * ctx)<br>
-</pre>
-<p>Set the structured error callback</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>serror</tt></i>:</span></td>
-<td>the structured error function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the functions context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidCtxtGetOptions"></a>xmlSchemaValidCtxtGetOptions ()</h3>
-<pre class="programlisting">int	xmlSchemaValidCtxtGetOptions	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>Get the validation context options.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the option combination or -1 on error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidCtxtGetParserCtxt"></a>xmlSchemaValidCtxtGetParserCtxt ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a>	xmlSchemaValidCtxtGetParserCtxt	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt)<br>
-</pre>
-<p>allow access to the parser context of the schema validation context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the parser context of the schema validation context or NULL in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateDoc"></a>xmlSchemaValidateDoc ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateDoc		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Validate a document tree in memory.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>a parsed document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateFile"></a>xmlSchemaValidateFile ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateFile		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 const char * filename, <br>					 int options)<br>
-</pre>
-<p>Do a schemas validation of the given resource, it will use the SAX streamable validation internally.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the URI of the instance</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>a future set of options, currently unused</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the document is valid, a positive error code number otherwise and -1 in case of an internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateOneElement"></a>xmlSchemaValidateOneElement ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateOneElement	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem)<br>
-</pre>
-<p>Validate a branch of a tree, starting with the given @elem.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>elem</tt></i>:</span></td>
-<td>an element node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateSetFilename"></a>xmlSchemaValidateSetFilename ()</h3>
-<pre class="programlisting">void	xmlSchemaValidateSetFilename	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br>					 const char * filename)<br>
-</pre>
-<p>Workaround to provide file error reporting information when this is not provided by current APIs</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>the schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>filename</tt></i>:</span></td>
-<td>the file name</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateSetLocator"></a>xmlSchemaValidateSetLocator ()</h3>
-<pre class="programlisting">void	xmlSchemaValidateSetLocator	(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> vctxt, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc">xmlSchemaValidityLocatorFunc</a> f, <br>					 void * ctxt)<br>
-</pre>
-<p>Allows to set a locator function to the validation context, which will be used to provide file and line information since those are not provided as part of the SAX validation flow Setting @f to NULL disable the locator.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>vctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the locator function pointer</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the locator context</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateStream"></a>xmlSchemaValidateStream ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateStream		(<a href="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr">xmlSchemaValidCtxtPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a> input, <br>					 <a href="libxml2-encoding.html#xmlCharEncoding">xmlCharEncoding</a> enc, <br>					 const <a href="libxml2-tree.html#xmlSAXHandler">xmlSAXHandler</a> * sax, <br>					 void * user_data)<br>
-</pre>
-<p>Validate an input based on a flow of SAX event from the parser and forward the events to the @sax handler with the provided @user_data the user provided @sax handler must be a SAX2 one.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a schema validation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>input</tt></i>:</span></td>
-<td>the input to use for reading the data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>enc</tt></i>:</span></td>
-<td>an optional encoding information</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sax</tt></i>:</span></td>
-<td>a SAX handler for the resulting events</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>user_data</tt></i>:</span></td>
-<td>the context to provide to the SAX handler.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlschemastypes.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlschemastypes.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlschemastypes.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlschemastypes.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,935 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlschemastypes: implementation of XML Schema Datatypes</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlschemas.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlstring.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlschemastypes</span></h2>
-<p>xmlschemastypes - implementation of XML Schema Datatypes</p>
-<p>module providing the XML Schema Datatypes implementation both definition and validity checking </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">typedef enum <a href="#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a>;
-int	<a href="#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> typeDecl, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> pctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#xmlSchemaCleanupTypes">xmlSchemaCleanupTypes</a>		(void);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSchemaCollapseString">xmlSchemaCollapseString</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlSchemaCompareValues">xmlSchemaCompareValues</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> x, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> y);
-int	<a href="#xmlSchemaCompareValuesWhtsp">xmlSchemaCompareValuesWhtsp</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> x, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> xws, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> y, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> yws);
-<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	<a href="#xmlSchemaCopyValue">xmlSchemaCopyValue</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val);
-void	<a href="#xmlSchemaFreeFacet">xmlSchemaFreeFacet</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet);
-void	<a href="#xmlSchemaFreeValue">xmlSchemaFreeValue</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> value);
-<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	<a href="#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type);
-<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	<a href="#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> type);
-int	<a href="#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue);
-int	<a href="#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws);
-unsigned long	<a href="#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet);
-<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	<a href="#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
-<a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a>	<a href="#xmlSchemaGetValType">xmlSchemaGetValType</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val);
-int	<a href="#xmlSchemaInitTypes">xmlSchemaInitTypes</a>		(void);
-int	<a href="#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 int facetType);
-<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>	<a href="#xmlSchemaNewFacet">xmlSchemaNewFacet</a>	(void);
-<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	<a href="#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns);
-<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	<a href="#xmlSchemaNewQNameValue">xmlSchemaNewQNameValue</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceName, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName);
-<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	<a href="#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-int	<a href="#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> base, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val);
-int	<a href="#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> fws, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws);
-int	<a href="#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 unsigned long * length);
-int	<a href="#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>						 unsigned long * length, <br>						 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws);
-int	<a href="#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>						 unsigned long actualLen, <br>						 unsigned long * expectedLen);
-int	<a href="#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val);
-int	<a href="#xmlSchemaValueAppend">xmlSchemaValueAppend</a>		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> prev, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> cur);
-int	<a href="#xmlSchemaValueGetAsBoolean">xmlSchemaValueGetAsBoolean</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSchemaValueGetAsString">xmlSchemaValueGetAsString</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val);
-<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	<a href="#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a>	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> cur);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSchemaWhiteSpaceReplace">xmlSchemaWhiteSpaceReplace</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWhitespaceValueType">Enum </a>xmlSchemaWhitespaceValueType</h3>
-<pre class="programlisting">enum <a href="#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> {
-    <a name="XML_SCHEMA_WHITESPACE_UNKNOWN">XML_SCHEMA_WHITESPACE_UNKNOWN</a> = 0
-    <a name="XML_SCHEMA_WHITESPACE_PRESERVE">XML_SCHEMA_WHITESPACE_PRESERVE</a> = 1
-    <a name="XML_SCHEMA_WHITESPACE_REPLACE">XML_SCHEMA_WHITESPACE_REPLACE</a> = 2
-    <a name="XML_SCHEMA_WHITESPACE_COLLAPSE">XML_SCHEMA_WHITESPACE_COLLAPSE</a> = 3
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCheckFacet"></a>xmlSchemaCheckFacet ()</h3>
-<pre class="programlisting">int	xmlSchemaCheckFacet		(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> typeDecl, <br>					 <a href="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr">xmlSchemaParserCtxtPtr</a> pctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Checks and computes the values of facets.</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</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>typeDecl</tt></i>:</span></td>
-<td>the schema type definition</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pctxt</tt></i>:</span></td>
-<td>the schema parser context or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the optional name of the type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if valid, a positive error code if not valid and -1 in case of an internal or API error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCleanupTypes"></a>xmlSchemaCleanupTypes ()</h3>
-<pre class="programlisting">void	xmlSchemaCleanupTypes		(void)<br>
-</pre>
-<p>DEPRECATED: This function will be made private. Call <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> to free global state but see the warnings there. <a href="libxml2-parser.html#xmlCleanupParser">xmlCleanupParser</a> should be only called once at program exit. In most cases, you don't have to call cleanup functions at all. Cleanup the default XML Schemas type library</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCollapseString"></a>xmlSchemaCollapseString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSchemaCollapseString	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Removes and normalize white spaces in the string</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>a value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new string or NULL if no change was required.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCompareValues"></a>xmlSchemaCompareValues ()</h3>
-<pre class="programlisting">int	xmlSchemaCompareValues		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> x, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> y)<br>
-</pre>
-<p>Compare 2 values</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>x</tt></i>:</span></td>
-<td>a first value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>y</tt></i>:</span></td>
-<td>a second value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-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</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCompareValuesWhtsp"></a>xmlSchemaCompareValuesWhtsp ()</h3>
-<pre class="programlisting">int	xmlSchemaCompareValuesWhtsp	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> x, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> xws, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> y, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> yws)<br>
-</pre>
-<p>Compare 2 values</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>x</tt></i>:</span></td>
-<td>a first value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>xws</tt></i>:</span></td>
-<td>the whitespace value of x</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>y</tt></i>:</span></td>
-<td>a second value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>yws</tt></i>:</span></td>
-<td>the whitespace value of y</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-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</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaCopyValue"></a>xmlSchemaCopyValue ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	xmlSchemaCopyValue	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)<br>
-</pre>
-<p>Copies the precomputed value. This duplicates any string within.</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 to be copied</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the copy or NULL if a copy for a data-type is not implemented.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeFacet"></a>xmlSchemaFreeFacet ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeFacet		(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)<br>
-</pre>
-<p>Deallocate a Schema Facet structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>facet</tt></i>:</span></td>
-<td>a schema facet structure</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaFreeValue"></a>xmlSchemaFreeValue ()</h3>
-<pre class="programlisting">void	xmlSchemaFreeValue		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> value)<br>
-</pre>
-<p>Cleanup the default XML Schemas type library</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetBuiltInListSimpleTypeItemType"></a>xmlSchemaGetBuiltInListSimpleTypeItemType ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	xmlSchemaGetBuiltInListSimpleTypeItemType	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type)<br>
-</pre>
-<p>Lookup function</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 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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetBuiltInType"></a>xmlSchemaGetBuiltInType ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	xmlSchemaGetBuiltInType	(<a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetCanonValue"></a>xmlSchemaGetCanonValue ()</h3>
-<pre class="programlisting">int	xmlSchemaGetCanonValue		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue)<br>
-</pre>
-<p>Get the canonical 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 "???". TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</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, 1 if the value type is not supported yet and -1 in case of API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetCanonValueWhtsp"></a>xmlSchemaGetCanonValueWhtsp ()</h3>
-<pre class="programlisting">int	xmlSchemaGetCanonValueWhtsp	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** retValue, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)<br>
-</pre>
-<p>Get the canonical 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>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 could be built, 1 if the value type is not supported yet and -1 in case of API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetFacetValueAsULong"></a>xmlSchemaGetFacetValueAsULong ()</h3>
-<pre class="programlisting">unsigned long	xmlSchemaGetFacetValueAsULong	(<a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetPredefinedType"></a>xmlSchemaGetPredefinedType ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	xmlSchemaGetPredefinedType	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaGetValType"></a>xmlSchemaGetValType ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a>	xmlSchemaGetValType	(<a href="libxml2-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="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> of the value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaInitTypes"></a>xmlSchemaInitTypes ()</h3>
-<pre class="programlisting">int	xmlSchemaInitTypes		(void)<br>
-</pre>
-<p>Initialize the default XML Schemas type library</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 on success, -1 on error.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaIsBuiltInTypeFacet"></a>xmlSchemaIsBuiltInTypeFacet ()</h3>
-<pre class="programlisting">int	xmlSchemaIsBuiltInTypeFacet	(<a href="libxml2-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>
-<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>facetType</tt></i>:</span></td>
-<td>the facet type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewFacet"></a>xmlSchemaNewFacet ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>	xmlSchemaNewFacet	(void)<br>
-</pre>
-<p>Allocate a new Facet structure.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly allocated structure or NULL in case or error</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewNOTATIONValue"></a>xmlSchemaNewNOTATIONValue ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	xmlSchemaNewNOTATIONValue	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns)<br>
-</pre>
-<p>Allocate a new NOTATION value. The given values are consumed and freed with the struct.</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 notation name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the notation namespace name or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new value or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewQNameValue"></a>xmlSchemaNewQNameValue ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	xmlSchemaNewQNameValue	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceName, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * localName)<br>
-</pre>
-<p>Allocate a new QName value. The given values are consumed and freed with the struct.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>namespaceName</tt></i>:</span></td>
-<td>the namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>localName</tt></i>:</span></td>
-<td>the local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new value or NULL in case of an error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaNewStringValue"></a>xmlSchemaNewStringValue ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	xmlSchemaNewStringValue	(<a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Allocate a new simple type value. The type can be of <a href="libxml2-schemasInternals.html#XML_SCHEMAS_STRING">XML_SCHEMAS_STRING</a>. WARNING: This one is intended to be expanded for other string based types. We need this for anySimpleType as well. The given value is consumed and freed with the struct.</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 value type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the new value or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValPredefTypeNode"></a>xmlSchemaValPredefTypeNode ()</h3>
-<pre class="programlisting">int	xmlSchemaValPredefTypeNode	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<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>
-<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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValPredefTypeNodeNoNorm"></a>xmlSchemaValPredefTypeNodeNoNorm ()</h3>
-<pre class="programlisting">int	xmlSchemaValPredefTypeNodeNoNorm	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<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. 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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateFacet"></a>xmlSchemaValidateFacet ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateFacet		(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> base, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateFacetWhtsp"></a>xmlSchemaValidateFacetWhtsp ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateFacetWhtsp	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 <a href="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> fws, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>					 <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateLengthFacet"></a>xmlSchemaValidateLengthFacet ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateLengthFacet	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateLengthFacetWhtsp"></a>xmlSchemaValidateLengthFacetWhtsp ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateLengthFacetWhtsp	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>						 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br>						 unsigned long * length, <br>						 <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidateListSimpleTypeFacet"></a>xmlSchemaValidateListSimpleTypeFacet ()</h3>
-<pre class="programlisting">int	xmlSchemaValidateListSimpleTypeFacet	(<a href="libxml2-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br>						 const <a href="libxml2-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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValidatePredefinedType"></a>xmlSchemaValidatePredefinedType ()</h3>
-<pre class="programlisting">int	xmlSchemaValidatePredefinedType	(<a href="libxml2-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value, <br>					 <a href="libxml2-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>
-<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>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>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValueAppend"></a>xmlSchemaValueAppend ()</h3>
-<pre class="programlisting">int	xmlSchemaValueAppend		(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> prev, <br>					 <a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> cur)<br>
-</pre>
-<p>Appends a next sibling to a list of computed values.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>prev</tt></i>:</span></td>
-<td>the value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the value to be appended</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if succeeded and -1 on API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValueGetAsBoolean"></a>xmlSchemaValueGetAsBoolean ()</h3>
-<pre class="programlisting">int	xmlSchemaValueGetAsBoolean	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)<br>
-</pre>
-<p>Accessor for the boolean value of a computed 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>the value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true and 0 if false, or in case of an error. Hmm.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValueGetAsString"></a>xmlSchemaValueGetAsString ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSchemaValueGetAsString	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)<br>
-</pre>
-<p>Accessor for the string value of a computed 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>the value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the string value or NULL if there was none, or on API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaValueGetNext"></a>xmlSchemaValueGetNext ()</h3>
-<pre class="programlisting"><a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a>	xmlSchemaValueGetNext	(<a href="libxml2-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> cur)<br>
-</pre>
-<p>Accessor for the next sibling of a list of computed values.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next value or NULL if there was none, or on API errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlSchemaWhiteSpaceReplace"></a>xmlSchemaWhiteSpaceReplace ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlSchemaWhiteSpaceReplace	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br>
-</pre>
-<p>Replaces 0xd, 0x9 and 0xa with a space.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>a value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new string or NULL if no change was required.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlstring.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlstring.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlstring.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlstring.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,853 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlstring: set of routines to process strings</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlschemastypes.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlversion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlstring</span></h2>
-<p>xmlstring - set of routines to process strings</p>
-<p>type and interfaces needed for the internal string handling of the library, especially UTF8 processing. </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#BAD_CAST">BAD_CAST</a>;
-typedef unsigned char <a href="#xmlChar">xmlChar</a>;
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCharStrdup">xmlCharStrdup</a>		(const char * cur);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCharStrndup">xmlCharStrndup</a>		(const char * cur, <br>					 int len);
-int	<a href="#xmlCheckUTF8">xmlCheckUTF8</a>			(const unsigned char * utf);
-int	<a href="#xmlGetUTF8Char">xmlGetUTF8Char</a>			(const unsigned char * utf, <br>					 int * len);
-int	<a href="#xmlStrEqual">xmlStrEqual</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2);
-int	<a href="#xmlStrPrintf">xmlStrPrintf</a>			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br>					 int len, <br>					 const char * msg, <br>					 ... ...);
-int	<a href="#xmlStrQEqual">xmlStrQEqual</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pref, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-int	<a href="#xmlStrVPrintf">xmlStrVPrintf</a>			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br>					 int len, <br>					 const char * msg, <br>					 va_list ap);
-int	<a href="#xmlStrcasecmp">xmlStrcasecmp</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrcasestr">xmlStrcasestr</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrcat">xmlStrcat</a>		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * add);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrchr">xmlStrchr</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> val);
-int	<a href="#xmlStrcmp">xmlStrcmp</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrdup">xmlStrdup</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur);
-int	<a href="#xmlStrlen">xmlStrlen</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-int	<a href="#xmlStrncasecmp">xmlStrncasecmp</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrncat">xmlStrncat</a>		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * add, <br>					 int len);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrncatNew">xmlStrncatNew</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len);
-int	<a href="#xmlStrncmp">xmlStrncmp</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrndup">xmlStrndup</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int len);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrstr">xmlStrstr</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrsub">xmlStrsub</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int start, <br>					 int len);
-int	<a href="#xmlUTF8Charcmp">xmlUTF8Charcmp</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf2);
-int	<a href="#xmlUTF8Size">xmlUTF8Size</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf);
-int	<a href="#xmlUTF8Strlen">xmlUTF8Strlen</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf);
-int	<a href="#xmlUTF8Strloc">xmlUTF8Strloc</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utfchar);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlUTF8Strndup">xmlUTF8Strndup</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int len);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlUTF8Strpos">xmlUTF8Strpos</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int pos);
-int	<a href="#xmlUTF8Strsize">xmlUTF8Strsize</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int len);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlUTF8Strsub">xmlUTF8Strsub</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int start, <br>					 int len);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="BAD_CAST">Macro </a>BAD_CAST</h3>
-<pre class="programlisting">#define <a href="#BAD_CAST">BAD_CAST</a>;
-</pre>
-<p>Macro to cast a string to an <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * when one know its safe.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlChar">Typedef </a>xmlChar</h3>
-<pre class="programlisting">unsigned char xmlChar;
-</pre>
-<p>This is a basic byte in an UTF-8 encoded string. It's unsigned allowing to pinpoint case where char * are assigned to <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * (possibly making serialization back impossible).</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharStrdup"></a>xmlCharStrdup ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCharStrdup		(const char * cur)<br>
-</pre>
-<p>a strdup for char's to xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the input char *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCharStrndup"></a>xmlCharStrndup ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlCharStrndup		(const char * cur, <br>					 int len)<br>
-</pre>
-<p>a strndup for char's to xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the input char *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the len of @cur</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlCheckUTF8"></a>xmlCheckUTF8 ()</h3>
-<pre class="programlisting">int	xmlCheckUTF8			(const unsigned char * utf)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>Pointer to putative UTF-8 encoded string.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>value: true if @utf is valid.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlGetUTF8Char"></a>xmlGetUTF8Char ()</h3>
-<pre class="programlisting">int	xmlGetUTF8Char			(const unsigned char * utf, <br>					 int * len)<br>
-</pre>
-<p>Read the first UTF8 character from @utf</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>a sequence of UTF-8 encoded bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>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.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the char value or -1 in case of error, and sets *len to the actual number of bytes consumed (0 in case of error)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrEqual"></a>xmlStrEqual ()</h3>
-<pre class="programlisting">int	xmlStrEqual			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2)<br>
-</pre>
-<p>Check if both strings are equal of have same content. Should be a bit more readable and faster than xmlStrcmp()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>the first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if they are equal, 0 if they are different</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrPrintf"></a>xmlStrPrintf ()</h3>
-<pre class="programlisting">int	xmlStrPrintf			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br>					 int len, <br>					 const char * msg, <br>					 ... ...)<br>
-</pre>
-<p>Formats @msg and places result into @buf.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the result buffer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the result buffer length.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message with printf formatting.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the message.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of characters written to @buf or -1 if an error occurs.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrQEqual"></a>xmlStrQEqual ()</h3>
-<pre class="programlisting">int	xmlStrQEqual			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pref, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Check if a QName is Equal to a given string</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>pref</tt></i>:</span></td>
-<td>the prefix of the QName</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the localname of the QName</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if they are equal, 0 if they are different</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrVPrintf"></a>xmlStrVPrintf ()</h3>
-<pre class="programlisting">int	xmlStrVPrintf			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br>					 int len, <br>					 const char * msg, <br>					 va_list ap)<br>
-</pre>
-<p>Formats @msg and places result into @buf.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td>the result buffer.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the result buffer length.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>msg</tt></i>:</span></td>
-<td>the message with printf formatting.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ap</tt></i>:</span></td>
-<td>extra parameters for the message.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of characters written to @buf or -1 if an error occurs.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrcasecmp"></a>xmlStrcasecmp ()</h3>
-<pre class="programlisting">int	xmlStrcasecmp			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2)<br>
-</pre>
-<p>a strcasecmp for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>the first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the integer result of the comparison</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrcasestr"></a>xmlStrcasestr ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrcasestr		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>a case-ignoring strstr for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array (haystack)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to search (needle)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * for the first occurrence or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrcat"></a>xmlStrcat ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrcat		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * add)<br>
-</pre>
-<p>a strcat for array of xmlChar's. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of '0'.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the original <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>add</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * containing the concatenated string. The original @cur is reallocated and should not be freed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrchr"></a>xmlStrchr ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrchr		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> val)<br>
-</pre>
-<p>a strchr for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to search</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * for the first occurrence or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrcmp"></a>xmlStrcmp ()</h3>
-<pre class="programlisting">int	xmlStrcmp			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2)<br>
-</pre>
-<p>a strcmp for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>the first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the integer result of the comparison</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrdup"></a>xmlStrdup ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrdup		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur)<br>
-</pre>
-<p>a strdup for array of xmlChar's. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of '0'.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the input <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrlen"></a>xmlStrlen ()</h3>
-<pre class="programlisting">int	xmlStrlen			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>length of a xmlChar's string</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> contained in the ARRAY.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrncasecmp"></a>xmlStrncasecmp ()</h3>
-<pre class="programlisting">int	xmlStrncasecmp			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len)<br>
-</pre>
-<p>a strncasecmp for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>the first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the max comparison length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the integer result of the comparison</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrncat"></a>xmlStrncat ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrncat		(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * add, <br>					 int len)<br>
-</pre>
-<p>a strncat for array of xmlChar's, it will extend @cur with the len first bytes of @add. Note that if @len &lt; 0 then this is an API error and NULL will be returned.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the original <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>add</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array added</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of @add</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *, the original @cur is reallocated and should not be freed.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrncatNew"></a>xmlStrncatNew ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrncatNew		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len)<br>
-</pre>
-<p>same as xmlStrncat, but creates a new string. The original two strings are not freed. If @len is &lt; 0 then the length will be calculated automatically.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the len of @str2 or &lt; 0</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrncmp"></a>xmlStrncmp ()</h3>
-<pre class="programlisting">int	xmlStrncmp			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str2, <br>					 int len)<br>
-</pre>
-<p>a strncmp for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str1</tt></i>:</span></td>
-<td>the first <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str2</tt></i>:</span></td>
-<td>the second <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the max comparison length</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the integer result of the comparison</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrndup"></a>xmlStrndup ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrndup		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * cur, <br>					 int len)<br>
-</pre>
-<p>a strndup for array of xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the input <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the len of @cur</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrstr"></a>xmlStrstr ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrstr		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>a strstr for xmlChar's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array (haystack)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> to search (needle)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * for the first occurrence or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlStrsub"></a>xmlStrsub ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlStrsub		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 int start, <br>					 int len)<br>
-</pre>
-<p>Extract a substring of a given string</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * array (haystack)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>start</tt></i>:</span></td>
-<td>the index of the first char (zero based)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the length of the substring</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * for the first occurrence or NULL.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Charcmp"></a>xmlUTF8Charcmp ()</h3>
-<pre class="programlisting">int	xmlUTF8Charcmp			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf1, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf2)<br>
-</pre>
-<p>compares the two UCS4 values</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf1</tt></i>:</span></td>
-<td>pointer to first UTF8 char</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>utf2</tt></i>:</span></td>
-<td>pointer to second UTF8 char</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>result of the compare as with <a href="libxml2-xmlstring.html#xmlStrncmp">xmlStrncmp</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Size"></a>xmlUTF8Size ()</h3>
-<pre class="programlisting">int	xmlUTF8Size			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf)<br>
-</pre>
-<p>calculates the internal size of a UTF8 character</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>pointer to the UTF8 character</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the numbers of bytes in the character, -1 on format error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strlen"></a>xmlUTF8Strlen ()</h3>
-<pre class="programlisting">int	xmlUTF8Strlen			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf)<br>
-</pre>
-<p>compute the length of an UTF8 string, it doesn't do a full UTF8 checking of the content of the string.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>a sequence of UTF-8 encoded bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of characters in the string or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strloc"></a>xmlUTF8Strloc ()</h3>
-<pre class="programlisting">int	xmlUTF8Strloc			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utfchar)<br>
-</pre>
-<p>a function to provide the relative location of a UTF8 char</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>the input UTF8 *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>utfchar</tt></i>:</span></td>
-<td>the UTF8 character to be found</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the relative character position of the desired char or -1 if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strndup"></a>xmlUTF8Strndup ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlUTF8Strndup		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int len)<br>
-</pre>
-<p>a strndup for array of UTF8's</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>the input UTF8 *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the len of @utf (in chars)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a new UTF8 * or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strpos"></a>xmlUTF8Strpos ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlUTF8Strpos		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int pos)<br>
-</pre>
-<p>a function to provide the equivalent of fetching a character from a string array</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>the input UTF8 *</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pos</tt></i>:</span></td>
-<td>the position of the desired UTF8 char (in chars)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to the UTF8 character or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strsize"></a>xmlUTF8Strsize ()</h3>
-<pre class="programlisting">int	xmlUTF8Strsize			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int len)<br>
-</pre>
-<p>storage size of an UTF8 string the behaviour is not guaranteed if the input string is not UTF-8</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>a sequence of UTF-8 encoded bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of characters in the array</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the storage size of the first 'len' characters of ARRAY</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUTF8Strsub"></a>xmlUTF8Strsub ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlUTF8Strsub		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br>					 int start, <br>					 int len)<br>
-</pre>
-<p>Create a substring from a given UTF-8 string Note: positions are given in units of UTF-8 chars</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>utf</tt></i>:</span></td>
-<td>a sequence of UTF-8 encoded bytes</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>start</tt></i>:</span></td>
-<td>relative pos of first char</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>total number to copy</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a pointer to a newly created string or NULL if the start index is out of bounds or a memory allocation failed. If len is too large, the result is truncated.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlunicode.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlunicode.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlunicode.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlunicode.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,3694 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlunicode: Unicode character APIs</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlstring.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlversion.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlunicode</span></h2>
-<p>xmlunicode - Unicode character APIs</p>
-<p>API for the Unicode character APIs  This file is automatically generated from the UCS description files of the Unicode Character Database</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">int	<a href="#xmlUCSIsAegeanNumbers">xmlUCSIsAegeanNumbers</a>		(int code);
-int	<a href="#xmlUCSIsAlphabeticPresentationForms">xmlUCSIsAlphabeticPresentationForms</a>	(int code);
-int	<a href="#xmlUCSIsArabic">xmlUCSIsArabic</a>			(int code);
-int	<a href="#xmlUCSIsArabicPresentationFormsA">xmlUCSIsArabicPresentationFormsA</a>	(int code);
-int	<a href="#xmlUCSIsArabicPresentationFormsB">xmlUCSIsArabicPresentationFormsB</a>	(int code);
-int	<a href="#xmlUCSIsArmenian">xmlUCSIsArmenian</a>		(int code);
-int	<a href="#xmlUCSIsArrows">xmlUCSIsArrows</a>			(int code);
-int	<a href="#xmlUCSIsBasicLatin">xmlUCSIsBasicLatin</a>		(int code);
-int	<a href="#xmlUCSIsBengali">xmlUCSIsBengali</a>			(int code);
-int	<a href="#xmlUCSIsBlock">xmlUCSIsBlock</a>			(int code, <br>					 const char * block);
-int	<a href="#xmlUCSIsBlockElements">xmlUCSIsBlockElements</a>		(int code);
-int	<a href="#xmlUCSIsBopomofo">xmlUCSIsBopomofo</a>		(int code);
-int	<a href="#xmlUCSIsBopomofoExtended">xmlUCSIsBopomofoExtended</a>	(int code);
-int	<a href="#xmlUCSIsBoxDrawing">xmlUCSIsBoxDrawing</a>		(int code);
-int	<a href="#xmlUCSIsBraillePatterns">xmlUCSIsBraillePatterns</a>		(int code);
-int	<a href="#xmlUCSIsBuhid">xmlUCSIsBuhid</a>			(int code);
-int	<a href="#xmlUCSIsByzantineMusicalSymbols">xmlUCSIsByzantineMusicalSymbols</a>	(int code);
-int	<a href="#xmlUCSIsCJKCompatibility">xmlUCSIsCJKCompatibility</a>	(int code);
-int	<a href="#xmlUCSIsCJKCompatibilityForms">xmlUCSIsCJKCompatibilityForms</a>	(int code);
-int	<a href="#xmlUCSIsCJKCompatibilityIdeographs">xmlUCSIsCJKCompatibilityIdeographs</a>	(int code);
-int	<a href="#xmlUCSIsCJKCompatibilityIdeographsSupplement">xmlUCSIsCJKCompatibilityIdeographsSupplement</a>	(int code);
-int	<a href="#xmlUCSIsCJKRadicalsSupplement">xmlUCSIsCJKRadicalsSupplement</a>	(int code);
-int	<a href="#xmlUCSIsCJKSymbolsandPunctuation">xmlUCSIsCJKSymbolsandPunctuation</a>	(int code);
-int	<a href="#xmlUCSIsCJKUnifiedIdeographs">xmlUCSIsCJKUnifiedIdeographs</a>	(int code);
-int	<a href="#xmlUCSIsCJKUnifiedIdeographsExtensionA">xmlUCSIsCJKUnifiedIdeographsExtensionA</a>	(int code);
-int	<a href="#xmlUCSIsCJKUnifiedIdeographsExtensionB">xmlUCSIsCJKUnifiedIdeographsExtensionB</a>	(int code);
-int	<a href="#xmlUCSIsCat">xmlUCSIsCat</a>			(int code, <br>					 const char * cat);
-int	<a href="#xmlUCSIsCatC">xmlUCSIsCatC</a>			(int code);
-int	<a href="#xmlUCSIsCatCc">xmlUCSIsCatCc</a>			(int code);
-int	<a href="#xmlUCSIsCatCf">xmlUCSIsCatCf</a>			(int code);
-int	<a href="#xmlUCSIsCatCo">xmlUCSIsCatCo</a>			(int code);
-int	<a href="#xmlUCSIsCatCs">xmlUCSIsCatCs</a>			(int code);
-int	<a href="#xmlUCSIsCatL">xmlUCSIsCatL</a>			(int code);
-int	<a href="#xmlUCSIsCatLl">xmlUCSIsCatLl</a>			(int code);
-int	<a href="#xmlUCSIsCatLm">xmlUCSIsCatLm</a>			(int code);
-int	<a href="#xmlUCSIsCatLo">xmlUCSIsCatLo</a>			(int code);
-int	<a href="#xmlUCSIsCatLt">xmlUCSIsCatLt</a>			(int code);
-int	<a href="#xmlUCSIsCatLu">xmlUCSIsCatLu</a>			(int code);
-int	<a href="#xmlUCSIsCatM">xmlUCSIsCatM</a>			(int code);
-int	<a href="#xmlUCSIsCatMc">xmlUCSIsCatMc</a>			(int code);
-int	<a href="#xmlUCSIsCatMe">xmlUCSIsCatMe</a>			(int code);
-int	<a href="#xmlUCSIsCatMn">xmlUCSIsCatMn</a>			(int code);
-int	<a href="#xmlUCSIsCatN">xmlUCSIsCatN</a>			(int code);
-int	<a href="#xmlUCSIsCatNd">xmlUCSIsCatNd</a>			(int code);
-int	<a href="#xmlUCSIsCatNl">xmlUCSIsCatNl</a>			(int code);
-int	<a href="#xmlUCSIsCatNo">xmlUCSIsCatNo</a>			(int code);
-int	<a href="#xmlUCSIsCatP">xmlUCSIsCatP</a>			(int code);
-int	<a href="#xmlUCSIsCatPc">xmlUCSIsCatPc</a>			(int code);
-int	<a href="#xmlUCSIsCatPd">xmlUCSIsCatPd</a>			(int code);
-int	<a href="#xmlUCSIsCatPe">xmlUCSIsCatPe</a>			(int code);
-int	<a href="#xmlUCSIsCatPf">xmlUCSIsCatPf</a>			(int code);
-int	<a href="#xmlUCSIsCatPi">xmlUCSIsCatPi</a>			(int code);
-int	<a href="#xmlUCSIsCatPo">xmlUCSIsCatPo</a>			(int code);
-int	<a href="#xmlUCSIsCatPs">xmlUCSIsCatPs</a>			(int code);
-int	<a href="#xmlUCSIsCatS">xmlUCSIsCatS</a>			(int code);
-int	<a href="#xmlUCSIsCatSc">xmlUCSIsCatSc</a>			(int code);
-int	<a href="#xmlUCSIsCatSk">xmlUCSIsCatSk</a>			(int code);
-int	<a href="#xmlUCSIsCatSm">xmlUCSIsCatSm</a>			(int code);
-int	<a href="#xmlUCSIsCatSo">xmlUCSIsCatSo</a>			(int code);
-int	<a href="#xmlUCSIsCatZ">xmlUCSIsCatZ</a>			(int code);
-int	<a href="#xmlUCSIsCatZl">xmlUCSIsCatZl</a>			(int code);
-int	<a href="#xmlUCSIsCatZp">xmlUCSIsCatZp</a>			(int code);
-int	<a href="#xmlUCSIsCatZs">xmlUCSIsCatZs</a>			(int code);
-int	<a href="#xmlUCSIsCherokee">xmlUCSIsCherokee</a>		(int code);
-int	<a href="#xmlUCSIsCombiningDiacriticalMarks">xmlUCSIsCombiningDiacriticalMarks</a>	(int code);
-int	<a href="#xmlUCSIsCombiningDiacriticalMarksforSymbols">xmlUCSIsCombiningDiacriticalMarksforSymbols</a>	(int code);
-int	<a href="#xmlUCSIsCombiningHalfMarks">xmlUCSIsCombiningHalfMarks</a>	(int code);
-int	<a href="#xmlUCSIsCombiningMarksforSymbols">xmlUCSIsCombiningMarksforSymbols</a>	(int code);
-int	<a href="#xmlUCSIsControlPictures">xmlUCSIsControlPictures</a>		(int code);
-int	<a href="#xmlUCSIsCurrencySymbols">xmlUCSIsCurrencySymbols</a>		(int code);
-int	<a href="#xmlUCSIsCypriotSyllabary">xmlUCSIsCypriotSyllabary</a>	(int code);
-int	<a href="#xmlUCSIsCyrillic">xmlUCSIsCyrillic</a>		(int code);
-int	<a href="#xmlUCSIsCyrillicSupplement">xmlUCSIsCyrillicSupplement</a>	(int code);
-int	<a href="#xmlUCSIsDeseret">xmlUCSIsDeseret</a>			(int code);
-int	<a href="#xmlUCSIsDevanagari">xmlUCSIsDevanagari</a>		(int code);
-int	<a href="#xmlUCSIsDingbats">xmlUCSIsDingbats</a>		(int code);
-int	<a href="#xmlUCSIsEnclosedAlphanumerics">xmlUCSIsEnclosedAlphanumerics</a>	(int code);
-int	<a href="#xmlUCSIsEnclosedCJKLettersandMonths">xmlUCSIsEnclosedCJKLettersandMonths</a>	(int code);
-int	<a href="#xmlUCSIsEthiopic">xmlUCSIsEthiopic</a>		(int code);
-int	<a href="#xmlUCSIsGeneralPunctuation">xmlUCSIsGeneralPunctuation</a>	(int code);
-int	<a href="#xmlUCSIsGeometricShapes">xmlUCSIsGeometricShapes</a>		(int code);
-int	<a href="#xmlUCSIsGeorgian">xmlUCSIsGeorgian</a>		(int code);
-int	<a href="#xmlUCSIsGothic">xmlUCSIsGothic</a>			(int code);
-int	<a href="#xmlUCSIsGreek">xmlUCSIsGreek</a>			(int code);
-int	<a href="#xmlUCSIsGreekExtended">xmlUCSIsGreekExtended</a>		(int code);
-int	<a href="#xmlUCSIsGreekandCoptic">xmlUCSIsGreekandCoptic</a>		(int code);
-int	<a href="#xmlUCSIsGujarati">xmlUCSIsGujarati</a>		(int code);
-int	<a href="#xmlUCSIsGurmukhi">xmlUCSIsGurmukhi</a>		(int code);
-int	<a href="#xmlUCSIsHalfwidthandFullwidthForms">xmlUCSIsHalfwidthandFullwidthForms</a>	(int code);
-int	<a href="#xmlUCSIsHangulCompatibilityJamo">xmlUCSIsHangulCompatibilityJamo</a>	(int code);
-int	<a href="#xmlUCSIsHangulJamo">xmlUCSIsHangulJamo</a>		(int code);
-int	<a href="#xmlUCSIsHangulSyllables">xmlUCSIsHangulSyllables</a>		(int code);
-int	<a href="#xmlUCSIsHanunoo">xmlUCSIsHanunoo</a>			(int code);
-int	<a href="#xmlUCSIsHebrew">xmlUCSIsHebrew</a>			(int code);
-int	<a href="#xmlUCSIsHighPrivateUseSurrogates">xmlUCSIsHighPrivateUseSurrogates</a>	(int code);
-int	<a href="#xmlUCSIsHighSurrogates">xmlUCSIsHighSurrogates</a>		(int code);
-int	<a href="#xmlUCSIsHiragana">xmlUCSIsHiragana</a>		(int code);
-int	<a href="#xmlUCSIsIPAExtensions">xmlUCSIsIPAExtensions</a>		(int code);
-int	<a href="#xmlUCSIsIdeographicDescriptionCharacters">xmlUCSIsIdeographicDescriptionCharacters</a>	(int code);
-int	<a href="#xmlUCSIsKanbun">xmlUCSIsKanbun</a>			(int code);
-int	<a href="#xmlUCSIsKangxiRadicals">xmlUCSIsKangxiRadicals</a>		(int code);
-int	<a href="#xmlUCSIsKannada">xmlUCSIsKannada</a>			(int code);
-int	<a href="#xmlUCSIsKatakana">xmlUCSIsKatakana</a>		(int code);
-int	<a href="#xmlUCSIsKatakanaPhoneticExtensions">xmlUCSIsKatakanaPhoneticExtensions</a>	(int code);
-int	<a href="#xmlUCSIsKhmer">xmlUCSIsKhmer</a>			(int code);
-int	<a href="#xmlUCSIsKhmerSymbols">xmlUCSIsKhmerSymbols</a>		(int code);
-int	<a href="#xmlUCSIsLao">xmlUCSIsLao</a>			(int code);
-int	<a href="#xmlUCSIsLatin1Supplement">xmlUCSIsLatin1Supplement</a>	(int code);
-int	<a href="#xmlUCSIsLatinExtendedA">xmlUCSIsLatinExtendedA</a>		(int code);
-int	<a href="#xmlUCSIsLatinExtendedAdditional">xmlUCSIsLatinExtendedAdditional</a>	(int code);
-int	<a href="#xmlUCSIsLatinExtendedB">xmlUCSIsLatinExtendedB</a>		(int code);
-int	<a href="#xmlUCSIsLetterlikeSymbols">xmlUCSIsLetterlikeSymbols</a>	(int code);
-int	<a href="#xmlUCSIsLimbu">xmlUCSIsLimbu</a>			(int code);
-int	<a href="#xmlUCSIsLinearBIdeograms">xmlUCSIsLinearBIdeograms</a>	(int code);
-int	<a href="#xmlUCSIsLinearBSyllabary">xmlUCSIsLinearBSyllabary</a>	(int code);
-int	<a href="#xmlUCSIsLowSurrogates">xmlUCSIsLowSurrogates</a>		(int code);
-int	<a href="#xmlUCSIsMalayalam">xmlUCSIsMalayalam</a>		(int code);
-int	<a href="#xmlUCSIsMathematicalAlphanumericSymbols">xmlUCSIsMathematicalAlphanumericSymbols</a>	(int code);
-int	<a href="#xmlUCSIsMathematicalOperators">xmlUCSIsMathematicalOperators</a>	(int code);
-int	<a href="#xmlUCSIsMiscellaneousMathematicalSymbolsA">xmlUCSIsMiscellaneousMathematicalSymbolsA</a>	(int code);
-int	<a href="#xmlUCSIsMiscellaneousMathematicalSymbolsB">xmlUCSIsMiscellaneousMathematicalSymbolsB</a>	(int code);
-int	<a href="#xmlUCSIsMiscellaneousSymbols">xmlUCSIsMiscellaneousSymbols</a>	(int code);
-int	<a href="#xmlUCSIsMiscellaneousSymbolsandArrows">xmlUCSIsMiscellaneousSymbolsandArrows</a>	(int code);
-int	<a href="#xmlUCSIsMiscellaneousTechnical">xmlUCSIsMiscellaneousTechnical</a>	(int code);
-int	<a href="#xmlUCSIsMongolian">xmlUCSIsMongolian</a>		(int code);
-int	<a href="#xmlUCSIsMusicalSymbols">xmlUCSIsMusicalSymbols</a>		(int code);
-int	<a href="#xmlUCSIsMyanmar">xmlUCSIsMyanmar</a>			(int code);
-int	<a href="#xmlUCSIsNumberForms">xmlUCSIsNumberForms</a>		(int code);
-int	<a href="#xmlUCSIsOgham">xmlUCSIsOgham</a>			(int code);
-int	<a href="#xmlUCSIsOldItalic">xmlUCSIsOldItalic</a>		(int code);
-int	<a href="#xmlUCSIsOpticalCharacterRecognition">xmlUCSIsOpticalCharacterRecognition</a>	(int code);
-int	<a href="#xmlUCSIsOriya">xmlUCSIsOriya</a>			(int code);
-int	<a href="#xmlUCSIsOsmanya">xmlUCSIsOsmanya</a>			(int code);
-int	<a href="#xmlUCSIsPhoneticExtensions">xmlUCSIsPhoneticExtensions</a>	(int code);
-int	<a href="#xmlUCSIsPrivateUse">xmlUCSIsPrivateUse</a>		(int code);
-int	<a href="#xmlUCSIsPrivateUseArea">xmlUCSIsPrivateUseArea</a>		(int code);
-int	<a href="#xmlUCSIsRunic">xmlUCSIsRunic</a>			(int code);
-int	<a href="#xmlUCSIsShavian">xmlUCSIsShavian</a>			(int code);
-int	<a href="#xmlUCSIsSinhala">xmlUCSIsSinhala</a>			(int code);
-int	<a href="#xmlUCSIsSmallFormVariants">xmlUCSIsSmallFormVariants</a>	(int code);
-int	<a href="#xmlUCSIsSpacingModifierLetters">xmlUCSIsSpacingModifierLetters</a>	(int code);
-int	<a href="#xmlUCSIsSpecials">xmlUCSIsSpecials</a>		(int code);
-int	<a href="#xmlUCSIsSuperscriptsandSubscripts">xmlUCSIsSuperscriptsandSubscripts</a>	(int code);
-int	<a href="#xmlUCSIsSupplementalArrowsA">xmlUCSIsSupplementalArrowsA</a>	(int code);
-int	<a href="#xmlUCSIsSupplementalArrowsB">xmlUCSIsSupplementalArrowsB</a>	(int code);
-int	<a href="#xmlUCSIsSupplementalMathematicalOperators">xmlUCSIsSupplementalMathematicalOperators</a>	(int code);
-int	<a href="#xmlUCSIsSupplementaryPrivateUseAreaA">xmlUCSIsSupplementaryPrivateUseAreaA</a>	(int code);
-int	<a href="#xmlUCSIsSupplementaryPrivateUseAreaB">xmlUCSIsSupplementaryPrivateUseAreaB</a>	(int code);
-int	<a href="#xmlUCSIsSyriac">xmlUCSIsSyriac</a>			(int code);
-int	<a href="#xmlUCSIsTagalog">xmlUCSIsTagalog</a>			(int code);
-int	<a href="#xmlUCSIsTagbanwa">xmlUCSIsTagbanwa</a>		(int code);
-int	<a href="#xmlUCSIsTags">xmlUCSIsTags</a>			(int code);
-int	<a href="#xmlUCSIsTaiLe">xmlUCSIsTaiLe</a>			(int code);
-int	<a href="#xmlUCSIsTaiXuanJingSymbols">xmlUCSIsTaiXuanJingSymbols</a>	(int code);
-int	<a href="#xmlUCSIsTamil">xmlUCSIsTamil</a>			(int code);
-int	<a href="#xmlUCSIsTelugu">xmlUCSIsTelugu</a>			(int code);
-int	<a href="#xmlUCSIsThaana">xmlUCSIsThaana</a>			(int code);
-int	<a href="#xmlUCSIsThai">xmlUCSIsThai</a>			(int code);
-int	<a href="#xmlUCSIsTibetan">xmlUCSIsTibetan</a>			(int code);
-int	<a href="#xmlUCSIsUgaritic">xmlUCSIsUgaritic</a>		(int code);
-int	<a href="#xmlUCSIsUnifiedCanadianAboriginalSyllabics">xmlUCSIsUnifiedCanadianAboriginalSyllabics</a>	(int code);
-int	<a href="#xmlUCSIsVariationSelectors">xmlUCSIsVariationSelectors</a>	(int code);
-int	<a href="#xmlUCSIsVariationSelectorsSupplement">xmlUCSIsVariationSelectorsSupplement</a>	(int code);
-int	<a href="#xmlUCSIsYiRadicals">xmlUCSIsYiRadicals</a>		(int code);
-int	<a href="#xmlUCSIsYiSyllables">xmlUCSIsYiSyllables</a>		(int code);
-int	<a href="#xmlUCSIsYijingHexagramSymbols">xmlUCSIsYijingHexagramSymbols</a>	(int code);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsAegeanNumbers"></a>xmlUCSIsAegeanNumbers ()</h3>
-<pre class="programlisting">int	xmlUCSIsAegeanNumbers		(int code)<br>
-</pre>
-<p>Check whether the character is part of AegeanNumbers UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsAlphabeticPresentationForms"></a>xmlUCSIsAlphabeticPresentationForms ()</h3>
-<pre class="programlisting">int	xmlUCSIsAlphabeticPresentationForms	(int code)<br>
-</pre>
-<p>Check whether the character is part of AlphabeticPresentationForms UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsArabic"></a>xmlUCSIsArabic ()</h3>
-<pre class="programlisting">int	xmlUCSIsArabic			(int code)<br>
-</pre>
-<p>Check whether the character is part of Arabic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsArabicPresentationFormsA"></a>xmlUCSIsArabicPresentationFormsA ()</h3>
-<pre class="programlisting">int	xmlUCSIsArabicPresentationFormsA	(int code)<br>
-</pre>
-<p>Check whether the character is part of ArabicPresentationForms-A UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsArabicPresentationFormsB"></a>xmlUCSIsArabicPresentationFormsB ()</h3>
-<pre class="programlisting">int	xmlUCSIsArabicPresentationFormsB	(int code)<br>
-</pre>
-<p>Check whether the character is part of ArabicPresentationForms-B UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsArmenian"></a>xmlUCSIsArmenian ()</h3>
-<pre class="programlisting">int	xmlUCSIsArmenian		(int code)<br>
-</pre>
-<p>Check whether the character is part of Armenian UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsArrows"></a>xmlUCSIsArrows ()</h3>
-<pre class="programlisting">int	xmlUCSIsArrows			(int code)<br>
-</pre>
-<p>Check whether the character is part of Arrows UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBasicLatin"></a>xmlUCSIsBasicLatin ()</h3>
-<pre class="programlisting">int	xmlUCSIsBasicLatin		(int code)<br>
-</pre>
-<p>Check whether the character is part of BasicLatin UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBengali"></a>xmlUCSIsBengali ()</h3>
-<pre class="programlisting">int	xmlUCSIsBengali			(int code)<br>
-</pre>
-<p>Check whether the character is part of Bengali UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBlock"></a>xmlUCSIsBlock ()</h3>
-<pre class="programlisting">int	xmlUCSIsBlock			(int code, <br>					 const char * block)<br>
-</pre>
-<p>Check whether the character is part of the UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>block</tt></i>:</span></td>
-<td>UCS block name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false and -1 on unknown block</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBlockElements"></a>xmlUCSIsBlockElements ()</h3>
-<pre class="programlisting">int	xmlUCSIsBlockElements		(int code)<br>
-</pre>
-<p>Check whether the character is part of BlockElements UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBopomofo"></a>xmlUCSIsBopomofo ()</h3>
-<pre class="programlisting">int	xmlUCSIsBopomofo		(int code)<br>
-</pre>
-<p>Check whether the character is part of Bopomofo UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBopomofoExtended"></a>xmlUCSIsBopomofoExtended ()</h3>
-<pre class="programlisting">int	xmlUCSIsBopomofoExtended	(int code)<br>
-</pre>
-<p>Check whether the character is part of BopomofoExtended UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBoxDrawing"></a>xmlUCSIsBoxDrawing ()</h3>
-<pre class="programlisting">int	xmlUCSIsBoxDrawing		(int code)<br>
-</pre>
-<p>Check whether the character is part of BoxDrawing UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBraillePatterns"></a>xmlUCSIsBraillePatterns ()</h3>
-<pre class="programlisting">int	xmlUCSIsBraillePatterns		(int code)<br>
-</pre>
-<p>Check whether the character is part of BraillePatterns UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsBuhid"></a>xmlUCSIsBuhid ()</h3>
-<pre class="programlisting">int	xmlUCSIsBuhid			(int code)<br>
-</pre>
-<p>Check whether the character is part of Buhid UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsByzantineMusicalSymbols"></a>xmlUCSIsByzantineMusicalSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsByzantineMusicalSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of ByzantineMusicalSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKCompatibility"></a>xmlUCSIsCJKCompatibility ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKCompatibility	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKCompatibility UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKCompatibilityForms"></a>xmlUCSIsCJKCompatibilityForms ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKCompatibilityForms	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKCompatibilityForms UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKCompatibilityIdeographs"></a>xmlUCSIsCJKCompatibilityIdeographs ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKCompatibilityIdeographs	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKCompatibilityIdeographs UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKCompatibilityIdeographsSupplement"></a>xmlUCSIsCJKCompatibilityIdeographsSupplement ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKCompatibilityIdeographsSupplement	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKRadicalsSupplement"></a>xmlUCSIsCJKRadicalsSupplement ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKRadicalsSupplement	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKRadicalsSupplement UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKSymbolsandPunctuation"></a>xmlUCSIsCJKSymbolsandPunctuation ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKSymbolsandPunctuation	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKSymbolsandPunctuation UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKUnifiedIdeographs"></a>xmlUCSIsCJKUnifiedIdeographs ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKUnifiedIdeographs	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKUnifiedIdeographs UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKUnifiedIdeographsExtensionA"></a>xmlUCSIsCJKUnifiedIdeographsExtensionA ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKUnifiedIdeographsExtensionA	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCJKUnifiedIdeographsExtensionB"></a>xmlUCSIsCJKUnifiedIdeographsExtensionB ()</h3>
-<pre class="programlisting">int	xmlUCSIsCJKUnifiedIdeographsExtensionB	(int code)<br>
-</pre>
-<p>Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCat"></a>xmlUCSIsCat ()</h3>
-<pre class="programlisting">int	xmlUCSIsCat			(int code, <br>					 const char * cat)<br>
-</pre>
-<p>Check whether the character is part of the UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cat</tt></i>:</span></td>
-<td>UCS Category name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true, 0 if false and -1 on unknown category</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatC"></a>xmlUCSIsCatC ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatC			(int code)<br>
-</pre>
-<p>Check whether the character is part of C UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatCc"></a>xmlUCSIsCatCc ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatCc			(int code)<br>
-</pre>
-<p>Check whether the character is part of Cc UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatCf"></a>xmlUCSIsCatCf ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatCf			(int code)<br>
-</pre>
-<p>Check whether the character is part of Cf UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatCo"></a>xmlUCSIsCatCo ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatCo			(int code)<br>
-</pre>
-<p>Check whether the character is part of Co UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatCs"></a>xmlUCSIsCatCs ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatCs			(int code)<br>
-</pre>
-<p>Check whether the character is part of Cs UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatL"></a>xmlUCSIsCatL ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatL			(int code)<br>
-</pre>
-<p>Check whether the character is part of L UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatLl"></a>xmlUCSIsCatLl ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatLl			(int code)<br>
-</pre>
-<p>Check whether the character is part of Ll UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatLm"></a>xmlUCSIsCatLm ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatLm			(int code)<br>
-</pre>
-<p>Check whether the character is part of Lm UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatLo"></a>xmlUCSIsCatLo ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatLo			(int code)<br>
-</pre>
-<p>Check whether the character is part of Lo UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatLt"></a>xmlUCSIsCatLt ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatLt			(int code)<br>
-</pre>
-<p>Check whether the character is part of Lt UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatLu"></a>xmlUCSIsCatLu ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatLu			(int code)<br>
-</pre>
-<p>Check whether the character is part of Lu UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatM"></a>xmlUCSIsCatM ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatM			(int code)<br>
-</pre>
-<p>Check whether the character is part of M UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatMc"></a>xmlUCSIsCatMc ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatMc			(int code)<br>
-</pre>
-<p>Check whether the character is part of Mc UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatMe"></a>xmlUCSIsCatMe ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatMe			(int code)<br>
-</pre>
-<p>Check whether the character is part of Me UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatMn"></a>xmlUCSIsCatMn ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatMn			(int code)<br>
-</pre>
-<p>Check whether the character is part of Mn UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatN"></a>xmlUCSIsCatN ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatN			(int code)<br>
-</pre>
-<p>Check whether the character is part of N UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatNd"></a>xmlUCSIsCatNd ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatNd			(int code)<br>
-</pre>
-<p>Check whether the character is part of Nd UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatNl"></a>xmlUCSIsCatNl ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatNl			(int code)<br>
-</pre>
-<p>Check whether the character is part of Nl UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatNo"></a>xmlUCSIsCatNo ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatNo			(int code)<br>
-</pre>
-<p>Check whether the character is part of No UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatP"></a>xmlUCSIsCatP ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatP			(int code)<br>
-</pre>
-<p>Check whether the character is part of P UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPc"></a>xmlUCSIsCatPc ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPc			(int code)<br>
-</pre>
-<p>Check whether the character is part of Pc UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPd"></a>xmlUCSIsCatPd ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPd			(int code)<br>
-</pre>
-<p>Check whether the character is part of Pd UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPe"></a>xmlUCSIsCatPe ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPe			(int code)<br>
-</pre>
-<p>Check whether the character is part of Pe UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPf"></a>xmlUCSIsCatPf ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPf			(int code)<br>
-</pre>
-<p>Check whether the character is part of Pf UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPi"></a>xmlUCSIsCatPi ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPi			(int code)<br>
-</pre>
-<p>Check whether the character is part of Pi UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPo"></a>xmlUCSIsCatPo ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPo			(int code)<br>
-</pre>
-<p>Check whether the character is part of Po UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatPs"></a>xmlUCSIsCatPs ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatPs			(int code)<br>
-</pre>
-<p>Check whether the character is part of Ps UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatS"></a>xmlUCSIsCatS ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatS			(int code)<br>
-</pre>
-<p>Check whether the character is part of S UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatSc"></a>xmlUCSIsCatSc ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatSc			(int code)<br>
-</pre>
-<p>Check whether the character is part of Sc UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatSk"></a>xmlUCSIsCatSk ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatSk			(int code)<br>
-</pre>
-<p>Check whether the character is part of Sk UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatSm"></a>xmlUCSIsCatSm ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatSm			(int code)<br>
-</pre>
-<p>Check whether the character is part of Sm UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatSo"></a>xmlUCSIsCatSo ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatSo			(int code)<br>
-</pre>
-<p>Check whether the character is part of So UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatZ"></a>xmlUCSIsCatZ ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatZ			(int code)<br>
-</pre>
-<p>Check whether the character is part of Z UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatZl"></a>xmlUCSIsCatZl ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatZl			(int code)<br>
-</pre>
-<p>Check whether the character is part of Zl UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatZp"></a>xmlUCSIsCatZp ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatZp			(int code)<br>
-</pre>
-<p>Check whether the character is part of Zp UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCatZs"></a>xmlUCSIsCatZs ()</h3>
-<pre class="programlisting">int	xmlUCSIsCatZs			(int code)<br>
-</pre>
-<p>Check whether the character is part of Zs UCS Category</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCherokee"></a>xmlUCSIsCherokee ()</h3>
-<pre class="programlisting">int	xmlUCSIsCherokee		(int code)<br>
-</pre>
-<p>Check whether the character is part of Cherokee UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCombiningDiacriticalMarks"></a>xmlUCSIsCombiningDiacriticalMarks ()</h3>
-<pre class="programlisting">int	xmlUCSIsCombiningDiacriticalMarks	(int code)<br>
-</pre>
-<p>Check whether the character is part of CombiningDiacriticalMarks UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCombiningDiacriticalMarksforSymbols"></a>xmlUCSIsCombiningDiacriticalMarksforSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsCombiningDiacriticalMarksforSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of CombiningDiacriticalMarksforSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCombiningHalfMarks"></a>xmlUCSIsCombiningHalfMarks ()</h3>
-<pre class="programlisting">int	xmlUCSIsCombiningHalfMarks	(int code)<br>
-</pre>
-<p>Check whether the character is part of CombiningHalfMarks UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCombiningMarksforSymbols"></a>xmlUCSIsCombiningMarksforSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsCombiningMarksforSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of CombiningMarksforSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsControlPictures"></a>xmlUCSIsControlPictures ()</h3>
-<pre class="programlisting">int	xmlUCSIsControlPictures		(int code)<br>
-</pre>
-<p>Check whether the character is part of ControlPictures UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCurrencySymbols"></a>xmlUCSIsCurrencySymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsCurrencySymbols		(int code)<br>
-</pre>
-<p>Check whether the character is part of CurrencySymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCypriotSyllabary"></a>xmlUCSIsCypriotSyllabary ()</h3>
-<pre class="programlisting">int	xmlUCSIsCypriotSyllabary	(int code)<br>
-</pre>
-<p>Check whether the character is part of CypriotSyllabary UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCyrillic"></a>xmlUCSIsCyrillic ()</h3>
-<pre class="programlisting">int	xmlUCSIsCyrillic		(int code)<br>
-</pre>
-<p>Check whether the character is part of Cyrillic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsCyrillicSupplement"></a>xmlUCSIsCyrillicSupplement ()</h3>
-<pre class="programlisting">int	xmlUCSIsCyrillicSupplement	(int code)<br>
-</pre>
-<p>Check whether the character is part of CyrillicSupplement UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsDeseret"></a>xmlUCSIsDeseret ()</h3>
-<pre class="programlisting">int	xmlUCSIsDeseret			(int code)<br>
-</pre>
-<p>Check whether the character is part of Deseret UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsDevanagari"></a>xmlUCSIsDevanagari ()</h3>
-<pre class="programlisting">int	xmlUCSIsDevanagari		(int code)<br>
-</pre>
-<p>Check whether the character is part of Devanagari UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsDingbats"></a>xmlUCSIsDingbats ()</h3>
-<pre class="programlisting">int	xmlUCSIsDingbats		(int code)<br>
-</pre>
-<p>Check whether the character is part of Dingbats UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsEnclosedAlphanumerics"></a>xmlUCSIsEnclosedAlphanumerics ()</h3>
-<pre class="programlisting">int	xmlUCSIsEnclosedAlphanumerics	(int code)<br>
-</pre>
-<p>Check whether the character is part of EnclosedAlphanumerics UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsEnclosedCJKLettersandMonths"></a>xmlUCSIsEnclosedCJKLettersandMonths ()</h3>
-<pre class="programlisting">int	xmlUCSIsEnclosedCJKLettersandMonths	(int code)<br>
-</pre>
-<p>Check whether the character is part of EnclosedCJKLettersandMonths UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsEthiopic"></a>xmlUCSIsEthiopic ()</h3>
-<pre class="programlisting">int	xmlUCSIsEthiopic		(int code)<br>
-</pre>
-<p>Check whether the character is part of Ethiopic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGeneralPunctuation"></a>xmlUCSIsGeneralPunctuation ()</h3>
-<pre class="programlisting">int	xmlUCSIsGeneralPunctuation	(int code)<br>
-</pre>
-<p>Check whether the character is part of GeneralPunctuation UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGeometricShapes"></a>xmlUCSIsGeometricShapes ()</h3>
-<pre class="programlisting">int	xmlUCSIsGeometricShapes		(int code)<br>
-</pre>
-<p>Check whether the character is part of GeometricShapes UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGeorgian"></a>xmlUCSIsGeorgian ()</h3>
-<pre class="programlisting">int	xmlUCSIsGeorgian		(int code)<br>
-</pre>
-<p>Check whether the character is part of Georgian UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGothic"></a>xmlUCSIsGothic ()</h3>
-<pre class="programlisting">int	xmlUCSIsGothic			(int code)<br>
-</pre>
-<p>Check whether the character is part of Gothic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGreek"></a>xmlUCSIsGreek ()</h3>
-<pre class="programlisting">int	xmlUCSIsGreek			(int code)<br>
-</pre>
-<p>Check whether the character is part of Greek UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGreekExtended"></a>xmlUCSIsGreekExtended ()</h3>
-<pre class="programlisting">int	xmlUCSIsGreekExtended		(int code)<br>
-</pre>
-<p>Check whether the character is part of GreekExtended UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGreekandCoptic"></a>xmlUCSIsGreekandCoptic ()</h3>
-<pre class="programlisting">int	xmlUCSIsGreekandCoptic		(int code)<br>
-</pre>
-<p>Check whether the character is part of GreekandCoptic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGujarati"></a>xmlUCSIsGujarati ()</h3>
-<pre class="programlisting">int	xmlUCSIsGujarati		(int code)<br>
-</pre>
-<p>Check whether the character is part of Gujarati UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsGurmukhi"></a>xmlUCSIsGurmukhi ()</h3>
-<pre class="programlisting">int	xmlUCSIsGurmukhi		(int code)<br>
-</pre>
-<p>Check whether the character is part of Gurmukhi UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHalfwidthandFullwidthForms"></a>xmlUCSIsHalfwidthandFullwidthForms ()</h3>
-<pre class="programlisting">int	xmlUCSIsHalfwidthandFullwidthForms	(int code)<br>
-</pre>
-<p>Check whether the character is part of HalfwidthandFullwidthForms UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHangulCompatibilityJamo"></a>xmlUCSIsHangulCompatibilityJamo ()</h3>
-<pre class="programlisting">int	xmlUCSIsHangulCompatibilityJamo	(int code)<br>
-</pre>
-<p>Check whether the character is part of HangulCompatibilityJamo UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHangulJamo"></a>xmlUCSIsHangulJamo ()</h3>
-<pre class="programlisting">int	xmlUCSIsHangulJamo		(int code)<br>
-</pre>
-<p>Check whether the character is part of HangulJamo UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHangulSyllables"></a>xmlUCSIsHangulSyllables ()</h3>
-<pre class="programlisting">int	xmlUCSIsHangulSyllables		(int code)<br>
-</pre>
-<p>Check whether the character is part of HangulSyllables UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHanunoo"></a>xmlUCSIsHanunoo ()</h3>
-<pre class="programlisting">int	xmlUCSIsHanunoo			(int code)<br>
-</pre>
-<p>Check whether the character is part of Hanunoo UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHebrew"></a>xmlUCSIsHebrew ()</h3>
-<pre class="programlisting">int	xmlUCSIsHebrew			(int code)<br>
-</pre>
-<p>Check whether the character is part of Hebrew UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHighPrivateUseSurrogates"></a>xmlUCSIsHighPrivateUseSurrogates ()</h3>
-<pre class="programlisting">int	xmlUCSIsHighPrivateUseSurrogates	(int code)<br>
-</pre>
-<p>Check whether the character is part of HighPrivateUseSurrogates UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHighSurrogates"></a>xmlUCSIsHighSurrogates ()</h3>
-<pre class="programlisting">int	xmlUCSIsHighSurrogates		(int code)<br>
-</pre>
-<p>Check whether the character is part of HighSurrogates UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsHiragana"></a>xmlUCSIsHiragana ()</h3>
-<pre class="programlisting">int	xmlUCSIsHiragana		(int code)<br>
-</pre>
-<p>Check whether the character is part of Hiragana UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsIPAExtensions"></a>xmlUCSIsIPAExtensions ()</h3>
-<pre class="programlisting">int	xmlUCSIsIPAExtensions		(int code)<br>
-</pre>
-<p>Check whether the character is part of IPAExtensions UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsIdeographicDescriptionCharacters"></a>xmlUCSIsIdeographicDescriptionCharacters ()</h3>
-<pre class="programlisting">int	xmlUCSIsIdeographicDescriptionCharacters	(int code)<br>
-</pre>
-<p>Check whether the character is part of IdeographicDescriptionCharacters UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKanbun"></a>xmlUCSIsKanbun ()</h3>
-<pre class="programlisting">int	xmlUCSIsKanbun			(int code)<br>
-</pre>
-<p>Check whether the character is part of Kanbun UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKangxiRadicals"></a>xmlUCSIsKangxiRadicals ()</h3>
-<pre class="programlisting">int	xmlUCSIsKangxiRadicals		(int code)<br>
-</pre>
-<p>Check whether the character is part of KangxiRadicals UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKannada"></a>xmlUCSIsKannada ()</h3>
-<pre class="programlisting">int	xmlUCSIsKannada			(int code)<br>
-</pre>
-<p>Check whether the character is part of Kannada UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKatakana"></a>xmlUCSIsKatakana ()</h3>
-<pre class="programlisting">int	xmlUCSIsKatakana		(int code)<br>
-</pre>
-<p>Check whether the character is part of Katakana UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKatakanaPhoneticExtensions"></a>xmlUCSIsKatakanaPhoneticExtensions ()</h3>
-<pre class="programlisting">int	xmlUCSIsKatakanaPhoneticExtensions	(int code)<br>
-</pre>
-<p>Check whether the character is part of KatakanaPhoneticExtensions UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKhmer"></a>xmlUCSIsKhmer ()</h3>
-<pre class="programlisting">int	xmlUCSIsKhmer			(int code)<br>
-</pre>
-<p>Check whether the character is part of Khmer UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsKhmerSymbols"></a>xmlUCSIsKhmerSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsKhmerSymbols		(int code)<br>
-</pre>
-<p>Check whether the character is part of KhmerSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLao"></a>xmlUCSIsLao ()</h3>
-<pre class="programlisting">int	xmlUCSIsLao			(int code)<br>
-</pre>
-<p>Check whether the character is part of Lao UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLatin1Supplement"></a>xmlUCSIsLatin1Supplement ()</h3>
-<pre class="programlisting">int	xmlUCSIsLatin1Supplement	(int code)<br>
-</pre>
-<p>Check whether the character is part of Latin-1Supplement UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLatinExtendedA"></a>xmlUCSIsLatinExtendedA ()</h3>
-<pre class="programlisting">int	xmlUCSIsLatinExtendedA		(int code)<br>
-</pre>
-<p>Check whether the character is part of LatinExtended-A UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLatinExtendedAdditional"></a>xmlUCSIsLatinExtendedAdditional ()</h3>
-<pre class="programlisting">int	xmlUCSIsLatinExtendedAdditional	(int code)<br>
-</pre>
-<p>Check whether the character is part of LatinExtendedAdditional UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLatinExtendedB"></a>xmlUCSIsLatinExtendedB ()</h3>
-<pre class="programlisting">int	xmlUCSIsLatinExtendedB		(int code)<br>
-</pre>
-<p>Check whether the character is part of LatinExtended-B UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLetterlikeSymbols"></a>xmlUCSIsLetterlikeSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsLetterlikeSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of LetterlikeSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLimbu"></a>xmlUCSIsLimbu ()</h3>
-<pre class="programlisting">int	xmlUCSIsLimbu			(int code)<br>
-</pre>
-<p>Check whether the character is part of Limbu UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLinearBIdeograms"></a>xmlUCSIsLinearBIdeograms ()</h3>
-<pre class="programlisting">int	xmlUCSIsLinearBIdeograms	(int code)<br>
-</pre>
-<p>Check whether the character is part of LinearBIdeograms UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLinearBSyllabary"></a>xmlUCSIsLinearBSyllabary ()</h3>
-<pre class="programlisting">int	xmlUCSIsLinearBSyllabary	(int code)<br>
-</pre>
-<p>Check whether the character is part of LinearBSyllabary UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsLowSurrogates"></a>xmlUCSIsLowSurrogates ()</h3>
-<pre class="programlisting">int	xmlUCSIsLowSurrogates		(int code)<br>
-</pre>
-<p>Check whether the character is part of LowSurrogates UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMalayalam"></a>xmlUCSIsMalayalam ()</h3>
-<pre class="programlisting">int	xmlUCSIsMalayalam		(int code)<br>
-</pre>
-<p>Check whether the character is part of Malayalam UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMathematicalAlphanumericSymbols"></a>xmlUCSIsMathematicalAlphanumericSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsMathematicalAlphanumericSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of MathematicalAlphanumericSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMathematicalOperators"></a>xmlUCSIsMathematicalOperators ()</h3>
-<pre class="programlisting">int	xmlUCSIsMathematicalOperators	(int code)<br>
-</pre>
-<p>Check whether the character is part of MathematicalOperators UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMiscellaneousMathematicalSymbolsA"></a>xmlUCSIsMiscellaneousMathematicalSymbolsA ()</h3>
-<pre class="programlisting">int	xmlUCSIsMiscellaneousMathematicalSymbolsA	(int code)<br>
-</pre>
-<p>Check whether the character is part of MiscellaneousMathematicalSymbols-A UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMiscellaneousMathematicalSymbolsB"></a>xmlUCSIsMiscellaneousMathematicalSymbolsB ()</h3>
-<pre class="programlisting">int	xmlUCSIsMiscellaneousMathematicalSymbolsB	(int code)<br>
-</pre>
-<p>Check whether the character is part of MiscellaneousMathematicalSymbols-B UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMiscellaneousSymbols"></a>xmlUCSIsMiscellaneousSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsMiscellaneousSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of MiscellaneousSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMiscellaneousSymbolsandArrows"></a>xmlUCSIsMiscellaneousSymbolsandArrows ()</h3>
-<pre class="programlisting">int	xmlUCSIsMiscellaneousSymbolsandArrows	(int code)<br>
-</pre>
-<p>Check whether the character is part of MiscellaneousSymbolsandArrows UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMiscellaneousTechnical"></a>xmlUCSIsMiscellaneousTechnical ()</h3>
-<pre class="programlisting">int	xmlUCSIsMiscellaneousTechnical	(int code)<br>
-</pre>
-<p>Check whether the character is part of MiscellaneousTechnical UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMongolian"></a>xmlUCSIsMongolian ()</h3>
-<pre class="programlisting">int	xmlUCSIsMongolian		(int code)<br>
-</pre>
-<p>Check whether the character is part of Mongolian UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMusicalSymbols"></a>xmlUCSIsMusicalSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsMusicalSymbols		(int code)<br>
-</pre>
-<p>Check whether the character is part of MusicalSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsMyanmar"></a>xmlUCSIsMyanmar ()</h3>
-<pre class="programlisting">int	xmlUCSIsMyanmar			(int code)<br>
-</pre>
-<p>Check whether the character is part of Myanmar UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsNumberForms"></a>xmlUCSIsNumberForms ()</h3>
-<pre class="programlisting">int	xmlUCSIsNumberForms		(int code)<br>
-</pre>
-<p>Check whether the character is part of NumberForms UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsOgham"></a>xmlUCSIsOgham ()</h3>
-<pre class="programlisting">int	xmlUCSIsOgham			(int code)<br>
-</pre>
-<p>Check whether the character is part of Ogham UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsOldItalic"></a>xmlUCSIsOldItalic ()</h3>
-<pre class="programlisting">int	xmlUCSIsOldItalic		(int code)<br>
-</pre>
-<p>Check whether the character is part of OldItalic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsOpticalCharacterRecognition"></a>xmlUCSIsOpticalCharacterRecognition ()</h3>
-<pre class="programlisting">int	xmlUCSIsOpticalCharacterRecognition	(int code)<br>
-</pre>
-<p>Check whether the character is part of OpticalCharacterRecognition UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsOriya"></a>xmlUCSIsOriya ()</h3>
-<pre class="programlisting">int	xmlUCSIsOriya			(int code)<br>
-</pre>
-<p>Check whether the character is part of Oriya UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsOsmanya"></a>xmlUCSIsOsmanya ()</h3>
-<pre class="programlisting">int	xmlUCSIsOsmanya			(int code)<br>
-</pre>
-<p>Check whether the character is part of Osmanya UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsPhoneticExtensions"></a>xmlUCSIsPhoneticExtensions ()</h3>
-<pre class="programlisting">int	xmlUCSIsPhoneticExtensions	(int code)<br>
-</pre>
-<p>Check whether the character is part of PhoneticExtensions UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsPrivateUse"></a>xmlUCSIsPrivateUse ()</h3>
-<pre class="programlisting">int	xmlUCSIsPrivateUse		(int code)<br>
-</pre>
-<p>Check whether the character is part of PrivateUse UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsPrivateUseArea"></a>xmlUCSIsPrivateUseArea ()</h3>
-<pre class="programlisting">int	xmlUCSIsPrivateUseArea		(int code)<br>
-</pre>
-<p>Check whether the character is part of PrivateUseArea UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsRunic"></a>xmlUCSIsRunic ()</h3>
-<pre class="programlisting">int	xmlUCSIsRunic			(int code)<br>
-</pre>
-<p>Check whether the character is part of Runic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsShavian"></a>xmlUCSIsShavian ()</h3>
-<pre class="programlisting">int	xmlUCSIsShavian			(int code)<br>
-</pre>
-<p>Check whether the character is part of Shavian UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSinhala"></a>xmlUCSIsSinhala ()</h3>
-<pre class="programlisting">int	xmlUCSIsSinhala			(int code)<br>
-</pre>
-<p>Check whether the character is part of Sinhala UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSmallFormVariants"></a>xmlUCSIsSmallFormVariants ()</h3>
-<pre class="programlisting">int	xmlUCSIsSmallFormVariants	(int code)<br>
-</pre>
-<p>Check whether the character is part of SmallFormVariants UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSpacingModifierLetters"></a>xmlUCSIsSpacingModifierLetters ()</h3>
-<pre class="programlisting">int	xmlUCSIsSpacingModifierLetters	(int code)<br>
-</pre>
-<p>Check whether the character is part of SpacingModifierLetters UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSpecials"></a>xmlUCSIsSpecials ()</h3>
-<pre class="programlisting">int	xmlUCSIsSpecials		(int code)<br>
-</pre>
-<p>Check whether the character is part of Specials UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSuperscriptsandSubscripts"></a>xmlUCSIsSuperscriptsandSubscripts ()</h3>
-<pre class="programlisting">int	xmlUCSIsSuperscriptsandSubscripts	(int code)<br>
-</pre>
-<p>Check whether the character is part of SuperscriptsandSubscripts UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSupplementalArrowsA"></a>xmlUCSIsSupplementalArrowsA ()</h3>
-<pre class="programlisting">int	xmlUCSIsSupplementalArrowsA	(int code)<br>
-</pre>
-<p>Check whether the character is part of SupplementalArrows-A UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSupplementalArrowsB"></a>xmlUCSIsSupplementalArrowsB ()</h3>
-<pre class="programlisting">int	xmlUCSIsSupplementalArrowsB	(int code)<br>
-</pre>
-<p>Check whether the character is part of SupplementalArrows-B UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSupplementalMathematicalOperators"></a>xmlUCSIsSupplementalMathematicalOperators ()</h3>
-<pre class="programlisting">int	xmlUCSIsSupplementalMathematicalOperators	(int code)<br>
-</pre>
-<p>Check whether the character is part of SupplementalMathematicalOperators UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSupplementaryPrivateUseAreaA"></a>xmlUCSIsSupplementaryPrivateUseAreaA ()</h3>
-<pre class="programlisting">int	xmlUCSIsSupplementaryPrivateUseAreaA	(int code)<br>
-</pre>
-<p>Check whether the character is part of SupplementaryPrivateUseArea-A UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSupplementaryPrivateUseAreaB"></a>xmlUCSIsSupplementaryPrivateUseAreaB ()</h3>
-<pre class="programlisting">int	xmlUCSIsSupplementaryPrivateUseAreaB	(int code)<br>
-</pre>
-<p>Check whether the character is part of SupplementaryPrivateUseArea-B UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsSyriac"></a>xmlUCSIsSyriac ()</h3>
-<pre class="programlisting">int	xmlUCSIsSyriac			(int code)<br>
-</pre>
-<p>Check whether the character is part of Syriac UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTagalog"></a>xmlUCSIsTagalog ()</h3>
-<pre class="programlisting">int	xmlUCSIsTagalog			(int code)<br>
-</pre>
-<p>Check whether the character is part of Tagalog UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTagbanwa"></a>xmlUCSIsTagbanwa ()</h3>
-<pre class="programlisting">int	xmlUCSIsTagbanwa		(int code)<br>
-</pre>
-<p>Check whether the character is part of Tagbanwa UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTags"></a>xmlUCSIsTags ()</h3>
-<pre class="programlisting">int	xmlUCSIsTags			(int code)<br>
-</pre>
-<p>Check whether the character is part of Tags UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTaiLe"></a>xmlUCSIsTaiLe ()</h3>
-<pre class="programlisting">int	xmlUCSIsTaiLe			(int code)<br>
-</pre>
-<p>Check whether the character is part of TaiLe UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTaiXuanJingSymbols"></a>xmlUCSIsTaiXuanJingSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsTaiXuanJingSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of TaiXuanJingSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTamil"></a>xmlUCSIsTamil ()</h3>
-<pre class="programlisting">int	xmlUCSIsTamil			(int code)<br>
-</pre>
-<p>Check whether the character is part of Tamil UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTelugu"></a>xmlUCSIsTelugu ()</h3>
-<pre class="programlisting">int	xmlUCSIsTelugu			(int code)<br>
-</pre>
-<p>Check whether the character is part of Telugu UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsThaana"></a>xmlUCSIsThaana ()</h3>
-<pre class="programlisting">int	xmlUCSIsThaana			(int code)<br>
-</pre>
-<p>Check whether the character is part of Thaana UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsThai"></a>xmlUCSIsThai ()</h3>
-<pre class="programlisting">int	xmlUCSIsThai			(int code)<br>
-</pre>
-<p>Check whether the character is part of Thai UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsTibetan"></a>xmlUCSIsTibetan ()</h3>
-<pre class="programlisting">int	xmlUCSIsTibetan			(int code)<br>
-</pre>
-<p>Check whether the character is part of Tibetan UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsUgaritic"></a>xmlUCSIsUgaritic ()</h3>
-<pre class="programlisting">int	xmlUCSIsUgaritic		(int code)<br>
-</pre>
-<p>Check whether the character is part of Ugaritic UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsUnifiedCanadianAboriginalSyllabics"></a>xmlUCSIsUnifiedCanadianAboriginalSyllabics ()</h3>
-<pre class="programlisting">int	xmlUCSIsUnifiedCanadianAboriginalSyllabics	(int code)<br>
-</pre>
-<p>Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsVariationSelectors"></a>xmlUCSIsVariationSelectors ()</h3>
-<pre class="programlisting">int	xmlUCSIsVariationSelectors	(int code)<br>
-</pre>
-<p>Check whether the character is part of VariationSelectors UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsVariationSelectorsSupplement"></a>xmlUCSIsVariationSelectorsSupplement ()</h3>
-<pre class="programlisting">int	xmlUCSIsVariationSelectorsSupplement	(int code)<br>
-</pre>
-<p>Check whether the character is part of VariationSelectorsSupplement UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsYiRadicals"></a>xmlUCSIsYiRadicals ()</h3>
-<pre class="programlisting">int	xmlUCSIsYiRadicals		(int code)<br>
-</pre>
-<p>Check whether the character is part of YiRadicals UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsYiSyllables"></a>xmlUCSIsYiSyllables ()</h3>
-<pre class="programlisting">int	xmlUCSIsYiSyllables		(int code)<br>
-</pre>
-<p>Check whether the character is part of YiSyllables UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlUCSIsYijingHexagramSymbols"></a>xmlUCSIsYijingHexagramSymbols ()</h3>
-<pre class="programlisting">int	xmlUCSIsYijingHexagramSymbols	(int code)<br>
-</pre>
-<p>Check whether the character is part of YijingHexagramSymbols UCS Block</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>UCS code point</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlversion.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlversion.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlversion.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlversion.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,349 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlversion: compile-time version information</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlstring.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlversion</span></h2>
-<p>xmlversion - compile-time version information</p>
-<p>compile-time version information for the XML library </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a>;
-#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a>;
-#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a>;
-#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a>;
-#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a>;
-#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a>;
-#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a>;
-#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a>;
-#define <a href="#LIBXML_ICU_ENABLED">LIBXML_ICU_ENABLED</a>;
-#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a>;
-#define <a href="#LIBXML_LZMA_ENABLED">LIBXML_LZMA_ENABLED</a>;
-#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a>;
-#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a>;
-#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a>;
-#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a>;
-#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a>;
-#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a>;
-#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a>;
-#define <a href="#LIBXML_RELAXNG_ENABLED">LIBXML_RELAXNG_ENABLED</a>;
-#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a>;
-#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a>;
-#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a>;
-#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a>;
-#define <a href="#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a>;
-#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a>;
-#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a>;
-#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a>;
-#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a>;
-#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a>;
-#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a>;
-#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a>;
-#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a>;
-#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a>;
-#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a>;
-#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a>;
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_AUTOMATA_ENABLED">Macro </a>LIBXML_AUTOMATA_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a>;
-</pre>
-<p>Whether the automata interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_C14N_ENABLED">Macro </a>LIBXML_C14N_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a>;
-</pre>
-<p>Whether the Canonicalization support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_CATALOG_ENABLED">Macro </a>LIBXML_CATALOG_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a>;
-</pre>
-<p>Whether the Catalog support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_DEBUG_ENABLED">Macro </a>LIBXML_DEBUG_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a>;
-</pre>
-<p>Whether Debugging module is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_DOTTED_VERSION">Macro </a>LIBXML_DOTTED_VERSION</h3>
-<pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a>;
-</pre>
-<p>the version string like "1.2.3"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_HTML_ENABLED">Macro </a>LIBXML_HTML_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a>;
-</pre>
-<p>Whether the HTML support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_HTTP_ENABLED">Macro </a>LIBXML_HTTP_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a>;
-</pre>
-<p>Whether the HTTP support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_ICONV_ENABLED">Macro </a>LIBXML_ICONV_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a>;
-</pre>
-<p>Whether iconv support is available</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_ICU_ENABLED">Macro </a>LIBXML_ICU_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_ICU_ENABLED">LIBXML_ICU_ENABLED</a>;
-</pre>
-<p>Whether icu support is available</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_ISO8859X_ENABLED">Macro </a>LIBXML_ISO8859X_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a>;
-</pre>
-<p>Whether ISO-8859-* support is made available in case iconv is not</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_LZMA_ENABLED">Macro </a>LIBXML_LZMA_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_LZMA_ENABLED">LIBXML_LZMA_ENABLED</a>;
-</pre>
-<p>Whether the Lzma support is compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_MODULES_ENABLED">Macro </a>LIBXML_MODULES_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a>;
-</pre>
-<p>Whether the module interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_MODULE_EXTENSION">Macro </a>LIBXML_MODULE_EXTENSION</h3>
-<pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a>;
-</pre>
-<p>the string suffix used by dynamic modules (usually shared libraries)</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_OUTPUT_ENABLED">Macro </a>LIBXML_OUTPUT_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a>;
-</pre>
-<p>Whether the serialization/saving support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_PATTERN_ENABLED">Macro </a>LIBXML_PATTERN_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a>;
-</pre>
-<p>Whether the <a href="libxml2-pattern.html#xmlPattern">xmlPattern</a> node selection interface is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_PUSH_ENABLED">Macro </a>LIBXML_PUSH_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a>;
-</pre>
-<p>Whether the push parsing interfaces are configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_READER_ENABLED">Macro </a>LIBXML_READER_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a>;
-</pre>
-<p>Whether the xmlReader parsing interface is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_REGEXP_ENABLED">Macro </a>LIBXML_REGEXP_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a>;
-</pre>
-<p>Whether the regular expressions interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_RELAXNG_ENABLED">Macro </a>LIBXML_RELAXNG_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_RELAXNG_ENABLED">LIBXML_RELAXNG_ENABLED</a>;
-</pre>
-<p>Whether the RelaxNG validation interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_SAX1_ENABLED">Macro </a>LIBXML_SAX1_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a>;
-</pre>
-<p>Whether the older SAX1 interface is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_SCHEMAS_ENABLED">Macro </a>LIBXML_SCHEMAS_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a>;
-</pre>
-<p>Whether the Schemas validation interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_SCHEMATRON_ENABLED">Macro </a>LIBXML_SCHEMATRON_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a>;
-</pre>
-<p>Whether the Schematron validation interfaces are compiled in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_TEST_VERSION">Macro </a>LIBXML_TEST_VERSION</h3>
-<pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a>;
-</pre>
-<p>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_THREAD_ALLOC_ENABLED">Macro </a>LIBXML_THREAD_ALLOC_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_THREAD_ALLOC_ENABLED">LIBXML_THREAD_ALLOC_ENABLED</a>;
-</pre>
-<p>Whether the allocation hooks are per-thread</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_THREAD_ENABLED">Macro </a>LIBXML_THREAD_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a>;
-</pre>
-<p>Whether the thread support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_TREE_ENABLED">Macro </a>LIBXML_TREE_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a>;
-</pre>
-<p>Always enabled since 2.14.0</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_VALID_ENABLED">Macro </a>LIBXML_VALID_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a>;
-</pre>
-<p>Whether the DTD validation support is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_VERSION">Macro </a>LIBXML_VERSION</h3>
-<pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a>;
-</pre>
-<p>the version number: 1.2.3 value is 10203</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_VERSION_EXTRA">Macro </a>LIBXML_VERSION_EXTRA</h3>
-<pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a>;
-</pre>
-<p>extra version information, used to show a git commit description</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_VERSION_STRING">Macro </a>LIBXML_VERSION_STRING</h3>
-<pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a>;
-</pre>
-<p>the version number string, 1.2.3 value is "10203"</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_WRITER_ENABLED">Macro </a>LIBXML_WRITER_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a>;
-</pre>
-<p>Whether the xmlWriter saving interface is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_XINCLUDE_ENABLED">Macro </a>LIBXML_XINCLUDE_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a>;
-</pre>
-<p>Whether XInclude is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_XPATH_ENABLED">Macro </a>LIBXML_XPATH_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a>;
-</pre>
-<p>Whether XPath is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_XPTR_ENABLED">Macro </a>LIBXML_XPTR_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a>;
-</pre>
-<p>Whether XPointer is configured in</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="LIBXML_ZLIB_ENABLED">Macro </a>LIBXML_ZLIB_ENABLED</h3>
-<pre class="programlisting">#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a>;
-</pre>
-<p>Whether the Zlib support is compiled in</p>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlwriter.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlwriter.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xmlwriter.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xmlwriter.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,2590 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xmlwriter: text writing API for XML</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlversion.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xpath.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xmlwriter</span></h2>
-<p>xmlwriter - text writing API for XML</p>
-<p>text writing API for XML </p>
-<p>Author(s): Alfred Mickautsch &lt;alfred@mickautsch.de&gt; </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#xmlTextWriterWriteDocType">xmlTextWriterWriteDocType</a>;
-#define <a href="#xmlTextWriterWriteProcessingInstruction">xmlTextWriterWriteProcessingInstruction</a>;
-typedef struct _xmlTextWriter <a href="#xmlTextWriter">xmlTextWriter</a>;
-typedef <a href="libxml2-xmlwriter.html#xmlTextWriter">xmlTextWriter</a> * <a href="#xmlTextWriterPtr">xmlTextWriterPtr</a>;
-void	<a href="#xmlFreeTextWriter">xmlFreeTextWriter</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriter">xmlNewTextWriter</a>	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> * doc, <br>						 int compression);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriterFilename">xmlNewTextWriterFilename</a>	(const char * uri, <br>							 int compression);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a>	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>						 int compression);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a>	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int compression);
-<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	<a href="#xmlNewTextWriterTree">xmlNewTextWriterTree</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 int compression);
-int	<a href="#xmlTextWriterClose">xmlTextWriterClose</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndAttribute">xmlTextWriterEndAttribute</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndCDATA">xmlTextWriterEndCDATA</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndComment">xmlTextWriterEndComment</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndDTD">xmlTextWriterEndDTD</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndDTDAttlist">xmlTextWriterEndDTDAttlist</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndDTDElement">xmlTextWriterEndDTDElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndDTDEntity">xmlTextWriterEndDTDEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndElement">xmlTextWriterEndElement</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterEndPI">xmlTextWriterEndPI</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterFlush">xmlTextWriterFlush</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int indent);
-int	<a href="#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-int	<a href="#xmlTextWriterSetQuoteChar">xmlTextWriterSetQuoteChar</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> quotechar);
-int	<a href="#xmlTextWriterStartAttribute">xmlTextWriterStartAttribute</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextWriterStartAttributeNS">xmlTextWriterStartAttributeNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI);
-int	<a href="#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterStartComment">xmlTextWriterStartComment</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer);
-int	<a href="#xmlTextWriterStartDTD">xmlTextWriterStartDTD</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid);
-int	<a href="#xmlTextWriterStartDTDAttlist">xmlTextWriterStartDTDAttlist</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextWriterStartDTDElement">xmlTextWriterStartDTDElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextWriterStartDTDEntity">xmlTextWriterStartDTDEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int pe, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextWriterStartDocument">xmlTextWriterStartDocument</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * version, <br>					 const char * encoding, <br>					 const char * standalone);
-int	<a href="#xmlTextWriterStartElement">xmlTextWriterStartElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-int	<a href="#xmlTextWriterStartElementNS">xmlTextWriterStartElementNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI);
-int	<a href="#xmlTextWriterStartPI">xmlTextWriterStartPI</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target);
-int	<a href="#xmlTextWriterWriteAttribute">xmlTextWriterWriteAttribute</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteAttributeNS">xmlTextWriterWriteAttributeNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * data, <br>					 int start, <br>					 int len);
-int	<a href="#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * data, <br>					 int start, <br>					 int len);
-int	<a href="#xmlTextWriterWriteCDATA">xmlTextWriterWriteCDATA</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteComment">xmlTextWriterWriteComment</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteDTD">xmlTextWriterWriteDTD</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * subset);
-int	<a href="#xmlTextWriterWriteDTDAttlist">xmlTextWriterWriteDTDAttlist</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteDTDElement">xmlTextWriterWriteDTDElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteDTDEntity">xmlTextWriterWriteDTDEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int pe, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteDTDExternalEntity">xmlTextWriterWriteDTDExternalEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 int pe, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid);
-int	<a href="#xmlTextWriterWriteDTDExternalEntityContents">xmlTextWriterWriteDTDExternalEntityContents</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid);
-int	<a href="#xmlTextWriterWriteDTDInternalEntity">xmlTextWriterWriteDTDInternalEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 int pe, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteDTDNotation">xmlTextWriterWriteDTDNotation</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid);
-int	<a href="#xmlTextWriterWriteElement">xmlTextWriterWriteElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteElementNS">xmlTextWriterWriteElementNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteFormatAttribute">xmlTextWriterWriteFormatAttribute</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...);
-int	<a href="#xmlTextWriterWriteFormatAttributeNS">xmlTextWriterWriteFormatAttributeNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 ... ...);
-int	<a href="#xmlTextWriterWriteFormatCDATA">xmlTextWriterWriteFormatCDATA</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatComment">xmlTextWriterWriteFormatComment</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatDTD">xmlTextWriterWriteFormatDTD</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatDTDAttlist">xmlTextWriterWriteFormatDTDAttlist</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...);
-int	<a href="#xmlTextWriterWriteFormatDTDElement">xmlTextWriterWriteFormatDTDElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...);
-int	<a href="#xmlTextWriterWriteFormatDTDInternalEntity">xmlTextWriterWriteFormatDTDInternalEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 int pe, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const char * format, <br>							 ... ...);
-int	<a href="#xmlTextWriterWriteFormatElement">xmlTextWriterWriteFormatElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatElementNS">xmlTextWriterWriteFormatElementNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 ... ...);
-int	<a href="#xmlTextWriterWriteFormatPI">xmlTextWriterWriteFormatPI</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatRaw">xmlTextWriterWriteFormatRaw</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWriteFormatString">xmlTextWriterWriteFormatString</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...);
-int	<a href="#xmlTextWriterWritePI">xmlTextWriterWritePI</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteRaw">xmlTextWriterWriteRaw</a>		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteRawLen">xmlTextWriterWriteRawLen</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len);
-int	<a href="#xmlTextWriterWriteString">xmlTextWriterWriteString</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
-int	<a href="#xmlTextWriterWriteVFormatAttribute">xmlTextWriterWriteVFormatAttribute</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatAttributeNS">xmlTextWriterWriteVFormatAttributeNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatCDATA">xmlTextWriterWriteVFormatCDATA</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatComment">xmlTextWriterWriteVFormatComment</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const char * format, <br>					 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatDTDAttlist">xmlTextWriterWriteVFormatDTDAttlist</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatDTDElement">xmlTextWriterWriteVFormatDTDElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatDTDInternalEntity">xmlTextWriterWriteVFormatDTDInternalEntity</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 int pe, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const char * format, <br>							 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatElement">xmlTextWriterWriteVFormatElement</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatElementNS">xmlTextWriterWriteVFormatElementNS</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatPI">xmlTextWriterWriteVFormatPI</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const char * format, <br>					 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatRaw">xmlTextWriterWriteVFormatRaw</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr);
-int	<a href="#xmlTextWriterWriteVFormatString">xmlTextWriterWriteVFormatString</a>	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDocType">Macro </a>xmlTextWriterWriteDocType</h3>
-<pre class="programlisting">#define <a href="#xmlTextWriterWriteDocType">xmlTextWriterWriteDocType</a>;
-</pre>
-<p>this macro maps to <a href="libxml2-xmlwriter.html#xmlTextWriterWriteDTD">xmlTextWriterWriteDTD</a></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteProcessingInstruction">Macro </a>xmlTextWriterWriteProcessingInstruction</h3>
-<pre class="programlisting">#define <a href="#xmlTextWriterWriteProcessingInstruction">xmlTextWriterWriteProcessingInstruction</a>;
-</pre>
-<p>This macro maps to <a href="libxml2-xmlwriter.html#xmlTextWriterWritePI">xmlTextWriterWritePI</a></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriter">Structure </a>xmlTextWriter</h3>
-<pre class="programlisting">struct _xmlTextWriter {
-The content of this structure is not made public by the API.
-} xmlTextWriter;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterPtr">Typedef </a>xmlTextWriterPtr</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriter">xmlTextWriter</a> * xmlTextWriterPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlFreeTextWriter"></a>xmlFreeTextWriter ()</h3>
-<pre class="programlisting">void	xmlFreeTextWriter		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>Deallocate all the resources associated to the writer</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriter"></a>xmlNewTextWriter ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriter	(<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> out)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure using an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> NOTE: the @out parameter will be deallocated when the writer is closed (if the call succeed.)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>out</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriterDoc"></a>xmlNewTextWriterDoc ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriterDoc	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> * doc, <br>						 int compression)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure with @*doc as output</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>address of a <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> to hold the new XML document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>compress the output?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriterFilename"></a>xmlNewTextWriterFilename ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriterFilename	(const char * uri, <br>							 int compression)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure with @uri as output</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>uri</tt></i>:</span></td>
-<td>the URI of the resource for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>compress the output?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriterMemory"></a>xmlNewTextWriterMemory ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriterMemory	(<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br>						 int compression)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure with @buf as output TODO: handle compression</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>buf</tt></i>:</span></td>
-<td><a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>compress the output?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriterPushParser"></a>xmlNewTextWriterPushParser ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriterPushParser	(<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br>							 int compression)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure with @ctxt as output NOTE: the @ctxt context will be freed with the resulting writer (if the call succeeds). TODO: handle compression</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>
-<a href="libxml2-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> to hold the new XML document tree</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>compress the output?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNewTextWriterTree"></a>xmlNewTextWriterTree ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>	xmlNewTextWriterTree	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 int compression)<br>
-</pre>
-<p>Create a new <a href="libxml2-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a> structure with @doc as output starting at @node</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a></td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> or NULL for doc-&gt;children</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>compression</tt></i>:</span></td>
-<td>compress the output?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> or NULL in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterClose"></a>xmlTextWriterClose ()</h3>
-<pre class="programlisting">int	xmlTextWriterClose		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>Flushes and closes the output buffer. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>an <a href="libxml2-xmlerror.html#xmlParserErrors">xmlParserErrors</a> code.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndAttribute"></a>xmlTextWriterEndAttribute ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndAttribute	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End the current xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndCDATA"></a>xmlTextWriterEndCDATA ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndCDATA		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml CDATA section.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndComment"></a>xmlTextWriterEndComment ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndComment		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End the current xml comment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndDTD"></a>xmlTextWriterEndDTD ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndDTD		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml DTD.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndDTDAttlist"></a>xmlTextWriterEndDTDAttlist ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndDTDAttlist	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml DTD attribute list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndDTDElement"></a>xmlTextWriterEndDTDElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndDTDElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml DTD element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndDTDEntity"></a>xmlTextWriterEndDTDEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndDTDEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml DTD entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndDocument"></a>xmlTextWriterEndDocument ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndDocument	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End an xml document. All open elements are closed, and the content is flushed to the output.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndElement"></a>xmlTextWriterEndElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndElement		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End the current xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterEndPI"></a>xmlTextWriterEndPI ()</h3>
-<pre class="programlisting">int	xmlTextWriterEndPI		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End the current xml PI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterFlush"></a>xmlTextWriterFlush ()</h3>
-<pre class="programlisting">int	xmlTextWriterFlush		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>Flush the output buffer.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterFullEndElement"></a>xmlTextWriterFullEndElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterFullEndElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>End the current xml element. Writes an end tag even if the element is empty</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterSetIndent"></a>xmlTextWriterSetIndent ()</h3>
-<pre class="programlisting">int	xmlTextWriterSetIndent		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int indent)<br>
-</pre>
-<p>Set indentation output. indent = 0 do not indentation. indent &gt; 0 do indentation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>indent</tt></i>:</span></td>
-<td>do indentation?</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 on error or 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterSetIndentString"></a>xmlTextWriterSetIndentString ()</h3>
-<pre class="programlisting">int	xmlTextWriterSetIndentString	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Set string indentation.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 on error or 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterSetQuoteChar"></a>xmlTextWriterSetQuoteChar ()</h3>
-<pre class="programlisting">int	xmlTextWriterSetQuoteChar	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> quotechar)<br>
-</pre>
-<p>Set the character used for quoting attributes.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>quotechar</tt></i>:</span></td>
-<td>the quote character</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 on error or 0 otherwise.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartAttribute"></a>xmlTextWriterStartAttribute ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartAttribute	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Start an xml attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartAttributeNS"></a>xmlTextWriterStartAttributeNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartAttributeNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)<br>
-</pre>
-<p>Start an xml attribute with namespace support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartCDATA"></a>xmlTextWriterStartCDATA ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartCDATA		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>Start an xml CDATA section.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartComment"></a>xmlTextWriterStartComment ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartComment	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer)<br>
-</pre>
-<p>Start an xml comment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartDTD"></a>xmlTextWriterStartDTD ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartDTD		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid)<br>
-</pre>
-<p>Start an xml DTD.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartDTDAttlist"></a>xmlTextWriterStartDTDAttlist ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartDTDAttlist	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Start an xml DTD ATTLIST.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartDTDElement"></a>xmlTextWriterStartDTDElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartDTDElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Start an xml DTD element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartDTDEntity"></a>xmlTextWriterStartDTDEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartDTDEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int pe, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Start an xml DTD ATTLIST.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartDocument"></a>xmlTextWriterStartDocument ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartDocument	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * version, <br>					 const char * encoding, <br>					 const char * standalone)<br>
-</pre>
-<p>Start a new xml document</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>version</tt></i>:</span></td>
-<td>the xml version ("1.0") or NULL for default ("1.0")</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>encoding</tt></i>:</span></td>
-<td>the encoding or NULL for default</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>standalone</tt></i>:</span></td>
-<td>"yes" or "no" or NULL for default</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartElement"></a>xmlTextWriterStartElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Start an xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartElementNS"></a>xmlTextWriterStartElementNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartElementNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI)<br>
-</pre>
-<p>Start an xml element with namespace support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterStartPI"></a>xmlTextWriterStartPI ()</h3>
-<pre class="programlisting">int	xmlTextWriterStartPI		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target)<br>
-</pre>
-<p>Start an xml PI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>PI target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteAttribute"></a>xmlTextWriterWriteAttribute ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteAttribute	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>attribute content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteAttributeNS"></a>xmlTextWriterWriteAttributeNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteAttributeNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>attribute content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteBase64"></a>xmlTextWriterWriteBase64 ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteBase64	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * data, <br>					 int start, <br>					 int len)<br>
-</pre>
-<p>Write an base64 encoded xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>binary data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>start</tt></i>:</span></td>
-<td>the position within the data of the first byte to encode</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of bytes to encode</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteBinHex"></a>xmlTextWriterWriteBinHex ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteBinHex	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * data, <br>					 int start, <br>					 int len)<br>
-</pre>
-<p>Write a BinHex encoded xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>binary data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>start</tt></i>:</span></td>
-<td>the position within the data of the first byte to encode</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>the number of bytes to encode</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteCDATA"></a>xmlTextWriterWriteCDATA ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteCDATA		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml CDATA.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>CDATA content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteComment"></a>xmlTextWriterWriteComment ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteComment	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml comment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>comment string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTD"></a>xmlTextWriterWriteDTD ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTD		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * subset)<br>
-</pre>
-<p>Write a DTD.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>subset</tt></i>:</span></td>
-<td>string content of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDAttlist"></a>xmlTextWriterWriteDTDAttlist ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDAttlist	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write a DTD ATTLIST.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>content of the ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDElement"></a>xmlTextWriterWriteDTDElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write a DTD element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>content of the element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDEntity"></a>xmlTextWriterWriteDTDEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 int pe, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write a DTD entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ndataid</tt></i>:</span></td>
-<td>the xml notation name.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>content of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDExternalEntity"></a>xmlTextWriterWriteDTDExternalEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDExternalEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 int pe, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid)<br>
-</pre>
-<p>Write a DTD external entity. The entity must have been started with <a href="libxml2-xmlwriter.html#xmlTextWriterStartDTDEntity">xmlTextWriterStartDTDEntity</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ndataid</tt></i>:</span></td>
-<td>the xml notation name.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDExternalEntityContents"></a>xmlTextWriterWriteDTDExternalEntityContents ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDExternalEntityContents	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ndataid)<br>
-</pre>
-<p>Write the contents of a DTD external entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ndataid</tt></i>:</span></td>
-<td>the xml notation name.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDInternalEntity"></a>xmlTextWriterWriteDTDInternalEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDInternalEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 int pe, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write a DTD internal entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>content of the entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteDTDNotation"></a>xmlTextWriterWriteDTDNotation ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteDTDNotation	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid)<br>
-</pre>
-<p>Write a DTD entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the xml notation</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteElement"></a>xmlTextWriterWriteElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>element content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteElementNS"></a>xmlTextWriterWriteElementNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteElementNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml element with namespace support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>element content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatAttribute"></a>xmlTextWriterWriteFormatAttribute ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatAttribute	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...)<br>
-</pre>
-<p>Write a formatted xml attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatAttributeNS"></a>xmlTextWriterWriteFormatAttributeNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatAttributeNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 ... ...)<br>
-</pre>
-<p>Write a formatted xml attribute.with namespace support</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatCDATA"></a>xmlTextWriterWriteFormatCDATA ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatCDATA	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a formatted xml CDATA.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatComment"></a>xmlTextWriterWriteFormatComment ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatComment	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write an xml comment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatDTD"></a>xmlTextWriterWriteFormatDTD ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatDTD	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a DTD with a formatted markup declarations part.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatDTDAttlist"></a>xmlTextWriterWriteFormatDTDAttlist ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatDTDAttlist	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...)<br>
-</pre>
-<p>Write a formatted DTD ATTLIST.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatDTDElement"></a>xmlTextWriterWriteFormatDTDElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatDTDElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 ... ...)<br>
-</pre>
-<p>Write a formatted DTD element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatDTDInternalEntity"></a>xmlTextWriterWriteFormatDTDInternalEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatDTDInternalEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 int pe, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const char * format, <br>							 ... ...)<br>
-</pre>
-<p>Write a formatted DTD internal entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatElement"></a>xmlTextWriterWriteFormatElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a formatted xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatElementNS"></a>xmlTextWriterWriteFormatElementNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatElementNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 ... ...)<br>
-</pre>
-<p>Write a formatted xml element with namespace support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatPI"></a>xmlTextWriterWriteFormatPI ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatPI	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a formatted PI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>PI target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatRaw"></a>xmlTextWriterWriteFormatRaw ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatRaw	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a formatted raw xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteFormatString"></a>xmlTextWriterWriteFormatString ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteFormatString	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 ... ...)<br>
-</pre>
-<p>Write a formatted xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>...</tt></i>:</span></td>
-<td>extra parameters for the format</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWritePI"></a>xmlTextWriterWritePI ()</h3>
-<pre class="programlisting">int	xmlTextWriterWritePI		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml PI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>PI target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>PI content</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteRaw"></a>xmlTextWriterWriteRaw ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteRaw		(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write a raw xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteRawLen"></a>xmlTextWriterWriteRawLen ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteRawLen	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br>					 int len)<br>
-</pre>
-<p>Write an xml text. TODO: what about entities and special chars??</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>len</tt></i>:</span></td>
-<td>length of the text string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteString"></a>xmlTextWriterWriteString ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteString	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br>
-</pre>
-<p>Write an xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>content</tt></i>:</span></td>
-<td>text string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatAttribute"></a>xmlTextWriterWriteVFormatAttribute ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatAttribute	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml attribute.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatAttributeNS"></a>xmlTextWriterWriteVFormatAttributeNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatAttributeNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml attribute.with namespace support</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>attribute local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatCDATA"></a>xmlTextWriterWriteVFormatCDATA ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatCDATA	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml CDATA.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatComment"></a>xmlTextWriterWriteVFormatComment ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatComment	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write an xml comment.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatDTD"></a>xmlTextWriterWriteVFormatDTD ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatDTD	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * pubid, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * sysid, <br>					 const char * format, <br>					 va_list argptr)<br>
-</pre>
-<p>Write a DTD with a formatted markup declarations part.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pubid</tt></i>:</span></td>
-<td>the public identifier, which is an alternative to the system identifier</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>sysid</tt></i>:</span></td>
-<td>the system identifier, which is the URI of the DTD</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatDTDAttlist"></a>xmlTextWriterWriteVFormatDTDAttlist ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatDTDAttlist	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted DTD ATTLIST.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD ATTLIST</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatDTDElement"></a>xmlTextWriterWriteVFormatDTDElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatDTDElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted DTD element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD element</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatDTDInternalEntity"></a>xmlTextWriterWriteVFormatDTDInternalEntity ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatDTDInternalEntity	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>							 int pe, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const char * format, <br>							 va_list argptr)<br>
-</pre>
-<p>Write a formatted DTD internal entity.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>pe</tt></i>:</span></td>
-<td>TRUE if this is a parameter entity, FALSE if not</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the name of the DTD entity</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatElement"></a>xmlTextWriterWriteVFormatElement ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatElement	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml element.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatElementNS"></a>xmlTextWriterWriteVFormatElementNS ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatElementNS	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * namespaceURI, <br>						 const char * format, <br>						 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml element with namespace support.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>namespace prefix</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>element local name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>namespaceURI</tt></i>:</span></td>
-<td>namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatPI"></a>xmlTextWriterWriteVFormatPI ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatPI	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * target, <br>					 const char * format, <br>					 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml PI.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>target</tt></i>:</span></td>
-<td>PI target</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatRaw"></a>xmlTextWriterWriteVFormatRaw ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatRaw	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr)<br>
-</pre>
-<p>Write a formatted raw xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlTextWriterWriteVFormatString"></a>xmlTextWriterWriteVFormatString ()</h3>
-<pre class="programlisting">int	xmlTextWriterWriteVFormatString	(<a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a> writer, <br>					 const char * format, <br>					 va_list argptr)<br>
-</pre>
-<p>Write a formatted xml text.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>writer</tt></i>:</span></td>
-<td>the <a href="libxml2-xmlwriter.html#xmlTextWriterPtr">xmlTextWriterPtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>format</tt></i>:</span></td>
-<td>format string (see printf)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>argptr</tt></i>:</span></td>
-<td>pointer to the first member of the variable argument list.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the bytes written (may be 0 because of buffering) or -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpath.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpath.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpath.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpath.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,1501 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xpath: XML Path Language implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xmlwriter.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xpathInternals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xpath</span></h2>
-<p>xpath - XML Path Language implementation</p>
-<p>API for the XML Path Language implementation  XML Path Language implementation XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a>;
-#define <a href="#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a>;
-#define <a href="#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a>(ns);
-#define <a href="#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a>(ns);
-#define <a href="#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a>(ns, index);
-typedef struct _xmlNodeSet <a href="#xmlNodeSet">xmlNodeSet</a>;
-typedef <a href="libxml2-xpath.html#xmlNodeSet">xmlNodeSet</a> * <a href="#xmlNodeSetPtr">xmlNodeSetPtr</a>;
-typedef struct _xmlXPathAxis <a href="#xmlXPathAxis">xmlXPathAxis</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathAxis">xmlXPathAxis</a> * <a href="#xmlXPathAxisPtr">xmlXPathAxisPtr</a>;
-typedef struct _xmlXPathCompExpr <a href="#xmlXPathCompExpr">xmlXPathCompExpr</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathCompExpr">xmlXPathCompExpr</a> * <a href="#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>;
-typedef struct _xmlXPathContext <a href="#xmlXPathContext">xmlXPathContext</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a> * <a href="#xmlXPathContextPtr">xmlXPathContextPtr</a>;
-typedef enum <a href="#xmlXPathError">xmlXPathError</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathFunct">xmlXPathFunct</a> * <a href="#xmlXPathFuncPtr">xmlXPathFuncPtr</a>;
-typedef struct _xmlXPathFunct <a href="#xmlXPathFunct">xmlXPathFunct</a>;
-typedef struct _xmlXPathObject <a href="#xmlXPathObject">xmlXPathObject</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathObject">xmlXPathObject</a> * <a href="#xmlXPathObjectPtr">xmlXPathObjectPtr</a>;
-typedef enum <a href="#xmlXPathObjectType">xmlXPathObjectType</a>;
-typedef struct _xmlXPathParserContext <a href="#xmlXPathParserContext">xmlXPathParserContext</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a> * <a href="#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a>;
-typedef struct _xmlXPathType <a href="#xmlXPathType">xmlXPathType</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathType">xmlXPathType</a> * <a href="#xmlXPathTypePtr">xmlXPathTypePtr</a>;
-typedef struct _xmlXPathVariable <a href="#xmlXPathVariable">xmlXPathVariable</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathVariable">xmlXPathVariable</a> * <a href="#xmlXPathVariablePtr">xmlXPathVariablePtr</a>;
-typedef <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathAxisFunc">xmlXPathAxisFunc</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur);
-double	<a href="#xmlXPathCastBooleanToNumber">xmlXPathCastBooleanToNumber</a>	(int val);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathCastBooleanToString">xmlXPathCastBooleanToString</a>	(int val);
-int	<a href="#xmlXPathCastNodeSetToBoolean">xmlXPathCastNodeSetToBoolean</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
-double	<a href="#xmlXPathCastNodeSetToNumber">xmlXPathCastNodeSetToNumber</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathCastNodeSetToString">xmlXPathCastNodeSetToString</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns);
-double	<a href="#xmlXPathCastNodeToNumber">xmlXPathCastNodeToNumber</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathCastNodeToString">xmlXPathCastNodeToString</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlXPathCastNumberToBoolean">xmlXPathCastNumberToBoolean</a>	(double val);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathCastNumberToString">xmlXPathCastNumberToString</a>	(double val);
-int	<a href="#xmlXPathCastStringToBoolean">xmlXPathCastStringToBoolean</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-double	<a href="#xmlXPathCastStringToNumber">xmlXPathCastStringToNumber</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-int	<a href="#xmlXPathCastToBoolean">xmlXPathCastToBoolean</a>		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-double	<a href="#xmlXPathCastToNumber">xmlXPathCastToNumber</a>		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathCastToString">xmlXPathCastToString</a>	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-int	<a href="#xmlXPathCmpNodes">xmlXPathCmpNodes</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node1, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node2);
-<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>	<a href="#xmlXPathCompile">xmlXPathCompile</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathCompiledEval">xmlXPathCompiledEval</a>	(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
-int	<a href="#xmlXPathCompiledEvalToBoolean">xmlXPathCompiledEvalToBoolean</a>	(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-int	<a href="#xmlXPathContextSetCache">xmlXPathContextSetCache</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 int active, <br>					 int value, <br>					 int options);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a>	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-typedef int <a href="#xmlXPathConvertFunc">xmlXPathConvertFunc</a>		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj, <br>					 int type);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathConvertNumber">xmlXPathConvertNumber</a>	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathConvertString">xmlXPathConvertString</a>	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>	<a href="#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathEval">xmlXPathEval</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathEvalExpression">xmlXPathEvalExpression</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-typedef void <a href="#xmlXPathEvalFunc">xmlXPathEvalFunc</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-int	<a href="#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res);
-void	<a href="#xmlXPathFreeCompExpr">xmlXPathFreeCompExpr</a>		(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp);
-void	<a href="#xmlXPathFreeContext">xmlXPathFreeContext</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-void	<a href="#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> obj);
-void	<a href="#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a>		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);
-void	<a href="#xmlXPathFreeObject">xmlXPathFreeObject</a>		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj);
-typedef <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> <a href="#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a>	(void * ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
-typedef void <a href="#xmlXPathFunction">xmlXPathFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathInit">xmlXPathInit</a>			(void);
-int	<a href="#xmlXPathIsInf">xmlXPathIsInf</a>			(double val);
-int	<a href="#xmlXPathIsNaN">xmlXPathIsNaN</a>			(double val);
-<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>	<a href="#xmlXPathNewContext">xmlXPathNewContext</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNodeEval">xmlXPathNodeEval</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathObjectCopy">xmlXPathObjectCopy</a>	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val);
-long	<a href="#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a>		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
-int	<a href="#xmlXPathSetContextNode">xmlXPathSetContextNode</a>		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
-void	<a href="#xmlXPathSetErrorHandler">xmlXPathSetErrorHandler</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data);
-typedef <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> <a href="#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a>	(void * ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_XPATH_CHECKNS">Macro </a>XML_XPATH_CHECKNS</h3>
-<pre class="programlisting">#define <a href="#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a>;
-</pre>
-<p>check namespaces at compilation</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XML_XPATH_NOVAR">Macro </a>XML_XPATH_NOVAR</h3>
-<pre class="programlisting">#define <a href="#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a>;
-</pre>
-<p>forbid variables in expression</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetGetLength">Macro </a>xmlXPathNodeSetGetLength</h3>
-<pre class="programlisting">#define <a href="#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a>(ns);
-</pre>
-<p>Implement a functionality similar to the DOM NodeList.length. Returns the number of nodes in the node-set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetIsEmpty">Macro </a>xmlXPathNodeSetIsEmpty</h3>
-<pre class="programlisting">#define <a href="#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a>(ns);
-</pre>
-<p>Checks whether @ns is empty or not. Returns %TRUE if @ns is an empty node-set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetItem">Macro </a>xmlXPathNodeSetItem</h3>
-<pre class="programlisting">#define <a href="#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a>(ns, index);
-</pre>
-<p>Implements a functionality similar to the DOM NodeList.item(). Returns the <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> at the given @index in @ns or NULL if @index is out of range (0 to length-1)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>index</tt></i>:</span></td>
-<td>index of a node in the set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSet">Structure </a>xmlNodeSet</h3>
-<pre class="programlisting">struct _xmlNodeSet {
-    int	nodeNr
-    int	nodeMax
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> *	nodeTab
-} xmlNodeSet;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlNodeSetPtr">Typedef </a>xmlNodeSetPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSet">xmlNodeSet</a> * xmlNodeSetPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathAxis">Structure </a>xmlXPathAxis</h3>
-<pre class="programlisting">struct _xmlXPathAxis {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    <a href="libxml2-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a>	func
-} xmlXPathAxis;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathAxisPtr">Typedef </a>xmlXPathAxisPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathAxis">xmlXPathAxis</a> * xmlXPathAxisPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompExpr">Structure </a>xmlXPathCompExpr</h3>
-<pre class="programlisting">struct _xmlXPathCompExpr {
-The content of this structure is not made public by the API.
-} xmlXPathCompExpr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompExprPtr">Typedef </a>xmlXPathCompExprPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathCompExpr">xmlXPathCompExpr</a> * xmlXPathCompExprPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathContext">Structure </a>xmlXPathContext</h3>
-<pre class="programlisting">struct _xmlXPathContext {
-    <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a>	doc
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	node
-    int	nb_variables_unused
-    int	max_variables_unused
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	varHash
-    int	nb_types
-    int	max_types
-    <a href="libxml2-xpath.html#xmlXPathTypePtr">xmlXPathTypePtr</a>	types
-    int	nb_funcs_unused
-    int	max_funcs_unused
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	funcHash
-    int	nb_axis
-    int	max_axis
-    <a href="libxml2-xpath.html#xmlXPathAxisPtr">xmlXPathAxisPtr</a>	axis
-    <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> *	namespaces
-    int	nsNr
-    void *	user
-    int	contextSize
-    int	proximityPosition
-    int	xptr
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	here
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	origin
-    <a href="libxml2-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	nsHash
-    <a href="libxml2-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a>	varLookupFunc
-    void *	varLookupData
-    void *	extra
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	function
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	functionURI
-    <a href="libxml2-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a>	funcLookupFunc
-    void *	funcLookupData
-    <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> *	tmpNsList
-    int	tmpNsNr
-    void *	userData
-    <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a>	error
-    <a href="libxml2-xmlerror.html#xmlError">xmlError</a>	lastError
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	debugNode
-    <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	dict
-    int	flags
-    void *	cache
-    unsigned long	opLimit
-    unsigned long	opCount
-    int	depth
-} xmlXPathContext;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathContextPtr">Typedef </a>xmlXPathContextPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a> * xmlXPathContextPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathError">Enum </a>xmlXPathError</h3>
-<pre class="programlisting">enum <a href="#xmlXPathError">xmlXPathError</a> {
-    <a name="XPATH_EXPRESSION_OK">XPATH_EXPRESSION_OK</a> = 0
-    <a name="XPATH_NUMBER_ERROR">XPATH_NUMBER_ERROR</a> = 1
-    <a name="XPATH_UNFINISHED_LITERAL_ERROR">XPATH_UNFINISHED_LITERAL_ERROR</a> = 2
-    <a name="XPATH_START_LITERAL_ERROR">XPATH_START_LITERAL_ERROR</a> = 3
-    <a name="XPATH_VARIABLE_REF_ERROR">XPATH_VARIABLE_REF_ERROR</a> = 4
-    <a name="XPATH_UNDEF_VARIABLE_ERROR">XPATH_UNDEF_VARIABLE_ERROR</a> = 5
-    <a name="XPATH_INVALID_PREDICATE_ERROR">XPATH_INVALID_PREDICATE_ERROR</a> = 6
-    <a name="XPATH_EXPR_ERROR">XPATH_EXPR_ERROR</a> = 7
-    <a name="XPATH_UNCLOSED_ERROR">XPATH_UNCLOSED_ERROR</a> = 8
-    <a name="XPATH_UNKNOWN_FUNC_ERROR">XPATH_UNKNOWN_FUNC_ERROR</a> = 9
-    <a name="XPATH_INVALID_OPERAND">XPATH_INVALID_OPERAND</a> = 10
-    <a name="XPATH_INVALID_TYPE">XPATH_INVALID_TYPE</a> = 11
-    <a name="XPATH_INVALID_ARITY">XPATH_INVALID_ARITY</a> = 12
-    <a name="XPATH_INVALID_CTXT_SIZE">XPATH_INVALID_CTXT_SIZE</a> = 13
-    <a name="XPATH_INVALID_CTXT_POSITION">XPATH_INVALID_CTXT_POSITION</a> = 14
-    <a name="XPATH_MEMORY_ERROR">XPATH_MEMORY_ERROR</a> = 15
-    <a name="XPTR_SYNTAX_ERROR">XPTR_SYNTAX_ERROR</a> = 16
-    <a name="XPTR_RESOURCE_ERROR">XPTR_RESOURCE_ERROR</a> = 17
-    <a name="XPTR_SUB_RESOURCE_ERROR">XPTR_SUB_RESOURCE_ERROR</a> = 18
-    <a name="XPATH_UNDEF_PREFIX_ERROR">XPATH_UNDEF_PREFIX_ERROR</a> = 19
-    <a name="XPATH_ENCODING_ERROR">XPATH_ENCODING_ERROR</a> = 20
-    <a name="XPATH_INVALID_CHAR_ERROR">XPATH_INVALID_CHAR_ERROR</a> = 21
-    <a name="XPATH_INVALID_CTXT">XPATH_INVALID_CTXT</a> = 22
-    <a name="XPATH_STACK_ERROR">XPATH_STACK_ERROR</a> = 23
-    <a name="XPATH_FORBID_VARIABLE_ERROR">XPATH_FORBID_VARIABLE_ERROR</a> = 24
-    <a name="XPATH_OP_LIMIT_EXCEEDED">XPATH_OP_LIMIT_EXCEEDED</a> = 25
-    <a name="XPATH_RECURSION_LIMIT_EXCEEDED">XPATH_RECURSION_LIMIT_EXCEEDED</a> = 26
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFuncPtr">Typedef </a>xmlXPathFuncPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathFunct">xmlXPathFunct</a> * xmlXPathFuncPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFunct">Structure </a>xmlXPathFunct</h3>
-<pre class="programlisting">struct _xmlXPathFunct {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    <a href="libxml2-xpath.html#xmlXPathEvalFunc">xmlXPathEvalFunc</a>	func
-} xmlXPathFunct;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathObject">Structure </a>xmlXPathObject</h3>
-<pre class="programlisting">struct _xmlXPathObject {
-    <a href="libxml2-xpath.html#xmlXPathObjectType">xmlXPathObjectType</a>	type
-    <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	nodesetval
-    int	boolval
-    double	floatval
-    <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	stringval
-    void *	user
-    int	index
-    void *	user2
-    int	index2
-} xmlXPathObject;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathObjectPtr">Typedef </a>xmlXPathObjectPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObject">xmlXPathObject</a> * xmlXPathObjectPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathObjectType">Enum </a>xmlXPathObjectType</h3>
-<pre class="programlisting">enum <a href="#xmlXPathObjectType">xmlXPathObjectType</a> {
-    <a name="XPATH_UNDEFINED">XPATH_UNDEFINED</a> = 0
-    <a name="XPATH_NODESET">XPATH_NODESET</a> = 1
-    <a name="XPATH_BOOLEAN">XPATH_BOOLEAN</a> = 2
-    <a name="XPATH_NUMBER">XPATH_NUMBER</a> = 3
-    <a name="XPATH_STRING">XPATH_STRING</a> = 4
-    <a name="XPATH_USERS">XPATH_USERS</a> = 8
-    <a name="XPATH_XSLT_TREE">XPATH_XSLT_TREE</a> = 9 /*  An XSLT value tree, non modifiable */
-};
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathParserContext">Structure </a>xmlXPathParserContext</h3>
-<pre class="programlisting">struct _xmlXPathParserContext {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	cur
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	base
-    int	error
-    <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>	context
-    <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	value
-    int	valueNr
-    int	valueMax
-    <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> *	valueTab
-    <a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>	comp
-    int	xptr
-    <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	ancestor
-    int	valueFrame
-} xmlXPathParserContext;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathParserContextPtr">Typedef </a>xmlXPathParserContextPtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a> * xmlXPathParserContextPtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathType">Structure </a>xmlXPathType</h3>
-<pre class="programlisting">struct _xmlXPathType {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    <a href="libxml2-xpath.html#xmlXPathConvertFunc">xmlXPathConvertFunc</a>	func
-} xmlXPathType;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathTypePtr">Typedef </a>xmlXPathTypePtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathType">xmlXPathType</a> * xmlXPathTypePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathVariable">Structure </a>xmlXPathVariable</h3>
-<pre class="programlisting">struct _xmlXPathVariable {
-    const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	name
-    <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	value
-} xmlXPathVariable;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathVariablePtr">Typedef </a>xmlXPathVariablePtr</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathVariable">xmlXPathVariable</a> * xmlXPathVariablePtr;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathAxisFunc"></a>Function type xmlXPathAxisFunc</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathAxisFunc	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath interpreter context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the previous node being explored on that axis</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next node in that axis or NULL if at the end of the axis.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathConvertFunc"></a>Function type xmlXPathConvertFunc</h3>
-<pre class="programlisting">int	xmlXPathConvertFunc		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj, <br>					 int type)<br>
-</pre>
-<p>A conversion function is associated to a type and used to cast the new type to primitive values.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>obj</tt></i>:</span></td>
-<td>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>type</tt></i>:</span></td>
-<td>the number of the target type</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEvalFunc"></a>Function type xmlXPathEvalFunc</h3>
-<pre class="programlisting">void	xmlXPathEvalFunc		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>An XPath evaluation function, the parameters are on the XPath context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments passed to the function</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFuncLookupFunc"></a>Function type xmlXPathFuncLookupFunc</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a>	xmlXPathFuncLookupFunc	(void * ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)<br>
-</pre>
-<p>Prototype for callbacks used to plug function lookup in the XPath engine.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>name of the function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the namespace name hosting this function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the XPath function or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFunction"></a>Function type xmlXPathFunction</h3>
-<pre class="programlisting">void	xmlXPathFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>An XPath function. The arguments (if any) are popped out from the context stack and the result is pushed on the stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath interprestation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathVariableLookupFunc"></a>Function type xmlXPathVariableLookupFunc</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathVariableLookupFunc	(void * ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)<br>
-</pre>
-<p>Prototype for callbacks used to plug variable lookup in the XPath engine.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>name of the variable</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the namespace name hosting this variable</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the XPath object value or NULL if not found.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNAN">Variable </a>xmlXPathNAN</h3>
-<pre class="programlisting">double xmlXPathNAN;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNINF">Variable </a>xmlXPathNINF</h3>
-<pre class="programlisting">double xmlXPathNINF;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPINF">Variable </a>xmlXPathPINF</h3>
-<pre class="programlisting">double xmlXPathPINF;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastBooleanToNumber"></a>xmlXPathCastBooleanToNumber ()</h3>
-<pre class="programlisting">double	xmlXPathCastBooleanToNumber	(int val)<br>
-</pre>
-<p>Converts a boolean to its number 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 boolean</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastBooleanToString"></a>xmlXPathCastBooleanToString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathCastBooleanToString	(int val)<br>
-</pre>
-<p>Converts a boolean to its string 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 boolean</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly allocated string.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNodeSetToBoolean"></a>xmlXPathCastNodeSetToBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathCastNodeSetToBoolean	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns)<br>
-</pre>
-<p>Converts a node-set to its boolean value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the boolean value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNodeSetToNumber"></a>xmlXPathCastNodeSetToNumber ()</h3>
-<pre class="programlisting">double	xmlXPathCastNodeSetToNumber	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns)<br>
-</pre>
-<p>Converts a node-set to its number value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNodeSetToString"></a>xmlXPathCastNodeSetToString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathCastNodeSetToString	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> ns)<br>
-</pre>
-<p>Converts a node-set to its string value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly allocated string.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNodeToNumber"></a>xmlXPathCastNodeToNumber ()</h3>
-<pre class="programlisting">double	xmlXPathCastNodeToNumber	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Converts a node to its number value</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNodeToString"></a>xmlXPathCastNodeToString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathCastNodeToString	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Converts a node to its string value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly allocated string.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNumberToBoolean"></a>xmlXPathCastNumberToBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathCastNumberToBoolean	(double val)<br>
-</pre>
-<p>Converts a number to its boolean 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 number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the boolean value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastNumberToString"></a>xmlXPathCastNumberToString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathCastNumberToString	(double val)<br>
-</pre>
-<p>Converts a number to its string 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 number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a newly allocated string.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastStringToBoolean"></a>xmlXPathCastStringToBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathCastStringToBoolean	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>Converts a string to its boolean 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 string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the boolean value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastStringToNumber"></a>xmlXPathCastStringToNumber ()</h3>
-<pre class="programlisting">double	xmlXPathCastStringToNumber	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>Converts a string to its number 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 string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastToBoolean"></a>xmlXPathCastToBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathCastToBoolean		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an XPath object to its boolean 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>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the boolean value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastToNumber"></a>xmlXPathCastToNumber ()</h3>
-<pre class="programlisting">double	xmlXPathCastToNumber		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an XPath object to its number 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>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number value</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCastToString"></a>xmlXPathCastToString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathCastToString	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an existing object to its string() equivalent</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the allocated string value of the object, NULL in case of error. It's up to the caller to free the string memory with xmlFree().</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCmpNodes"></a>xmlXPathCmpNodes ()</h3>
-<pre class="programlisting">int	xmlXPathCmpNodes		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node1, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node2)<br>
-</pre>
-<p>Compare two nodes w.r.t document order</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node1</tt></i>:</span></td>
-<td>the first node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node2</tt></i>:</span></td>
-<td>the second node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-2 in case of error 1 if first point &lt; second point, 0 if it's the same node, -1 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompile"></a>xmlXPathCompile ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>	xmlXPathCompile	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Compile an XPath expression</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> resulting from the compilation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompiledEval"></a>xmlXPathCompiledEval ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathCompiledEval	(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br>
-</pre>
-<p>Evaluate the Precompiled XPath expression in the given context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the compiled XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompiledEvalToBoolean"></a>xmlXPathCompiledEvalToBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathCompiledEvalToBoolean	(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Applies the XPath boolean() function on the result of the given compiled expression.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the compiled XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the expression evaluated to true, 0 if to false and -1 in API and internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathContextSetCache"></a>xmlXPathContextSetCache ()</h3>
-<pre class="programlisting">int	xmlXPathContextSetCache		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 int active, <br>					 int value, <br>					 int options)<br>
-</pre>
-<p>Creates/frees an object cache on the XPath context. If activates XPath objects (xmlXPathObject) will be cached internally to be reused. @options: 0: This will set the XPath object caching: @value: This will set the maximum number of XPath objects to be cached per slot There are two slots for node-set and misc objects. Use &lt;0 for the default number (100). Other values for @options have currently no effect.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>active</tt></i>:</span></td>
-<td>enables/disables (creates/frees) the cache</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>a value with semantics dependent on @options</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>options</tt></i>:</span></td>
-<td>options (currently only the value 0 is used)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 if the setting succeeded, and -1 on API or internal errors.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathConvertBoolean"></a>xmlXPathConvertBoolean ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathConvertBoolean	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an existing object to its boolean() equivalent</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new object, the old one is freed (or the operation is done directly on @val)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathConvertNumber"></a>xmlXPathConvertNumber ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathConvertNumber	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an existing object to its number() equivalent</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new object, the old one is freed (or the operation is done directly on @val)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathConvertString"></a>xmlXPathConvertString ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathConvertString	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>Converts an existing object to its string() equivalent</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the new object, the old one is freed (or the operation is done directly on @val)</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCtxtCompile"></a>xmlXPathCtxtCompile ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a>	xmlXPathCtxtCompile	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>Compile an XPath expression</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> resulting from the compilation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEval"></a>xmlXPathEval ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathEval	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br>
-</pre>
-<p>Evaluate the XPath Location Path in the given context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEvalExpression"></a>xmlXPathEvalExpression ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathEvalExpression	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Alias for xmlXPathEval().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEvalPredicate"></a>xmlXPathEvalPredicate ()</h3>
-<pre class="programlisting">int	xmlXPathEvalPredicate		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>res</tt></i>:</span></td>
-<td>the Predicate Expression evaluation result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if predicate is true, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeCompExpr"></a>xmlXPathFreeCompExpr ()</h3>
-<pre class="programlisting">void	xmlXPathFreeCompExpr		(<a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp)<br>
-</pre>
-<p>Free up the memory allocated by @comp</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>an XPATH comp</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeContext"></a>xmlXPathFreeContext ()</h3>
-<pre class="programlisting">void	xmlXPathFreeContext		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Free up an <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the context to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeNodeSet"></a>xmlXPathFreeNodeSet ()</h3>
-<pre class="programlisting">void	xmlXPathFreeNodeSet		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> obj)<br>
-</pre>
-<p>Free the NodeSet compound (not the actual nodes !).</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>obj</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeNodeSetList"></a>xmlXPathFreeNodeSetList ()</h3>
-<pre class="programlisting">void	xmlXPathFreeNodeSetList		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj)<br>
-</pre>
-<p>Free up the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> @obj but don't deallocate the objects in the list contrary to xmlXPathFreeObject().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>obj</tt></i>:</span></td>
-<td>an existing NodeSetList object</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeObject"></a>xmlXPathFreeObject ()</h3>
-<pre class="programlisting">void	xmlXPathFreeObject		(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> obj)<br>
-</pre>
-<p>Free up an <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> object.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>obj</tt></i>:</span></td>
-<td>the object to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathInit"></a>xmlXPathInit ()</h3>
-<pre class="programlisting">void	xmlXPathInit			(void)<br>
-</pre>
-<p>DEPRECATED: Alias for <a href="libxml2-parser.html#xmlInitParser">xmlInitParser</a>.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathIsInf"></a>xmlXPathIsInf ()</h3>
-<pre class="programlisting">int	xmlXPathIsInf			(double val)<br>
-</pre>
-<p>Checks whether a double is an infinity.</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 double value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the value is +Infinite, -1 if -Infinite, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathIsNaN"></a>xmlXPathIsNaN ()</h3>
-<pre class="programlisting">int	xmlXPathIsNaN			(double val)<br>
-</pre>
-<p>Checks whether a double is a NaN.</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 double value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the value is a NaN, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewContext"></a>xmlXPathNewContext ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>	xmlXPathNewContext	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a> just allocated. The caller will need to free it.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeEval"></a>xmlXPathNodeEval ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNodeEval	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>						 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br>
-</pre>
-<p>Evaluate the XPath Location Path in the given context. The node 'node' is set as the context node. The context node is not restored.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to to use as the context node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetCreate"></a>xmlXPathNodeSetCreate ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeSetCreate	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> of type double and of value @val</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an initial xmlNodePtr, or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathObjectCopy"></a>xmlXPathObjectCopy ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathObjectCopy	(<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> val)<br>
-</pre>
-<p>allocate a new copy of a given object</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 original object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathOrderDocElems"></a>xmlXPathOrderDocElems ()</h3>
-<pre class="programlisting">long	xmlXPathOrderDocElems		(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>an input document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of elements found in the document or -1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSetContextNode"></a>xmlXPathSetContextNode ()</h3>
-<pre class="programlisting">int	xmlXPathSetContextNode		(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br>
-</pre>
-<p>Sets 'node' as the context node. The node must be in the same document as that associated with the context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the node to to use as the context node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>-1 in case of error or 0 if successful</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSetErrorHandler"></a>xmlXPathSetErrorHandler ()</h3>
-<pre class="programlisting">void	xmlXPathSetErrorHandler		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a> handler, <br>					 void * data)<br>
-</pre>
-<p>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated. Available since 2.13.0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>handler</tt></i>:</span></td>
-<td>error handler</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>user data which will be passed to the handler</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpathInternals.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpathInternals.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpathInternals.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpathInternals.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,3244 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xpathInternals: internal interfaces for XML Path Language implementation</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xpath.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<td><a accesskey="n" href="libxml2-xpointer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xpathInternals</span></h2>
-<p>xpathInternals - internal interfaces for XML Path Language implementation</p>
-<p>internal interfaces for XML Path Language implementation used to build new modules on top of XPath like XPointer and XSLT </p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis">#define <a href="#CAST_TO_BOOLEAN">CAST_TO_BOOLEAN</a>;
-#define <a href="#CAST_TO_NUMBER">CAST_TO_NUMBER</a>;
-#define <a href="#CAST_TO_STRING">CAST_TO_STRING</a>;
-#define <a href="#CHECK_ARITY">CHECK_ARITY</a>(x);
-#define <a href="#CHECK_ERROR">CHECK_ERROR</a>;
-#define <a href="#CHECK_ERROR0">CHECK_ERROR0</a>;
-#define <a href="#CHECK_TYPE">CHECK_TYPE</a>(typeval);
-#define <a href="#CHECK_TYPE0">CHECK_TYPE0</a>(typeval);
-#define <a href="#XP_ERROR">XP_ERROR</a>(X);
-#define <a href="#XP_ERROR0">XP_ERROR0</a>(X);
-#define <a href="#valuePop">valuePop</a>;
-#define <a href="#valuePush">valuePush</a>;
-#define <a href="#xmlXPathCheckError">xmlXPathCheckError</a>(ctxt);
-#define <a href="#xmlXPathEmptyNodeSet">xmlXPathEmptyNodeSet</a>(ns);
-#define <a href="#xmlXPathGetContextNode">xmlXPathGetContextNode</a>(ctxt);
-#define <a href="#xmlXPathGetDocument">xmlXPathGetDocument</a>(ctxt);
-#define <a href="#xmlXPathGetError">xmlXPathGetError</a>(ctxt);
-#define <a href="#xmlXPathReturnBoolean">xmlXPathReturnBoolean</a>(ctxt, val);
-#define <a href="#xmlXPathReturnEmptyNodeSet">xmlXPathReturnEmptyNodeSet</a>(ctxt);
-#define <a href="#xmlXPathReturnEmptyString">xmlXPathReturnEmptyString</a>(ctxt);
-#define <a href="#xmlXPathReturnExternal">xmlXPathReturnExternal</a>(ctxt, val);
-#define <a href="#xmlXPathReturnFalse">xmlXPathReturnFalse</a>(ctxt);
-#define <a href="#xmlXPathReturnNodeSet">xmlXPathReturnNodeSet</a>(ctxt, ns);
-#define <a href="#xmlXPathReturnNumber">xmlXPathReturnNumber</a>(ctxt, val);
-#define <a href="#xmlXPathReturnString">xmlXPathReturnString</a>(ctxt, str);
-#define <a href="#xmlXPathReturnTrue">xmlXPathReturnTrue</a>(ctxt);
-#define <a href="#xmlXPathSetArityError">xmlXPathSetArityError</a>(ctxt);
-#define <a href="#xmlXPathSetError">xmlXPathSetError</a>(ctxt, err);
-#define <a href="#xmlXPathSetTypeError">xmlXPathSetTypeError</a>(ctxt);
-#define <a href="#xmlXPathStackIsExternal">xmlXPathStackIsExternal</a>(ctxt);
-#define <a href="#xmlXPathStackIsNodeSet">xmlXPathStackIsNodeSet</a>(ctxt);
-void	<a href="#xmlXPathAddValues">xmlXPathAddValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-int	<a href="#xmlXPathCompareValues">xmlXPathCompareValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int inf, <br>					 int strict);
-void	<a href="#xmlXPathConcatFunction">xmlXPathConcatFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathContainsFunction">xmlXPathContainsFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathCountFunction">xmlXPathCountFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a>	(FILE * output, <br>					 <a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>					 int depth);
-void	<a href="#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a>		(FILE * output, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur, <br>					 int depth);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathDifference">xmlXPathDifference</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathDistinct">xmlXPathDistinct</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes);
-void	<a href="#xmlXPathDivValues">xmlXPathDivValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-int	<a href="#xmlXPathEqualValues">xmlXPathEqualValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathErr">xmlXPathErr</a>			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int code);
-void	<a href="#xmlXPathEvalExpr">xmlXPathEvalExpr</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-int	<a href="#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res);
-void	<a href="#xmlXPathFalseFunction">xmlXPathFalseFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathFloorFunction">xmlXPathFloorFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathFreeParserContext">xmlXPathFreeParserContext</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-<a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a>	<a href="#xmlXPathFunctionLookup">xmlXPathFunctionLookup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a>	<a href="#xmlXPathFunctionLookupNS">xmlXPathFunctionLookupNS</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
-int	<a href="#xmlXPathHasSameNodes">xmlXPathHasSameNodes</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-void	<a href="#xmlXPathIdFunction">xmlXPathIdFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathIntersection">xmlXPathIntersection</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-int	<a href="#xmlXPathIsNodeType">xmlXPathIsNodeType</a>		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-void	<a href="#xmlXPathLangFunction">xmlXPathLangFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathLastFunction">xmlXPathLastFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathLeading">xmlXPathLeading</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-void	<a href="#xmlXPathLocalNameFunction">xmlXPathLocalNameFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathModValues">xmlXPathModValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathMultValues">xmlXPathMultValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathNamespaceURIFunction">xmlXPathNamespaceURIFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewBoolean">xmlXPathNewBoolean</a>	(int val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewCString">xmlXPathNewCString</a>	(const char * val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewFloat">xmlXPathNewFloat</a>	(double val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewNodeSet">xmlXPathNewNodeSet</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewNodeSetList">xmlXPathNewNodeSetList</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a>	<a href="#xmlXPathNewParserContext">xmlXPathNewParserContext</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>							 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewString">xmlXPathNewString</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathNewValueTree">xmlXPathNewValueTree</a>	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextAncestor">xmlXPathNextAncestor</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextAttribute">xmlXPathNextAttribute</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextChild">xmlXPathNextChild</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextDescendant">xmlXPathNextDescendant</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextFollowing">xmlXPathNextFollowing</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextFollowingSibling">xmlXPathNextFollowingSibling</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextNamespace">xmlXPathNextNamespace</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextParent">xmlXPathNextParent</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextPreceding">xmlXPathNextPreceding</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	<a href="#xmlXPathNextSelf">xmlXPathNextSelf</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeLeading">xmlXPathNodeLeading</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-int	<a href="#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-int	<a href="#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
-int	<a href="#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-int	<a href="#xmlXPathNodeSetContains">xmlXPathNodeSetContains</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-void	<a href="#xmlXPathNodeSetDel">xmlXPathNodeSetDel</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val);
-void	<a href="#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a>		(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeSetMerge">xmlXPathNodeSetMerge</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val2);
-void	<a href="#xmlXPathNodeSetRemove">xmlXPathNodeSetRemove</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 int val);
-void	<a href="#xmlXPathNodeSetSort">xmlXPathNodeSetSort</a>		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> set);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
-void	<a href="#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-int	<a href="#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathNotFunction">xmlXPathNotFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathNsLookup">xmlXPathNsLookup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
-void	<a href="#xmlXPathNumberFunction">xmlXPathNumberFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathParseNCName">xmlXPathParseNCName</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathParseName">xmlXPathParseName</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-int	<a href="#xmlXPathPopBoolean">xmlXPathPopBoolean</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void *	<a href="#xmlXPathPopExternal">xmlXPathPopExternal</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathPopNodeSet">xmlXPathPopNodeSet</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-double	<a href="#xmlXPathPopNumber">xmlXPathPopNumber</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlXPathPopString">xmlXPathPopString</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathPositionFunction">xmlXPathPositionFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathRegisterAllFunctions">xmlXPathRegisterAllFunctions</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-int	<a href="#xmlXPathRegisterFunc">xmlXPathRegisterFunc</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> f);
-void	<a href="#xmlXPathRegisterFuncLookup">xmlXPathRegisterFuncLookup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a> f, <br>					 void * funcCtxt);
-int	<a href="#xmlXPathRegisterFuncNS">xmlXPathRegisterFuncNS</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri, <br>					 <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> f);
-int	<a href="#xmlXPathRegisterNs">xmlXPathRegisterNs</a>		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
-int	<a href="#xmlXPathRegisterVariable">xmlXPathRegisterVariable</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value);
-void	<a href="#xmlXPathRegisterVariableLookup">xmlXPathRegisterVariableLookup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a> f, <br>					 void * data);
-int	<a href="#xmlXPathRegisterVariableNS">xmlXPathRegisterVariableNS</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value);
-void	<a href="#xmlXPathRegisteredFuncsCleanup">xmlXPathRegisteredFuncsCleanup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-void	<a href="#xmlXPathRegisteredNsCleanup">xmlXPathRegisteredNsCleanup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-void	<a href="#xmlXPathRegisteredVariablesCleanup">xmlXPathRegisteredVariablesCleanup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt);
-void	<a href="#xmlXPathRoot">xmlXPathRoot</a>			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathRoundFunction">xmlXPathRoundFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathStartsWithFunction">xmlXPathStartsWithFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-double	<a href="#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str);
-void	<a href="#xmlXPathStringFunction">xmlXPathStringFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathStringLengthFunction">xmlXPathStringLengthFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathSubValues">xmlXPathSubValues</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-void	<a href="#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathSubstringBeforeFunction">xmlXPathSubstringBeforeFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathSumFunction">xmlXPathSumFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathTrailing">xmlXPathTrailing</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	<a href="#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2);
-void	<a href="#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathTrueFunction">xmlXPathTrueFunction</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs);
-void	<a href="#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathValuePop">xmlXPathValuePop</a>	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt);
-int	<a href="#xmlXPathValuePush">xmlXPathValuePush</a>		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathVariableLookup">xmlXPathVariableLookup</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathVariableLookupNS">xmlXPathVariableLookupNS</a>	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathWrapCString">xmlXPathWrapCString</a>	(char * val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathWrapExternal">xmlXPathWrapExternal</a>	(void * val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathWrapNodeSet">xmlXPathWrapNodeSet</a>	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val);
-<a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPathWrapString">xmlXPathWrapString</a>	(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val);
-void	<a href="#xmlXPatherror">xmlXPatherror</a>			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 const char * file, <br>					 int line, <br>					 int no);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="CAST_TO_BOOLEAN">Macro </a>CAST_TO_BOOLEAN</h3>
-<pre class="programlisting">#define <a href="#CAST_TO_BOOLEAN">CAST_TO_BOOLEAN</a>;
-</pre>
-<p>Macro to try to cast the value on the top of the XPath stack to a boolean.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CAST_TO_NUMBER">Macro </a>CAST_TO_NUMBER</h3>
-<pre class="programlisting">#define <a href="#CAST_TO_NUMBER">CAST_TO_NUMBER</a>;
-</pre>
-<p>Macro to try to cast the value on the top of the XPath stack to a number.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CAST_TO_STRING">Macro </a>CAST_TO_STRING</h3>
-<pre class="programlisting">#define <a href="#CAST_TO_STRING">CAST_TO_STRING</a>;
-</pre>
-<p>Macro to try to cast the value on the top of the XPath stack to a string.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CHECK_ARITY">Macro </a>CHECK_ARITY</h3>
-<pre class="programlisting">#define <a href="#CHECK_ARITY">CHECK_ARITY</a>(x);
-</pre>
-<p>Macro to check that the number of args passed to an XPath function matches.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>x</tt></i>:</span></td>
-<td>the number of expected args</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CHECK_ERROR">Macro </a>CHECK_ERROR</h3>
-<pre class="programlisting">#define <a href="#CHECK_ERROR">CHECK_ERROR</a>;
-</pre>
-<p>Macro to return from the function if an XPath error was detected.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CHECK_ERROR0">Macro </a>CHECK_ERROR0</h3>
-<pre class="programlisting">#define <a href="#CHECK_ERROR0">CHECK_ERROR0</a>;
-</pre>
-<p>Macro to return 0 from the function if an XPath error was detected.</p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CHECK_TYPE">Macro </a>CHECK_TYPE</h3>
-<pre class="programlisting">#define <a href="#CHECK_TYPE">CHECK_TYPE</a>(typeval);
-</pre>
-<p>Macro to check that the value on top of the XPath stack is of a given type.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>typeval</tt></i>:</span></td>
-<td>the XPath type</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="CHECK_TYPE0">Macro </a>CHECK_TYPE0</h3>
-<pre class="programlisting">#define <a href="#CHECK_TYPE0">CHECK_TYPE0</a>(typeval);
-</pre>
-<p>Macro to check that the value on top of the XPath stack is of a given type. Return(0) in case of failure</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>typeval</tt></i>:</span></td>
-<td>the XPath type</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XP_ERROR">Macro </a>XP_ERROR</h3>
-<pre class="programlisting">#define <a href="#XP_ERROR">XP_ERROR</a>(X);
-</pre>
-<p>Macro to raise an XPath error and return.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>X</tt></i>:</span></td>
-<td>the error code</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="XP_ERROR0">Macro </a>XP_ERROR0</h3>
-<pre class="programlisting">#define <a href="#XP_ERROR0">XP_ERROR0</a>(X);
-</pre>
-<p>Macro to raise an XPath error and return 0.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>X</tt></i>:</span></td>
-<td>the error code</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="valuePop">Macro </a>valuePop</h3>
-<pre class="programlisting">#define <a href="#valuePop">valuePop</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="valuePush">Macro </a>valuePush</h3>
-<pre class="programlisting">#define <a href="#valuePush">valuePush</a>;
-</pre>
-<p></p>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCheckError">Macro </a>xmlXPathCheckError</h3>
-<pre class="programlisting">#define <a href="#xmlXPathCheckError">xmlXPathCheckError</a>(ctxt);
-</pre>
-<p>Check if an XPath error was raised. Returns true if an error has been raised, false otherwise.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEmptyNodeSet">Macro </a>xmlXPathEmptyNodeSet</h3>
-<pre class="programlisting">#define <a href="#xmlXPathEmptyNodeSet">xmlXPathEmptyNodeSet</a>(ns);
-</pre>
-<p>Empties a node-set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathGetContextNode">Macro </a>xmlXPathGetContextNode</h3>
-<pre class="programlisting">#define <a href="#xmlXPathGetContextNode">xmlXPathGetContextNode</a>(ctxt);
-</pre>
-<p>Get the context node of an XPath context. Returns the context node.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathGetDocument">Macro </a>xmlXPathGetDocument</h3>
-<pre class="programlisting">#define <a href="#xmlXPathGetDocument">xmlXPathGetDocument</a>(ctxt);
-</pre>
-<p>Get the document of an XPath context. Returns the context document.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathGetError">Macro </a>xmlXPathGetError</h3>
-<pre class="programlisting">#define <a href="#xmlXPathGetError">xmlXPathGetError</a>(ctxt);
-</pre>
-<p>Get the error code of an XPath context. Returns the context error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnBoolean">Macro </a>xmlXPathReturnBoolean</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnBoolean">xmlXPathReturnBoolean</a>(ctxt, val);
-</pre>
-<p>Pushes the boolean @val on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>a boolean</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnEmptyNodeSet">Macro </a>xmlXPathReturnEmptyNodeSet</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnEmptyNodeSet">xmlXPathReturnEmptyNodeSet</a>(ctxt);
-</pre>
-<p>Pushes an empty node-set on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnEmptyString">Macro </a>xmlXPathReturnEmptyString</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnEmptyString">xmlXPathReturnEmptyString</a>(ctxt);
-</pre>
-<p>Pushes an empty string on the stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnExternal">Macro </a>xmlXPathReturnExternal</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnExternal">xmlXPathReturnExternal</a>(ctxt, val);
-</pre>
-<p>Pushes user data on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>user data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnFalse">Macro </a>xmlXPathReturnFalse</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnFalse">xmlXPathReturnFalse</a>(ctxt);
-</pre>
-<p>Pushes false on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnNodeSet">Macro </a>xmlXPathReturnNodeSet</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnNodeSet">xmlXPathReturnNodeSet</a>(ctxt, ns);
-</pre>
-<p>Pushes the node-set @ns on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnNumber">Macro </a>xmlXPathReturnNumber</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnNumber">xmlXPathReturnNumber</a>(ctxt, val);
-</pre>
-<p>Pushes the double @val on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>a double</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnString">Macro </a>xmlXPathReturnString</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnString">xmlXPathReturnString</a>(ctxt, str);
-</pre>
-<p>Pushes the string @str on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>a string</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathReturnTrue">Macro </a>xmlXPathReturnTrue</h3>
-<pre class="programlisting">#define <a href="#xmlXPathReturnTrue">xmlXPathReturnTrue</a>(ctxt);
-</pre>
-<p>Pushes true on the context stack.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSetArityError">Macro </a>xmlXPathSetArityError</h3>
-<pre class="programlisting">#define <a href="#xmlXPathSetArityError">xmlXPathSetArityError</a>(ctxt);
-</pre>
-<p>Raises an <a href="libxml2-xpath.html#XPATH_INVALID_ARITY">XPATH_INVALID_ARITY</a> error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSetError">Macro </a>xmlXPathSetError</h3>
-<pre class="programlisting">#define <a href="#xmlXPathSetError">xmlXPathSetError</a>(ctxt, err);
-</pre>
-<p>Raises an error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>err</tt></i>:</span></td>
-<td>an <a href="libxml2-xpath.html#xmlXPathError">xmlXPathError</a> code</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSetTypeError">Macro </a>xmlXPathSetTypeError</h3>
-<pre class="programlisting">#define <a href="#xmlXPathSetTypeError">xmlXPathSetTypeError</a>(ctxt);
-</pre>
-<p>Raises an <a href="libxml2-xpath.html#XPATH_INVALID_TYPE">XPATH_INVALID_TYPE</a> error.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStackIsExternal">Macro </a>xmlXPathStackIsExternal</h3>
-<pre class="programlisting">#define <a href="#xmlXPathStackIsExternal">xmlXPathStackIsExternal</a>(ctxt);
-</pre>
-<p>Checks if the current value on the XPath stack is an external object. Returns true if the current object on the stack is an external object.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStackIsNodeSet">Macro </a>xmlXPathStackIsNodeSet</h3>
-<pre class="programlisting">#define <a href="#xmlXPathStackIsNodeSet">xmlXPathStackIsNodeSet</a>(ctxt);
-</pre>
-<p>Check if the current value on the XPath stack is a node set or an XSLT value tree. Returns true if the current object on the stack is a node-set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathAddValues"></a>xmlXPathAddValues ()</h3>
-<pre class="programlisting">void	xmlXPathAddValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the add operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathBooleanFunction"></a>xmlXPathBooleanFunction ()</h3>
-<pre class="programlisting">void	xmlXPathBooleanFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCeilingFunction"></a>xmlXPathCeilingFunction ()</h3>
-<pre class="programlisting">void	xmlXPathCeilingFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCompareValues"></a>xmlXPathCompareValues ()</h3>
-<pre class="programlisting">int	xmlXPathCompareValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int inf, <br>					 int strict)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>inf</tt></i>:</span></td>
-<td>less than (1) or greater than (0)</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>strict</tt></i>:</span></td>
-<td>is the comparison strict</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if the comparison succeeded, 0 if it failed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathConcatFunction"></a>xmlXPathConcatFunction ()</h3>
-<pre class="programlisting">void	xmlXPathConcatFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the concat() XPath function string concat(string, string, string*) The concat function returns the concatenation of its arguments.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathContainsFunction"></a>xmlXPathContainsFunction ()</h3>
-<pre class="programlisting">void	xmlXPathContainsFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathCountFunction"></a>xmlXPathCountFunction ()</h3>
-<pre class="programlisting">void	xmlXPathCountFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the count() XPath function number count(node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDebugDumpCompExpr"></a>xmlXPathDebugDumpCompExpr ()</h3>
-<pre class="programlisting">void	xmlXPathDebugDumpCompExpr	(FILE * output, <br>					 <a href="libxml2-xpath.html#xmlXPathCompExprPtr">xmlXPathCompExprPtr</a> comp, <br>					 int depth)<br>
-</pre>
-<p>Dumps the tree of the compiled XPath expression.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * for the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>comp</tt></i>:</span></td>
-<td>the precompiled XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>the indentation level.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDebugDumpObject"></a>xmlXPathDebugDumpObject ()</h3>
-<pre class="programlisting">void	xmlXPathDebugDumpObject		(FILE * output, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> cur, <br>					 int depth)<br>
-</pre>
-<p>Dump the content of the object for debugging purposes</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>output</tt></i>:</span></td>
-<td>the FILE * to dump the output</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the object to inspect</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>depth</tt></i>:</span></td>
-<td>indentation level</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDifference"></a>xmlXPathDifference ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathDifference	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>Implements the EXSLT - Sets difference() function: node-set set:difference (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the difference between the two node sets, or nodes1 if nodes2 is empty</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDistinct"></a>xmlXPathDistinct ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathDistinct	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a subset of the nodes contained in @nodes, or @nodes if it is empty</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDistinctSorted"></a>xmlXPathDistinctSorted ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathDistinctSorted	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes)<br>
-</pre>
-<p>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a subset of the nodes contained in @nodes, or @nodes if it is empty</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathDivValues"></a>xmlXPathDivValues ()</h3>
-<pre class="programlisting">void	xmlXPathDivValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the div operation on XPath objects @arg1 / @arg2: The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEqualValues"></a>xmlXPathEqualValues ()</h3>
-<pre class="programlisting">int	xmlXPathEqualValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the equal operation on XPath objects content: @arg1 == @arg2</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or 1 depending on the results of the test.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathErr"></a>xmlXPathErr ()</h3>
-<pre class="programlisting">void	xmlXPathErr			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int code)<br>
-</pre>
-<p>Handle an XPath error</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>a XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>code</tt></i>:</span></td>
-<td>the error code</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEvalExpr"></a>xmlXPathEvalExpr ()</h3>
-<pre class="programlisting">void	xmlXPathEvalExpr		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: Internal function, don't use. Parse and evaluate an XPath expression in the given context, then push the result on the context stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathEvaluatePredicateResult"></a>xmlXPathEvaluatePredicateResult ()</h3>
-<pre class="programlisting">int	xmlXPathEvaluatePredicateResult	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> res)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>res</tt></i>:</span></td>
-<td>the Predicate Expression evaluation result</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if predicate is true, 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFalseFunction"></a>xmlXPathFalseFunction ()</h3>
-<pre class="programlisting">void	xmlXPathFalseFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the false() XPath function boolean false()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFloorFunction"></a>xmlXPathFloorFunction ()</h3>
-<pre class="programlisting">void	xmlXPathFloorFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFreeParserContext"></a>xmlXPathFreeParserContext ()</h3>
-<pre class="programlisting">void	xmlXPathFreeParserContext	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Free up an <a href="libxml2-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the context to free</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFunctionLookup"></a>xmlXPathFunctionLookup ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a>	xmlXPathFunctionLookup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search in the Function array of the context for the given function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the function name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> or NULL if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathFunctionLookupNS"></a>xmlXPathFunctionLookupNS ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a>	xmlXPathFunctionLookupNS	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)<br>
-</pre>
-<p>Search in the Function array of the context for the given function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the function name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the function namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> or NULL if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathHasSameNodes"></a>xmlXPathHasSameNodes ()</h3>
-<pre class="programlisting">int	xmlXPathHasSameNodes		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>Implements the EXSLT - Sets has-same-nodes function: boolean set:has-same-node(node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true (1) if @nodes1 shares any node with @nodes2, false (0) otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathIdFunction"></a>xmlXPathIdFunction ()</h3>
-<pre class="programlisting">void	xmlXPathIdFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathIntersection"></a>xmlXPathIntersection ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathIntersection	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>Implements the EXSLT - Sets intersection() function: node-set set:intersection (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a node set comprising the nodes that are within both the node sets passed as arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathIsNodeType"></a>xmlXPathIsNodeType ()</h3>
-<pre class="programlisting">int	xmlXPathIsNodeType		(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Is the name given a NodeType one. [38] NodeType ::= 'comment' | 'text' | 'processing-instruction' | 'node'</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>a name string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>1 if true 0 otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathLangFunction"></a>xmlXPathLangFunction ()</h3>
-<pre class="programlisting">void	xmlXPathLangFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathLastFunction"></a>xmlXPathLastFunction ()</h3>
-<pre class="programlisting">void	xmlXPathLastFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the last() XPath function number last() The last function returns the number of nodes in the context node list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathLeading"></a>xmlXPathLeading ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathLeading		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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't contain @nodes2</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathLeadingSorted"></a>xmlXPathLeadingSorted ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathLeadingSorted	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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't contain @nodes2</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathLocalNameFunction"></a>xmlXPathLocalNameFunction ()</h3>
-<pre class="programlisting">void	xmlXPathLocalNameFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathModValues"></a>xmlXPathModValues ()</h3>
-<pre class="programlisting">void	xmlXPathModValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the mod operation on XPath objects: @arg1 / @arg2 The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathMultValues"></a>xmlXPathMultValues ()</h3>
-<pre class="programlisting">void	xmlXPathMultValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the multiply operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNamespaceURIFunction"></a>xmlXPathNamespaceURIFunction ()</h3>
-<pre class="programlisting">void	xmlXPathNamespaceURIFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewBoolean"></a>xmlXPathNewBoolean ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewBoolean	(int val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type boolean and of value @val</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 boolean value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewCString"></a>xmlXPathNewCString ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewCString	(const char * val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type string and of value @val</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 char * value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewFloat"></a>xmlXPathNewFloat ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewFloat	(double val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type double and of value @val</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 double value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewNodeSet"></a>xmlXPathNewNodeSet ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewNodeSet	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type NodeSet and initialize it with the single Node @val</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 NodePtr value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewNodeSetList"></a>xmlXPathNewNodeSetList ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewNodeSetList	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type NodeSet and initialize it with the Nodeset @val</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an existing NodeSet</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewParserContext"></a>xmlXPathNewParserContext ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a>	xmlXPathNewParserContext	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>							 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a></p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPath expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathParserContext">xmlXPathParserContext</a> just allocated.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewString"></a>xmlXPathNewString ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewString	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type string and of value @val</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 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNewValueTree"></a>xmlXPathNewValueTree ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathNewValueTree	(<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>Create a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> of type Value Tree (XSLT) and initialize it with the tree root @val</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 NodePtr value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextAncestor"></a>xmlXPathNextAncestor ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextAncestor	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "ancestor" 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'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's parent is the second node on the axis</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextAncestorOrSelf"></a>xmlXPathNextAncestorOrSelf ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextAncestorOrSelf	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "ancestor-or-self" 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's parent the second; parent here is defined the same as with the parent axis.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextAttribute"></a>xmlXPathNextAttribute ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextAttribute	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "attribute" direction TODO: support DTD inherited default attributes</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current attribute in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextChild"></a>xmlXPathNextChild ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextChild	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "child" direction The child axis contains the children of the context node in document order.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextDescendant"></a>xmlXPathNextDescendant ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextDescendant	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "descendant" 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextDescendantOrSelf"></a>xmlXPathNextDescendantOrSelf ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextDescendantOrSelf	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "descendant-or-self" 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextFollowing"></a>xmlXPathNextFollowing ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextFollowing	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "following" 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextFollowingSibling"></a>xmlXPathNextFollowingSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextFollowingSibling	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "following-sibling" direction The following-sibling axis contains the following siblings of the context node in document order.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextNamespace"></a>xmlXPathNextNamespace ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextNamespace	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "namespace" 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current attribute in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextParent"></a>xmlXPathNextParent ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextParent	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "parent" direction The parent axis contains the parent of the context node, if there is one.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextPreceding"></a>xmlXPathNextPreceding ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextPreceding	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "preceding" 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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextPrecedingSibling"></a>xmlXPathNextPrecedingSibling ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextPrecedingSibling	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "preceding-sibling" 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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNextSelf"></a>xmlXPathNextSelf ()</h3>
-<pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>	xmlXPathNextSelf	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br>
-</pre>
-<p>Traversal function for the "self" direction The self axis contains just the context node itself</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the current node in the traversal</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the next element following that axis</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeLeading"></a>xmlXPathNodeLeading ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeLeading	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes is sorted by document order, then #exslSetsNodeLeadingSorted is called.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeLeadingSorted"></a>xmlXPathNodeLeadingSorted ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeLeadingSorted	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetAdd"></a>xmlXPathNodeSetAdd ()</h3>
-<pre class="programlisting">int	xmlXPathNodeSetAdd		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>add a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the initial node set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetAddNs"></a>xmlXPathNodeSetAddNs ()</h3>
-<pre class="programlisting">int	xmlXPathNodeSetAddNs		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br>					 <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br>
-</pre>
-<p>add a new namespace node to an existing NodeSet</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the initial node set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>the hosting node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>a the namespace node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetAddUnique"></a>xmlXPathNodeSetAddUnique ()</h3>
-<pre class="programlisting">int	xmlXPathNodeSetAddUnique	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>add a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> to an existing NodeSet, optimized version when we are sure the node is not already in the set.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the initial node set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>a new <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>
-</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success and -1 in case of failure</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetContains"></a>xmlXPathNodeSetContains ()</h3>
-<pre class="programlisting">int	xmlXPathNodeSetContains		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>checks whether @cur contains @val</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>true (1) if @cur contains @val, false (0) otherwise</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetDel"></a>xmlXPathNodeSetDel ()</h3>
-<pre class="programlisting">void	xmlXPathNodeSetDel		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> val)<br>
-</pre>
-<p>Removes an <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> from an existing NodeSet</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the initial node set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>an <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetFreeNs"></a>xmlXPathNodeSetFreeNs ()</h3>
-<pre class="programlisting">void	xmlXPathNodeSetFreeNs		(<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns)<br>
-</pre>
-<p>Namespace nodes in libxml don'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</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ns</tt></i>:</span></td>
-<td>the XPath namespace node found in a nodeset.</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetMerge"></a>xmlXPathNodeSetMerge ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeSetMerge	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val2)<br>
-</pre>
-<p>Merges two nodesets, all nodes from @val2 are added to @val1 if @val1 is NULL, a new set is created and copied from @val2</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>val1</tt></i>:</span></td>
-<td>the first NodeSet or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val2</tt></i>:</span></td>
-<td>the second NodeSet</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>@val1 once extended or NULL in case of error. Frees @val1 in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetRemove"></a>xmlXPathNodeSetRemove ()</h3>
-<pre class="programlisting">void	xmlXPathNodeSetRemove		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> cur, <br>					 int val)<br>
-</pre>
-<p>Removes an entry from an existing NodeSet list.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>cur</tt></i>:</span></td>
-<td>the initial node set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>val</tt></i>:</span></td>
-<td>the index to remove</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeSetSort"></a>xmlXPathNodeSetSort ()</h3>
-<pre class="programlisting">void	xmlXPathNodeSetSort		(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> set)<br>
-</pre>
-<p>Sort the node set in document order</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>set</tt></i>:</span></td>
-<td>the node set</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeTrailing"></a>xmlXPathNodeTrailing ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeTrailing	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>					 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set) @nodes is sorted by document order, then #xmlXPathNodeTrailingSorted is called.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNodeTrailingSorted"></a>xmlXPathNodeTrailingSorted ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathNodeTrailingSorted	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br>
-</pre>
-<p>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>node</tt></i>:</span></td>
-<td>a node</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn't contain @node</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNormalizeFunction"></a>xmlXPathNormalizeFunction ()</h3>
-<pre class="programlisting">void	xmlXPathNormalizeFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNotEqualValues"></a>xmlXPathNotEqualValues ()</h3>
-<pre class="programlisting">int	xmlXPathNotEqualValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the equal operation on XPath objects content: @arg1 == @arg2</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 or 1 depending on the results of the test.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNotFunction"></a>xmlXPathNotFunction ()</h3>
-<pre class="programlisting">void	xmlXPathNotFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the not() XPath function boolean not(boolean) The not function returns true if its argument is false, and false otherwise.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNsLookup"></a>xmlXPathNsLookup ()</h3>
-<pre class="programlisting">const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathNsLookup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix)<br>
-</pre>
-<p>Search in the namespace declaration array of the context for the given namespace name associated to the given prefix</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the namespace prefix value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the value or NULL if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathNumberFunction"></a>xmlXPathNumberFunction ()</h3>
-<pre class="programlisting">void	xmlXPathNumberFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the number() XPath function number number(object?)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathParseNCName"></a>xmlXPathParseNCName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathParseNCName	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>parse an XML namespace non qualified name. [NS 3] NCName ::= (Letter | '_') (NCNameChar)* [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace name or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathParseName"></a>xmlXPathParseName ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathParseName	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>parse an XML name [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender [5] Name ::= (Letter | '_' | ':') (NameChar)*</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the namespace name or NULL</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPopBoolean"></a>xmlXPathPopBoolean ()</h3>
-<pre class="programlisting">int	xmlXPathPopBoolean		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops a boolean from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the boolean</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPopExternal"></a>xmlXPathPopExternal ()</h3>
-<pre class="programlisting">void *	xmlXPathPopExternal		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops an external object from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the object</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPopNodeSet"></a>xmlXPathPopNodeSet ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathPopNodeSet	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops a node-set from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the node-set</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPopNumber"></a>xmlXPathPopNumber ()</h3>
-<pre class="programlisting">double	xmlXPathPopNumber		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops a number from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPopString"></a>xmlXPathPopString ()</h3>
-<pre class="programlisting"><a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	xmlXPathPopString	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops a string from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the string</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathPositionFunction"></a>xmlXPathPositionFunction ()</h3>
-<pre class="programlisting">void	xmlXPathPositionFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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().</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterAllFunctions"></a>xmlXPathRegisterAllFunctions ()</h3>
-<pre class="programlisting">void	xmlXPathRegisterAllFunctions	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>DEPRECATED: No-op since 2.14.0. Registers all default XPath functions in this context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterFunc"></a>xmlXPathRegisterFunc ()</h3>
-<pre class="programlisting">int	xmlXPathRegisterFunc		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> f)<br>
-</pre>
-<p>Register a new function. If @f is NULL it unregisters the function</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the function name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the function implementation or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterFuncLookup"></a>xmlXPathRegisterFuncLookup ()</h3>
-<pre class="programlisting">void	xmlXPathRegisterFuncLookup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a> f, <br>					 void * funcCtxt)<br>
-</pre>
-<p>Registers an external mechanism to do function lookup.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the lookup function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>funcCtxt</tt></i>:</span></td>
-<td>the lookup data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterFuncNS"></a>xmlXPathRegisterFuncNS ()</h3>
-<pre class="programlisting">int	xmlXPathRegisterFuncNS		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri, <br>					 <a href="libxml2-xpath.html#xmlXPathFunction">xmlXPathFunction</a> f)<br>
-</pre>
-<p>Register a new function. If @f is NULL it unregisters the function</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the function name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the function namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the function implementation or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterNs"></a>xmlXPathRegisterNs ()</h3>
-<pre class="programlisting">int	xmlXPathRegisterNs		(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)<br>
-</pre>
-<p>Register a new namespace. If @ns_uri is NULL it unregisters the namespace</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>prefix</tt></i>:</span></td>
-<td>the namespace prefix cannot be NULL or empty string</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the namespace name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterVariable"></a>xmlXPathRegisterVariable ()</h3>
-<pre class="programlisting">int	xmlXPathRegisterVariable	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value)<br>
-</pre>
-<p>Register a new variable value. If @value is NULL it unregisters the variable</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the variable name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the variable value or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterVariableLookup"></a>xmlXPathRegisterVariableLookup ()</h3>
-<pre class="programlisting">void	xmlXPathRegisterVariableLookup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a> f, <br>					 void * data)<br>
-</pre>
-<p>register an external mechanism to do variable lookup</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>f</tt></i>:</span></td>
-<td>the lookup function</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>data</tt></i>:</span></td>
-<td>the lookup data</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisterVariableNS"></a>xmlXPathRegisterVariableNS ()</h3>
-<pre class="programlisting">int	xmlXPathRegisterVariableNS	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value)<br>
-</pre>
-<p>Register a new variable value. If @value is NULL it unregisters the variable</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the variable name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the variable namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the variable value or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>0 in case of success, -1 in case of error</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisteredFuncsCleanup"></a>xmlXPathRegisteredFuncsCleanup ()</h3>
-<pre class="programlisting">void	xmlXPathRegisteredFuncsCleanup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Cleanup the XPath context data associated to registered functions</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisteredNsCleanup"></a>xmlXPathRegisteredNsCleanup ()</h3>
-<pre class="programlisting">void	xmlXPathRegisteredNsCleanup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Cleanup the XPath context data associated to registered variables</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRegisteredVariablesCleanup"></a>xmlXPathRegisteredVariablesCleanup ()</h3>
-<pre class="programlisting">void	xmlXPathRegisteredVariablesCleanup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt)<br>
-</pre>
-<p>Cleanup the XPath context data associated to registered variables</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRoot"></a>xmlXPathRoot ()</h3>
-<pre class="programlisting">void	xmlXPathRoot			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Initialize the context to the root of the document</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathRoundFunction"></a>xmlXPathRoundFunction ()</h3>
-<pre class="programlisting">void	xmlXPathRoundFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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 closest to positive infinity is returned.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStartsWithFunction"></a>xmlXPathStartsWithFunction ()</h3>
-<pre class="programlisting">void	xmlXPathStartsWithFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStringEvalNumber"></a>xmlXPathStringEvalNumber ()</h3>
-<pre class="programlisting">double	xmlXPathStringEvalNumber	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str)<br>
-</pre>
-<p>[30a] Float ::= Number ('e' Digits?)? [30] Number ::= Digits ('.' Digits?)? | '.' Digits [31] Digits ::= [0-9]+ Compile a Number in the string In complement of the Number expression, this function also handles negative values : '-' Number.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>A string to scan</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the double value.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStringFunction"></a>xmlXPathStringFunction ()</h3>
-<pre class="programlisting">void	xmlXPathStringFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathStringLengthFunction"></a>xmlXPathStringLengthFunction ()</h3>
-<pre class="programlisting">void	xmlXPathStringLengthFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSubValues"></a>xmlXPathSubValues ()</h3>
-<pre class="programlisting">void	xmlXPathSubValues		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the subtraction operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSubstringAfterFunction"></a>xmlXPathSubstringAfterFunction ()</h3>
-<pre class="programlisting">void	xmlXPathSubstringAfterFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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 string if the first argument string does not contain the second argument string. For example, substring-after("1999/04/01","/") returns 04/01, and substring-after("1999/04/01","19") returns 99/04/01.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSubstringBeforeFunction"></a>xmlXPathSubstringBeforeFunction ()</h3>
-<pre class="programlisting">void	xmlXPathSubstringBeforeFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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("1999/04/01","/") returns 1999.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSubstringFunction"></a>xmlXPathSubstringFunction ()</h3>
-<pre class="programlisting">void	xmlXPathSubstringFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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("12345",2,3) returns "234". 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("12345",2) returns "2345". 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("12345", 1.5, 2.6) returns "234" - substring("12345", 0, 3) returns "12" - substring("12345", 0 div 0, 3) returns "" - substring("12345", 1, 0 div 0) returns "" - substring("12345", -42, 1 div 0) returns "12345" - substring("12345", -1 div 0, 1 div 0) returns ""</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathSumFunction"></a>xmlXPathSumFunction ()</h3>
-<pre class="programlisting">void	xmlXPathSumFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathTrailing"></a>xmlXPathTrailing ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathTrailing	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>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.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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't contain @nodes2</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathTrailingSorted"></a>xmlXPathTrailingSorted ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a>	xmlXPathTrailingSorted	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes1, <br>					 <a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> nodes2)<br>
-</pre>
-<p>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>nodes1</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nodes2</tt></i>:</span></td>
-<td>a node-set, sorted by document order</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>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't contain @nodes2</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathTranslateFunction"></a>xmlXPathTranslateFunction ()</h3>
-<pre class="programlisting">void	xmlXPathTranslateFunction	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>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("bar","abc","ABC") 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("--aaa--","abc-","ABC")</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathTrueFunction"></a>xmlXPathTrueFunction ()</h3>
-<pre class="programlisting">void	xmlXPathTrueFunction		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 int nargs)<br>
-</pre>
-<p>Implement the true() XPath function boolean true()</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>nargs</tt></i>:</span></td>
-<td>the number of arguments</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathValueFlipSign"></a>xmlXPathValueFlipSign ()</h3>
-<pre class="programlisting">void	xmlXPathValueFlipSign		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Implement the unary - operation on an XPath object The numeric operators convert their operands to numbers as if by calling the number function.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody><tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr></tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathValuePop"></a>xmlXPathValuePop ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathValuePop	(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt)<br>
-</pre>
-<p>Pops the top XPath object from the value stack</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath evaluation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the XPath object just removed</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathValuePush"></a>xmlXPathValuePush ()</h3>
-<pre class="programlisting">int	xmlXPathValuePush		(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> value)<br>
-</pre>
-<p>Pushes a new XPath object on top of the value stack. If value is NULL, a memory error is recorded in the parser context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>an XPath evaluation context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>value</tt></i>:</span></td>
-<td>the XPath object</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the number of items on the value stack, or -1 in case of error. The object is destroyed in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathVariableLookup"></a>xmlXPathVariableLookup ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathVariableLookup	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>						 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name)<br>
-</pre>
-<p>Search in the Variable array of the context for the given variable value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the variable name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>a copy of the value or NULL if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathVariableLookupNS"></a>xmlXPathVariableLookupNS ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathVariableLookupNS	(<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctxt, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br>							 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * ns_uri)<br>
-</pre>
-<p>Search in the Variable array of the context for the given variable value.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>name</tt></i>:</span></td>
-<td>the variable name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ns_uri</tt></i>:</span></td>
-<td>the variable namespace URI</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the a copy of the value or NULL if not found</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathWrapCString"></a>xmlXPathWrapCString ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathWrapCString	(char * val)<br>
-</pre>
-<p>Wraps a string into an XPath object.</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 char * value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathWrapExternal"></a>xmlXPathWrapExternal ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathWrapExternal	(void * val)<br>
-</pre>
-<p>Wraps the @val data into an XPath object.</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 user data</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathWrapNodeSet"></a>xmlXPathWrapNodeSet ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathWrapNodeSet	(<a href="libxml2-xpath.html#xmlNodeSetPtr">xmlNodeSetPtr</a> val)<br>
-</pre>
-<p>Wrap the Nodeset @val in a new <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a></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 NodePtr value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object. In case of error the node set is destroyed and NULL is returned.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPathWrapString"></a>xmlXPathWrapString ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPathWrapString	(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * val)<br>
-</pre>
-<p>Wraps the @val string into an XPath object.</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 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the newly created object. Frees @val in case of error.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPatherror"></a>xmlXPatherror ()</h3>
-<pre class="programlisting">void	xmlXPatherror			(<a href="libxml2-xpath.html#xmlXPathParserContextPtr">xmlXPathParserContextPtr</a> ctxt, <br>					 const char * file, <br>					 int line, <br>					 int no)<br>
-</pre>
-<p>Formats an error message.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>ctxt</tt></i>:</span></td>
-<td>the XPath Parser context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>file</tt></i>:</span></td>
-<td>the file name</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>line</tt></i>:</span></td>
-<td>the line number</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>no</tt></i>:</span></td>
-<td>the error number</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpointer.html 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpointer.html
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2-xpointer.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2-xpointer.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,89 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>xpointer: API to handle XML Pointers</title>
-<meta name="generator" content="Libxml2 devhelp stylesheet">
-<link rel="start" href="index.html" title="libxml2 Reference Manual">
-<link rel="up" href="general.html" title="API">
-<link rel="stylesheet" href="style.css" type="text/css">
-<link rel="chapter" href="general.html" title="API">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="libxml2-xpathInternals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="general.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
-<th width="100%" align="center">libxml2 Reference Manual</th>
-</tr></table>
-<h2><span class="refentrytitle">xpointer</span></h2>
-<p>xpointer - API to handle XML Pointers</p>
-<p>API to handle XML Pointers Base implementation was made accordingly to W3C Candidate Recommendation 7 June 2000</p>
-<p>Author(s): Daniel Veillard </p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<pre class="synopsis"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	<a href="#xmlXPtrEval">xmlXPtrEval</a>	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx);
-<a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>	<a href="#xmlXPtrNewContext">xmlXPtrNewContext</a>	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> here, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> origin);
-</pre>
-</div>
-<div class="refsect1" lang="en"><h2>Description</h2></div>
-<div class="refsect1" lang="en">
-<h2>Details</h2>
-<div class="refsect2" lang="en">
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPtrEval"></a>xmlXPtrEval ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a>	xmlXPtrEval	(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br>					 <a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a> ctx)<br>
-</pre>
-<p>Evaluate the XPath Location Path in the given context.</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>str</tt></i>:</span></td>
-<td>the XPointer expression</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>ctx</tt></i>:</span></td>
-<td>the XPointer context</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathObjectPtr">xmlXPathObjectPtr</a> resulting from the evaluation or NULL. the caller has to free the object.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2" lang="en">
-<h3>
-<a name="xmlXPtrNewContext"></a>xmlXPtrNewContext ()</h3>
-<pre class="programlisting"><a href="libxml2-xpath.html#xmlXPathContextPtr">xmlXPathContextPtr</a>	xmlXPtrNewContext	(<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> here, <br>						 <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> origin)<br>
-</pre>
-<p>Create a new XPointer context</p>
-<div class="variablelist"><table border="0">
-<col align="left">
-<tbody>
-<tr>
-<td><span class="term"><i><tt>doc</tt></i>:</span></td>
-<td>the XML document</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>here</tt></i>:</span></td>
-<td>the node that directly contains the XPointer being evaluated or NULL</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>origin</tt></i>:</span></td>
-<td>the element from which a user or program initiated traversal of the link, or NULL.</td>
-</tr>
-<tr>
-<td><span class="term"><i><tt>Returns</tt></i>:</span></td>
-<td>the <a href="libxml2-xpath.html#xmlXPathContext">xmlXPathContext</a> just allocated.</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-</div>
-</div>
-</body>
-</html>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/libxml2.devhelp2 2.15.0+dfsg-0.3/doc/devhelp/libxml2.devhelp2
--- 2.14.6+dfsg-0.1/doc/devhelp/libxml2.devhelp2	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/libxml2.devhelp2	1970-01-01 00:00:00.000000000 +0000
@@ -1,3300 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<book xmlns="http://www.devhelp.net/book" title="libxml2 Reference Manual" link="index.html" author="" name="libxml2">
-  <chapters>
-    <sub name="API" link="general.html">
-      <sub name="HTMLparser" link="libxml2-HTMLparser.html"/>
-      <sub name="HTMLtree" link="libxml2-HTMLtree.html"/>
-      <sub name="SAX2" link="libxml2-SAX2.html"/>
-      <sub name="c14n" link="libxml2-c14n.html"/>
-      <sub name="catalog" link="libxml2-catalog.html"/>
-      <sub name="chvalid" link="libxml2-chvalid.html"/>
-      <sub name="debugXML" link="libxml2-debugXML.html"/>
-      <sub name="dict" link="libxml2-dict.html"/>
-      <sub name="encoding" link="libxml2-encoding.html"/>
-      <sub name="entities" link="libxml2-entities.html"/>
-      <sub name="globals" link="libxml2-globals.html"/>
-      <sub name="hash" link="libxml2-hash.html"/>
-      <sub name="list" link="libxml2-list.html"/>
-      <sub name="nanohttp" link="libxml2-nanohttp.html"/>
-      <sub name="parser" link="libxml2-parser.html"/>
-      <sub name="parserInternals" link="libxml2-parserInternals.html"/>
-      <sub name="pattern" link="libxml2-pattern.html"/>
-      <sub name="relaxng" link="libxml2-relaxng.html"/>
-      <sub name="schemasInternals" link="libxml2-schemasInternals.html"/>
-      <sub name="schematron" link="libxml2-schematron.html"/>
-      <sub name="threads" link="libxml2-threads.html"/>
-      <sub name="tree" link="libxml2-tree.html"/>
-      <sub name="uri" link="libxml2-uri.html"/>
-      <sub name="valid" link="libxml2-valid.html"/>
-      <sub name="xinclude" link="libxml2-xinclude.html"/>
-      <sub name="xlink" link="libxml2-xlink.html"/>
-      <sub name="xmlIO" link="libxml2-xmlIO.html"/>
-      <sub name="xmlautomata" link="libxml2-xmlautomata.html"/>
-      <sub name="xmlerror" link="libxml2-xmlerror.html"/>
-      <sub name="xmlexports" link="libxml2-xmlexports.html"/>
-      <sub name="xmlmemory" link="libxml2-xmlmemory.html"/>
-      <sub name="xmlmodule" link="libxml2-xmlmodule.html"/>
-      <sub name="xmlreader" link="libxml2-xmlreader.html"/>
-      <sub name="xmlregexp" link="libxml2-xmlregexp.html"/>
-      <sub name="xmlsave" link="libxml2-xmlsave.html"/>
-      <sub name="xmlschemas" link="libxml2-xmlschemas.html"/>
-      <sub name="xmlschemastypes" link="libxml2-xmlschemastypes.html"/>
-      <sub name="xmlstring" link="libxml2-xmlstring.html"/>
-      <sub name="xmlversion" link="libxml2-xmlversion.html"/>
-      <sub name="xmlwriter" link="libxml2-xmlwriter.html"/>
-      <sub name="xpath" link="libxml2-xpath.html"/>
-      <sub name="xpathInternals" link="libxml2-xpathInternals.html"/>
-      <sub name="xpointer" link="libxml2-xpointer.html"/>
-    </sub>
-  </chapters>
-  <functions>
-    <keyword type="macro" name="BAD_CAST" link="libxml2-xmlstring.html#BAD_CAST"/>
-    <keyword type="macro" name="CAST_TO_BOOLEAN" link="libxml2-xpathInternals.html#CAST_TO_BOOLEAN"/>
-    <keyword type="macro" name="CAST_TO_NUMBER" link="libxml2-xpathInternals.html#CAST_TO_NUMBER"/>
-    <keyword type="macro" name="CAST_TO_STRING" link="libxml2-xpathInternals.html#CAST_TO_STRING"/>
-    <keyword type="macro" name="CHECK_ARITY" link="libxml2-xpathInternals.html#CHECK_ARITY"/>
-    <keyword type="macro" name="CHECK_ERROR" link="libxml2-xpathInternals.html#CHECK_ERROR"/>
-    <keyword type="macro" name="CHECK_ERROR0" link="libxml2-xpathInternals.html#CHECK_ERROR0"/>
-    <keyword type="macro" name="CHECK_TYPE" link="libxml2-xpathInternals.html#CHECK_TYPE"/>
-    <keyword type="macro" name="CHECK_TYPE0" link="libxml2-xpathInternals.html#CHECK_TYPE0"/>
-    <keyword type="macro" name="HTML_COMMENT_NODE" link="libxml2-HTMLtree.html#HTML_COMMENT_NODE"/>
-    <keyword type="macro" name="HTML_ENTITY_REF_NODE" link="libxml2-HTMLtree.html#HTML_ENTITY_REF_NODE"/>
-    <keyword type="macro" name="HTML_PI_NODE" link="libxml2-HTMLtree.html#HTML_PI_NODE"/>
-    <keyword type="macro" name="HTML_PRESERVE_NODE" link="libxml2-HTMLtree.html#HTML_PRESERVE_NODE"/>
-    <keyword type="macro" name="HTML_TEXT_NODE" link="libxml2-HTMLtree.html#HTML_TEXT_NODE"/>
-    <keyword type="macro" name="IS_ASCII_DIGIT" link="libxml2-parserInternals.html#IS_ASCII_DIGIT"/>
-    <keyword type="macro" name="IS_ASCII_LETTER" link="libxml2-parserInternals.html#IS_ASCII_LETTER"/>
-    <keyword type="macro" name="IS_BASECHAR" link="libxml2-parserInternals.html#IS_BASECHAR"/>
-    <keyword type="macro" name="IS_BLANK" link="libxml2-parserInternals.html#IS_BLANK"/>
-    <keyword type="macro" name="IS_BLANK_CH" link="libxml2-parserInternals.html#IS_BLANK_CH"/>
-    <keyword type="macro" name="IS_BYTE_CHAR" link="libxml2-parserInternals.html#IS_BYTE_CHAR"/>
-    <keyword type="macro" name="IS_CHAR" link="libxml2-parserInternals.html#IS_CHAR"/>
-    <keyword type="macro" name="IS_CHAR_CH" link="libxml2-parserInternals.html#IS_CHAR_CH"/>
-    <keyword type="macro" name="IS_COMBINING" link="libxml2-parserInternals.html#IS_COMBINING"/>
-    <keyword type="macro" name="IS_COMBINING_CH" link="libxml2-parserInternals.html#IS_COMBINING_CH"/>
-    <keyword type="macro" name="IS_DIGIT" link="libxml2-parserInternals.html#IS_DIGIT"/>
-    <keyword type="macro" name="IS_DIGIT_CH" link="libxml2-parserInternals.html#IS_DIGIT_CH"/>
-    <keyword type="macro" name="IS_EXTENDER" link="libxml2-parserInternals.html#IS_EXTENDER"/>
-    <keyword type="macro" name="IS_EXTENDER_CH" link="libxml2-parserInternals.html#IS_EXTENDER_CH"/>
-    <keyword type="macro" name="IS_IDEOGRAPHIC" link="libxml2-parserInternals.html#IS_IDEOGRAPHIC"/>
-    <keyword type="macro" name="IS_LETTER" link="libxml2-parserInternals.html#IS_LETTER"/>
-    <keyword type="macro" name="IS_LETTER_CH" link="libxml2-parserInternals.html#IS_LETTER_CH"/>
-    <keyword type="macro" name="IS_PUBIDCHAR" link="libxml2-parserInternals.html#IS_PUBIDCHAR"/>
-    <keyword type="macro" name="IS_PUBIDCHAR_CH" link="libxml2-parserInternals.html#IS_PUBIDCHAR_CH"/>
-    <keyword type="macro" name="LIBXML2_NEW_BUFFER" link="libxml2-tree.html#LIBXML2_NEW_BUFFER"/>
-    <keyword type="macro" name="LIBXML_AUTOMATA_ENABLED" link="libxml2-xmlversion.html#LIBXML_AUTOMATA_ENABLED"/>
-    <keyword type="macro" name="LIBXML_C14N_ENABLED" link="libxml2-xmlversion.html#LIBXML_C14N_ENABLED"/>
-    <keyword type="macro" name="LIBXML_CATALOG_ENABLED" link="libxml2-xmlversion.html#LIBXML_CATALOG_ENABLED"/>
-    <keyword type="macro" name="LIBXML_DEBUG_ENABLED" link="libxml2-xmlversion.html#LIBXML_DEBUG_ENABLED"/>
-    <keyword type="macro" name="LIBXML_DOTTED_VERSION" link="libxml2-xmlversion.html#LIBXML_DOTTED_VERSION"/>
-    <keyword type="macro" name="LIBXML_HTML_ENABLED" link="libxml2-xmlversion.html#LIBXML_HTML_ENABLED"/>
-    <keyword type="macro" name="LIBXML_HTTP_ENABLED" link="libxml2-xmlversion.html#LIBXML_HTTP_ENABLED"/>
-    <keyword type="macro" name="LIBXML_ICONV_ENABLED" link="libxml2-xmlversion.html#LIBXML_ICONV_ENABLED"/>
-    <keyword type="macro" name="LIBXML_ICU_ENABLED" link="libxml2-xmlversion.html#LIBXML_ICU_ENABLED"/>
-    <keyword type="macro" name="LIBXML_ISO8859X_ENABLED" link="libxml2-xmlversion.html#LIBXML_ISO8859X_ENABLED"/>
-    <keyword type="macro" name="LIBXML_LZMA_ENABLED" link="libxml2-xmlversion.html#LIBXML_LZMA_ENABLED"/>
-    <keyword type="macro" name="LIBXML_MODULES_ENABLED" link="libxml2-xmlversion.html#LIBXML_MODULES_ENABLED"/>
-    <keyword type="macro" name="LIBXML_MODULE_EXTENSION" link="libxml2-xmlversion.html#LIBXML_MODULE_EXTENSION"/>
-    <keyword type="macro" name="LIBXML_OUTPUT_ENABLED" link="libxml2-xmlversion.html#LIBXML_OUTPUT_ENABLED"/>
-    <keyword type="macro" name="LIBXML_PATTERN_ENABLED" link="libxml2-xmlversion.html#LIBXML_PATTERN_ENABLED"/>
-    <keyword type="macro" name="LIBXML_PUSH_ENABLED" link="libxml2-xmlversion.html#LIBXML_PUSH_ENABLED"/>
-    <keyword type="macro" name="LIBXML_READER_ENABLED" link="libxml2-xmlversion.html#LIBXML_READER_ENABLED"/>
-    <keyword type="macro" name="LIBXML_REGEXP_ENABLED" link="libxml2-xmlversion.html#LIBXML_REGEXP_ENABLED"/>
-    <keyword type="macro" name="LIBXML_RELAXNG_ENABLED" link="libxml2-xmlversion.html#LIBXML_RELAXNG_ENABLED"/>
-    <keyword type="macro" name="LIBXML_SAX1_ENABLED" link="libxml2-xmlversion.html#LIBXML_SAX1_ENABLED"/>
-    <keyword type="macro" name="LIBXML_SCHEMAS_ENABLED" link="libxml2-xmlversion.html#LIBXML_SCHEMAS_ENABLED"/>
-    <keyword type="macro" name="LIBXML_SCHEMATRON_ENABLED" link="libxml2-xmlversion.html#LIBXML_SCHEMATRON_ENABLED"/>
-    <keyword type="macro" name="LIBXML_TEST_VERSION" link="libxml2-xmlversion.html#LIBXML_TEST_VERSION"/>
-    <keyword type="macro" name="LIBXML_THREAD_ALLOC_ENABLED" link="libxml2-xmlversion.html#LIBXML_THREAD_ALLOC_ENABLED"/>
-    <keyword type="macro" name="LIBXML_THREAD_ENABLED" link="libxml2-xmlversion.html#LIBXML_THREAD_ENABLED"/>
-    <keyword type="macro" name="LIBXML_TREE_ENABLED" link="libxml2-xmlversion.html#LIBXML_TREE_ENABLED"/>
-    <keyword type="macro" name="LIBXML_VALID_ENABLED" link="libxml2-xmlversion.html#LIBXML_VALID_ENABLED"/>
-    <keyword type="macro" name="LIBXML_VERSION" link="libxml2-xmlversion.html#LIBXML_VERSION"/>
-    <keyword type="macro" name="LIBXML_VERSION_EXTRA" link="libxml2-xmlversion.html#LIBXML_VERSION_EXTRA"/>
-    <keyword type="macro" name="LIBXML_VERSION_STRING" link="libxml2-xmlversion.html#LIBXML_VERSION_STRING"/>
-    <keyword type="macro" name="LIBXML_WRITER_ENABLED" link="libxml2-xmlversion.html#LIBXML_WRITER_ENABLED"/>
-    <keyword type="macro" name="LIBXML_XINCLUDE_ENABLED" link="libxml2-xmlversion.html#LIBXML_XINCLUDE_ENABLED"/>
-    <keyword type="macro" name="LIBXML_XPATH_ENABLED" link="libxml2-xmlversion.html#LIBXML_XPATH_ENABLED"/>
-    <keyword type="macro" name="LIBXML_XPTR_ENABLED" link="libxml2-xmlversion.html#LIBXML_XPTR_ENABLED"/>
-    <keyword type="macro" name="LIBXML_ZLIB_ENABLED" link="libxml2-xmlversion.html#LIBXML_ZLIB_ENABLED"/>
-    <keyword type="macro" name="UTF8ToHtml" link="libxml2-HTMLparser.html#UTF8ToHtml"/>
-    <keyword type="macro" name="UTF8Toisolat1" link="libxml2-encoding.html#UTF8Toisolat1"/>
-    <keyword type="macro" name="XINCLUDE_FALLBACK" link="libxml2-xinclude.html#XINCLUDE_FALLBACK"/>
-    <keyword type="macro" name="XINCLUDE_HREF" link="libxml2-xinclude.html#XINCLUDE_HREF"/>
-    <keyword type="macro" name="XINCLUDE_NODE" link="libxml2-xinclude.html#XINCLUDE_NODE"/>
-    <keyword type="macro" name="XINCLUDE_NS" link="libxml2-xinclude.html#XINCLUDE_NS"/>
-    <keyword type="macro" name="XINCLUDE_OLD_NS" link="libxml2-xinclude.html#XINCLUDE_OLD_NS"/>
-    <keyword type="macro" name="XINCLUDE_PARSE" link="libxml2-xinclude.html#XINCLUDE_PARSE"/>
-    <keyword type="macro" name="XINCLUDE_PARSE_ENCODING" link="libxml2-xinclude.html#XINCLUDE_PARSE_ENCODING"/>
-    <keyword type="macro" name="XINCLUDE_PARSE_TEXT" link="libxml2-xinclude.html#XINCLUDE_PARSE_TEXT"/>
-    <keyword type="macro" name="XINCLUDE_PARSE_XML" link="libxml2-xinclude.html#XINCLUDE_PARSE_XML"/>
-    <keyword type="macro" name="XINCLUDE_PARSE_XPOINTER" link="libxml2-xinclude.html#XINCLUDE_PARSE_XPOINTER"/>
-    <keyword type="macro" name="XML_CAST_FPTR" link="libxml2-hash.html#XML_CAST_FPTR"/>
-    <keyword type="macro" name="XML_CATALOGS_NAMESPACE" link="libxml2-catalog.html#XML_CATALOGS_NAMESPACE"/>
-    <keyword type="macro" name="XML_CATALOG_PI" link="libxml2-catalog.html#XML_CATALOG_PI"/>
-    <keyword type="macro" name="XML_DEFAULT_VERSION" link="libxml2-parser.html#XML_DEFAULT_VERSION"/>
-    <keyword type="macro" name="XML_GET_CONTENT" link="libxml2-tree.html#XML_GET_CONTENT"/>
-    <keyword type="macro" name="XML_GET_LINE" link="libxml2-tree.html#XML_GET_LINE"/>
-    <keyword type="macro" name="XML_LOCAL_NAMESPACE" link="libxml2-tree.html#XML_LOCAL_NAMESPACE"/>
-    <keyword type="macro" name="XML_MAX_DICTIONARY_LIMIT" link="libxml2-parserInternals.html#XML_MAX_DICTIONARY_LIMIT"/>
-    <keyword type="macro" name="XML_MAX_HUGE_LENGTH" link="libxml2-parserInternals.html#XML_MAX_HUGE_LENGTH"/>
-    <keyword type="macro" name="XML_MAX_LOOKUP_LIMIT" link="libxml2-parserInternals.html#XML_MAX_LOOKUP_LIMIT"/>
-    <keyword type="macro" name="XML_MAX_NAMELEN" link="libxml2-parserInternals.html#XML_MAX_NAMELEN"/>
-    <keyword type="macro" name="XML_MAX_NAME_LENGTH" link="libxml2-parserInternals.html#XML_MAX_NAME_LENGTH"/>
-    <keyword type="macro" name="XML_MAX_TEXT_LENGTH" link="libxml2-parserInternals.html#XML_MAX_TEXT_LENGTH"/>
-    <keyword type="macro" name="XML_SAX2_MAGIC" link="libxml2-parser.html#XML_SAX2_MAGIC"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANYATTR_LAX" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_LAX"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANYATTR_SKIP" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_SKIP"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANYATTR_STRICT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_STRICT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANY_LAX" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANY_LAX"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANY_SKIP" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANY_SKIP"/>
-    <keyword type="macro" name="XML_SCHEMAS_ANY_STRICT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANY_STRICT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTRGROUP_GLOBAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTRGROUP_HAS_REFS" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_HAS_REFS"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTRGROUP_MARKED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTRGROUP_REDEFINED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_REDEFINED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_FIXED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_FIXED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_GLOBAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_GLOBAL"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_INTERNAL_RESOLVED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_NSDEFAULT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_NSDEFAULT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_USE_OPTIONAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_USE_OPTIONAL"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_USE_PROHIBITED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_USE_PROHIBITED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ATTR_USE_REQUIRED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ATTR_USE_REQUIRED"/>
-    <keyword type="macro" name="XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_ABSTRACT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_ABSTRACT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_BLOCK_ABSENT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_ABSENT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_BLOCK_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_BLOCK_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_CIRCULAR" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_DEFAULT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_DEFAULT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_FINAL_ABSENT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_ABSENT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_FINAL_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_FINAL_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_FIXED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_FIXED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_GLOBAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_GLOBAL"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_INTERNAL_CHECKED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_INTERNAL_RESOLVED" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_NILLABLE" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_NILLABLE"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_NSDEFAULT" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_NSDEFAULT"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_REF" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_REF"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD"/>
-    <keyword type="macro" name="XML_SCHEMAS_ELEM_TOPLEVEL" link="libxml2-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL"/>
-    <keyword type="macro" name="XML_SCHEMAS_FACET_COLLAPSE" link="libxml2-schemasInternals.html#XML_SCHEMAS_FACET_COLLAPSE"/>
-    <keyword type="macro" name="XML_SCHEMAS_FACET_PRESERVE" link="libxml2-schemasInternals.html#XML_SCHEMAS_FACET_PRESERVE"/>
-    <keyword type="macro" name="XML_SCHEMAS_FACET_REPLACE" link="libxml2-schemasInternals.html#XML_SCHEMAS_FACET_REPLACE"/>
-    <keyword type="macro" name="XML_SCHEMAS_FACET_UNKNOWN" link="libxml2-schemasInternals.html#XML_SCHEMAS_FACET_UNKNOWN"/>
-    <keyword type="macro" name="XML_SCHEMAS_FINAL_DEFAULT_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_FINAL_DEFAULT_LIST" link="libxml2-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_LIST"/>
-    <keyword type="macro" name="XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_FINAL_DEFAULT_UNION" link="libxml2-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_UNION"/>
-    <keyword type="macro" name="XML_SCHEMAS_INCLUDING_CONVERT_NS" link="libxml2-schemasInternals.html#XML_SCHEMAS_INCLUDING_CONVERT_NS"/>
-    <keyword type="macro" name="XML_SCHEMAS_QUALIF_ATTR" link="libxml2-schemasInternals.html#XML_SCHEMAS_QUALIF_ATTR"/>
-    <keyword type="macro" name="XML_SCHEMAS_QUALIF_ELEM" link="libxml2-schemasInternals.html#XML_SCHEMAS_QUALIF_ELEM"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_ABSTRACT" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_ABSTRACT"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_BLOCK_DEFAULT" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_BLOCK_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_BLOCK_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FACETSNEEDVALUE" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FINAL_DEFAULT" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_DEFAULT"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FINAL_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_EXTENSION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FINAL_LIST" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_LIST"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FINAL_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_RESTRICTION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FINAL_UNION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_UNION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_FIXUP_1" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_FIXUP_1"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_GLOBAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_GLOBAL"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_HAS_FACETS" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_HAS_FACETS"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_INTERNAL_INVALID" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_INTERNAL_RESOLVED" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_MARKED" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_MIXED" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_MIXED"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_NORMVALUENEEDED" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_NORMVALUENEEDED"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_REDEFINED" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_REDEFINED"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_VARIETY_ABSENT" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_VARIETY_ATOMIC" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ATOMIC"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_VARIETY_LIST" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_LIST"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_VARIETY_UNION" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_UNION"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE"/>
-    <keyword type="macro" name="XML_SCHEMAS_TYPE_WHITESPACE_REPLACE" link="libxml2-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_REPLACE"/>
-    <keyword type="macro" name="XML_SCHEMAS_WILDCARD_COMPLETE" link="libxml2-schemasInternals.html#XML_SCHEMAS_WILDCARD_COMPLETE"/>
-    <keyword type="macro" name="XML_SUBSTITUTE_BOTH" link="libxml2-parserInternals.html#XML_SUBSTITUTE_BOTH"/>
-    <keyword type="macro" name="XML_SUBSTITUTE_NONE" link="libxml2-parserInternals.html#XML_SUBSTITUTE_NONE"/>
-    <keyword type="macro" name="XML_SUBSTITUTE_PEREF" link="libxml2-parserInternals.html#XML_SUBSTITUTE_PEREF"/>
-    <keyword type="macro" name="XML_SUBSTITUTE_REF" link="libxml2-parserInternals.html#XML_SUBSTITUTE_REF"/>
-    <keyword type="macro" name="XML_XML_ID" link="libxml2-tree.html#XML_XML_ID"/>
-    <keyword type="macro" name="XML_XML_NAMESPACE" link="libxml2-tree.html#XML_XML_NAMESPACE"/>
-    <keyword type="macro" name="XML_XPATH_CHECKNS" link="libxml2-xpath.html#XML_XPATH_CHECKNS"/>
-    <keyword type="macro" name="XML_XPATH_NOVAR" link="libxml2-xpath.html#XML_XPATH_NOVAR"/>
-    <keyword type="macro" name="XP_ERROR" link="libxml2-xpathInternals.html#XP_ERROR"/>
-    <keyword type="macro" name="XP_ERROR0" link="libxml2-xpathInternals.html#XP_ERROR0"/>
-    <keyword type="macro" name="htmlDefaultSubelement" link="libxml2-HTMLparser.html#htmlDefaultSubelement"/>
-    <keyword type="macro" name="htmlElementAllowedHereDesc" link="libxml2-HTMLparser.html#htmlElementAllowedHereDesc"/>
-    <keyword type="macro" name="htmlRequiredAttrs" link="libxml2-HTMLparser.html#htmlRequiredAttrs"/>
-    <keyword type="macro" name="initGenericErrorDefaultFunc" link="libxml2-xmlerror.html#initGenericErrorDefaultFunc"/>
-    <keyword type="macro" name="inputPop" link="libxml2-parserInternals.html#inputPop"/>
-    <keyword type="macro" name="inputPush" link="libxml2-parserInternals.html#inputPush"/>
-    <keyword type="macro" name="isolat1ToUTF8" link="libxml2-encoding.html#isolat1ToUTF8"/>
-    <keyword type="macro" name="valuePop" link="libxml2-xpathInternals.html#valuePop"/>
-    <keyword type="macro" name="valuePush" link="libxml2-xpathInternals.html#valuePush"/>
-    <keyword type="macro" name="xmlBufferAllocScheme" link="libxml2-tree.html#xmlBufferAllocScheme"/>
-    <keyword type="macro" name="xmlChildrenNode" link="libxml2-tree.html#xmlChildrenNode"/>
-    <keyword type="macro" name="xmlDefaultBufferSize" link="libxml2-tree.html#xmlDefaultBufferSize"/>
-    <keyword type="macro" name="xmlIsBaseCharQ" link="libxml2-chvalid.html#xmlIsBaseCharQ"/>
-    <keyword type="macro" name="xmlIsBaseChar_ch" link="libxml2-chvalid.html#xmlIsBaseChar_ch"/>
-    <keyword type="macro" name="xmlIsBlankQ" link="libxml2-chvalid.html#xmlIsBlankQ"/>
-    <keyword type="macro" name="xmlIsBlank_ch" link="libxml2-chvalid.html#xmlIsBlank_ch"/>
-    <keyword type="macro" name="xmlIsCharQ" link="libxml2-chvalid.html#xmlIsCharQ"/>
-    <keyword type="macro" name="xmlIsChar_ch" link="libxml2-chvalid.html#xmlIsChar_ch"/>
-    <keyword type="macro" name="xmlIsCombiningQ" link="libxml2-chvalid.html#xmlIsCombiningQ"/>
-    <keyword type="macro" name="xmlIsDigitQ" link="libxml2-chvalid.html#xmlIsDigitQ"/>
-    <keyword type="macro" name="xmlIsDigit_ch" link="libxml2-chvalid.html#xmlIsDigit_ch"/>
-    <keyword type="macro" name="xmlIsExtenderQ" link="libxml2-chvalid.html#xmlIsExtenderQ"/>
-    <keyword type="macro" name="xmlIsExtender_ch" link="libxml2-chvalid.html#xmlIsExtender_ch"/>
-    <keyword type="macro" name="xmlIsIdeographicQ" link="libxml2-chvalid.html#xmlIsIdeographicQ"/>
-    <keyword type="macro" name="xmlIsPubidCharQ" link="libxml2-chvalid.html#xmlIsPubidCharQ"/>
-    <keyword type="macro" name="xmlIsPubidChar_ch" link="libxml2-chvalid.html#xmlIsPubidChar_ch"/>
-    <keyword type="macro" name="xmlParserMaxDepth" link="libxml2-parserInternals.html#xmlParserMaxDepth"/>
-    <keyword type="macro" name="xmlRootNode" link="libxml2-tree.html#xmlRootNode"/>
-    <keyword type="macro" name="xmlTextWriterWriteDocType" link="libxml2-xmlwriter.html#xmlTextWriterWriteDocType"/>
-    <keyword type="macro" name="xmlTextWriterWriteProcessingInstruction" link="libxml2-xmlwriter.html#xmlTextWriterWriteProcessingInstruction"/>
-    <keyword type="macro" name="xmlXPathCheckError" link="libxml2-xpathInternals.html#xmlXPathCheckError"/>
-    <keyword type="macro" name="xmlXPathEmptyNodeSet" link="libxml2-xpathInternals.html#xmlXPathEmptyNodeSet"/>
-    <keyword type="macro" name="xmlXPathGetContextNode" link="libxml2-xpathInternals.html#xmlXPathGetContextNode"/>
-    <keyword type="macro" name="xmlXPathGetDocument" link="libxml2-xpathInternals.html#xmlXPathGetDocument"/>
-    <keyword type="macro" name="xmlXPathGetError" link="libxml2-xpathInternals.html#xmlXPathGetError"/>
-    <keyword type="macro" name="xmlXPathNodeSetGetLength" link="libxml2-xpath.html#xmlXPathNodeSetGetLength"/>
-    <keyword type="macro" name="xmlXPathNodeSetIsEmpty" link="libxml2-xpath.html#xmlXPathNodeSetIsEmpty"/>
-    <keyword type="macro" name="xmlXPathNodeSetItem" link="libxml2-xpath.html#xmlXPathNodeSetItem"/>
-    <keyword type="macro" name="xmlXPathReturnBoolean" link="libxml2-xpathInternals.html#xmlXPathReturnBoolean"/>
-    <keyword type="macro" name="xmlXPathReturnEmptyNodeSet" link="libxml2-xpathInternals.html#xmlXPathReturnEmptyNodeSet"/>
-    <keyword type="macro" name="xmlXPathReturnEmptyString" link="libxml2-xpathInternals.html#xmlXPathReturnEmptyString"/>
-    <keyword type="macro" name="xmlXPathReturnExternal" link="libxml2-xpathInternals.html#xmlXPathReturnExternal"/>
-    <keyword type="macro" name="xmlXPathReturnFalse" link="libxml2-xpathInternals.html#xmlXPathReturnFalse"/>
-    <keyword type="macro" name="xmlXPathReturnNodeSet" link="libxml2-xpathInternals.html#xmlXPathReturnNodeSet"/>
-    <keyword type="macro" name="xmlXPathReturnNumber" link="libxml2-xpathInternals.html#xmlXPathReturnNumber"/>
-    <keyword type="macro" name="xmlXPathReturnString" link="libxml2-xpathInternals.html#xmlXPathReturnString"/>
-    <keyword type="macro" name="xmlXPathReturnTrue" link="libxml2-xpathInternals.html#xmlXPathReturnTrue"/>
-    <keyword type="macro" name="xmlXPathSetArityError" link="libxml2-xpathInternals.html#xmlXPathSetArityError"/>
-    <keyword type="macro" name="xmlXPathSetError" link="libxml2-xpathInternals.html#xmlXPathSetError"/>
-    <keyword type="macro" name="xmlXPathSetTypeError" link="libxml2-xpathInternals.html#xmlXPathSetTypeError"/>
-    <keyword type="macro" name="xmlXPathStackIsExternal" link="libxml2-xpathInternals.html#xmlXPathStackIsExternal"/>
-    <keyword type="macro" name="xmlXPathStackIsNodeSet" link="libxml2-xpathInternals.html#xmlXPathStackIsNodeSet"/>
-    <keyword type="enum" name="HTML_DEPRECATED" link="libxml2-HTMLparser.html#HTML_DEPRECATED"/>
-    <keyword type="enum" name="HTML_INVALID" link="libxml2-HTMLparser.html#HTML_INVALID"/>
-    <keyword type="enum" name="HTML_NA" link="libxml2-HTMLparser.html#HTML_NA"/>
-    <keyword type="enum" name="HTML_PARSE_BIG_LINES" link="libxml2-HTMLparser.html#HTML_PARSE_BIG_LINES"/>
-    <keyword type="enum" name="HTML_PARSE_COMPACT" link="libxml2-HTMLparser.html#HTML_PARSE_COMPACT"/>
-    <keyword type="enum" name="HTML_PARSE_HTML5" link="libxml2-HTMLparser.html#HTML_PARSE_HTML5"/>
-    <keyword type="enum" name="HTML_PARSE_HUGE" link="libxml2-HTMLparser.html#HTML_PARSE_HUGE"/>
-    <keyword type="enum" name="HTML_PARSE_IGNORE_ENC" link="libxml2-HTMLparser.html#HTML_PARSE_IGNORE_ENC"/>
-    <keyword type="enum" name="HTML_PARSE_NOBLANKS" link="libxml2-HTMLparser.html#HTML_PARSE_NOBLANKS"/>
-    <keyword type="enum" name="HTML_PARSE_NODEFDTD" link="libxml2-HTMLparser.html#HTML_PARSE_NODEFDTD"/>
-    <keyword type="enum" name="HTML_PARSE_NOERROR" link="libxml2-HTMLparser.html#HTML_PARSE_NOERROR"/>
-    <keyword type="enum" name="HTML_PARSE_NOIMPLIED" link="libxml2-HTMLparser.html#HTML_PARSE_NOIMPLIED"/>
-    <keyword type="enum" name="HTML_PARSE_NONET" link="libxml2-HTMLparser.html#HTML_PARSE_NONET"/>
-    <keyword type="enum" name="HTML_PARSE_NOWARNING" link="libxml2-HTMLparser.html#HTML_PARSE_NOWARNING"/>
-    <keyword type="enum" name="HTML_PARSE_PEDANTIC" link="libxml2-HTMLparser.html#HTML_PARSE_PEDANTIC"/>
-    <keyword type="enum" name="HTML_PARSE_RECOVER" link="libxml2-HTMLparser.html#HTML_PARSE_RECOVER"/>
-    <keyword type="enum" name="HTML_REQUIRED" link="libxml2-HTMLparser.html#HTML_REQUIRED"/>
-    <keyword type="enum" name="HTML_VALID" link="libxml2-HTMLparser.html#HTML_VALID"/>
-    <keyword type="enum" name="XLINK_ACTUATE_AUTO" link="libxml2-xlink.html#XLINK_ACTUATE_AUTO"/>
-    <keyword type="enum" name="XLINK_ACTUATE_NONE" link="libxml2-xlink.html#XLINK_ACTUATE_NONE"/>
-    <keyword type="enum" name="XLINK_ACTUATE_ONREQUEST" link="libxml2-xlink.html#XLINK_ACTUATE_ONREQUEST"/>
-    <keyword type="enum" name="XLINK_SHOW_EMBED" link="libxml2-xlink.html#XLINK_SHOW_EMBED"/>
-    <keyword type="enum" name="XLINK_SHOW_NEW" link="libxml2-xlink.html#XLINK_SHOW_NEW"/>
-    <keyword type="enum" name="XLINK_SHOW_NONE" link="libxml2-xlink.html#XLINK_SHOW_NONE"/>
-    <keyword type="enum" name="XLINK_SHOW_REPLACE" link="libxml2-xlink.html#XLINK_SHOW_REPLACE"/>
-    <keyword type="enum" name="XLINK_TYPE_EXTENDED" link="libxml2-xlink.html#XLINK_TYPE_EXTENDED"/>
-    <keyword type="enum" name="XLINK_TYPE_EXTENDED_SET" link="libxml2-xlink.html#XLINK_TYPE_EXTENDED_SET"/>
-    <keyword type="enum" name="XLINK_TYPE_NONE" link="libxml2-xlink.html#XLINK_TYPE_NONE"/>
-    <keyword type="enum" name="XLINK_TYPE_SIMPLE" link="libxml2-xlink.html#XLINK_TYPE_SIMPLE"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_CDATA" link="libxml2-tree.html#XML_ATTRIBUTE_CDATA"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_DECL" link="libxml2-tree.html#XML_ATTRIBUTE_DECL"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_ENTITIES" link="libxml2-tree.html#XML_ATTRIBUTE_ENTITIES"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_ENTITY" link="libxml2-tree.html#XML_ATTRIBUTE_ENTITY"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_ENUMERATION" link="libxml2-tree.html#XML_ATTRIBUTE_ENUMERATION"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_FIXED" link="libxml2-tree.html#XML_ATTRIBUTE_FIXED"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_ID" link="libxml2-tree.html#XML_ATTRIBUTE_ID"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_IDREF" link="libxml2-tree.html#XML_ATTRIBUTE_IDREF"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_IDREFS" link="libxml2-tree.html#XML_ATTRIBUTE_IDREFS"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_IMPLIED" link="libxml2-tree.html#XML_ATTRIBUTE_IMPLIED"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_NMTOKEN" link="libxml2-tree.html#XML_ATTRIBUTE_NMTOKEN"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_NMTOKENS" link="libxml2-tree.html#XML_ATTRIBUTE_NMTOKENS"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_NODE" link="libxml2-tree.html#XML_ATTRIBUTE_NODE"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_NONE" link="libxml2-tree.html#XML_ATTRIBUTE_NONE"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_NOTATION" link="libxml2-tree.html#XML_ATTRIBUTE_NOTATION"/>
-    <keyword type="enum" name="XML_ATTRIBUTE_REQUIRED" link="libxml2-tree.html#XML_ATTRIBUTE_REQUIRED"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_BOUNDED" link="libxml2-tree.html#XML_BUFFER_ALLOC_BOUNDED"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_DOUBLEIT" link="libxml2-tree.html#XML_BUFFER_ALLOC_DOUBLEIT"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_EXACT" link="libxml2-tree.html#XML_BUFFER_ALLOC_EXACT"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_HYBRID" link="libxml2-tree.html#XML_BUFFER_ALLOC_HYBRID"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_IMMUTABLE" link="libxml2-tree.html#XML_BUFFER_ALLOC_IMMUTABLE"/>
-    <keyword type="enum" name="XML_BUFFER_ALLOC_IO" link="libxml2-tree.html#XML_BUFFER_ALLOC_IO"/>
-    <keyword type="enum" name="XML_BUF_OVERFLOW" link="libxml2-xmlerror.html#XML_BUF_OVERFLOW"/>
-    <keyword type="enum" name="XML_C14N_1_0" link="libxml2-c14n.html#XML_C14N_1_0"/>
-    <keyword type="enum" name="XML_C14N_1_1" link="libxml2-c14n.html#XML_C14N_1_1"/>
-    <keyword type="enum" name="XML_C14N_CREATE_CTXT" link="libxml2-xmlerror.html#XML_C14N_CREATE_CTXT"/>
-    <keyword type="enum" name="XML_C14N_CREATE_STACK" link="libxml2-xmlerror.html#XML_C14N_CREATE_STACK"/>
-    <keyword type="enum" name="XML_C14N_EXCLUSIVE_1_0" link="libxml2-c14n.html#XML_C14N_EXCLUSIVE_1_0"/>
-    <keyword type="enum" name="XML_C14N_INVALID_NODE" link="libxml2-xmlerror.html#XML_C14N_INVALID_NODE"/>
-    <keyword type="enum" name="XML_C14N_RELATIVE_NAMESPACE" link="libxml2-xmlerror.html#XML_C14N_RELATIVE_NAMESPACE"/>
-    <keyword type="enum" name="XML_C14N_REQUIRES_UTF8" link="libxml2-xmlerror.html#XML_C14N_REQUIRES_UTF8"/>
-    <keyword type="enum" name="XML_C14N_UNKNOW_NODE" link="libxml2-xmlerror.html#XML_C14N_UNKNOW_NODE"/>
-    <keyword type="enum" name="XML_CATALOG_ENTRY_BROKEN" link="libxml2-xmlerror.html#XML_CATALOG_ENTRY_BROKEN"/>
-    <keyword type="enum" name="XML_CATALOG_MISSING_ATTR" link="libxml2-xmlerror.html#XML_CATALOG_MISSING_ATTR"/>
-    <keyword type="enum" name="XML_CATALOG_NOT_CATALOG" link="libxml2-xmlerror.html#XML_CATALOG_NOT_CATALOG"/>
-    <keyword type="enum" name="XML_CATALOG_PREFER_VALUE" link="libxml2-xmlerror.html#XML_CATALOG_PREFER_VALUE"/>
-    <keyword type="enum" name="XML_CATALOG_RECURSION" link="libxml2-xmlerror.html#XML_CATALOG_RECURSION"/>
-    <keyword type="enum" name="XML_CATA_ALLOW_ALL" link="libxml2-catalog.html#XML_CATA_ALLOW_ALL"/>
-    <keyword type="enum" name="XML_CATA_ALLOW_DOCUMENT" link="libxml2-catalog.html#XML_CATA_ALLOW_DOCUMENT"/>
-    <keyword type="enum" name="XML_CATA_ALLOW_GLOBAL" link="libxml2-catalog.html#XML_CATA_ALLOW_GLOBAL"/>
-    <keyword type="enum" name="XML_CATA_ALLOW_NONE" link="libxml2-catalog.html#XML_CATA_ALLOW_NONE"/>
-    <keyword type="enum" name="XML_CATA_PREFER_NONE" link="libxml2-catalog.html#XML_CATA_PREFER_NONE"/>
-    <keyword type="enum" name="XML_CATA_PREFER_PUBLIC" link="libxml2-catalog.html#XML_CATA_PREFER_PUBLIC"/>
-    <keyword type="enum" name="XML_CATA_PREFER_SYSTEM" link="libxml2-catalog.html#XML_CATA_PREFER_SYSTEM"/>
-    <keyword type="enum" name="XML_CDATA_SECTION_NODE" link="libxml2-tree.html#XML_CDATA_SECTION_NODE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_2022_JP" link="libxml2-encoding.html#XML_CHAR_ENCODING_2022_JP"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_1" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_1"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_10" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_10"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_11" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_11"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_13" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_13"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_14" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_14"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_15" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_15"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_16" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_16"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_2" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_2"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_3" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_3"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_4" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_4"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_5" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_5"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_6" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_6"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_7" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_7"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_8" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_8"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_8859_9" link="libxml2-encoding.html#XML_CHAR_ENCODING_8859_9"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_ASCII" link="libxml2-encoding.html#XML_CHAR_ENCODING_ASCII"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_EBCDIC" link="libxml2-encoding.html#XML_CHAR_ENCODING_EBCDIC"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_ERROR" link="libxml2-encoding.html#XML_CHAR_ENCODING_ERROR"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_EUC_JP" link="libxml2-encoding.html#XML_CHAR_ENCODING_EUC_JP"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_HTML" link="libxml2-encoding.html#XML_CHAR_ENCODING_HTML"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_NONE" link="libxml2-encoding.html#XML_CHAR_ENCODING_NONE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_SHIFT_JIS" link="libxml2-encoding.html#XML_CHAR_ENCODING_SHIFT_JIS"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UCS2" link="libxml2-encoding.html#XML_CHAR_ENCODING_UCS2"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UCS4BE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UCS4BE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UCS4LE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UCS4LE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UCS4_2143" link="libxml2-encoding.html#XML_CHAR_ENCODING_UCS4_2143"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UCS4_3412" link="libxml2-encoding.html#XML_CHAR_ENCODING_UCS4_3412"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UTF16" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF16"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UTF16BE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF16BE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UTF16LE" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF16LE"/>
-    <keyword type="enum" name="XML_CHAR_ENCODING_UTF8" link="libxml2-encoding.html#XML_CHAR_ENCODING_UTF8"/>
-    <keyword type="enum" name="XML_CHECK_ENTITY_TYPE" link="libxml2-xmlerror.html#XML_CHECK_ENTITY_TYPE"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_ATTRIBUTE" link="libxml2-xmlerror.html#XML_CHECK_FOUND_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_CDATA" link="libxml2-xmlerror.html#XML_CHECK_FOUND_CDATA"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_COMMENT" link="libxml2-xmlerror.html#XML_CHECK_FOUND_COMMENT"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_DOCTYPE" link="libxml2-xmlerror.html#XML_CHECK_FOUND_DOCTYPE"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_ELEMENT" link="libxml2-xmlerror.html#XML_CHECK_FOUND_ELEMENT"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_ENTITY" link="libxml2-xmlerror.html#XML_CHECK_FOUND_ENTITY"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_ENTITYREF" link="libxml2-xmlerror.html#XML_CHECK_FOUND_ENTITYREF"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_FRAGMENT" link="libxml2-xmlerror.html#XML_CHECK_FOUND_FRAGMENT"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_NOTATION" link="libxml2-xmlerror.html#XML_CHECK_FOUND_NOTATION"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_PI" link="libxml2-xmlerror.html#XML_CHECK_FOUND_PI"/>
-    <keyword type="enum" name="XML_CHECK_FOUND_TEXT" link="libxml2-xmlerror.html#XML_CHECK_FOUND_TEXT"/>
-    <keyword type="enum" name="XML_CHECK_NAME_NOT_NULL" link="libxml2-xmlerror.html#XML_CHECK_NAME_NOT_NULL"/>
-    <keyword type="enum" name="XML_CHECK_NOT_ATTR" link="libxml2-xmlerror.html#XML_CHECK_NOT_ATTR"/>
-    <keyword type="enum" name="XML_CHECK_NOT_ATTR_DECL" link="libxml2-xmlerror.html#XML_CHECK_NOT_ATTR_DECL"/>
-    <keyword type="enum" name="XML_CHECK_NOT_DTD" link="libxml2-xmlerror.html#XML_CHECK_NOT_DTD"/>
-    <keyword type="enum" name="XML_CHECK_NOT_ELEM_DECL" link="libxml2-xmlerror.html#XML_CHECK_NOT_ELEM_DECL"/>
-    <keyword type="enum" name="XML_CHECK_NOT_ENTITY_DECL" link="libxml2-xmlerror.html#XML_CHECK_NOT_ENTITY_DECL"/>
-    <keyword type="enum" name="XML_CHECK_NOT_NCNAME" link="libxml2-xmlerror.html#XML_CHECK_NOT_NCNAME"/>
-    <keyword type="enum" name="XML_CHECK_NOT_NS_DECL" link="libxml2-xmlerror.html#XML_CHECK_NOT_NS_DECL"/>
-    <keyword type="enum" name="XML_CHECK_NOT_UTF8" link="libxml2-xmlerror.html#XML_CHECK_NOT_UTF8"/>
-    <keyword type="enum" name="XML_CHECK_NO_DICT" link="libxml2-xmlerror.html#XML_CHECK_NO_DICT"/>
-    <keyword type="enum" name="XML_CHECK_NO_DOC" link="libxml2-xmlerror.html#XML_CHECK_NO_DOC"/>
-    <keyword type="enum" name="XML_CHECK_NO_ELEM" link="libxml2-xmlerror.html#XML_CHECK_NO_ELEM"/>
-    <keyword type="enum" name="XML_CHECK_NO_HREF" link="libxml2-xmlerror.html#XML_CHECK_NO_HREF"/>
-    <keyword type="enum" name="XML_CHECK_NO_NAME" link="libxml2-xmlerror.html#XML_CHECK_NO_NAME"/>
-    <keyword type="enum" name="XML_CHECK_NO_NEXT" link="libxml2-xmlerror.html#XML_CHECK_NO_NEXT"/>
-    <keyword type="enum" name="XML_CHECK_NO_PARENT" link="libxml2-xmlerror.html#XML_CHECK_NO_PARENT"/>
-    <keyword type="enum" name="XML_CHECK_NO_PREV" link="libxml2-xmlerror.html#XML_CHECK_NO_PREV"/>
-    <keyword type="enum" name="XML_CHECK_NS_ANCESTOR" link="libxml2-xmlerror.html#XML_CHECK_NS_ANCESTOR"/>
-    <keyword type="enum" name="XML_CHECK_NS_SCOPE" link="libxml2-xmlerror.html#XML_CHECK_NS_SCOPE"/>
-    <keyword type="enum" name="XML_CHECK_OUTSIDE_DICT" link="libxml2-xmlerror.html#XML_CHECK_OUTSIDE_DICT"/>
-    <keyword type="enum" name="XML_CHECK_UNKNOWN_NODE" link="libxml2-xmlerror.html#XML_CHECK_UNKNOWN_NODE"/>
-    <keyword type="enum" name="XML_CHECK_WRONG_DOC" link="libxml2-xmlerror.html#XML_CHECK_WRONG_DOC"/>
-    <keyword type="enum" name="XML_CHECK_WRONG_NAME" link="libxml2-xmlerror.html#XML_CHECK_WRONG_NAME"/>
-    <keyword type="enum" name="XML_CHECK_WRONG_NEXT" link="libxml2-xmlerror.html#XML_CHECK_WRONG_NEXT"/>
-    <keyword type="enum" name="XML_CHECK_WRONG_PARENT" link="libxml2-xmlerror.html#XML_CHECK_WRONG_PARENT"/>
-    <keyword type="enum" name="XML_CHECK_WRONG_PREV" link="libxml2-xmlerror.html#XML_CHECK_WRONG_PREV"/>
-    <keyword type="enum" name="XML_COMMENT_NODE" link="libxml2-tree.html#XML_COMMENT_NODE"/>
-    <keyword type="enum" name="XML_DOCUMENT_FRAG_NODE" link="libxml2-tree.html#XML_DOCUMENT_FRAG_NODE"/>
-    <keyword type="enum" name="XML_DOCUMENT_NODE" link="libxml2-tree.html#XML_DOCUMENT_NODE"/>
-    <keyword type="enum" name="XML_DOCUMENT_TYPE_NODE" link="libxml2-tree.html#XML_DOCUMENT_TYPE_NODE"/>
-    <keyword type="enum" name="XML_DOC_DTDVALID" link="libxml2-tree.html#XML_DOC_DTDVALID"/>
-    <keyword type="enum" name="XML_DOC_HTML" link="libxml2-tree.html#XML_DOC_HTML"/>
-    <keyword type="enum" name="XML_DOC_INTERNAL" link="libxml2-tree.html#XML_DOC_INTERNAL"/>
-    <keyword type="enum" name="XML_DOC_NSVALID" link="libxml2-tree.html#XML_DOC_NSVALID"/>
-    <keyword type="enum" name="XML_DOC_OLD10" link="libxml2-tree.html#XML_DOC_OLD10"/>
-    <keyword type="enum" name="XML_DOC_USERBUILT" link="libxml2-tree.html#XML_DOC_USERBUILT"/>
-    <keyword type="enum" name="XML_DOC_WELLFORMED" link="libxml2-tree.html#XML_DOC_WELLFORMED"/>
-    <keyword type="enum" name="XML_DOC_XINCLUDE" link="libxml2-tree.html#XML_DOC_XINCLUDE"/>
-    <keyword type="enum" name="XML_DTD_ATTRIBUTE_DEFAULT" link="libxml2-xmlerror.html#XML_DTD_ATTRIBUTE_DEFAULT"/>
-    <keyword type="enum" name="XML_DTD_ATTRIBUTE_REDEFINED" link="libxml2-xmlerror.html#XML_DTD_ATTRIBUTE_REDEFINED"/>
-    <keyword type="enum" name="XML_DTD_ATTRIBUTE_VALUE" link="libxml2-xmlerror.html#XML_DTD_ATTRIBUTE_VALUE"/>
-    <keyword type="enum" name="XML_DTD_CONTENT_ERROR" link="libxml2-xmlerror.html#XML_DTD_CONTENT_ERROR"/>
-    <keyword type="enum" name="XML_DTD_CONTENT_MODEL" link="libxml2-xmlerror.html#XML_DTD_CONTENT_MODEL"/>
-    <keyword type="enum" name="XML_DTD_CONTENT_NOT_DETERMINIST" link="libxml2-xmlerror.html#XML_DTD_CONTENT_NOT_DETERMINIST"/>
-    <keyword type="enum" name="XML_DTD_DIFFERENT_PREFIX" link="libxml2-xmlerror.html#XML_DTD_DIFFERENT_PREFIX"/>
-    <keyword type="enum" name="XML_DTD_DUP_TOKEN" link="libxml2-xmlerror.html#XML_DTD_DUP_TOKEN"/>
-    <keyword type="enum" name="XML_DTD_ELEM_DEFAULT_NAMESPACE" link="libxml2-xmlerror.html#XML_DTD_ELEM_DEFAULT_NAMESPACE"/>
-    <keyword type="enum" name="XML_DTD_ELEM_NAMESPACE" link="libxml2-xmlerror.html#XML_DTD_ELEM_NAMESPACE"/>
-    <keyword type="enum" name="XML_DTD_ELEM_REDEFINED" link="libxml2-xmlerror.html#XML_DTD_ELEM_REDEFINED"/>
-    <keyword type="enum" name="XML_DTD_EMPTY_NOTATION" link="libxml2-xmlerror.html#XML_DTD_EMPTY_NOTATION"/>
-    <keyword type="enum" name="XML_DTD_ENTITY_TYPE" link="libxml2-xmlerror.html#XML_DTD_ENTITY_TYPE"/>
-    <keyword type="enum" name="XML_DTD_ID_FIXED" link="libxml2-xmlerror.html#XML_DTD_ID_FIXED"/>
-    <keyword type="enum" name="XML_DTD_ID_REDEFINED" link="libxml2-xmlerror.html#XML_DTD_ID_REDEFINED"/>
-    <keyword type="enum" name="XML_DTD_ID_SUBSET" link="libxml2-xmlerror.html#XML_DTD_ID_SUBSET"/>
-    <keyword type="enum" name="XML_DTD_INVALID_CHILD" link="libxml2-xmlerror.html#XML_DTD_INVALID_CHILD"/>
-    <keyword type="enum" name="XML_DTD_INVALID_DEFAULT" link="libxml2-xmlerror.html#XML_DTD_INVALID_DEFAULT"/>
-    <keyword type="enum" name="XML_DTD_LOAD_ERROR" link="libxml2-xmlerror.html#XML_DTD_LOAD_ERROR"/>
-    <keyword type="enum" name="XML_DTD_MISSING_ATTRIBUTE" link="libxml2-xmlerror.html#XML_DTD_MISSING_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_DTD_MIXED_CORRUPT" link="libxml2-xmlerror.html#XML_DTD_MIXED_CORRUPT"/>
-    <keyword type="enum" name="XML_DTD_MULTIPLE_ID" link="libxml2-xmlerror.html#XML_DTD_MULTIPLE_ID"/>
-    <keyword type="enum" name="XML_DTD_NODE" link="libxml2-tree.html#XML_DTD_NODE"/>
-    <keyword type="enum" name="XML_DTD_NOTATION_REDEFINED" link="libxml2-xmlerror.html#XML_DTD_NOTATION_REDEFINED"/>
-    <keyword type="enum" name="XML_DTD_NOTATION_VALUE" link="libxml2-xmlerror.html#XML_DTD_NOTATION_VALUE"/>
-    <keyword type="enum" name="XML_DTD_NOT_EMPTY" link="libxml2-xmlerror.html#XML_DTD_NOT_EMPTY"/>
-    <keyword type="enum" name="XML_DTD_NOT_PCDATA" link="libxml2-xmlerror.html#XML_DTD_NOT_PCDATA"/>
-    <keyword type="enum" name="XML_DTD_NOT_STANDALONE" link="libxml2-xmlerror.html#XML_DTD_NOT_STANDALONE"/>
-    <keyword type="enum" name="XML_DTD_NO_DOC" link="libxml2-xmlerror.html#XML_DTD_NO_DOC"/>
-    <keyword type="enum" name="XML_DTD_NO_DTD" link="libxml2-xmlerror.html#XML_DTD_NO_DTD"/>
-    <keyword type="enum" name="XML_DTD_NO_ELEM_NAME" link="libxml2-xmlerror.html#XML_DTD_NO_ELEM_NAME"/>
-    <keyword type="enum" name="XML_DTD_NO_PREFIX" link="libxml2-xmlerror.html#XML_DTD_NO_PREFIX"/>
-    <keyword type="enum" name="XML_DTD_NO_ROOT" link="libxml2-xmlerror.html#XML_DTD_NO_ROOT"/>
-    <keyword type="enum" name="XML_DTD_ROOT_NAME" link="libxml2-xmlerror.html#XML_DTD_ROOT_NAME"/>
-    <keyword type="enum" name="XML_DTD_STANDALONE_DEFAULTED" link="libxml2-xmlerror.html#XML_DTD_STANDALONE_DEFAULTED"/>
-    <keyword type="enum" name="XML_DTD_STANDALONE_WHITE_SPACE" link="libxml2-xmlerror.html#XML_DTD_STANDALONE_WHITE_SPACE"/>
-    <keyword type="enum" name="XML_DTD_UNKNOWN_ATTRIBUTE" link="libxml2-xmlerror.html#XML_DTD_UNKNOWN_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_DTD_UNKNOWN_ELEM" link="libxml2-xmlerror.html#XML_DTD_UNKNOWN_ELEM"/>
-    <keyword type="enum" name="XML_DTD_UNKNOWN_ENTITY" link="libxml2-xmlerror.html#XML_DTD_UNKNOWN_ENTITY"/>
-    <keyword type="enum" name="XML_DTD_UNKNOWN_ID" link="libxml2-xmlerror.html#XML_DTD_UNKNOWN_ID"/>
-    <keyword type="enum" name="XML_DTD_UNKNOWN_NOTATION" link="libxml2-xmlerror.html#XML_DTD_UNKNOWN_NOTATION"/>
-    <keyword type="enum" name="XML_DTD_XMLID_TYPE" link="libxml2-xmlerror.html#XML_DTD_XMLID_TYPE"/>
-    <keyword type="enum" name="XML_DTD_XMLID_VALUE" link="libxml2-xmlerror.html#XML_DTD_XMLID_VALUE"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_ELEMENT" link="libxml2-tree.html#XML_ELEMENT_CONTENT_ELEMENT"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_MULT" link="libxml2-tree.html#XML_ELEMENT_CONTENT_MULT"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_ONCE" link="libxml2-tree.html#XML_ELEMENT_CONTENT_ONCE"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_OPT" link="libxml2-tree.html#XML_ELEMENT_CONTENT_OPT"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_OR" link="libxml2-tree.html#XML_ELEMENT_CONTENT_OR"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_PCDATA" link="libxml2-tree.html#XML_ELEMENT_CONTENT_PCDATA"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_PLUS" link="libxml2-tree.html#XML_ELEMENT_CONTENT_PLUS"/>
-    <keyword type="enum" name="XML_ELEMENT_CONTENT_SEQ" link="libxml2-tree.html#XML_ELEMENT_CONTENT_SEQ"/>
-    <keyword type="enum" name="XML_ELEMENT_DECL" link="libxml2-tree.html#XML_ELEMENT_DECL"/>
-    <keyword type="enum" name="XML_ELEMENT_NODE" link="libxml2-tree.html#XML_ELEMENT_NODE"/>
-    <keyword type="enum" name="XML_ELEMENT_TYPE_ANY" link="libxml2-tree.html#XML_ELEMENT_TYPE_ANY"/>
-    <keyword type="enum" name="XML_ELEMENT_TYPE_ELEMENT" link="libxml2-tree.html#XML_ELEMENT_TYPE_ELEMENT"/>
-    <keyword type="enum" name="XML_ELEMENT_TYPE_EMPTY" link="libxml2-tree.html#XML_ELEMENT_TYPE_EMPTY"/>
-    <keyword type="enum" name="XML_ELEMENT_TYPE_MIXED" link="libxml2-tree.html#XML_ELEMENT_TYPE_MIXED"/>
-    <keyword type="enum" name="XML_ELEMENT_TYPE_UNDEFINED" link="libxml2-tree.html#XML_ELEMENT_TYPE_UNDEFINED"/>
-    <keyword type="enum" name="XML_ENC_ERR_INPUT" link="libxml2-encoding.html#XML_ENC_ERR_INPUT"/>
-    <keyword type="enum" name="XML_ENC_ERR_INTERNAL" link="libxml2-encoding.html#XML_ENC_ERR_INTERNAL"/>
-    <keyword type="enum" name="XML_ENC_ERR_MEMORY" link="libxml2-encoding.html#XML_ENC_ERR_MEMORY"/>
-    <keyword type="enum" name="XML_ENC_ERR_SPACE" link="libxml2-encoding.html#XML_ENC_ERR_SPACE"/>
-    <keyword type="enum" name="XML_ENC_ERR_SUCCESS" link="libxml2-encoding.html#XML_ENC_ERR_SUCCESS"/>
-    <keyword type="enum" name="XML_ENC_INPUT" link="libxml2-encoding.html#XML_ENC_INPUT"/>
-    <keyword type="enum" name="XML_ENC_OUTPUT" link="libxml2-encoding.html#XML_ENC_OUTPUT"/>
-    <keyword type="enum" name="XML_ENTITY_DECL" link="libxml2-tree.html#XML_ENTITY_DECL"/>
-    <keyword type="enum" name="XML_ENTITY_NODE" link="libxml2-tree.html#XML_ENTITY_NODE"/>
-    <keyword type="enum" name="XML_ENTITY_REF_NODE" link="libxml2-tree.html#XML_ENTITY_REF_NODE"/>
-    <keyword type="enum" name="XML_ERR_ARGUMENT" link="libxml2-xmlerror.html#XML_ERR_ARGUMENT"/>
-    <keyword type="enum" name="XML_ERR_ATTLIST_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_ATTLIST_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_ATTLIST_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_ATTLIST_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_ATTRIBUTE_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_ATTRIBUTE_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_ATTRIBUTE_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_ATTRIBUTE_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_ATTRIBUTE_REDEFINED" link="libxml2-xmlerror.html#XML_ERR_ATTRIBUTE_REDEFINED"/>
-    <keyword type="enum" name="XML_ERR_ATTRIBUTE_WITHOUT_VALUE" link="libxml2-xmlerror.html#XML_ERR_ATTRIBUTE_WITHOUT_VALUE"/>
-    <keyword type="enum" name="XML_ERR_CDATA_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_CDATA_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_CHARREF_AT_EOF" link="libxml2-xmlerror.html#XML_ERR_CHARREF_AT_EOF"/>
-    <keyword type="enum" name="XML_ERR_CHARREF_IN_DTD" link="libxml2-xmlerror.html#XML_ERR_CHARREF_IN_DTD"/>
-    <keyword type="enum" name="XML_ERR_CHARREF_IN_EPILOG" link="libxml2-xmlerror.html#XML_ERR_CHARREF_IN_EPILOG"/>
-    <keyword type="enum" name="XML_ERR_CHARREF_IN_PROLOG" link="libxml2-xmlerror.html#XML_ERR_CHARREF_IN_PROLOG"/>
-    <keyword type="enum" name="XML_ERR_COMMENT_ABRUPTLY_ENDED" link="libxml2-xmlerror.html#XML_ERR_COMMENT_ABRUPTLY_ENDED"/>
-    <keyword type="enum" name="XML_ERR_COMMENT_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_COMMENT_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_CONDSEC_INVALID" link="libxml2-xmlerror.html#XML_ERR_CONDSEC_INVALID"/>
-    <keyword type="enum" name="XML_ERR_CONDSEC_INVALID_KEYWORD" link="libxml2-xmlerror.html#XML_ERR_CONDSEC_INVALID_KEYWORD"/>
-    <keyword type="enum" name="XML_ERR_CONDSEC_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_CONDSEC_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_CONDSEC_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_CONDSEC_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_DOCTYPE_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_DOCTYPE_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_DOCUMENT_EMPTY" link="libxml2-xmlerror.html#XML_ERR_DOCUMENT_EMPTY"/>
-    <keyword type="enum" name="XML_ERR_DOCUMENT_END" link="libxml2-xmlerror.html#XML_ERR_DOCUMENT_END"/>
-    <keyword type="enum" name="XML_ERR_DOCUMENT_START" link="libxml2-xmlerror.html#XML_ERR_DOCUMENT_START"/>
-    <keyword type="enum" name="XML_ERR_ELEMCONTENT_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_ELEMCONTENT_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_ELEMCONTENT_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_ELEMCONTENT_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_ENCODING_NAME" link="libxml2-xmlerror.html#XML_ERR_ENCODING_NAME"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_AT_EOF" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_AT_EOF"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_IN_DTD" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_IN_DTD"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_IN_EPILOG" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_IN_EPILOG"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_IN_PROLOG" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_IN_PROLOG"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_NO_NAME" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_NO_NAME"/>
-    <keyword type="enum" name="XML_ERR_ENTITYREF_SEMICOL_MISSING" link="libxml2-xmlerror.html#XML_ERR_ENTITYREF_SEMICOL_MISSING"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_BOUNDARY" link="libxml2-xmlerror.html#XML_ERR_ENTITY_BOUNDARY"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_CHAR_ERROR" link="libxml2-xmlerror.html#XML_ERR_ENTITY_CHAR_ERROR"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_IS_EXTERNAL" link="libxml2-xmlerror.html#XML_ERR_ENTITY_IS_EXTERNAL"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_IS_PARAMETER" link="libxml2-xmlerror.html#XML_ERR_ENTITY_IS_PARAMETER"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_LOOP" link="libxml2-xmlerror.html#XML_ERR_ENTITY_LOOP"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_ENTITY_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_ENTITY_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_PE_INTERNAL" link="libxml2-xmlerror.html#XML_ERR_ENTITY_PE_INTERNAL"/>
-    <keyword type="enum" name="XML_ERR_ENTITY_PROCESSING" link="libxml2-xmlerror.html#XML_ERR_ENTITY_PROCESSING"/>
-    <keyword type="enum" name="XML_ERR_EQUAL_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_EQUAL_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_ERROR" link="libxml2-xmlerror.html#XML_ERR_ERROR"/>
-    <keyword type="enum" name="XML_ERR_EXTRA_CONTENT" link="libxml2-xmlerror.html#XML_ERR_EXTRA_CONTENT"/>
-    <keyword type="enum" name="XML_ERR_EXT_ENTITY_STANDALONE" link="libxml2-xmlerror.html#XML_ERR_EXT_ENTITY_STANDALONE"/>
-    <keyword type="enum" name="XML_ERR_EXT_SUBSET_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_EXT_SUBSET_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_FATAL" link="libxml2-xmlerror.html#XML_ERR_FATAL"/>
-    <keyword type="enum" name="XML_ERR_GT_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_GT_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_HYPHEN_IN_COMMENT" link="libxml2-xmlerror.html#XML_ERR_HYPHEN_IN_COMMENT"/>
-    <keyword type="enum" name="XML_ERR_INTERNAL_ERROR" link="libxml2-xmlerror.html#XML_ERR_INTERNAL_ERROR"/>
-    <keyword type="enum" name="XML_ERR_INT_SUBSET_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_INT_SUBSET_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_INVALID_CHAR" link="libxml2-xmlerror.html#XML_ERR_INVALID_CHAR"/>
-    <keyword type="enum" name="XML_ERR_INVALID_CHARREF" link="libxml2-xmlerror.html#XML_ERR_INVALID_CHARREF"/>
-    <keyword type="enum" name="XML_ERR_INVALID_DEC_CHARREF" link="libxml2-xmlerror.html#XML_ERR_INVALID_DEC_CHARREF"/>
-    <keyword type="enum" name="XML_ERR_INVALID_ENCODING" link="libxml2-xmlerror.html#XML_ERR_INVALID_ENCODING"/>
-    <keyword type="enum" name="XML_ERR_INVALID_HEX_CHARREF" link="libxml2-xmlerror.html#XML_ERR_INVALID_HEX_CHARREF"/>
-    <keyword type="enum" name="XML_ERR_INVALID_URI" link="libxml2-xmlerror.html#XML_ERR_INVALID_URI"/>
-    <keyword type="enum" name="XML_ERR_LITERAL_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_LITERAL_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_LITERAL_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_LITERAL_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_LTSLASH_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_LTSLASH_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_LT_IN_ATTRIBUTE" link="libxml2-xmlerror.html#XML_ERR_LT_IN_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_ERR_LT_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_LT_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_MISPLACED_CDATA_END" link="libxml2-xmlerror.html#XML_ERR_MISPLACED_CDATA_END"/>
-    <keyword type="enum" name="XML_ERR_MISSING_ENCODING" link="libxml2-xmlerror.html#XML_ERR_MISSING_ENCODING"/>
-    <keyword type="enum" name="XML_ERR_MIXED_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_MIXED_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_MIXED_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_MIXED_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_NAME_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_NAME_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_NAME_TOO_LONG" link="libxml2-xmlerror.html#XML_ERR_NAME_TOO_LONG"/>
-    <keyword type="enum" name="XML_ERR_NMTOKEN_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_NMTOKEN_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_NONE" link="libxml2-xmlerror.html#XML_ERR_NONE"/>
-    <keyword type="enum" name="XML_ERR_NOTATION_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_NOTATION_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_NOTATION_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_NOTATION_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_NOTATION_PROCESSING" link="libxml2-xmlerror.html#XML_ERR_NOTATION_PROCESSING"/>
-    <keyword type="enum" name="XML_ERR_NOT_STANDALONE" link="libxml2-xmlerror.html#XML_ERR_NOT_STANDALONE"/>
-    <keyword type="enum" name="XML_ERR_NOT_WELL_BALANCED" link="libxml2-xmlerror.html#XML_ERR_NOT_WELL_BALANCED"/>
-    <keyword type="enum" name="XML_ERR_NO_DTD" link="libxml2-xmlerror.html#XML_ERR_NO_DTD"/>
-    <keyword type="enum" name="XML_ERR_NO_MEMORY" link="libxml2-xmlerror.html#XML_ERR_NO_MEMORY"/>
-    <keyword type="enum" name="XML_ERR_NS_DECL_ERROR" link="libxml2-xmlerror.html#XML_ERR_NS_DECL_ERROR"/>
-    <keyword type="enum" name="XML_ERR_OK" link="libxml2-xmlerror.html#XML_ERR_OK"/>
-    <keyword type="enum" name="XML_ERR_PCDATA_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_PCDATA_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_PEREF_AT_EOF" link="libxml2-xmlerror.html#XML_ERR_PEREF_AT_EOF"/>
-    <keyword type="enum" name="XML_ERR_PEREF_IN_EPILOG" link="libxml2-xmlerror.html#XML_ERR_PEREF_IN_EPILOG"/>
-    <keyword type="enum" name="XML_ERR_PEREF_IN_INT_SUBSET" link="libxml2-xmlerror.html#XML_ERR_PEREF_IN_INT_SUBSET"/>
-    <keyword type="enum" name="XML_ERR_PEREF_IN_PROLOG" link="libxml2-xmlerror.html#XML_ERR_PEREF_IN_PROLOG"/>
-    <keyword type="enum" name="XML_ERR_PEREF_NO_NAME" link="libxml2-xmlerror.html#XML_ERR_PEREF_NO_NAME"/>
-    <keyword type="enum" name="XML_ERR_PEREF_SEMICOL_MISSING" link="libxml2-xmlerror.html#XML_ERR_PEREF_SEMICOL_MISSING"/>
-    <keyword type="enum" name="XML_ERR_PI_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_PI_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_PI_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_PI_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_PUBID_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_PUBID_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_REDECL_PREDEF_ENTITY" link="libxml2-xmlerror.html#XML_ERR_REDECL_PREDEF_ENTITY"/>
-    <keyword type="enum" name="XML_ERR_RESERVED_XML_NAME" link="libxml2-xmlerror.html#XML_ERR_RESERVED_XML_NAME"/>
-    <keyword type="enum" name="XML_ERR_RESOURCE_LIMIT" link="libxml2-xmlerror.html#XML_ERR_RESOURCE_LIMIT"/>
-    <keyword type="enum" name="XML_ERR_SEPARATOR_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_SEPARATOR_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_SPACE_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_SPACE_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_STANDALONE_VALUE" link="libxml2-xmlerror.html#XML_ERR_STANDALONE_VALUE"/>
-    <keyword type="enum" name="XML_ERR_STRING_NOT_CLOSED" link="libxml2-xmlerror.html#XML_ERR_STRING_NOT_CLOSED"/>
-    <keyword type="enum" name="XML_ERR_STRING_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_STRING_NOT_STARTED"/>
-    <keyword type="enum" name="XML_ERR_SYSTEM" link="libxml2-xmlerror.html#XML_ERR_SYSTEM"/>
-    <keyword type="enum" name="XML_ERR_TAG_NAME_MISMATCH" link="libxml2-xmlerror.html#XML_ERR_TAG_NAME_MISMATCH"/>
-    <keyword type="enum" name="XML_ERR_TAG_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_TAG_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_UNDECLARED_ENTITY" link="libxml2-xmlerror.html#XML_ERR_UNDECLARED_ENTITY"/>
-    <keyword type="enum" name="XML_ERR_UNKNOWN_ENCODING" link="libxml2-xmlerror.html#XML_ERR_UNKNOWN_ENCODING"/>
-    <keyword type="enum" name="XML_ERR_UNKNOWN_VERSION" link="libxml2-xmlerror.html#XML_ERR_UNKNOWN_VERSION"/>
-    <keyword type="enum" name="XML_ERR_UNPARSED_ENTITY" link="libxml2-xmlerror.html#XML_ERR_UNPARSED_ENTITY"/>
-    <keyword type="enum" name="XML_ERR_UNSUPPORTED_ENCODING" link="libxml2-xmlerror.html#XML_ERR_UNSUPPORTED_ENCODING"/>
-    <keyword type="enum" name="XML_ERR_URI_FRAGMENT" link="libxml2-xmlerror.html#XML_ERR_URI_FRAGMENT"/>
-    <keyword type="enum" name="XML_ERR_URI_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_URI_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_USER_STOP" link="libxml2-xmlerror.html#XML_ERR_USER_STOP"/>
-    <keyword type="enum" name="XML_ERR_VALUE_REQUIRED" link="libxml2-xmlerror.html#XML_ERR_VALUE_REQUIRED"/>
-    <keyword type="enum" name="XML_ERR_VERSION_MISMATCH" link="libxml2-xmlerror.html#XML_ERR_VERSION_MISMATCH"/>
-    <keyword type="enum" name="XML_ERR_VERSION_MISSING" link="libxml2-xmlerror.html#XML_ERR_VERSION_MISSING"/>
-    <keyword type="enum" name="XML_ERR_WARNING" link="libxml2-xmlerror.html#XML_ERR_WARNING"/>
-    <keyword type="enum" name="XML_ERR_XMLDECL_NOT_FINISHED" link="libxml2-xmlerror.html#XML_ERR_XMLDECL_NOT_FINISHED"/>
-    <keyword type="enum" name="XML_ERR_XMLDECL_NOT_STARTED" link="libxml2-xmlerror.html#XML_ERR_XMLDECL_NOT_STARTED"/>
-    <keyword type="enum" name="XML_EXTERNAL_GENERAL_PARSED_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_GENERAL_PARSED_ENTITY"/>
-    <keyword type="enum" name="XML_EXTERNAL_GENERAL_UNPARSED_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_GENERAL_UNPARSED_ENTITY"/>
-    <keyword type="enum" name="XML_EXTERNAL_PARAMETER_ENTITY" link="libxml2-entities.html#XML_EXTERNAL_PARAMETER_ENTITY"/>
-    <keyword type="enum" name="XML_FROM_BUFFER" link="libxml2-xmlerror.html#XML_FROM_BUFFER"/>
-    <keyword type="enum" name="XML_FROM_C14N" link="libxml2-xmlerror.html#XML_FROM_C14N"/>
-    <keyword type="enum" name="XML_FROM_CATALOG" link="libxml2-xmlerror.html#XML_FROM_CATALOG"/>
-    <keyword type="enum" name="XML_FROM_CHECK" link="libxml2-xmlerror.html#XML_FROM_CHECK"/>
-    <keyword type="enum" name="XML_FROM_DATATYPE" link="libxml2-xmlerror.html#XML_FROM_DATATYPE"/>
-    <keyword type="enum" name="XML_FROM_DTD" link="libxml2-xmlerror.html#XML_FROM_DTD"/>
-    <keyword type="enum" name="XML_FROM_FTP" link="libxml2-xmlerror.html#XML_FROM_FTP"/>
-    <keyword type="enum" name="XML_FROM_HTML" link="libxml2-xmlerror.html#XML_FROM_HTML"/>
-    <keyword type="enum" name="XML_FROM_HTTP" link="libxml2-xmlerror.html#XML_FROM_HTTP"/>
-    <keyword type="enum" name="XML_FROM_I18N" link="libxml2-xmlerror.html#XML_FROM_I18N"/>
-    <keyword type="enum" name="XML_FROM_IO" link="libxml2-xmlerror.html#XML_FROM_IO"/>
-    <keyword type="enum" name="XML_FROM_MEMORY" link="libxml2-xmlerror.html#XML_FROM_MEMORY"/>
-    <keyword type="enum" name="XML_FROM_MODULE" link="libxml2-xmlerror.html#XML_FROM_MODULE"/>
-    <keyword type="enum" name="XML_FROM_NAMESPACE" link="libxml2-xmlerror.html#XML_FROM_NAMESPACE"/>
-    <keyword type="enum" name="XML_FROM_NONE" link="libxml2-xmlerror.html#XML_FROM_NONE"/>
-    <keyword type="enum" name="XML_FROM_OUTPUT" link="libxml2-xmlerror.html#XML_FROM_OUTPUT"/>
-    <keyword type="enum" name="XML_FROM_PARSER" link="libxml2-xmlerror.html#XML_FROM_PARSER"/>
-    <keyword type="enum" name="XML_FROM_REGEXP" link="libxml2-xmlerror.html#XML_FROM_REGEXP"/>
-    <keyword type="enum" name="XML_FROM_RELAXNGP" link="libxml2-xmlerror.html#XML_FROM_RELAXNGP"/>
-    <keyword type="enum" name="XML_FROM_RELAXNGV" link="libxml2-xmlerror.html#XML_FROM_RELAXNGV"/>
-    <keyword type="enum" name="XML_FROM_SCHEMASP" link="libxml2-xmlerror.html#XML_FROM_SCHEMASP"/>
-    <keyword type="enum" name="XML_FROM_SCHEMASV" link="libxml2-xmlerror.html#XML_FROM_SCHEMASV"/>
-    <keyword type="enum" name="XML_FROM_SCHEMATRONV" link="libxml2-xmlerror.html#XML_FROM_SCHEMATRONV"/>
-    <keyword type="enum" name="XML_FROM_TREE" link="libxml2-xmlerror.html#XML_FROM_TREE"/>
-    <keyword type="enum" name="XML_FROM_URI" link="libxml2-xmlerror.html#XML_FROM_URI"/>
-    <keyword type="enum" name="XML_FROM_VALID" link="libxml2-xmlerror.html#XML_FROM_VALID"/>
-    <keyword type="enum" name="XML_FROM_WRITER" link="libxml2-xmlerror.html#XML_FROM_WRITER"/>
-    <keyword type="enum" name="XML_FROM_XINCLUDE" link="libxml2-xmlerror.html#XML_FROM_XINCLUDE"/>
-    <keyword type="enum" name="XML_FROM_XPATH" link="libxml2-xmlerror.html#XML_FROM_XPATH"/>
-    <keyword type="enum" name="XML_FROM_XPOINTER" link="libxml2-xmlerror.html#XML_FROM_XPOINTER"/>
-    <keyword type="enum" name="XML_FROM_XSLT" link="libxml2-xmlerror.html#XML_FROM_XSLT"/>
-    <keyword type="enum" name="XML_FTP_ACCNT" link="libxml2-xmlerror.html#XML_FTP_ACCNT"/>
-    <keyword type="enum" name="XML_FTP_EPSV_ANSWER" link="libxml2-xmlerror.html#XML_FTP_EPSV_ANSWER"/>
-    <keyword type="enum" name="XML_FTP_PASV_ANSWER" link="libxml2-xmlerror.html#XML_FTP_PASV_ANSWER"/>
-    <keyword type="enum" name="XML_FTP_URL_SYNTAX" link="libxml2-xmlerror.html#XML_FTP_URL_SYNTAX"/>
-    <keyword type="enum" name="XML_HTML_DOCUMENT_NODE" link="libxml2-tree.html#XML_HTML_DOCUMENT_NODE"/>
-    <keyword type="enum" name="XML_HTML_INCORRECTLY_OPENED_COMMENT" link="libxml2-xmlerror.html#XML_HTML_INCORRECTLY_OPENED_COMMENT"/>
-    <keyword type="enum" name="XML_HTML_STRUCURE_ERROR" link="libxml2-xmlerror.html#XML_HTML_STRUCURE_ERROR"/>
-    <keyword type="enum" name="XML_HTML_UNKNOWN_TAG" link="libxml2-xmlerror.html#XML_HTML_UNKNOWN_TAG"/>
-    <keyword type="enum" name="XML_HTTP_UNKNOWN_HOST" link="libxml2-xmlerror.html#XML_HTTP_UNKNOWN_HOST"/>
-    <keyword type="enum" name="XML_HTTP_URL_SYNTAX" link="libxml2-xmlerror.html#XML_HTTP_URL_SYNTAX"/>
-    <keyword type="enum" name="XML_HTTP_USE_IP" link="libxml2-xmlerror.html#XML_HTTP_USE_IP"/>
-    <keyword type="enum" name="XML_I18N_CONV_FAILED" link="libxml2-xmlerror.html#XML_I18N_CONV_FAILED"/>
-    <keyword type="enum" name="XML_I18N_EXCESS_HANDLER" link="libxml2-xmlerror.html#XML_I18N_EXCESS_HANDLER"/>
-    <keyword type="enum" name="XML_I18N_NO_HANDLER" link="libxml2-xmlerror.html#XML_I18N_NO_HANDLER"/>
-    <keyword type="enum" name="XML_I18N_NO_NAME" link="libxml2-xmlerror.html#XML_I18N_NO_NAME"/>
-    <keyword type="enum" name="XML_I18N_NO_OUTPUT" link="libxml2-xmlerror.html#XML_I18N_NO_OUTPUT"/>
-    <keyword type="enum" name="XML_INPUT_BUF_STATIC" link="libxml2-parser.html#XML_INPUT_BUF_STATIC"/>
-    <keyword type="enum" name="XML_INPUT_BUF_ZERO_TERMINATED" link="libxml2-parser.html#XML_INPUT_BUF_ZERO_TERMINATED"/>
-    <keyword type="enum" name="XML_INPUT_NETWORK" link="libxml2-parser.html#XML_INPUT_NETWORK"/>
-    <keyword type="enum" name="XML_INPUT_UNZIP" link="libxml2-parser.html#XML_INPUT_UNZIP"/>
-    <keyword type="enum" name="XML_INTERNAL_GENERAL_ENTITY" link="libxml2-entities.html#XML_INTERNAL_GENERAL_ENTITY"/>
-    <keyword type="enum" name="XML_INTERNAL_PARAMETER_ENTITY" link="libxml2-entities.html#XML_INTERNAL_PARAMETER_ENTITY"/>
-    <keyword type="enum" name="XML_INTERNAL_PREDEFINED_ENTITY" link="libxml2-entities.html#XML_INTERNAL_PREDEFINED_ENTITY"/>
-    <keyword type="enum" name="XML_IO_BUFFER_FULL" link="libxml2-xmlerror.html#XML_IO_BUFFER_FULL"/>
-    <keyword type="enum" name="XML_IO_EACCES" link="libxml2-xmlerror.html#XML_IO_EACCES"/>
-    <keyword type="enum" name="XML_IO_EADDRINUSE" link="libxml2-xmlerror.html#XML_IO_EADDRINUSE"/>
-    <keyword type="enum" name="XML_IO_EAFNOSUPPORT" link="libxml2-xmlerror.html#XML_IO_EAFNOSUPPORT"/>
-    <keyword type="enum" name="XML_IO_EAGAIN" link="libxml2-xmlerror.html#XML_IO_EAGAIN"/>
-    <keyword type="enum" name="XML_IO_EALREADY" link="libxml2-xmlerror.html#XML_IO_EALREADY"/>
-    <keyword type="enum" name="XML_IO_EBADF" link="libxml2-xmlerror.html#XML_IO_EBADF"/>
-    <keyword type="enum" name="XML_IO_EBADMSG" link="libxml2-xmlerror.html#XML_IO_EBADMSG"/>
-    <keyword type="enum" name="XML_IO_EBUSY" link="libxml2-xmlerror.html#XML_IO_EBUSY"/>
-    <keyword type="enum" name="XML_IO_ECANCELED" link="libxml2-xmlerror.html#XML_IO_ECANCELED"/>
-    <keyword type="enum" name="XML_IO_ECHILD" link="libxml2-xmlerror.html#XML_IO_ECHILD"/>
-    <keyword type="enum" name="XML_IO_ECONNREFUSED" link="libxml2-xmlerror.html#XML_IO_ECONNREFUSED"/>
-    <keyword type="enum" name="XML_IO_EDEADLK" link="libxml2-xmlerror.html#XML_IO_EDEADLK"/>
-    <keyword type="enum" name="XML_IO_EDOM" link="libxml2-xmlerror.html#XML_IO_EDOM"/>
-    <keyword type="enum" name="XML_IO_EEXIST" link="libxml2-xmlerror.html#XML_IO_EEXIST"/>
-    <keyword type="enum" name="XML_IO_EFAULT" link="libxml2-xmlerror.html#XML_IO_EFAULT"/>
-    <keyword type="enum" name="XML_IO_EFBIG" link="libxml2-xmlerror.html#XML_IO_EFBIG"/>
-    <keyword type="enum" name="XML_IO_EINPROGRESS" link="libxml2-xmlerror.html#XML_IO_EINPROGRESS"/>
-    <keyword type="enum" name="XML_IO_EINTR" link="libxml2-xmlerror.html#XML_IO_EINTR"/>
-    <keyword type="enum" name="XML_IO_EINVAL" link="libxml2-xmlerror.html#XML_IO_EINVAL"/>
-    <keyword type="enum" name="XML_IO_EIO" link="libxml2-xmlerror.html#XML_IO_EIO"/>
-    <keyword type="enum" name="XML_IO_EISCONN" link="libxml2-xmlerror.html#XML_IO_EISCONN"/>
-    <keyword type="enum" name="XML_IO_EISDIR" link="libxml2-xmlerror.html#XML_IO_EISDIR"/>
-    <keyword type="enum" name="XML_IO_EMFILE" link="libxml2-xmlerror.html#XML_IO_EMFILE"/>
-    <keyword type="enum" name="XML_IO_EMLINK" link="libxml2-xmlerror.html#XML_IO_EMLINK"/>
-    <keyword type="enum" name="XML_IO_EMSGSIZE" link="libxml2-xmlerror.html#XML_IO_EMSGSIZE"/>
-    <keyword type="enum" name="XML_IO_ENAMETOOLONG" link="libxml2-xmlerror.html#XML_IO_ENAMETOOLONG"/>
-    <keyword type="enum" name="XML_IO_ENCODER" link="libxml2-xmlerror.html#XML_IO_ENCODER"/>
-    <keyword type="enum" name="XML_IO_ENETUNREACH" link="libxml2-xmlerror.html#XML_IO_ENETUNREACH"/>
-    <keyword type="enum" name="XML_IO_ENFILE" link="libxml2-xmlerror.html#XML_IO_ENFILE"/>
-    <keyword type="enum" name="XML_IO_ENODEV" link="libxml2-xmlerror.html#XML_IO_ENODEV"/>
-    <keyword type="enum" name="XML_IO_ENOENT" link="libxml2-xmlerror.html#XML_IO_ENOENT"/>
-    <keyword type="enum" name="XML_IO_ENOEXEC" link="libxml2-xmlerror.html#XML_IO_ENOEXEC"/>
-    <keyword type="enum" name="XML_IO_ENOLCK" link="libxml2-xmlerror.html#XML_IO_ENOLCK"/>
-    <keyword type="enum" name="XML_IO_ENOMEM" link="libxml2-xmlerror.html#XML_IO_ENOMEM"/>
-    <keyword type="enum" name="XML_IO_ENOSPC" link="libxml2-xmlerror.html#XML_IO_ENOSPC"/>
-    <keyword type="enum" name="XML_IO_ENOSYS" link="libxml2-xmlerror.html#XML_IO_ENOSYS"/>
-    <keyword type="enum" name="XML_IO_ENOTDIR" link="libxml2-xmlerror.html#XML_IO_ENOTDIR"/>
-    <keyword type="enum" name="XML_IO_ENOTEMPTY" link="libxml2-xmlerror.html#XML_IO_ENOTEMPTY"/>
-    <keyword type="enum" name="XML_IO_ENOTSOCK" link="libxml2-xmlerror.html#XML_IO_ENOTSOCK"/>
-    <keyword type="enum" name="XML_IO_ENOTSUP" link="libxml2-xmlerror.html#XML_IO_ENOTSUP"/>
-    <keyword type="enum" name="XML_IO_ENOTTY" link="libxml2-xmlerror.html#XML_IO_ENOTTY"/>
-    <keyword type="enum" name="XML_IO_ENXIO" link="libxml2-xmlerror.html#XML_IO_ENXIO"/>
-    <keyword type="enum" name="XML_IO_EPERM" link="libxml2-xmlerror.html#XML_IO_EPERM"/>
-    <keyword type="enum" name="XML_IO_EPIPE" link="libxml2-xmlerror.html#XML_IO_EPIPE"/>
-    <keyword type="enum" name="XML_IO_ERANGE" link="libxml2-xmlerror.html#XML_IO_ERANGE"/>
-    <keyword type="enum" name="XML_IO_EROFS" link="libxml2-xmlerror.html#XML_IO_EROFS"/>
-    <keyword type="enum" name="XML_IO_ESPIPE" link="libxml2-xmlerror.html#XML_IO_ESPIPE"/>
-    <keyword type="enum" name="XML_IO_ESRCH" link="libxml2-xmlerror.html#XML_IO_ESRCH"/>
-    <keyword type="enum" name="XML_IO_ETIMEDOUT" link="libxml2-xmlerror.html#XML_IO_ETIMEDOUT"/>
-    <keyword type="enum" name="XML_IO_EXDEV" link="libxml2-xmlerror.html#XML_IO_EXDEV"/>
-    <keyword type="enum" name="XML_IO_FLUSH" link="libxml2-xmlerror.html#XML_IO_FLUSH"/>
-    <keyword type="enum" name="XML_IO_LOAD_ERROR" link="libxml2-xmlerror.html#XML_IO_LOAD_ERROR"/>
-    <keyword type="enum" name="XML_IO_NETWORK_ATTEMPT" link="libxml2-xmlerror.html#XML_IO_NETWORK_ATTEMPT"/>
-    <keyword type="enum" name="XML_IO_NO_INPUT" link="libxml2-xmlerror.html#XML_IO_NO_INPUT"/>
-    <keyword type="enum" name="XML_IO_UNKNOWN" link="libxml2-xmlerror.html#XML_IO_UNKNOWN"/>
-    <keyword type="enum" name="XML_IO_UNSUPPORTED_PROTOCOL" link="libxml2-xmlerror.html#XML_IO_UNSUPPORTED_PROTOCOL"/>
-    <keyword type="enum" name="XML_IO_WRITE" link="libxml2-xmlerror.html#XML_IO_WRITE"/>
-    <keyword type="enum" name="XML_MODULE_CLOSE" link="libxml2-xmlerror.html#XML_MODULE_CLOSE"/>
-    <keyword type="enum" name="XML_MODULE_LAZY" link="libxml2-xmlmodule.html#XML_MODULE_LAZY"/>
-    <keyword type="enum" name="XML_MODULE_LOCAL" link="libxml2-xmlmodule.html#XML_MODULE_LOCAL"/>
-    <keyword type="enum" name="XML_MODULE_OPEN" link="libxml2-xmlerror.html#XML_MODULE_OPEN"/>
-    <keyword type="enum" name="XML_NAMESPACE_DECL" link="libxml2-tree.html#XML_NAMESPACE_DECL"/>
-    <keyword type="enum" name="XML_NOTATION_NODE" link="libxml2-tree.html#XML_NOTATION_NODE"/>
-    <keyword type="enum" name="XML_NS_ERR_ATTRIBUTE_REDEFINED" link="libxml2-xmlerror.html#XML_NS_ERR_ATTRIBUTE_REDEFINED"/>
-    <keyword type="enum" name="XML_NS_ERR_COLON" link="libxml2-xmlerror.html#XML_NS_ERR_COLON"/>
-    <keyword type="enum" name="XML_NS_ERR_EMPTY" link="libxml2-xmlerror.html#XML_NS_ERR_EMPTY"/>
-    <keyword type="enum" name="XML_NS_ERR_QNAME" link="libxml2-xmlerror.html#XML_NS_ERR_QNAME"/>
-    <keyword type="enum" name="XML_NS_ERR_UNDEFINED_NAMESPACE" link="libxml2-xmlerror.html#XML_NS_ERR_UNDEFINED_NAMESPACE"/>
-    <keyword type="enum" name="XML_NS_ERR_XML_NAMESPACE" link="libxml2-xmlerror.html#XML_NS_ERR_XML_NAMESPACE"/>
-    <keyword type="enum" name="XML_PARSER_ATTRIBUTE_VALUE" link="libxml2-parser.html#XML_PARSER_ATTRIBUTE_VALUE"/>
-    <keyword type="enum" name="XML_PARSER_CDATA_SECTION" link="libxml2-parser.html#XML_PARSER_CDATA_SECTION"/>
-    <keyword type="enum" name="XML_PARSER_COMMENT" link="libxml2-parser.html#XML_PARSER_COMMENT"/>
-    <keyword type="enum" name="XML_PARSER_CONTENT" link="libxml2-parser.html#XML_PARSER_CONTENT"/>
-    <keyword type="enum" name="XML_PARSER_DEFAULTATTRS" link="libxml2-xmlreader.html#XML_PARSER_DEFAULTATTRS"/>
-    <keyword type="enum" name="XML_PARSER_DTD" link="libxml2-parser.html#XML_PARSER_DTD"/>
-    <keyword type="enum" name="XML_PARSER_END_TAG" link="libxml2-parser.html#XML_PARSER_END_TAG"/>
-    <keyword type="enum" name="XML_PARSER_ENTITY_DECL" link="libxml2-parser.html#XML_PARSER_ENTITY_DECL"/>
-    <keyword type="enum" name="XML_PARSER_ENTITY_VALUE" link="libxml2-parser.html#XML_PARSER_ENTITY_VALUE"/>
-    <keyword type="enum" name="XML_PARSER_EOF" link="libxml2-parser.html#XML_PARSER_EOF"/>
-    <keyword type="enum" name="XML_PARSER_EPILOG" link="libxml2-parser.html#XML_PARSER_EPILOG"/>
-    <keyword type="enum" name="XML_PARSER_IGNORE" link="libxml2-parser.html#XML_PARSER_IGNORE"/>
-    <keyword type="enum" name="XML_PARSER_LOADDTD" link="libxml2-xmlreader.html#XML_PARSER_LOADDTD"/>
-    <keyword type="enum" name="XML_PARSER_MISC" link="libxml2-parser.html#XML_PARSER_MISC"/>
-    <keyword type="enum" name="XML_PARSER_PI" link="libxml2-parser.html#XML_PARSER_PI"/>
-    <keyword type="enum" name="XML_PARSER_PROLOG" link="libxml2-parser.html#XML_PARSER_PROLOG"/>
-    <keyword type="enum" name="XML_PARSER_PUBLIC_LITERAL" link="libxml2-parser.html#XML_PARSER_PUBLIC_LITERAL"/>
-    <keyword type="enum" name="XML_PARSER_SEVERITY_ERROR" link="libxml2-xmlreader.html#XML_PARSER_SEVERITY_ERROR"/>
-    <keyword type="enum" name="XML_PARSER_SEVERITY_VALIDITY_ERROR" link="libxml2-xmlreader.html#XML_PARSER_SEVERITY_VALIDITY_ERROR"/>
-    <keyword type="enum" name="XML_PARSER_SEVERITY_VALIDITY_WARNING" link="libxml2-xmlreader.html#XML_PARSER_SEVERITY_VALIDITY_WARNING"/>
-    <keyword type="enum" name="XML_PARSER_SEVERITY_WARNING" link="libxml2-xmlreader.html#XML_PARSER_SEVERITY_WARNING"/>
-    <keyword type="enum" name="XML_PARSER_START" link="libxml2-parser.html#XML_PARSER_START"/>
-    <keyword type="enum" name="XML_PARSER_START_TAG" link="libxml2-parser.html#XML_PARSER_START_TAG"/>
-    <keyword type="enum" name="XML_PARSER_SUBST_ENTITIES" link="libxml2-xmlreader.html#XML_PARSER_SUBST_ENTITIES"/>
-    <keyword type="enum" name="XML_PARSER_SYSTEM_LITERAL" link="libxml2-parser.html#XML_PARSER_SYSTEM_LITERAL"/>
-    <keyword type="enum" name="XML_PARSER_VALIDATE" link="libxml2-xmlreader.html#XML_PARSER_VALIDATE"/>
-    <keyword type="enum" name="XML_PARSER_XML_DECL" link="libxml2-parser.html#XML_PARSER_XML_DECL"/>
-    <keyword type="enum" name="XML_PARSE_BIG_LINES" link="libxml2-parser.html#XML_PARSE_BIG_LINES"/>
-    <keyword type="enum" name="XML_PARSE_CATALOG_PI" link="libxml2-parser.html#XML_PARSE_CATALOG_PI"/>
-    <keyword type="enum" name="XML_PARSE_COMPACT" link="libxml2-parser.html#XML_PARSE_COMPACT"/>
-    <keyword type="enum" name="XML_PARSE_DOM" link="libxml2-parser.html#XML_PARSE_DOM"/>
-    <keyword type="enum" name="XML_PARSE_DTDATTR" link="libxml2-parser.html#XML_PARSE_DTDATTR"/>
-    <keyword type="enum" name="XML_PARSE_DTDLOAD" link="libxml2-parser.html#XML_PARSE_DTDLOAD"/>
-    <keyword type="enum" name="XML_PARSE_DTDVALID" link="libxml2-parser.html#XML_PARSE_DTDVALID"/>
-    <keyword type="enum" name="XML_PARSE_HUGE" link="libxml2-parser.html#XML_PARSE_HUGE"/>
-    <keyword type="enum" name="XML_PARSE_IGNORE_ENC" link="libxml2-parser.html#XML_PARSE_IGNORE_ENC"/>
-    <keyword type="enum" name="XML_PARSE_NOBASEFIX" link="libxml2-parser.html#XML_PARSE_NOBASEFIX"/>
-    <keyword type="enum" name="XML_PARSE_NOBLANKS" link="libxml2-parser.html#XML_PARSE_NOBLANKS"/>
-    <keyword type="enum" name="XML_PARSE_NOCDATA" link="libxml2-parser.html#XML_PARSE_NOCDATA"/>
-    <keyword type="enum" name="XML_PARSE_NODICT" link="libxml2-parser.html#XML_PARSE_NODICT"/>
-    <keyword type="enum" name="XML_PARSE_NOENT" link="libxml2-parser.html#XML_PARSE_NOENT"/>
-    <keyword type="enum" name="XML_PARSE_NOERROR" link="libxml2-parser.html#XML_PARSE_NOERROR"/>
-    <keyword type="enum" name="XML_PARSE_NONET" link="libxml2-parser.html#XML_PARSE_NONET"/>
-    <keyword type="enum" name="XML_PARSE_NOWARNING" link="libxml2-parser.html#XML_PARSE_NOWARNING"/>
-    <keyword type="enum" name="XML_PARSE_NOXINCNODE" link="libxml2-parser.html#XML_PARSE_NOXINCNODE"/>
-    <keyword type="enum" name="XML_PARSE_NO_SYS_CATALOG" link="libxml2-parser.html#XML_PARSE_NO_SYS_CATALOG"/>
-    <keyword type="enum" name="XML_PARSE_NO_XXE" link="libxml2-parser.html#XML_PARSE_NO_XXE"/>
-    <keyword type="enum" name="XML_PARSE_NSCLEAN" link="libxml2-parser.html#XML_PARSE_NSCLEAN"/>
-    <keyword type="enum" name="XML_PARSE_OLD10" link="libxml2-parser.html#XML_PARSE_OLD10"/>
-    <keyword type="enum" name="XML_PARSE_OLDSAX" link="libxml2-parser.html#XML_PARSE_OLDSAX"/>
-    <keyword type="enum" name="XML_PARSE_PEDANTIC" link="libxml2-parser.html#XML_PARSE_PEDANTIC"/>
-    <keyword type="enum" name="XML_PARSE_PUSH_DOM" link="libxml2-parser.html#XML_PARSE_PUSH_DOM"/>
-    <keyword type="enum" name="XML_PARSE_PUSH_SAX" link="libxml2-parser.html#XML_PARSE_PUSH_SAX"/>
-    <keyword type="enum" name="XML_PARSE_READER" link="libxml2-parser.html#XML_PARSE_READER"/>
-    <keyword type="enum" name="XML_PARSE_RECOVER" link="libxml2-parser.html#XML_PARSE_RECOVER"/>
-    <keyword type="enum" name="XML_PARSE_SAX" link="libxml2-parser.html#XML_PARSE_SAX"/>
-    <keyword type="enum" name="XML_PARSE_SAX1" link="libxml2-parser.html#XML_PARSE_SAX1"/>
-    <keyword type="enum" name="XML_PARSE_UNKNOWN" link="libxml2-parser.html#XML_PARSE_UNKNOWN"/>
-    <keyword type="enum" name="XML_PARSE_UNZIP" link="libxml2-parser.html#XML_PARSE_UNZIP"/>
-    <keyword type="enum" name="XML_PARSE_XINCLUDE" link="libxml2-parser.html#XML_PARSE_XINCLUDE"/>
-    <keyword type="enum" name="XML_PATTERN_DEFAULT" link="libxml2-pattern.html#XML_PATTERN_DEFAULT"/>
-    <keyword type="enum" name="XML_PATTERN_XPATH" link="libxml2-pattern.html#XML_PATTERN_XPATH"/>
-    <keyword type="enum" name="XML_PATTERN_XSFIELD" link="libxml2-pattern.html#XML_PATTERN_XSFIELD"/>
-    <keyword type="enum" name="XML_PATTERN_XSSEL" link="libxml2-pattern.html#XML_PATTERN_XSSEL"/>
-    <keyword type="enum" name="XML_PI_NODE" link="libxml2-tree.html#XML_PI_NODE"/>
-    <keyword type="enum" name="XML_READER_TYPE_ATTRIBUTE" link="libxml2-xmlreader.html#XML_READER_TYPE_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_READER_TYPE_CDATA" link="libxml2-xmlreader.html#XML_READER_TYPE_CDATA"/>
-    <keyword type="enum" name="XML_READER_TYPE_COMMENT" link="libxml2-xmlreader.html#XML_READER_TYPE_COMMENT"/>
-    <keyword type="enum" name="XML_READER_TYPE_DOCUMENT" link="libxml2-xmlreader.html#XML_READER_TYPE_DOCUMENT"/>
-    <keyword type="enum" name="XML_READER_TYPE_DOCUMENT_FRAGMENT" link="libxml2-xmlreader.html#XML_READER_TYPE_DOCUMENT_FRAGMENT"/>
-    <keyword type="enum" name="XML_READER_TYPE_DOCUMENT_TYPE" link="libxml2-xmlreader.html#XML_READER_TYPE_DOCUMENT_TYPE"/>
-    <keyword type="enum" name="XML_READER_TYPE_ELEMENT" link="libxml2-xmlreader.html#XML_READER_TYPE_ELEMENT"/>
-    <keyword type="enum" name="XML_READER_TYPE_END_ELEMENT" link="libxml2-xmlreader.html#XML_READER_TYPE_END_ELEMENT"/>
-    <keyword type="enum" name="XML_READER_TYPE_END_ENTITY" link="libxml2-xmlreader.html#XML_READER_TYPE_END_ENTITY"/>
-    <keyword type="enum" name="XML_READER_TYPE_ENTITY" link="libxml2-xmlreader.html#XML_READER_TYPE_ENTITY"/>
-    <keyword type="enum" name="XML_READER_TYPE_ENTITY_REFERENCE" link="libxml2-xmlreader.html#XML_READER_TYPE_ENTITY_REFERENCE"/>
-    <keyword type="enum" name="XML_READER_TYPE_NONE" link="libxml2-xmlreader.html#XML_READER_TYPE_NONE"/>
-    <keyword type="enum" name="XML_READER_TYPE_NOTATION" link="libxml2-xmlreader.html#XML_READER_TYPE_NOTATION"/>
-    <keyword type="enum" name="XML_READER_TYPE_PROCESSING_INSTRUCTION" link="libxml2-xmlreader.html#XML_READER_TYPE_PROCESSING_INSTRUCTION"/>
-    <keyword type="enum" name="XML_READER_TYPE_SIGNIFICANT_WHITESPACE" link="libxml2-xmlreader.html#XML_READER_TYPE_SIGNIFICANT_WHITESPACE"/>
-    <keyword type="enum" name="XML_READER_TYPE_TEXT" link="libxml2-xmlreader.html#XML_READER_TYPE_TEXT"/>
-    <keyword type="enum" name="XML_READER_TYPE_WHITESPACE" link="libxml2-xmlreader.html#XML_READER_TYPE_WHITESPACE"/>
-    <keyword type="enum" name="XML_READER_TYPE_XML_DECLARATION" link="libxml2-xmlreader.html#XML_READER_TYPE_XML_DECLARATION"/>
-    <keyword type="enum" name="XML_REGEXP_COMPILE_ERROR" link="libxml2-xmlerror.html#XML_REGEXP_COMPILE_ERROR"/>
-    <keyword type="enum" name="XML_RELAXNGP_CRNG" link="libxml2-relaxng.html#XML_RELAXNGP_CRNG"/>
-    <keyword type="enum" name="XML_RELAXNGP_FREE_DOC" link="libxml2-relaxng.html#XML_RELAXNGP_FREE_DOC"/>
-    <keyword type="enum" name="XML_RELAXNGP_NONE" link="libxml2-relaxng.html#XML_RELAXNGP_NONE"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ATTREXTRANS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ATTREXTRANS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ATTRNAME" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ATTRNAME"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ATTRNONS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ATTRNONS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ATTRVALID" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ATTRVALID"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ATTRWRONGNS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ATTRWRONGNS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_CONTENTVALID" link="libxml2-relaxng.html#XML_RELAXNG_ERR_CONTENTVALID"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_DATAELEM" link="libxml2-relaxng.html#XML_RELAXNG_ERR_DATAELEM"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_DATATYPE" link="libxml2-relaxng.html#XML_RELAXNG_ERR_DATATYPE"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_DUPID" link="libxml2-relaxng.html#XML_RELAXNG_ERR_DUPID"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMEXTRANS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMEXTRANS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMNAME" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMNAME"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMNONS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMNONS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMNOTEMPTY" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMNOTEMPTY"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMWRONG" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMWRONG"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_ELEMWRONGNS" link="libxml2-relaxng.html#XML_RELAXNG_ERR_ELEMWRONGNS"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_EXTRACONTENT" link="libxml2-relaxng.html#XML_RELAXNG_ERR_EXTRACONTENT"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_EXTRADATA" link="libxml2-relaxng.html#XML_RELAXNG_ERR_EXTRADATA"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_INTEREXTRA" link="libxml2-relaxng.html#XML_RELAXNG_ERR_INTEREXTRA"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_INTERNAL" link="libxml2-relaxng.html#XML_RELAXNG_ERR_INTERNAL"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_INTERNODATA" link="libxml2-relaxng.html#XML_RELAXNG_ERR_INTERNODATA"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_INTERSEQ" link="libxml2-relaxng.html#XML_RELAXNG_ERR_INTERSEQ"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_INVALIDATTR" link="libxml2-relaxng.html#XML_RELAXNG_ERR_INVALIDATTR"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_LACKDATA" link="libxml2-relaxng.html#XML_RELAXNG_ERR_LACKDATA"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_LIST" link="libxml2-relaxng.html#XML_RELAXNG_ERR_LIST"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_LISTELEM" link="libxml2-relaxng.html#XML_RELAXNG_ERR_LISTELEM"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_LISTEMPTY" link="libxml2-relaxng.html#XML_RELAXNG_ERR_LISTEMPTY"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_LISTEXTRA" link="libxml2-relaxng.html#XML_RELAXNG_ERR_LISTEXTRA"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_MEMORY" link="libxml2-relaxng.html#XML_RELAXNG_ERR_MEMORY"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_NODEFINE" link="libxml2-relaxng.html#XML_RELAXNG_ERR_NODEFINE"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_NOELEM" link="libxml2-relaxng.html#XML_RELAXNG_ERR_NOELEM"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_NOGRAMMAR" link="libxml2-relaxng.html#XML_RELAXNG_ERR_NOGRAMMAR"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_NOSTATE" link="libxml2-relaxng.html#XML_RELAXNG_ERR_NOSTATE"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_NOTELEM" link="libxml2-relaxng.html#XML_RELAXNG_ERR_NOTELEM"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_TEXTWRONG" link="libxml2-relaxng.html#XML_RELAXNG_ERR_TEXTWRONG"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_TYPE" link="libxml2-relaxng.html#XML_RELAXNG_ERR_TYPE"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_TYPECMP" link="libxml2-relaxng.html#XML_RELAXNG_ERR_TYPECMP"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_TYPEVAL" link="libxml2-relaxng.html#XML_RELAXNG_ERR_TYPEVAL"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_VALELEM" link="libxml2-relaxng.html#XML_RELAXNG_ERR_VALELEM"/>
-    <keyword type="enum" name="XML_RELAXNG_ERR_VALUE" link="libxml2-relaxng.html#XML_RELAXNG_ERR_VALUE"/>
-    <keyword type="enum" name="XML_RELAXNG_OK" link="libxml2-relaxng.html#XML_RELAXNG_OK"/>
-    <keyword type="enum" name="XML_RESOURCE_DTD" link="libxml2-parser.html#XML_RESOURCE_DTD"/>
-    <keyword type="enum" name="XML_RESOURCE_GENERAL_ENTITY" link="libxml2-parser.html#XML_RESOURCE_GENERAL_ENTITY"/>
-    <keyword type="enum" name="XML_RESOURCE_MAIN_DOCUMENT" link="libxml2-parser.html#XML_RESOURCE_MAIN_DOCUMENT"/>
-    <keyword type="enum" name="XML_RESOURCE_PARAMETER_ENTITY" link="libxml2-parser.html#XML_RESOURCE_PARAMETER_ENTITY"/>
-    <keyword type="enum" name="XML_RESOURCE_UNKNOWN" link="libxml2-parser.html#XML_RESOURCE_UNKNOWN"/>
-    <keyword type="enum" name="XML_RESOURCE_XINCLUDE" link="libxml2-parser.html#XML_RESOURCE_XINCLUDE"/>
-    <keyword type="enum" name="XML_RESOURCE_XINCLUDE_TEXT" link="libxml2-parser.html#XML_RESOURCE_XINCLUDE_TEXT"/>
-    <keyword type="enum" name="XML_RNGP_ANYNAME_ATTR_ANCESTOR" link="libxml2-xmlerror.html#XML_RNGP_ANYNAME_ATTR_ANCESTOR"/>
-    <keyword type="enum" name="XML_RNGP_ATTRIBUTE_CHILDREN" link="libxml2-xmlerror.html#XML_RNGP_ATTRIBUTE_CHILDREN"/>
-    <keyword type="enum" name="XML_RNGP_ATTRIBUTE_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_ATTRIBUTE_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_ATTRIBUTE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_ATTRIBUTE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_ATTRIBUTE_NOOP" link="libxml2-xmlerror.html#XML_RNGP_ATTRIBUTE_NOOP"/>
-    <keyword type="enum" name="XML_RNGP_ATTR_CONFLICT" link="libxml2-xmlerror.html#XML_RNGP_ATTR_CONFLICT"/>
-    <keyword type="enum" name="XML_RNGP_CHOICE_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_CHOICE_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_CHOICE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_CHOICE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_CREATE_FAILURE" link="libxml2-xmlerror.html#XML_RNGP_CREATE_FAILURE"/>
-    <keyword type="enum" name="XML_RNGP_DATA_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_DATA_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_DEFINE_CREATE_FAILED" link="libxml2-xmlerror.html#XML_RNGP_DEFINE_CREATE_FAILED"/>
-    <keyword type="enum" name="XML_RNGP_DEFINE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_DEFINE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_DEFINE_MISSING" link="libxml2-xmlerror.html#XML_RNGP_DEFINE_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_DEFINE_NAME_MISSING" link="libxml2-xmlerror.html#XML_RNGP_DEFINE_NAME_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_DEF_CHOICE_AND_INTERLEAVE" link="libxml2-xmlerror.html#XML_RNGP_DEF_CHOICE_AND_INTERLEAVE"/>
-    <keyword type="enum" name="XML_RNGP_ELEMENT_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_ELEMENT_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_ELEMENT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_ELEMENT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_ELEMENT_NAME" link="libxml2-xmlerror.html#XML_RNGP_ELEMENT_NAME"/>
-    <keyword type="enum" name="XML_RNGP_ELEMENT_NO_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_ELEMENT_NO_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_ELEM_CONTENT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_ELEM_CONTENT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_ELEM_CONTENT_ERROR" link="libxml2-xmlerror.html#XML_RNGP_ELEM_CONTENT_ERROR"/>
-    <keyword type="enum" name="XML_RNGP_ELEM_TEXT_CONFLICT" link="libxml2-xmlerror.html#XML_RNGP_ELEM_TEXT_CONFLICT"/>
-    <keyword type="enum" name="XML_RNGP_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_EMPTY_CONSTRUCT" link="libxml2-xmlerror.html#XML_RNGP_EMPTY_CONSTRUCT"/>
-    <keyword type="enum" name="XML_RNGP_EMPTY_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_EMPTY_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_EMPTY_NOT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_EMPTY_NOT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_ERROR_TYPE_LIB" link="libxml2-xmlerror.html#XML_RNGP_ERROR_TYPE_LIB"/>
-    <keyword type="enum" name="XML_RNGP_EXCEPT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_EXCEPT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_EXCEPT_MISSING" link="libxml2-xmlerror.html#XML_RNGP_EXCEPT_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_EXCEPT_MULTIPLE" link="libxml2-xmlerror.html#XML_RNGP_EXCEPT_MULTIPLE"/>
-    <keyword type="enum" name="XML_RNGP_EXCEPT_NO_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_EXCEPT_NO_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_EXTERNALREF_EMTPY" link="libxml2-xmlerror.html#XML_RNGP_EXTERNALREF_EMTPY"/>
-    <keyword type="enum" name="XML_RNGP_EXTERNALREF_RECURSE" link="libxml2-xmlerror.html#XML_RNGP_EXTERNALREF_RECURSE"/>
-    <keyword type="enum" name="XML_RNGP_EXTERNAL_REF_FAILURE" link="libxml2-xmlerror.html#XML_RNGP_EXTERNAL_REF_FAILURE"/>
-    <keyword type="enum" name="XML_RNGP_FORBIDDEN_ATTRIBUTE" link="libxml2-xmlerror.html#XML_RNGP_FORBIDDEN_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_RNGP_FOREIGN_ELEMENT" link="libxml2-xmlerror.html#XML_RNGP_FOREIGN_ELEMENT"/>
-    <keyword type="enum" name="XML_RNGP_GRAMMAR_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_GRAMMAR_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_GRAMMAR_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_GRAMMAR_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_GRAMMAR_MISSING" link="libxml2-xmlerror.html#XML_RNGP_GRAMMAR_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_GRAMMAR_NO_START" link="libxml2-xmlerror.html#XML_RNGP_GRAMMAR_NO_START"/>
-    <keyword type="enum" name="XML_RNGP_GROUP_ATTR_CONFLICT" link="libxml2-xmlerror.html#XML_RNGP_GROUP_ATTR_CONFLICT"/>
-    <keyword type="enum" name="XML_RNGP_HREF_ERROR" link="libxml2-xmlerror.html#XML_RNGP_HREF_ERROR"/>
-    <keyword type="enum" name="XML_RNGP_INCLUDE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_INCLUDE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_INCLUDE_FAILURE" link="libxml2-xmlerror.html#XML_RNGP_INCLUDE_FAILURE"/>
-    <keyword type="enum" name="XML_RNGP_INCLUDE_RECURSE" link="libxml2-xmlerror.html#XML_RNGP_INCLUDE_RECURSE"/>
-    <keyword type="enum" name="XML_RNGP_INTERLEAVE_ADD" link="libxml2-xmlerror.html#XML_RNGP_INTERLEAVE_ADD"/>
-    <keyword type="enum" name="XML_RNGP_INTERLEAVE_CREATE_FAILED" link="libxml2-xmlerror.html#XML_RNGP_INTERLEAVE_CREATE_FAILED"/>
-    <keyword type="enum" name="XML_RNGP_INTERLEAVE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_INTERLEAVE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_INTERLEAVE_NO_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_INTERLEAVE_NO_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_INVALID_DEFINE_NAME" link="libxml2-xmlerror.html#XML_RNGP_INVALID_DEFINE_NAME"/>
-    <keyword type="enum" name="XML_RNGP_INVALID_URI" link="libxml2-xmlerror.html#XML_RNGP_INVALID_URI"/>
-    <keyword type="enum" name="XML_RNGP_INVALID_VALUE" link="libxml2-xmlerror.html#XML_RNGP_INVALID_VALUE"/>
-    <keyword type="enum" name="XML_RNGP_MISSING_HREF" link="libxml2-xmlerror.html#XML_RNGP_MISSING_HREF"/>
-    <keyword type="enum" name="XML_RNGP_NAME_MISSING" link="libxml2-xmlerror.html#XML_RNGP_NAME_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_NEED_COMBINE" link="libxml2-xmlerror.html#XML_RNGP_NEED_COMBINE"/>
-    <keyword type="enum" name="XML_RNGP_NOTALLOWED_NOT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_NOTALLOWED_NOT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_NSNAME_ATTR_ANCESTOR" link="libxml2-xmlerror.html#XML_RNGP_NSNAME_ATTR_ANCESTOR"/>
-    <keyword type="enum" name="XML_RNGP_NSNAME_NO_NS" link="libxml2-xmlerror.html#XML_RNGP_NSNAME_NO_NS"/>
-    <keyword type="enum" name="XML_RNGP_PARAM_FORBIDDEN" link="libxml2-xmlerror.html#XML_RNGP_PARAM_FORBIDDEN"/>
-    <keyword type="enum" name="XML_RNGP_PARAM_NAME_MISSING" link="libxml2-xmlerror.html#XML_RNGP_PARAM_NAME_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_PARENTREF_CREATE_FAILED" link="libxml2-xmlerror.html#XML_RNGP_PARENTREF_CREATE_FAILED"/>
-    <keyword type="enum" name="XML_RNGP_PARENTREF_NAME_INVALID" link="libxml2-xmlerror.html#XML_RNGP_PARENTREF_NAME_INVALID"/>
-    <keyword type="enum" name="XML_RNGP_PARENTREF_NOT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_PARENTREF_NOT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_PARENTREF_NO_NAME" link="libxml2-xmlerror.html#XML_RNGP_PARENTREF_NO_NAME"/>
-    <keyword type="enum" name="XML_RNGP_PARENTREF_NO_PARENT" link="libxml2-xmlerror.html#XML_RNGP_PARENTREF_NO_PARENT"/>
-    <keyword type="enum" name="XML_RNGP_PARSE_ERROR" link="libxml2-xmlerror.html#XML_RNGP_PARSE_ERROR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME" link="libxml2-xmlerror.html#XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME"/>
-    <keyword type="enum" name="XML_RNGP_PAT_ATTR_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_ATTR_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_ATTR_ELEM" link="libxml2-xmlerror.html#XML_RNGP_PAT_ATTR_ELEM"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_ELEM" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_ELEM"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_GROUP" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_GROUP"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_LIST" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_LIST"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_ONEMORE" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_ONEMORE"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_REF" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_REF"/>
-    <keyword type="enum" name="XML_RNGP_PAT_DATA_EXCEPT_TEXT" link="libxml2-xmlerror.html#XML_RNGP_PAT_DATA_EXCEPT_TEXT"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_ELEM" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_ELEM"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_INTERLEAVE" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_INTERLEAVE"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_LIST" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_LIST"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_REF" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_REF"/>
-    <keyword type="enum" name="XML_RNGP_PAT_LIST_TEXT" link="libxml2-xmlerror.html#XML_RNGP_PAT_LIST_TEXT"/>
-    <keyword type="enum" name="XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME" link="libxml2-xmlerror.html#XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME"/>
-    <keyword type="enum" name="XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME" link="libxml2-xmlerror.html#XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME"/>
-    <keyword type="enum" name="XML_RNGP_PAT_ONEMORE_GROUP_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_ONEMORE_GROUP_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_ATTR" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_ATTR"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_DATA" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_DATA"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_GROUP" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_GROUP"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_INTERLEAVE" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_INTERLEAVE"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_LIST" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_LIST"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_ONEMORE" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_ONEMORE"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_TEXT" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_TEXT"/>
-    <keyword type="enum" name="XML_RNGP_PAT_START_VALUE" link="libxml2-xmlerror.html#XML_RNGP_PAT_START_VALUE"/>
-    <keyword type="enum" name="XML_RNGP_PREFIX_UNDEFINED" link="libxml2-xmlerror.html#XML_RNGP_PREFIX_UNDEFINED"/>
-    <keyword type="enum" name="XML_RNGP_REF_CREATE_FAILED" link="libxml2-xmlerror.html#XML_RNGP_REF_CREATE_FAILED"/>
-    <keyword type="enum" name="XML_RNGP_REF_CYCLE" link="libxml2-xmlerror.html#XML_RNGP_REF_CYCLE"/>
-    <keyword type="enum" name="XML_RNGP_REF_NAME_INVALID" link="libxml2-xmlerror.html#XML_RNGP_REF_NAME_INVALID"/>
-    <keyword type="enum" name="XML_RNGP_REF_NOT_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_REF_NOT_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_REF_NO_DEF" link="libxml2-xmlerror.html#XML_RNGP_REF_NO_DEF"/>
-    <keyword type="enum" name="XML_RNGP_REF_NO_NAME" link="libxml2-xmlerror.html#XML_RNGP_REF_NO_NAME"/>
-    <keyword type="enum" name="XML_RNGP_START_CHOICE_AND_INTERLEAVE" link="libxml2-xmlerror.html#XML_RNGP_START_CHOICE_AND_INTERLEAVE"/>
-    <keyword type="enum" name="XML_RNGP_START_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_START_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_START_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_START_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_START_MISSING" link="libxml2-xmlerror.html#XML_RNGP_START_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_TEXT_EXPECTED" link="libxml2-xmlerror.html#XML_RNGP_TEXT_EXPECTED"/>
-    <keyword type="enum" name="XML_RNGP_TEXT_HAS_CHILD" link="libxml2-xmlerror.html#XML_RNGP_TEXT_HAS_CHILD"/>
-    <keyword type="enum" name="XML_RNGP_TYPE_MISSING" link="libxml2-xmlerror.html#XML_RNGP_TYPE_MISSING"/>
-    <keyword type="enum" name="XML_RNGP_TYPE_NOT_FOUND" link="libxml2-xmlerror.html#XML_RNGP_TYPE_NOT_FOUND"/>
-    <keyword type="enum" name="XML_RNGP_TYPE_VALUE" link="libxml2-xmlerror.html#XML_RNGP_TYPE_VALUE"/>
-    <keyword type="enum" name="XML_RNGP_UNKNOWN_ATTRIBUTE" link="libxml2-xmlerror.html#XML_RNGP_UNKNOWN_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_RNGP_UNKNOWN_COMBINE" link="libxml2-xmlerror.html#XML_RNGP_UNKNOWN_COMBINE"/>
-    <keyword type="enum" name="XML_RNGP_UNKNOWN_CONSTRUCT" link="libxml2-xmlerror.html#XML_RNGP_UNKNOWN_CONSTRUCT"/>
-    <keyword type="enum" name="XML_RNGP_UNKNOWN_TYPE_LIB" link="libxml2-xmlerror.html#XML_RNGP_UNKNOWN_TYPE_LIB"/>
-    <keyword type="enum" name="XML_RNGP_URI_FRAGMENT" link="libxml2-xmlerror.html#XML_RNGP_URI_FRAGMENT"/>
-    <keyword type="enum" name="XML_RNGP_URI_NOT_ABSOLUTE" link="libxml2-xmlerror.html#XML_RNGP_URI_NOT_ABSOLUTE"/>
-    <keyword type="enum" name="XML_RNGP_VALUE_EMPTY" link="libxml2-xmlerror.html#XML_RNGP_VALUE_EMPTY"/>
-    <keyword type="enum" name="XML_RNGP_VALUE_NO_CONTENT" link="libxml2-xmlerror.html#XML_RNGP_VALUE_NO_CONTENT"/>
-    <keyword type="enum" name="XML_RNGP_XMLNS_NAME" link="libxml2-xmlerror.html#XML_RNGP_XMLNS_NAME"/>
-    <keyword type="enum" name="XML_RNGP_XML_NS" link="libxml2-xmlerror.html#XML_RNGP_XML_NS"/>
-    <keyword type="enum" name="XML_SAVE_AS_HTML" link="libxml2-xmlsave.html#XML_SAVE_AS_HTML"/>
-    <keyword type="enum" name="XML_SAVE_AS_XML" link="libxml2-xmlsave.html#XML_SAVE_AS_XML"/>
-    <keyword type="enum" name="XML_SAVE_CHAR_INVALID" link="libxml2-xmlerror.html#XML_SAVE_CHAR_INVALID"/>
-    <keyword type="enum" name="XML_SAVE_EMPTY" link="libxml2-xmlsave.html#XML_SAVE_EMPTY"/>
-    <keyword type="enum" name="XML_SAVE_FORMAT" link="libxml2-xmlsave.html#XML_SAVE_FORMAT"/>
-    <keyword type="enum" name="XML_SAVE_INDENT" link="libxml2-xmlsave.html#XML_SAVE_INDENT"/>
-    <keyword type="enum" name="XML_SAVE_NOT_UTF8" link="libxml2-xmlerror.html#XML_SAVE_NOT_UTF8"/>
-    <keyword type="enum" name="XML_SAVE_NO_DECL" link="libxml2-xmlsave.html#XML_SAVE_NO_DECL"/>
-    <keyword type="enum" name="XML_SAVE_NO_DOCTYPE" link="libxml2-xmlerror.html#XML_SAVE_NO_DOCTYPE"/>
-    <keyword type="enum" name="XML_SAVE_NO_EMPTY" link="libxml2-xmlsave.html#XML_SAVE_NO_EMPTY"/>
-    <keyword type="enum" name="XML_SAVE_NO_INDENT" link="libxml2-xmlsave.html#XML_SAVE_NO_INDENT"/>
-    <keyword type="enum" name="XML_SAVE_NO_XHTML" link="libxml2-xmlsave.html#XML_SAVE_NO_XHTML"/>
-    <keyword type="enum" name="XML_SAVE_UNKNOWN_ENCODING" link="libxml2-xmlerror.html#XML_SAVE_UNKNOWN_ENCODING"/>
-    <keyword type="enum" name="XML_SAVE_WSNONSIG" link="libxml2-xmlsave.html#XML_SAVE_WSNONSIG"/>
-    <keyword type="enum" name="XML_SAVE_XHTML" link="libxml2-xmlsave.html#XML_SAVE_XHTML"/>
-    <keyword type="enum" name="XML_SCHEMAP_AG_PROPS_CORRECT" link="libxml2-xmlerror.html#XML_SCHEMAP_AG_PROPS_CORRECT"/>
-    <keyword type="enum" name="XML_SCHEMAP_ATTRFORMDEFAULT_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAP_ATTRFORMDEFAULT_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAP_ATTRGRP_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_ATTRGRP_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_ATTR_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_ATTR_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_AU_PROPS_CORRECT" link="libxml2-xmlerror.html#XML_SCHEMAP_AU_PROPS_CORRECT"/>
-    <keyword type="enum" name="XML_SCHEMAP_AU_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_AU_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_A_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_A_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_A_PROPS_CORRECT_3" link="libxml2-xmlerror.html#XML_SCHEMAP_A_PROPS_CORRECT_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ALL_LIMITED" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ALL_LIMITED"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_CT_EXTENDS_1_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_CT_EXTENDS_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_CT_EXTENDS_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_CT_EXTENDS_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_CT_EXTENDS_1_3" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_CT_EXTENDS_1_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_DERIVED_OK_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_DERIVED_OK_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_DERIVED_OK_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_DERIVED_OK_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_1_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_VALID_DEFAULT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_VALID_DEFAULT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_VALID_DEFAULT_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_VALID_DEFAULT_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_CT_PROPS_CORRECT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_CT_PROPS_CORRECT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_CT_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_CT_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_CT_PROPS_CORRECT_3" link="libxml2-xmlerror.html#XML_SCHEMAP_CT_PROPS_CORRECT_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_CT_PROPS_CORRECT_4" link="libxml2-xmlerror.html#XML_SCHEMAP_CT_PROPS_CORRECT_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_CT_PROPS_CORRECT_5" link="libxml2-xmlerror.html#XML_SCHEMAP_CT_PROPS_CORRECT_5"/>
-    <keyword type="enum" name="XML_SCHEMAP_CVC_SIMPLE_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_CVC_SIMPLE_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_C_PROPS_CORRECT" link="libxml2-xmlerror.html#XML_SCHEMAP_C_PROPS_CORRECT"/>
-    <keyword type="enum" name="XML_SCHEMAP_DEF_AND_PREFIX" link="libxml2-xmlerror.html#XML_SCHEMAP_DEF_AND_PREFIX"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3" link="libxml2-xmlerror.html#XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_ELEMFORMDEFAULT_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAP_ELEMFORMDEFAULT_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAP_ELEM_DEFAULT_FIXED" link="libxml2-xmlerror.html#XML_SCHEMAP_ELEM_DEFAULT_FIXED"/>
-    <keyword type="enum" name="XML_SCHEMAP_ELEM_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_ELEM_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_EXTENSION_NO_BASE" link="libxml2-xmlerror.html#XML_SCHEMAP_EXTENSION_NO_BASE"/>
-    <keyword type="enum" name="XML_SCHEMAP_E_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_E_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_E_PROPS_CORRECT_3" link="libxml2-xmlerror.html#XML_SCHEMAP_E_PROPS_CORRECT_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_E_PROPS_CORRECT_4" link="libxml2-xmlerror.html#XML_SCHEMAP_E_PROPS_CORRECT_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_E_PROPS_CORRECT_5" link="libxml2-xmlerror.html#XML_SCHEMAP_E_PROPS_CORRECT_5"/>
-    <keyword type="enum" name="XML_SCHEMAP_E_PROPS_CORRECT_6" link="libxml2-xmlerror.html#XML_SCHEMAP_E_PROPS_CORRECT_6"/>
-    <keyword type="enum" name="XML_SCHEMAP_FACET_NO_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAP_FACET_NO_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAP_FAILED_BUILD_IMPORT" link="libxml2-xmlerror.html#XML_SCHEMAP_FAILED_BUILD_IMPORT"/>
-    <keyword type="enum" name="XML_SCHEMAP_FAILED_LOAD" link="libxml2-xmlerror.html#XML_SCHEMAP_FAILED_LOAD"/>
-    <keyword type="enum" name="XML_SCHEMAP_FAILED_PARSE" link="libxml2-xmlerror.html#XML_SCHEMAP_FAILED_PARSE"/>
-    <keyword type="enum" name="XML_SCHEMAP_GROUP_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_GROUP_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI" link="libxml2-xmlerror.html#XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI"/>
-    <keyword type="enum" name="XML_SCHEMAP_IMPORT_REDEFINE_NSNAME" link="libxml2-xmlerror.html#XML_SCHEMAP_IMPORT_REDEFINE_NSNAME"/>
-    <keyword type="enum" name="XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI" link="libxml2-xmlerror.html#XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI"/>
-    <keyword type="enum" name="XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI" link="libxml2-xmlerror.html#XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI"/>
-    <keyword type="enum" name="XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI" link="libxml2-xmlerror.html#XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI"/>
-    <keyword type="enum" name="XML_SCHEMAP_INTERNAL" link="libxml2-xmlerror.html#XML_SCHEMAP_INTERNAL"/>
-    <keyword type="enum" name="XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE" link="libxml2-xmlerror.html#XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_ATTR_COMBINATION" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_ATTR_COMBINATION"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_ATTR_NAME" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_ATTR_NAME"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_ATTR_USE" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_ATTR_USE"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_BOOLEAN" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_BOOLEAN"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_ENUM" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_ENUM"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_FACET" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_FACET"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_FACET_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_FACET_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_MAXOCCURS" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_MAXOCCURS"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_MINOCCURS" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_MINOCCURS"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_REF_AND_SUBTYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_REF_AND_SUBTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_INVALID_WHITE_SPACE" link="libxml2-xmlerror.html#XML_SCHEMAP_INVALID_WHITE_SPACE"/>
-    <keyword type="enum" name="XML_SCHEMAP_MG_PROPS_CORRECT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_MG_PROPS_CORRECT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_MG_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_MG_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOATTR_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_NOATTR_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOROOT" link="libxml2-xmlerror.html#XML_SCHEMAP_NOROOT"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOTATION_NO_NAME" link="libxml2-xmlerror.html#XML_SCHEMAP_NOTATION_NO_NAME"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOTHING_TO_PARSE" link="libxml2-xmlerror.html#XML_SCHEMAP_NOTHING_TO_PARSE"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOTYPE_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_NOTYPE_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOT_DETERMINISTIC" link="libxml2-xmlerror.html#XML_SCHEMAP_NOT_DETERMINISTIC"/>
-    <keyword type="enum" name="XML_SCHEMAP_NOT_SCHEMA" link="libxml2-xmlerror.html#XML_SCHEMAP_NOT_SCHEMA"/>
-    <keyword type="enum" name="XML_SCHEMAP_NO_XMLNS" link="libxml2-xmlerror.html#XML_SCHEMAP_NO_XMLNS"/>
-    <keyword type="enum" name="XML_SCHEMAP_NO_XSI" link="libxml2-xmlerror.html#XML_SCHEMAP_NO_XSI"/>
-    <keyword type="enum" name="XML_SCHEMAP_PREFIX_UNDEFINED" link="libxml2-xmlerror.html#XML_SCHEMAP_PREFIX_UNDEFINED"/>
-    <keyword type="enum" name="XML_SCHEMAP_P_PROPS_CORRECT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_P_PROPS_CORRECT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_P_PROPS_CORRECT_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_P_PROPS_CORRECT_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_P_PROPS_CORRECT_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_P_PROPS_CORRECT_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_RECURSIVE" link="libxml2-xmlerror.html#XML_SCHEMAP_RECURSIVE"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_ATTR" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_ATTR"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_ATTRGROUP" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_ATTRGROUP"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_ELEMENT" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_ELEMENT"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_GROUP" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_GROUP"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_NOTATION" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_NOTATION"/>
-    <keyword type="enum" name="XML_SCHEMAP_REDEFINED_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_REDEFINED_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_REF_AND_CONTENT" link="libxml2-xmlerror.html#XML_SCHEMAP_REF_AND_CONTENT"/>
-    <keyword type="enum" name="XML_SCHEMAP_REF_AND_SUBTYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_REF_AND_SUBTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_REGEXP_INVALID" link="libxml2-xmlerror.html#XML_SCHEMAP_REGEXP_INVALID"/>
-    <keyword type="enum" name="XML_SCHEMAP_RESTRICTION_NONAME_NOREF" link="libxml2-xmlerror.html#XML_SCHEMAP_RESTRICTION_NONAME_NOREF"/>
-    <keyword type="enum" name="XML_SCHEMAP_S4S_ATTR_INVALID_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAP_S4S_ATTR_INVALID_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAP_S4S_ATTR_MISSING" link="libxml2-xmlerror.html#XML_SCHEMAP_S4S_ATTR_MISSING"/>
-    <keyword type="enum" name="XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED" link="libxml2-xmlerror.html#XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED"/>
-    <keyword type="enum" name="XML_SCHEMAP_S4S_ELEM_MISSING" link="libxml2-xmlerror.html#XML_SCHEMAP_S4S_ELEM_MISSING"/>
-    <keyword type="enum" name="XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED" link="libxml2-xmlerror.html#XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED"/>
-    <keyword type="enum" name="XML_SCHEMAP_SIMPLETYPE_NONAME" link="libxml2-xmlerror.html#XML_SCHEMAP_SIMPLETYPE_NONAME"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_3_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_3_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_3_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_4" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_CT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_CT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ELEMENT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ELEMENT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ELEMENT_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ELEMENT_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ELEMENT_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ELEMENT_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_ELEMENT_3" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_ELEMENT_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_1_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_1_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_2_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_2_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_3_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_IMPORT_3_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_IMPORT_3_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_INCLUDE" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_INCLUDE"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_REDEFINE" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_REDEFINE"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_RESOLVE" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_RESOLVE"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_SIMPLE_TYPE_1" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_SIMPLE_TYPE_2" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_SIMPLE_TYPE_3" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_SIMPLE_TYPE_4" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_SIMPLE_TYPE_4"/>
-    <keyword type="enum" name="XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES" link="libxml2-xmlerror.html#XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES"/>
-    <keyword type="enum" name="XML_SCHEMAP_ST_PROPS_CORRECT_1" link="libxml2-xmlerror.html#XML_SCHEMAP_ST_PROPS_CORRECT_1"/>
-    <keyword type="enum" name="XML_SCHEMAP_ST_PROPS_CORRECT_2" link="libxml2-xmlerror.html#XML_SCHEMAP_ST_PROPS_CORRECT_2"/>
-    <keyword type="enum" name="XML_SCHEMAP_ST_PROPS_CORRECT_3" link="libxml2-xmlerror.html#XML_SCHEMAP_ST_PROPS_CORRECT_3"/>
-    <keyword type="enum" name="XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_TYPE_AND_SUBTYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_TYPE_AND_SUBTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNION_NOT_EXPRESSIBLE" link="libxml2-xmlerror.html#XML_SCHEMAP_UNION_NOT_EXPRESSIBLE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ALL_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ALL_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ATTR_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ATTR_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_BASE_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_BASE_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_CHOICE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_CHOICE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_ELEM_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_ELEM_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_FACET_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_FACET_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_FACET_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_FACET_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_GROUP_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_GROUP_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_IMPORT_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_IMPORT_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_LIST_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_LIST_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_MEMBER_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_MEMBER_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_NOTATION_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_NOTATION_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_PREFIX" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_PREFIX"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_REF" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_REF"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_TYPE" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_TYPE"/>
-    <keyword type="enum" name="XML_SCHEMAP_UNKNOWN_UNION_CHILD" link="libxml2-xmlerror.html#XML_SCHEMAP_UNKNOWN_UNION_CHILD"/>
-    <keyword type="enum" name="XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH" link="libxml2-xmlerror.html#XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH"/>
-    <keyword type="enum" name="XML_SCHEMAP_WARN_ATTR_REDECL_PROH" link="libxml2-xmlerror.html#XML_SCHEMAP_WARN_ATTR_REDECL_PROH"/>
-    <keyword type="enum" name="XML_SCHEMAP_WARN_SKIP_SCHEMA" link="libxml2-xmlerror.html#XML_SCHEMAP_WARN_SKIP_SCHEMA"/>
-    <keyword type="enum" name="XML_SCHEMAP_WARN_UNLOCATED_SCHEMA" link="libxml2-xmlerror.html#XML_SCHEMAP_WARN_UNLOCATED_SCHEMA"/>
-    <keyword type="enum" name="XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER" link="libxml2-xmlerror.html#XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER"/>
-    <keyword type="enum" name="XML_SCHEMAS_ANYSIMPLETYPE" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYSIMPLETYPE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ANYTYPE" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ANYURI" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYURI"/>
-    <keyword type="enum" name="XML_SCHEMAS_BASE64BINARY" link="libxml2-schemasInternals.html#XML_SCHEMAS_BASE64BINARY"/>
-    <keyword type="enum" name="XML_SCHEMAS_BOOLEAN" link="libxml2-schemasInternals.html#XML_SCHEMAS_BOOLEAN"/>
-    <keyword type="enum" name="XML_SCHEMAS_BYTE" link="libxml2-schemasInternals.html#XML_SCHEMAS_BYTE"/>
-    <keyword type="enum" name="XML_SCHEMAS_DATE" link="libxml2-schemasInternals.html#XML_SCHEMAS_DATE"/>
-    <keyword type="enum" name="XML_SCHEMAS_DATETIME" link="libxml2-schemasInternals.html#XML_SCHEMAS_DATETIME"/>
-    <keyword type="enum" name="XML_SCHEMAS_DECIMAL" link="libxml2-schemasInternals.html#XML_SCHEMAS_DECIMAL"/>
-    <keyword type="enum" name="XML_SCHEMAS_DOUBLE" link="libxml2-schemasInternals.html#XML_SCHEMAS_DOUBLE"/>
-    <keyword type="enum" name="XML_SCHEMAS_DURATION" link="libxml2-schemasInternals.html#XML_SCHEMAS_DURATION"/>
-    <keyword type="enum" name="XML_SCHEMAS_ENTITIES" link="libxml2-schemasInternals.html#XML_SCHEMAS_ENTITIES"/>
-    <keyword type="enum" name="XML_SCHEMAS_ENTITY" link="libxml2-schemasInternals.html#XML_SCHEMAS_ENTITY"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_ATTRINVALID" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_ATTRINVALID"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_ATTRUNKNOWN" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_ATTRUNKNOWN"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_CONSTRUCT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_CONSTRUCT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_ELEMCONT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_ELEMCONT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_EXTRACONTENT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_EXTRACONTENT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_FACET" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_FACET"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_HAVEDEFAULT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_HAVEDEFAULT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_INTERNAL" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_INTERNAL"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_INVALIDATTR" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_INVALIDATTR"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_INVALIDELEM" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_INVALIDELEM"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_ISABSTRACT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_ISABSTRACT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_MISSING" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_MISSING"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOROLLBACK" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOROLLBACK"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOROOT" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOROOT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTDETERMINIST" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTDETERMINIST"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTEMPTY" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTEMPTY"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTNILLABLE" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTNILLABLE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTSIMPLE" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTSIMPLE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTTOPLEVEL" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTTOPLEVEL"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_NOTYPE" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_NOTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_OK" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_OK"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_UNDECLAREDELEM" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_UNDECLAREDELEM"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_VALUE" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_WRONGELEM" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_WRONGELEM"/>
-    <keyword type="enum" name="XML_SCHEMAS_ERR_XXX" link="libxml2-xmlschemas.html#XML_SCHEMAS_ERR_XXX"/>
-    <keyword type="enum" name="XML_SCHEMAS_FLOAT" link="libxml2-schemasInternals.html#XML_SCHEMAS_FLOAT"/>
-    <keyword type="enum" name="XML_SCHEMAS_GDAY" link="libxml2-schemasInternals.html#XML_SCHEMAS_GDAY"/>
-    <keyword type="enum" name="XML_SCHEMAS_GMONTH" link="libxml2-schemasInternals.html#XML_SCHEMAS_GMONTH"/>
-    <keyword type="enum" name="XML_SCHEMAS_GMONTHDAY" link="libxml2-schemasInternals.html#XML_SCHEMAS_GMONTHDAY"/>
-    <keyword type="enum" name="XML_SCHEMAS_GYEAR" link="libxml2-schemasInternals.html#XML_SCHEMAS_GYEAR"/>
-    <keyword type="enum" name="XML_SCHEMAS_GYEARMONTH" link="libxml2-schemasInternals.html#XML_SCHEMAS_GYEARMONTH"/>
-    <keyword type="enum" name="XML_SCHEMAS_HEXBINARY" link="libxml2-schemasInternals.html#XML_SCHEMAS_HEXBINARY"/>
-    <keyword type="enum" name="XML_SCHEMAS_ID" link="libxml2-schemasInternals.html#XML_SCHEMAS_ID"/>
-    <keyword type="enum" name="XML_SCHEMAS_IDREF" link="libxml2-schemasInternals.html#XML_SCHEMAS_IDREF"/>
-    <keyword type="enum" name="XML_SCHEMAS_IDREFS" link="libxml2-schemasInternals.html#XML_SCHEMAS_IDREFS"/>
-    <keyword type="enum" name="XML_SCHEMAS_INT" link="libxml2-schemasInternals.html#XML_SCHEMAS_INT"/>
-    <keyword type="enum" name="XML_SCHEMAS_INTEGER" link="libxml2-schemasInternals.html#XML_SCHEMAS_INTEGER"/>
-    <keyword type="enum" name="XML_SCHEMAS_LANGUAGE" link="libxml2-schemasInternals.html#XML_SCHEMAS_LANGUAGE"/>
-    <keyword type="enum" name="XML_SCHEMAS_LONG" link="libxml2-schemasInternals.html#XML_SCHEMAS_LONG"/>
-    <keyword type="enum" name="XML_SCHEMAS_NAME" link="libxml2-schemasInternals.html#XML_SCHEMAS_NAME"/>
-    <keyword type="enum" name="XML_SCHEMAS_NCNAME" link="libxml2-schemasInternals.html#XML_SCHEMAS_NCNAME"/>
-    <keyword type="enum" name="XML_SCHEMAS_NINTEGER" link="libxml2-schemasInternals.html#XML_SCHEMAS_NINTEGER"/>
-    <keyword type="enum" name="XML_SCHEMAS_NMTOKEN" link="libxml2-schemasInternals.html#XML_SCHEMAS_NMTOKEN"/>
-    <keyword type="enum" name="XML_SCHEMAS_NMTOKENS" link="libxml2-schemasInternals.html#XML_SCHEMAS_NMTOKENS"/>
-    <keyword type="enum" name="XML_SCHEMAS_NNINTEGER" link="libxml2-schemasInternals.html#XML_SCHEMAS_NNINTEGER"/>
-    <keyword type="enum" name="XML_SCHEMAS_NORMSTRING" link="libxml2-schemasInternals.html#XML_SCHEMAS_NORMSTRING"/>
-    <keyword type="enum" name="XML_SCHEMAS_NOTATION" link="libxml2-schemasInternals.html#XML_SCHEMAS_NOTATION"/>
-    <keyword type="enum" name="XML_SCHEMAS_NPINTEGER" link="libxml2-schemasInternals.html#XML_SCHEMAS_NPINTEGER"/>
-    <keyword type="enum" name="XML_SCHEMAS_PINTEGER" link="libxml2-schemasInternals.html#XML_SCHEMAS_PINTEGER"/>
-    <keyword type="enum" name="XML_SCHEMAS_QNAME" link="libxml2-schemasInternals.html#XML_SCHEMAS_QNAME"/>
-    <keyword type="enum" name="XML_SCHEMAS_SHORT" link="libxml2-schemasInternals.html#XML_SCHEMAS_SHORT"/>
-    <keyword type="enum" name="XML_SCHEMAS_STRING" link="libxml2-schemasInternals.html#XML_SCHEMAS_STRING"/>
-    <keyword type="enum" name="XML_SCHEMAS_TIME" link="libxml2-schemasInternals.html#XML_SCHEMAS_TIME"/>
-    <keyword type="enum" name="XML_SCHEMAS_TOKEN" link="libxml2-schemasInternals.html#XML_SCHEMAS_TOKEN"/>
-    <keyword type="enum" name="XML_SCHEMAS_UBYTE" link="libxml2-schemasInternals.html#XML_SCHEMAS_UBYTE"/>
-    <keyword type="enum" name="XML_SCHEMAS_UINT" link="libxml2-schemasInternals.html#XML_SCHEMAS_UINT"/>
-    <keyword type="enum" name="XML_SCHEMAS_ULONG" link="libxml2-schemasInternals.html#XML_SCHEMAS_ULONG"/>
-    <keyword type="enum" name="XML_SCHEMAS_UNKNOWN" link="libxml2-schemasInternals.html#XML_SCHEMAS_UNKNOWN"/>
-    <keyword type="enum" name="XML_SCHEMAS_USHORT" link="libxml2-schemasInternals.html#XML_SCHEMAS_USHORT"/>
-    <keyword type="enum" name="XML_SCHEMATRONV_ASSERT" link="libxml2-xmlerror.html#XML_SCHEMATRONV_ASSERT"/>
-    <keyword type="enum" name="XML_SCHEMATRONV_REPORT" link="libxml2-xmlerror.html#XML_SCHEMATRONV_REPORT"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_BUFFER" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_BUFFER"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_ERROR" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_ERROR"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_FILE" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_FILE"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_IO" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_IO"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_QUIET" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_QUIET"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_TEXT" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_TEXT"/>
-    <keyword type="enum" name="XML_SCHEMATRON_OUT_XML" link="libxml2-schematron.html#XML_SCHEMATRON_OUT_XML"/>
-    <keyword type="enum" name="XML_SCHEMAV_ATTRINVALID" link="libxml2-xmlerror.html#XML_SCHEMAV_ATTRINVALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_ATTRUNKNOWN" link="libxml2-xmlerror.html#XML_SCHEMAV_ATTRUNKNOWN"/>
-    <keyword type="enum" name="XML_SCHEMAV_CONSTRUCT" link="libxml2-xmlerror.html#XML_SCHEMAV_CONSTRUCT"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ATTRIBUTE_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ATTRIBUTE_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ATTRIBUTE_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ATTRIBUTE_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ATTRIBUTE_3" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ATTRIBUTE_3"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ATTRIBUTE_4" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ATTRIBUTE_4"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_AU" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_AU"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_4" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_4"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_3_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_3_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_3_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_3_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_3_2_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_3_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_4_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_4_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_4_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_4_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_4_3" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_4_3"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_1_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_1_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_2_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_2_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_2_2_2_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_2_2_2_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_5_2_2_2_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_5_2_2_2_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_6" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_6"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ELT_7" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ELT_7"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_ENUMERATION_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_ENUMERATION_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_FACET_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_FACET_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_IDC" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_IDC"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_LENGTH_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_LENGTH_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MAXLENGTH_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MAXLENGTH_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MININCLUSIVE_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MININCLUSIVE_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_MINLENGTH_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_MINLENGTH_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_PATTERN_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_PATTERN_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_TOTALDIGITS_VALID" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_TOTALDIGITS_VALID"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_TYPE_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_TYPE_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_TYPE_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_TYPE_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_TYPE_3_1_1" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_TYPE_3_1_1"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_TYPE_3_1_2" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_TYPE_3_1_2"/>
-    <keyword type="enum" name="XML_SCHEMAV_CVC_WILDCARD" link="libxml2-xmlerror.html#XML_SCHEMAV_CVC_WILDCARD"/>
-    <keyword type="enum" name="XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING" link="libxml2-xmlerror.html#XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING"/>
-    <keyword type="enum" name="XML_SCHEMAV_ELEMCONT" link="libxml2-xmlerror.html#XML_SCHEMAV_ELEMCONT"/>
-    <keyword type="enum" name="XML_SCHEMAV_ELEMENT_CONTENT" link="libxml2-xmlerror.html#XML_SCHEMAV_ELEMENT_CONTENT"/>
-    <keyword type="enum" name="XML_SCHEMAV_EXTRACONTENT" link="libxml2-xmlerror.html#XML_SCHEMAV_EXTRACONTENT"/>
-    <keyword type="enum" name="XML_SCHEMAV_FACET" link="libxml2-xmlerror.html#XML_SCHEMAV_FACET"/>
-    <keyword type="enum" name="XML_SCHEMAV_HAVEDEFAULT" link="libxml2-xmlerror.html#XML_SCHEMAV_HAVEDEFAULT"/>
-    <keyword type="enum" name="XML_SCHEMAV_INTERNAL" link="libxml2-xmlerror.html#XML_SCHEMAV_INTERNAL"/>
-    <keyword type="enum" name="XML_SCHEMAV_INVALIDATTR" link="libxml2-xmlerror.html#XML_SCHEMAV_INVALIDATTR"/>
-    <keyword type="enum" name="XML_SCHEMAV_INVALIDELEM" link="libxml2-xmlerror.html#XML_SCHEMAV_INVALIDELEM"/>
-    <keyword type="enum" name="XML_SCHEMAV_ISABSTRACT" link="libxml2-xmlerror.html#XML_SCHEMAV_ISABSTRACT"/>
-    <keyword type="enum" name="XML_SCHEMAV_MISC" link="libxml2-xmlerror.html#XML_SCHEMAV_MISC"/>
-    <keyword type="enum" name="XML_SCHEMAV_MISSING" link="libxml2-xmlerror.html#XML_SCHEMAV_MISSING"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOROLLBACK" link="libxml2-xmlerror.html#XML_SCHEMAV_NOROLLBACK"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOROOT" link="libxml2-xmlerror.html#XML_SCHEMAV_NOROOT"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTDETERMINIST" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTDETERMINIST"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTEMPTY" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTEMPTY"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTNILLABLE" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTNILLABLE"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTSIMPLE" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTSIMPLE"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTTOPLEVEL" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTTOPLEVEL"/>
-    <keyword type="enum" name="XML_SCHEMAV_NOTYPE" link="libxml2-xmlerror.html#XML_SCHEMAV_NOTYPE"/>
-    <keyword type="enum" name="XML_SCHEMAV_UNDECLAREDELEM" link="libxml2-xmlerror.html#XML_SCHEMAV_UNDECLAREDELEM"/>
-    <keyword type="enum" name="XML_SCHEMAV_VALUE" link="libxml2-xmlerror.html#XML_SCHEMAV_VALUE"/>
-    <keyword type="enum" name="XML_SCHEMAV_WRONGELEM" link="libxml2-xmlerror.html#XML_SCHEMAV_WRONGELEM"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_ANY" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_ANY"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_BASIC" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_BASIC"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_ELEMENTS" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_ELEMENTS"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_EMPTY" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_EMPTY"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_MIXED" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_MIXED"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_SIMPLE" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_SIMPLE"/>
-    <keyword type="enum" name="XML_SCHEMA_CONTENT_UNKNOWN" link="libxml2-schemasInternals.html#XML_SCHEMA_CONTENT_UNKNOWN"/>
-    <keyword type="enum" name="XML_SCHEMA_EXTRA_ATTR_USE_PROHIB" link="libxml2-schemasInternals.html#XML_SCHEMA_EXTRA_ATTR_USE_PROHIB"/>
-    <keyword type="enum" name="XML_SCHEMA_EXTRA_QNAMEREF" link="libxml2-schemasInternals.html#XML_SCHEMA_EXTRA_QNAMEREF"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_ENUMERATION" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_ENUMERATION"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_FRACTIONDIGITS" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_FRACTIONDIGITS"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_LENGTH" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_LENGTH"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MAXEXCLUSIVE" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MAXEXCLUSIVE"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MAXINCLUSIVE" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MAXINCLUSIVE"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MAXLENGTH" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MAXLENGTH"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MINEXCLUSIVE" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MINEXCLUSIVE"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MININCLUSIVE" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MININCLUSIVE"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_MINLENGTH" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_MINLENGTH"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_PATTERN" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_PATTERN"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_TOTALDIGITS" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_TOTALDIGITS"/>
-    <keyword type="enum" name="XML_SCHEMA_FACET_WHITESPACE" link="libxml2-schemasInternals.html#XML_SCHEMA_FACET_WHITESPACE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ALL" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ALL"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ANY" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ANY"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ANY_ATTRIBUTE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ANY_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ATTRIBUTE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ATTRIBUTE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ATTRIBUTEGROUP" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ATTRIBUTEGROUP"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ATTRIBUTE_USE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ATTRIBUTE_USE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_BASIC" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_BASIC"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_CHOICE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_CHOICE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_COMPLEX" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_COMPLEX"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_COMPLEX_CONTENT" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_COMPLEX_CONTENT"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_ELEMENT" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_ELEMENT"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_EXTENSION" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_EXTENSION"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_FACET" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_FACET"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_GROUP" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_GROUP"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_IDC_KEY" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_IDC_KEY"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_IDC_KEYREF" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_IDC_KEYREF"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_IDC_UNIQUE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_IDC_UNIQUE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_LIST" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_LIST"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_NOTATION" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_NOTATION"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_PARTICLE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_PARTICLE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_RESTRICTION" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_RESTRICTION"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_SEQUENCE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_SEQUENCE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_SIMPLE" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_SIMPLE"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_SIMPLE_CONTENT" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_SIMPLE_CONTENT"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_UNION" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_UNION"/>
-    <keyword type="enum" name="XML_SCHEMA_TYPE_UR" link="libxml2-schemasInternals.html#XML_SCHEMA_TYPE_UR"/>
-    <keyword type="enum" name="XML_SCHEMA_VAL_VC_I_CREATE" link="libxml2-xmlschemas.html#XML_SCHEMA_VAL_VC_I_CREATE"/>
-    <keyword type="enum" name="XML_SCHEMA_WHITESPACE_COLLAPSE" link="libxml2-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_COLLAPSE"/>
-    <keyword type="enum" name="XML_SCHEMA_WHITESPACE_PRESERVE" link="libxml2-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_PRESERVE"/>
-    <keyword type="enum" name="XML_SCHEMA_WHITESPACE_REPLACE" link="libxml2-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_REPLACE"/>
-    <keyword type="enum" name="XML_SCHEMA_WHITESPACE_UNKNOWN" link="libxml2-xmlschemastypes.html#XML_SCHEMA_WHITESPACE_UNKNOWN"/>
-    <keyword type="enum" name="XML_STATUS_CATASTROPHIC_ERROR" link="libxml2-parser.html#XML_STATUS_CATASTROPHIC_ERROR"/>
-    <keyword type="enum" name="XML_STATUS_DTD_VALIDATION_FAILED" link="libxml2-parser.html#XML_STATUS_DTD_VALIDATION_FAILED"/>
-    <keyword type="enum" name="XML_STATUS_NOT_NS_WELL_FORMED" link="libxml2-parser.html#XML_STATUS_NOT_NS_WELL_FORMED"/>
-    <keyword type="enum" name="XML_STATUS_NOT_WELL_FORMED" link="libxml2-parser.html#XML_STATUS_NOT_WELL_FORMED"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_CLOSED" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_CLOSED"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_EOF" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_EOF"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_ERROR" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_ERROR"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_INITIAL" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_INITIAL"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_INTERACTIVE" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_INTERACTIVE"/>
-    <keyword type="enum" name="XML_TEXTREADER_MODE_READING" link="libxml2-xmlreader.html#XML_TEXTREADER_MODE_READING"/>
-    <keyword type="enum" name="XML_TEXT_NODE" link="libxml2-tree.html#XML_TEXT_NODE"/>
-    <keyword type="enum" name="XML_TREE_INVALID_DEC" link="libxml2-xmlerror.html#XML_TREE_INVALID_DEC"/>
-    <keyword type="enum" name="XML_TREE_INVALID_HEX" link="libxml2-xmlerror.html#XML_TREE_INVALID_HEX"/>
-    <keyword type="enum" name="XML_TREE_NOT_UTF8" link="libxml2-xmlerror.html#XML_TREE_NOT_UTF8"/>
-    <keyword type="enum" name="XML_TREE_UNTERMINATED_ENTITY" link="libxml2-xmlerror.html#XML_TREE_UNTERMINATED_ENTITY"/>
-    <keyword type="enum" name="XML_WAR_CATALOG_PI" link="libxml2-xmlerror.html#XML_WAR_CATALOG_PI"/>
-    <keyword type="enum" name="XML_WAR_ENCODING_MISMATCH" link="libxml2-xmlerror.html#XML_WAR_ENCODING_MISMATCH"/>
-    <keyword type="enum" name="XML_WAR_ENTITY_REDEFINED" link="libxml2-xmlerror.html#XML_WAR_ENTITY_REDEFINED"/>
-    <keyword type="enum" name="XML_WAR_LANG_VALUE" link="libxml2-xmlerror.html#XML_WAR_LANG_VALUE"/>
-    <keyword type="enum" name="XML_WAR_NS_COLUMN" link="libxml2-xmlerror.html#XML_WAR_NS_COLUMN"/>
-    <keyword type="enum" name="XML_WAR_NS_URI" link="libxml2-xmlerror.html#XML_WAR_NS_URI"/>
-    <keyword type="enum" name="XML_WAR_NS_URI_RELATIVE" link="libxml2-xmlerror.html#XML_WAR_NS_URI_RELATIVE"/>
-    <keyword type="enum" name="XML_WAR_SPACE_VALUE" link="libxml2-xmlerror.html#XML_WAR_SPACE_VALUE"/>
-    <keyword type="enum" name="XML_WAR_UNDECLARED_ENTITY" link="libxml2-xmlerror.html#XML_WAR_UNDECLARED_ENTITY"/>
-    <keyword type="enum" name="XML_WAR_UNKNOWN_VERSION" link="libxml2-xmlerror.html#XML_WAR_UNKNOWN_VERSION"/>
-    <keyword type="enum" name="XML_WITH_AUTOMATA" link="libxml2-parser.html#XML_WITH_AUTOMATA"/>
-    <keyword type="enum" name="XML_WITH_C14N" link="libxml2-parser.html#XML_WITH_C14N"/>
-    <keyword type="enum" name="XML_WITH_CATALOG" link="libxml2-parser.html#XML_WITH_CATALOG"/>
-    <keyword type="enum" name="XML_WITH_DEBUG" link="libxml2-parser.html#XML_WITH_DEBUG"/>
-    <keyword type="enum" name="XML_WITH_DEBUG_MEM" link="libxml2-parser.html#XML_WITH_DEBUG_MEM"/>
-    <keyword type="enum" name="XML_WITH_DEBUG_RUN" link="libxml2-parser.html#XML_WITH_DEBUG_RUN"/>
-    <keyword type="enum" name="XML_WITH_EXPR" link="libxml2-parser.html#XML_WITH_EXPR"/>
-    <keyword type="enum" name="XML_WITH_FTP" link="libxml2-parser.html#XML_WITH_FTP"/>
-    <keyword type="enum" name="XML_WITH_HTML" link="libxml2-parser.html#XML_WITH_HTML"/>
-    <keyword type="enum" name="XML_WITH_HTTP" link="libxml2-parser.html#XML_WITH_HTTP"/>
-    <keyword type="enum" name="XML_WITH_ICONV" link="libxml2-parser.html#XML_WITH_ICONV"/>
-    <keyword type="enum" name="XML_WITH_ICU" link="libxml2-parser.html#XML_WITH_ICU"/>
-    <keyword type="enum" name="XML_WITH_ISO8859X" link="libxml2-parser.html#XML_WITH_ISO8859X"/>
-    <keyword type="enum" name="XML_WITH_LEGACY" link="libxml2-parser.html#XML_WITH_LEGACY"/>
-    <keyword type="enum" name="XML_WITH_LZMA" link="libxml2-parser.html#XML_WITH_LZMA"/>
-    <keyword type="enum" name="XML_WITH_MODULES" link="libxml2-parser.html#XML_WITH_MODULES"/>
-    <keyword type="enum" name="XML_WITH_NONE" link="libxml2-parser.html#XML_WITH_NONE"/>
-    <keyword type="enum" name="XML_WITH_OUTPUT" link="libxml2-parser.html#XML_WITH_OUTPUT"/>
-    <keyword type="enum" name="XML_WITH_PATTERN" link="libxml2-parser.html#XML_WITH_PATTERN"/>
-    <keyword type="enum" name="XML_WITH_PUSH" link="libxml2-parser.html#XML_WITH_PUSH"/>
-    <keyword type="enum" name="XML_WITH_READER" link="libxml2-parser.html#XML_WITH_READER"/>
-    <keyword type="enum" name="XML_WITH_REGEXP" link="libxml2-parser.html#XML_WITH_REGEXP"/>
-    <keyword type="enum" name="XML_WITH_RELAXNG" link="libxml2-parser.html#XML_WITH_RELAXNG"/>
-    <keyword type="enum" name="XML_WITH_SAX1" link="libxml2-parser.html#XML_WITH_SAX1"/>
-    <keyword type="enum" name="XML_WITH_SCHEMAS" link="libxml2-parser.html#XML_WITH_SCHEMAS"/>
-    <keyword type="enum" name="XML_WITH_SCHEMATRON" link="libxml2-parser.html#XML_WITH_SCHEMATRON"/>
-    <keyword type="enum" name="XML_WITH_THREAD" link="libxml2-parser.html#XML_WITH_THREAD"/>
-    <keyword type="enum" name="XML_WITH_TREE" link="libxml2-parser.html#XML_WITH_TREE"/>
-    <keyword type="enum" name="XML_WITH_UNICODE" link="libxml2-parser.html#XML_WITH_UNICODE"/>
-    <keyword type="enum" name="XML_WITH_VALID" link="libxml2-parser.html#XML_WITH_VALID"/>
-    <keyword type="enum" name="XML_WITH_WRITER" link="libxml2-parser.html#XML_WITH_WRITER"/>
-    <keyword type="enum" name="XML_WITH_XINCLUDE" link="libxml2-parser.html#XML_WITH_XINCLUDE"/>
-    <keyword type="enum" name="XML_WITH_XPATH" link="libxml2-parser.html#XML_WITH_XPATH"/>
-    <keyword type="enum" name="XML_WITH_XPTR" link="libxml2-parser.html#XML_WITH_XPTR"/>
-    <keyword type="enum" name="XML_WITH_ZLIB" link="libxml2-parser.html#XML_WITH_ZLIB"/>
-    <keyword type="enum" name="XML_XINCLUDE_BUILD_FAILED" link="libxml2-xmlerror.html#XML_XINCLUDE_BUILD_FAILED"/>
-    <keyword type="enum" name="XML_XINCLUDE_DEPRECATED_NS" link="libxml2-xmlerror.html#XML_XINCLUDE_DEPRECATED_NS"/>
-    <keyword type="enum" name="XML_XINCLUDE_END" link="libxml2-tree.html#XML_XINCLUDE_END"/>
-    <keyword type="enum" name="XML_XINCLUDE_ENTITY_DEF_MISMATCH" link="libxml2-xmlerror.html#XML_XINCLUDE_ENTITY_DEF_MISMATCH"/>
-    <keyword type="enum" name="XML_XINCLUDE_FALLBACKS_IN_INCLUDE" link="libxml2-xmlerror.html#XML_XINCLUDE_FALLBACKS_IN_INCLUDE"/>
-    <keyword type="enum" name="XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE" link="libxml2-xmlerror.html#XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE"/>
-    <keyword type="enum" name="XML_XINCLUDE_FRAGMENT_ID" link="libxml2-xmlerror.html#XML_XINCLUDE_FRAGMENT_ID"/>
-    <keyword type="enum" name="XML_XINCLUDE_HREF_URI" link="libxml2-xmlerror.html#XML_XINCLUDE_HREF_URI"/>
-    <keyword type="enum" name="XML_XINCLUDE_INCLUDE_IN_INCLUDE" link="libxml2-xmlerror.html#XML_XINCLUDE_INCLUDE_IN_INCLUDE"/>
-    <keyword type="enum" name="XML_XINCLUDE_INVALID_CHAR" link="libxml2-xmlerror.html#XML_XINCLUDE_INVALID_CHAR"/>
-    <keyword type="enum" name="XML_XINCLUDE_MULTIPLE_ROOT" link="libxml2-xmlerror.html#XML_XINCLUDE_MULTIPLE_ROOT"/>
-    <keyword type="enum" name="XML_XINCLUDE_NO_FALLBACK" link="libxml2-xmlerror.html#XML_XINCLUDE_NO_FALLBACK"/>
-    <keyword type="enum" name="XML_XINCLUDE_NO_HREF" link="libxml2-xmlerror.html#XML_XINCLUDE_NO_HREF"/>
-    <keyword type="enum" name="XML_XINCLUDE_PARSE_VALUE" link="libxml2-xmlerror.html#XML_XINCLUDE_PARSE_VALUE"/>
-    <keyword type="enum" name="XML_XINCLUDE_RECURSION" link="libxml2-xmlerror.html#XML_XINCLUDE_RECURSION"/>
-    <keyword type="enum" name="XML_XINCLUDE_START" link="libxml2-tree.html#XML_XINCLUDE_START"/>
-    <keyword type="enum" name="XML_XINCLUDE_TEXT_DOCUMENT" link="libxml2-xmlerror.html#XML_XINCLUDE_TEXT_DOCUMENT"/>
-    <keyword type="enum" name="XML_XINCLUDE_TEXT_FRAGMENT" link="libxml2-xmlerror.html#XML_XINCLUDE_TEXT_FRAGMENT"/>
-    <keyword type="enum" name="XML_XINCLUDE_UNKNOWN_ENCODING" link="libxml2-xmlerror.html#XML_XINCLUDE_UNKNOWN_ENCODING"/>
-    <keyword type="enum" name="XML_XINCLUDE_XPTR_FAILED" link="libxml2-xmlerror.html#XML_XINCLUDE_XPTR_FAILED"/>
-    <keyword type="enum" name="XML_XINCLUDE_XPTR_RESULT" link="libxml2-xmlerror.html#XML_XINCLUDE_XPTR_RESULT"/>
-    <keyword type="enum" name="XML_XPATH_ENCODING_ERROR" link="libxml2-xmlerror.html#XML_XPATH_ENCODING_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_EXPRESSION_OK" link="libxml2-xmlerror.html#XML_XPATH_EXPRESSION_OK"/>
-    <keyword type="enum" name="XML_XPATH_EXPR_ERROR" link="libxml2-xmlerror.html#XML_XPATH_EXPR_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_ARITY" link="libxml2-xmlerror.html#XML_XPATH_INVALID_ARITY"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_CHAR_ERROR" link="libxml2-xmlerror.html#XML_XPATH_INVALID_CHAR_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_CTXT_POSITION" link="libxml2-xmlerror.html#XML_XPATH_INVALID_CTXT_POSITION"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_CTXT_SIZE" link="libxml2-xmlerror.html#XML_XPATH_INVALID_CTXT_SIZE"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_OPERAND" link="libxml2-xmlerror.html#XML_XPATH_INVALID_OPERAND"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_PREDICATE_ERROR" link="libxml2-xmlerror.html#XML_XPATH_INVALID_PREDICATE_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_INVALID_TYPE" link="libxml2-xmlerror.html#XML_XPATH_INVALID_TYPE"/>
-    <keyword type="enum" name="XML_XPATH_MEMORY_ERROR" link="libxml2-xmlerror.html#XML_XPATH_MEMORY_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_NUMBER_ERROR" link="libxml2-xmlerror.html#XML_XPATH_NUMBER_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_START_LITERAL_ERROR" link="libxml2-xmlerror.html#XML_XPATH_START_LITERAL_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_UNCLOSED_ERROR" link="libxml2-xmlerror.html#XML_XPATH_UNCLOSED_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_UNDEF_PREFIX_ERROR" link="libxml2-xmlerror.html#XML_XPATH_UNDEF_PREFIX_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_UNDEF_VARIABLE_ERROR" link="libxml2-xmlerror.html#XML_XPATH_UNDEF_VARIABLE_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_UNFINISHED_LITERAL_ERROR" link="libxml2-xmlerror.html#XML_XPATH_UNFINISHED_LITERAL_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_UNKNOWN_FUNC_ERROR" link="libxml2-xmlerror.html#XML_XPATH_UNKNOWN_FUNC_ERROR"/>
-    <keyword type="enum" name="XML_XPATH_VARIABLE_REF_ERROR" link="libxml2-xmlerror.html#XML_XPATH_VARIABLE_REF_ERROR"/>
-    <keyword type="enum" name="XML_XPTR_CHILDSEQ_START" link="libxml2-xmlerror.html#XML_XPTR_CHILDSEQ_START"/>
-    <keyword type="enum" name="XML_XPTR_EVAL_FAILED" link="libxml2-xmlerror.html#XML_XPTR_EVAL_FAILED"/>
-    <keyword type="enum" name="XML_XPTR_EXTRA_OBJECTS" link="libxml2-xmlerror.html#XML_XPTR_EXTRA_OBJECTS"/>
-    <keyword type="enum" name="XML_XPTR_RESOURCE_ERROR" link="libxml2-xmlerror.html#XML_XPTR_RESOURCE_ERROR"/>
-    <keyword type="enum" name="XML_XPTR_SUB_RESOURCE_ERROR" link="libxml2-xmlerror.html#XML_XPTR_SUB_RESOURCE_ERROR"/>
-    <keyword type="enum" name="XML_XPTR_SYNTAX_ERROR" link="libxml2-xmlerror.html#XML_XPTR_SYNTAX_ERROR"/>
-    <keyword type="enum" name="XML_XPTR_UNKNOWN_SCHEME" link="libxml2-xmlerror.html#XML_XPTR_UNKNOWN_SCHEME"/>
-    <keyword type="enum" name="XPATH_BOOLEAN" link="libxml2-xpath.html#XPATH_BOOLEAN"/>
-    <keyword type="enum" name="XPATH_ENCODING_ERROR" link="libxml2-xpath.html#XPATH_ENCODING_ERROR"/>
-    <keyword type="enum" name="XPATH_EXPRESSION_OK" link="libxml2-xpath.html#XPATH_EXPRESSION_OK"/>
-    <keyword type="enum" name="XPATH_EXPR_ERROR" link="libxml2-xpath.html#XPATH_EXPR_ERROR"/>
-    <keyword type="enum" name="XPATH_FORBID_VARIABLE_ERROR" link="libxml2-xpath.html#XPATH_FORBID_VARIABLE_ERROR"/>
-    <keyword type="enum" name="XPATH_INVALID_ARITY" link="libxml2-xpath.html#XPATH_INVALID_ARITY"/>
-    <keyword type="enum" name="XPATH_INVALID_CHAR_ERROR" link="libxml2-xpath.html#XPATH_INVALID_CHAR_ERROR"/>
-    <keyword type="enum" name="XPATH_INVALID_CTXT" link="libxml2-xpath.html#XPATH_INVALID_CTXT"/>
-    <keyword type="enum" name="XPATH_INVALID_CTXT_POSITION" link="libxml2-xpath.html#XPATH_INVALID_CTXT_POSITION"/>
-    <keyword type="enum" name="XPATH_INVALID_CTXT_SIZE" link="libxml2-xpath.html#XPATH_INVALID_CTXT_SIZE"/>
-    <keyword type="enum" name="XPATH_INVALID_OPERAND" link="libxml2-xpath.html#XPATH_INVALID_OPERAND"/>
-    <keyword type="enum" name="XPATH_INVALID_PREDICATE_ERROR" link="libxml2-xpath.html#XPATH_INVALID_PREDICATE_ERROR"/>
-    <keyword type="enum" name="XPATH_INVALID_TYPE" link="libxml2-xpath.html#XPATH_INVALID_TYPE"/>
-    <keyword type="enum" name="XPATH_MEMORY_ERROR" link="libxml2-xpath.html#XPATH_MEMORY_ERROR"/>
-    <keyword type="enum" name="XPATH_NODESET" link="libxml2-xpath.html#XPATH_NODESET"/>
-    <keyword type="enum" name="XPATH_NUMBER" link="libxml2-xpath.html#XPATH_NUMBER"/>
-    <keyword type="enum" name="XPATH_NUMBER_ERROR" link="libxml2-xpath.html#XPATH_NUMBER_ERROR"/>
-    <keyword type="enum" name="XPATH_OP_LIMIT_EXCEEDED" link="libxml2-xpath.html#XPATH_OP_LIMIT_EXCEEDED"/>
-    <keyword type="enum" name="XPATH_RECURSION_LIMIT_EXCEEDED" link="libxml2-xpath.html#XPATH_RECURSION_LIMIT_EXCEEDED"/>
-    <keyword type="enum" name="XPATH_STACK_ERROR" link="libxml2-xpath.html#XPATH_STACK_ERROR"/>
-    <keyword type="enum" name="XPATH_START_LITERAL_ERROR" link="libxml2-xpath.html#XPATH_START_LITERAL_ERROR"/>
-    <keyword type="enum" name="XPATH_STRING" link="libxml2-xpath.html#XPATH_STRING"/>
-    <keyword type="enum" name="XPATH_UNCLOSED_ERROR" link="libxml2-xpath.html#XPATH_UNCLOSED_ERROR"/>
-    <keyword type="enum" name="XPATH_UNDEFINED" link="libxml2-xpath.html#XPATH_UNDEFINED"/>
-    <keyword type="enum" name="XPATH_UNDEF_PREFIX_ERROR" link="libxml2-xpath.html#XPATH_UNDEF_PREFIX_ERROR"/>
-    <keyword type="enum" name="XPATH_UNDEF_VARIABLE_ERROR" link="libxml2-xpath.html#XPATH_UNDEF_VARIABLE_ERROR"/>
-    <keyword type="enum" name="XPATH_UNFINISHED_LITERAL_ERROR" link="libxml2-xpath.html#XPATH_UNFINISHED_LITERAL_ERROR"/>
-    <keyword type="enum" name="XPATH_UNKNOWN_FUNC_ERROR" link="libxml2-xpath.html#XPATH_UNKNOWN_FUNC_ERROR"/>
-    <keyword type="enum" name="XPATH_USERS" link="libxml2-xpath.html#XPATH_USERS"/>
-    <keyword type="enum" name="XPATH_VARIABLE_REF_ERROR" link="libxml2-xpath.html#XPATH_VARIABLE_REF_ERROR"/>
-    <keyword type="enum" name="XPATH_XSLT_TREE" link="libxml2-xpath.html#XPATH_XSLT_TREE"/>
-    <keyword type="enum" name="XPTR_RESOURCE_ERROR" link="libxml2-xpath.html#XPTR_RESOURCE_ERROR"/>
-    <keyword type="enum" name="XPTR_SUB_RESOURCE_ERROR" link="libxml2-xpath.html#XPTR_SUB_RESOURCE_ERROR"/>
-    <keyword type="enum" name="XPTR_SYNTAX_ERROR" link="libxml2-xpath.html#XPTR_SYNTAX_ERROR"/>
-    <keyword type="typedef" name="htmlDocPtr" link="libxml2-HTMLparser.html#htmlDocPtr"/>
-    <keyword type="typedef" name="htmlElemDescPtr" link="libxml2-HTMLparser.html#htmlElemDescPtr"/>
-    <keyword type="typedef" name="htmlEntityDescPtr" link="libxml2-HTMLparser.html#htmlEntityDescPtr"/>
-    <keyword type="typedef" name="htmlNodePtr" link="libxml2-HTMLparser.html#htmlNodePtr"/>
-    <keyword type="typedef" name="htmlParserCtxt" link="libxml2-HTMLparser.html#htmlParserCtxt"/>
-    <keyword type="typedef" name="htmlParserCtxtPtr" link="libxml2-HTMLparser.html#htmlParserCtxtPtr"/>
-    <keyword type="typedef" name="htmlParserInput" link="libxml2-HTMLparser.html#htmlParserInput"/>
-    <keyword type="typedef" name="htmlParserInputPtr" link="libxml2-HTMLparser.html#htmlParserInputPtr"/>
-    <keyword type="typedef" name="htmlParserNodeInfo" link="libxml2-HTMLparser.html#htmlParserNodeInfo"/>
-    <keyword type="typedef" name="htmlParserOption" link="libxml2-HTMLparser.html#htmlParserOption"/>
-    <keyword type="typedef" name="htmlSAXHandler" link="libxml2-HTMLparser.html#htmlSAXHandler"/>
-    <keyword type="typedef" name="htmlSAXHandlerPtr" link="libxml2-HTMLparser.html#htmlSAXHandlerPtr"/>
-    <keyword type="typedef" name="htmlStatus" link="libxml2-HTMLparser.html#htmlStatus"/>
-    <keyword type="typedef" name="xlinkActuate" link="libxml2-xlink.html#xlinkActuate"/>
-    <keyword type="typedef" name="xlinkHRef" link="libxml2-xlink.html#xlinkHRef"/>
-    <keyword type="typedef" name="xlinkHandlerPtr" link="libxml2-xlink.html#xlinkHandlerPtr"/>
-    <keyword type="typedef" name="xlinkRole" link="libxml2-xlink.html#xlinkRole"/>
-    <keyword type="typedef" name="xlinkShow" link="libxml2-xlink.html#xlinkShow"/>
-    <keyword type="typedef" name="xlinkTitle" link="libxml2-xlink.html#xlinkTitle"/>
-    <keyword type="typedef" name="xlinkType" link="libxml2-xlink.html#xlinkType"/>
-    <keyword type="typedef" name="xmlAttrPtr" link="libxml2-tree.html#xmlAttrPtr"/>
-    <keyword type="typedef" name="xmlAttributeDefault" link="libxml2-tree.html#xmlAttributeDefault"/>
-    <keyword type="typedef" name="xmlAttributePtr" link="libxml2-tree.html#xmlAttributePtr"/>
-    <keyword type="typedef" name="xmlAttributeTablePtr" link="libxml2-valid.html#xmlAttributeTablePtr"/>
-    <keyword type="typedef" name="xmlAttributeType" link="libxml2-tree.html#xmlAttributeType"/>
-    <keyword type="typedef" name="xmlAutomataPtr" link="libxml2-xmlautomata.html#xmlAutomataPtr"/>
-    <keyword type="typedef" name="xmlAutomataStatePtr" link="libxml2-xmlautomata.html#xmlAutomataStatePtr"/>
-    <keyword type="typedef" name="xmlBufPtr" link="libxml2-tree.html#xmlBufPtr"/>
-    <keyword type="typedef" name="xmlBufferAllocationScheme" link="libxml2-tree.html#xmlBufferAllocationScheme"/>
-    <keyword type="typedef" name="xmlBufferPtr" link="libxml2-tree.html#xmlBufferPtr"/>
-    <keyword type="typedef" name="xmlC14NMode" link="libxml2-c14n.html#xmlC14NMode"/>
-    <keyword type="typedef" name="xmlCatalogAllow" link="libxml2-catalog.html#xmlCatalogAllow"/>
-    <keyword type="typedef" name="xmlCatalogPrefer" link="libxml2-catalog.html#xmlCatalogPrefer"/>
-    <keyword type="typedef" name="xmlCatalogPtr" link="libxml2-catalog.html#xmlCatalogPtr"/>
-    <keyword type="typedef" name="xmlChLRangePtr" link="libxml2-chvalid.html#xmlChLRangePtr"/>
-    <keyword type="typedef" name="xmlChRangeGroupPtr" link="libxml2-chvalid.html#xmlChRangeGroupPtr"/>
-    <keyword type="typedef" name="xmlChSRangePtr" link="libxml2-chvalid.html#xmlChSRangePtr"/>
-    <keyword type="typedef" name="xmlChar" link="libxml2-xmlstring.html#xmlChar"/>
-    <keyword type="typedef" name="xmlCharEncError" link="libxml2-encoding.html#xmlCharEncError"/>
-    <keyword type="typedef" name="xmlCharEncFlags" link="libxml2-encoding.html#xmlCharEncFlags"/>
-    <keyword type="typedef" name="xmlCharEncoding" link="libxml2-encoding.html#xmlCharEncoding"/>
-    <keyword type="typedef" name="xmlCharEncodingHandlerPtr" link="libxml2-encoding.html#xmlCharEncodingHandlerPtr"/>
-    <keyword type="typedef" name="xmlDOMWrapCtxtPtr" link="libxml2-tree.html#xmlDOMWrapCtxtPtr"/>
-    <keyword type="typedef" name="xmlDictPtr" link="libxml2-dict.html#xmlDictPtr"/>
-    <keyword type="typedef" name="xmlDocProperties" link="libxml2-tree.html#xmlDocProperties"/>
-    <keyword type="typedef" name="xmlDocPtr" link="libxml2-tree.html#xmlDocPtr"/>
-    <keyword type="typedef" name="xmlDtdPtr" link="libxml2-tree.html#xmlDtdPtr"/>
-    <keyword type="typedef" name="xmlElementContentOccur" link="libxml2-tree.html#xmlElementContentOccur"/>
-    <keyword type="typedef" name="xmlElementContentPtr" link="libxml2-tree.html#xmlElementContentPtr"/>
-    <keyword type="typedef" name="xmlElementContentType" link="libxml2-tree.html#xmlElementContentType"/>
-    <keyword type="typedef" name="xmlElementPtr" link="libxml2-tree.html#xmlElementPtr"/>
-    <keyword type="typedef" name="xmlElementTablePtr" link="libxml2-valid.html#xmlElementTablePtr"/>
-    <keyword type="typedef" name="xmlElementType" link="libxml2-tree.html#xmlElementType"/>
-    <keyword type="typedef" name="xmlElementTypeVal" link="libxml2-tree.html#xmlElementTypeVal"/>
-    <keyword type="typedef" name="xmlEntitiesTablePtr" link="libxml2-entities.html#xmlEntitiesTablePtr"/>
-    <keyword type="typedef" name="xmlEntityPtr" link="libxml2-tree.html#xmlEntityPtr"/>
-    <keyword type="typedef" name="xmlEntityType" link="libxml2-entities.html#xmlEntityType"/>
-    <keyword type="typedef" name="xmlEnumerationPtr" link="libxml2-tree.html#xmlEnumerationPtr"/>
-    <keyword type="typedef" name="xmlErrorDomain" link="libxml2-xmlerror.html#xmlErrorDomain"/>
-    <keyword type="typedef" name="xmlErrorLevel" link="libxml2-xmlerror.html#xmlErrorLevel"/>
-    <keyword type="typedef" name="xmlErrorPtr" link="libxml2-xmlerror.html#xmlErrorPtr"/>
-    <keyword type="typedef" name="xmlFeature" link="libxml2-parser.html#xmlFeature"/>
-    <keyword type="typedef" name="xmlHashTablePtr" link="libxml2-hash.html#xmlHashTablePtr"/>
-    <keyword type="typedef" name="xmlIDPtr" link="libxml2-tree.html#xmlIDPtr"/>
-    <keyword type="typedef" name="xmlIDTablePtr" link="libxml2-valid.html#xmlIDTablePtr"/>
-    <keyword type="typedef" name="xmlLinkPtr" link="libxml2-list.html#xmlLinkPtr"/>
-    <keyword type="typedef" name="xmlListPtr" link="libxml2-list.html#xmlListPtr"/>
-    <keyword type="typedef" name="xmlModuleOption" link="libxml2-xmlmodule.html#xmlModuleOption"/>
-    <keyword type="typedef" name="xmlModulePtr" link="libxml2-xmlmodule.html#xmlModulePtr"/>
-    <keyword type="typedef" name="xmlMutexPtr" link="libxml2-threads.html#xmlMutexPtr"/>
-    <keyword type="typedef" name="xmlNodePtr" link="libxml2-tree.html#xmlNodePtr"/>
-    <keyword type="typedef" name="xmlNodeSetPtr" link="libxml2-xpath.html#xmlNodeSetPtr"/>
-    <keyword type="typedef" name="xmlNotationPtr" link="libxml2-tree.html#xmlNotationPtr"/>
-    <keyword type="typedef" name="xmlNotationTablePtr" link="libxml2-valid.html#xmlNotationTablePtr"/>
-    <keyword type="typedef" name="xmlNsPtr" link="libxml2-tree.html#xmlNsPtr"/>
-    <keyword type="typedef" name="xmlNsType" link="libxml2-tree.html#xmlNsType"/>
-    <keyword type="typedef" name="xmlOutputBufferPtr" link="libxml2-tree.html#xmlOutputBufferPtr"/>
-    <keyword type="typedef" name="xmlParserCtxtPtr" link="libxml2-tree.html#xmlParserCtxtPtr"/>
-    <keyword type="typedef" name="xmlParserErrors" link="libxml2-xmlerror.html#xmlParserErrors"/>
-    <keyword type="typedef" name="xmlParserInputBufferPtr" link="libxml2-tree.html#xmlParserInputBufferPtr"/>
-    <keyword type="typedef" name="xmlParserInputFlags" link="libxml2-parser.html#xmlParserInputFlags"/>
-    <keyword type="typedef" name="xmlParserInputPtr" link="libxml2-tree.html#xmlParserInputPtr"/>
-    <keyword type="typedef" name="xmlParserInputState" link="libxml2-parser.html#xmlParserInputState"/>
-    <keyword type="typedef" name="xmlParserMode" link="libxml2-parser.html#xmlParserMode"/>
-    <keyword type="typedef" name="xmlParserNodeInfoPtr" link="libxml2-parser.html#xmlParserNodeInfoPtr"/>
-    <keyword type="typedef" name="xmlParserNodeInfoSeqPtr" link="libxml2-parser.html#xmlParserNodeInfoSeqPtr"/>
-    <keyword type="typedef" name="xmlParserOption" link="libxml2-parser.html#xmlParserOption"/>
-    <keyword type="typedef" name="xmlParserProperties" link="libxml2-xmlreader.html#xmlParserProperties"/>
-    <keyword type="typedef" name="xmlParserSeverities" link="libxml2-xmlreader.html#xmlParserSeverities"/>
-    <keyword type="typedef" name="xmlParserStatus" link="libxml2-parser.html#xmlParserStatus"/>
-    <keyword type="typedef" name="xmlPatternFlags" link="libxml2-pattern.html#xmlPatternFlags"/>
-    <keyword type="typedef" name="xmlPatternPtr" link="libxml2-pattern.html#xmlPatternPtr"/>
-    <keyword type="typedef" name="xmlRMutexPtr" link="libxml2-threads.html#xmlRMutexPtr"/>
-    <keyword type="typedef" name="xmlReaderTypes" link="libxml2-xmlreader.html#xmlReaderTypes"/>
-    <keyword type="typedef" name="xmlRefPtr" link="libxml2-tree.html#xmlRefPtr"/>
-    <keyword type="typedef" name="xmlRefTablePtr" link="libxml2-valid.html#xmlRefTablePtr"/>
-    <keyword type="typedef" name="xmlRegExecCtxtPtr" link="libxml2-xmlregexp.html#xmlRegExecCtxtPtr"/>
-    <keyword type="typedef" name="xmlRegexpPtr" link="libxml2-xmlregexp.html#xmlRegexpPtr"/>
-    <keyword type="typedef" name="xmlRelaxNGParserCtxtPtr" link="libxml2-relaxng.html#xmlRelaxNGParserCtxtPtr"/>
-    <keyword type="typedef" name="xmlRelaxNGParserFlag" link="libxml2-relaxng.html#xmlRelaxNGParserFlag"/>
-    <keyword type="typedef" name="xmlRelaxNGPtr" link="libxml2-relaxng.html#xmlRelaxNGPtr"/>
-    <keyword type="typedef" name="xmlRelaxNGValidCtxtPtr" link="libxml2-relaxng.html#xmlRelaxNGValidCtxtPtr"/>
-    <keyword type="typedef" name="xmlRelaxNGValidErr" link="libxml2-relaxng.html#xmlRelaxNGValidErr"/>
-    <keyword type="typedef" name="xmlResourceType" link="libxml2-parser.html#xmlResourceType"/>
-    <keyword type="typedef" name="xmlSAXHandlerPtr" link="libxml2-tree.html#xmlSAXHandlerPtr"/>
-    <keyword type="typedef" name="xmlSAXHandlerV1Ptr" link="libxml2-parser.html#xmlSAXHandlerV1Ptr"/>
-    <keyword type="typedef" name="xmlSAXLocatorPtr" link="libxml2-tree.html#xmlSAXLocatorPtr"/>
-    <keyword type="typedef" name="xmlSaveCtxtPtr" link="libxml2-xmlsave.html#xmlSaveCtxtPtr"/>
-    <keyword type="typedef" name="xmlSaveOption" link="libxml2-xmlsave.html#xmlSaveOption"/>
-    <keyword type="typedef" name="xmlSchemaAnnotPtr" link="libxml2-schemasInternals.html#xmlSchemaAnnotPtr"/>
-    <keyword type="typedef" name="xmlSchemaAttributeGroupPtr" link="libxml2-schemasInternals.html#xmlSchemaAttributeGroupPtr"/>
-    <keyword type="typedef" name="xmlSchemaAttributeLinkPtr" link="libxml2-schemasInternals.html#xmlSchemaAttributeLinkPtr"/>
-    <keyword type="typedef" name="xmlSchemaAttributePtr" link="libxml2-schemasInternals.html#xmlSchemaAttributePtr"/>
-    <keyword type="typedef" name="xmlSchemaContentType" link="libxml2-schemasInternals.html#xmlSchemaContentType"/>
-    <keyword type="typedef" name="xmlSchemaElementPtr" link="libxml2-schemasInternals.html#xmlSchemaElementPtr"/>
-    <keyword type="typedef" name="xmlSchemaFacetLinkPtr" link="libxml2-schemasInternals.html#xmlSchemaFacetLinkPtr"/>
-    <keyword type="typedef" name="xmlSchemaFacetPtr" link="libxml2-schemasInternals.html#xmlSchemaFacetPtr"/>
-    <keyword type="typedef" name="xmlSchemaNotationPtr" link="libxml2-schemasInternals.html#xmlSchemaNotationPtr"/>
-    <keyword type="typedef" name="xmlSchemaParserCtxtPtr" link="libxml2-xmlschemas.html#xmlSchemaParserCtxtPtr"/>
-    <keyword type="typedef" name="xmlSchemaPtr" link="libxml2-xmlschemas.html#xmlSchemaPtr"/>
-    <keyword type="typedef" name="xmlSchemaSAXPlugPtr" link="libxml2-xmlschemas.html#xmlSchemaSAXPlugPtr"/>
-    <keyword type="typedef" name="xmlSchemaTypeLinkPtr" link="libxml2-schemasInternals.html#xmlSchemaTypeLinkPtr"/>
-    <keyword type="typedef" name="xmlSchemaTypePtr" link="libxml2-schemasInternals.html#xmlSchemaTypePtr"/>
-    <keyword type="typedef" name="xmlSchemaTypeType" link="libxml2-schemasInternals.html#xmlSchemaTypeType"/>
-    <keyword type="typedef" name="xmlSchemaValPtr" link="libxml2-schemasInternals.html#xmlSchemaValPtr"/>
-    <keyword type="typedef" name="xmlSchemaValType" link="libxml2-schemasInternals.html#xmlSchemaValType"/>
-    <keyword type="typedef" name="xmlSchemaValidCtxtPtr" link="libxml2-xmlschemas.html#xmlSchemaValidCtxtPtr"/>
-    <keyword type="typedef" name="xmlSchemaValidError" link="libxml2-xmlschemas.html#xmlSchemaValidError"/>
-    <keyword type="typedef" name="xmlSchemaValidOption" link="libxml2-xmlschemas.html#xmlSchemaValidOption"/>
-    <keyword type="typedef" name="xmlSchemaWhitespaceValueType" link="libxml2-xmlschemastypes.html#xmlSchemaWhitespaceValueType"/>
-    <keyword type="typedef" name="xmlSchemaWildcardNsPtr" link="libxml2-schemasInternals.html#xmlSchemaWildcardNsPtr"/>
-    <keyword type="typedef" name="xmlSchemaWildcardPtr" link="libxml2-schemasInternals.html#xmlSchemaWildcardPtr"/>
-    <keyword type="typedef" name="xmlSchematronParserCtxtPtr" link="libxml2-schematron.html#xmlSchematronParserCtxtPtr"/>
-    <keyword type="typedef" name="xmlSchematronPtr" link="libxml2-schematron.html#xmlSchematronPtr"/>
-    <keyword type="typedef" name="xmlSchematronValidCtxtPtr" link="libxml2-schematron.html#xmlSchematronValidCtxtPtr"/>
-    <keyword type="typedef" name="xmlSchematronValidOptions" link="libxml2-schematron.html#xmlSchematronValidOptions"/>
-    <keyword type="typedef" name="xmlStreamCtxtPtr" link="libxml2-pattern.html#xmlStreamCtxtPtr"/>
-    <keyword type="typedef" name="xmlTextReaderLocatorPtr" link="libxml2-xmlreader.html#xmlTextReaderLocatorPtr"/>
-    <keyword type="typedef" name="xmlTextReaderMode" link="libxml2-xmlreader.html#xmlTextReaderMode"/>
-    <keyword type="typedef" name="xmlTextReaderPtr" link="libxml2-xmlreader.html#xmlTextReaderPtr"/>
-    <keyword type="typedef" name="xmlTextWriterPtr" link="libxml2-xmlwriter.html#xmlTextWriterPtr"/>
-    <keyword type="typedef" name="xmlURIPtr" link="libxml2-uri.html#xmlURIPtr"/>
-    <keyword type="typedef" name="xmlValidCtxtPtr" link="libxml2-valid.html#xmlValidCtxtPtr"/>
-    <keyword type="typedef" name="xmlValidStatePtr" link="libxml2-valid.html#xmlValidStatePtr"/>
-    <keyword type="typedef" name="xmlXIncludeCtxtPtr" link="libxml2-xinclude.html#xmlXIncludeCtxtPtr"/>
-    <keyword type="typedef" name="xmlXPathAxisPtr" link="libxml2-xpath.html#xmlXPathAxisPtr"/>
-    <keyword type="typedef" name="xmlXPathCompExprPtr" link="libxml2-xpath.html#xmlXPathCompExprPtr"/>
-    <keyword type="typedef" name="xmlXPathContextPtr" link="libxml2-xpath.html#xmlXPathContextPtr"/>
-    <keyword type="typedef" name="xmlXPathError" link="libxml2-xpath.html#xmlXPathError"/>
-    <keyword type="typedef" name="xmlXPathFuncPtr" link="libxml2-xpath.html#xmlXPathFuncPtr"/>
-    <keyword type="typedef" name="xmlXPathObjectPtr" link="libxml2-xpath.html#xmlXPathObjectPtr"/>
-    <keyword type="typedef" name="xmlXPathObjectType" link="libxml2-xpath.html#xmlXPathObjectType"/>
-    <keyword type="typedef" name="xmlXPathParserContextPtr" link="libxml2-xpath.html#xmlXPathParserContextPtr"/>
-    <keyword type="typedef" name="xmlXPathTypePtr" link="libxml2-xpath.html#xmlXPathTypePtr"/>
-    <keyword type="typedef" name="xmlXPathVariablePtr" link="libxml2-xpath.html#xmlXPathVariablePtr"/>
-    <keyword type="struct" name="htmlElemDesc" link="libxml2-HTMLparser.html#htmlElemDesc"/>
-    <keyword type="struct" name="htmlEntityDesc" link="libxml2-HTMLparser.html#htmlEntityDesc"/>
-    <keyword type="struct" name="xlinkHandler" link="libxml2-xlink.html#xlinkHandler"/>
-    <keyword type="struct" name="xmlAttr" link="libxml2-tree.html#xmlAttr"/>
-    <keyword type="struct" name="xmlAttrHashBucket" link="libxml2-parser.html#xmlAttrHashBucket"/>
-    <keyword type="struct" name="xmlAttribute" link="libxml2-tree.html#xmlAttribute"/>
-    <keyword type="struct" name="xmlAttributeTable" link="libxml2-valid.html#xmlAttributeTable"/>
-    <keyword type="struct" name="xmlAutomata" link="libxml2-xmlautomata.html#xmlAutomata"/>
-    <keyword type="struct" name="xmlAutomataState" link="libxml2-xmlautomata.html#xmlAutomataState"/>
-    <keyword type="struct" name="xmlBuf" link="libxml2-tree.html#xmlBuf"/>
-    <keyword type="struct" name="xmlBuffer" link="libxml2-tree.html#xmlBuffer"/>
-    <keyword type="struct" name="xmlCatalog" link="libxml2-catalog.html#xmlCatalog"/>
-    <keyword type="struct" name="xmlChLRange" link="libxml2-chvalid.html#xmlChLRange"/>
-    <keyword type="struct" name="xmlChRangeGroup" link="libxml2-chvalid.html#xmlChRangeGroup"/>
-    <keyword type="struct" name="xmlChSRange" link="libxml2-chvalid.html#xmlChSRange"/>
-    <keyword type="struct" name="xmlCharEncodingHandler" link="libxml2-encoding.html#xmlCharEncodingHandler"/>
-    <keyword type="struct" name="xmlDOMWrapCtxt" link="libxml2-tree.html#xmlDOMWrapCtxt"/>
-    <keyword type="struct" name="xmlDict" link="libxml2-dict.html#xmlDict"/>
-    <keyword type="struct" name="xmlDoc" link="libxml2-tree.html#xmlDoc"/>
-    <keyword type="struct" name="xmlDtd" link="libxml2-tree.html#xmlDtd"/>
-    <keyword type="struct" name="xmlElement" link="libxml2-tree.html#xmlElement"/>
-    <keyword type="struct" name="xmlElementContent" link="libxml2-tree.html#xmlElementContent"/>
-    <keyword type="struct" name="xmlElementTable" link="libxml2-valid.html#xmlElementTable"/>
-    <keyword type="struct" name="xmlEntitiesTable" link="libxml2-entities.html#xmlEntitiesTable"/>
-    <keyword type="struct" name="xmlEntity" link="libxml2-tree.html#xmlEntity"/>
-    <keyword type="struct" name="xmlEnumeration" link="libxml2-tree.html#xmlEnumeration"/>
-    <keyword type="struct" name="xmlError" link="libxml2-xmlerror.html#xmlError"/>
-    <keyword type="struct" name="xmlHashTable" link="libxml2-hash.html#xmlHashTable"/>
-    <keyword type="struct" name="xmlID" link="libxml2-tree.html#xmlID"/>
-    <keyword type="struct" name="xmlIDTable" link="libxml2-valid.html#xmlIDTable"/>
-    <keyword type="struct" name="xmlLink" link="libxml2-list.html#xmlLink"/>
-    <keyword type="struct" name="xmlList" link="libxml2-list.html#xmlList"/>
-    <keyword type="struct" name="xmlModule" link="libxml2-xmlmodule.html#xmlModule"/>
-    <keyword type="struct" name="xmlMutex" link="libxml2-threads.html#xmlMutex"/>
-    <keyword type="struct" name="xmlNode" link="libxml2-tree.html#xmlNode"/>
-    <keyword type="struct" name="xmlNodeSet" link="libxml2-xpath.html#xmlNodeSet"/>
-    <keyword type="struct" name="xmlNotation" link="libxml2-tree.html#xmlNotation"/>
-    <keyword type="struct" name="xmlNotationTable" link="libxml2-valid.html#xmlNotationTable"/>
-    <keyword type="struct" name="xmlNs" link="libxml2-tree.html#xmlNs"/>
-    <keyword type="struct" name="xmlOutputBuffer" link="libxml2-tree.html#xmlOutputBuffer"/>
-    <keyword type="struct" name="xmlParserCtxt" link="libxml2-tree.html#xmlParserCtxt"/>
-    <keyword type="struct" name="xmlParserInput" link="libxml2-tree.html#xmlParserInput"/>
-    <keyword type="struct" name="xmlParserInputBuffer" link="libxml2-tree.html#xmlParserInputBuffer"/>
-    <keyword type="struct" name="xmlParserNodeInfo" link="libxml2-parser.html#xmlParserNodeInfo"/>
-    <keyword type="struct" name="xmlParserNodeInfoSeq" link="libxml2-parser.html#xmlParserNodeInfoSeq"/>
-    <keyword type="struct" name="xmlParserNsData" link="libxml2-parser.html#xmlParserNsData"/>
-    <keyword type="struct" name="xmlPattern" link="libxml2-pattern.html#xmlPattern"/>
-    <keyword type="struct" name="xmlRMutex" link="libxml2-threads.html#xmlRMutex"/>
-    <keyword type="struct" name="xmlRef" link="libxml2-tree.html#xmlRef"/>
-    <keyword type="struct" name="xmlRefTable" link="libxml2-valid.html#xmlRefTable"/>
-    <keyword type="struct" name="xmlRegExecCtxt" link="libxml2-xmlregexp.html#xmlRegExecCtxt"/>
-    <keyword type="struct" name="xmlRegexp" link="libxml2-xmlregexp.html#xmlRegexp"/>
-    <keyword type="struct" name="xmlRelaxNG" link="libxml2-relaxng.html#xmlRelaxNG"/>
-    <keyword type="struct" name="xmlRelaxNGParserCtxt" link="libxml2-relaxng.html#xmlRelaxNGParserCtxt"/>
-    <keyword type="struct" name="xmlRelaxNGValidCtxt" link="libxml2-relaxng.html#xmlRelaxNGValidCtxt"/>
-    <keyword type="struct" name="xmlSAXHandler" link="libxml2-tree.html#xmlSAXHandler"/>
-    <keyword type="struct" name="xmlSAXHandlerV1" link="libxml2-parser.html#xmlSAXHandlerV1"/>
-    <keyword type="struct" name="xmlSAXLocator" link="libxml2-tree.html#xmlSAXLocator"/>
-    <keyword type="struct" name="xmlSaveCtxt" link="libxml2-xmlsave.html#xmlSaveCtxt"/>
-    <keyword type="struct" name="xmlSchema" link="libxml2-xmlschemas.html#xmlSchema"/>
-    <keyword type="struct" name="xmlSchemaAnnot" link="libxml2-schemasInternals.html#xmlSchemaAnnot"/>
-    <keyword type="struct" name="xmlSchemaAttribute" link="libxml2-schemasInternals.html#xmlSchemaAttribute"/>
-    <keyword type="struct" name="xmlSchemaAttributeGroup" link="libxml2-schemasInternals.html#xmlSchemaAttributeGroup"/>
-    <keyword type="struct" name="xmlSchemaAttributeLink" link="libxml2-schemasInternals.html#xmlSchemaAttributeLink"/>
-    <keyword type="struct" name="xmlSchemaElement" link="libxml2-schemasInternals.html#xmlSchemaElement"/>
-    <keyword type="struct" name="xmlSchemaFacet" link="libxml2-schemasInternals.html#xmlSchemaFacet"/>
-    <keyword type="struct" name="xmlSchemaFacetLink" link="libxml2-schemasInternals.html#xmlSchemaFacetLink"/>
-    <keyword type="struct" name="xmlSchemaNotation" link="libxml2-schemasInternals.html#xmlSchemaNotation"/>
-    <keyword type="struct" name="xmlSchemaParserCtxt" link="libxml2-xmlschemas.html#xmlSchemaParserCtxt"/>
-    <keyword type="struct" name="xmlSchemaSAXPlugStruct" link="libxml2-xmlschemas.html#xmlSchemaSAXPlugStruct"/>
-    <keyword type="struct" name="xmlSchemaType" link="libxml2-schemasInternals.html#xmlSchemaType"/>
-    <keyword type="struct" name="xmlSchemaTypeLink" link="libxml2-schemasInternals.html#xmlSchemaTypeLink"/>
-    <keyword type="struct" name="xmlSchemaVal" link="libxml2-schemasInternals.html#xmlSchemaVal"/>
-    <keyword type="struct" name="xmlSchemaValidCtxt" link="libxml2-xmlschemas.html#xmlSchemaValidCtxt"/>
-    <keyword type="struct" name="xmlSchemaWildcard" link="libxml2-schemasInternals.html#xmlSchemaWildcard"/>
-    <keyword type="struct" name="xmlSchemaWildcardNs" link="libxml2-schemasInternals.html#xmlSchemaWildcardNs"/>
-    <keyword type="struct" name="xmlSchematron" link="libxml2-schematron.html#xmlSchematron"/>
-    <keyword type="struct" name="xmlSchematronParserCtxt" link="libxml2-schematron.html#xmlSchematronParserCtxt"/>
-    <keyword type="struct" name="xmlSchematronValidCtxt" link="libxml2-schematron.html#xmlSchematronValidCtxt"/>
-    <keyword type="struct" name="xmlStartTag" link="libxml2-parser.html#xmlStartTag"/>
-    <keyword type="struct" name="xmlStreamCtxt" link="libxml2-pattern.html#xmlStreamCtxt"/>
-    <keyword type="struct" name="xmlTextReader" link="libxml2-xmlreader.html#xmlTextReader"/>
-    <keyword type="struct" name="xmlTextWriter" link="libxml2-xmlwriter.html#xmlTextWriter"/>
-    <keyword type="struct" name="xmlURI" link="libxml2-uri.html#xmlURI"/>
-    <keyword type="struct" name="xmlValidCtxt" link="libxml2-valid.html#xmlValidCtxt"/>
-    <keyword type="struct" name="xmlValidState" link="libxml2-valid.html#xmlValidState"/>
-    <keyword type="struct" name="xmlXIncludeCtxt" link="libxml2-xinclude.html#xmlXIncludeCtxt"/>
-    <keyword type="struct" name="xmlXPathAxis" link="libxml2-xpath.html#xmlXPathAxis"/>
-    <keyword type="struct" name="xmlXPathCompExpr" link="libxml2-xpath.html#xmlXPathCompExpr"/>
-    <keyword type="struct" name="xmlXPathContext" link="libxml2-xpath.html#xmlXPathContext"/>
-    <keyword type="struct" name="xmlXPathFunct" link="libxml2-xpath.html#xmlXPathFunct"/>
-    <keyword type="struct" name="xmlXPathObject" link="libxml2-xpath.html#xmlXPathObject"/>
-    <keyword type="struct" name="xmlXPathParserContext" link="libxml2-xpath.html#xmlXPathParserContext"/>
-    <keyword type="struct" name="xmlXPathType" link="libxml2-xpath.html#xmlXPathType"/>
-    <keyword type="struct" name="xmlXPathVariable" link="libxml2-xpath.html#xmlXPathVariable"/>
-    <keyword type="function" name="attributeDeclSAXFunc" link="libxml2-parser.html#attributeDeclSAXFunc"/>
-    <keyword type="function" name="attributeSAXFunc" link="libxml2-parser.html#attributeSAXFunc"/>
-    <keyword type="function" name="cdataBlockSAXFunc" link="libxml2-parser.html#cdataBlockSAXFunc"/>
-    <keyword type="function" name="charactersSAXFunc" link="libxml2-parser.html#charactersSAXFunc"/>
-    <keyword type="function" name="commentSAXFunc" link="libxml2-parser.html#commentSAXFunc"/>
-    <keyword type="function" name="elementDeclSAXFunc" link="libxml2-parser.html#elementDeclSAXFunc"/>
-    <keyword type="function" name="endDocumentSAXFunc" link="libxml2-parser.html#endDocumentSAXFunc"/>
-    <keyword type="function" name="endElementNsSAX2Func" link="libxml2-parser.html#endElementNsSAX2Func"/>
-    <keyword type="function" name="endElementSAXFunc" link="libxml2-parser.html#endElementSAXFunc"/>
-    <keyword type="function" name="entityDeclSAXFunc" link="libxml2-parser.html#entityDeclSAXFunc"/>
-    <keyword type="function" name="errorSAXFunc" link="libxml2-parser.html#errorSAXFunc"/>
-    <keyword type="function" name="externalSubsetSAXFunc" link="libxml2-parser.html#externalSubsetSAXFunc"/>
-    <keyword type="function" name="fatalErrorSAXFunc" link="libxml2-parser.html#fatalErrorSAXFunc"/>
-    <keyword type="function" name="getEntitySAXFunc" link="libxml2-parser.html#getEntitySAXFunc"/>
-    <keyword type="function" name="getParameterEntitySAXFunc" link="libxml2-parser.html#getParameterEntitySAXFunc"/>
-    <keyword type="function" name="hasExternalSubsetSAXFunc" link="libxml2-parser.html#hasExternalSubsetSAXFunc"/>
-    <keyword type="function" name="hasInternalSubsetSAXFunc" link="libxml2-parser.html#hasInternalSubsetSAXFunc"/>
-    <keyword type="function" name="ignorableWhitespaceSAXFunc" link="libxml2-parser.html#ignorableWhitespaceSAXFunc"/>
-    <keyword type="function" name="internalSubsetSAXFunc" link="libxml2-parser.html#internalSubsetSAXFunc"/>
-    <keyword type="function" name="isStandaloneSAXFunc" link="libxml2-parser.html#isStandaloneSAXFunc"/>
-    <keyword type="function" name="notationDeclSAXFunc" link="libxml2-parser.html#notationDeclSAXFunc"/>
-    <keyword type="function" name="processingInstructionSAXFunc" link="libxml2-parser.html#processingInstructionSAXFunc"/>
-    <keyword type="function" name="referenceSAXFunc" link="libxml2-parser.html#referenceSAXFunc"/>
-    <keyword type="function" name="resolveEntitySAXFunc" link="libxml2-parser.html#resolveEntitySAXFunc"/>
-    <keyword type="function" name="setDocumentLocatorSAXFunc" link="libxml2-parser.html#setDocumentLocatorSAXFunc"/>
-    <keyword type="function" name="startDocumentSAXFunc" link="libxml2-parser.html#startDocumentSAXFunc"/>
-    <keyword type="function" name="startElementNsSAX2Func" link="libxml2-parser.html#startElementNsSAX2Func"/>
-    <keyword type="function" name="startElementSAXFunc" link="libxml2-parser.html#startElementSAXFunc"/>
-    <keyword type="function" name="unparsedEntityDeclSAXFunc" link="libxml2-parser.html#unparsedEntityDeclSAXFunc"/>
-    <keyword type="function" name="warningSAXFunc" link="libxml2-parser.html#warningSAXFunc"/>
-    <keyword type="function" name="xlinkExtendedLinkFunk" link="libxml2-xlink.html#xlinkExtendedLinkFunk"/>
-    <keyword type="function" name="xlinkExtendedLinkSetFunk" link="libxml2-xlink.html#xlinkExtendedLinkSetFunk"/>
-    <keyword type="function" name="xlinkNodeDetectFunc" link="libxml2-xlink.html#xlinkNodeDetectFunc"/>
-    <keyword type="function" name="xlinkSimpleLinkFunk" link="libxml2-xlink.html#xlinkSimpleLinkFunk"/>
-    <keyword type="function" name="xmlC14NIsVisibleCallback" link="libxml2-c14n.html#xmlC14NIsVisibleCallback"/>
-    <keyword type="function" name="xmlCharEncConvCtxtDtor" link="libxml2-encoding.html#xmlCharEncConvCtxtDtor"/>
-    <keyword type="function" name="xmlCharEncConvFunc" link="libxml2-encoding.html#xmlCharEncConvFunc"/>
-    <keyword type="function" name="xmlCharEncConvImpl" link="libxml2-encoding.html#xmlCharEncConvImpl"/>
-    <keyword type="function" name="xmlCharEncodingInputFunc" link="libxml2-encoding.html#xmlCharEncodingInputFunc"/>
-    <keyword type="function" name="xmlCharEncodingOutputFunc" link="libxml2-encoding.html#xmlCharEncodingOutputFunc"/>
-    <keyword type="function" name="xmlDOMWrapAcquireNsFunction" link="libxml2-tree.html#xmlDOMWrapAcquireNsFunction"/>
-    <keyword type="function" name="xmlDeregisterNodeFunc" link="libxml2-tree.html#xmlDeregisterNodeFunc"/>
-    <keyword type="function" name="xmlExternalEntityLoader" link="libxml2-parser.html#xmlExternalEntityLoader"/>
-    <keyword type="function" name="xmlFreeFunc" link="libxml2-xmlmemory.html#xmlFreeFunc"/>
-    <keyword type="function" name="xmlGenericErrorFunc" link="libxml2-xmlerror.html#xmlGenericErrorFunc"/>
-    <keyword type="function" name="xmlHashCopier" link="libxml2-hash.html#xmlHashCopier"/>
-    <keyword type="function" name="xmlHashDeallocator" link="libxml2-hash.html#xmlHashDeallocator"/>
-    <keyword type="function" name="xmlHashScanner" link="libxml2-hash.html#xmlHashScanner"/>
-    <keyword type="function" name="xmlHashScannerFull" link="libxml2-hash.html#xmlHashScannerFull"/>
-    <keyword type="function" name="xmlInputCloseCallback" link="libxml2-xmlIO.html#xmlInputCloseCallback"/>
-    <keyword type="function" name="xmlInputMatchCallback" link="libxml2-xmlIO.html#xmlInputMatchCallback"/>
-    <keyword type="function" name="xmlInputOpenCallback" link="libxml2-xmlIO.html#xmlInputOpenCallback"/>
-    <keyword type="function" name="xmlInputReadCallback" link="libxml2-xmlIO.html#xmlInputReadCallback"/>
-    <keyword type="function" name="xmlListDataCompare" link="libxml2-list.html#xmlListDataCompare"/>
-    <keyword type="function" name="xmlListDeallocator" link="libxml2-list.html#xmlListDeallocator"/>
-    <keyword type="function" name="xmlListWalker" link="libxml2-list.html#xmlListWalker"/>
-    <keyword type="function" name="xmlMallocFunc" link="libxml2-xmlmemory.html#xmlMallocFunc"/>
-    <keyword type="function" name="xmlOutputBufferCreateFilenameFunc" link="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameFunc"/>
-    <keyword type="function" name="xmlOutputCloseCallback" link="libxml2-xmlIO.html#xmlOutputCloseCallback"/>
-    <keyword type="function" name="xmlOutputMatchCallback" link="libxml2-xmlIO.html#xmlOutputMatchCallback"/>
-    <keyword type="function" name="xmlOutputOpenCallback" link="libxml2-xmlIO.html#xmlOutputOpenCallback"/>
-    <keyword type="function" name="xmlOutputWriteCallback" link="libxml2-xmlIO.html#xmlOutputWriteCallback"/>
-    <keyword type="function" name="xmlParserInputBufferCreateFilenameFunc" link="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameFunc"/>
-    <keyword type="function" name="xmlParserInputDeallocate" link="libxml2-parser.html#xmlParserInputDeallocate"/>
-    <keyword type="function" name="xmlReallocFunc" link="libxml2-xmlmemory.html#xmlReallocFunc"/>
-    <keyword type="function" name="xmlRegExecCallbacks" link="libxml2-xmlregexp.html#xmlRegExecCallbacks"/>
-    <keyword type="function" name="xmlRegisterNodeFunc" link="libxml2-tree.html#xmlRegisterNodeFunc"/>
-    <keyword type="function" name="xmlRelaxNGValidityErrorFunc" link="libxml2-relaxng.html#xmlRelaxNGValidityErrorFunc"/>
-    <keyword type="function" name="xmlRelaxNGValidityWarningFunc" link="libxml2-relaxng.html#xmlRelaxNGValidityWarningFunc"/>
-    <keyword type="function" name="xmlResourceLoader" link="libxml2-parser.html#xmlResourceLoader"/>
-    <keyword type="function" name="xmlSchemaValidityErrorFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityErrorFunc"/>
-    <keyword type="function" name="xmlSchemaValidityLocatorFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityLocatorFunc"/>
-    <keyword type="function" name="xmlSchemaValidityWarningFunc" link="libxml2-xmlschemas.html#xmlSchemaValidityWarningFunc"/>
-    <keyword type="function" name="xmlSchematronValidityErrorFunc" link="libxml2-schematron.html#xmlSchematronValidityErrorFunc"/>
-    <keyword type="function" name="xmlSchematronValidityWarningFunc" link="libxml2-schematron.html#xmlSchematronValidityWarningFunc"/>
-    <keyword type="function" name="xmlStrdupFunc" link="libxml2-xmlmemory.html#xmlStrdupFunc"/>
-    <keyword type="function" name="xmlStructuredErrorFunc" link="libxml2-xmlerror.html#xmlStructuredErrorFunc"/>
-    <keyword type="function" name="xmlTextReaderErrorFunc" link="libxml2-xmlreader.html#xmlTextReaderErrorFunc"/>
-    <keyword type="function" name="xmlValidityErrorFunc" link="libxml2-valid.html#xmlValidityErrorFunc"/>
-    <keyword type="function" name="xmlValidityWarningFunc" link="libxml2-valid.html#xmlValidityWarningFunc"/>
-    <keyword type="function" name="xmlXPathAxisFunc" link="libxml2-xpath.html#xmlXPathAxisFunc"/>
-    <keyword type="function" name="xmlXPathConvertFunc" link="libxml2-xpath.html#xmlXPathConvertFunc"/>
-    <keyword type="function" name="xmlXPathEvalFunc" link="libxml2-xpath.html#xmlXPathEvalFunc"/>
-    <keyword type="function" name="xmlXPathFuncLookupFunc" link="libxml2-xpath.html#xmlXPathFuncLookupFunc"/>
-    <keyword type="function" name="xmlXPathFunction" link="libxml2-xpath.html#xmlXPathFunction"/>
-    <keyword type="function" name="xmlXPathVariableLookupFunc" link="libxml2-xpath.html#xmlXPathVariableLookupFunc"/>
-    <keyword type="macro" name="htmlDefaultSAXHandler" link="libxml2-HTMLparser.html#htmlDefaultSAXHandler"/>
-    <keyword type="macro" name="xmlFree" link="libxml2-xmlmemory.html#xmlFree"/>
-    <keyword type="macro" name="xmlIsBaseCharGroup" link="libxml2-chvalid.html#xmlIsBaseCharGroup"/>
-    <keyword type="macro" name="xmlIsCharGroup" link="libxml2-chvalid.html#xmlIsCharGroup"/>
-    <keyword type="macro" name="xmlIsCombiningGroup" link="libxml2-chvalid.html#xmlIsCombiningGroup"/>
-    <keyword type="macro" name="xmlIsDigitGroup" link="libxml2-chvalid.html#xmlIsDigitGroup"/>
-    <keyword type="macro" name="xmlIsExtenderGroup" link="libxml2-chvalid.html#xmlIsExtenderGroup"/>
-    <keyword type="macro" name="xmlIsIdeographicGroup" link="libxml2-chvalid.html#xmlIsIdeographicGroup"/>
-    <keyword type="macro" name="xmlIsPubidChar_tab" link="libxml2-chvalid.html#xmlIsPubidChar_tab"/>
-    <keyword type="macro" name="xmlMalloc" link="libxml2-xmlmemory.html#xmlMalloc"/>
-    <keyword type="macro" name="xmlMallocAtomic" link="libxml2-xmlmemory.html#xmlMallocAtomic"/>
-    <keyword type="macro" name="xmlMemStrdup" link="libxml2-xmlmemory.html#xmlMemStrdup"/>
-    <keyword type="macro" name="xmlParserVersion" link="libxml2-parser.html#xmlParserVersion"/>
-    <keyword type="macro" name="xmlRealloc" link="libxml2-xmlmemory.html#xmlRealloc"/>
-    <keyword type="macro" name="xmlStringComment" link="libxml2-parserInternals.html#xmlStringComment"/>
-    <keyword type="macro" name="xmlStringText" link="libxml2-parserInternals.html#xmlStringText"/>
-    <keyword type="macro" name="xmlStringTextNoenc" link="libxml2-parserInternals.html#xmlStringTextNoenc"/>
-    <keyword type="macro" name="xmlXPathNAN" link="libxml2-xpath.html#xmlXPathNAN"/>
-    <keyword type="macro" name="xmlXPathNINF" link="libxml2-xpath.html#xmlXPathNINF"/>
-    <keyword type="macro" name="xmlXPathPINF" link="libxml2-xpath.html#xmlXPathPINF"/>
-    <keyword type="function" name="htmlAttrAllowed ()" link="libxml2-HTMLparser.html#htmlAttrAllowed"/>
-    <keyword type="function" name="htmlAutoCloseTag ()" link="libxml2-HTMLparser.html#htmlAutoCloseTag"/>
-    <keyword type="function" name="htmlCreateFileParserCtxt ()" link="libxml2-HTMLparser.html#htmlCreateFileParserCtxt"/>
-    <keyword type="function" name="htmlCreateMemoryParserCtxt ()" link="libxml2-HTMLparser.html#htmlCreateMemoryParserCtxt"/>
-    <keyword type="function" name="htmlCreatePushParserCtxt ()" link="libxml2-HTMLparser.html#htmlCreatePushParserCtxt"/>
-    <keyword type="function" name="htmlCtxtParseDocument ()" link="libxml2-HTMLparser.html#htmlCtxtParseDocument"/>
-    <keyword type="function" name="htmlCtxtReadDoc ()" link="libxml2-HTMLparser.html#htmlCtxtReadDoc"/>
-    <keyword type="function" name="htmlCtxtReadFd ()" link="libxml2-HTMLparser.html#htmlCtxtReadFd"/>
-    <keyword type="function" name="htmlCtxtReadFile ()" link="libxml2-HTMLparser.html#htmlCtxtReadFile"/>
-    <keyword type="function" name="htmlCtxtReadIO ()" link="libxml2-HTMLparser.html#htmlCtxtReadIO"/>
-    <keyword type="function" name="htmlCtxtReadMemory ()" link="libxml2-HTMLparser.html#htmlCtxtReadMemory"/>
-    <keyword type="function" name="htmlCtxtReset ()" link="libxml2-HTMLparser.html#htmlCtxtReset"/>
-    <keyword type="function" name="htmlCtxtSetOptions ()" link="libxml2-HTMLparser.html#htmlCtxtSetOptions"/>
-    <keyword type="function" name="htmlCtxtUseOptions ()" link="libxml2-HTMLparser.html#htmlCtxtUseOptions"/>
-    <keyword type="function" name="htmlDefaultSAXHandlerInit ()" link="libxml2-SAX2.html#htmlDefaultSAXHandlerInit"/>
-    <keyword type="function" name="htmlDocContentDumpFormatOutput ()" link="libxml2-HTMLtree.html#htmlDocContentDumpFormatOutput"/>
-    <keyword type="function" name="htmlDocContentDumpOutput ()" link="libxml2-HTMLtree.html#htmlDocContentDumpOutput"/>
-    <keyword type="function" name="htmlDocDump ()" link="libxml2-HTMLtree.html#htmlDocDump"/>
-    <keyword type="function" name="htmlDocDumpMemory ()" link="libxml2-HTMLtree.html#htmlDocDumpMemory"/>
-    <keyword type="function" name="htmlDocDumpMemoryFormat ()" link="libxml2-HTMLtree.html#htmlDocDumpMemoryFormat"/>
-    <keyword type="function" name="htmlElementAllowedHere ()" link="libxml2-HTMLparser.html#htmlElementAllowedHere"/>
-    <keyword type="function" name="htmlElementStatusHere ()" link="libxml2-HTMLparser.html#htmlElementStatusHere"/>
-    <keyword type="function" name="htmlEncodeEntities ()" link="libxml2-HTMLparser.html#htmlEncodeEntities"/>
-    <keyword type="function" name="htmlEntityLookup ()" link="libxml2-HTMLparser.html#htmlEntityLookup"/>
-    <keyword type="function" name="htmlEntityValueLookup ()" link="libxml2-HTMLparser.html#htmlEntityValueLookup"/>
-    <keyword type="function" name="htmlFreeParserCtxt ()" link="libxml2-HTMLparser.html#htmlFreeParserCtxt"/>
-    <keyword type="function" name="htmlGetMetaEncoding ()" link="libxml2-HTMLtree.html#htmlGetMetaEncoding"/>
-    <keyword type="function" name="htmlHandleOmittedElem ()" link="libxml2-HTMLparser.html#htmlHandleOmittedElem"/>
-    <keyword type="function" name="htmlInitAutoClose ()" link="libxml2-HTMLparser.html#htmlInitAutoClose"/>
-    <keyword type="function" name="htmlIsAutoClosed ()" link="libxml2-HTMLparser.html#htmlIsAutoClosed"/>
-    <keyword type="function" name="htmlIsBooleanAttr ()" link="libxml2-HTMLtree.html#htmlIsBooleanAttr"/>
-    <keyword type="function" name="htmlIsScriptAttribute ()" link="libxml2-HTMLparser.html#htmlIsScriptAttribute"/>
-    <keyword type="function" name="htmlNewDoc ()" link="libxml2-HTMLtree.html#htmlNewDoc"/>
-    <keyword type="function" name="htmlNewDocNoDtD ()" link="libxml2-HTMLtree.html#htmlNewDocNoDtD"/>
-    <keyword type="function" name="htmlNewParserCtxt ()" link="libxml2-HTMLparser.html#htmlNewParserCtxt"/>
-    <keyword type="function" name="htmlNewSAXParserCtxt ()" link="libxml2-HTMLparser.html#htmlNewSAXParserCtxt"/>
-    <keyword type="function" name="htmlNodeDump ()" link="libxml2-HTMLtree.html#htmlNodeDump"/>
-    <keyword type="function" name="htmlNodeDumpFile ()" link="libxml2-HTMLtree.html#htmlNodeDumpFile"/>
-    <keyword type="function" name="htmlNodeDumpFileFormat ()" link="libxml2-HTMLtree.html#htmlNodeDumpFileFormat"/>
-    <keyword type="function" name="htmlNodeDumpFormatOutput ()" link="libxml2-HTMLtree.html#htmlNodeDumpFormatOutput"/>
-    <keyword type="function" name="htmlNodeDumpOutput ()" link="libxml2-HTMLtree.html#htmlNodeDumpOutput"/>
-    <keyword type="function" name="htmlNodeStatus ()" link="libxml2-HTMLparser.html#htmlNodeStatus"/>
-    <keyword type="function" name="htmlParseCharRef ()" link="libxml2-HTMLparser.html#htmlParseCharRef"/>
-    <keyword type="function" name="htmlParseChunk ()" link="libxml2-HTMLparser.html#htmlParseChunk"/>
-    <keyword type="function" name="htmlParseDoc ()" link="libxml2-HTMLparser.html#htmlParseDoc"/>
-    <keyword type="function" name="htmlParseDocument ()" link="libxml2-HTMLparser.html#htmlParseDocument"/>
-    <keyword type="function" name="htmlParseElement ()" link="libxml2-HTMLparser.html#htmlParseElement"/>
-    <keyword type="function" name="htmlParseEntityRef ()" link="libxml2-HTMLparser.html#htmlParseEntityRef"/>
-    <keyword type="function" name="htmlParseFile ()" link="libxml2-HTMLparser.html#htmlParseFile"/>
-    <keyword type="function" name="htmlReadDoc ()" link="libxml2-HTMLparser.html#htmlReadDoc"/>
-    <keyword type="function" name="htmlReadFd ()" link="libxml2-HTMLparser.html#htmlReadFd"/>
-    <keyword type="function" name="htmlReadFile ()" link="libxml2-HTMLparser.html#htmlReadFile"/>
-    <keyword type="function" name="htmlReadIO ()" link="libxml2-HTMLparser.html#htmlReadIO"/>
-    <keyword type="function" name="htmlReadMemory ()" link="libxml2-HTMLparser.html#htmlReadMemory"/>
-    <keyword type="function" name="htmlSAXParseDoc ()" link="libxml2-HTMLparser.html#htmlSAXParseDoc"/>
-    <keyword type="function" name="htmlSAXParseFile ()" link="libxml2-HTMLparser.html#htmlSAXParseFile"/>
-    <keyword type="function" name="htmlSaveFile ()" link="libxml2-HTMLtree.html#htmlSaveFile"/>
-    <keyword type="function" name="htmlSaveFileEnc ()" link="libxml2-HTMLtree.html#htmlSaveFileEnc"/>
-    <keyword type="function" name="htmlSaveFileFormat ()" link="libxml2-HTMLtree.html#htmlSaveFileFormat"/>
-    <keyword type="function" name="htmlSetMetaEncoding ()" link="libxml2-HTMLtree.html#htmlSetMetaEncoding"/>
-    <keyword type="function" name="htmlTagLookup ()" link="libxml2-HTMLparser.html#htmlTagLookup"/>
-    <keyword type="function" name="htmlUTF8ToHtml ()" link="libxml2-HTMLparser.html#htmlUTF8ToHtml"/>
-    <keyword type="function" name="xlinkGetDefaultDetect ()" link="libxml2-xlink.html#xlinkGetDefaultDetect"/>
-    <keyword type="function" name="xlinkGetDefaultHandler ()" link="libxml2-xlink.html#xlinkGetDefaultHandler"/>
-    <keyword type="function" name="xlinkIsLink ()" link="libxml2-xlink.html#xlinkIsLink"/>
-    <keyword type="function" name="xlinkSetDefaultDetect ()" link="libxml2-xlink.html#xlinkSetDefaultDetect"/>
-    <keyword type="function" name="xlinkSetDefaultHandler ()" link="libxml2-xlink.html#xlinkSetDefaultHandler"/>
-    <keyword type="function" name="xmlACatalogAdd ()" link="libxml2-catalog.html#xmlACatalogAdd"/>
-    <keyword type="function" name="xmlACatalogDump ()" link="libxml2-catalog.html#xmlACatalogDump"/>
-    <keyword type="function" name="xmlACatalogRemove ()" link="libxml2-catalog.html#xmlACatalogRemove"/>
-    <keyword type="function" name="xmlACatalogResolve ()" link="libxml2-catalog.html#xmlACatalogResolve"/>
-    <keyword type="function" name="xmlACatalogResolvePublic ()" link="libxml2-catalog.html#xmlACatalogResolvePublic"/>
-    <keyword type="function" name="xmlACatalogResolveSystem ()" link="libxml2-catalog.html#xmlACatalogResolveSystem"/>
-    <keyword type="function" name="xmlACatalogResolveURI ()" link="libxml2-catalog.html#xmlACatalogResolveURI"/>
-    <keyword type="function" name="xmlAddAttributeDecl ()" link="libxml2-valid.html#xmlAddAttributeDecl"/>
-    <keyword type="function" name="xmlAddChild ()" link="libxml2-tree.html#xmlAddChild"/>
-    <keyword type="function" name="xmlAddChildList ()" link="libxml2-tree.html#xmlAddChildList"/>
-    <keyword type="function" name="xmlAddDocEntity ()" link="libxml2-entities.html#xmlAddDocEntity"/>
-    <keyword type="function" name="xmlAddDtdEntity ()" link="libxml2-entities.html#xmlAddDtdEntity"/>
-    <keyword type="function" name="xmlAddElementDecl ()" link="libxml2-valid.html#xmlAddElementDecl"/>
-    <keyword type="function" name="xmlAddEncodingAlias ()" link="libxml2-encoding.html#xmlAddEncodingAlias"/>
-    <keyword type="function" name="xmlAddEntity ()" link="libxml2-entities.html#xmlAddEntity"/>
-    <keyword type="function" name="xmlAddID ()" link="libxml2-valid.html#xmlAddID"/>
-    <keyword type="function" name="xmlAddIDSafe ()" link="libxml2-valid.html#xmlAddIDSafe"/>
-    <keyword type="function" name="xmlAddNextSibling ()" link="libxml2-tree.html#xmlAddNextSibling"/>
-    <keyword type="function" name="xmlAddNotationDecl ()" link="libxml2-valid.html#xmlAddNotationDecl"/>
-    <keyword type="function" name="xmlAddPrevSibling ()" link="libxml2-tree.html#xmlAddPrevSibling"/>
-    <keyword type="function" name="xmlAddRef ()" link="libxml2-valid.html#xmlAddRef"/>
-    <keyword type="function" name="xmlAddSibling ()" link="libxml2-tree.html#xmlAddSibling"/>
-    <keyword type="function" name="xmlAllocOutputBuffer ()" link="libxml2-xmlIO.html#xmlAllocOutputBuffer"/>
-    <keyword type="function" name="xmlAllocParserInputBuffer ()" link="libxml2-xmlIO.html#xmlAllocParserInputBuffer"/>
-    <keyword type="function" name="xmlAttrSerializeTxtContent ()" link="libxml2-tree.html#xmlAttrSerializeTxtContent"/>
-    <keyword type="function" name="xmlAutomataCompile ()" link="libxml2-xmlautomata.html#xmlAutomataCompile"/>
-    <keyword type="function" name="xmlAutomataGetInitState ()" link="libxml2-xmlautomata.html#xmlAutomataGetInitState"/>
-    <keyword type="function" name="xmlAutomataIsDeterminist ()" link="libxml2-xmlautomata.html#xmlAutomataIsDeterminist"/>
-    <keyword type="function" name="xmlAutomataNewAllTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewAllTrans"/>
-    <keyword type="function" name="xmlAutomataNewCountTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewCountTrans"/>
-    <keyword type="function" name="xmlAutomataNewCountTrans2 ()" link="libxml2-xmlautomata.html#xmlAutomataNewCountTrans2"/>
-    <keyword type="function" name="xmlAutomataNewCountedTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewCountedTrans"/>
-    <keyword type="function" name="xmlAutomataNewCounter ()" link="libxml2-xmlautomata.html#xmlAutomataNewCounter"/>
-    <keyword type="function" name="xmlAutomataNewCounterTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewCounterTrans"/>
-    <keyword type="function" name="xmlAutomataNewEpsilon ()" link="libxml2-xmlautomata.html#xmlAutomataNewEpsilon"/>
-    <keyword type="function" name="xmlAutomataNewNegTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewNegTrans"/>
-    <keyword type="function" name="xmlAutomataNewOnceTrans ()" link="libxml2-xmlautomata.html#xmlAutomataNewOnceTrans"/>
-    <keyword type="function" name="xmlAutomataNewOnceTrans2 ()" link="libxml2-xmlautomata.html#xmlAutomataNewOnceTrans2"/>
-    <keyword type="function" name="xmlAutomataNewState ()" link="libxml2-xmlautomata.html#xmlAutomataNewState"/>
-    <keyword type="function" name="xmlAutomataNewTransition ()" link="libxml2-xmlautomata.html#xmlAutomataNewTransition"/>
-    <keyword type="function" name="xmlAutomataNewTransition2 ()" link="libxml2-xmlautomata.html#xmlAutomataNewTransition2"/>
-    <keyword type="function" name="xmlAutomataSetFinalState ()" link="libxml2-xmlautomata.html#xmlAutomataSetFinalState"/>
-    <keyword type="function" name="xmlBufContent ()" link="libxml2-tree.html#xmlBufContent"/>
-    <keyword type="function" name="xmlBufEnd ()" link="libxml2-tree.html#xmlBufEnd"/>
-    <keyword type="function" name="xmlBufGetNodeContent ()" link="libxml2-tree.html#xmlBufGetNodeContent"/>
-    <keyword type="function" name="xmlBufNodeDump ()" link="libxml2-tree.html#xmlBufNodeDump"/>
-    <keyword type="function" name="xmlBufShrink ()" link="libxml2-tree.html#xmlBufShrink"/>
-    <keyword type="function" name="xmlBufUse ()" link="libxml2-tree.html#xmlBufUse"/>
-    <keyword type="function" name="xmlBufferAdd ()" link="libxml2-tree.html#xmlBufferAdd"/>
-    <keyword type="function" name="xmlBufferAddHead ()" link="libxml2-tree.html#xmlBufferAddHead"/>
-    <keyword type="function" name="xmlBufferCCat ()" link="libxml2-tree.html#xmlBufferCCat"/>
-    <keyword type="function" name="xmlBufferCat ()" link="libxml2-tree.html#xmlBufferCat"/>
-    <keyword type="function" name="xmlBufferContent ()" link="libxml2-tree.html#xmlBufferContent"/>
-    <keyword type="function" name="xmlBufferCreate ()" link="libxml2-tree.html#xmlBufferCreate"/>
-    <keyword type="function" name="xmlBufferCreateSize ()" link="libxml2-tree.html#xmlBufferCreateSize"/>
-    <keyword type="function" name="xmlBufferCreateStatic ()" link="libxml2-tree.html#xmlBufferCreateStatic"/>
-    <keyword type="function" name="xmlBufferDetach ()" link="libxml2-tree.html#xmlBufferDetach"/>
-    <keyword type="function" name="xmlBufferDump ()" link="libxml2-tree.html#xmlBufferDump"/>
-    <keyword type="function" name="xmlBufferEmpty ()" link="libxml2-tree.html#xmlBufferEmpty"/>
-    <keyword type="function" name="xmlBufferFree ()" link="libxml2-tree.html#xmlBufferFree"/>
-    <keyword type="function" name="xmlBufferGrow ()" link="libxml2-tree.html#xmlBufferGrow"/>
-    <keyword type="function" name="xmlBufferLength ()" link="libxml2-tree.html#xmlBufferLength"/>
-    <keyword type="function" name="xmlBufferResize ()" link="libxml2-tree.html#xmlBufferResize"/>
-    <keyword type="function" name="xmlBufferSetAllocationScheme ()" link="libxml2-tree.html#xmlBufferSetAllocationScheme"/>
-    <keyword type="function" name="xmlBufferShrink ()" link="libxml2-tree.html#xmlBufferShrink"/>
-    <keyword type="function" name="xmlBufferWriteCHAR ()" link="libxml2-tree.html#xmlBufferWriteCHAR"/>
-    <keyword type="function" name="xmlBufferWriteChar ()" link="libxml2-tree.html#xmlBufferWriteChar"/>
-    <keyword type="function" name="xmlBufferWriteQuotedString ()" link="libxml2-tree.html#xmlBufferWriteQuotedString"/>
-    <keyword type="function" name="xmlBuildQName ()" link="libxml2-tree.html#xmlBuildQName"/>
-    <keyword type="function" name="xmlBuildRelativeURI ()" link="libxml2-uri.html#xmlBuildRelativeURI"/>
-    <keyword type="function" name="xmlBuildRelativeURISafe ()" link="libxml2-uri.html#xmlBuildRelativeURISafe"/>
-    <keyword type="function" name="xmlBuildURI ()" link="libxml2-uri.html#xmlBuildURI"/>
-    <keyword type="function" name="xmlBuildURISafe ()" link="libxml2-uri.html#xmlBuildURISafe"/>
-    <keyword type="function" name="xmlByteConsumed ()" link="libxml2-parser.html#xmlByteConsumed"/>
-    <keyword type="function" name="xmlC14NDocDumpMemory ()" link="libxml2-c14n.html#xmlC14NDocDumpMemory"/>
-    <keyword type="function" name="xmlC14NDocSave ()" link="libxml2-c14n.html#xmlC14NDocSave"/>
-    <keyword type="function" name="xmlC14NDocSaveTo ()" link="libxml2-c14n.html#xmlC14NDocSaveTo"/>
-    <keyword type="function" name="xmlC14NExecute ()" link="libxml2-c14n.html#xmlC14NExecute"/>
-    <keyword type="function" name="xmlCanonicPath ()" link="libxml2-uri.html#xmlCanonicPath"/>
-    <keyword type="function" name="xmlCatalogAdd ()" link="libxml2-catalog.html#xmlCatalogAdd"/>
-    <keyword type="function" name="xmlCatalogAddLocal ()" link="libxml2-catalog.html#xmlCatalogAddLocal"/>
-    <keyword type="function" name="xmlCatalogCleanup ()" link="libxml2-catalog.html#xmlCatalogCleanup"/>
-    <keyword type="function" name="xmlCatalogConvert ()" link="libxml2-catalog.html#xmlCatalogConvert"/>
-    <keyword type="function" name="xmlCatalogDump ()" link="libxml2-catalog.html#xmlCatalogDump"/>
-    <keyword type="function" name="xmlCatalogFreeLocal ()" link="libxml2-catalog.html#xmlCatalogFreeLocal"/>
-    <keyword type="function" name="xmlCatalogGetDefaults ()" link="libxml2-catalog.html#xmlCatalogGetDefaults"/>
-    <keyword type="function" name="xmlCatalogGetPublic ()" link="libxml2-catalog.html#xmlCatalogGetPublic"/>
-    <keyword type="function" name="xmlCatalogGetSystem ()" link="libxml2-catalog.html#xmlCatalogGetSystem"/>
-    <keyword type="function" name="xmlCatalogIsEmpty ()" link="libxml2-catalog.html#xmlCatalogIsEmpty"/>
-    <keyword type="function" name="xmlCatalogLocalResolve ()" link="libxml2-catalog.html#xmlCatalogLocalResolve"/>
-    <keyword type="function" name="xmlCatalogLocalResolveURI ()" link="libxml2-catalog.html#xmlCatalogLocalResolveURI"/>
-    <keyword type="function" name="xmlCatalogRemove ()" link="libxml2-catalog.html#xmlCatalogRemove"/>
-    <keyword type="function" name="xmlCatalogResolve ()" link="libxml2-catalog.html#xmlCatalogResolve"/>
-    <keyword type="function" name="xmlCatalogResolvePublic ()" link="libxml2-catalog.html#xmlCatalogResolvePublic"/>
-    <keyword type="function" name="xmlCatalogResolveSystem ()" link="libxml2-catalog.html#xmlCatalogResolveSystem"/>
-    <keyword type="function" name="xmlCatalogResolveURI ()" link="libxml2-catalog.html#xmlCatalogResolveURI"/>
-    <keyword type="function" name="xmlCatalogSetDebug ()" link="libxml2-catalog.html#xmlCatalogSetDebug"/>
-    <keyword type="function" name="xmlCatalogSetDefaultPrefer ()" link="libxml2-catalog.html#xmlCatalogSetDefaultPrefer"/>
-    <keyword type="function" name="xmlCatalogSetDefaults ()" link="libxml2-catalog.html#xmlCatalogSetDefaults"/>
-    <keyword type="function" name="xmlCharEncCloseFunc ()" link="libxml2-encoding.html#xmlCharEncCloseFunc"/>
-    <keyword type="function" name="xmlCharEncFirstLine ()" link="libxml2-encoding.html#xmlCharEncFirstLine"/>
-    <keyword type="function" name="xmlCharEncInFunc ()" link="libxml2-encoding.html#xmlCharEncInFunc"/>
-    <keyword type="function" name="xmlCharEncNewCustomHandler ()" link="libxml2-encoding.html#xmlCharEncNewCustomHandler"/>
-    <keyword type="function" name="xmlCharEncOutFunc ()" link="libxml2-encoding.html#xmlCharEncOutFunc"/>
-    <keyword type="function" name="xmlCharInRange ()" link="libxml2-chvalid.html#xmlCharInRange"/>
-    <keyword type="function" name="xmlCharStrdup ()" link="libxml2-xmlstring.html#xmlCharStrdup"/>
-    <keyword type="function" name="xmlCharStrndup ()" link="libxml2-xmlstring.html#xmlCharStrndup"/>
-    <keyword type="function" name="xmlCheckFilename ()" link="libxml2-xmlIO.html#xmlCheckFilename"/>
-    <keyword type="function" name="xmlCheckHTTPInput ()" link="libxml2-xmlIO.html#xmlCheckHTTPInput"/>
-    <keyword type="function" name="xmlCheckLanguageID ()" link="libxml2-parserInternals.html#xmlCheckLanguageID"/>
-    <keyword type="function" name="xmlCheckThreadLocalStorage ()" link="libxml2-threads.html#xmlCheckThreadLocalStorage"/>
-    <keyword type="function" name="xmlCheckUTF8 ()" link="libxml2-xmlstring.html#xmlCheckUTF8"/>
-    <keyword type="function" name="xmlChildElementCount ()" link="libxml2-tree.html#xmlChildElementCount"/>
-    <keyword type="function" name="xmlCleanupCharEncodingHandlers ()" link="libxml2-encoding.html#xmlCleanupCharEncodingHandlers"/>
-    <keyword type="function" name="xmlCleanupEncodingAliases ()" link="libxml2-encoding.html#xmlCleanupEncodingAliases"/>
-    <keyword type="function" name="xmlCleanupGlobals ()" link="libxml2-parser.html#xmlCleanupGlobals"/>
-    <keyword type="function" name="xmlCleanupInputCallbacks ()" link="libxml2-xmlIO.html#xmlCleanupInputCallbacks"/>
-    <keyword type="function" name="xmlCleanupMemory ()" link="libxml2-xmlmemory.html#xmlCleanupMemory"/>
-    <keyword type="function" name="xmlCleanupOutputCallbacks ()" link="libxml2-xmlIO.html#xmlCleanupOutputCallbacks"/>
-    <keyword type="function" name="xmlCleanupParser ()" link="libxml2-parser.html#xmlCleanupParser"/>
-    <keyword type="function" name="xmlCleanupThreads ()" link="libxml2-threads.html#xmlCleanupThreads"/>
-    <keyword type="function" name="xmlClearNodeInfoSeq ()" link="libxml2-parser.html#xmlClearNodeInfoSeq"/>
-    <keyword type="function" name="xmlClearParserCtxt ()" link="libxml2-parser.html#xmlClearParserCtxt"/>
-    <keyword type="function" name="xmlConvertSGMLCatalog ()" link="libxml2-catalog.html#xmlConvertSGMLCatalog"/>
-    <keyword type="function" name="xmlCopyAttributeTable ()" link="libxml2-valid.html#xmlCopyAttributeTable"/>
-    <keyword type="function" name="xmlCopyChar ()" link="libxml2-parserInternals.html#xmlCopyChar"/>
-    <keyword type="function" name="xmlCopyCharMultiByte ()" link="libxml2-parserInternals.html#xmlCopyCharMultiByte"/>
-    <keyword type="function" name="xmlCopyDoc ()" link="libxml2-tree.html#xmlCopyDoc"/>
-    <keyword type="function" name="xmlCopyDocElementContent ()" link="libxml2-valid.html#xmlCopyDocElementContent"/>
-    <keyword type="function" name="xmlCopyDtd ()" link="libxml2-tree.html#xmlCopyDtd"/>
-    <keyword type="function" name="xmlCopyElementContent ()" link="libxml2-valid.html#xmlCopyElementContent"/>
-    <keyword type="function" name="xmlCopyElementTable ()" link="libxml2-valid.html#xmlCopyElementTable"/>
-    <keyword type="function" name="xmlCopyEntitiesTable ()" link="libxml2-entities.html#xmlCopyEntitiesTable"/>
-    <keyword type="function" name="xmlCopyEnumeration ()" link="libxml2-valid.html#xmlCopyEnumeration"/>
-    <keyword type="function" name="xmlCopyError ()" link="libxml2-xmlerror.html#xmlCopyError"/>
-    <keyword type="function" name="xmlCopyNamespace ()" link="libxml2-tree.html#xmlCopyNamespace"/>
-    <keyword type="function" name="xmlCopyNamespaceList ()" link="libxml2-tree.html#xmlCopyNamespaceList"/>
-    <keyword type="function" name="xmlCopyNode ()" link="libxml2-tree.html#xmlCopyNode"/>
-    <keyword type="function" name="xmlCopyNodeList ()" link="libxml2-tree.html#xmlCopyNodeList"/>
-    <keyword type="function" name="xmlCopyNotationTable ()" link="libxml2-valid.html#xmlCopyNotationTable"/>
-    <keyword type="function" name="xmlCopyProp ()" link="libxml2-tree.html#xmlCopyProp"/>
-    <keyword type="function" name="xmlCopyPropList ()" link="libxml2-tree.html#xmlCopyPropList"/>
-    <keyword type="function" name="xmlCreateCharEncodingHandler ()" link="libxml2-encoding.html#xmlCreateCharEncodingHandler"/>
-    <keyword type="function" name="xmlCreateDocParserCtxt ()" link="libxml2-parser.html#xmlCreateDocParserCtxt"/>
-    <keyword type="function" name="xmlCreateEntitiesTable ()" link="libxml2-entities.html#xmlCreateEntitiesTable"/>
-    <keyword type="function" name="xmlCreateEntityParserCtxt ()" link="libxml2-parserInternals.html#xmlCreateEntityParserCtxt"/>
-    <keyword type="function" name="xmlCreateEnumeration ()" link="libxml2-valid.html#xmlCreateEnumeration"/>
-    <keyword type="function" name="xmlCreateFileParserCtxt ()" link="libxml2-parserInternals.html#xmlCreateFileParserCtxt"/>
-    <keyword type="function" name="xmlCreateIOParserCtxt ()" link="libxml2-parser.html#xmlCreateIOParserCtxt"/>
-    <keyword type="function" name="xmlCreateIntSubset ()" link="libxml2-tree.html#xmlCreateIntSubset"/>
-    <keyword type="function" name="xmlCreateMemoryParserCtxt ()" link="libxml2-parserInternals.html#xmlCreateMemoryParserCtxt"/>
-    <keyword type="function" name="xmlCreatePushParserCtxt ()" link="libxml2-parser.html#xmlCreatePushParserCtxt"/>
-    <keyword type="function" name="xmlCreateURI ()" link="libxml2-uri.html#xmlCreateURI"/>
-    <keyword type="function" name="xmlCreateURLParserCtxt ()" link="libxml2-parserInternals.html#xmlCreateURLParserCtxt"/>
-    <keyword type="function" name="xmlCtxtErrMemory ()" link="libxml2-parserInternals.html#xmlCtxtErrMemory"/>
-    <keyword type="function" name="xmlCtxtGetCatalogs ()" link="libxml2-parser.html#xmlCtxtGetCatalogs"/>
-    <keyword type="function" name="xmlCtxtGetDeclaredEncoding ()" link="libxml2-parser.html#xmlCtxtGetDeclaredEncoding"/>
-    <keyword type="function" name="xmlCtxtGetDict ()" link="libxml2-parser.html#xmlCtxtGetDict"/>
-    <keyword type="function" name="xmlCtxtGetDocument ()" link="libxml2-parser.html#xmlCtxtGetDocument"/>
-    <keyword type="function" name="xmlCtxtGetLastError ()" link="libxml2-xmlerror.html#xmlCtxtGetLastError"/>
-    <keyword type="function" name="xmlCtxtGetOptions ()" link="libxml2-parser.html#xmlCtxtGetOptions"/>
-    <keyword type="function" name="xmlCtxtGetPrivate ()" link="libxml2-parser.html#xmlCtxtGetPrivate"/>
-    <keyword type="function" name="xmlCtxtGetSaxHandler ()" link="libxml2-parser.html#xmlCtxtGetSaxHandler"/>
-    <keyword type="function" name="xmlCtxtGetStandalone ()" link="libxml2-parser.html#xmlCtxtGetStandalone"/>
-    <keyword type="function" name="xmlCtxtGetStatus ()" link="libxml2-parser.html#xmlCtxtGetStatus"/>
-    <keyword type="function" name="xmlCtxtGetValidCtxt ()" link="libxml2-parser.html#xmlCtxtGetValidCtxt"/>
-    <keyword type="function" name="xmlCtxtGetVersion ()" link="libxml2-parser.html#xmlCtxtGetVersion"/>
-    <keyword type="function" name="xmlCtxtIsHtml ()" link="libxml2-parser.html#xmlCtxtIsHtml"/>
-    <keyword type="function" name="xmlCtxtIsStopped ()" link="libxml2-parser.html#xmlCtxtIsStopped"/>
-    <keyword type="function" name="xmlCtxtParseContent ()" link="libxml2-parser.html#xmlCtxtParseContent"/>
-    <keyword type="function" name="xmlCtxtParseDocument ()" link="libxml2-parser.html#xmlCtxtParseDocument"/>
-    <keyword type="function" name="xmlCtxtParseDtd ()" link="libxml2-parser.html#xmlCtxtParseDtd"/>
-    <keyword type="function" name="xmlCtxtPopInput ()" link="libxml2-parserInternals.html#xmlCtxtPopInput"/>
-    <keyword type="function" name="xmlCtxtPushInput ()" link="libxml2-parserInternals.html#xmlCtxtPushInput"/>
-    <keyword type="function" name="xmlCtxtReadDoc ()" link="libxml2-parser.html#xmlCtxtReadDoc"/>
-    <keyword type="function" name="xmlCtxtReadFd ()" link="libxml2-parser.html#xmlCtxtReadFd"/>
-    <keyword type="function" name="xmlCtxtReadFile ()" link="libxml2-parser.html#xmlCtxtReadFile"/>
-    <keyword type="function" name="xmlCtxtReadIO ()" link="libxml2-parser.html#xmlCtxtReadIO"/>
-    <keyword type="function" name="xmlCtxtReadMemory ()" link="libxml2-parser.html#xmlCtxtReadMemory"/>
-    <keyword type="function" name="xmlCtxtReset ()" link="libxml2-parser.html#xmlCtxtReset"/>
-    <keyword type="function" name="xmlCtxtResetLastError ()" link="libxml2-xmlerror.html#xmlCtxtResetLastError"/>
-    <keyword type="function" name="xmlCtxtResetPush ()" link="libxml2-parser.html#xmlCtxtResetPush"/>
-    <keyword type="function" name="xmlCtxtSetCatalogs ()" link="libxml2-parser.html#xmlCtxtSetCatalogs"/>
-    <keyword type="function" name="xmlCtxtSetCharEncConvImpl ()" link="libxml2-parser.html#xmlCtxtSetCharEncConvImpl"/>
-    <keyword type="function" name="xmlCtxtSetDict ()" link="libxml2-parser.html#xmlCtxtSetDict"/>
-    <keyword type="function" name="xmlCtxtSetErrorHandler ()" link="libxml2-parser.html#xmlCtxtSetErrorHandler"/>
-    <keyword type="function" name="xmlCtxtSetMaxAmplification ()" link="libxml2-parser.html#xmlCtxtSetMaxAmplification"/>
-    <keyword type="function" name="xmlCtxtSetOptions ()" link="libxml2-parser.html#xmlCtxtSetOptions"/>
-    <keyword type="function" name="xmlCtxtSetPrivate ()" link="libxml2-parser.html#xmlCtxtSetPrivate"/>
-    <keyword type="function" name="xmlCtxtSetResourceLoader ()" link="libxml2-parser.html#xmlCtxtSetResourceLoader"/>
-    <keyword type="function" name="xmlCtxtSetSaxHandler ()" link="libxml2-parser.html#xmlCtxtSetSaxHandler"/>
-    <keyword type="function" name="xmlCtxtUseOptions ()" link="libxml2-parser.html#xmlCtxtUseOptions"/>
-    <keyword type="function" name="xmlCtxtValidateDocument ()" link="libxml2-parser.html#xmlCtxtValidateDocument"/>
-    <keyword type="function" name="xmlCtxtValidateDtd ()" link="libxml2-parser.html#xmlCtxtValidateDtd"/>
-    <keyword type="function" name="xmlCurrentChar ()" link="libxml2-parserInternals.html#xmlCurrentChar"/>
-    <keyword type="function" name="xmlDOMWrapAdoptNode ()" link="libxml2-tree.html#xmlDOMWrapAdoptNode"/>
-    <keyword type="function" name="xmlDOMWrapCloneNode ()" link="libxml2-tree.html#xmlDOMWrapCloneNode"/>
-    <keyword type="function" name="xmlDOMWrapFreeCtxt ()" link="libxml2-tree.html#xmlDOMWrapFreeCtxt"/>
-    <keyword type="function" name="xmlDOMWrapNewCtxt ()" link="libxml2-tree.html#xmlDOMWrapNewCtxt"/>
-    <keyword type="function" name="xmlDOMWrapReconcileNamespaces ()" link="libxml2-tree.html#xmlDOMWrapReconcileNamespaces"/>
-    <keyword type="function" name="xmlDOMWrapRemoveNode ()" link="libxml2-tree.html#xmlDOMWrapRemoveNode"/>
-    <keyword type="function" name="xmlDebugCheckDocument ()" link="libxml2-debugXML.html#xmlDebugCheckDocument"/>
-    <keyword type="function" name="xmlDebugDumpAttr ()" link="libxml2-debugXML.html#xmlDebugDumpAttr"/>
-    <keyword type="function" name="xmlDebugDumpAttrList ()" link="libxml2-debugXML.html#xmlDebugDumpAttrList"/>
-    <keyword type="function" name="xmlDebugDumpDTD ()" link="libxml2-debugXML.html#xmlDebugDumpDTD"/>
-    <keyword type="function" name="xmlDebugDumpDocument ()" link="libxml2-debugXML.html#xmlDebugDumpDocument"/>
-    <keyword type="function" name="xmlDebugDumpDocumentHead ()" link="libxml2-debugXML.html#xmlDebugDumpDocumentHead"/>
-    <keyword type="function" name="xmlDebugDumpEntities ()" link="libxml2-debugXML.html#xmlDebugDumpEntities"/>
-    <keyword type="function" name="xmlDebugDumpNode ()" link="libxml2-debugXML.html#xmlDebugDumpNode"/>
-    <keyword type="function" name="xmlDebugDumpNodeList ()" link="libxml2-debugXML.html#xmlDebugDumpNodeList"/>
-    <keyword type="function" name="xmlDebugDumpOneNode ()" link="libxml2-debugXML.html#xmlDebugDumpOneNode"/>
-    <keyword type="function" name="xmlDebugDumpString ()" link="libxml2-debugXML.html#xmlDebugDumpString"/>
-    <keyword type="function" name="xmlDefaultSAXHandlerInit ()" link="libxml2-SAX2.html#xmlDefaultSAXHandlerInit"/>
-    <keyword type="function" name="xmlDelEncodingAlias ()" link="libxml2-encoding.html#xmlDelEncodingAlias"/>
-    <keyword type="function" name="xmlDeregisterNodeDefault ()" link="libxml2-tree.html#xmlDeregisterNodeDefault"/>
-    <keyword type="function" name="xmlDetectCharEncoding ()" link="libxml2-encoding.html#xmlDetectCharEncoding"/>
-    <keyword type="function" name="xmlDictCleanup ()" link="libxml2-dict.html#xmlDictCleanup"/>
-    <keyword type="function" name="xmlDictCreate ()" link="libxml2-dict.html#xmlDictCreate"/>
-    <keyword type="function" name="xmlDictCreateSub ()" link="libxml2-dict.html#xmlDictCreateSub"/>
-    <keyword type="function" name="xmlDictExists ()" link="libxml2-dict.html#xmlDictExists"/>
-    <keyword type="function" name="xmlDictFree ()" link="libxml2-dict.html#xmlDictFree"/>
-    <keyword type="function" name="xmlDictGetUsage ()" link="libxml2-dict.html#xmlDictGetUsage"/>
-    <keyword type="function" name="xmlDictLookup ()" link="libxml2-dict.html#xmlDictLookup"/>
-    <keyword type="function" name="xmlDictOwns ()" link="libxml2-dict.html#xmlDictOwns"/>
-    <keyword type="function" name="xmlDictQLookup ()" link="libxml2-dict.html#xmlDictQLookup"/>
-    <keyword type="function" name="xmlDictReference ()" link="libxml2-dict.html#xmlDictReference"/>
-    <keyword type="function" name="xmlDictSetLimit ()" link="libxml2-dict.html#xmlDictSetLimit"/>
-    <keyword type="function" name="xmlDictSize ()" link="libxml2-dict.html#xmlDictSize"/>
-    <keyword type="function" name="xmlDocCopyNode ()" link="libxml2-tree.html#xmlDocCopyNode"/>
-    <keyword type="function" name="xmlDocCopyNodeList ()" link="libxml2-tree.html#xmlDocCopyNodeList"/>
-    <keyword type="function" name="xmlDocDump ()" link="libxml2-tree.html#xmlDocDump"/>
-    <keyword type="function" name="xmlDocDumpFormatMemory ()" link="libxml2-tree.html#xmlDocDumpFormatMemory"/>
-    <keyword type="function" name="xmlDocDumpFormatMemoryEnc ()" link="libxml2-tree.html#xmlDocDumpFormatMemoryEnc"/>
-    <keyword type="function" name="xmlDocDumpMemory ()" link="libxml2-tree.html#xmlDocDumpMemory"/>
-    <keyword type="function" name="xmlDocDumpMemoryEnc ()" link="libxml2-tree.html#xmlDocDumpMemoryEnc"/>
-    <keyword type="function" name="xmlDocFormatDump ()" link="libxml2-tree.html#xmlDocFormatDump"/>
-    <keyword type="function" name="xmlDocGetRootElement ()" link="libxml2-tree.html#xmlDocGetRootElement"/>
-    <keyword type="function" name="xmlDocSetRootElement ()" link="libxml2-tree.html#xmlDocSetRootElement"/>
-    <keyword type="function" name="xmlDumpAttributeDecl ()" link="libxml2-valid.html#xmlDumpAttributeDecl"/>
-    <keyword type="function" name="xmlDumpAttributeTable ()" link="libxml2-valid.html#xmlDumpAttributeTable"/>
-    <keyword type="function" name="xmlDumpElementDecl ()" link="libxml2-valid.html#xmlDumpElementDecl"/>
-    <keyword type="function" name="xmlDumpElementTable ()" link="libxml2-valid.html#xmlDumpElementTable"/>
-    <keyword type="function" name="xmlDumpEntitiesTable ()" link="libxml2-entities.html#xmlDumpEntitiesTable"/>
-    <keyword type="function" name="xmlDumpEntityDecl ()" link="libxml2-entities.html#xmlDumpEntityDecl"/>
-    <keyword type="function" name="xmlDumpNotationDecl ()" link="libxml2-valid.html#xmlDumpNotationDecl"/>
-    <keyword type="function" name="xmlDumpNotationTable ()" link="libxml2-valid.html#xmlDumpNotationTable"/>
-    <keyword type="function" name="xmlElemDump ()" link="libxml2-tree.html#xmlElemDump"/>
-    <keyword type="function" name="xmlEncodeEntitiesReentrant ()" link="libxml2-entities.html#xmlEncodeEntitiesReentrant"/>
-    <keyword type="function" name="xmlEncodeSpecialChars ()" link="libxml2-entities.html#xmlEncodeSpecialChars"/>
-    <keyword type="function" name="xmlFileClose ()" link="libxml2-xmlIO.html#xmlFileClose"/>
-    <keyword type="function" name="xmlFileMatch ()" link="libxml2-xmlIO.html#xmlFileMatch"/>
-    <keyword type="function" name="xmlFileOpen ()" link="libxml2-xmlIO.html#xmlFileOpen"/>
-    <keyword type="function" name="xmlFileRead ()" link="libxml2-xmlIO.html#xmlFileRead"/>
-    <keyword type="function" name="xmlFindCharEncodingHandler ()" link="libxml2-encoding.html#xmlFindCharEncodingHandler"/>
-    <keyword type="function" name="xmlFirstElementChild ()" link="libxml2-tree.html#xmlFirstElementChild"/>
-    <keyword type="function" name="xmlFormatError ()" link="libxml2-xmlerror.html#xmlFormatError"/>
-    <keyword type="function" name="xmlFreeAttributeTable ()" link="libxml2-valid.html#xmlFreeAttributeTable"/>
-    <keyword type="function" name="xmlFreeAutomata ()" link="libxml2-xmlautomata.html#xmlFreeAutomata"/>
-    <keyword type="function" name="xmlFreeCatalog ()" link="libxml2-catalog.html#xmlFreeCatalog"/>
-    <keyword type="function" name="xmlFreeDoc ()" link="libxml2-tree.html#xmlFreeDoc"/>
-    <keyword type="function" name="xmlFreeDocElementContent ()" link="libxml2-valid.html#xmlFreeDocElementContent"/>
-    <keyword type="function" name="xmlFreeDtd ()" link="libxml2-tree.html#xmlFreeDtd"/>
-    <keyword type="function" name="xmlFreeElementContent ()" link="libxml2-valid.html#xmlFreeElementContent"/>
-    <keyword type="function" name="xmlFreeElementTable ()" link="libxml2-valid.html#xmlFreeElementTable"/>
-    <keyword type="function" name="xmlFreeEntitiesTable ()" link="libxml2-entities.html#xmlFreeEntitiesTable"/>
-    <keyword type="function" name="xmlFreeEntity ()" link="libxml2-entities.html#xmlFreeEntity"/>
-    <keyword type="function" name="xmlFreeEnumeration ()" link="libxml2-valid.html#xmlFreeEnumeration"/>
-    <keyword type="function" name="xmlFreeIDTable ()" link="libxml2-valid.html#xmlFreeIDTable"/>
-    <keyword type="function" name="xmlFreeInputStream ()" link="libxml2-parserInternals.html#xmlFreeInputStream"/>
-    <keyword type="function" name="xmlFreeMutex ()" link="libxml2-threads.html#xmlFreeMutex"/>
-    <keyword type="function" name="xmlFreeNode ()" link="libxml2-tree.html#xmlFreeNode"/>
-    <keyword type="function" name="xmlFreeNodeList ()" link="libxml2-tree.html#xmlFreeNodeList"/>
-    <keyword type="function" name="xmlFreeNotationTable ()" link="libxml2-valid.html#xmlFreeNotationTable"/>
-    <keyword type="function" name="xmlFreeNs ()" link="libxml2-tree.html#xmlFreeNs"/>
-    <keyword type="function" name="xmlFreeNsList ()" link="libxml2-tree.html#xmlFreeNsList"/>
-    <keyword type="function" name="xmlFreeParserCtxt ()" link="libxml2-parser.html#xmlFreeParserCtxt"/>
-    <keyword type="function" name="xmlFreeParserInputBuffer ()" link="libxml2-xmlIO.html#xmlFreeParserInputBuffer"/>
-    <keyword type="function" name="xmlFreePattern ()" link="libxml2-pattern.html#xmlFreePattern"/>
-    <keyword type="function" name="xmlFreePatternList ()" link="libxml2-pattern.html#xmlFreePatternList"/>
-    <keyword type="function" name="xmlFreeProp ()" link="libxml2-tree.html#xmlFreeProp"/>
-    <keyword type="function" name="xmlFreePropList ()" link="libxml2-tree.html#xmlFreePropList"/>
-    <keyword type="function" name="xmlFreeRMutex ()" link="libxml2-threads.html#xmlFreeRMutex"/>
-    <keyword type="function" name="xmlFreeRefTable ()" link="libxml2-valid.html#xmlFreeRefTable"/>
-    <keyword type="function" name="xmlFreeStreamCtxt ()" link="libxml2-pattern.html#xmlFreeStreamCtxt"/>
-    <keyword type="function" name="xmlFreeTextReader ()" link="libxml2-xmlreader.html#xmlFreeTextReader"/>
-    <keyword type="function" name="xmlFreeTextWriter ()" link="libxml2-xmlwriter.html#xmlFreeTextWriter"/>
-    <keyword type="function" name="xmlFreeURI ()" link="libxml2-uri.html#xmlFreeURI"/>
-    <keyword type="function" name="xmlFreeValidCtxt ()" link="libxml2-valid.html#xmlFreeValidCtxt"/>
-    <keyword type="function" name="xmlGcMemGet ()" link="libxml2-xmlmemory.html#xmlGcMemGet"/>
-    <keyword type="function" name="xmlGcMemSetup ()" link="libxml2-xmlmemory.html#xmlGcMemSetup"/>
-    <keyword type="function" name="xmlGetBufferAllocationScheme ()" link="libxml2-tree.html#xmlGetBufferAllocationScheme"/>
-    <keyword type="function" name="xmlGetCharEncodingHandler ()" link="libxml2-encoding.html#xmlGetCharEncodingHandler"/>
-    <keyword type="function" name="xmlGetCharEncodingName ()" link="libxml2-encoding.html#xmlGetCharEncodingName"/>
-    <keyword type="function" name="xmlGetCompressMode ()" link="libxml2-tree.html#xmlGetCompressMode"/>
-    <keyword type="function" name="xmlGetDocCompressMode ()" link="libxml2-tree.html#xmlGetDocCompressMode"/>
-    <keyword type="function" name="xmlGetDocEntity ()" link="libxml2-entities.html#xmlGetDocEntity"/>
-    <keyword type="function" name="xmlGetDtdAttrDesc ()" link="libxml2-valid.html#xmlGetDtdAttrDesc"/>
-    <keyword type="function" name="xmlGetDtdElementDesc ()" link="libxml2-valid.html#xmlGetDtdElementDesc"/>
-    <keyword type="function" name="xmlGetDtdEntity ()" link="libxml2-entities.html#xmlGetDtdEntity"/>
-    <keyword type="function" name="xmlGetDtdNotationDesc ()" link="libxml2-valid.html#xmlGetDtdNotationDesc"/>
-    <keyword type="function" name="xmlGetDtdQAttrDesc ()" link="libxml2-valid.html#xmlGetDtdQAttrDesc"/>
-    <keyword type="function" name="xmlGetDtdQElementDesc ()" link="libxml2-valid.html#xmlGetDtdQElementDesc"/>
-    <keyword type="function" name="xmlGetEncodingAlias ()" link="libxml2-encoding.html#xmlGetEncodingAlias"/>
-    <keyword type="function" name="xmlGetExternalEntityLoader ()" link="libxml2-parser.html#xmlGetExternalEntityLoader"/>
-    <keyword type="function" name="xmlGetID ()" link="libxml2-valid.html#xmlGetID"/>
-    <keyword type="function" name="xmlGetIntSubset ()" link="libxml2-tree.html#xmlGetIntSubset"/>
-    <keyword type="function" name="xmlGetLastChild ()" link="libxml2-tree.html#xmlGetLastChild"/>
-    <keyword type="function" name="xmlGetLastError ()" link="libxml2-xmlerror.html#xmlGetLastError"/>
-    <keyword type="function" name="xmlGetLineNo ()" link="libxml2-tree.html#xmlGetLineNo"/>
-    <keyword type="function" name="xmlGetNoNsProp ()" link="libxml2-tree.html#xmlGetNoNsProp"/>
-    <keyword type="function" name="xmlGetNodePath ()" link="libxml2-tree.html#xmlGetNodePath"/>
-    <keyword type="function" name="xmlGetNsList ()" link="libxml2-tree.html#xmlGetNsList"/>
-    <keyword type="function" name="xmlGetNsListSafe ()" link="libxml2-tree.html#xmlGetNsListSafe"/>
-    <keyword type="function" name="xmlGetNsProp ()" link="libxml2-tree.html#xmlGetNsProp"/>
-    <keyword type="function" name="xmlGetParameterEntity ()" link="libxml2-entities.html#xmlGetParameterEntity"/>
-    <keyword type="function" name="xmlGetPredefinedEntity ()" link="libxml2-entities.html#xmlGetPredefinedEntity"/>
-    <keyword type="function" name="xmlGetProp ()" link="libxml2-tree.html#xmlGetProp"/>
-    <keyword type="function" name="xmlGetRefs ()" link="libxml2-valid.html#xmlGetRefs"/>
-    <keyword type="function" name="xmlGetUTF8Char ()" link="libxml2-xmlstring.html#xmlGetUTF8Char"/>
-    <keyword type="function" name="xmlHasFeature ()" link="libxml2-parser.html#xmlHasFeature"/>
-    <keyword type="function" name="xmlHasNsProp ()" link="libxml2-tree.html#xmlHasNsProp"/>
-    <keyword type="function" name="xmlHasProp ()" link="libxml2-tree.html#xmlHasProp"/>
-    <keyword type="function" name="xmlHashAdd ()" link="libxml2-hash.html#xmlHashAdd"/>
-    <keyword type="function" name="xmlHashAdd2 ()" link="libxml2-hash.html#xmlHashAdd2"/>
-    <keyword type="function" name="xmlHashAdd3 ()" link="libxml2-hash.html#xmlHashAdd3"/>
-    <keyword type="function" name="xmlHashAddEntry ()" link="libxml2-hash.html#xmlHashAddEntry"/>
-    <keyword type="function" name="xmlHashAddEntry2 ()" link="libxml2-hash.html#xmlHashAddEntry2"/>
-    <keyword type="function" name="xmlHashAddEntry3 ()" link="libxml2-hash.html#xmlHashAddEntry3"/>
-    <keyword type="function" name="xmlHashCopy ()" link="libxml2-hash.html#xmlHashCopy"/>
-    <keyword type="function" name="xmlHashCopySafe ()" link="libxml2-hash.html#xmlHashCopySafe"/>
-    <keyword type="function" name="xmlHashCreate ()" link="libxml2-hash.html#xmlHashCreate"/>
-    <keyword type="function" name="xmlHashCreateDict ()" link="libxml2-hash.html#xmlHashCreateDict"/>
-    <keyword type="function" name="xmlHashDefaultDeallocator ()" link="libxml2-hash.html#xmlHashDefaultDeallocator"/>
-    <keyword type="function" name="xmlHashFree ()" link="libxml2-hash.html#xmlHashFree"/>
-    <keyword type="function" name="xmlHashLookup ()" link="libxml2-hash.html#xmlHashLookup"/>
-    <keyword type="function" name="xmlHashLookup2 ()" link="libxml2-hash.html#xmlHashLookup2"/>
-    <keyword type="function" name="xmlHashLookup3 ()" link="libxml2-hash.html#xmlHashLookup3"/>
-    <keyword type="function" name="xmlHashQLookup ()" link="libxml2-hash.html#xmlHashQLookup"/>
-    <keyword type="function" name="xmlHashQLookup2 ()" link="libxml2-hash.html#xmlHashQLookup2"/>
-    <keyword type="function" name="xmlHashQLookup3 ()" link="libxml2-hash.html#xmlHashQLookup3"/>
-    <keyword type="function" name="xmlHashRemoveEntry ()" link="libxml2-hash.html#xmlHashRemoveEntry"/>
-    <keyword type="function" name="xmlHashRemoveEntry2 ()" link="libxml2-hash.html#xmlHashRemoveEntry2"/>
-    <keyword type="function" name="xmlHashRemoveEntry3 ()" link="libxml2-hash.html#xmlHashRemoveEntry3"/>
-    <keyword type="function" name="xmlHashScan ()" link="libxml2-hash.html#xmlHashScan"/>
-    <keyword type="function" name="xmlHashScan3 ()" link="libxml2-hash.html#xmlHashScan3"/>
-    <keyword type="function" name="xmlHashScanFull ()" link="libxml2-hash.html#xmlHashScanFull"/>
-    <keyword type="function" name="xmlHashScanFull3 ()" link="libxml2-hash.html#xmlHashScanFull3"/>
-    <keyword type="function" name="xmlHashSize ()" link="libxml2-hash.html#xmlHashSize"/>
-    <keyword type="function" name="xmlHashUpdateEntry ()" link="libxml2-hash.html#xmlHashUpdateEntry"/>
-    <keyword type="function" name="xmlHashUpdateEntry2 ()" link="libxml2-hash.html#xmlHashUpdateEntry2"/>
-    <keyword type="function" name="xmlHashUpdateEntry3 ()" link="libxml2-hash.html#xmlHashUpdateEntry3"/>
-    <keyword type="function" name="xmlIOHTTPClose ()" link="libxml2-xmlIO.html#xmlIOHTTPClose"/>
-    <keyword type="function" name="xmlIOHTTPMatch ()" link="libxml2-xmlIO.html#xmlIOHTTPMatch"/>
-    <keyword type="function" name="xmlIOHTTPOpen ()" link="libxml2-xmlIO.html#xmlIOHTTPOpen"/>
-    <keyword type="function" name="xmlIOHTTPOpenW ()" link="libxml2-xmlIO.html#xmlIOHTTPOpenW"/>
-    <keyword type="function" name="xmlIOHTTPRead ()" link="libxml2-xmlIO.html#xmlIOHTTPRead"/>
-    <keyword type="function" name="xmlIOParseDTD ()" link="libxml2-parser.html#xmlIOParseDTD"/>
-    <keyword type="function" name="xmlInitCharEncodingHandlers ()" link="libxml2-encoding.html#xmlInitCharEncodingHandlers"/>
-    <keyword type="function" name="xmlInitGlobals ()" link="libxml2-parser.html#xmlInitGlobals"/>
-    <keyword type="function" name="xmlInitMemory ()" link="libxml2-xmlmemory.html#xmlInitMemory"/>
-    <keyword type="function" name="xmlInitNodeInfoSeq ()" link="libxml2-parser.html#xmlInitNodeInfoSeq"/>
-    <keyword type="function" name="xmlInitParser ()" link="libxml2-parser.html#xmlInitParser"/>
-    <keyword type="function" name="xmlInitParserCtxt ()" link="libxml2-parser.html#xmlInitParserCtxt"/>
-    <keyword type="function" name="xmlInitThreads ()" link="libxml2-threads.html#xmlInitThreads"/>
-    <keyword type="function" name="xmlInitializeCatalog ()" link="libxml2-catalog.html#xmlInitializeCatalog"/>
-    <keyword type="function" name="xmlInitializeDict ()" link="libxml2-dict.html#xmlInitializeDict"/>
-    <keyword type="function" name="xmlInputSetEncodingHandler ()" link="libxml2-parser.html#xmlInputSetEncodingHandler"/>
-    <keyword type="function" name="xmlIsBaseChar ()" link="libxml2-chvalid.html#xmlIsBaseChar"/>
-    <keyword type="function" name="xmlIsBlank ()" link="libxml2-chvalid.html#xmlIsBlank"/>
-    <keyword type="function" name="xmlIsBlankNode ()" link="libxml2-tree.html#xmlIsBlankNode"/>
-    <keyword type="function" name="xmlIsChar ()" link="libxml2-chvalid.html#xmlIsChar"/>
-    <keyword type="function" name="xmlIsCombining ()" link="libxml2-chvalid.html#xmlIsCombining"/>
-    <keyword type="function" name="xmlIsDigit ()" link="libxml2-chvalid.html#xmlIsDigit"/>
-    <keyword type="function" name="xmlIsExtender ()" link="libxml2-chvalid.html#xmlIsExtender"/>
-    <keyword type="function" name="xmlIsID ()" link="libxml2-valid.html#xmlIsID"/>
-    <keyword type="function" name="xmlIsIdeographic ()" link="libxml2-chvalid.html#xmlIsIdeographic"/>
-    <keyword type="function" name="xmlIsLetter ()" link="libxml2-parserInternals.html#xmlIsLetter"/>
-    <keyword type="function" name="xmlIsMixedElement ()" link="libxml2-valid.html#xmlIsMixedElement"/>
-    <keyword type="function" name="xmlIsPubidChar ()" link="libxml2-chvalid.html#xmlIsPubidChar"/>
-    <keyword type="function" name="xmlIsRef ()" link="libxml2-valid.html#xmlIsRef"/>
-    <keyword type="function" name="xmlIsXHTML ()" link="libxml2-tree.html#xmlIsXHTML"/>
-    <keyword type="function" name="xmlIsolat1ToUTF8 ()" link="libxml2-encoding.html#xmlIsolat1ToUTF8"/>
-    <keyword type="function" name="xmlKeepBlanksDefault ()" link="libxml2-parser.html#xmlKeepBlanksDefault"/>
-    <keyword type="function" name="xmlLastElementChild ()" link="libxml2-tree.html#xmlLastElementChild"/>
-    <keyword type="function" name="xmlLineNumbersDefault ()" link="libxml2-parser.html#xmlLineNumbersDefault"/>
-    <keyword type="function" name="xmlLinkGetData ()" link="libxml2-list.html#xmlLinkGetData"/>
-    <keyword type="function" name="xmlListAppend ()" link="libxml2-list.html#xmlListAppend"/>
-    <keyword type="function" name="xmlListClear ()" link="libxml2-list.html#xmlListClear"/>
-    <keyword type="function" name="xmlListCopy ()" link="libxml2-list.html#xmlListCopy"/>
-    <keyword type="function" name="xmlListCreate ()" link="libxml2-list.html#xmlListCreate"/>
-    <keyword type="function" name="xmlListDelete ()" link="libxml2-list.html#xmlListDelete"/>
-    <keyword type="function" name="xmlListDup ()" link="libxml2-list.html#xmlListDup"/>
-    <keyword type="function" name="xmlListEmpty ()" link="libxml2-list.html#xmlListEmpty"/>
-    <keyword type="function" name="xmlListEnd ()" link="libxml2-list.html#xmlListEnd"/>
-    <keyword type="function" name="xmlListFront ()" link="libxml2-list.html#xmlListFront"/>
-    <keyword type="function" name="xmlListInsert ()" link="libxml2-list.html#xmlListInsert"/>
-    <keyword type="function" name="xmlListMerge ()" link="libxml2-list.html#xmlListMerge"/>
-    <keyword type="function" name="xmlListPopBack ()" link="libxml2-list.html#xmlListPopBack"/>
-    <keyword type="function" name="xmlListPopFront ()" link="libxml2-list.html#xmlListPopFront"/>
-    <keyword type="function" name="xmlListPushBack ()" link="libxml2-list.html#xmlListPushBack"/>
-    <keyword type="function" name="xmlListPushFront ()" link="libxml2-list.html#xmlListPushFront"/>
-    <keyword type="function" name="xmlListRemoveAll ()" link="libxml2-list.html#xmlListRemoveAll"/>
-    <keyword type="function" name="xmlListRemoveFirst ()" link="libxml2-list.html#xmlListRemoveFirst"/>
-    <keyword type="function" name="xmlListRemoveLast ()" link="libxml2-list.html#xmlListRemoveLast"/>
-    <keyword type="function" name="xmlListReverse ()" link="libxml2-list.html#xmlListReverse"/>
-    <keyword type="function" name="xmlListReverseSearch ()" link="libxml2-list.html#xmlListReverseSearch"/>
-    <keyword type="function" name="xmlListReverseWalk ()" link="libxml2-list.html#xmlListReverseWalk"/>
-    <keyword type="function" name="xmlListSearch ()" link="libxml2-list.html#xmlListSearch"/>
-    <keyword type="function" name="xmlListSize ()" link="libxml2-list.html#xmlListSize"/>
-    <keyword type="function" name="xmlListSort ()" link="libxml2-list.html#xmlListSort"/>
-    <keyword type="function" name="xmlListWalk ()" link="libxml2-list.html#xmlListWalk"/>
-    <keyword type="function" name="xmlLoadACatalog ()" link="libxml2-catalog.html#xmlLoadACatalog"/>
-    <keyword type="function" name="xmlLoadCatalog ()" link="libxml2-catalog.html#xmlLoadCatalog"/>
-    <keyword type="function" name="xmlLoadCatalogs ()" link="libxml2-catalog.html#xmlLoadCatalogs"/>
-    <keyword type="function" name="xmlLoadExternalEntity ()" link="libxml2-parser.html#xmlLoadExternalEntity"/>
-    <keyword type="function" name="xmlLoadSGMLSuperCatalog ()" link="libxml2-catalog.html#xmlLoadSGMLSuperCatalog"/>
-    <keyword type="function" name="xmlLockLibrary ()" link="libxml2-threads.html#xmlLockLibrary"/>
-    <keyword type="function" name="xmlLookupCharEncodingHandler ()" link="libxml2-encoding.html#xmlLookupCharEncodingHandler"/>
-    <keyword type="function" name="xmlMallocAtomicLoc ()" link="libxml2-xmlmemory.html#xmlMallocAtomicLoc"/>
-    <keyword type="function" name="xmlMallocLoc ()" link="libxml2-xmlmemory.html#xmlMallocLoc"/>
-    <keyword type="function" name="xmlMemBlocks ()" link="libxml2-xmlmemory.html#xmlMemBlocks"/>
-    <keyword type="function" name="xmlMemDisplay ()" link="libxml2-xmlmemory.html#xmlMemDisplay"/>
-    <keyword type="function" name="xmlMemDisplayLast ()" link="libxml2-xmlmemory.html#xmlMemDisplayLast"/>
-    <keyword type="function" name="xmlMemFree ()" link="libxml2-xmlmemory.html#xmlMemFree"/>
-    <keyword type="function" name="xmlMemGet ()" link="libxml2-xmlmemory.html#xmlMemGet"/>
-    <keyword type="function" name="xmlMemMalloc ()" link="libxml2-xmlmemory.html#xmlMemMalloc"/>
-    <keyword type="function" name="xmlMemRealloc ()" link="libxml2-xmlmemory.html#xmlMemRealloc"/>
-    <keyword type="function" name="xmlMemSetup ()" link="libxml2-xmlmemory.html#xmlMemSetup"/>
-    <keyword type="function" name="xmlMemShow ()" link="libxml2-xmlmemory.html#xmlMemShow"/>
-    <keyword type="function" name="xmlMemSize ()" link="libxml2-xmlmemory.html#xmlMemSize"/>
-    <keyword type="function" name="xmlMemStrdupLoc ()" link="libxml2-xmlmemory.html#xmlMemStrdupLoc"/>
-    <keyword type="function" name="xmlMemUsed ()" link="libxml2-xmlmemory.html#xmlMemUsed"/>
-    <keyword type="function" name="xmlMemoryDump ()" link="libxml2-xmlmemory.html#xmlMemoryDump"/>
-    <keyword type="function" name="xmlMemoryStrdup ()" link="libxml2-xmlmemory.html#xmlMemoryStrdup"/>
-    <keyword type="function" name="xmlModuleClose ()" link="libxml2-xmlmodule.html#xmlModuleClose"/>
-    <keyword type="function" name="xmlModuleFree ()" link="libxml2-xmlmodule.html#xmlModuleFree"/>
-    <keyword type="function" name="xmlModuleOpen ()" link="libxml2-xmlmodule.html#xmlModuleOpen"/>
-    <keyword type="function" name="xmlModuleSymbol ()" link="libxml2-xmlmodule.html#xmlModuleSymbol"/>
-    <keyword type="function" name="xmlMutexLock ()" link="libxml2-threads.html#xmlMutexLock"/>
-    <keyword type="function" name="xmlMutexUnlock ()" link="libxml2-threads.html#xmlMutexUnlock"/>
-    <keyword type="function" name="xmlNanoHTTPAuthHeader ()" link="libxml2-nanohttp.html#xmlNanoHTTPAuthHeader"/>
-    <keyword type="function" name="xmlNanoHTTPCleanup ()" link="libxml2-nanohttp.html#xmlNanoHTTPCleanup"/>
-    <keyword type="function" name="xmlNanoHTTPClose ()" link="libxml2-nanohttp.html#xmlNanoHTTPClose"/>
-    <keyword type="function" name="xmlNanoHTTPContentLength ()" link="libxml2-nanohttp.html#xmlNanoHTTPContentLength"/>
-    <keyword type="function" name="xmlNanoHTTPEncoding ()" link="libxml2-nanohttp.html#xmlNanoHTTPEncoding"/>
-    <keyword type="function" name="xmlNanoHTTPFetch ()" link="libxml2-nanohttp.html#xmlNanoHTTPFetch"/>
-    <keyword type="function" name="xmlNanoHTTPInit ()" link="libxml2-nanohttp.html#xmlNanoHTTPInit"/>
-    <keyword type="function" name="xmlNanoHTTPMethod ()" link="libxml2-nanohttp.html#xmlNanoHTTPMethod"/>
-    <keyword type="function" name="xmlNanoHTTPMethodRedir ()" link="libxml2-nanohttp.html#xmlNanoHTTPMethodRedir"/>
-    <keyword type="function" name="xmlNanoHTTPMimeType ()" link="libxml2-nanohttp.html#xmlNanoHTTPMimeType"/>
-    <keyword type="function" name="xmlNanoHTTPOpen ()" link="libxml2-nanohttp.html#xmlNanoHTTPOpen"/>
-    <keyword type="function" name="xmlNanoHTTPOpenRedir ()" link="libxml2-nanohttp.html#xmlNanoHTTPOpenRedir"/>
-    <keyword type="function" name="xmlNanoHTTPRead ()" link="libxml2-nanohttp.html#xmlNanoHTTPRead"/>
-    <keyword type="function" name="xmlNanoHTTPRedir ()" link="libxml2-nanohttp.html#xmlNanoHTTPRedir"/>
-    <keyword type="function" name="xmlNanoHTTPReturnCode ()" link="libxml2-nanohttp.html#xmlNanoHTTPReturnCode"/>
-    <keyword type="function" name="xmlNanoHTTPSave ()" link="libxml2-nanohttp.html#xmlNanoHTTPSave"/>
-    <keyword type="function" name="xmlNanoHTTPScanProxy ()" link="libxml2-nanohttp.html#xmlNanoHTTPScanProxy"/>
-    <keyword type="function" name="xmlNewAutomata ()" link="libxml2-xmlautomata.html#xmlNewAutomata"/>
-    <keyword type="function" name="xmlNewCDataBlock ()" link="libxml2-tree.html#xmlNewCDataBlock"/>
-    <keyword type="function" name="xmlNewCatalog ()" link="libxml2-catalog.html#xmlNewCatalog"/>
-    <keyword type="function" name="xmlNewCharEncodingHandler ()" link="libxml2-encoding.html#xmlNewCharEncodingHandler"/>
-    <keyword type="function" name="xmlNewCharRef ()" link="libxml2-tree.html#xmlNewCharRef"/>
-    <keyword type="function" name="xmlNewChild ()" link="libxml2-tree.html#xmlNewChild"/>
-    <keyword type="function" name="xmlNewComment ()" link="libxml2-tree.html#xmlNewComment"/>
-    <keyword type="function" name="xmlNewDoc ()" link="libxml2-tree.html#xmlNewDoc"/>
-    <keyword type="function" name="xmlNewDocComment ()" link="libxml2-tree.html#xmlNewDocComment"/>
-    <keyword type="function" name="xmlNewDocElementContent ()" link="libxml2-valid.html#xmlNewDocElementContent"/>
-    <keyword type="function" name="xmlNewDocFragment ()" link="libxml2-tree.html#xmlNewDocFragment"/>
-    <keyword type="function" name="xmlNewDocNode ()" link="libxml2-tree.html#xmlNewDocNode"/>
-    <keyword type="function" name="xmlNewDocNodeEatName ()" link="libxml2-tree.html#xmlNewDocNodeEatName"/>
-    <keyword type="function" name="xmlNewDocPI ()" link="libxml2-tree.html#xmlNewDocPI"/>
-    <keyword type="function" name="xmlNewDocProp ()" link="libxml2-tree.html#xmlNewDocProp"/>
-    <keyword type="function" name="xmlNewDocRawNode ()" link="libxml2-tree.html#xmlNewDocRawNode"/>
-    <keyword type="function" name="xmlNewDocText ()" link="libxml2-tree.html#xmlNewDocText"/>
-    <keyword type="function" name="xmlNewDocTextLen ()" link="libxml2-tree.html#xmlNewDocTextLen"/>
-    <keyword type="function" name="xmlNewDtd ()" link="libxml2-tree.html#xmlNewDtd"/>
-    <keyword type="function" name="xmlNewElementContent ()" link="libxml2-valid.html#xmlNewElementContent"/>
-    <keyword type="function" name="xmlNewEntity ()" link="libxml2-entities.html#xmlNewEntity"/>
-    <keyword type="function" name="xmlNewEntityInputStream ()" link="libxml2-parserInternals.html#xmlNewEntityInputStream"/>
-    <keyword type="function" name="xmlNewIOInputStream ()" link="libxml2-parser.html#xmlNewIOInputStream"/>
-    <keyword type="function" name="xmlNewInputFromFd ()" link="libxml2-parser.html#xmlNewInputFromFd"/>
-    <keyword type="function" name="xmlNewInputFromFile ()" link="libxml2-parserInternals.html#xmlNewInputFromFile"/>
-    <keyword type="function" name="xmlNewInputFromIO ()" link="libxml2-parser.html#xmlNewInputFromIO"/>
-    <keyword type="function" name="xmlNewInputFromMemory ()" link="libxml2-parser.html#xmlNewInputFromMemory"/>
-    <keyword type="function" name="xmlNewInputFromString ()" link="libxml2-parser.html#xmlNewInputFromString"/>
-    <keyword type="function" name="xmlNewInputFromUrl ()" link="libxml2-parser.html#xmlNewInputFromUrl"/>
-    <keyword type="function" name="xmlNewInputStream ()" link="libxml2-parserInternals.html#xmlNewInputStream"/>
-    <keyword type="function" name="xmlNewMutex ()" link="libxml2-threads.html#xmlNewMutex"/>
-    <keyword type="function" name="xmlNewNode ()" link="libxml2-tree.html#xmlNewNode"/>
-    <keyword type="function" name="xmlNewNodeEatName ()" link="libxml2-tree.html#xmlNewNodeEatName"/>
-    <keyword type="function" name="xmlNewNs ()" link="libxml2-tree.html#xmlNewNs"/>
-    <keyword type="function" name="xmlNewNsProp ()" link="libxml2-tree.html#xmlNewNsProp"/>
-    <keyword type="function" name="xmlNewNsPropEatName ()" link="libxml2-tree.html#xmlNewNsPropEatName"/>
-    <keyword type="function" name="xmlNewPI ()" link="libxml2-tree.html#xmlNewPI"/>
-    <keyword type="function" name="xmlNewParserCtxt ()" link="libxml2-parser.html#xmlNewParserCtxt"/>
-    <keyword type="function" name="xmlNewProp ()" link="libxml2-tree.html#xmlNewProp"/>
-    <keyword type="function" name="xmlNewRMutex ()" link="libxml2-threads.html#xmlNewRMutex"/>
-    <keyword type="function" name="xmlNewReference ()" link="libxml2-tree.html#xmlNewReference"/>
-    <keyword type="function" name="xmlNewSAXParserCtxt ()" link="libxml2-parser.html#xmlNewSAXParserCtxt"/>
-    <keyword type="function" name="xmlNewStringInputStream ()" link="libxml2-parserInternals.html#xmlNewStringInputStream"/>
-    <keyword type="function" name="xmlNewText ()" link="libxml2-tree.html#xmlNewText"/>
-    <keyword type="function" name="xmlNewTextChild ()" link="libxml2-tree.html#xmlNewTextChild"/>
-    <keyword type="function" name="xmlNewTextLen ()" link="libxml2-tree.html#xmlNewTextLen"/>
-    <keyword type="function" name="xmlNewTextReader ()" link="libxml2-xmlreader.html#xmlNewTextReader"/>
-    <keyword type="function" name="xmlNewTextReaderFilename ()" link="libxml2-xmlreader.html#xmlNewTextReaderFilename"/>
-    <keyword type="function" name="xmlNewTextWriter ()" link="libxml2-xmlwriter.html#xmlNewTextWriter"/>
-    <keyword type="function" name="xmlNewTextWriterDoc ()" link="libxml2-xmlwriter.html#xmlNewTextWriterDoc"/>
-    <keyword type="function" name="xmlNewTextWriterFilename ()" link="libxml2-xmlwriter.html#xmlNewTextWriterFilename"/>
-    <keyword type="function" name="xmlNewTextWriterMemory ()" link="libxml2-xmlwriter.html#xmlNewTextWriterMemory"/>
-    <keyword type="function" name="xmlNewTextWriterPushParser ()" link="libxml2-xmlwriter.html#xmlNewTextWriterPushParser"/>
-    <keyword type="function" name="xmlNewTextWriterTree ()" link="libxml2-xmlwriter.html#xmlNewTextWriterTree"/>
-    <keyword type="function" name="xmlNewValidCtxt ()" link="libxml2-valid.html#xmlNewValidCtxt"/>
-    <keyword type="function" name="xmlNextChar ()" link="libxml2-parserInternals.html#xmlNextChar"/>
-    <keyword type="function" name="xmlNextElementSibling ()" link="libxml2-tree.html#xmlNextElementSibling"/>
-    <keyword type="function" name="xmlNoNetExternalEntityLoader ()" link="libxml2-xmlIO.html#xmlNoNetExternalEntityLoader"/>
-    <keyword type="function" name="xmlNodeAddContent ()" link="libxml2-tree.html#xmlNodeAddContent"/>
-    <keyword type="function" name="xmlNodeAddContentLen ()" link="libxml2-tree.html#xmlNodeAddContentLen"/>
-    <keyword type="function" name="xmlNodeBufGetContent ()" link="libxml2-tree.html#xmlNodeBufGetContent"/>
-    <keyword type="function" name="xmlNodeDump ()" link="libxml2-tree.html#xmlNodeDump"/>
-    <keyword type="function" name="xmlNodeDumpOutput ()" link="libxml2-tree.html#xmlNodeDumpOutput"/>
-    <keyword type="function" name="xmlNodeGetAttrValue ()" link="libxml2-tree.html#xmlNodeGetAttrValue"/>
-    <keyword type="function" name="xmlNodeGetBase ()" link="libxml2-tree.html#xmlNodeGetBase"/>
-    <keyword type="function" name="xmlNodeGetBaseSafe ()" link="libxml2-tree.html#xmlNodeGetBaseSafe"/>
-    <keyword type="function" name="xmlNodeGetContent ()" link="libxml2-tree.html#xmlNodeGetContent"/>
-    <keyword type="function" name="xmlNodeGetLang ()" link="libxml2-tree.html#xmlNodeGetLang"/>
-    <keyword type="function" name="xmlNodeGetSpacePreserve ()" link="libxml2-tree.html#xmlNodeGetSpacePreserve"/>
-    <keyword type="function" name="xmlNodeIsText ()" link="libxml2-tree.html#xmlNodeIsText"/>
-    <keyword type="function" name="xmlNodeListGetRawString ()" link="libxml2-tree.html#xmlNodeListGetRawString"/>
-    <keyword type="function" name="xmlNodeListGetString ()" link="libxml2-tree.html#xmlNodeListGetString"/>
-    <keyword type="function" name="xmlNodeSetBase ()" link="libxml2-tree.html#xmlNodeSetBase"/>
-    <keyword type="function" name="xmlNodeSetContent ()" link="libxml2-tree.html#xmlNodeSetContent"/>
-    <keyword type="function" name="xmlNodeSetContentLen ()" link="libxml2-tree.html#xmlNodeSetContentLen"/>
-    <keyword type="function" name="xmlNodeSetLang ()" link="libxml2-tree.html#xmlNodeSetLang"/>
-    <keyword type="function" name="xmlNodeSetName ()" link="libxml2-tree.html#xmlNodeSetName"/>
-    <keyword type="function" name="xmlNodeSetSpacePreserve ()" link="libxml2-tree.html#xmlNodeSetSpacePreserve"/>
-    <keyword type="function" name="xmlNormalizeURIPath ()" link="libxml2-uri.html#xmlNormalizeURIPath"/>
-    <keyword type="function" name="xmlNormalizeWindowsPath ()" link="libxml2-xmlIO.html#xmlNormalizeWindowsPath"/>
-    <keyword type="function" name="xmlOpenCharEncodingHandler ()" link="libxml2-encoding.html#xmlOpenCharEncodingHandler"/>
-    <keyword type="function" name="xmlOutputBufferClose ()" link="libxml2-xmlIO.html#xmlOutputBufferClose"/>
-    <keyword type="function" name="xmlOutputBufferCreateBuffer ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateBuffer"/>
-    <keyword type="function" name="xmlOutputBufferCreateFd ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateFd"/>
-    <keyword type="function" name="xmlOutputBufferCreateFile ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateFile"/>
-    <keyword type="function" name="xmlOutputBufferCreateFilename ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateFilename"/>
-    <keyword type="function" name="xmlOutputBufferCreateFilenameDefault ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateFilenameDefault"/>
-    <keyword type="function" name="xmlOutputBufferCreateIO ()" link="libxml2-xmlIO.html#xmlOutputBufferCreateIO"/>
-    <keyword type="function" name="xmlOutputBufferFlush ()" link="libxml2-xmlIO.html#xmlOutputBufferFlush"/>
-    <keyword type="function" name="xmlOutputBufferGetContent ()" link="libxml2-xmlIO.html#xmlOutputBufferGetContent"/>
-    <keyword type="function" name="xmlOutputBufferGetSize ()" link="libxml2-xmlIO.html#xmlOutputBufferGetSize"/>
-    <keyword type="function" name="xmlOutputBufferWrite ()" link="libxml2-xmlIO.html#xmlOutputBufferWrite"/>
-    <keyword type="function" name="xmlOutputBufferWriteEscape ()" link="libxml2-xmlIO.html#xmlOutputBufferWriteEscape"/>
-    <keyword type="function" name="xmlOutputBufferWriteString ()" link="libxml2-xmlIO.html#xmlOutputBufferWriteString"/>
-    <keyword type="function" name="xmlParseAttValue ()" link="libxml2-parserInternals.html#xmlParseAttValue"/>
-    <keyword type="function" name="xmlParseAttribute ()" link="libxml2-parserInternals.html#xmlParseAttribute"/>
-    <keyword type="function" name="xmlParseAttributeListDecl ()" link="libxml2-parserInternals.html#xmlParseAttributeListDecl"/>
-    <keyword type="function" name="xmlParseAttributeType ()" link="libxml2-parserInternals.html#xmlParseAttributeType"/>
-    <keyword type="function" name="xmlParseBalancedChunkMemory ()" link="libxml2-parser.html#xmlParseBalancedChunkMemory"/>
-    <keyword type="function" name="xmlParseBalancedChunkMemoryRecover ()" link="libxml2-parser.html#xmlParseBalancedChunkMemoryRecover"/>
-    <keyword type="function" name="xmlParseCDSect ()" link="libxml2-parserInternals.html#xmlParseCDSect"/>
-    <keyword type="function" name="xmlParseCatalogFile ()" link="libxml2-catalog.html#xmlParseCatalogFile"/>
-    <keyword type="function" name="xmlParseCharData ()" link="libxml2-parserInternals.html#xmlParseCharData"/>
-    <keyword type="function" name="xmlParseCharEncoding ()" link="libxml2-encoding.html#xmlParseCharEncoding"/>
-    <keyword type="function" name="xmlParseCharRef ()" link="libxml2-parserInternals.html#xmlParseCharRef"/>
-    <keyword type="function" name="xmlParseChunk ()" link="libxml2-parser.html#xmlParseChunk"/>
-    <keyword type="function" name="xmlParseComment ()" link="libxml2-parserInternals.html#xmlParseComment"/>
-    <keyword type="function" name="xmlParseContent ()" link="libxml2-parserInternals.html#xmlParseContent"/>
-    <keyword type="function" name="xmlParseCtxtExternalEntity ()" link="libxml2-parser.html#xmlParseCtxtExternalEntity"/>
-    <keyword type="function" name="xmlParseDTD ()" link="libxml2-parser.html#xmlParseDTD"/>
-    <keyword type="function" name="xmlParseDefaultDecl ()" link="libxml2-parserInternals.html#xmlParseDefaultDecl"/>
-    <keyword type="function" name="xmlParseDoc ()" link="libxml2-parser.html#xmlParseDoc"/>
-    <keyword type="function" name="xmlParseDocTypeDecl ()" link="libxml2-parserInternals.html#xmlParseDocTypeDecl"/>
-    <keyword type="function" name="xmlParseDocument ()" link="libxml2-parser.html#xmlParseDocument"/>
-    <keyword type="function" name="xmlParseElement ()" link="libxml2-parserInternals.html#xmlParseElement"/>
-    <keyword type="function" name="xmlParseElementChildrenContentDecl ()" link="libxml2-parserInternals.html#xmlParseElementChildrenContentDecl"/>
-    <keyword type="function" name="xmlParseElementContentDecl ()" link="libxml2-parserInternals.html#xmlParseElementContentDecl"/>
-    <keyword type="function" name="xmlParseElementDecl ()" link="libxml2-parserInternals.html#xmlParseElementDecl"/>
-    <keyword type="function" name="xmlParseElementMixedContentDecl ()" link="libxml2-parserInternals.html#xmlParseElementMixedContentDecl"/>
-    <keyword type="function" name="xmlParseEncName ()" link="libxml2-parserInternals.html#xmlParseEncName"/>
-    <keyword type="function" name="xmlParseEncodingDecl ()" link="libxml2-parserInternals.html#xmlParseEncodingDecl"/>
-    <keyword type="function" name="xmlParseEndTag ()" link="libxml2-parserInternals.html#xmlParseEndTag"/>
-    <keyword type="function" name="xmlParseEntity ()" link="libxml2-parser.html#xmlParseEntity"/>
-    <keyword type="function" name="xmlParseEntityDecl ()" link="libxml2-parserInternals.html#xmlParseEntityDecl"/>
-    <keyword type="function" name="xmlParseEntityRef ()" link="libxml2-parserInternals.html#xmlParseEntityRef"/>
-    <keyword type="function" name="xmlParseEntityValue ()" link="libxml2-parserInternals.html#xmlParseEntityValue"/>
-    <keyword type="function" name="xmlParseEnumeratedType ()" link="libxml2-parserInternals.html#xmlParseEnumeratedType"/>
-    <keyword type="function" name="xmlParseEnumerationType ()" link="libxml2-parserInternals.html#xmlParseEnumerationType"/>
-    <keyword type="function" name="xmlParseExtParsedEnt ()" link="libxml2-parser.html#xmlParseExtParsedEnt"/>
-    <keyword type="function" name="xmlParseExternalEntity ()" link="libxml2-parser.html#xmlParseExternalEntity"/>
-    <keyword type="function" name="xmlParseExternalID ()" link="libxml2-parserInternals.html#xmlParseExternalID"/>
-    <keyword type="function" name="xmlParseExternalSubset ()" link="libxml2-parserInternals.html#xmlParseExternalSubset"/>
-    <keyword type="function" name="xmlParseFile ()" link="libxml2-parser.html#xmlParseFile"/>
-    <keyword type="function" name="xmlParseInNodeContext ()" link="libxml2-parser.html#xmlParseInNodeContext"/>
-    <keyword type="function" name="xmlParseMarkupDecl ()" link="libxml2-parserInternals.html#xmlParseMarkupDecl"/>
-    <keyword type="function" name="xmlParseMemory ()" link="libxml2-parser.html#xmlParseMemory"/>
-    <keyword type="function" name="xmlParseMisc ()" link="libxml2-parserInternals.html#xmlParseMisc"/>
-    <keyword type="function" name="xmlParseName ()" link="libxml2-parserInternals.html#xmlParseName"/>
-    <keyword type="function" name="xmlParseNmtoken ()" link="libxml2-parserInternals.html#xmlParseNmtoken"/>
-    <keyword type="function" name="xmlParseNotationDecl ()" link="libxml2-parserInternals.html#xmlParseNotationDecl"/>
-    <keyword type="function" name="xmlParseNotationType ()" link="libxml2-parserInternals.html#xmlParseNotationType"/>
-    <keyword type="function" name="xmlParsePEReference ()" link="libxml2-parserInternals.html#xmlParsePEReference"/>
-    <keyword type="function" name="xmlParsePI ()" link="libxml2-parserInternals.html#xmlParsePI"/>
-    <keyword type="function" name="xmlParsePITarget ()" link="libxml2-parserInternals.html#xmlParsePITarget"/>
-    <keyword type="function" name="xmlParsePubidLiteral ()" link="libxml2-parserInternals.html#xmlParsePubidLiteral"/>
-    <keyword type="function" name="xmlParseReference ()" link="libxml2-parserInternals.html#xmlParseReference"/>
-    <keyword type="function" name="xmlParseSDDecl ()" link="libxml2-parserInternals.html#xmlParseSDDecl"/>
-    <keyword type="function" name="xmlParseStartTag ()" link="libxml2-parserInternals.html#xmlParseStartTag"/>
-    <keyword type="function" name="xmlParseSystemLiteral ()" link="libxml2-parserInternals.html#xmlParseSystemLiteral"/>
-    <keyword type="function" name="xmlParseTextDecl ()" link="libxml2-parserInternals.html#xmlParseTextDecl"/>
-    <keyword type="function" name="xmlParseURI ()" link="libxml2-uri.html#xmlParseURI"/>
-    <keyword type="function" name="xmlParseURIRaw ()" link="libxml2-uri.html#xmlParseURIRaw"/>
-    <keyword type="function" name="xmlParseURIReference ()" link="libxml2-uri.html#xmlParseURIReference"/>
-    <keyword type="function" name="xmlParseURISafe ()" link="libxml2-uri.html#xmlParseURISafe"/>
-    <keyword type="function" name="xmlParseVersionInfo ()" link="libxml2-parserInternals.html#xmlParseVersionInfo"/>
-    <keyword type="function" name="xmlParseVersionNum ()" link="libxml2-parserInternals.html#xmlParseVersionNum"/>
-    <keyword type="function" name="xmlParseXMLDecl ()" link="libxml2-parserInternals.html#xmlParseXMLDecl"/>
-    <keyword type="function" name="xmlParserAddNodeInfo ()" link="libxml2-parser.html#xmlParserAddNodeInfo"/>
-    <keyword type="function" name="xmlParserError ()" link="libxml2-xmlerror.html#xmlParserError"/>
-    <keyword type="function" name="xmlParserFindNodeInfo ()" link="libxml2-parser.html#xmlParserFindNodeInfo"/>
-    <keyword type="function" name="xmlParserFindNodeInfoIndex ()" link="libxml2-parser.html#xmlParserFindNodeInfoIndex"/>
-    <keyword type="function" name="xmlParserGetDirectory ()" link="libxml2-xmlIO.html#xmlParserGetDirectory"/>
-    <keyword type="function" name="xmlParserHandlePEReference ()" link="libxml2-parserInternals.html#xmlParserHandlePEReference"/>
-    <keyword type="function" name="xmlParserInputBufferCreateFd ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateFd"/>
-    <keyword type="function" name="xmlParserInputBufferCreateFile ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateFile"/>
-    <keyword type="function" name="xmlParserInputBufferCreateFilename ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateFilename"/>
-    <keyword type="function" name="xmlParserInputBufferCreateFilenameDefault ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateFilenameDefault"/>
-    <keyword type="function" name="xmlParserInputBufferCreateIO ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateIO"/>
-    <keyword type="function" name="xmlParserInputBufferCreateMem ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateMem"/>
-    <keyword type="function" name="xmlParserInputBufferCreateStatic ()" link="libxml2-xmlIO.html#xmlParserInputBufferCreateStatic"/>
-    <keyword type="function" name="xmlParserInputBufferGrow ()" link="libxml2-xmlIO.html#xmlParserInputBufferGrow"/>
-    <keyword type="function" name="xmlParserInputBufferPush ()" link="libxml2-xmlIO.html#xmlParserInputBufferPush"/>
-    <keyword type="function" name="xmlParserInputBufferRead ()" link="libxml2-xmlIO.html#xmlParserInputBufferRead"/>
-    <keyword type="function" name="xmlParserInputGrow ()" link="libxml2-parser.html#xmlParserInputGrow"/>
-    <keyword type="function" name="xmlParserInputRead ()" link="libxml2-parser.html#xmlParserInputRead"/>
-    <keyword type="function" name="xmlParserInputShrink ()" link="libxml2-parserInternals.html#xmlParserInputShrink"/>
-    <keyword type="function" name="xmlParserPrintFileContext ()" link="libxml2-xmlerror.html#xmlParserPrintFileContext"/>
-    <keyword type="function" name="xmlParserPrintFileInfo ()" link="libxml2-xmlerror.html#xmlParserPrintFileInfo"/>
-    <keyword type="function" name="xmlParserValidityError ()" link="libxml2-xmlerror.html#xmlParserValidityError"/>
-    <keyword type="function" name="xmlParserValidityWarning ()" link="libxml2-xmlerror.html#xmlParserValidityWarning"/>
-    <keyword type="function" name="xmlParserWarning ()" link="libxml2-xmlerror.html#xmlParserWarning"/>
-    <keyword type="function" name="xmlPathToURI ()" link="libxml2-uri.html#xmlPathToURI"/>
-    <keyword type="function" name="xmlPatternCompileSafe ()" link="libxml2-pattern.html#xmlPatternCompileSafe"/>
-    <keyword type="function" name="xmlPatternFromRoot ()" link="libxml2-pattern.html#xmlPatternFromRoot"/>
-    <keyword type="function" name="xmlPatternGetStreamCtxt ()" link="libxml2-pattern.html#xmlPatternGetStreamCtxt"/>
-    <keyword type="function" name="xmlPatternMatch ()" link="libxml2-pattern.html#xmlPatternMatch"/>
-    <keyword type="function" name="xmlPatternMaxDepth ()" link="libxml2-pattern.html#xmlPatternMaxDepth"/>
-    <keyword type="function" name="xmlPatternMinDepth ()" link="libxml2-pattern.html#xmlPatternMinDepth"/>
-    <keyword type="function" name="xmlPatternStreamable ()" link="libxml2-pattern.html#xmlPatternStreamable"/>
-    <keyword type="function" name="xmlPatterncompile ()" link="libxml2-pattern.html#xmlPatterncompile"/>
-    <keyword type="function" name="xmlPedanticParserDefault ()" link="libxml2-parser.html#xmlPedanticParserDefault"/>
-    <keyword type="function" name="xmlPopInput ()" link="libxml2-parserInternals.html#xmlPopInput"/>
-    <keyword type="function" name="xmlPopInputCallbacks ()" link="libxml2-xmlIO.html#xmlPopInputCallbacks"/>
-    <keyword type="function" name="xmlPopOutputCallbacks ()" link="libxml2-xmlIO.html#xmlPopOutputCallbacks"/>
-    <keyword type="function" name="xmlPreviousElementSibling ()" link="libxml2-tree.html#xmlPreviousElementSibling"/>
-    <keyword type="function" name="xmlPrintURI ()" link="libxml2-uri.html#xmlPrintURI"/>
-    <keyword type="function" name="xmlPushInput ()" link="libxml2-parserInternals.html#xmlPushInput"/>
-    <keyword type="function" name="xmlRMutexLock ()" link="libxml2-threads.html#xmlRMutexLock"/>
-    <keyword type="function" name="xmlRMutexUnlock ()" link="libxml2-threads.html#xmlRMutexUnlock"/>
-    <keyword type="function" name="xmlReadDoc ()" link="libxml2-parser.html#xmlReadDoc"/>
-    <keyword type="function" name="xmlReadFd ()" link="libxml2-parser.html#xmlReadFd"/>
-    <keyword type="function" name="xmlReadFile ()" link="libxml2-parser.html#xmlReadFile"/>
-    <keyword type="function" name="xmlReadIO ()" link="libxml2-parser.html#xmlReadIO"/>
-    <keyword type="function" name="xmlReadMemory ()" link="libxml2-parser.html#xmlReadMemory"/>
-    <keyword type="function" name="xmlReaderForDoc ()" link="libxml2-xmlreader.html#xmlReaderForDoc"/>
-    <keyword type="function" name="xmlReaderForFd ()" link="libxml2-xmlreader.html#xmlReaderForFd"/>
-    <keyword type="function" name="xmlReaderForFile ()" link="libxml2-xmlreader.html#xmlReaderForFile"/>
-    <keyword type="function" name="xmlReaderForIO ()" link="libxml2-xmlreader.html#xmlReaderForIO"/>
-    <keyword type="function" name="xmlReaderForMemory ()" link="libxml2-xmlreader.html#xmlReaderForMemory"/>
-    <keyword type="function" name="xmlReaderNewDoc ()" link="libxml2-xmlreader.html#xmlReaderNewDoc"/>
-    <keyword type="function" name="xmlReaderNewFd ()" link="libxml2-xmlreader.html#xmlReaderNewFd"/>
-    <keyword type="function" name="xmlReaderNewFile ()" link="libxml2-xmlreader.html#xmlReaderNewFile"/>
-    <keyword type="function" name="xmlReaderNewIO ()" link="libxml2-xmlreader.html#xmlReaderNewIO"/>
-    <keyword type="function" name="xmlReaderNewMemory ()" link="libxml2-xmlreader.html#xmlReaderNewMemory"/>
-    <keyword type="function" name="xmlReaderNewWalker ()" link="libxml2-xmlreader.html#xmlReaderNewWalker"/>
-    <keyword type="function" name="xmlReaderWalker ()" link="libxml2-xmlreader.html#xmlReaderWalker"/>
-    <keyword type="function" name="xmlReallocLoc ()" link="libxml2-xmlmemory.html#xmlReallocLoc"/>
-    <keyword type="function" name="xmlReconciliateNs ()" link="libxml2-tree.html#xmlReconciliateNs"/>
-    <keyword type="function" name="xmlRecoverDoc ()" link="libxml2-parser.html#xmlRecoverDoc"/>
-    <keyword type="function" name="xmlRecoverFile ()" link="libxml2-parser.html#xmlRecoverFile"/>
-    <keyword type="function" name="xmlRecoverMemory ()" link="libxml2-parser.html#xmlRecoverMemory"/>
-    <keyword type="function" name="xmlRegExecErrInfo ()" link="libxml2-xmlregexp.html#xmlRegExecErrInfo"/>
-    <keyword type="function" name="xmlRegExecNextValues ()" link="libxml2-xmlregexp.html#xmlRegExecNextValues"/>
-    <keyword type="function" name="xmlRegExecPushString ()" link="libxml2-xmlregexp.html#xmlRegExecPushString"/>
-    <keyword type="function" name="xmlRegExecPushString2 ()" link="libxml2-xmlregexp.html#xmlRegExecPushString2"/>
-    <keyword type="function" name="xmlRegFreeExecCtxt ()" link="libxml2-xmlregexp.html#xmlRegFreeExecCtxt"/>
-    <keyword type="function" name="xmlRegFreeRegexp ()" link="libxml2-xmlregexp.html#xmlRegFreeRegexp"/>
-    <keyword type="function" name="xmlRegNewExecCtxt ()" link="libxml2-xmlregexp.html#xmlRegNewExecCtxt"/>
-    <keyword type="function" name="xmlRegexpCompile ()" link="libxml2-xmlregexp.html#xmlRegexpCompile"/>
-    <keyword type="function" name="xmlRegexpExec ()" link="libxml2-xmlregexp.html#xmlRegexpExec"/>
-    <keyword type="function" name="xmlRegexpIsDeterminist ()" link="libxml2-xmlregexp.html#xmlRegexpIsDeterminist"/>
-    <keyword type="function" name="xmlRegexpPrint ()" link="libxml2-xmlregexp.html#xmlRegexpPrint"/>
-    <keyword type="function" name="xmlRegisterCharEncodingHandler ()" link="libxml2-encoding.html#xmlRegisterCharEncodingHandler"/>
-    <keyword type="function" name="xmlRegisterDefaultInputCallbacks ()" link="libxml2-xmlIO.html#xmlRegisterDefaultInputCallbacks"/>
-    <keyword type="function" name="xmlRegisterDefaultOutputCallbacks ()" link="libxml2-xmlIO.html#xmlRegisterDefaultOutputCallbacks"/>
-    <keyword type="function" name="xmlRegisterHTTPPostCallbacks ()" link="libxml2-xmlIO.html#xmlRegisterHTTPPostCallbacks"/>
-    <keyword type="function" name="xmlRegisterInputCallbacks ()" link="libxml2-xmlIO.html#xmlRegisterInputCallbacks"/>
-    <keyword type="function" name="xmlRegisterNodeDefault ()" link="libxml2-tree.html#xmlRegisterNodeDefault"/>
-    <keyword type="function" name="xmlRegisterOutputCallbacks ()" link="libxml2-xmlIO.html#xmlRegisterOutputCallbacks"/>
-    <keyword type="function" name="xmlRelaxNGCleanupTypes ()" link="libxml2-relaxng.html#xmlRelaxNGCleanupTypes"/>
-    <keyword type="function" name="xmlRelaxNGDump ()" link="libxml2-relaxng.html#xmlRelaxNGDump"/>
-    <keyword type="function" name="xmlRelaxNGDumpTree ()" link="libxml2-relaxng.html#xmlRelaxNGDumpTree"/>
-    <keyword type="function" name="xmlRelaxNGFree ()" link="libxml2-relaxng.html#xmlRelaxNGFree"/>
-    <keyword type="function" name="xmlRelaxNGFreeParserCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGFreeParserCtxt"/>
-    <keyword type="function" name="xmlRelaxNGFreeValidCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGFreeValidCtxt"/>
-    <keyword type="function" name="xmlRelaxNGGetParserErrors ()" link="libxml2-relaxng.html#xmlRelaxNGGetParserErrors"/>
-    <keyword type="function" name="xmlRelaxNGGetValidErrors ()" link="libxml2-relaxng.html#xmlRelaxNGGetValidErrors"/>
-    <keyword type="function" name="xmlRelaxNGInitTypes ()" link="libxml2-relaxng.html#xmlRelaxNGInitTypes"/>
-    <keyword type="function" name="xmlRelaxNGNewDocParserCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGNewDocParserCtxt"/>
-    <keyword type="function" name="xmlRelaxNGNewMemParserCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGNewMemParserCtxt"/>
-    <keyword type="function" name="xmlRelaxNGNewParserCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGNewParserCtxt"/>
-    <keyword type="function" name="xmlRelaxNGNewValidCtxt ()" link="libxml2-relaxng.html#xmlRelaxNGNewValidCtxt"/>
-    <keyword type="function" name="xmlRelaxNGParse ()" link="libxml2-relaxng.html#xmlRelaxNGParse"/>
-    <keyword type="function" name="xmlRelaxNGSetParserErrors ()" link="libxml2-relaxng.html#xmlRelaxNGSetParserErrors"/>
-    <keyword type="function" name="xmlRelaxNGSetParserStructuredErrors ()" link="libxml2-relaxng.html#xmlRelaxNGSetParserStructuredErrors"/>
-    <keyword type="function" name="xmlRelaxNGSetResourceLoader ()" link="libxml2-relaxng.html#xmlRelaxNGSetResourceLoader"/>
-    <keyword type="function" name="xmlRelaxNGSetValidErrors ()" link="libxml2-relaxng.html#xmlRelaxNGSetValidErrors"/>
-    <keyword type="function" name="xmlRelaxNGSetValidStructuredErrors ()" link="libxml2-relaxng.html#xmlRelaxNGSetValidStructuredErrors"/>
-    <keyword type="function" name="xmlRelaxNGValidateDoc ()" link="libxml2-relaxng.html#xmlRelaxNGValidateDoc"/>
-    <keyword type="function" name="xmlRelaxNGValidateFullElement ()" link="libxml2-relaxng.html#xmlRelaxNGValidateFullElement"/>
-    <keyword type="function" name="xmlRelaxNGValidatePopElement ()" link="libxml2-relaxng.html#xmlRelaxNGValidatePopElement"/>
-    <keyword type="function" name="xmlRelaxNGValidatePushCData ()" link="libxml2-relaxng.html#xmlRelaxNGValidatePushCData"/>
-    <keyword type="function" name="xmlRelaxNGValidatePushElement ()" link="libxml2-relaxng.html#xmlRelaxNGValidatePushElement"/>
-    <keyword type="function" name="xmlRelaxParserSetFlag ()" link="libxml2-relaxng.html#xmlRelaxParserSetFlag"/>
-    <keyword type="function" name="xmlRemoveID ()" link="libxml2-valid.html#xmlRemoveID"/>
-    <keyword type="function" name="xmlRemoveProp ()" link="libxml2-tree.html#xmlRemoveProp"/>
-    <keyword type="function" name="xmlRemoveRef ()" link="libxml2-valid.html#xmlRemoveRef"/>
-    <keyword type="function" name="xmlReplaceNode ()" link="libxml2-tree.html#xmlReplaceNode"/>
-    <keyword type="function" name="xmlResetError ()" link="libxml2-xmlerror.html#xmlResetError"/>
-    <keyword type="function" name="xmlResetLastError ()" link="libxml2-xmlerror.html#xmlResetLastError"/>
-    <keyword type="function" name="xmlSAX2AttributeDecl ()" link="libxml2-SAX2.html#xmlSAX2AttributeDecl"/>
-    <keyword type="function" name="xmlSAX2CDataBlock ()" link="libxml2-SAX2.html#xmlSAX2CDataBlock"/>
-    <keyword type="function" name="xmlSAX2Characters ()" link="libxml2-SAX2.html#xmlSAX2Characters"/>
-    <keyword type="function" name="xmlSAX2Comment ()" link="libxml2-SAX2.html#xmlSAX2Comment"/>
-    <keyword type="function" name="xmlSAX2ElementDecl ()" link="libxml2-SAX2.html#xmlSAX2ElementDecl"/>
-    <keyword type="function" name="xmlSAX2EndDocument ()" link="libxml2-SAX2.html#xmlSAX2EndDocument"/>
-    <keyword type="function" name="xmlSAX2EndElement ()" link="libxml2-SAX2.html#xmlSAX2EndElement"/>
-    <keyword type="function" name="xmlSAX2EndElementNs ()" link="libxml2-SAX2.html#xmlSAX2EndElementNs"/>
-    <keyword type="function" name="xmlSAX2EntityDecl ()" link="libxml2-SAX2.html#xmlSAX2EntityDecl"/>
-    <keyword type="function" name="xmlSAX2ExternalSubset ()" link="libxml2-SAX2.html#xmlSAX2ExternalSubset"/>
-    <keyword type="function" name="xmlSAX2GetColumnNumber ()" link="libxml2-SAX2.html#xmlSAX2GetColumnNumber"/>
-    <keyword type="function" name="xmlSAX2GetEntity ()" link="libxml2-SAX2.html#xmlSAX2GetEntity"/>
-    <keyword type="function" name="xmlSAX2GetLineNumber ()" link="libxml2-SAX2.html#xmlSAX2GetLineNumber"/>
-    <keyword type="function" name="xmlSAX2GetParameterEntity ()" link="libxml2-SAX2.html#xmlSAX2GetParameterEntity"/>
-    <keyword type="function" name="xmlSAX2GetPublicId ()" link="libxml2-SAX2.html#xmlSAX2GetPublicId"/>
-    <keyword type="function" name="xmlSAX2GetSystemId ()" link="libxml2-SAX2.html#xmlSAX2GetSystemId"/>
-    <keyword type="function" name="xmlSAX2HasExternalSubset ()" link="libxml2-SAX2.html#xmlSAX2HasExternalSubset"/>
-    <keyword type="function" name="xmlSAX2HasInternalSubset ()" link="libxml2-SAX2.html#xmlSAX2HasInternalSubset"/>
-    <keyword type="function" name="xmlSAX2IgnorableWhitespace ()" link="libxml2-SAX2.html#xmlSAX2IgnorableWhitespace"/>
-    <keyword type="function" name="xmlSAX2InitDefaultSAXHandler ()" link="libxml2-SAX2.html#xmlSAX2InitDefaultSAXHandler"/>
-    <keyword type="function" name="xmlSAX2InitHtmlDefaultSAXHandler ()" link="libxml2-SAX2.html#xmlSAX2InitHtmlDefaultSAXHandler"/>
-    <keyword type="function" name="xmlSAX2InternalSubset ()" link="libxml2-SAX2.html#xmlSAX2InternalSubset"/>
-    <keyword type="function" name="xmlSAX2IsStandalone ()" link="libxml2-SAX2.html#xmlSAX2IsStandalone"/>
-    <keyword type="function" name="xmlSAX2NotationDecl ()" link="libxml2-SAX2.html#xmlSAX2NotationDecl"/>
-    <keyword type="function" name="xmlSAX2ProcessingInstruction ()" link="libxml2-SAX2.html#xmlSAX2ProcessingInstruction"/>
-    <keyword type="function" name="xmlSAX2Reference ()" link="libxml2-SAX2.html#xmlSAX2Reference"/>
-    <keyword type="function" name="xmlSAX2ResolveEntity ()" link="libxml2-SAX2.html#xmlSAX2ResolveEntity"/>
-    <keyword type="function" name="xmlSAX2SetDocumentLocator ()" link="libxml2-SAX2.html#xmlSAX2SetDocumentLocator"/>
-    <keyword type="function" name="xmlSAX2StartDocument ()" link="libxml2-SAX2.html#xmlSAX2StartDocument"/>
-    <keyword type="function" name="xmlSAX2StartElement ()" link="libxml2-SAX2.html#xmlSAX2StartElement"/>
-    <keyword type="function" name="xmlSAX2StartElementNs ()" link="libxml2-SAX2.html#xmlSAX2StartElementNs"/>
-    <keyword type="function" name="xmlSAX2UnparsedEntityDecl ()" link="libxml2-SAX2.html#xmlSAX2UnparsedEntityDecl"/>
-    <keyword type="function" name="xmlSAXDefaultVersion ()" link="libxml2-SAX2.html#xmlSAXDefaultVersion"/>
-    <keyword type="function" name="xmlSAXParseDTD ()" link="libxml2-parser.html#xmlSAXParseDTD"/>
-    <keyword type="function" name="xmlSAXParseDoc ()" link="libxml2-parser.html#xmlSAXParseDoc"/>
-    <keyword type="function" name="xmlSAXParseEntity ()" link="libxml2-parser.html#xmlSAXParseEntity"/>
-    <keyword type="function" name="xmlSAXParseFile ()" link="libxml2-parser.html#xmlSAXParseFile"/>
-    <keyword type="function" name="xmlSAXParseFileWithData ()" link="libxml2-parser.html#xmlSAXParseFileWithData"/>
-    <keyword type="function" name="xmlSAXParseMemory ()" link="libxml2-parser.html#xmlSAXParseMemory"/>
-    <keyword type="function" name="xmlSAXParseMemoryWithData ()" link="libxml2-parser.html#xmlSAXParseMemoryWithData"/>
-    <keyword type="function" name="xmlSAXUserParseFile ()" link="libxml2-parser.html#xmlSAXUserParseFile"/>
-    <keyword type="function" name="xmlSAXUserParseMemory ()" link="libxml2-parser.html#xmlSAXUserParseMemory"/>
-    <keyword type="function" name="xmlSAXVersion ()" link="libxml2-SAX2.html#xmlSAXVersion"/>
-    <keyword type="function" name="xmlSaveClose ()" link="libxml2-xmlsave.html#xmlSaveClose"/>
-    <keyword type="function" name="xmlSaveDoc ()" link="libxml2-xmlsave.html#xmlSaveDoc"/>
-    <keyword type="function" name="xmlSaveFile ()" link="libxml2-tree.html#xmlSaveFile"/>
-    <keyword type="function" name="xmlSaveFileEnc ()" link="libxml2-tree.html#xmlSaveFileEnc"/>
-    <keyword type="function" name="xmlSaveFileTo ()" link="libxml2-tree.html#xmlSaveFileTo"/>
-    <keyword type="function" name="xmlSaveFinish ()" link="libxml2-xmlsave.html#xmlSaveFinish"/>
-    <keyword type="function" name="xmlSaveFlush ()" link="libxml2-xmlsave.html#xmlSaveFlush"/>
-    <keyword type="function" name="xmlSaveFormatFile ()" link="libxml2-tree.html#xmlSaveFormatFile"/>
-    <keyword type="function" name="xmlSaveFormatFileEnc ()" link="libxml2-tree.html#xmlSaveFormatFileEnc"/>
-    <keyword type="function" name="xmlSaveFormatFileTo ()" link="libxml2-tree.html#xmlSaveFormatFileTo"/>
-    <keyword type="function" name="xmlSaveSetAttrEscape ()" link="libxml2-xmlsave.html#xmlSaveSetAttrEscape"/>
-    <keyword type="function" name="xmlSaveSetEscape ()" link="libxml2-xmlsave.html#xmlSaveSetEscape"/>
-    <keyword type="function" name="xmlSaveSetIndentString ()" link="libxml2-xmlsave.html#xmlSaveSetIndentString"/>
-    <keyword type="function" name="xmlSaveToBuffer ()" link="libxml2-xmlsave.html#xmlSaveToBuffer"/>
-    <keyword type="function" name="xmlSaveToFd ()" link="libxml2-xmlsave.html#xmlSaveToFd"/>
-    <keyword type="function" name="xmlSaveToFilename ()" link="libxml2-xmlsave.html#xmlSaveToFilename"/>
-    <keyword type="function" name="xmlSaveToIO ()" link="libxml2-xmlsave.html#xmlSaveToIO"/>
-    <keyword type="function" name="xmlSaveTree ()" link="libxml2-xmlsave.html#xmlSaveTree"/>
-    <keyword type="function" name="xmlSaveUri ()" link="libxml2-uri.html#xmlSaveUri"/>
-    <keyword type="function" name="xmlSchemaCheckFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaCheckFacet"/>
-    <keyword type="function" name="xmlSchemaCleanupTypes ()" link="libxml2-xmlschemastypes.html#xmlSchemaCleanupTypes"/>
-    <keyword type="function" name="xmlSchemaCollapseString ()" link="libxml2-xmlschemastypes.html#xmlSchemaCollapseString"/>
-    <keyword type="function" name="xmlSchemaCompareValues ()" link="libxml2-xmlschemastypes.html#xmlSchemaCompareValues"/>
-    <keyword type="function" name="xmlSchemaCompareValuesWhtsp ()" link="libxml2-xmlschemastypes.html#xmlSchemaCompareValuesWhtsp"/>
-    <keyword type="function" name="xmlSchemaCopyValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaCopyValue"/>
-    <keyword type="function" name="xmlSchemaDump ()" link="libxml2-xmlschemas.html#xmlSchemaDump"/>
-    <keyword type="function" name="xmlSchemaFree ()" link="libxml2-xmlschemas.html#xmlSchemaFree"/>
-    <keyword type="function" name="xmlSchemaFreeFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaFreeFacet"/>
-    <keyword type="function" name="xmlSchemaFreeParserCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaFreeParserCtxt"/>
-    <keyword type="function" name="xmlSchemaFreeType ()" link="libxml2-schemasInternals.html#xmlSchemaFreeType"/>
-    <keyword type="function" name="xmlSchemaFreeValidCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaFreeValidCtxt"/>
-    <keyword type="function" name="xmlSchemaFreeValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaFreeValue"/>
-    <keyword type="function" name="xmlSchemaFreeWildcard ()" link="libxml2-schemasInternals.html#xmlSchemaFreeWildcard"/>
-    <keyword type="function" name="xmlSchemaGetBuiltInListSimpleTypeItemType ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType"/>
-    <keyword type="function" name="xmlSchemaGetBuiltInType ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetBuiltInType"/>
-    <keyword type="function" name="xmlSchemaGetCanonValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetCanonValue"/>
-    <keyword type="function" name="xmlSchemaGetCanonValueWhtsp ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp"/>
-    <keyword type="function" name="xmlSchemaGetFacetValueAsULong ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong"/>
-    <keyword type="function" name="xmlSchemaGetParserErrors ()" link="libxml2-xmlschemas.html#xmlSchemaGetParserErrors"/>
-    <keyword type="function" name="xmlSchemaGetPredefinedType ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetPredefinedType"/>
-    <keyword type="function" name="xmlSchemaGetValType ()" link="libxml2-xmlschemastypes.html#xmlSchemaGetValType"/>
-    <keyword type="function" name="xmlSchemaGetValidErrors ()" link="libxml2-xmlschemas.html#xmlSchemaGetValidErrors"/>
-    <keyword type="function" name="xmlSchemaInitTypes ()" link="libxml2-xmlschemastypes.html#xmlSchemaInitTypes"/>
-    <keyword type="function" name="xmlSchemaIsBuiltInTypeFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet"/>
-    <keyword type="function" name="xmlSchemaIsValid ()" link="libxml2-xmlschemas.html#xmlSchemaIsValid"/>
-    <keyword type="function" name="xmlSchemaNewDocParserCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaNewDocParserCtxt"/>
-    <keyword type="function" name="xmlSchemaNewFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaNewFacet"/>
-    <keyword type="function" name="xmlSchemaNewMemParserCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaNewMemParserCtxt"/>
-    <keyword type="function" name="xmlSchemaNewNOTATIONValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaNewNOTATIONValue"/>
-    <keyword type="function" name="xmlSchemaNewParserCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaNewParserCtxt"/>
-    <keyword type="function" name="xmlSchemaNewQNameValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaNewQNameValue"/>
-    <keyword type="function" name="xmlSchemaNewStringValue ()" link="libxml2-xmlschemastypes.html#xmlSchemaNewStringValue"/>
-    <keyword type="function" name="xmlSchemaNewValidCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaNewValidCtxt"/>
-    <keyword type="function" name="xmlSchemaParse ()" link="libxml2-xmlschemas.html#xmlSchemaParse"/>
-    <keyword type="function" name="xmlSchemaSAXPlug ()" link="libxml2-xmlschemas.html#xmlSchemaSAXPlug"/>
-    <keyword type="function" name="xmlSchemaSAXUnplug ()" link="libxml2-xmlschemas.html#xmlSchemaSAXUnplug"/>
-    <keyword type="function" name="xmlSchemaSetParserErrors ()" link="libxml2-xmlschemas.html#xmlSchemaSetParserErrors"/>
-    <keyword type="function" name="xmlSchemaSetParserStructuredErrors ()" link="libxml2-xmlschemas.html#xmlSchemaSetParserStructuredErrors"/>
-    <keyword type="function" name="xmlSchemaSetResourceLoader ()" link="libxml2-xmlschemas.html#xmlSchemaSetResourceLoader"/>
-    <keyword type="function" name="xmlSchemaSetValidErrors ()" link="libxml2-xmlschemas.html#xmlSchemaSetValidErrors"/>
-    <keyword type="function" name="xmlSchemaSetValidOptions ()" link="libxml2-xmlschemas.html#xmlSchemaSetValidOptions"/>
-    <keyword type="function" name="xmlSchemaSetValidStructuredErrors ()" link="libxml2-xmlschemas.html#xmlSchemaSetValidStructuredErrors"/>
-    <keyword type="function" name="xmlSchemaValPredefTypeNode ()" link="libxml2-xmlschemastypes.html#xmlSchemaValPredefTypeNode"/>
-    <keyword type="function" name="xmlSchemaValPredefTypeNodeNoNorm ()" link="libxml2-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm"/>
-    <keyword type="function" name="xmlSchemaValidCtxtGetOptions ()" link="libxml2-xmlschemas.html#xmlSchemaValidCtxtGetOptions"/>
-    <keyword type="function" name="xmlSchemaValidCtxtGetParserCtxt ()" link="libxml2-xmlschemas.html#xmlSchemaValidCtxtGetParserCtxt"/>
-    <keyword type="function" name="xmlSchemaValidateDoc ()" link="libxml2-xmlschemas.html#xmlSchemaValidateDoc"/>
-    <keyword type="function" name="xmlSchemaValidateFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateFacet"/>
-    <keyword type="function" name="xmlSchemaValidateFacetWhtsp ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp"/>
-    <keyword type="function" name="xmlSchemaValidateFile ()" link="libxml2-xmlschemas.html#xmlSchemaValidateFile"/>
-    <keyword type="function" name="xmlSchemaValidateLengthFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateLengthFacet"/>
-    <keyword type="function" name="xmlSchemaValidateLengthFacetWhtsp ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp"/>
-    <keyword type="function" name="xmlSchemaValidateListSimpleTypeFacet ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet"/>
-    <keyword type="function" name="xmlSchemaValidateOneElement ()" link="libxml2-xmlschemas.html#xmlSchemaValidateOneElement"/>
-    <keyword type="function" name="xmlSchemaValidatePredefinedType ()" link="libxml2-xmlschemastypes.html#xmlSchemaValidatePredefinedType"/>
-    <keyword type="function" name="xmlSchemaValidateSetFilename ()" link="libxml2-xmlschemas.html#xmlSchemaValidateSetFilename"/>
-    <keyword type="function" name="xmlSchemaValidateSetLocator ()" link="libxml2-xmlschemas.html#xmlSchemaValidateSetLocator"/>
-    <keyword type="function" name="xmlSchemaValidateStream ()" link="libxml2-xmlschemas.html#xmlSchemaValidateStream"/>
-    <keyword type="function" name="xmlSchemaValueAppend ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueAppend"/>
-    <keyword type="function" name="xmlSchemaValueGetAsBoolean ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueGetAsBoolean"/>
-    <keyword type="function" name="xmlSchemaValueGetAsString ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueGetAsString"/>
-    <keyword type="function" name="xmlSchemaValueGetNext ()" link="libxml2-xmlschemastypes.html#xmlSchemaValueGetNext"/>
-    <keyword type="function" name="xmlSchemaWhiteSpaceReplace ()" link="libxml2-xmlschemastypes.html#xmlSchemaWhiteSpaceReplace"/>
-    <keyword type="function" name="xmlSchematronFree ()" link="libxml2-schematron.html#xmlSchematronFree"/>
-    <keyword type="function" name="xmlSchematronFreeParserCtxt ()" link="libxml2-schematron.html#xmlSchematronFreeParserCtxt"/>
-    <keyword type="function" name="xmlSchematronFreeValidCtxt ()" link="libxml2-schematron.html#xmlSchematronFreeValidCtxt"/>
-    <keyword type="function" name="xmlSchematronNewDocParserCtxt ()" link="libxml2-schematron.html#xmlSchematronNewDocParserCtxt"/>
-    <keyword type="function" name="xmlSchematronNewMemParserCtxt ()" link="libxml2-schematron.html#xmlSchematronNewMemParserCtxt"/>
-    <keyword type="function" name="xmlSchematronNewParserCtxt ()" link="libxml2-schematron.html#xmlSchematronNewParserCtxt"/>
-    <keyword type="function" name="xmlSchematronNewValidCtxt ()" link="libxml2-schematron.html#xmlSchematronNewValidCtxt"/>
-    <keyword type="function" name="xmlSchematronParse ()" link="libxml2-schematron.html#xmlSchematronParse"/>
-    <keyword type="function" name="xmlSchematronSetValidStructuredErrors ()" link="libxml2-schematron.html#xmlSchematronSetValidStructuredErrors"/>
-    <keyword type="function" name="xmlSchematronValidateDoc ()" link="libxml2-schematron.html#xmlSchematronValidateDoc"/>
-    <keyword type="function" name="xmlSearchNs ()" link="libxml2-tree.html#xmlSearchNs"/>
-    <keyword type="function" name="xmlSearchNsByHref ()" link="libxml2-tree.html#xmlSearchNsByHref"/>
-    <keyword type="function" name="xmlSetBufferAllocationScheme ()" link="libxml2-tree.html#xmlSetBufferAllocationScheme"/>
-    <keyword type="function" name="xmlSetCompressMode ()" link="libxml2-tree.html#xmlSetCompressMode"/>
-    <keyword type="function" name="xmlSetDocCompressMode ()" link="libxml2-tree.html#xmlSetDocCompressMode"/>
-    <keyword type="function" name="xmlSetExternalEntityLoader ()" link="libxml2-parser.html#xmlSetExternalEntityLoader"/>
-    <keyword type="function" name="xmlSetGenericErrorFunc ()" link="libxml2-xmlerror.html#xmlSetGenericErrorFunc"/>
-    <keyword type="function" name="xmlSetListDoc ()" link="libxml2-tree.html#xmlSetListDoc"/>
-    <keyword type="function" name="xmlSetNs ()" link="libxml2-tree.html#xmlSetNs"/>
-    <keyword type="function" name="xmlSetNsProp ()" link="libxml2-tree.html#xmlSetNsProp"/>
-    <keyword type="function" name="xmlSetProp ()" link="libxml2-tree.html#xmlSetProp"/>
-    <keyword type="function" name="xmlSetStructuredErrorFunc ()" link="libxml2-xmlerror.html#xmlSetStructuredErrorFunc"/>
-    <keyword type="function" name="xmlSetTreeDoc ()" link="libxml2-tree.html#xmlSetTreeDoc"/>
-    <keyword type="function" name="xmlSetupParserForBuffer ()" link="libxml2-parser.html#xmlSetupParserForBuffer"/>
-    <keyword type="function" name="xmlSkipBlankChars ()" link="libxml2-parserInternals.html#xmlSkipBlankChars"/>
-    <keyword type="function" name="xmlSnprintfElementContent ()" link="libxml2-valid.html#xmlSnprintfElementContent"/>
-    <keyword type="function" name="xmlSplitQName ()" link="libxml2-parserInternals.html#xmlSplitQName"/>
-    <keyword type="function" name="xmlSplitQName2 ()" link="libxml2-tree.html#xmlSplitQName2"/>
-    <keyword type="function" name="xmlSplitQName3 ()" link="libxml2-tree.html#xmlSplitQName3"/>
-    <keyword type="function" name="xmlSprintfElementContent ()" link="libxml2-valid.html#xmlSprintfElementContent"/>
-    <keyword type="function" name="xmlStopParser ()" link="libxml2-parser.html#xmlStopParser"/>
-    <keyword type="function" name="xmlStrEqual ()" link="libxml2-xmlstring.html#xmlStrEqual"/>
-    <keyword type="function" name="xmlStrPrintf ()" link="libxml2-xmlstring.html#xmlStrPrintf"/>
-    <keyword type="function" name="xmlStrQEqual ()" link="libxml2-xmlstring.html#xmlStrQEqual"/>
-    <keyword type="function" name="xmlStrVPrintf ()" link="libxml2-xmlstring.html#xmlStrVPrintf"/>
-    <keyword type="function" name="xmlStrcasecmp ()" link="libxml2-xmlstring.html#xmlStrcasecmp"/>
-    <keyword type="function" name="xmlStrcasestr ()" link="libxml2-xmlstring.html#xmlStrcasestr"/>
-    <keyword type="function" name="xmlStrcat ()" link="libxml2-xmlstring.html#xmlStrcat"/>
-    <keyword type="function" name="xmlStrchr ()" link="libxml2-xmlstring.html#xmlStrchr"/>
-    <keyword type="function" name="xmlStrcmp ()" link="libxml2-xmlstring.html#xmlStrcmp"/>
-    <keyword type="function" name="xmlStrdup ()" link="libxml2-xmlstring.html#xmlStrdup"/>
-    <keyword type="function" name="xmlStreamPop ()" link="libxml2-pattern.html#xmlStreamPop"/>
-    <keyword type="function" name="xmlStreamPush ()" link="libxml2-pattern.html#xmlStreamPush"/>
-    <keyword type="function" name="xmlStreamPushAttr ()" link="libxml2-pattern.html#xmlStreamPushAttr"/>
-    <keyword type="function" name="xmlStreamPushNode ()" link="libxml2-pattern.html#xmlStreamPushNode"/>
-    <keyword type="function" name="xmlStreamWantsAnyNode ()" link="libxml2-pattern.html#xmlStreamWantsAnyNode"/>
-    <keyword type="function" name="xmlStringCurrentChar ()" link="libxml2-parserInternals.html#xmlStringCurrentChar"/>
-    <keyword type="function" name="xmlStringDecodeEntities ()" link="libxml2-parserInternals.html#xmlStringDecodeEntities"/>
-    <keyword type="function" name="xmlStringGetNodeList ()" link="libxml2-tree.html#xmlStringGetNodeList"/>
-    <keyword type="function" name="xmlStringLenDecodeEntities ()" link="libxml2-parserInternals.html#xmlStringLenDecodeEntities"/>
-    <keyword type="function" name="xmlStringLenGetNodeList ()" link="libxml2-tree.html#xmlStringLenGetNodeList"/>
-    <keyword type="function" name="xmlStrlen ()" link="libxml2-xmlstring.html#xmlStrlen"/>
-    <keyword type="function" name="xmlStrncasecmp ()" link="libxml2-xmlstring.html#xmlStrncasecmp"/>
-    <keyword type="function" name="xmlStrncat ()" link="libxml2-xmlstring.html#xmlStrncat"/>
-    <keyword type="function" name="xmlStrncatNew ()" link="libxml2-xmlstring.html#xmlStrncatNew"/>
-    <keyword type="function" name="xmlStrncmp ()" link="libxml2-xmlstring.html#xmlStrncmp"/>
-    <keyword type="function" name="xmlStrndup ()" link="libxml2-xmlstring.html#xmlStrndup"/>
-    <keyword type="function" name="xmlStrstr ()" link="libxml2-xmlstring.html#xmlStrstr"/>
-    <keyword type="function" name="xmlStrsub ()" link="libxml2-xmlstring.html#xmlStrsub"/>
-    <keyword type="function" name="xmlSubstituteEntitiesDefault ()" link="libxml2-parser.html#xmlSubstituteEntitiesDefault"/>
-    <keyword type="function" name="xmlSwitchEncoding ()" link="libxml2-parserInternals.html#xmlSwitchEncoding"/>
-    <keyword type="function" name="xmlSwitchEncodingName ()" link="libxml2-parserInternals.html#xmlSwitchEncodingName"/>
-    <keyword type="function" name="xmlSwitchInputEncoding ()" link="libxml2-parserInternals.html#xmlSwitchInputEncoding"/>
-    <keyword type="function" name="xmlSwitchToEncoding ()" link="libxml2-parserInternals.html#xmlSwitchToEncoding"/>
-    <keyword type="function" name="xmlTextConcat ()" link="libxml2-tree.html#xmlTextConcat"/>
-    <keyword type="function" name="xmlTextMerge ()" link="libxml2-tree.html#xmlTextMerge"/>
-    <keyword type="function" name="xmlTextReaderAttributeCount ()" link="libxml2-xmlreader.html#xmlTextReaderAttributeCount"/>
-    <keyword type="function" name="xmlTextReaderBaseUri ()" link="libxml2-xmlreader.html#xmlTextReaderBaseUri"/>
-    <keyword type="function" name="xmlTextReaderByteConsumed ()" link="libxml2-xmlreader.html#xmlTextReaderByteConsumed"/>
-    <keyword type="function" name="xmlTextReaderClose ()" link="libxml2-xmlreader.html#xmlTextReaderClose"/>
-    <keyword type="function" name="xmlTextReaderConstBaseUri ()" link="libxml2-xmlreader.html#xmlTextReaderConstBaseUri"/>
-    <keyword type="function" name="xmlTextReaderConstEncoding ()" link="libxml2-xmlreader.html#xmlTextReaderConstEncoding"/>
-    <keyword type="function" name="xmlTextReaderConstLocalName ()" link="libxml2-xmlreader.html#xmlTextReaderConstLocalName"/>
-    <keyword type="function" name="xmlTextReaderConstName ()" link="libxml2-xmlreader.html#xmlTextReaderConstName"/>
-    <keyword type="function" name="xmlTextReaderConstNamespaceUri ()" link="libxml2-xmlreader.html#xmlTextReaderConstNamespaceUri"/>
-    <keyword type="function" name="xmlTextReaderConstPrefix ()" link="libxml2-xmlreader.html#xmlTextReaderConstPrefix"/>
-    <keyword type="function" name="xmlTextReaderConstString ()" link="libxml2-xmlreader.html#xmlTextReaderConstString"/>
-    <keyword type="function" name="xmlTextReaderConstValue ()" link="libxml2-xmlreader.html#xmlTextReaderConstValue"/>
-    <keyword type="function" name="xmlTextReaderConstXmlLang ()" link="libxml2-xmlreader.html#xmlTextReaderConstXmlLang"/>
-    <keyword type="function" name="xmlTextReaderConstXmlVersion ()" link="libxml2-xmlreader.html#xmlTextReaderConstXmlVersion"/>
-    <keyword type="function" name="xmlTextReaderCurrentDoc ()" link="libxml2-xmlreader.html#xmlTextReaderCurrentDoc"/>
-    <keyword type="function" name="xmlTextReaderCurrentNode ()" link="libxml2-xmlreader.html#xmlTextReaderCurrentNode"/>
-    <keyword type="function" name="xmlTextReaderDepth ()" link="libxml2-xmlreader.html#xmlTextReaderDepth"/>
-    <keyword type="function" name="xmlTextReaderExpand ()" link="libxml2-xmlreader.html#xmlTextReaderExpand"/>
-    <keyword type="function" name="xmlTextReaderGetAttribute ()" link="libxml2-xmlreader.html#xmlTextReaderGetAttribute"/>
-    <keyword type="function" name="xmlTextReaderGetAttributeNo ()" link="libxml2-xmlreader.html#xmlTextReaderGetAttributeNo"/>
-    <keyword type="function" name="xmlTextReaderGetAttributeNs ()" link="libxml2-xmlreader.html#xmlTextReaderGetAttributeNs"/>
-    <keyword type="function" name="xmlTextReaderGetErrorHandler ()" link="libxml2-xmlreader.html#xmlTextReaderGetErrorHandler"/>
-    <keyword type="function" name="xmlTextReaderGetLastError ()" link="libxml2-xmlreader.html#xmlTextReaderGetLastError"/>
-    <keyword type="function" name="xmlTextReaderGetParserColumnNumber ()" link="libxml2-xmlreader.html#xmlTextReaderGetParserColumnNumber"/>
-    <keyword type="function" name="xmlTextReaderGetParserLineNumber ()" link="libxml2-xmlreader.html#xmlTextReaderGetParserLineNumber"/>
-    <keyword type="function" name="xmlTextReaderGetParserProp ()" link="libxml2-xmlreader.html#xmlTextReaderGetParserProp"/>
-    <keyword type="function" name="xmlTextReaderGetRemainder ()" link="libxml2-xmlreader.html#xmlTextReaderGetRemainder"/>
-    <keyword type="function" name="xmlTextReaderHasAttributes ()" link="libxml2-xmlreader.html#xmlTextReaderHasAttributes"/>
-    <keyword type="function" name="xmlTextReaderHasValue ()" link="libxml2-xmlreader.html#xmlTextReaderHasValue"/>
-    <keyword type="function" name="xmlTextReaderIsDefault ()" link="libxml2-xmlreader.html#xmlTextReaderIsDefault"/>
-    <keyword type="function" name="xmlTextReaderIsEmptyElement ()" link="libxml2-xmlreader.html#xmlTextReaderIsEmptyElement"/>
-    <keyword type="function" name="xmlTextReaderIsNamespaceDecl ()" link="libxml2-xmlreader.html#xmlTextReaderIsNamespaceDecl"/>
-    <keyword type="function" name="xmlTextReaderIsValid ()" link="libxml2-xmlreader.html#xmlTextReaderIsValid"/>
-    <keyword type="function" name="xmlTextReaderLocalName ()" link="libxml2-xmlreader.html#xmlTextReaderLocalName"/>
-    <keyword type="function" name="xmlTextReaderLocatorBaseURI ()" link="libxml2-xmlreader.html#xmlTextReaderLocatorBaseURI"/>
-    <keyword type="function" name="xmlTextReaderLocatorLineNumber ()" link="libxml2-xmlreader.html#xmlTextReaderLocatorLineNumber"/>
-    <keyword type="function" name="xmlTextReaderLookupNamespace ()" link="libxml2-xmlreader.html#xmlTextReaderLookupNamespace"/>
-    <keyword type="function" name="xmlTextReaderMoveToAttribute ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToAttribute"/>
-    <keyword type="function" name="xmlTextReaderMoveToAttributeNo ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToAttributeNo"/>
-    <keyword type="function" name="xmlTextReaderMoveToAttributeNs ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToAttributeNs"/>
-    <keyword type="function" name="xmlTextReaderMoveToElement ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToElement"/>
-    <keyword type="function" name="xmlTextReaderMoveToFirstAttribute ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToFirstAttribute"/>
-    <keyword type="function" name="xmlTextReaderMoveToNextAttribute ()" link="libxml2-xmlreader.html#xmlTextReaderMoveToNextAttribute"/>
-    <keyword type="function" name="xmlTextReaderName ()" link="libxml2-xmlreader.html#xmlTextReaderName"/>
-    <keyword type="function" name="xmlTextReaderNamespaceUri ()" link="libxml2-xmlreader.html#xmlTextReaderNamespaceUri"/>
-    <keyword type="function" name="xmlTextReaderNext ()" link="libxml2-xmlreader.html#xmlTextReaderNext"/>
-    <keyword type="function" name="xmlTextReaderNextSibling ()" link="libxml2-xmlreader.html#xmlTextReaderNextSibling"/>
-    <keyword type="function" name="xmlTextReaderNodeType ()" link="libxml2-xmlreader.html#xmlTextReaderNodeType"/>
-    <keyword type="function" name="xmlTextReaderNormalization ()" link="libxml2-xmlreader.html#xmlTextReaderNormalization"/>
-    <keyword type="function" name="xmlTextReaderPrefix ()" link="libxml2-xmlreader.html#xmlTextReaderPrefix"/>
-    <keyword type="function" name="xmlTextReaderPreserve ()" link="libxml2-xmlreader.html#xmlTextReaderPreserve"/>
-    <keyword type="function" name="xmlTextReaderPreservePattern ()" link="libxml2-xmlreader.html#xmlTextReaderPreservePattern"/>
-    <keyword type="function" name="xmlTextReaderQuoteChar ()" link="libxml2-xmlreader.html#xmlTextReaderQuoteChar"/>
-    <keyword type="function" name="xmlTextReaderRead ()" link="libxml2-xmlreader.html#xmlTextReaderRead"/>
-    <keyword type="function" name="xmlTextReaderReadAttributeValue ()" link="libxml2-xmlreader.html#xmlTextReaderReadAttributeValue"/>
-    <keyword type="function" name="xmlTextReaderReadInnerXml ()" link="libxml2-xmlreader.html#xmlTextReaderReadInnerXml"/>
-    <keyword type="function" name="xmlTextReaderReadOuterXml ()" link="libxml2-xmlreader.html#xmlTextReaderReadOuterXml"/>
-    <keyword type="function" name="xmlTextReaderReadState ()" link="libxml2-xmlreader.html#xmlTextReaderReadState"/>
-    <keyword type="function" name="xmlTextReaderReadString ()" link="libxml2-xmlreader.html#xmlTextReaderReadString"/>
-    <keyword type="function" name="xmlTextReaderRelaxNGSetSchema ()" link="libxml2-xmlreader.html#xmlTextReaderRelaxNGSetSchema"/>
-    <keyword type="function" name="xmlTextReaderRelaxNGValidate ()" link="libxml2-xmlreader.html#xmlTextReaderRelaxNGValidate"/>
-    <keyword type="function" name="xmlTextReaderRelaxNGValidateCtxt ()" link="libxml2-xmlreader.html#xmlTextReaderRelaxNGValidateCtxt"/>
-    <keyword type="function" name="xmlTextReaderSchemaValidate ()" link="libxml2-xmlreader.html#xmlTextReaderSchemaValidate"/>
-    <keyword type="function" name="xmlTextReaderSchemaValidateCtxt ()" link="libxml2-xmlreader.html#xmlTextReaderSchemaValidateCtxt"/>
-    <keyword type="function" name="xmlTextReaderSetErrorHandler ()" link="libxml2-xmlreader.html#xmlTextReaderSetErrorHandler"/>
-    <keyword type="function" name="xmlTextReaderSetMaxAmplification ()" link="libxml2-xmlreader.html#xmlTextReaderSetMaxAmplification"/>
-    <keyword type="function" name="xmlTextReaderSetParserProp ()" link="libxml2-xmlreader.html#xmlTextReaderSetParserProp"/>
-    <keyword type="function" name="xmlTextReaderSetResourceLoader ()" link="libxml2-xmlreader.html#xmlTextReaderSetResourceLoader"/>
-    <keyword type="function" name="xmlTextReaderSetSchema ()" link="libxml2-xmlreader.html#xmlTextReaderSetSchema"/>
-    <keyword type="function" name="xmlTextReaderSetStructuredErrorHandler ()" link="libxml2-xmlreader.html#xmlTextReaderSetStructuredErrorHandler"/>
-    <keyword type="function" name="xmlTextReaderSetup ()" link="libxml2-xmlreader.html#xmlTextReaderSetup"/>
-    <keyword type="function" name="xmlTextReaderStandalone ()" link="libxml2-xmlreader.html#xmlTextReaderStandalone"/>
-    <keyword type="function" name="xmlTextReaderValue ()" link="libxml2-xmlreader.html#xmlTextReaderValue"/>
-    <keyword type="function" name="xmlTextReaderXmlLang ()" link="libxml2-xmlreader.html#xmlTextReaderXmlLang"/>
-    <keyword type="function" name="xmlTextWriterClose ()" link="libxml2-xmlwriter.html#xmlTextWriterClose"/>
-    <keyword type="function" name="xmlTextWriterEndAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterEndAttribute"/>
-    <keyword type="function" name="xmlTextWriterEndCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterEndCDATA"/>
-    <keyword type="function" name="xmlTextWriterEndComment ()" link="libxml2-xmlwriter.html#xmlTextWriterEndComment"/>
-    <keyword type="function" name="xmlTextWriterEndDTD ()" link="libxml2-xmlwriter.html#xmlTextWriterEndDTD"/>
-    <keyword type="function" name="xmlTextWriterEndDTDAttlist ()" link="libxml2-xmlwriter.html#xmlTextWriterEndDTDAttlist"/>
-    <keyword type="function" name="xmlTextWriterEndDTDElement ()" link="libxml2-xmlwriter.html#xmlTextWriterEndDTDElement"/>
-    <keyword type="function" name="xmlTextWriterEndDTDEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterEndDTDEntity"/>
-    <keyword type="function" name="xmlTextWriterEndDocument ()" link="libxml2-xmlwriter.html#xmlTextWriterEndDocument"/>
-    <keyword type="function" name="xmlTextWriterEndElement ()" link="libxml2-xmlwriter.html#xmlTextWriterEndElement"/>
-    <keyword type="function" name="xmlTextWriterEndPI ()" link="libxml2-xmlwriter.html#xmlTextWriterEndPI"/>
-    <keyword type="function" name="xmlTextWriterFlush ()" link="libxml2-xmlwriter.html#xmlTextWriterFlush"/>
-    <keyword type="function" name="xmlTextWriterFullEndElement ()" link="libxml2-xmlwriter.html#xmlTextWriterFullEndElement"/>
-    <keyword type="function" name="xmlTextWriterSetIndent ()" link="libxml2-xmlwriter.html#xmlTextWriterSetIndent"/>
-    <keyword type="function" name="xmlTextWriterSetIndentString ()" link="libxml2-xmlwriter.html#xmlTextWriterSetIndentString"/>
-    <keyword type="function" name="xmlTextWriterSetQuoteChar ()" link="libxml2-xmlwriter.html#xmlTextWriterSetQuoteChar"/>
-    <keyword type="function" name="xmlTextWriterStartAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterStartAttribute"/>
-    <keyword type="function" name="xmlTextWriterStartAttributeNS ()" link="libxml2-xmlwriter.html#xmlTextWriterStartAttributeNS"/>
-    <keyword type="function" name="xmlTextWriterStartCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterStartCDATA"/>
-    <keyword type="function" name="xmlTextWriterStartComment ()" link="libxml2-xmlwriter.html#xmlTextWriterStartComment"/>
-    <keyword type="function" name="xmlTextWriterStartDTD ()" link="libxml2-xmlwriter.html#xmlTextWriterStartDTD"/>
-    <keyword type="function" name="xmlTextWriterStartDTDAttlist ()" link="libxml2-xmlwriter.html#xmlTextWriterStartDTDAttlist"/>
-    <keyword type="function" name="xmlTextWriterStartDTDElement ()" link="libxml2-xmlwriter.html#xmlTextWriterStartDTDElement"/>
-    <keyword type="function" name="xmlTextWriterStartDTDEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterStartDTDEntity"/>
-    <keyword type="function" name="xmlTextWriterStartDocument ()" link="libxml2-xmlwriter.html#xmlTextWriterStartDocument"/>
-    <keyword type="function" name="xmlTextWriterStartElement ()" link="libxml2-xmlwriter.html#xmlTextWriterStartElement"/>
-    <keyword type="function" name="xmlTextWriterStartElementNS ()" link="libxml2-xmlwriter.html#xmlTextWriterStartElementNS"/>
-    <keyword type="function" name="xmlTextWriterStartPI ()" link="libxml2-xmlwriter.html#xmlTextWriterStartPI"/>
-    <keyword type="function" name="xmlTextWriterWriteAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteAttribute"/>
-    <keyword type="function" name="xmlTextWriterWriteAttributeNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteAttributeNS"/>
-    <keyword type="function" name="xmlTextWriterWriteBase64 ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteBase64"/>
-    <keyword type="function" name="xmlTextWriterWriteBinHex ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteBinHex"/>
-    <keyword type="function" name="xmlTextWriterWriteCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteCDATA"/>
-    <keyword type="function" name="xmlTextWriterWriteComment ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteComment"/>
-    <keyword type="function" name="xmlTextWriterWriteDTD ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTD"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDAttlist ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDAttlist"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDElement"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDEntity"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDExternalEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDExternalEntity"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDExternalEntityContents ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDExternalEntityContents"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDInternalEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDInternalEntity"/>
-    <keyword type="function" name="xmlTextWriterWriteDTDNotation ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteDTDNotation"/>
-    <keyword type="function" name="xmlTextWriterWriteElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteElement"/>
-    <keyword type="function" name="xmlTextWriterWriteElementNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteElementNS"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatAttribute"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatAttributeNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatAttributeNS"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatCDATA"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatComment ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatComment"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatDTD ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatDTD"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatDTDAttlist ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatDTDAttlist"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatDTDElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatDTDElement"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatDTDInternalEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatDTDInternalEntity"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatElement"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatElementNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatElementNS"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatPI ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatPI"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatRaw ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatRaw"/>
-    <keyword type="function" name="xmlTextWriterWriteFormatString ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteFormatString"/>
-    <keyword type="function" name="xmlTextWriterWritePI ()" link="libxml2-xmlwriter.html#xmlTextWriterWritePI"/>
-    <keyword type="function" name="xmlTextWriterWriteRaw ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteRaw"/>
-    <keyword type="function" name="xmlTextWriterWriteRawLen ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteRawLen"/>
-    <keyword type="function" name="xmlTextWriterWriteString ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteString"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatAttribute ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatAttribute"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatAttributeNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatAttributeNS"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatCDATA ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatCDATA"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatComment ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatComment"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatDTD ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatDTD"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatDTDAttlist ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatDTDAttlist"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatDTDElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatDTDElement"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatDTDInternalEntity ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatDTDInternalEntity"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatElement ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatElement"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatElementNS ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatElementNS"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatPI ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatPI"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatRaw ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatRaw"/>
-    <keyword type="function" name="xmlTextWriterWriteVFormatString ()" link="libxml2-xmlwriter.html#xmlTextWriterWriteVFormatString"/>
-    <keyword type="function" name="xmlThrDefDeregisterNodeDefault ()" link="libxml2-tree.html#xmlThrDefDeregisterNodeDefault"/>
-    <keyword type="function" name="xmlThrDefDoValidityCheckingDefaultValue ()" link="libxml2-parser.html#xmlThrDefDoValidityCheckingDefaultValue"/>
-    <keyword type="function" name="xmlThrDefGetWarningsDefaultValue ()" link="libxml2-parser.html#xmlThrDefGetWarningsDefaultValue"/>
-    <keyword type="function" name="xmlThrDefIndentTreeOutput ()" link="libxml2-xmlsave.html#xmlThrDefIndentTreeOutput"/>
-    <keyword type="function" name="xmlThrDefKeepBlanksDefaultValue ()" link="libxml2-parser.html#xmlThrDefKeepBlanksDefaultValue"/>
-    <keyword type="function" name="xmlThrDefLineNumbersDefaultValue ()" link="libxml2-parser.html#xmlThrDefLineNumbersDefaultValue"/>
-    <keyword type="function" name="xmlThrDefLoadExtDtdDefaultValue ()" link="libxml2-parser.html#xmlThrDefLoadExtDtdDefaultValue"/>
-    <keyword type="function" name="xmlThrDefOutputBufferCreateFilenameDefault ()" link="libxml2-xmlIO.html#xmlThrDefOutputBufferCreateFilenameDefault"/>
-    <keyword type="function" name="xmlThrDefParserInputBufferCreateFilenameDefault ()" link="libxml2-xmlIO.html#xmlThrDefParserInputBufferCreateFilenameDefault"/>
-    <keyword type="function" name="xmlThrDefPedanticParserDefaultValue ()" link="libxml2-parser.html#xmlThrDefPedanticParserDefaultValue"/>
-    <keyword type="function" name="xmlThrDefRegisterNodeDefault ()" link="libxml2-tree.html#xmlThrDefRegisterNodeDefault"/>
-    <keyword type="function" name="xmlThrDefSaveNoEmptyTags ()" link="libxml2-xmlsave.html#xmlThrDefSaveNoEmptyTags"/>
-    <keyword type="function" name="xmlThrDefSetGenericErrorFunc ()" link="libxml2-xmlerror.html#xmlThrDefSetGenericErrorFunc"/>
-    <keyword type="function" name="xmlThrDefSetStructuredErrorFunc ()" link="libxml2-xmlerror.html#xmlThrDefSetStructuredErrorFunc"/>
-    <keyword type="function" name="xmlThrDefSubstituteEntitiesDefaultValue ()" link="libxml2-parser.html#xmlThrDefSubstituteEntitiesDefaultValue"/>
-    <keyword type="function" name="xmlThrDefTreeIndentString ()" link="libxml2-xmlsave.html#xmlThrDefTreeIndentString"/>
-    <keyword type="function" name="xmlURIEscape ()" link="libxml2-uri.html#xmlURIEscape"/>
-    <keyword type="function" name="xmlURIEscapeStr ()" link="libxml2-uri.html#xmlURIEscapeStr"/>
-    <keyword type="function" name="xmlURIUnescapeString ()" link="libxml2-uri.html#xmlURIUnescapeString"/>
-    <keyword type="function" name="xmlUTF8Charcmp ()" link="libxml2-xmlstring.html#xmlUTF8Charcmp"/>
-    <keyword type="function" name="xmlUTF8Size ()" link="libxml2-xmlstring.html#xmlUTF8Size"/>
-    <keyword type="function" name="xmlUTF8Strlen ()" link="libxml2-xmlstring.html#xmlUTF8Strlen"/>
-    <keyword type="function" name="xmlUTF8Strloc ()" link="libxml2-xmlstring.html#xmlUTF8Strloc"/>
-    <keyword type="function" name="xmlUTF8Strndup ()" link="libxml2-xmlstring.html#xmlUTF8Strndup"/>
-    <keyword type="function" name="xmlUTF8Strpos ()" link="libxml2-xmlstring.html#xmlUTF8Strpos"/>
-    <keyword type="function" name="xmlUTF8Strsize ()" link="libxml2-xmlstring.html#xmlUTF8Strsize"/>
-    <keyword type="function" name="xmlUTF8Strsub ()" link="libxml2-xmlstring.html#xmlUTF8Strsub"/>
-    <keyword type="function" name="xmlUTF8ToIsolat1 ()" link="libxml2-encoding.html#xmlUTF8ToIsolat1"/>
-    <keyword type="function" name="xmlUnlinkNode ()" link="libxml2-tree.html#xmlUnlinkNode"/>
-    <keyword type="function" name="xmlUnlockLibrary ()" link="libxml2-threads.html#xmlUnlockLibrary"/>
-    <keyword type="function" name="xmlUnsetNsProp ()" link="libxml2-tree.html#xmlUnsetNsProp"/>
-    <keyword type="function" name="xmlUnsetProp ()" link="libxml2-tree.html#xmlUnsetProp"/>
-    <keyword type="function" name="xmlValidBuildContentModel ()" link="libxml2-valid.html#xmlValidBuildContentModel"/>
-    <keyword type="function" name="xmlValidCtxtNormalizeAttributeValue ()" link="libxml2-valid.html#xmlValidCtxtNormalizeAttributeValue"/>
-    <keyword type="function" name="xmlValidGetPotentialChildren ()" link="libxml2-valid.html#xmlValidGetPotentialChildren"/>
-    <keyword type="function" name="xmlValidGetValidElements ()" link="libxml2-valid.html#xmlValidGetValidElements"/>
-    <keyword type="function" name="xmlValidNormalizeAttributeValue ()" link="libxml2-valid.html#xmlValidNormalizeAttributeValue"/>
-    <keyword type="function" name="xmlValidateAttributeDecl ()" link="libxml2-valid.html#xmlValidateAttributeDecl"/>
-    <keyword type="function" name="xmlValidateAttributeValue ()" link="libxml2-valid.html#xmlValidateAttributeValue"/>
-    <keyword type="function" name="xmlValidateDocument ()" link="libxml2-valid.html#xmlValidateDocument"/>
-    <keyword type="function" name="xmlValidateDocumentFinal ()" link="libxml2-valid.html#xmlValidateDocumentFinal"/>
-    <keyword type="function" name="xmlValidateDtd ()" link="libxml2-valid.html#xmlValidateDtd"/>
-    <keyword type="function" name="xmlValidateDtdFinal ()" link="libxml2-valid.html#xmlValidateDtdFinal"/>
-    <keyword type="function" name="xmlValidateElement ()" link="libxml2-valid.html#xmlValidateElement"/>
-    <keyword type="function" name="xmlValidateElementDecl ()" link="libxml2-valid.html#xmlValidateElementDecl"/>
-    <keyword type="function" name="xmlValidateNCName ()" link="libxml2-tree.html#xmlValidateNCName"/>
-    <keyword type="function" name="xmlValidateNMToken ()" link="libxml2-tree.html#xmlValidateNMToken"/>
-    <keyword type="function" name="xmlValidateName ()" link="libxml2-tree.html#xmlValidateName"/>
-    <keyword type="function" name="xmlValidateNameValue ()" link="libxml2-valid.html#xmlValidateNameValue"/>
-    <keyword type="function" name="xmlValidateNamesValue ()" link="libxml2-valid.html#xmlValidateNamesValue"/>
-    <keyword type="function" name="xmlValidateNmtokenValue ()" link="libxml2-valid.html#xmlValidateNmtokenValue"/>
-    <keyword type="function" name="xmlValidateNmtokensValue ()" link="libxml2-valid.html#xmlValidateNmtokensValue"/>
-    <keyword type="function" name="xmlValidateNotationDecl ()" link="libxml2-valid.html#xmlValidateNotationDecl"/>
-    <keyword type="function" name="xmlValidateNotationUse ()" link="libxml2-valid.html#xmlValidateNotationUse"/>
-    <keyword type="function" name="xmlValidateOneAttribute ()" link="libxml2-valid.html#xmlValidateOneAttribute"/>
-    <keyword type="function" name="xmlValidateOneElement ()" link="libxml2-valid.html#xmlValidateOneElement"/>
-    <keyword type="function" name="xmlValidateOneNamespace ()" link="libxml2-valid.html#xmlValidateOneNamespace"/>
-    <keyword type="function" name="xmlValidatePopElement ()" link="libxml2-valid.html#xmlValidatePopElement"/>
-    <keyword type="function" name="xmlValidatePushCData ()" link="libxml2-valid.html#xmlValidatePushCData"/>
-    <keyword type="function" name="xmlValidatePushElement ()" link="libxml2-valid.html#xmlValidatePushElement"/>
-    <keyword type="function" name="xmlValidateQName ()" link="libxml2-tree.html#xmlValidateQName"/>
-    <keyword type="function" name="xmlValidateRoot ()" link="libxml2-valid.html#xmlValidateRoot"/>
-    <keyword type="function" name="xmlXIncludeFreeContext ()" link="libxml2-xinclude.html#xmlXIncludeFreeContext"/>
-    <keyword type="function" name="xmlXIncludeGetLastError ()" link="libxml2-xinclude.html#xmlXIncludeGetLastError"/>
-    <keyword type="function" name="xmlXIncludeNewContext ()" link="libxml2-xinclude.html#xmlXIncludeNewContext"/>
-    <keyword type="function" name="xmlXIncludeProcess ()" link="libxml2-xinclude.html#xmlXIncludeProcess"/>
-    <keyword type="function" name="xmlXIncludeProcessFlags ()" link="libxml2-xinclude.html#xmlXIncludeProcessFlags"/>
-    <keyword type="function" name="xmlXIncludeProcessFlagsData ()" link="libxml2-xinclude.html#xmlXIncludeProcessFlagsData"/>
-    <keyword type="function" name="xmlXIncludeProcessNode ()" link="libxml2-xinclude.html#xmlXIncludeProcessNode"/>
-    <keyword type="function" name="xmlXIncludeProcessTree ()" link="libxml2-xinclude.html#xmlXIncludeProcessTree"/>
-    <keyword type="function" name="xmlXIncludeProcessTreeFlags ()" link="libxml2-xinclude.html#xmlXIncludeProcessTreeFlags"/>
-    <keyword type="function" name="xmlXIncludeProcessTreeFlagsData ()" link="libxml2-xinclude.html#xmlXIncludeProcessTreeFlagsData"/>
-    <keyword type="function" name="xmlXIncludeSetErrorHandler ()" link="libxml2-xinclude.html#xmlXIncludeSetErrorHandler"/>
-    <keyword type="function" name="xmlXIncludeSetFlags ()" link="libxml2-xinclude.html#xmlXIncludeSetFlags"/>
-    <keyword type="function" name="xmlXIncludeSetResourceLoader ()" link="libxml2-xinclude.html#xmlXIncludeSetResourceLoader"/>
-    <keyword type="function" name="xmlXPathAddValues ()" link="libxml2-xpathInternals.html#xmlXPathAddValues"/>
-    <keyword type="function" name="xmlXPathBooleanFunction ()" link="libxml2-xpathInternals.html#xmlXPathBooleanFunction"/>
-    <keyword type="function" name="xmlXPathCastBooleanToNumber ()" link="libxml2-xpath.html#xmlXPathCastBooleanToNumber"/>
-    <keyword type="function" name="xmlXPathCastBooleanToString ()" link="libxml2-xpath.html#xmlXPathCastBooleanToString"/>
-    <keyword type="function" name="xmlXPathCastNodeSetToBoolean ()" link="libxml2-xpath.html#xmlXPathCastNodeSetToBoolean"/>
-    <keyword type="function" name="xmlXPathCastNodeSetToNumber ()" link="libxml2-xpath.html#xmlXPathCastNodeSetToNumber"/>
-    <keyword type="function" name="xmlXPathCastNodeSetToString ()" link="libxml2-xpath.html#xmlXPathCastNodeSetToString"/>
-    <keyword type="function" name="xmlXPathCastNodeToNumber ()" link="libxml2-xpath.html#xmlXPathCastNodeToNumber"/>
-    <keyword type="function" name="xmlXPathCastNodeToString ()" link="libxml2-xpath.html#xmlXPathCastNodeToString"/>
-    <keyword type="function" name="xmlXPathCastNumberToBoolean ()" link="libxml2-xpath.html#xmlXPathCastNumberToBoolean"/>
-    <keyword type="function" name="xmlXPathCastNumberToString ()" link="libxml2-xpath.html#xmlXPathCastNumberToString"/>
-    <keyword type="function" name="xmlXPathCastStringToBoolean ()" link="libxml2-xpath.html#xmlXPathCastStringToBoolean"/>
-    <keyword type="function" name="xmlXPathCastStringToNumber ()" link="libxml2-xpath.html#xmlXPathCastStringToNumber"/>
-    <keyword type="function" name="xmlXPathCastToBoolean ()" link="libxml2-xpath.html#xmlXPathCastToBoolean"/>
-    <keyword type="function" name="xmlXPathCastToNumber ()" link="libxml2-xpath.html#xmlXPathCastToNumber"/>
-    <keyword type="function" name="xmlXPathCastToString ()" link="libxml2-xpath.html#xmlXPathCastToString"/>
-    <keyword type="function" name="xmlXPathCeilingFunction ()" link="libxml2-xpathInternals.html#xmlXPathCeilingFunction"/>
-    <keyword type="function" name="xmlXPathCmpNodes ()" link="libxml2-xpath.html#xmlXPathCmpNodes"/>
-    <keyword type="function" name="xmlXPathCompareValues ()" link="libxml2-xpathInternals.html#xmlXPathCompareValues"/>
-    <keyword type="function" name="xmlXPathCompile ()" link="libxml2-xpath.html#xmlXPathCompile"/>
-    <keyword type="function" name="xmlXPathCompiledEval ()" link="libxml2-xpath.html#xmlXPathCompiledEval"/>
-    <keyword type="function" name="xmlXPathCompiledEvalToBoolean ()" link="libxml2-xpath.html#xmlXPathCompiledEvalToBoolean"/>
-    <keyword type="function" name="xmlXPathConcatFunction ()" link="libxml2-xpathInternals.html#xmlXPathConcatFunction"/>
-    <keyword type="function" name="xmlXPathContainsFunction ()" link="libxml2-xpathInternals.html#xmlXPathContainsFunction"/>
-    <keyword type="function" name="xmlXPathContextSetCache ()" link="libxml2-xpath.html#xmlXPathContextSetCache"/>
-    <keyword type="function" name="xmlXPathConvertBoolean ()" link="libxml2-xpath.html#xmlXPathConvertBoolean"/>
-    <keyword type="function" name="xmlXPathConvertNumber ()" link="libxml2-xpath.html#xmlXPathConvertNumber"/>
-    <keyword type="function" name="xmlXPathConvertString ()" link="libxml2-xpath.html#xmlXPathConvertString"/>
-    <keyword type="function" name="xmlXPathCountFunction ()" link="libxml2-xpathInternals.html#xmlXPathCountFunction"/>
-    <keyword type="function" name="xmlXPathCtxtCompile ()" link="libxml2-xpath.html#xmlXPathCtxtCompile"/>
-    <keyword type="function" name="xmlXPathDebugDumpCompExpr ()" link="libxml2-xpathInternals.html#xmlXPathDebugDumpCompExpr"/>
-    <keyword type="function" name="xmlXPathDebugDumpObject ()" link="libxml2-xpathInternals.html#xmlXPathDebugDumpObject"/>
-    <keyword type="function" name="xmlXPathDifference ()" link="libxml2-xpathInternals.html#xmlXPathDifference"/>
-    <keyword type="function" name="xmlXPathDistinct ()" link="libxml2-xpathInternals.html#xmlXPathDistinct"/>
-    <keyword type="function" name="xmlXPathDistinctSorted ()" link="libxml2-xpathInternals.html#xmlXPathDistinctSorted"/>
-    <keyword type="function" name="xmlXPathDivValues ()" link="libxml2-xpathInternals.html#xmlXPathDivValues"/>
-    <keyword type="function" name="xmlXPathEqualValues ()" link="libxml2-xpathInternals.html#xmlXPathEqualValues"/>
-    <keyword type="function" name="xmlXPathErr ()" link="libxml2-xpathInternals.html#xmlXPathErr"/>
-    <keyword type="function" name="xmlXPathEval ()" link="libxml2-xpath.html#xmlXPathEval"/>
-    <keyword type="function" name="xmlXPathEvalExpr ()" link="libxml2-xpathInternals.html#xmlXPathEvalExpr"/>
-    <keyword type="function" name="xmlXPathEvalExpression ()" link="libxml2-xpath.html#xmlXPathEvalExpression"/>
-    <keyword type="function" name="xmlXPathEvalPredicate ()" link="libxml2-xpath.html#xmlXPathEvalPredicate"/>
-    <keyword type="function" name="xmlXPathEvaluatePredicateResult ()" link="libxml2-xpathInternals.html#xmlXPathEvaluatePredicateResult"/>
-    <keyword type="function" name="xmlXPathFalseFunction ()" link="libxml2-xpathInternals.html#xmlXPathFalseFunction"/>
-    <keyword type="function" name="xmlXPathFloorFunction ()" link="libxml2-xpathInternals.html#xmlXPathFloorFunction"/>
-    <keyword type="function" name="xmlXPathFreeCompExpr ()" link="libxml2-xpath.html#xmlXPathFreeCompExpr"/>
-    <keyword type="function" name="xmlXPathFreeContext ()" link="libxml2-xpath.html#xmlXPathFreeContext"/>
-    <keyword type="function" name="xmlXPathFreeNodeSet ()" link="libxml2-xpath.html#xmlXPathFreeNodeSet"/>
-    <keyword type="function" name="xmlXPathFreeNodeSetList ()" link="libxml2-xpath.html#xmlXPathFreeNodeSetList"/>
-    <keyword type="function" name="xmlXPathFreeObject ()" link="libxml2-xpath.html#xmlXPathFreeObject"/>
-    <keyword type="function" name="xmlXPathFreeParserContext ()" link="libxml2-xpathInternals.html#xmlXPathFreeParserContext"/>
-    <keyword type="function" name="xmlXPathFunctionLookup ()" link="libxml2-xpathInternals.html#xmlXPathFunctionLookup"/>
-    <keyword type="function" name="xmlXPathFunctionLookupNS ()" link="libxml2-xpathInternals.html#xmlXPathFunctionLookupNS"/>
-    <keyword type="function" name="xmlXPathHasSameNodes ()" link="libxml2-xpathInternals.html#xmlXPathHasSameNodes"/>
-    <keyword type="function" name="xmlXPathIdFunction ()" link="libxml2-xpathInternals.html#xmlXPathIdFunction"/>
-    <keyword type="function" name="xmlXPathInit ()" link="libxml2-xpath.html#xmlXPathInit"/>
-    <keyword type="function" name="xmlXPathIntersection ()" link="libxml2-xpathInternals.html#xmlXPathIntersection"/>
-    <keyword type="function" name="xmlXPathIsInf ()" link="libxml2-xpath.html#xmlXPathIsInf"/>
-    <keyword type="function" name="xmlXPathIsNaN ()" link="libxml2-xpath.html#xmlXPathIsNaN"/>
-    <keyword type="function" name="xmlXPathIsNodeType ()" link="libxml2-xpathInternals.html#xmlXPathIsNodeType"/>
-    <keyword type="function" name="xmlXPathLangFunction ()" link="libxml2-xpathInternals.html#xmlXPathLangFunction"/>
-    <keyword type="function" name="xmlXPathLastFunction ()" link="libxml2-xpathInternals.html#xmlXPathLastFunction"/>
-    <keyword type="function" name="xmlXPathLeading ()" link="libxml2-xpathInternals.html#xmlXPathLeading"/>
-    <keyword type="function" name="xmlXPathLeadingSorted ()" link="libxml2-xpathInternals.html#xmlXPathLeadingSorted"/>
-    <keyword type="function" name="xmlXPathLocalNameFunction ()" link="libxml2-xpathInternals.html#xmlXPathLocalNameFunction"/>
-    <keyword type="function" name="xmlXPathModValues ()" link="libxml2-xpathInternals.html#xmlXPathModValues"/>
-    <keyword type="function" name="xmlXPathMultValues ()" link="libxml2-xpathInternals.html#xmlXPathMultValues"/>
-    <keyword type="function" name="xmlXPathNamespaceURIFunction ()" link="libxml2-xpathInternals.html#xmlXPathNamespaceURIFunction"/>
-    <keyword type="function" name="xmlXPathNewBoolean ()" link="libxml2-xpathInternals.html#xmlXPathNewBoolean"/>
-    <keyword type="function" name="xmlXPathNewCString ()" link="libxml2-xpathInternals.html#xmlXPathNewCString"/>
-    <keyword type="function" name="xmlXPathNewContext ()" link="libxml2-xpath.html#xmlXPathNewContext"/>
-    <keyword type="function" name="xmlXPathNewFloat ()" link="libxml2-xpathInternals.html#xmlXPathNewFloat"/>
-    <keyword type="function" name="xmlXPathNewNodeSet ()" link="libxml2-xpathInternals.html#xmlXPathNewNodeSet"/>
-    <keyword type="function" name="xmlXPathNewNodeSetList ()" link="libxml2-xpathInternals.html#xmlXPathNewNodeSetList"/>
-    <keyword type="function" name="xmlXPathNewParserContext ()" link="libxml2-xpathInternals.html#xmlXPathNewParserContext"/>
-    <keyword type="function" name="xmlXPathNewString ()" link="libxml2-xpathInternals.html#xmlXPathNewString"/>
-    <keyword type="function" name="xmlXPathNewValueTree ()" link="libxml2-xpathInternals.html#xmlXPathNewValueTree"/>
-    <keyword type="function" name="xmlXPathNextAncestor ()" link="libxml2-xpathInternals.html#xmlXPathNextAncestor"/>
-    <keyword type="function" name="xmlXPathNextAncestorOrSelf ()" link="libxml2-xpathInternals.html#xmlXPathNextAncestorOrSelf"/>
-    <keyword type="function" name="xmlXPathNextAttribute ()" link="libxml2-xpathInternals.html#xmlXPathNextAttribute"/>
-    <keyword type="function" name="xmlXPathNextChild ()" link="libxml2-xpathInternals.html#xmlXPathNextChild"/>
-    <keyword type="function" name="xmlXPathNextDescendant ()" link="libxml2-xpathInternals.html#xmlXPathNextDescendant"/>
-    <keyword type="function" name="xmlXPathNextDescendantOrSelf ()" link="libxml2-xpathInternals.html#xmlXPathNextDescendantOrSelf"/>
-    <keyword type="function" name="xmlXPathNextFollowing ()" link="libxml2-xpathInternals.html#xmlXPathNextFollowing"/>
-    <keyword type="function" name="xmlXPathNextFollowingSibling ()" link="libxml2-xpathInternals.html#xmlXPathNextFollowingSibling"/>
-    <keyword type="function" name="xmlXPathNextNamespace ()" link="libxml2-xpathInternals.html#xmlXPathNextNamespace"/>
-    <keyword type="function" name="xmlXPathNextParent ()" link="libxml2-xpathInternals.html#xmlXPathNextParent"/>
-    <keyword type="function" name="xmlXPathNextPreceding ()" link="libxml2-xpathInternals.html#xmlXPathNextPreceding"/>
-    <keyword type="function" name="xmlXPathNextPrecedingSibling ()" link="libxml2-xpathInternals.html#xmlXPathNextPrecedingSibling"/>
-    <keyword type="function" name="xmlXPathNextSelf ()" link="libxml2-xpathInternals.html#xmlXPathNextSelf"/>
-    <keyword type="function" name="xmlXPathNodeEval ()" link="libxml2-xpath.html#xmlXPathNodeEval"/>
-    <keyword type="function" name="xmlXPathNodeLeading ()" link="libxml2-xpathInternals.html#xmlXPathNodeLeading"/>
-    <keyword type="function" name="xmlXPathNodeLeadingSorted ()" link="libxml2-xpathInternals.html#xmlXPathNodeLeadingSorted"/>
-    <keyword type="function" name="xmlXPathNodeSetAdd ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetAdd"/>
-    <keyword type="function" name="xmlXPathNodeSetAddNs ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetAddNs"/>
-    <keyword type="function" name="xmlXPathNodeSetAddUnique ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetAddUnique"/>
-    <keyword type="function" name="xmlXPathNodeSetContains ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetContains"/>
-    <keyword type="function" name="xmlXPathNodeSetCreate ()" link="libxml2-xpath.html#xmlXPathNodeSetCreate"/>
-    <keyword type="function" name="xmlXPathNodeSetDel ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetDel"/>
-    <keyword type="function" name="xmlXPathNodeSetFreeNs ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetFreeNs"/>
-    <keyword type="function" name="xmlXPathNodeSetMerge ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetMerge"/>
-    <keyword type="function" name="xmlXPathNodeSetRemove ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetRemove"/>
-    <keyword type="function" name="xmlXPathNodeSetSort ()" link="libxml2-xpathInternals.html#xmlXPathNodeSetSort"/>
-    <keyword type="function" name="xmlXPathNodeTrailing ()" link="libxml2-xpathInternals.html#xmlXPathNodeTrailing"/>
-    <keyword type="function" name="xmlXPathNodeTrailingSorted ()" link="libxml2-xpathInternals.html#xmlXPathNodeTrailingSorted"/>
-    <keyword type="function" name="xmlXPathNormalizeFunction ()" link="libxml2-xpathInternals.html#xmlXPathNormalizeFunction"/>
-    <keyword type="function" name="xmlXPathNotEqualValues ()" link="libxml2-xpathInternals.html#xmlXPathNotEqualValues"/>
-    <keyword type="function" name="xmlXPathNotFunction ()" link="libxml2-xpathInternals.html#xmlXPathNotFunction"/>
-    <keyword type="function" name="xmlXPathNsLookup ()" link="libxml2-xpathInternals.html#xmlXPathNsLookup"/>
-    <keyword type="function" name="xmlXPathNumberFunction ()" link="libxml2-xpathInternals.html#xmlXPathNumberFunction"/>
-    <keyword type="function" name="xmlXPathObjectCopy ()" link="libxml2-xpath.html#xmlXPathObjectCopy"/>
-    <keyword type="function" name="xmlXPathOrderDocElems ()" link="libxml2-xpath.html#xmlXPathOrderDocElems"/>
-    <keyword type="function" name="xmlXPathParseNCName ()" link="libxml2-xpathInternals.html#xmlXPathParseNCName"/>
-    <keyword type="function" name="xmlXPathParseName ()" link="libxml2-xpathInternals.html#xmlXPathParseName"/>
-    <keyword type="function" name="xmlXPathPopBoolean ()" link="libxml2-xpathInternals.html#xmlXPathPopBoolean"/>
-    <keyword type="function" name="xmlXPathPopExternal ()" link="libxml2-xpathInternals.html#xmlXPathPopExternal"/>
-    <keyword type="function" name="xmlXPathPopNodeSet ()" link="libxml2-xpathInternals.html#xmlXPathPopNodeSet"/>
-    <keyword type="function" name="xmlXPathPopNumber ()" link="libxml2-xpathInternals.html#xmlXPathPopNumber"/>
-    <keyword type="function" name="xmlXPathPopString ()" link="libxml2-xpathInternals.html#xmlXPathPopString"/>
-    <keyword type="function" name="xmlXPathPositionFunction ()" link="libxml2-xpathInternals.html#xmlXPathPositionFunction"/>
-    <keyword type="function" name="xmlXPathRegisterAllFunctions ()" link="libxml2-xpathInternals.html#xmlXPathRegisterAllFunctions"/>
-    <keyword type="function" name="xmlXPathRegisterFunc ()" link="libxml2-xpathInternals.html#xmlXPathRegisterFunc"/>
-    <keyword type="function" name="xmlXPathRegisterFuncLookup ()" link="libxml2-xpathInternals.html#xmlXPathRegisterFuncLookup"/>
-    <keyword type="function" name="xmlXPathRegisterFuncNS ()" link="libxml2-xpathInternals.html#xmlXPathRegisterFuncNS"/>
-    <keyword type="function" name="xmlXPathRegisterNs ()" link="libxml2-xpathInternals.html#xmlXPathRegisterNs"/>
-    <keyword type="function" name="xmlXPathRegisterVariable ()" link="libxml2-xpathInternals.html#xmlXPathRegisterVariable"/>
-    <keyword type="function" name="xmlXPathRegisterVariableLookup ()" link="libxml2-xpathInternals.html#xmlXPathRegisterVariableLookup"/>
-    <keyword type="function" name="xmlXPathRegisterVariableNS ()" link="libxml2-xpathInternals.html#xmlXPathRegisterVariableNS"/>
-    <keyword type="function" name="xmlXPathRegisteredFuncsCleanup ()" link="libxml2-xpathInternals.html#xmlXPathRegisteredFuncsCleanup"/>
-    <keyword type="function" name="xmlXPathRegisteredNsCleanup ()" link="libxml2-xpathInternals.html#xmlXPathRegisteredNsCleanup"/>
-    <keyword type="function" name="xmlXPathRegisteredVariablesCleanup ()" link="libxml2-xpathInternals.html#xmlXPathRegisteredVariablesCleanup"/>
-    <keyword type="function" name="xmlXPathRoot ()" link="libxml2-xpathInternals.html#xmlXPathRoot"/>
-    <keyword type="function" name="xmlXPathRoundFunction ()" link="libxml2-xpathInternals.html#xmlXPathRoundFunction"/>
-    <keyword type="function" name="xmlXPathSetContextNode ()" link="libxml2-xpath.html#xmlXPathSetContextNode"/>
-    <keyword type="function" name="xmlXPathSetErrorHandler ()" link="libxml2-xpath.html#xmlXPathSetErrorHandler"/>
-    <keyword type="function" name="xmlXPathStartsWithFunction ()" link="libxml2-xpathInternals.html#xmlXPathStartsWithFunction"/>
-    <keyword type="function" name="xmlXPathStringEvalNumber ()" link="libxml2-xpathInternals.html#xmlXPathStringEvalNumber"/>
-    <keyword type="function" name="xmlXPathStringFunction ()" link="libxml2-xpathInternals.html#xmlXPathStringFunction"/>
-    <keyword type="function" name="xmlXPathStringLengthFunction ()" link="libxml2-xpathInternals.html#xmlXPathStringLengthFunction"/>
-    <keyword type="function" name="xmlXPathSubValues ()" link="libxml2-xpathInternals.html#xmlXPathSubValues"/>
-    <keyword type="function" name="xmlXPathSubstringAfterFunction ()" link="libxml2-xpathInternals.html#xmlXPathSubstringAfterFunction"/>
-    <keyword type="function" name="xmlXPathSubstringBeforeFunction ()" link="libxml2-xpathInternals.html#xmlXPathSubstringBeforeFunction"/>
-    <keyword type="function" name="xmlXPathSubstringFunction ()" link="libxml2-xpathInternals.html#xmlXPathSubstringFunction"/>
-    <keyword type="function" name="xmlXPathSumFunction ()" link="libxml2-xpathInternals.html#xmlXPathSumFunction"/>
-    <keyword type="function" name="xmlXPathTrailing ()" link="libxml2-xpathInternals.html#xmlXPathTrailing"/>
-    <keyword type="function" name="xmlXPathTrailingSorted ()" link="libxml2-xpathInternals.html#xmlXPathTrailingSorted"/>
-    <keyword type="function" name="xmlXPathTranslateFunction ()" link="libxml2-xpathInternals.html#xmlXPathTranslateFunction"/>
-    <keyword type="function" name="xmlXPathTrueFunction ()" link="libxml2-xpathInternals.html#xmlXPathTrueFunction"/>
-    <keyword type="function" name="xmlXPathValueFlipSign ()" link="libxml2-xpathInternals.html#xmlXPathValueFlipSign"/>
-    <keyword type="function" name="xmlXPathValuePop ()" link="libxml2-xpathInternals.html#xmlXPathValuePop"/>
-    <keyword type="function" name="xmlXPathValuePush ()" link="libxml2-xpathInternals.html#xmlXPathValuePush"/>
-    <keyword type="function" name="xmlXPathVariableLookup ()" link="libxml2-xpathInternals.html#xmlXPathVariableLookup"/>
-    <keyword type="function" name="xmlXPathVariableLookupNS ()" link="libxml2-xpathInternals.html#xmlXPathVariableLookupNS"/>
-    <keyword type="function" name="xmlXPathWrapCString ()" link="libxml2-xpathInternals.html#xmlXPathWrapCString"/>
-    <keyword type="function" name="xmlXPathWrapExternal ()" link="libxml2-xpathInternals.html#xmlXPathWrapExternal"/>
-    <keyword type="function" name="xmlXPathWrapNodeSet ()" link="libxml2-xpathInternals.html#xmlXPathWrapNodeSet"/>
-    <keyword type="function" name="xmlXPathWrapString ()" link="libxml2-xpathInternals.html#xmlXPathWrapString"/>
-    <keyword type="function" name="xmlXPatherror ()" link="libxml2-xpathInternals.html#xmlXPatherror"/>
-    <keyword type="function" name="xmlXPtrEval ()" link="libxml2-xpointer.html#xmlXPtrEval"/>
-    <keyword type="function" name="xmlXPtrNewContext ()" link="libxml2-xpointer.html#xmlXPtrNewContext"/>
-  </functions>
-</book>
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/meson.build 2.15.0+dfsg-0.3/doc/devhelp/meson.build
--- 2.14.6+dfsg-0.1/doc/devhelp/meson.build	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/meson.build	1970-01-01 00:00:00.000000000 +0000
@@ -1,61 +0,0 @@
-
-html_files = files(
-    'general.html',
-    'index.html',
-)
-
-html_modules = files(
-    'libxml2-HTMLparser.html',
-    'libxml2-HTMLtree.html',
-    'libxml2-SAX.html',
-    'libxml2-SAX2.html',
-    'libxml2-c14n.html',
-    'libxml2-catalog.html',
-    'libxml2-chvalid.html',
-    'libxml2-debugXML.html',
-    'libxml2-dict.html',
-    'libxml2-encoding.html',
-    'libxml2-entities.html',
-    'libxml2-globals.html',
-    'libxml2-hash.html',
-    'libxml2-list.html',
-    'libxml2-nanoftp.html',
-    'libxml2-nanohttp.html',
-    'libxml2-parser.html',
-    'libxml2-parserInternals.html',
-    'libxml2-pattern.html',
-    'libxml2-relaxng.html',
-    'libxml2-schemasInternals.html',
-    'libxml2-schematron.html',
-    'libxml2-threads.html',
-    'libxml2-tree.html',
-    'libxml2-uri.html',
-    'libxml2-valid.html',
-    'libxml2-xinclude.html',
-    'libxml2-xlink.html',
-    'libxml2-xmlIO.html',
-    'libxml2-xmlautomata.html',
-    'libxml2-xmlerror.html',
-    'libxml2-xmlexports.html',
-    'libxml2-xmlmemory.html',
-    'libxml2-xmlmodule.html',
-    'libxml2-xmlreader.html',
-    'libxml2-xmlregexp.html',
-    'libxml2-xmlsave.html',
-    'libxml2-xmlschemas.html',
-    'libxml2-xmlschemastypes.html',
-    'libxml2-xmlstring.html',
-    'libxml2-xmlunicode.html',
-    'libxml2-xmlversion.html',
-    'libxml2-xmlwriter.html',
-    'libxml2-xpath.html',
-    'libxml2-xpathInternals.html',
-    'libxml2-xpointer.html',
-    'libxml2.devhelp2',
-)
-
-extra_files = files('home.png', 'left.png', 'right.png', 'style.css', 'up.png')
-
-devhelp = [html_files, html_modules, extra_files]
-
-install_data(devhelp, install_dir: dir_data / 'gtk-doc' / 'html' / 'libxml2')
Binary files 2.14.6+dfsg-0.1/doc/devhelp/right.png and 2.15.0+dfsg-0.3/doc/devhelp/right.png differ
diff -pruN 2.14.6+dfsg-0.1/doc/devhelp/style.css 2.15.0+dfsg-0.3/doc/devhelp/style.css
--- 2.14.6+dfsg-0.1/doc/devhelp/style.css	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/devhelp/style.css	1970-01-01 00:00:00.000000000 +0000
@@ -1,66 +0,0 @@
-.synopsis, .classsynopsis 
-{
-  background: #eeeeee;
-  border: solid 1px #aaaaaa;
-  padding: 0.5em;
-}
-.programlisting 
-{
-  background: #eeeeff;
-  border: solid 1px #aaaaff;
-  padding: 0.5em;
-}
-.variablelist 
-{
-  padding: 4px;
-  margin-left: 3em;
-}
-.variablelist td:first-child
-{
-  vertical-align: top;
-}
-table.navigation 
-{
-  background: #ffeeee;
-  border: solid 1px #ffaaaa;
-  margin-top: 0.5em;
-  margin-bottom: 0.5em;
-}
-.navigation a 
-{
-  color: #770000;
-}
-.navigation a:visited 
-{
-  color: #550000;
-}
-.navigation .title 
-{
-  font-size: 200%;
-}
-div.refnamediv 
-{
-  margin-top: 2em;
-}
-div.gallery-float 
-{
-  float: left;
-  padding: 10px;
-}
-div.gallery-float img 
-{
-  border-style: none;
-}
-div.gallery-spacer 
-{
-  clear: both;
-}
-a
-{
-  text-decoration: none;
-}
-a:hover
-{
-  text-decoration: underline;
-  color: #FF0000;
-}
Binary files 2.14.6+dfsg-0.1/doc/devhelp/up.png and 2.15.0+dfsg-0.3/doc/devhelp/up.png differ
diff -pruN 2.14.6+dfsg-0.1/doc/libxml2-api.xml 2.15.0+dfsg-0.3/doc/libxml2-api.xml
--- 2.14.6+dfsg-0.1/doc/libxml2-api.xml	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/libxml2-api.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,16402 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<api name='libxml2'>
-  <files>
-    <file name='HTMLparser'>
-     <summary>interface for an HTML 4.0 non-verifying parser</summary>
-     <description>this module implements an HTML 4.0 non-verifying parser with API compatible with the XML parser ones. It should be able to parse &quot;real world&quot; HTML, even if severely broken from a specification point of view. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='UTF8ToHtml' type='macro'/>
-     <exports symbol='htmlDefaultSubelement' type='macro'/>
-     <exports symbol='htmlElementAllowedHereDesc' type='macro'/>
-     <exports symbol='htmlRequiredAttrs' type='macro'/>
-     <exports symbol='HTML_DEPRECATED' type='enum'/>
-     <exports symbol='HTML_INVALID' type='enum'/>
-     <exports symbol='HTML_NA' type='enum'/>
-     <exports symbol='HTML_PARSE_BIG_LINES' type='enum'/>
-     <exports symbol='HTML_PARSE_COMPACT' type='enum'/>
-     <exports symbol='HTML_PARSE_HTML5' type='enum'/>
-     <exports symbol='HTML_PARSE_HUGE' type='enum'/>
-     <exports symbol='HTML_PARSE_IGNORE_ENC' type='enum'/>
-     <exports symbol='HTML_PARSE_NOBLANKS' type='enum'/>
-     <exports symbol='HTML_PARSE_NODEFDTD' type='enum'/>
-     <exports symbol='HTML_PARSE_NOERROR' type='enum'/>
-     <exports symbol='HTML_PARSE_NOIMPLIED' type='enum'/>
-     <exports symbol='HTML_PARSE_NONET' type='enum'/>
-     <exports symbol='HTML_PARSE_NOWARNING' type='enum'/>
-     <exports symbol='HTML_PARSE_PEDANTIC' type='enum'/>
-     <exports symbol='HTML_PARSE_RECOVER' type='enum'/>
-     <exports symbol='HTML_REQUIRED' type='enum'/>
-     <exports symbol='HTML_VALID' type='enum'/>
-     <exports symbol='htmlDocPtr' type='typedef'/>
-     <exports symbol='htmlElemDesc' type='typedef'/>
-     <exports symbol='htmlElemDescPtr' type='typedef'/>
-     <exports symbol='htmlEntityDesc' type='typedef'/>
-     <exports symbol='htmlEntityDescPtr' type='typedef'/>
-     <exports symbol='htmlNodePtr' type='typedef'/>
-     <exports symbol='htmlParserCtxt' type='typedef'/>
-     <exports symbol='htmlParserCtxtPtr' type='typedef'/>
-     <exports symbol='htmlParserInput' type='typedef'/>
-     <exports symbol='htmlParserInputPtr' type='typedef'/>
-     <exports symbol='htmlParserNodeInfo' type='typedef'/>
-     <exports symbol='htmlParserOption' type='typedef'/>
-     <exports symbol='htmlSAXHandler' type='typedef'/>
-     <exports symbol='htmlSAXHandlerPtr' type='typedef'/>
-     <exports symbol='htmlStatus' type='typedef'/>
-     <exports symbol='_htmlElemDesc' type='struct'/>
-     <exports symbol='_htmlEntityDesc' type='struct'/>
-     <exports symbol='htmlDefaultSAXHandler' type='variable'/>
-     <exports symbol='htmlAttrAllowed' type='function'/>
-     <exports symbol='htmlAutoCloseTag' type='function'/>
-     <exports symbol='htmlCreateFileParserCtxt' type='function'/>
-     <exports symbol='htmlCreateMemoryParserCtxt' type='function'/>
-     <exports symbol='htmlCreatePushParserCtxt' type='function'/>
-     <exports symbol='htmlCtxtParseDocument' type='function'/>
-     <exports symbol='htmlCtxtReadDoc' type='function'/>
-     <exports symbol='htmlCtxtReadFd' type='function'/>
-     <exports symbol='htmlCtxtReadFile' type='function'/>
-     <exports symbol='htmlCtxtReadIO' type='function'/>
-     <exports symbol='htmlCtxtReadMemory' type='function'/>
-     <exports symbol='htmlCtxtReset' type='function'/>
-     <exports symbol='htmlCtxtSetOptions' type='function'/>
-     <exports symbol='htmlCtxtUseOptions' type='function'/>
-     <exports symbol='htmlElementAllowedHere' type='function'/>
-     <exports symbol='htmlElementStatusHere' type='function'/>
-     <exports symbol='htmlEncodeEntities' type='function'/>
-     <exports symbol='htmlEntityLookup' type='function'/>
-     <exports symbol='htmlEntityValueLookup' type='function'/>
-     <exports symbol='htmlFreeParserCtxt' type='function'/>
-     <exports symbol='htmlHandleOmittedElem' type='function'/>
-     <exports symbol='htmlInitAutoClose' type='function'/>
-     <exports symbol='htmlIsAutoClosed' type='function'/>
-     <exports symbol='htmlIsScriptAttribute' type='function'/>
-     <exports symbol='htmlNewParserCtxt' type='function'/>
-     <exports symbol='htmlNewSAXParserCtxt' type='function'/>
-     <exports symbol='htmlNodeStatus' type='function'/>
-     <exports symbol='htmlParseCharRef' type='function'/>
-     <exports symbol='htmlParseChunk' type='function'/>
-     <exports symbol='htmlParseDoc' type='function'/>
-     <exports symbol='htmlParseDocument' type='function'/>
-     <exports symbol='htmlParseElement' type='function'/>
-     <exports symbol='htmlParseEntityRef' type='function'/>
-     <exports symbol='htmlParseFile' type='function'/>
-     <exports symbol='htmlReadDoc' type='function'/>
-     <exports symbol='htmlReadFd' type='function'/>
-     <exports symbol='htmlReadFile' type='function'/>
-     <exports symbol='htmlReadIO' type='function'/>
-     <exports symbol='htmlReadMemory' type='function'/>
-     <exports symbol='htmlSAXParseDoc' type='function'/>
-     <exports symbol='htmlSAXParseFile' type='function'/>
-     <exports symbol='htmlTagLookup' type='function'/>
-     <exports symbol='htmlUTF8ToHtml' type='function'/>
-    </file>
-    <file name='HTMLtree'>
-     <summary>specific APIs to process HTML tree, especially serialization</summary>
-     <description>this module implements a few function needed to process tree in an HTML specific way. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='HTML_COMMENT_NODE' type='macro'/>
-     <exports symbol='HTML_ENTITY_REF_NODE' type='macro'/>
-     <exports symbol='HTML_PI_NODE' type='macro'/>
-     <exports symbol='HTML_PRESERVE_NODE' type='macro'/>
-     <exports symbol='HTML_TEXT_NODE' type='macro'/>
-     <exports symbol='htmlDocContentDumpFormatOutput' type='function'/>
-     <exports symbol='htmlDocContentDumpOutput' type='function'/>
-     <exports symbol='htmlDocDump' type='function'/>
-     <exports symbol='htmlDocDumpMemory' type='function'/>
-     <exports symbol='htmlDocDumpMemoryFormat' type='function'/>
-     <exports symbol='htmlGetMetaEncoding' type='function'/>
-     <exports symbol='htmlIsBooleanAttr' type='function'/>
-     <exports symbol='htmlNewDoc' type='function'/>
-     <exports symbol='htmlNewDocNoDtD' type='function'/>
-     <exports symbol='htmlNodeDump' type='function'/>
-     <exports symbol='htmlNodeDumpFile' type='function'/>
-     <exports symbol='htmlNodeDumpFileFormat' type='function'/>
-     <exports symbol='htmlNodeDumpFormatOutput' type='function'/>
-     <exports symbol='htmlNodeDumpOutput' type='function'/>
-     <exports symbol='htmlSaveFile' type='function'/>
-     <exports symbol='htmlSaveFileEnc' type='function'/>
-     <exports symbol='htmlSaveFileFormat' type='function'/>
-     <exports symbol='htmlSetMetaEncoding' type='function'/>
-    </file>
-    <file name='SAX2'>
-     <summary>SAX2 parser interface used to build the DOM tree</summary>
-     <description>those are the default SAX2 interfaces used by the library when building DOM tree. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='htmlDefaultSAXHandlerInit' type='function'/>
-     <exports symbol='xmlDefaultSAXHandlerInit' type='function'/>
-     <exports symbol='xmlSAX2AttributeDecl' type='function'/>
-     <exports symbol='xmlSAX2CDataBlock' type='function'/>
-     <exports symbol='xmlSAX2Characters' type='function'/>
-     <exports symbol='xmlSAX2Comment' type='function'/>
-     <exports symbol='xmlSAX2ElementDecl' type='function'/>
-     <exports symbol='xmlSAX2EndDocument' type='function'/>
-     <exports symbol='xmlSAX2EndElement' type='function'/>
-     <exports symbol='xmlSAX2EndElementNs' type='function'/>
-     <exports symbol='xmlSAX2EntityDecl' type='function'/>
-     <exports symbol='xmlSAX2ExternalSubset' type='function'/>
-     <exports symbol='xmlSAX2GetColumnNumber' type='function'/>
-     <exports symbol='xmlSAX2GetEntity' type='function'/>
-     <exports symbol='xmlSAX2GetLineNumber' type='function'/>
-     <exports symbol='xmlSAX2GetParameterEntity' type='function'/>
-     <exports symbol='xmlSAX2GetPublicId' type='function'/>
-     <exports symbol='xmlSAX2GetSystemId' type='function'/>
-     <exports symbol='xmlSAX2HasExternalSubset' type='function'/>
-     <exports symbol='xmlSAX2HasInternalSubset' type='function'/>
-     <exports symbol='xmlSAX2IgnorableWhitespace' type='function'/>
-     <exports symbol='xmlSAX2InitDefaultSAXHandler' type='function'/>
-     <exports symbol='xmlSAX2InitHtmlDefaultSAXHandler' type='function'/>
-     <exports symbol='xmlSAX2InternalSubset' type='function'/>
-     <exports symbol='xmlSAX2IsStandalone' type='function'/>
-     <exports symbol='xmlSAX2NotationDecl' type='function'/>
-     <exports symbol='xmlSAX2ProcessingInstruction' type='function'/>
-     <exports symbol='xmlSAX2Reference' type='function'/>
-     <exports symbol='xmlSAX2ResolveEntity' type='function'/>
-     <exports symbol='xmlSAX2SetDocumentLocator' type='function'/>
-     <exports symbol='xmlSAX2StartDocument' type='function'/>
-     <exports symbol='xmlSAX2StartElement' type='function'/>
-     <exports symbol='xmlSAX2StartElementNs' type='function'/>
-     <exports symbol='xmlSAX2UnparsedEntityDecl' type='function'/>
-     <exports symbol='xmlSAXDefaultVersion' type='function'/>
-     <exports symbol='xmlSAXVersion' type='function'/>
-    </file>
-    <file name='c14n'>
-     <summary>Provide Canonical XML and Exclusive XML Canonicalization</summary>
-     <description>the c14n modules provides a  &quot;Canonical XML&quot; implementation</description>
-     <author>Aleksey Sanin &lt;aleksey@aleksey.com&gt; </author>
-     <exports symbol='XML_C14N_1_0' type='enum'/>
-     <exports symbol='XML_C14N_1_1' type='enum'/>
-     <exports symbol='XML_C14N_EXCLUSIVE_1_0' type='enum'/>
-     <exports symbol='xmlC14NMode' type='typedef'/>
-     <exports symbol='xmlC14NDocDumpMemory' type='function'/>
-     <exports symbol='xmlC14NDocSave' type='function'/>
-     <exports symbol='xmlC14NDocSaveTo' type='function'/>
-     <exports symbol='xmlC14NExecute' type='function'/>
-     <exports symbol='xmlC14NIsVisibleCallback' type='function'/>
-    </file>
-    <file name='catalog'>
-     <summary>interfaces to the Catalog handling system</summary>
-     <description>the catalog module implements the support for XML Catalogs and SGML catalogs </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_CATALOGS_NAMESPACE' type='macro'/>
-     <exports symbol='XML_CATALOG_PI' type='macro'/>
-     <exports symbol='XML_CATA_ALLOW_ALL' type='enum'/>
-     <exports symbol='XML_CATA_ALLOW_DOCUMENT' type='enum'/>
-     <exports symbol='XML_CATA_ALLOW_GLOBAL' type='enum'/>
-     <exports symbol='XML_CATA_ALLOW_NONE' type='enum'/>
-     <exports symbol='XML_CATA_PREFER_NONE' type='enum'/>
-     <exports symbol='XML_CATA_PREFER_PUBLIC' type='enum'/>
-     <exports symbol='XML_CATA_PREFER_SYSTEM' type='enum'/>
-     <exports symbol='xmlCatalog' type='typedef'/>
-     <exports symbol='xmlCatalogAllow' type='typedef'/>
-     <exports symbol='xmlCatalogPrefer' type='typedef'/>
-     <exports symbol='xmlCatalogPtr' type='typedef'/>
-     <exports symbol='xmlACatalogAdd' type='function'/>
-     <exports symbol='xmlACatalogDump' type='function'/>
-     <exports symbol='xmlACatalogRemove' type='function'/>
-     <exports symbol='xmlACatalogResolve' type='function'/>
-     <exports symbol='xmlACatalogResolvePublic' type='function'/>
-     <exports symbol='xmlACatalogResolveSystem' type='function'/>
-     <exports symbol='xmlACatalogResolveURI' type='function'/>
-     <exports symbol='xmlCatalogAdd' type='function'/>
-     <exports symbol='xmlCatalogAddLocal' type='function'/>
-     <exports symbol='xmlCatalogCleanup' type='function'/>
-     <exports symbol='xmlCatalogConvert' type='function'/>
-     <exports symbol='xmlCatalogDump' type='function'/>
-     <exports symbol='xmlCatalogFreeLocal' type='function'/>
-     <exports symbol='xmlCatalogGetDefaults' type='function'/>
-     <exports symbol='xmlCatalogGetPublic' type='function'/>
-     <exports symbol='xmlCatalogGetSystem' type='function'/>
-     <exports symbol='xmlCatalogIsEmpty' type='function'/>
-     <exports symbol='xmlCatalogLocalResolve' type='function'/>
-     <exports symbol='xmlCatalogLocalResolveURI' type='function'/>
-     <exports symbol='xmlCatalogRemove' type='function'/>
-     <exports symbol='xmlCatalogResolve' type='function'/>
-     <exports symbol='xmlCatalogResolvePublic' type='function'/>
-     <exports symbol='xmlCatalogResolveSystem' type='function'/>
-     <exports symbol='xmlCatalogResolveURI' type='function'/>
-     <exports symbol='xmlCatalogSetDebug' type='function'/>
-     <exports symbol='xmlCatalogSetDefaultPrefer' type='function'/>
-     <exports symbol='xmlCatalogSetDefaults' type='function'/>
-     <exports symbol='xmlConvertSGMLCatalog' type='function'/>
-     <exports symbol='xmlFreeCatalog' type='function'/>
-     <exports symbol='xmlInitializeCatalog' type='function'/>
-     <exports symbol='xmlLoadACatalog' type='function'/>
-     <exports symbol='xmlLoadCatalog' type='function'/>
-     <exports symbol='xmlLoadCatalogs' type='function'/>
-     <exports symbol='xmlLoadSGMLSuperCatalog' type='function'/>
-     <exports symbol='xmlNewCatalog' type='function'/>
-     <exports symbol='xmlParseCatalogFile' type='function'/>
-    </file>
-    <file name='chvalid'>
-     <summary>Unicode character range checking</summary>
-     <description>this module exports interfaces for the character range validation APIs  This file is automatically generated from the cvs source definition files using the genChRanges.py Python script </description>
-     <author>William Brack &lt;wbrack@mmm.com.hk&gt; </author>
-     <exports symbol='xmlIsBaseCharQ' type='macro'/>
-     <exports symbol='xmlIsBaseChar_ch' type='macro'/>
-     <exports symbol='xmlIsBlankQ' type='macro'/>
-     <exports symbol='xmlIsBlank_ch' type='macro'/>
-     <exports symbol='xmlIsCharQ' type='macro'/>
-     <exports symbol='xmlIsChar_ch' type='macro'/>
-     <exports symbol='xmlIsCombiningQ' type='macro'/>
-     <exports symbol='xmlIsDigitQ' type='macro'/>
-     <exports symbol='xmlIsDigit_ch' type='macro'/>
-     <exports symbol='xmlIsExtenderQ' type='macro'/>
-     <exports symbol='xmlIsExtender_ch' type='macro'/>
-     <exports symbol='xmlIsIdeographicQ' type='macro'/>
-     <exports symbol='xmlIsPubidCharQ' type='macro'/>
-     <exports symbol='xmlIsPubidChar_ch' type='macro'/>
-     <exports symbol='xmlChLRange' type='typedef'/>
-     <exports symbol='xmlChLRangePtr' type='typedef'/>
-     <exports symbol='xmlChRangeGroup' type='typedef'/>
-     <exports symbol='xmlChRangeGroupPtr' type='typedef'/>
-     <exports symbol='xmlChSRange' type='typedef'/>
-     <exports symbol='xmlChSRangePtr' type='typedef'/>
-     <exports symbol='_xmlChLRange' type='struct'/>
-     <exports symbol='_xmlChRangeGroup' type='struct'/>
-     <exports symbol='_xmlChSRange' type='struct'/>
-     <exports symbol='xmlIsBaseCharGroup' type='variable'/>
-     <exports symbol='xmlIsCharGroup' type='variable'/>
-     <exports symbol='xmlIsCombiningGroup' type='variable'/>
-     <exports symbol='xmlIsDigitGroup' type='variable'/>
-     <exports symbol='xmlIsExtenderGroup' type='variable'/>
-     <exports symbol='xmlIsIdeographicGroup' type='variable'/>
-     <exports symbol='xmlIsPubidChar_tab' type='variable'/>
-     <exports symbol='xmlCharInRange' type='function'/>
-     <exports symbol='xmlIsBaseChar' type='function'/>
-     <exports symbol='xmlIsBlank' type='function'/>
-     <exports symbol='xmlIsChar' type='function'/>
-     <exports symbol='xmlIsCombining' type='function'/>
-     <exports symbol='xmlIsDigit' type='function'/>
-     <exports symbol='xmlIsExtender' type='function'/>
-     <exports symbol='xmlIsIdeographic' type='function'/>
-     <exports symbol='xmlIsPubidChar' type='function'/>
-    </file>
-    <file name='debugXML'>
-     <summary>Tree debugging APIs</summary>
-     <description>Interfaces to a set of routines used for debugging the tree produced by the XML parser. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlDebugCheckDocument' type='function'/>
-     <exports symbol='xmlDebugDumpAttr' type='function'/>
-     <exports symbol='xmlDebugDumpAttrList' type='function'/>
-     <exports symbol='xmlDebugDumpDTD' type='function'/>
-     <exports symbol='xmlDebugDumpDocument' type='function'/>
-     <exports symbol='xmlDebugDumpDocumentHead' type='function'/>
-     <exports symbol='xmlDebugDumpEntities' type='function'/>
-     <exports symbol='xmlDebugDumpNode' type='function'/>
-     <exports symbol='xmlDebugDumpNodeList' type='function'/>
-     <exports symbol='xmlDebugDumpOneNode' type='function'/>
-     <exports symbol='xmlDebugDumpString' type='function'/>
-    </file>
-    <file name='dict'>
-     <summary>string dictionary</summary>
-     <description>dictionary of reusable strings, just used to avoid allocation and freeing operations. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlDict' type='typedef'/>
-     <exports symbol='xmlDictPtr' type='typedef'/>
-     <exports symbol='xmlDictCleanup' type='function'/>
-     <exports symbol='xmlDictCreate' type='function'/>
-     <exports symbol='xmlDictCreateSub' type='function'/>
-     <exports symbol='xmlDictExists' type='function'/>
-     <exports symbol='xmlDictFree' type='function'/>
-     <exports symbol='xmlDictGetUsage' type='function'/>
-     <exports symbol='xmlDictLookup' type='function'/>
-     <exports symbol='xmlDictOwns' type='function'/>
-     <exports symbol='xmlDictQLookup' type='function'/>
-     <exports symbol='xmlDictReference' type='function'/>
-     <exports symbol='xmlDictSetLimit' type='function'/>
-     <exports symbol='xmlDictSize' type='function'/>
-     <exports symbol='xmlInitializeDict' type='function'/>
-    </file>
-    <file name='encoding'>
-     <summary>interface for the encoding conversion functions</summary>
-     <description>interface for the encoding conversion functions needed for XML basic encoding and iconv() support.  Related specs are rfc2044        (UTF-8 and UTF-16) F. Yergeau Alis Technologies [ISO-10646]    UTF-8 and UTF-16 in Annexes [ISO-8859-1]   ISO Latin-1 characters codes. [UNICODE]      The Unicode Consortium, &quot;The Unicode Standard -- Worldwide Character Encoding -- Version 1.0&quot;, Addison- Wesley, Volume 1, 1991, Volume 2, 1992.  UTF-8 is described in Unicode Technical Report #4. [US-ASCII]     Coded Character Set--7-bit American Standard Code for Information Interchange, ANSI X3.4-1986. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='UTF8Toisolat1' type='macro'/>
-     <exports symbol='isolat1ToUTF8' type='macro'/>
-     <exports symbol='XML_CHAR_ENCODING_2022_JP' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_1' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_10' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_11' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_13' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_14' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_15' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_16' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_2' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_3' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_4' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_5' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_6' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_7' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_8' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_8859_9' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_ASCII' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_EBCDIC' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_ERROR' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_EUC_JP' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_HTML' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_NONE' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_SHIFT_JIS' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UCS2' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UCS4BE' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UCS4LE' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UCS4_2143' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UCS4_3412' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UTF16' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UTF16BE' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UTF16LE' type='enum'/>
-     <exports symbol='XML_CHAR_ENCODING_UTF8' type='enum'/>
-     <exports symbol='XML_ENC_ERR_INPUT' type='enum'/>
-     <exports symbol='XML_ENC_ERR_INTERNAL' type='enum'/>
-     <exports symbol='XML_ENC_ERR_MEMORY' type='enum'/>
-     <exports symbol='XML_ENC_ERR_SPACE' type='enum'/>
-     <exports symbol='XML_ENC_ERR_SUCCESS' type='enum'/>
-     <exports symbol='XML_ENC_INPUT' type='enum'/>
-     <exports symbol='XML_ENC_OUTPUT' type='enum'/>
-     <exports symbol='xmlCharEncError' type='typedef'/>
-     <exports symbol='xmlCharEncFlags' type='typedef'/>
-     <exports symbol='xmlCharEncoding' type='typedef'/>
-     <exports symbol='xmlCharEncodingHandler' type='typedef'/>
-     <exports symbol='xmlCharEncodingHandlerPtr' type='typedef'/>
-     <exports symbol='_xmlCharEncodingHandler' type='struct'/>
-     <exports symbol='xmlAddEncodingAlias' type='function'/>
-     <exports symbol='xmlCharEncCloseFunc' type='function'/>
-     <exports symbol='xmlCharEncConvCtxtDtor' type='function'/>
-     <exports symbol='xmlCharEncConvFunc' type='function'/>
-     <exports symbol='xmlCharEncConvImpl' type='function'/>
-     <exports symbol='xmlCharEncFirstLine' type='function'/>
-     <exports symbol='xmlCharEncInFunc' type='function'/>
-     <exports symbol='xmlCharEncNewCustomHandler' type='function'/>
-     <exports symbol='xmlCharEncOutFunc' type='function'/>
-     <exports symbol='xmlCharEncodingInputFunc' type='function'/>
-     <exports symbol='xmlCharEncodingOutputFunc' type='function'/>
-     <exports symbol='xmlCleanupCharEncodingHandlers' type='function'/>
-     <exports symbol='xmlCleanupEncodingAliases' type='function'/>
-     <exports symbol='xmlCreateCharEncodingHandler' type='function'/>
-     <exports symbol='xmlDelEncodingAlias' type='function'/>
-     <exports symbol='xmlDetectCharEncoding' type='function'/>
-     <exports symbol='xmlFindCharEncodingHandler' type='function'/>
-     <exports symbol='xmlGetCharEncodingHandler' type='function'/>
-     <exports symbol='xmlGetCharEncodingName' type='function'/>
-     <exports symbol='xmlGetEncodingAlias' type='function'/>
-     <exports symbol='xmlInitCharEncodingHandlers' type='function'/>
-     <exports symbol='xmlIsolat1ToUTF8' type='function'/>
-     <exports symbol='xmlLookupCharEncodingHandler' type='function'/>
-     <exports symbol='xmlNewCharEncodingHandler' type='function'/>
-     <exports symbol='xmlOpenCharEncodingHandler' type='function'/>
-     <exports symbol='xmlParseCharEncoding' type='function'/>
-     <exports symbol='xmlRegisterCharEncodingHandler' type='function'/>
-     <exports symbol='xmlUTF8ToIsolat1' type='function'/>
-    </file>
-    <file name='entities'>
-     <summary>interface for the XML entities handling</summary>
-     <description>this module provides some of the entity API needed for the parser and applications. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_EXTERNAL_GENERAL_PARSED_ENTITY' type='enum'/>
-     <exports symbol='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY' type='enum'/>
-     <exports symbol='XML_EXTERNAL_PARAMETER_ENTITY' type='enum'/>
-     <exports symbol='XML_INTERNAL_GENERAL_ENTITY' type='enum'/>
-     <exports symbol='XML_INTERNAL_PARAMETER_ENTITY' type='enum'/>
-     <exports symbol='XML_INTERNAL_PREDEFINED_ENTITY' type='enum'/>
-     <exports symbol='xmlEntitiesTable' type='typedef'/>
-     <exports symbol='xmlEntitiesTablePtr' type='typedef'/>
-     <exports symbol='xmlEntityType' type='typedef'/>
-     <exports symbol='_xmlEntity' type='struct'/>
-     <exports symbol='xmlAddDocEntity' type='function'/>
-     <exports symbol='xmlAddDtdEntity' type='function'/>
-     <exports symbol='xmlAddEntity' type='function'/>
-     <exports symbol='xmlCopyEntitiesTable' type='function'/>
-     <exports symbol='xmlCreateEntitiesTable' type='function'/>
-     <exports symbol='xmlDumpEntitiesTable' type='function'/>
-     <exports symbol='xmlDumpEntityDecl' type='function'/>
-     <exports symbol='xmlEncodeEntitiesReentrant' type='function'/>
-     <exports symbol='xmlEncodeSpecialChars' type='function'/>
-     <exports symbol='xmlFreeEntitiesTable' type='function'/>
-     <exports symbol='xmlFreeEntity' type='function'/>
-     <exports symbol='xmlGetDocEntity' type='function'/>
-     <exports symbol='xmlGetDtdEntity' type='function'/>
-     <exports symbol='xmlGetParameterEntity' type='function'/>
-     <exports symbol='xmlGetPredefinedEntity' type='function'/>
-     <exports symbol='xmlNewEntity' type='function'/>
-    </file>
-    <file name='globals'>
-     <summary>interface for all global variables of the library</summary>
-     <description>Deprecated, don&apos;t use </description>
-    </file>
-    <file name='hash'>
-     <summary>Chained hash tables</summary>
-     <description>This module implements the hash table support used in various places in the library. </description>
-     <author>Bjorn Reese &lt;bjorn.reese@systematic.dk&gt; </author>
-     <exports symbol='XML_CAST_FPTR' type='macro'/>
-     <exports symbol='xmlHashTable' type='typedef'/>
-     <exports symbol='xmlHashTablePtr' type='typedef'/>
-     <exports symbol='xmlHashAdd' type='function'/>
-     <exports symbol='xmlHashAdd2' type='function'/>
-     <exports symbol='xmlHashAdd3' type='function'/>
-     <exports symbol='xmlHashAddEntry' type='function'/>
-     <exports symbol='xmlHashAddEntry2' type='function'/>
-     <exports symbol='xmlHashAddEntry3' type='function'/>
-     <exports symbol='xmlHashCopier' type='function'/>
-     <exports symbol='xmlHashCopy' type='function'/>
-     <exports symbol='xmlHashCopySafe' type='function'/>
-     <exports symbol='xmlHashCreate' type='function'/>
-     <exports symbol='xmlHashCreateDict' type='function'/>
-     <exports symbol='xmlHashDeallocator' type='function'/>
-     <exports symbol='xmlHashDefaultDeallocator' type='function'/>
-     <exports symbol='xmlHashFree' type='function'/>
-     <exports symbol='xmlHashLookup' type='function'/>
-     <exports symbol='xmlHashLookup2' type='function'/>
-     <exports symbol='xmlHashLookup3' type='function'/>
-     <exports symbol='xmlHashQLookup' type='function'/>
-     <exports symbol='xmlHashQLookup2' type='function'/>
-     <exports symbol='xmlHashQLookup3' type='function'/>
-     <exports symbol='xmlHashRemoveEntry' type='function'/>
-     <exports symbol='xmlHashRemoveEntry2' type='function'/>
-     <exports symbol='xmlHashRemoveEntry3' type='function'/>
-     <exports symbol='xmlHashScan' type='function'/>
-     <exports symbol='xmlHashScan3' type='function'/>
-     <exports symbol='xmlHashScanFull' type='function'/>
-     <exports symbol='xmlHashScanFull3' type='function'/>
-     <exports symbol='xmlHashScanner' type='function'/>
-     <exports symbol='xmlHashScannerFull' type='function'/>
-     <exports symbol='xmlHashSize' type='function'/>
-     <exports symbol='xmlHashUpdateEntry' type='function'/>
-     <exports symbol='xmlHashUpdateEntry2' type='function'/>
-     <exports symbol='xmlHashUpdateEntry3' type='function'/>
-    </file>
-    <file name='list'>
-     <summary>lists interfaces</summary>
-     <description>this module implement the list support used in various place in the library. </description>
-     <author>Gary Pennington &lt;Gary.Pennington@uk.sun.com&gt; </author>
-     <exports symbol='xmlLink' type='typedef'/>
-     <exports symbol='xmlLinkPtr' type='typedef'/>
-     <exports symbol='xmlList' type='typedef'/>
-     <exports symbol='xmlListPtr' type='typedef'/>
-     <exports symbol='xmlLinkGetData' type='function'/>
-     <exports symbol='xmlListAppend' type='function'/>
-     <exports symbol='xmlListClear' type='function'/>
-     <exports symbol='xmlListCopy' type='function'/>
-     <exports symbol='xmlListCreate' type='function'/>
-     <exports symbol='xmlListDataCompare' type='function'/>
-     <exports symbol='xmlListDeallocator' type='function'/>
-     <exports symbol='xmlListDelete' type='function'/>
-     <exports symbol='xmlListDup' type='function'/>
-     <exports symbol='xmlListEmpty' type='function'/>
-     <exports symbol='xmlListEnd' type='function'/>
-     <exports symbol='xmlListFront' type='function'/>
-     <exports symbol='xmlListInsert' type='function'/>
-     <exports symbol='xmlListMerge' type='function'/>
-     <exports symbol='xmlListPopBack' type='function'/>
-     <exports symbol='xmlListPopFront' type='function'/>
-     <exports symbol='xmlListPushBack' type='function'/>
-     <exports symbol='xmlListPushFront' type='function'/>
-     <exports symbol='xmlListRemoveAll' type='function'/>
-     <exports symbol='xmlListRemoveFirst' type='function'/>
-     <exports symbol='xmlListRemoveLast' type='function'/>
-     <exports symbol='xmlListReverse' type='function'/>
-     <exports symbol='xmlListReverseSearch' type='function'/>
-     <exports symbol='xmlListReverseWalk' type='function'/>
-     <exports symbol='xmlListSearch' type='function'/>
-     <exports symbol='xmlListSize' type='function'/>
-     <exports symbol='xmlListSort' type='function'/>
-     <exports symbol='xmlListWalk' type='function'/>
-     <exports symbol='xmlListWalker' type='function'/>
-    </file>
-    <file name='nanohttp'>
-     <summary>minimal HTTP implementation</summary>
-     <description>minimal HTTP implementation allowing to fetch resources like external subset. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlNanoHTTPAuthHeader' type='function'/>
-     <exports symbol='xmlNanoHTTPCleanup' type='function'/>
-     <exports symbol='xmlNanoHTTPClose' type='function'/>
-     <exports symbol='xmlNanoHTTPContentLength' type='function'/>
-     <exports symbol='xmlNanoHTTPEncoding' type='function'/>
-     <exports symbol='xmlNanoHTTPFetch' type='function'/>
-     <exports symbol='xmlNanoHTTPInit' type='function'/>
-     <exports symbol='xmlNanoHTTPMethod' type='function'/>
-     <exports symbol='xmlNanoHTTPMethodRedir' type='function'/>
-     <exports symbol='xmlNanoHTTPMimeType' type='function'/>
-     <exports symbol='xmlNanoHTTPOpen' type='function'/>
-     <exports symbol='xmlNanoHTTPOpenRedir' type='function'/>
-     <exports symbol='xmlNanoHTTPRead' type='function'/>
-     <exports symbol='xmlNanoHTTPRedir' type='function'/>
-     <exports symbol='xmlNanoHTTPReturnCode' type='function'/>
-     <exports symbol='xmlNanoHTTPSave' type='function'/>
-     <exports symbol='xmlNanoHTTPScanProxy' type='function'/>
-    </file>
-    <file name='parser'>
-     <summary>the core parser module</summary>
-     <description>Interfaces, constants and types related to the XML parser </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_DEFAULT_VERSION' type='macro'/>
-     <exports symbol='XML_SAX2_MAGIC' type='macro'/>
-     <exports symbol='XML_INPUT_BUF_STATIC' type='enum'/>
-     <exports symbol='XML_INPUT_BUF_ZERO_TERMINATED' type='enum'/>
-     <exports symbol='XML_INPUT_NETWORK' type='enum'/>
-     <exports symbol='XML_INPUT_UNZIP' type='enum'/>
-     <exports symbol='XML_PARSER_ATTRIBUTE_VALUE' type='enum'/>
-     <exports symbol='XML_PARSER_CDATA_SECTION' type='enum'/>
-     <exports symbol='XML_PARSER_COMMENT' type='enum'/>
-     <exports symbol='XML_PARSER_CONTENT' type='enum'/>
-     <exports symbol='XML_PARSER_DTD' type='enum'/>
-     <exports symbol='XML_PARSER_END_TAG' type='enum'/>
-     <exports symbol='XML_PARSER_ENTITY_DECL' type='enum'/>
-     <exports symbol='XML_PARSER_ENTITY_VALUE' type='enum'/>
-     <exports symbol='XML_PARSER_EOF' type='enum'/>
-     <exports symbol='XML_PARSER_EPILOG' type='enum'/>
-     <exports symbol='XML_PARSER_IGNORE' type='enum'/>
-     <exports symbol='XML_PARSER_MISC' type='enum'/>
-     <exports symbol='XML_PARSER_PI' type='enum'/>
-     <exports symbol='XML_PARSER_PROLOG' type='enum'/>
-     <exports symbol='XML_PARSER_PUBLIC_LITERAL' type='enum'/>
-     <exports symbol='XML_PARSER_START' type='enum'/>
-     <exports symbol='XML_PARSER_START_TAG' type='enum'/>
-     <exports symbol='XML_PARSER_SYSTEM_LITERAL' type='enum'/>
-     <exports symbol='XML_PARSER_XML_DECL' type='enum'/>
-     <exports symbol='XML_PARSE_BIG_LINES' type='enum'/>
-     <exports symbol='XML_PARSE_CATALOG_PI' type='enum'/>
-     <exports symbol='XML_PARSE_COMPACT' type='enum'/>
-     <exports symbol='XML_PARSE_DOM' type='enum'/>
-     <exports symbol='XML_PARSE_DTDATTR' type='enum'/>
-     <exports symbol='XML_PARSE_DTDLOAD' type='enum'/>
-     <exports symbol='XML_PARSE_DTDVALID' type='enum'/>
-     <exports symbol='XML_PARSE_HUGE' type='enum'/>
-     <exports symbol='XML_PARSE_IGNORE_ENC' type='enum'/>
-     <exports symbol='XML_PARSE_NOBASEFIX' type='enum'/>
-     <exports symbol='XML_PARSE_NOBLANKS' type='enum'/>
-     <exports symbol='XML_PARSE_NOCDATA' type='enum'/>
-     <exports symbol='XML_PARSE_NODICT' type='enum'/>
-     <exports symbol='XML_PARSE_NOENT' type='enum'/>
-     <exports symbol='XML_PARSE_NOERROR' type='enum'/>
-     <exports symbol='XML_PARSE_NONET' type='enum'/>
-     <exports symbol='XML_PARSE_NOWARNING' type='enum'/>
-     <exports symbol='XML_PARSE_NOXINCNODE' type='enum'/>
-     <exports symbol='XML_PARSE_NO_SYS_CATALOG' type='enum'/>
-     <exports symbol='XML_PARSE_NO_XXE' type='enum'/>
-     <exports symbol='XML_PARSE_NSCLEAN' type='enum'/>
-     <exports symbol='XML_PARSE_OLD10' type='enum'/>
-     <exports symbol='XML_PARSE_OLDSAX' type='enum'/>
-     <exports symbol='XML_PARSE_PEDANTIC' type='enum'/>
-     <exports symbol='XML_PARSE_PUSH_DOM' type='enum'/>
-     <exports symbol='XML_PARSE_PUSH_SAX' type='enum'/>
-     <exports symbol='XML_PARSE_READER' type='enum'/>
-     <exports symbol='XML_PARSE_RECOVER' type='enum'/>
-     <exports symbol='XML_PARSE_SAX' type='enum'/>
-     <exports symbol='XML_PARSE_SAX1' type='enum'/>
-     <exports symbol='XML_PARSE_UNKNOWN' type='enum'/>
-     <exports symbol='XML_PARSE_UNZIP' type='enum'/>
-     <exports symbol='XML_PARSE_XINCLUDE' type='enum'/>
-     <exports symbol='XML_RESOURCE_DTD' type='enum'/>
-     <exports symbol='XML_RESOURCE_GENERAL_ENTITY' type='enum'/>
-     <exports symbol='XML_RESOURCE_MAIN_DOCUMENT' type='enum'/>
-     <exports symbol='XML_RESOURCE_PARAMETER_ENTITY' type='enum'/>
-     <exports symbol='XML_RESOURCE_UNKNOWN' type='enum'/>
-     <exports symbol='XML_RESOURCE_XINCLUDE' type='enum'/>
-     <exports symbol='XML_RESOURCE_XINCLUDE_TEXT' type='enum'/>
-     <exports symbol='XML_STATUS_CATASTROPHIC_ERROR' type='enum'/>
-     <exports symbol='XML_STATUS_DTD_VALIDATION_FAILED' type='enum'/>
-     <exports symbol='XML_STATUS_NOT_NS_WELL_FORMED' type='enum'/>
-     <exports symbol='XML_STATUS_NOT_WELL_FORMED' type='enum'/>
-     <exports symbol='XML_WITH_AUTOMATA' type='enum'/>
-     <exports symbol='XML_WITH_C14N' type='enum'/>
-     <exports symbol='XML_WITH_CATALOG' type='enum'/>
-     <exports symbol='XML_WITH_DEBUG' type='enum'/>
-     <exports symbol='XML_WITH_DEBUG_MEM' type='enum'/>
-     <exports symbol='XML_WITH_DEBUG_RUN' type='enum'/>
-     <exports symbol='XML_WITH_EXPR' type='enum'/>
-     <exports symbol='XML_WITH_FTP' type='enum'/>
-     <exports symbol='XML_WITH_HTML' type='enum'/>
-     <exports symbol='XML_WITH_HTTP' type='enum'/>
-     <exports symbol='XML_WITH_ICONV' type='enum'/>
-     <exports symbol='XML_WITH_ICU' type='enum'/>
-     <exports symbol='XML_WITH_ISO8859X' type='enum'/>
-     <exports symbol='XML_WITH_LEGACY' type='enum'/>
-     <exports symbol='XML_WITH_LZMA' type='enum'/>
-     <exports symbol='XML_WITH_MODULES' type='enum'/>
-     <exports symbol='XML_WITH_NONE' type='enum'/>
-     <exports symbol='XML_WITH_OUTPUT' type='enum'/>
-     <exports symbol='XML_WITH_PATTERN' type='enum'/>
-     <exports symbol='XML_WITH_PUSH' type='enum'/>
-     <exports symbol='XML_WITH_READER' type='enum'/>
-     <exports symbol='XML_WITH_REGEXP' type='enum'/>
-     <exports symbol='XML_WITH_RELAXNG' type='enum'/>
-     <exports symbol='XML_WITH_SAX1' type='enum'/>
-     <exports symbol='XML_WITH_SCHEMAS' type='enum'/>
-     <exports symbol='XML_WITH_SCHEMATRON' type='enum'/>
-     <exports symbol='XML_WITH_THREAD' type='enum'/>
-     <exports symbol='XML_WITH_TREE' type='enum'/>
-     <exports symbol='XML_WITH_UNICODE' type='enum'/>
-     <exports symbol='XML_WITH_VALID' type='enum'/>
-     <exports symbol='XML_WITH_WRITER' type='enum'/>
-     <exports symbol='XML_WITH_XINCLUDE' type='enum'/>
-     <exports symbol='XML_WITH_XPATH' type='enum'/>
-     <exports symbol='XML_WITH_XPTR' type='enum'/>
-     <exports symbol='XML_WITH_ZLIB' type='enum'/>
-     <exports symbol='xmlAttrHashBucket' type='typedef'/>
-     <exports symbol='xmlFeature' type='typedef'/>
-     <exports symbol='xmlParserInputFlags' type='typedef'/>
-     <exports symbol='xmlParserInputState' type='typedef'/>
-     <exports symbol='xmlParserMode' type='typedef'/>
-     <exports symbol='xmlParserNodeInfo' type='typedef'/>
-     <exports symbol='xmlParserNodeInfoPtr' type='typedef'/>
-     <exports symbol='xmlParserNodeInfoSeq' type='typedef'/>
-     <exports symbol='xmlParserNodeInfoSeqPtr' type='typedef'/>
-     <exports symbol='xmlParserNsData' type='typedef'/>
-     <exports symbol='xmlParserOption' type='typedef'/>
-     <exports symbol='xmlParserStatus' type='typedef'/>
-     <exports symbol='xmlResourceType' type='typedef'/>
-     <exports symbol='xmlSAXHandlerV1' type='typedef'/>
-     <exports symbol='xmlSAXHandlerV1Ptr' type='typedef'/>
-     <exports symbol='xmlStartTag' type='typedef'/>
-     <exports symbol='_xmlParserCtxt' type='struct'/>
-     <exports symbol='_xmlParserInput' type='struct'/>
-     <exports symbol='_xmlParserNodeInfo' type='struct'/>
-     <exports symbol='_xmlParserNodeInfoSeq' type='struct'/>
-     <exports symbol='_xmlSAXHandler' type='struct'/>
-     <exports symbol='_xmlSAXHandlerV1' type='struct'/>
-     <exports symbol='_xmlSAXLocator' type='struct'/>
-     <exports symbol='xmlParserVersion' type='variable'/>
-     <exports symbol='attributeDeclSAXFunc' type='function'/>
-     <exports symbol='attributeSAXFunc' type='function'/>
-     <exports symbol='cdataBlockSAXFunc' type='function'/>
-     <exports symbol='charactersSAXFunc' type='function'/>
-     <exports symbol='commentSAXFunc' type='function'/>
-     <exports symbol='elementDeclSAXFunc' type='function'/>
-     <exports symbol='endDocumentSAXFunc' type='function'/>
-     <exports symbol='endElementNsSAX2Func' type='function'/>
-     <exports symbol='endElementSAXFunc' type='function'/>
-     <exports symbol='entityDeclSAXFunc' type='function'/>
-     <exports symbol='errorSAXFunc' type='function'/>
-     <exports symbol='externalSubsetSAXFunc' type='function'/>
-     <exports symbol='fatalErrorSAXFunc' type='function'/>
-     <exports symbol='getEntitySAXFunc' type='function'/>
-     <exports symbol='getParameterEntitySAXFunc' type='function'/>
-     <exports symbol='hasExternalSubsetSAXFunc' type='function'/>
-     <exports symbol='hasInternalSubsetSAXFunc' type='function'/>
-     <exports symbol='ignorableWhitespaceSAXFunc' type='function'/>
-     <exports symbol='internalSubsetSAXFunc' type='function'/>
-     <exports symbol='isStandaloneSAXFunc' type='function'/>
-     <exports symbol='notationDeclSAXFunc' type='function'/>
-     <exports symbol='processingInstructionSAXFunc' type='function'/>
-     <exports symbol='referenceSAXFunc' type='function'/>
-     <exports symbol='resolveEntitySAXFunc' type='function'/>
-     <exports symbol='setDocumentLocatorSAXFunc' type='function'/>
-     <exports symbol='startDocumentSAXFunc' type='function'/>
-     <exports symbol='startElementNsSAX2Func' type='function'/>
-     <exports symbol='startElementSAXFunc' type='function'/>
-     <exports symbol='unparsedEntityDeclSAXFunc' type='function'/>
-     <exports symbol='warningSAXFunc' type='function'/>
-     <exports symbol='xmlByteConsumed' type='function'/>
-     <exports symbol='xmlCleanupGlobals' type='function'/>
-     <exports symbol='xmlCleanupParser' type='function'/>
-     <exports symbol='xmlClearNodeInfoSeq' type='function'/>
-     <exports symbol='xmlClearParserCtxt' type='function'/>
-     <exports symbol='xmlCreateDocParserCtxt' type='function'/>
-     <exports symbol='xmlCreateIOParserCtxt' type='function'/>
-     <exports symbol='xmlCreatePushParserCtxt' type='function'/>
-     <exports symbol='xmlCtxtGetCatalogs' type='function'/>
-     <exports symbol='xmlCtxtGetDeclaredEncoding' type='function'/>
-     <exports symbol='xmlCtxtGetDict' type='function'/>
-     <exports symbol='xmlCtxtGetDocument' type='function'/>
-     <exports symbol='xmlCtxtGetOptions' type='function'/>
-     <exports symbol='xmlCtxtGetPrivate' type='function'/>
-     <exports symbol='xmlCtxtGetSaxHandler' type='function'/>
-     <exports symbol='xmlCtxtGetStandalone' type='function'/>
-     <exports symbol='xmlCtxtGetStatus' type='function'/>
-     <exports symbol='xmlCtxtGetValidCtxt' type='function'/>
-     <exports symbol='xmlCtxtGetVersion' type='function'/>
-     <exports symbol='xmlCtxtIsHtml' type='function'/>
-     <exports symbol='xmlCtxtIsStopped' type='function'/>
-     <exports symbol='xmlCtxtParseContent' type='function'/>
-     <exports symbol='xmlCtxtParseDocument' type='function'/>
-     <exports symbol='xmlCtxtParseDtd' type='function'/>
-     <exports symbol='xmlCtxtReadDoc' type='function'/>
-     <exports symbol='xmlCtxtReadFd' type='function'/>
-     <exports symbol='xmlCtxtReadFile' type='function'/>
-     <exports symbol='xmlCtxtReadIO' type='function'/>
-     <exports symbol='xmlCtxtReadMemory' type='function'/>
-     <exports symbol='xmlCtxtReset' type='function'/>
-     <exports symbol='xmlCtxtResetPush' type='function'/>
-     <exports symbol='xmlCtxtSetCatalogs' type='function'/>
-     <exports symbol='xmlCtxtSetCharEncConvImpl' type='function'/>
-     <exports symbol='xmlCtxtSetDict' type='function'/>
-     <exports symbol='xmlCtxtSetErrorHandler' type='function'/>
-     <exports symbol='xmlCtxtSetMaxAmplification' type='function'/>
-     <exports symbol='xmlCtxtSetOptions' type='function'/>
-     <exports symbol='xmlCtxtSetPrivate' type='function'/>
-     <exports symbol='xmlCtxtSetResourceLoader' type='function'/>
-     <exports symbol='xmlCtxtSetSaxHandler' type='function'/>
-     <exports symbol='xmlCtxtUseOptions' type='function'/>
-     <exports symbol='xmlCtxtValidateDocument' type='function'/>
-     <exports symbol='xmlCtxtValidateDtd' type='function'/>
-     <exports symbol='xmlExternalEntityLoader' type='function'/>
-     <exports symbol='xmlFreeParserCtxt' type='function'/>
-     <exports symbol='xmlGetExternalEntityLoader' type='function'/>
-     <exports symbol='xmlHasFeature' type='function'/>
-     <exports symbol='xmlIOParseDTD' type='function'/>
-     <exports symbol='xmlInitGlobals' type='function'/>
-     <exports symbol='xmlInitNodeInfoSeq' type='function'/>
-     <exports symbol='xmlInitParser' type='function'/>
-     <exports symbol='xmlInitParserCtxt' type='function'/>
-     <exports symbol='xmlInputSetEncodingHandler' type='function'/>
-     <exports symbol='xmlKeepBlanksDefault' type='function'/>
-     <exports symbol='xmlLineNumbersDefault' type='function'/>
-     <exports symbol='xmlLoadExternalEntity' type='function'/>
-     <exports symbol='xmlNewIOInputStream' type='function'/>
-     <exports symbol='xmlNewInputFromFd' type='function'/>
-     <exports symbol='xmlNewInputFromIO' type='function'/>
-     <exports symbol='xmlNewInputFromMemory' type='function'/>
-     <exports symbol='xmlNewInputFromString' type='function'/>
-     <exports symbol='xmlNewInputFromUrl' type='function'/>
-     <exports symbol='xmlNewParserCtxt' type='function'/>
-     <exports symbol='xmlNewSAXParserCtxt' type='function'/>
-     <exports symbol='xmlParseBalancedChunkMemory' type='function'/>
-     <exports symbol='xmlParseBalancedChunkMemoryRecover' type='function'/>
-     <exports symbol='xmlParseChunk' type='function'/>
-     <exports symbol='xmlParseCtxtExternalEntity' type='function'/>
-     <exports symbol='xmlParseDTD' type='function'/>
-     <exports symbol='xmlParseDoc' type='function'/>
-     <exports symbol='xmlParseDocument' type='function'/>
-     <exports symbol='xmlParseEntity' type='function'/>
-     <exports symbol='xmlParseExtParsedEnt' type='function'/>
-     <exports symbol='xmlParseExternalEntity' type='function'/>
-     <exports symbol='xmlParseFile' type='function'/>
-     <exports symbol='xmlParseInNodeContext' type='function'/>
-     <exports symbol='xmlParseMemory' type='function'/>
-     <exports symbol='xmlParserAddNodeInfo' type='function'/>
-     <exports symbol='xmlParserFindNodeInfo' type='function'/>
-     <exports symbol='xmlParserFindNodeInfoIndex' type='function'/>
-     <exports symbol='xmlParserInputDeallocate' type='function'/>
-     <exports symbol='xmlParserInputGrow' type='function'/>
-     <exports symbol='xmlParserInputRead' type='function'/>
-     <exports symbol='xmlPedanticParserDefault' type='function'/>
-     <exports symbol='xmlReadDoc' type='function'/>
-     <exports symbol='xmlReadFd' type='function'/>
-     <exports symbol='xmlReadFile' type='function'/>
-     <exports symbol='xmlReadIO' type='function'/>
-     <exports symbol='xmlReadMemory' type='function'/>
-     <exports symbol='xmlRecoverDoc' type='function'/>
-     <exports symbol='xmlRecoverFile' type='function'/>
-     <exports symbol='xmlRecoverMemory' type='function'/>
-     <exports symbol='xmlResourceLoader' type='function'/>
-     <exports symbol='xmlSAXParseDTD' type='function'/>
-     <exports symbol='xmlSAXParseDoc' type='function'/>
-     <exports symbol='xmlSAXParseEntity' type='function'/>
-     <exports symbol='xmlSAXParseFile' type='function'/>
-     <exports symbol='xmlSAXParseFileWithData' type='function'/>
-     <exports symbol='xmlSAXParseMemory' type='function'/>
-     <exports symbol='xmlSAXParseMemoryWithData' type='function'/>
-     <exports symbol='xmlSAXUserParseFile' type='function'/>
-     <exports symbol='xmlSAXUserParseMemory' type='function'/>
-     <exports symbol='xmlSetExternalEntityLoader' type='function'/>
-     <exports symbol='xmlSetupParserForBuffer' type='function'/>
-     <exports symbol='xmlStopParser' type='function'/>
-     <exports symbol='xmlSubstituteEntitiesDefault' type='function'/>
-     <exports symbol='xmlThrDefDoValidityCheckingDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefGetWarningsDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefKeepBlanksDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefLineNumbersDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefLoadExtDtdDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefPedanticParserDefaultValue' type='function'/>
-     <exports symbol='xmlThrDefSubstituteEntitiesDefaultValue' type='function'/>
-    </file>
-    <file name='parserInternals'>
-     <summary>internals routines and limits exported by the parser.</summary>
-     <description>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='IS_ASCII_DIGIT' type='macro'/>
-     <exports symbol='IS_ASCII_LETTER' type='macro'/>
-     <exports symbol='IS_BASECHAR' type='macro'/>
-     <exports symbol='IS_BLANK' type='macro'/>
-     <exports symbol='IS_BLANK_CH' type='macro'/>
-     <exports symbol='IS_BYTE_CHAR' type='macro'/>
-     <exports symbol='IS_CHAR' type='macro'/>
-     <exports symbol='IS_CHAR_CH' type='macro'/>
-     <exports symbol='IS_COMBINING' type='macro'/>
-     <exports symbol='IS_COMBINING_CH' type='macro'/>
-     <exports symbol='IS_DIGIT' type='macro'/>
-     <exports symbol='IS_DIGIT_CH' type='macro'/>
-     <exports symbol='IS_EXTENDER' type='macro'/>
-     <exports symbol='IS_EXTENDER_CH' type='macro'/>
-     <exports symbol='IS_IDEOGRAPHIC' type='macro'/>
-     <exports symbol='IS_LETTER' type='macro'/>
-     <exports symbol='IS_LETTER_CH' type='macro'/>
-     <exports symbol='IS_PUBIDCHAR' type='macro'/>
-     <exports symbol='IS_PUBIDCHAR_CH' type='macro'/>
-     <exports symbol='XML_MAX_DICTIONARY_LIMIT' type='macro'/>
-     <exports symbol='XML_MAX_HUGE_LENGTH' type='macro'/>
-     <exports symbol='XML_MAX_LOOKUP_LIMIT' type='macro'/>
-     <exports symbol='XML_MAX_NAMELEN' type='macro'/>
-     <exports symbol='XML_MAX_NAME_LENGTH' type='macro'/>
-     <exports symbol='XML_MAX_TEXT_LENGTH' type='macro'/>
-     <exports symbol='XML_SUBSTITUTE_BOTH' type='macro'/>
-     <exports symbol='XML_SUBSTITUTE_NONE' type='macro'/>
-     <exports symbol='XML_SUBSTITUTE_PEREF' type='macro'/>
-     <exports symbol='XML_SUBSTITUTE_REF' type='macro'/>
-     <exports symbol='inputPop' type='macro'/>
-     <exports symbol='inputPush' type='macro'/>
-     <exports symbol='xmlParserMaxDepth' type='macro'/>
-     <exports symbol='xmlStringComment' type='variable'/>
-     <exports symbol='xmlStringText' type='variable'/>
-     <exports symbol='xmlStringTextNoenc' type='variable'/>
-     <exports symbol='xmlCheckLanguageID' type='function'/>
-     <exports symbol='xmlCopyChar' type='function'/>
-     <exports symbol='xmlCopyCharMultiByte' type='function'/>
-     <exports symbol='xmlCreateEntityParserCtxt' type='function'/>
-     <exports symbol='xmlCreateFileParserCtxt' type='function'/>
-     <exports symbol='xmlCreateMemoryParserCtxt' type='function'/>
-     <exports symbol='xmlCreateURLParserCtxt' type='function'/>
-     <exports symbol='xmlCtxtErrMemory' type='function'/>
-     <exports symbol='xmlCtxtPopInput' type='function'/>
-     <exports symbol='xmlCtxtPushInput' type='function'/>
-     <exports symbol='xmlCurrentChar' type='function'/>
-     <exports symbol='xmlFreeInputStream' type='function'/>
-     <exports symbol='xmlIsLetter' type='function'/>
-     <exports symbol='xmlNewEntityInputStream' type='function'/>
-     <exports symbol='xmlNewInputFromFile' type='function'/>
-     <exports symbol='xmlNewInputStream' type='function'/>
-     <exports symbol='xmlNewStringInputStream' type='function'/>
-     <exports symbol='xmlNextChar' type='function'/>
-     <exports symbol='xmlParseAttValue' type='function'/>
-     <exports symbol='xmlParseAttribute' type='function'/>
-     <exports symbol='xmlParseAttributeListDecl' type='function'/>
-     <exports symbol='xmlParseAttributeType' type='function'/>
-     <exports symbol='xmlParseCDSect' type='function'/>
-     <exports symbol='xmlParseCharData' type='function'/>
-     <exports symbol='xmlParseCharRef' type='function'/>
-     <exports symbol='xmlParseComment' type='function'/>
-     <exports symbol='xmlParseContent' type='function'/>
-     <exports symbol='xmlParseDefaultDecl' type='function'/>
-     <exports symbol='xmlParseDocTypeDecl' type='function'/>
-     <exports symbol='xmlParseElement' type='function'/>
-     <exports symbol='xmlParseElementChildrenContentDecl' type='function'/>
-     <exports symbol='xmlParseElementContentDecl' type='function'/>
-     <exports symbol='xmlParseElementDecl' type='function'/>
-     <exports symbol='xmlParseElementMixedContentDecl' type='function'/>
-     <exports symbol='xmlParseEncName' type='function'/>
-     <exports symbol='xmlParseEncodingDecl' type='function'/>
-     <exports symbol='xmlParseEndTag' type='function'/>
-     <exports symbol='xmlParseEntityDecl' type='function'/>
-     <exports symbol='xmlParseEntityRef' type='function'/>
-     <exports symbol='xmlParseEntityValue' type='function'/>
-     <exports symbol='xmlParseEnumeratedType' type='function'/>
-     <exports symbol='xmlParseEnumerationType' type='function'/>
-     <exports symbol='xmlParseExternalID' type='function'/>
-     <exports symbol='xmlParseExternalSubset' type='function'/>
-     <exports symbol='xmlParseMarkupDecl' type='function'/>
-     <exports symbol='xmlParseMisc' type='function'/>
-     <exports symbol='xmlParseName' type='function'/>
-     <exports symbol='xmlParseNmtoken' type='function'/>
-     <exports symbol='xmlParseNotationDecl' type='function'/>
-     <exports symbol='xmlParseNotationType' type='function'/>
-     <exports symbol='xmlParsePEReference' type='function'/>
-     <exports symbol='xmlParsePI' type='function'/>
-     <exports symbol='xmlParsePITarget' type='function'/>
-     <exports symbol='xmlParsePubidLiteral' type='function'/>
-     <exports symbol='xmlParseReference' type='function'/>
-     <exports symbol='xmlParseSDDecl' type='function'/>
-     <exports symbol='xmlParseStartTag' type='function'/>
-     <exports symbol='xmlParseSystemLiteral' type='function'/>
-     <exports symbol='xmlParseTextDecl' type='function'/>
-     <exports symbol='xmlParseVersionInfo' type='function'/>
-     <exports symbol='xmlParseVersionNum' type='function'/>
-     <exports symbol='xmlParseXMLDecl' type='function'/>
-     <exports symbol='xmlParserHandlePEReference' type='function'/>
-     <exports symbol='xmlParserInputShrink' type='function'/>
-     <exports symbol='xmlPopInput' type='function'/>
-     <exports symbol='xmlPushInput' type='function'/>
-     <exports symbol='xmlSkipBlankChars' type='function'/>
-     <exports symbol='xmlSplitQName' type='function'/>
-     <exports symbol='xmlStringCurrentChar' type='function'/>
-     <exports symbol='xmlStringDecodeEntities' type='function'/>
-     <exports symbol='xmlStringLenDecodeEntities' type='function'/>
-     <exports symbol='xmlSwitchEncoding' type='function'/>
-     <exports symbol='xmlSwitchEncodingName' type='function'/>
-     <exports symbol='xmlSwitchInputEncoding' type='function'/>
-     <exports symbol='xmlSwitchToEncoding' type='function'/>
-    </file>
-    <file name='pattern'>
-     <summary>pattern expression handling</summary>
-     <description>allows to compile and test pattern expressions for nodes either in a tree or based on a parser state. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_PATTERN_DEFAULT' type='enum'/>
-     <exports symbol='XML_PATTERN_XPATH' type='enum'/>
-     <exports symbol='XML_PATTERN_XSFIELD' type='enum'/>
-     <exports symbol='XML_PATTERN_XSSEL' type='enum'/>
-     <exports symbol='xmlPattern' type='typedef'/>
-     <exports symbol='xmlPatternFlags' type='typedef'/>
-     <exports symbol='xmlPatternPtr' type='typedef'/>
-     <exports symbol='xmlStreamCtxt' type='typedef'/>
-     <exports symbol='xmlStreamCtxtPtr' type='typedef'/>
-     <exports symbol='xmlFreePattern' type='function'/>
-     <exports symbol='xmlFreePatternList' type='function'/>
-     <exports symbol='xmlFreeStreamCtxt' type='function'/>
-     <exports symbol='xmlPatternCompileSafe' type='function'/>
-     <exports symbol='xmlPatternFromRoot' type='function'/>
-     <exports symbol='xmlPatternGetStreamCtxt' type='function'/>
-     <exports symbol='xmlPatternMatch' type='function'/>
-     <exports symbol='xmlPatternMaxDepth' type='function'/>
-     <exports symbol='xmlPatternMinDepth' type='function'/>
-     <exports symbol='xmlPatternStreamable' type='function'/>
-     <exports symbol='xmlPatterncompile' type='function'/>
-     <exports symbol='xmlStreamPop' type='function'/>
-     <exports symbol='xmlStreamPush' type='function'/>
-     <exports symbol='xmlStreamPushAttr' type='function'/>
-     <exports symbol='xmlStreamPushNode' type='function'/>
-     <exports symbol='xmlStreamWantsAnyNode' type='function'/>
-    </file>
-    <file name='relaxng'>
-     <summary>implementation of the Relax-NG validation</summary>
-     <description>implementation of the Relax-NG validation </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_RELAXNGP_CRNG' type='enum'/>
-     <exports symbol='XML_RELAXNGP_FREE_DOC' type='enum'/>
-     <exports symbol='XML_RELAXNGP_NONE' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ATTREXTRANS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ATTRNAME' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ATTRNONS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ATTRVALID' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ATTRWRONGNS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_CONTENTVALID' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_DATAELEM' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_DATATYPE' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_DUPID' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMEXTRANS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMNAME' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMNONS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMNOTEMPTY' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMWRONG' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_ELEMWRONGNS' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_EXTRACONTENT' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_EXTRADATA' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_INTEREXTRA' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_INTERNAL' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_INTERNODATA' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_INTERSEQ' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_INVALIDATTR' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_LACKDATA' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_LIST' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_LISTELEM' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_LISTEMPTY' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_LISTEXTRA' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_MEMORY' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_NODEFINE' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_NOELEM' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_NOGRAMMAR' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_NOSTATE' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_NOTELEM' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_TEXTWRONG' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_TYPE' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_TYPECMP' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_TYPEVAL' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_VALELEM' type='enum'/>
-     <exports symbol='XML_RELAXNG_ERR_VALUE' type='enum'/>
-     <exports symbol='XML_RELAXNG_OK' type='enum'/>
-     <exports symbol='xmlRelaxNG' type='typedef'/>
-     <exports symbol='xmlRelaxNGParserCtxt' type='typedef'/>
-     <exports symbol='xmlRelaxNGParserCtxtPtr' type='typedef'/>
-     <exports symbol='xmlRelaxNGParserFlag' type='typedef'/>
-     <exports symbol='xmlRelaxNGPtr' type='typedef'/>
-     <exports symbol='xmlRelaxNGValidCtxt' type='typedef'/>
-     <exports symbol='xmlRelaxNGValidCtxtPtr' type='typedef'/>
-     <exports symbol='xmlRelaxNGValidErr' type='typedef'/>
-     <exports symbol='xmlRelaxNGCleanupTypes' type='function'/>
-     <exports symbol='xmlRelaxNGDump' type='function'/>
-     <exports symbol='xmlRelaxNGDumpTree' type='function'/>
-     <exports symbol='xmlRelaxNGFree' type='function'/>
-     <exports symbol='xmlRelaxNGFreeParserCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGFreeValidCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGGetParserErrors' type='function'/>
-     <exports symbol='xmlRelaxNGGetValidErrors' type='function'/>
-     <exports symbol='xmlRelaxNGInitTypes' type='function'/>
-     <exports symbol='xmlRelaxNGNewDocParserCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGNewMemParserCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGNewParserCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGNewValidCtxt' type='function'/>
-     <exports symbol='xmlRelaxNGParse' type='function'/>
-     <exports symbol='xmlRelaxNGSetParserErrors' type='function'/>
-     <exports symbol='xmlRelaxNGSetParserStructuredErrors' type='function'/>
-     <exports symbol='xmlRelaxNGSetResourceLoader' type='function'/>
-     <exports symbol='xmlRelaxNGSetValidErrors' type='function'/>
-     <exports symbol='xmlRelaxNGSetValidStructuredErrors' type='function'/>
-     <exports symbol='xmlRelaxNGValidateDoc' type='function'/>
-     <exports symbol='xmlRelaxNGValidateFullElement' type='function'/>
-     <exports symbol='xmlRelaxNGValidatePopElement' type='function'/>
-     <exports symbol='xmlRelaxNGValidatePushCData' type='function'/>
-     <exports symbol='xmlRelaxNGValidatePushElement' type='function'/>
-     <exports symbol='xmlRelaxNGValidityErrorFunc' type='function'/>
-     <exports symbol='xmlRelaxNGValidityWarningFunc' type='function'/>
-     <exports symbol='xmlRelaxParserSetFlag' type='function'/>
-    </file>
-    <file name='schemasInternals'>
-     <summary>internal interfaces for XML Schemas</summary>
-     <description>internal interfaces for the XML Schemas handling and schema validity checking The Schemas development is a Work In Progress. Some of those interfaces are not guaranteed to be API or ABI stable ! </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_SCHEMAS_ANYATTR_LAX' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANYATTR_SKIP' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANYATTR_STRICT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANY_LAX' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANY_SKIP' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANY_STRICT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTRGROUP_GLOBAL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTRGROUP_HAS_REFS' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTRGROUP_MARKED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTRGROUP_REDEFINED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_FIXED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_GLOBAL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_INTERNAL_RESOLVED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_NSDEFAULT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_USE_OPTIONAL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_USE_PROHIBITED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ATTR_USE_REQUIRED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_ABSTRACT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_BLOCK_ABSENT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_BLOCK_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_BLOCK_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_CIRCULAR' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_DEFAULT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_FINAL_ABSENT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_FINAL_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_FINAL_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_FIXED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_GLOBAL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_INTERNAL_CHECKED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_INTERNAL_RESOLVED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_NILLABLE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_NSDEFAULT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_REF' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ELEM_TOPLEVEL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FACET_COLLAPSE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FACET_PRESERVE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FACET_REPLACE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FACET_UNKNOWN' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FINAL_DEFAULT_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FINAL_DEFAULT_LIST' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_FINAL_DEFAULT_UNION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_INCLUDING_CONVERT_NS' type='macro'/>
-     <exports symbol='XML_SCHEMAS_QUALIF_ATTR' type='macro'/>
-     <exports symbol='XML_SCHEMAS_QUALIF_ELEM' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_ABSTRACT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_BLOCK_DEFAULT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_BLOCK_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_BLOCK_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FACETSNEEDVALUE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FINAL_DEFAULT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FINAL_EXTENSION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FINAL_LIST' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FINAL_RESTRICTION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FINAL_UNION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_FIXUP_1' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_GLOBAL' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_HAS_FACETS' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_INTERNAL_INVALID' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_INTERNAL_RESOLVED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_MARKED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_MIXED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_NORMVALUENEEDED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_REDEFINED' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_VARIETY_ABSENT' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_VARIETY_ATOMIC' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_VARIETY_LIST' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_VARIETY_UNION' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_TYPE_WHITESPACE_REPLACE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_WILDCARD_COMPLETE' type='macro'/>
-     <exports symbol='XML_SCHEMAS_ANYSIMPLETYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ANYTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ANYURI' type='enum'/>
-     <exports symbol='XML_SCHEMAS_BASE64BINARY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_BOOLEAN' type='enum'/>
-     <exports symbol='XML_SCHEMAS_BYTE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_DATE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_DATETIME' type='enum'/>
-     <exports symbol='XML_SCHEMAS_DECIMAL' type='enum'/>
-     <exports symbol='XML_SCHEMAS_DOUBLE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_DURATION' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ENTITIES' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ENTITY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_FLOAT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GDAY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GMONTH' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GMONTHDAY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GYEAR' type='enum'/>
-     <exports symbol='XML_SCHEMAS_GYEARMONTH' type='enum'/>
-     <exports symbol='XML_SCHEMAS_HEXBINARY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ID' type='enum'/>
-     <exports symbol='XML_SCHEMAS_IDREF' type='enum'/>
-     <exports symbol='XML_SCHEMAS_IDREFS' type='enum'/>
-     <exports symbol='XML_SCHEMAS_INT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_INTEGER' type='enum'/>
-     <exports symbol='XML_SCHEMAS_LANGUAGE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_LONG' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NAME' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NCNAME' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NINTEGER' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NMTOKEN' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NMTOKENS' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NNINTEGER' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NORMSTRING' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NOTATION' type='enum'/>
-     <exports symbol='XML_SCHEMAS_NPINTEGER' type='enum'/>
-     <exports symbol='XML_SCHEMAS_PINTEGER' type='enum'/>
-     <exports symbol='XML_SCHEMAS_QNAME' type='enum'/>
-     <exports symbol='XML_SCHEMAS_SHORT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_STRING' type='enum'/>
-     <exports symbol='XML_SCHEMAS_TIME' type='enum'/>
-     <exports symbol='XML_SCHEMAS_TOKEN' type='enum'/>
-     <exports symbol='XML_SCHEMAS_UBYTE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_UINT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ULONG' type='enum'/>
-     <exports symbol='XML_SCHEMAS_UNKNOWN' type='enum'/>
-     <exports symbol='XML_SCHEMAS_USHORT' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_ANY' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_BASIC' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_ELEMENTS' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_EMPTY' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_MIXED' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_SIMPLE' type='enum'/>
-     <exports symbol='XML_SCHEMA_CONTENT_UNKNOWN' type='enum'/>
-     <exports symbol='XML_SCHEMA_EXTRA_ATTR_USE_PROHIB' type='enum'/>
-     <exports symbol='XML_SCHEMA_EXTRA_QNAMEREF' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_ENUMERATION' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_FRACTIONDIGITS' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_LENGTH' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MAXEXCLUSIVE' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MAXINCLUSIVE' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MAXLENGTH' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MINEXCLUSIVE' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MININCLUSIVE' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MINLENGTH' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_PATTERN' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_TOTALDIGITS' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_WHITESPACE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ALL' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ANY' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ANY_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ATTRIBUTEGROUP' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ATTRIBUTE_USE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_BASIC' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_CHOICE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_COMPLEX' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_COMPLEX_CONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_ELEMENT' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_EXTENSION' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_FACET' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_GROUP' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_IDC_KEY' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_IDC_KEYREF' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_IDC_UNIQUE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_LIST' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_NOTATION' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_PARTICLE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_RESTRICTION' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_SEQUENCE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_SIMPLE' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_SIMPLE_CONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_UNION' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_UR' type='enum'/>
-     <exports symbol='xmlSchemaAnnot' type='typedef'/>
-     <exports symbol='xmlSchemaAnnotPtr' type='typedef'/>
-     <exports symbol='xmlSchemaAttribute' type='typedef'/>
-     <exports symbol='xmlSchemaAttributeGroup' type='typedef'/>
-     <exports symbol='xmlSchemaAttributeGroupPtr' type='typedef'/>
-     <exports symbol='xmlSchemaAttributeLink' type='typedef'/>
-     <exports symbol='xmlSchemaAttributeLinkPtr' type='typedef'/>
-     <exports symbol='xmlSchemaAttributePtr' type='typedef'/>
-     <exports symbol='xmlSchemaContentType' type='typedef'/>
-     <exports symbol='xmlSchemaElement' type='typedef'/>
-     <exports symbol='xmlSchemaElementPtr' type='typedef'/>
-     <exports symbol='xmlSchemaFacet' type='typedef'/>
-     <exports symbol='xmlSchemaFacetLink' type='typedef'/>
-     <exports symbol='xmlSchemaFacetLinkPtr' type='typedef'/>
-     <exports symbol='xmlSchemaFacetPtr' type='typedef'/>
-     <exports symbol='xmlSchemaNotation' type='typedef'/>
-     <exports symbol='xmlSchemaNotationPtr' type='typedef'/>
-     <exports symbol='xmlSchemaType' type='typedef'/>
-     <exports symbol='xmlSchemaTypeLink' type='typedef'/>
-     <exports symbol='xmlSchemaTypeLinkPtr' type='typedef'/>
-     <exports symbol='xmlSchemaTypePtr' type='typedef'/>
-     <exports symbol='xmlSchemaTypeType' type='typedef'/>
-     <exports symbol='xmlSchemaVal' type='typedef'/>
-     <exports symbol='xmlSchemaValPtr' type='typedef'/>
-     <exports symbol='xmlSchemaValType' type='typedef'/>
-     <exports symbol='xmlSchemaWildcard' type='typedef'/>
-     <exports symbol='xmlSchemaWildcardNs' type='typedef'/>
-     <exports symbol='xmlSchemaWildcardNsPtr' type='typedef'/>
-     <exports symbol='xmlSchemaWildcardPtr' type='typedef'/>
-     <exports symbol='_xmlSchema' type='struct'/>
-     <exports symbol='_xmlSchemaAnnot' type='struct'/>
-     <exports symbol='_xmlSchemaAttribute' type='struct'/>
-     <exports symbol='_xmlSchemaAttributeGroup' type='struct'/>
-     <exports symbol='_xmlSchemaAttributeLink' type='struct'/>
-     <exports symbol='_xmlSchemaElement' type='struct'/>
-     <exports symbol='_xmlSchemaFacet' type='struct'/>
-     <exports symbol='_xmlSchemaFacetLink' type='struct'/>
-     <exports symbol='_xmlSchemaNotation' type='struct'/>
-     <exports symbol='_xmlSchemaType' type='struct'/>
-     <exports symbol='_xmlSchemaTypeLink' type='struct'/>
-     <exports symbol='_xmlSchemaWildcard' type='struct'/>
-     <exports symbol='_xmlSchemaWildcardNs' type='struct'/>
-     <exports symbol='xmlSchemaFreeType' type='function'/>
-     <exports symbol='xmlSchemaFreeWildcard' type='function'/>
-    </file>
-    <file name='schematron'>
-     <summary>XML Schematron implementation</summary>
-     <description>interface to the XML Schematron validity checking. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_SCHEMATRON_OUT_BUFFER' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_ERROR' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_FILE' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_IO' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_QUIET' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_TEXT' type='enum'/>
-     <exports symbol='XML_SCHEMATRON_OUT_XML' type='enum'/>
-     <exports symbol='xmlSchematron' type='typedef'/>
-     <exports symbol='xmlSchematronParserCtxt' type='typedef'/>
-     <exports symbol='xmlSchematronParserCtxtPtr' type='typedef'/>
-     <exports symbol='xmlSchematronPtr' type='typedef'/>
-     <exports symbol='xmlSchematronValidCtxt' type='typedef'/>
-     <exports symbol='xmlSchematronValidCtxtPtr' type='typedef'/>
-     <exports symbol='xmlSchematronValidOptions' type='typedef'/>
-     <exports symbol='xmlSchematronFree' type='function'/>
-     <exports symbol='xmlSchematronFreeParserCtxt' type='function'/>
-     <exports symbol='xmlSchematronFreeValidCtxt' type='function'/>
-     <exports symbol='xmlSchematronNewDocParserCtxt' type='function'/>
-     <exports symbol='xmlSchematronNewMemParserCtxt' type='function'/>
-     <exports symbol='xmlSchematronNewParserCtxt' type='function'/>
-     <exports symbol='xmlSchematronNewValidCtxt' type='function'/>
-     <exports symbol='xmlSchematronParse' type='function'/>
-     <exports symbol='xmlSchematronSetValidStructuredErrors' type='function'/>
-     <exports symbol='xmlSchematronValidateDoc' type='function'/>
-     <exports symbol='xmlSchematronValidityErrorFunc' type='function'/>
-     <exports symbol='xmlSchematronValidityWarningFunc' type='function'/>
-    </file>
-    <file name='threads'>
-     <summary>interfaces for thread handling</summary>
-     <description>set of generic threading related routines should work with pthreads, Windows native or TLS threads </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlMutex' type='typedef'/>
-     <exports symbol='xmlMutexPtr' type='typedef'/>
-     <exports symbol='xmlRMutex' type='typedef'/>
-     <exports symbol='xmlRMutexPtr' type='typedef'/>
-     <exports symbol='xmlCheckThreadLocalStorage' type='function'/>
-     <exports symbol='xmlCleanupThreads' type='function'/>
-     <exports symbol='xmlFreeMutex' type='function'/>
-     <exports symbol='xmlFreeRMutex' type='function'/>
-     <exports symbol='xmlInitThreads' type='function'/>
-     <exports symbol='xmlLockLibrary' type='function'/>
-     <exports symbol='xmlMutexLock' type='function'/>
-     <exports symbol='xmlMutexUnlock' type='function'/>
-     <exports symbol='xmlNewMutex' type='function'/>
-     <exports symbol='xmlNewRMutex' type='function'/>
-     <exports symbol='xmlRMutexLock' type='function'/>
-     <exports symbol='xmlRMutexUnlock' type='function'/>
-     <exports symbol='xmlUnlockLibrary' type='function'/>
-    </file>
-    <file name='tree'>
-     <summary>interfaces for tree manipulation</summary>
-     <description>this module describes the structures found in an tree resulting from an XML or HTML parsing, as well as the API provided for various processing on that tree </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='LIBXML2_NEW_BUFFER' type='macro'/>
-     <exports symbol='XML_GET_CONTENT' type='macro'/>
-     <exports symbol='XML_GET_LINE' type='macro'/>
-     <exports symbol='XML_LOCAL_NAMESPACE' type='macro'/>
-     <exports symbol='XML_XML_ID' type='macro'/>
-     <exports symbol='XML_XML_NAMESPACE' type='macro'/>
-     <exports symbol='xmlBufferAllocScheme' type='macro'/>
-     <exports symbol='xmlChildrenNode' type='macro'/>
-     <exports symbol='xmlDefaultBufferSize' type='macro'/>
-     <exports symbol='xmlRootNode' type='macro'/>
-     <exports symbol='XML_ATTRIBUTE_CDATA' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_DECL' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_ENTITIES' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_ENTITY' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_ENUMERATION' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_FIXED' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_ID' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_IDREF' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_IDREFS' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_IMPLIED' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_NMTOKEN' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_NMTOKENS' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_NODE' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_NONE' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_NOTATION' type='enum'/>
-     <exports symbol='XML_ATTRIBUTE_REQUIRED' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_BOUNDED' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_DOUBLEIT' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_EXACT' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_HYBRID' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_IMMUTABLE' type='enum'/>
-     <exports symbol='XML_BUFFER_ALLOC_IO' type='enum'/>
-     <exports symbol='XML_CDATA_SECTION_NODE' type='enum'/>
-     <exports symbol='XML_COMMENT_NODE' type='enum'/>
-     <exports symbol='XML_DOCUMENT_FRAG_NODE' type='enum'/>
-     <exports symbol='XML_DOCUMENT_NODE' type='enum'/>
-     <exports symbol='XML_DOCUMENT_TYPE_NODE' type='enum'/>
-     <exports symbol='XML_DOC_DTDVALID' type='enum'/>
-     <exports symbol='XML_DOC_HTML' type='enum'/>
-     <exports symbol='XML_DOC_INTERNAL' type='enum'/>
-     <exports symbol='XML_DOC_NSVALID' type='enum'/>
-     <exports symbol='XML_DOC_OLD10' type='enum'/>
-     <exports symbol='XML_DOC_USERBUILT' type='enum'/>
-     <exports symbol='XML_DOC_WELLFORMED' type='enum'/>
-     <exports symbol='XML_DOC_XINCLUDE' type='enum'/>
-     <exports symbol='XML_DTD_NODE' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_ELEMENT' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_MULT' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_ONCE' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_OPT' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_OR' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_PCDATA' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_PLUS' type='enum'/>
-     <exports symbol='XML_ELEMENT_CONTENT_SEQ' type='enum'/>
-     <exports symbol='XML_ELEMENT_DECL' type='enum'/>
-     <exports symbol='XML_ELEMENT_NODE' type='enum'/>
-     <exports symbol='XML_ELEMENT_TYPE_ANY' type='enum'/>
-     <exports symbol='XML_ELEMENT_TYPE_ELEMENT' type='enum'/>
-     <exports symbol='XML_ELEMENT_TYPE_EMPTY' type='enum'/>
-     <exports symbol='XML_ELEMENT_TYPE_MIXED' type='enum'/>
-     <exports symbol='XML_ELEMENT_TYPE_UNDEFINED' type='enum'/>
-     <exports symbol='XML_ENTITY_DECL' type='enum'/>
-     <exports symbol='XML_ENTITY_NODE' type='enum'/>
-     <exports symbol='XML_ENTITY_REF_NODE' type='enum'/>
-     <exports symbol='XML_HTML_DOCUMENT_NODE' type='enum'/>
-     <exports symbol='XML_NAMESPACE_DECL' type='enum'/>
-     <exports symbol='XML_NOTATION_NODE' type='enum'/>
-     <exports symbol='XML_PI_NODE' type='enum'/>
-     <exports symbol='XML_TEXT_NODE' type='enum'/>
-     <exports symbol='XML_XINCLUDE_END' type='enum'/>
-     <exports symbol='XML_XINCLUDE_START' type='enum'/>
-     <exports symbol='xmlAttr' type='typedef'/>
-     <exports symbol='xmlAttrPtr' type='typedef'/>
-     <exports symbol='xmlAttribute' type='typedef'/>
-     <exports symbol='xmlAttributeDefault' type='typedef'/>
-     <exports symbol='xmlAttributePtr' type='typedef'/>
-     <exports symbol='xmlAttributeType' type='typedef'/>
-     <exports symbol='xmlBuf' type='typedef'/>
-     <exports symbol='xmlBufPtr' type='typedef'/>
-     <exports symbol='xmlBuffer' type='typedef'/>
-     <exports symbol='xmlBufferAllocationScheme' type='typedef'/>
-     <exports symbol='xmlBufferPtr' type='typedef'/>
-     <exports symbol='xmlDOMWrapCtxt' type='typedef'/>
-     <exports symbol='xmlDOMWrapCtxtPtr' type='typedef'/>
-     <exports symbol='xmlDoc' type='typedef'/>
-     <exports symbol='xmlDocProperties' type='typedef'/>
-     <exports symbol='xmlDocPtr' type='typedef'/>
-     <exports symbol='xmlDtd' type='typedef'/>
-     <exports symbol='xmlDtdPtr' type='typedef'/>
-     <exports symbol='xmlElement' type='typedef'/>
-     <exports symbol='xmlElementContent' type='typedef'/>
-     <exports symbol='xmlElementContentOccur' type='typedef'/>
-     <exports symbol='xmlElementContentPtr' type='typedef'/>
-     <exports symbol='xmlElementContentType' type='typedef'/>
-     <exports symbol='xmlElementPtr' type='typedef'/>
-     <exports symbol='xmlElementType' type='typedef'/>
-     <exports symbol='xmlElementTypeVal' type='typedef'/>
-     <exports symbol='xmlEntity' type='typedef'/>
-     <exports symbol='xmlEntityPtr' type='typedef'/>
-     <exports symbol='xmlEnumeration' type='typedef'/>
-     <exports symbol='xmlEnumerationPtr' type='typedef'/>
-     <exports symbol='xmlID' type='typedef'/>
-     <exports symbol='xmlIDPtr' type='typedef'/>
-     <exports symbol='xmlNode' type='typedef'/>
-     <exports symbol='xmlNodePtr' type='typedef'/>
-     <exports symbol='xmlNotation' type='typedef'/>
-     <exports symbol='xmlNotationPtr' type='typedef'/>
-     <exports symbol='xmlNs' type='typedef'/>
-     <exports symbol='xmlNsPtr' type='typedef'/>
-     <exports symbol='xmlNsType' type='typedef'/>
-     <exports symbol='xmlOutputBuffer' type='typedef'/>
-     <exports symbol='xmlOutputBufferPtr' type='typedef'/>
-     <exports symbol='xmlParserCtxt' type='typedef'/>
-     <exports symbol='xmlParserCtxtPtr' type='typedef'/>
-     <exports symbol='xmlParserInput' type='typedef'/>
-     <exports symbol='xmlParserInputBuffer' type='typedef'/>
-     <exports symbol='xmlParserInputBufferPtr' type='typedef'/>
-     <exports symbol='xmlParserInputPtr' type='typedef'/>
-     <exports symbol='xmlRef' type='typedef'/>
-     <exports symbol='xmlRefPtr' type='typedef'/>
-     <exports symbol='xmlSAXHandler' type='typedef'/>
-     <exports symbol='xmlSAXHandlerPtr' type='typedef'/>
-     <exports symbol='xmlSAXLocator' type='typedef'/>
-     <exports symbol='xmlSAXLocatorPtr' type='typedef'/>
-     <exports symbol='_xmlAttr' type='struct'/>
-     <exports symbol='_xmlAttribute' type='struct'/>
-     <exports symbol='_xmlBuffer' type='struct'/>
-     <exports symbol='_xmlDOMWrapCtxt' type='struct'/>
-     <exports symbol='_xmlDoc' type='struct'/>
-     <exports symbol='_xmlDtd' type='struct'/>
-     <exports symbol='_xmlElement' type='struct'/>
-     <exports symbol='_xmlElementContent' type='struct'/>
-     <exports symbol='_xmlEnumeration' type='struct'/>
-     <exports symbol='_xmlID' type='struct'/>
-     <exports symbol='_xmlNode' type='struct'/>
-     <exports symbol='_xmlNotation' type='struct'/>
-     <exports symbol='_xmlNs' type='struct'/>
-     <exports symbol='_xmlRef' type='struct'/>
-     <exports symbol='xmlAddChild' type='function'/>
-     <exports symbol='xmlAddChildList' type='function'/>
-     <exports symbol='xmlAddNextSibling' type='function'/>
-     <exports symbol='xmlAddPrevSibling' type='function'/>
-     <exports symbol='xmlAddSibling' type='function'/>
-     <exports symbol='xmlAttrSerializeTxtContent' type='function'/>
-     <exports symbol='xmlBufContent' type='function'/>
-     <exports symbol='xmlBufEnd' type='function'/>
-     <exports symbol='xmlBufGetNodeContent' type='function'/>
-     <exports symbol='xmlBufNodeDump' type='function'/>
-     <exports symbol='xmlBufShrink' type='function'/>
-     <exports symbol='xmlBufUse' type='function'/>
-     <exports symbol='xmlBufferAdd' type='function'/>
-     <exports symbol='xmlBufferAddHead' type='function'/>
-     <exports symbol='xmlBufferCCat' type='function'/>
-     <exports symbol='xmlBufferCat' type='function'/>
-     <exports symbol='xmlBufferContent' type='function'/>
-     <exports symbol='xmlBufferCreate' type='function'/>
-     <exports symbol='xmlBufferCreateSize' type='function'/>
-     <exports symbol='xmlBufferCreateStatic' type='function'/>
-     <exports symbol='xmlBufferDetach' type='function'/>
-     <exports symbol='xmlBufferDump' type='function'/>
-     <exports symbol='xmlBufferEmpty' type='function'/>
-     <exports symbol='xmlBufferFree' type='function'/>
-     <exports symbol='xmlBufferGrow' type='function'/>
-     <exports symbol='xmlBufferLength' type='function'/>
-     <exports symbol='xmlBufferResize' type='function'/>
-     <exports symbol='xmlBufferSetAllocationScheme' type='function'/>
-     <exports symbol='xmlBufferShrink' type='function'/>
-     <exports symbol='xmlBufferWriteCHAR' type='function'/>
-     <exports symbol='xmlBufferWriteChar' type='function'/>
-     <exports symbol='xmlBufferWriteQuotedString' type='function'/>
-     <exports symbol='xmlBuildQName' type='function'/>
-     <exports symbol='xmlChildElementCount' type='function'/>
-     <exports symbol='xmlCopyDoc' type='function'/>
-     <exports symbol='xmlCopyDtd' type='function'/>
-     <exports symbol='xmlCopyNamespace' type='function'/>
-     <exports symbol='xmlCopyNamespaceList' type='function'/>
-     <exports symbol='xmlCopyNode' type='function'/>
-     <exports symbol='xmlCopyNodeList' type='function'/>
-     <exports symbol='xmlCopyProp' type='function'/>
-     <exports symbol='xmlCopyPropList' type='function'/>
-     <exports symbol='xmlCreateIntSubset' type='function'/>
-     <exports symbol='xmlDOMWrapAcquireNsFunction' type='function'/>
-     <exports symbol='xmlDOMWrapAdoptNode' type='function'/>
-     <exports symbol='xmlDOMWrapCloneNode' type='function'/>
-     <exports symbol='xmlDOMWrapFreeCtxt' type='function'/>
-     <exports symbol='xmlDOMWrapNewCtxt' type='function'/>
-     <exports symbol='xmlDOMWrapReconcileNamespaces' type='function'/>
-     <exports symbol='xmlDOMWrapRemoveNode' type='function'/>
-     <exports symbol='xmlDeregisterNodeDefault' type='function'/>
-     <exports symbol='xmlDeregisterNodeFunc' type='function'/>
-     <exports symbol='xmlDocCopyNode' type='function'/>
-     <exports symbol='xmlDocCopyNodeList' type='function'/>
-     <exports symbol='xmlDocDump' type='function'/>
-     <exports symbol='xmlDocDumpFormatMemory' type='function'/>
-     <exports symbol='xmlDocDumpFormatMemoryEnc' type='function'/>
-     <exports symbol='xmlDocDumpMemory' type='function'/>
-     <exports symbol='xmlDocDumpMemoryEnc' type='function'/>
-     <exports symbol='xmlDocFormatDump' type='function'/>
-     <exports symbol='xmlDocGetRootElement' type='function'/>
-     <exports symbol='xmlDocSetRootElement' type='function'/>
-     <exports symbol='xmlElemDump' type='function'/>
-     <exports symbol='xmlFirstElementChild' type='function'/>
-     <exports symbol='xmlFreeDoc' type='function'/>
-     <exports symbol='xmlFreeDtd' type='function'/>
-     <exports symbol='xmlFreeNode' type='function'/>
-     <exports symbol='xmlFreeNodeList' type='function'/>
-     <exports symbol='xmlFreeNs' type='function'/>
-     <exports symbol='xmlFreeNsList' type='function'/>
-     <exports symbol='xmlFreeProp' type='function'/>
-     <exports symbol='xmlFreePropList' type='function'/>
-     <exports symbol='xmlGetBufferAllocationScheme' type='function'/>
-     <exports symbol='xmlGetCompressMode' type='function'/>
-     <exports symbol='xmlGetDocCompressMode' type='function'/>
-     <exports symbol='xmlGetIntSubset' type='function'/>
-     <exports symbol='xmlGetLastChild' type='function'/>
-     <exports symbol='xmlGetLineNo' type='function'/>
-     <exports symbol='xmlGetNoNsProp' type='function'/>
-     <exports symbol='xmlGetNodePath' type='function'/>
-     <exports symbol='xmlGetNsList' type='function'/>
-     <exports symbol='xmlGetNsListSafe' type='function'/>
-     <exports symbol='xmlGetNsProp' type='function'/>
-     <exports symbol='xmlGetProp' type='function'/>
-     <exports symbol='xmlHasNsProp' type='function'/>
-     <exports symbol='xmlHasProp' type='function'/>
-     <exports symbol='xmlIsBlankNode' type='function'/>
-     <exports symbol='xmlIsXHTML' type='function'/>
-     <exports symbol='xmlLastElementChild' type='function'/>
-     <exports symbol='xmlNewCDataBlock' type='function'/>
-     <exports symbol='xmlNewCharRef' type='function'/>
-     <exports symbol='xmlNewChild' type='function'/>
-     <exports symbol='xmlNewComment' type='function'/>
-     <exports symbol='xmlNewDoc' type='function'/>
-     <exports symbol='xmlNewDocComment' type='function'/>
-     <exports symbol='xmlNewDocFragment' type='function'/>
-     <exports symbol='xmlNewDocNode' type='function'/>
-     <exports symbol='xmlNewDocNodeEatName' type='function'/>
-     <exports symbol='xmlNewDocPI' type='function'/>
-     <exports symbol='xmlNewDocProp' type='function'/>
-     <exports symbol='xmlNewDocRawNode' type='function'/>
-     <exports symbol='xmlNewDocText' type='function'/>
-     <exports symbol='xmlNewDocTextLen' type='function'/>
-     <exports symbol='xmlNewDtd' type='function'/>
-     <exports symbol='xmlNewNode' type='function'/>
-     <exports symbol='xmlNewNodeEatName' type='function'/>
-     <exports symbol='xmlNewNs' type='function'/>
-     <exports symbol='xmlNewNsProp' type='function'/>
-     <exports symbol='xmlNewNsPropEatName' type='function'/>
-     <exports symbol='xmlNewPI' type='function'/>
-     <exports symbol='xmlNewProp' type='function'/>
-     <exports symbol='xmlNewReference' type='function'/>
-     <exports symbol='xmlNewText' type='function'/>
-     <exports symbol='xmlNewTextChild' type='function'/>
-     <exports symbol='xmlNewTextLen' type='function'/>
-     <exports symbol='xmlNextElementSibling' type='function'/>
-     <exports symbol='xmlNodeAddContent' type='function'/>
-     <exports symbol='xmlNodeAddContentLen' type='function'/>
-     <exports symbol='xmlNodeBufGetContent' type='function'/>
-     <exports symbol='xmlNodeDump' type='function'/>
-     <exports symbol='xmlNodeDumpOutput' type='function'/>
-     <exports symbol='xmlNodeGetAttrValue' type='function'/>
-     <exports symbol='xmlNodeGetBase' type='function'/>
-     <exports symbol='xmlNodeGetBaseSafe' type='function'/>
-     <exports symbol='xmlNodeGetContent' type='function'/>
-     <exports symbol='xmlNodeGetLang' type='function'/>
-     <exports symbol='xmlNodeGetSpacePreserve' type='function'/>
-     <exports symbol='xmlNodeIsText' type='function'/>
-     <exports symbol='xmlNodeListGetRawString' type='function'/>
-     <exports symbol='xmlNodeListGetString' type='function'/>
-     <exports symbol='xmlNodeSetBase' type='function'/>
-     <exports symbol='xmlNodeSetContent' type='function'/>
-     <exports symbol='xmlNodeSetContentLen' type='function'/>
-     <exports symbol='xmlNodeSetLang' type='function'/>
-     <exports symbol='xmlNodeSetName' type='function'/>
-     <exports symbol='xmlNodeSetSpacePreserve' type='function'/>
-     <exports symbol='xmlPreviousElementSibling' type='function'/>
-     <exports symbol='xmlReconciliateNs' type='function'/>
-     <exports symbol='xmlRegisterNodeDefault' type='function'/>
-     <exports symbol='xmlRegisterNodeFunc' type='function'/>
-     <exports symbol='xmlRemoveProp' type='function'/>
-     <exports symbol='xmlReplaceNode' type='function'/>
-     <exports symbol='xmlSaveFile' type='function'/>
-     <exports symbol='xmlSaveFileEnc' type='function'/>
-     <exports symbol='xmlSaveFileTo' type='function'/>
-     <exports symbol='xmlSaveFormatFile' type='function'/>
-     <exports symbol='xmlSaveFormatFileEnc' type='function'/>
-     <exports symbol='xmlSaveFormatFileTo' type='function'/>
-     <exports symbol='xmlSearchNs' type='function'/>
-     <exports symbol='xmlSearchNsByHref' type='function'/>
-     <exports symbol='xmlSetBufferAllocationScheme' type='function'/>
-     <exports symbol='xmlSetCompressMode' type='function'/>
-     <exports symbol='xmlSetDocCompressMode' type='function'/>
-     <exports symbol='xmlSetListDoc' type='function'/>
-     <exports symbol='xmlSetNs' type='function'/>
-     <exports symbol='xmlSetNsProp' type='function'/>
-     <exports symbol='xmlSetProp' type='function'/>
-     <exports symbol='xmlSetTreeDoc' type='function'/>
-     <exports symbol='xmlSplitQName2' type='function'/>
-     <exports symbol='xmlSplitQName3' type='function'/>
-     <exports symbol='xmlStringGetNodeList' type='function'/>
-     <exports symbol='xmlStringLenGetNodeList' type='function'/>
-     <exports symbol='xmlTextConcat' type='function'/>
-     <exports symbol='xmlTextMerge' type='function'/>
-     <exports symbol='xmlThrDefDeregisterNodeDefault' type='function'/>
-     <exports symbol='xmlThrDefRegisterNodeDefault' type='function'/>
-     <exports symbol='xmlUnlinkNode' type='function'/>
-     <exports symbol='xmlUnsetNsProp' type='function'/>
-     <exports symbol='xmlUnsetProp' type='function'/>
-     <exports symbol='xmlValidateNCName' type='function'/>
-     <exports symbol='xmlValidateNMToken' type='function'/>
-     <exports symbol='xmlValidateName' type='function'/>
-     <exports symbol='xmlValidateQName' type='function'/>
-    </file>
-    <file name='uri'>
-     <summary>library of generic URI related routines</summary>
-     <description>library of generic URI related routines Implements RFC 2396 </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlURI' type='typedef'/>
-     <exports symbol='xmlURIPtr' type='typedef'/>
-     <exports symbol='_xmlURI' type='struct'/>
-     <exports symbol='xmlBuildRelativeURI' type='function'/>
-     <exports symbol='xmlBuildRelativeURISafe' type='function'/>
-     <exports symbol='xmlBuildURI' type='function'/>
-     <exports symbol='xmlBuildURISafe' type='function'/>
-     <exports symbol='xmlCanonicPath' type='function'/>
-     <exports symbol='xmlCreateURI' type='function'/>
-     <exports symbol='xmlFreeURI' type='function'/>
-     <exports symbol='xmlNormalizeURIPath' type='function'/>
-     <exports symbol='xmlParseURI' type='function'/>
-     <exports symbol='xmlParseURIRaw' type='function'/>
-     <exports symbol='xmlParseURIReference' type='function'/>
-     <exports symbol='xmlParseURISafe' type='function'/>
-     <exports symbol='xmlPathToURI' type='function'/>
-     <exports symbol='xmlPrintURI' type='function'/>
-     <exports symbol='xmlSaveUri' type='function'/>
-     <exports symbol='xmlURIEscape' type='function'/>
-     <exports symbol='xmlURIEscapeStr' type='function'/>
-     <exports symbol='xmlURIUnescapeString' type='function'/>
-    </file>
-    <file name='valid'>
-     <summary>The DTD validation</summary>
-     <description>API for the DTD handling and the validity checking </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlAttributeTable' type='typedef'/>
-     <exports symbol='xmlAttributeTablePtr' type='typedef'/>
-     <exports symbol='xmlElementTable' type='typedef'/>
-     <exports symbol='xmlElementTablePtr' type='typedef'/>
-     <exports symbol='xmlIDTable' type='typedef'/>
-     <exports symbol='xmlIDTablePtr' type='typedef'/>
-     <exports symbol='xmlNotationTable' type='typedef'/>
-     <exports symbol='xmlNotationTablePtr' type='typedef'/>
-     <exports symbol='xmlRefTable' type='typedef'/>
-     <exports symbol='xmlRefTablePtr' type='typedef'/>
-     <exports symbol='xmlValidCtxt' type='typedef'/>
-     <exports symbol='xmlValidCtxtPtr' type='typedef'/>
-     <exports symbol='xmlValidState' type='typedef'/>
-     <exports symbol='xmlValidStatePtr' type='typedef'/>
-     <exports symbol='_xmlValidCtxt' type='struct'/>
-     <exports symbol='xmlAddAttributeDecl' type='function'/>
-     <exports symbol='xmlAddElementDecl' type='function'/>
-     <exports symbol='xmlAddID' type='function'/>
-     <exports symbol='xmlAddIDSafe' type='function'/>
-     <exports symbol='xmlAddNotationDecl' type='function'/>
-     <exports symbol='xmlAddRef' type='function'/>
-     <exports symbol='xmlCopyAttributeTable' type='function'/>
-     <exports symbol='xmlCopyDocElementContent' type='function'/>
-     <exports symbol='xmlCopyElementContent' type='function'/>
-     <exports symbol='xmlCopyElementTable' type='function'/>
-     <exports symbol='xmlCopyEnumeration' type='function'/>
-     <exports symbol='xmlCopyNotationTable' type='function'/>
-     <exports symbol='xmlCreateEnumeration' type='function'/>
-     <exports symbol='xmlDumpAttributeDecl' type='function'/>
-     <exports symbol='xmlDumpAttributeTable' type='function'/>
-     <exports symbol='xmlDumpElementDecl' type='function'/>
-     <exports symbol='xmlDumpElementTable' type='function'/>
-     <exports symbol='xmlDumpNotationDecl' type='function'/>
-     <exports symbol='xmlDumpNotationTable' type='function'/>
-     <exports symbol='xmlFreeAttributeTable' type='function'/>
-     <exports symbol='xmlFreeDocElementContent' type='function'/>
-     <exports symbol='xmlFreeElementContent' type='function'/>
-     <exports symbol='xmlFreeElementTable' type='function'/>
-     <exports symbol='xmlFreeEnumeration' type='function'/>
-     <exports symbol='xmlFreeIDTable' type='function'/>
-     <exports symbol='xmlFreeNotationTable' type='function'/>
-     <exports symbol='xmlFreeRefTable' type='function'/>
-     <exports symbol='xmlFreeValidCtxt' type='function'/>
-     <exports symbol='xmlGetDtdAttrDesc' type='function'/>
-     <exports symbol='xmlGetDtdElementDesc' type='function'/>
-     <exports symbol='xmlGetDtdNotationDesc' type='function'/>
-     <exports symbol='xmlGetDtdQAttrDesc' type='function'/>
-     <exports symbol='xmlGetDtdQElementDesc' type='function'/>
-     <exports symbol='xmlGetID' type='function'/>
-     <exports symbol='xmlGetRefs' type='function'/>
-     <exports symbol='xmlIsID' type='function'/>
-     <exports symbol='xmlIsMixedElement' type='function'/>
-     <exports symbol='xmlIsRef' type='function'/>
-     <exports symbol='xmlNewDocElementContent' type='function'/>
-     <exports symbol='xmlNewElementContent' type='function'/>
-     <exports symbol='xmlNewValidCtxt' type='function'/>
-     <exports symbol='xmlRemoveID' type='function'/>
-     <exports symbol='xmlRemoveRef' type='function'/>
-     <exports symbol='xmlSnprintfElementContent' type='function'/>
-     <exports symbol='xmlSprintfElementContent' type='function'/>
-     <exports symbol='xmlValidBuildContentModel' type='function'/>
-     <exports symbol='xmlValidCtxtNormalizeAttributeValue' type='function'/>
-     <exports symbol='xmlValidGetPotentialChildren' type='function'/>
-     <exports symbol='xmlValidGetValidElements' type='function'/>
-     <exports symbol='xmlValidNormalizeAttributeValue' type='function'/>
-     <exports symbol='xmlValidateAttributeDecl' type='function'/>
-     <exports symbol='xmlValidateAttributeValue' type='function'/>
-     <exports symbol='xmlValidateDocument' type='function'/>
-     <exports symbol='xmlValidateDocumentFinal' type='function'/>
-     <exports symbol='xmlValidateDtd' type='function'/>
-     <exports symbol='xmlValidateDtdFinal' type='function'/>
-     <exports symbol='xmlValidateElement' type='function'/>
-     <exports symbol='xmlValidateElementDecl' type='function'/>
-     <exports symbol='xmlValidateNameValue' type='function'/>
-     <exports symbol='xmlValidateNamesValue' type='function'/>
-     <exports symbol='xmlValidateNmtokenValue' type='function'/>
-     <exports symbol='xmlValidateNmtokensValue' type='function'/>
-     <exports symbol='xmlValidateNotationDecl' type='function'/>
-     <exports symbol='xmlValidateNotationUse' type='function'/>
-     <exports symbol='xmlValidateOneAttribute' type='function'/>
-     <exports symbol='xmlValidateOneElement' type='function'/>
-     <exports symbol='xmlValidateOneNamespace' type='function'/>
-     <exports symbol='xmlValidatePopElement' type='function'/>
-     <exports symbol='xmlValidatePushCData' type='function'/>
-     <exports symbol='xmlValidatePushElement' type='function'/>
-     <exports symbol='xmlValidateRoot' type='function'/>
-     <exports symbol='xmlValidityErrorFunc' type='function'/>
-     <exports symbol='xmlValidityWarningFunc' type='function'/>
-    </file>
-    <file name='xinclude'>
-     <summary>implementation of XInclude</summary>
-     <description>API to handle XInclude processing, implements the World Wide Web Consortium Last Call Working Draft 10 November 2003</description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XINCLUDE_FALLBACK' type='macro'/>
-     <exports symbol='XINCLUDE_HREF' type='macro'/>
-     <exports symbol='XINCLUDE_NODE' type='macro'/>
-     <exports symbol='XINCLUDE_NS' type='macro'/>
-     <exports symbol='XINCLUDE_OLD_NS' type='macro'/>
-     <exports symbol='XINCLUDE_PARSE' type='macro'/>
-     <exports symbol='XINCLUDE_PARSE_ENCODING' type='macro'/>
-     <exports symbol='XINCLUDE_PARSE_TEXT' type='macro'/>
-     <exports symbol='XINCLUDE_PARSE_XML' type='macro'/>
-     <exports symbol='XINCLUDE_PARSE_XPOINTER' type='macro'/>
-     <exports symbol='xmlXIncludeCtxt' type='typedef'/>
-     <exports symbol='xmlXIncludeCtxtPtr' type='typedef'/>
-     <exports symbol='xmlXIncludeFreeContext' type='function'/>
-     <exports symbol='xmlXIncludeGetLastError' type='function'/>
-     <exports symbol='xmlXIncludeNewContext' type='function'/>
-     <exports symbol='xmlXIncludeProcess' type='function'/>
-     <exports symbol='xmlXIncludeProcessFlags' type='function'/>
-     <exports symbol='xmlXIncludeProcessFlagsData' type='function'/>
-     <exports symbol='xmlXIncludeProcessNode' type='function'/>
-     <exports symbol='xmlXIncludeProcessTree' type='function'/>
-     <exports symbol='xmlXIncludeProcessTreeFlags' type='function'/>
-     <exports symbol='xmlXIncludeProcessTreeFlagsData' type='function'/>
-     <exports symbol='xmlXIncludeSetErrorHandler' type='function'/>
-     <exports symbol='xmlXIncludeSetFlags' type='function'/>
-     <exports symbol='xmlXIncludeSetResourceLoader' type='function'/>
-    </file>
-    <file name='xlink'>
-     <summary>unfinished XLink detection module</summary>
-     <description>unfinished XLink detection module </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XLINK_ACTUATE_AUTO' type='enum'/>
-     <exports symbol='XLINK_ACTUATE_NONE' type='enum'/>
-     <exports symbol='XLINK_ACTUATE_ONREQUEST' type='enum'/>
-     <exports symbol='XLINK_SHOW_EMBED' type='enum'/>
-     <exports symbol='XLINK_SHOW_NEW' type='enum'/>
-     <exports symbol='XLINK_SHOW_NONE' type='enum'/>
-     <exports symbol='XLINK_SHOW_REPLACE' type='enum'/>
-     <exports symbol='XLINK_TYPE_EXTENDED' type='enum'/>
-     <exports symbol='XLINK_TYPE_EXTENDED_SET' type='enum'/>
-     <exports symbol='XLINK_TYPE_NONE' type='enum'/>
-     <exports symbol='XLINK_TYPE_SIMPLE' type='enum'/>
-     <exports symbol='xlinkActuate' type='typedef'/>
-     <exports symbol='xlinkHRef' type='typedef'/>
-     <exports symbol='xlinkHandler' type='typedef'/>
-     <exports symbol='xlinkHandlerPtr' type='typedef'/>
-     <exports symbol='xlinkRole' type='typedef'/>
-     <exports symbol='xlinkShow' type='typedef'/>
-     <exports symbol='xlinkTitle' type='typedef'/>
-     <exports symbol='xlinkType' type='typedef'/>
-     <exports symbol='_xlinkHandler' type='struct'/>
-     <exports symbol='xlinkExtendedLinkFunk' type='function'/>
-     <exports symbol='xlinkExtendedLinkSetFunk' type='function'/>
-     <exports symbol='xlinkGetDefaultDetect' type='function'/>
-     <exports symbol='xlinkGetDefaultHandler' type='function'/>
-     <exports symbol='xlinkIsLink' type='function'/>
-     <exports symbol='xlinkNodeDetectFunc' type='function'/>
-     <exports symbol='xlinkSetDefaultDetect' type='function'/>
-     <exports symbol='xlinkSetDefaultHandler' type='function'/>
-     <exports symbol='xlinkSimpleLinkFunk' type='function'/>
-    </file>
-    <file name='xmlIO'>
-     <summary>interface for the I/O interfaces used by the parser</summary>
-     <description>interface for the I/O interfaces used by the parser </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='_xmlOutputBuffer' type='struct'/>
-     <exports symbol='_xmlParserInputBuffer' type='struct'/>
-     <exports symbol='xmlAllocOutputBuffer' type='function'/>
-     <exports symbol='xmlAllocParserInputBuffer' type='function'/>
-     <exports symbol='xmlCheckFilename' type='function'/>
-     <exports symbol='xmlCheckHTTPInput' type='function'/>
-     <exports symbol='xmlCleanupInputCallbacks' type='function'/>
-     <exports symbol='xmlCleanupOutputCallbacks' type='function'/>
-     <exports symbol='xmlFileClose' type='function'/>
-     <exports symbol='xmlFileMatch' type='function'/>
-     <exports symbol='xmlFileOpen' type='function'/>
-     <exports symbol='xmlFileRead' type='function'/>
-     <exports symbol='xmlFreeParserInputBuffer' type='function'/>
-     <exports symbol='xmlIOHTTPClose' type='function'/>
-     <exports symbol='xmlIOHTTPMatch' type='function'/>
-     <exports symbol='xmlIOHTTPOpen' type='function'/>
-     <exports symbol='xmlIOHTTPOpenW' type='function'/>
-     <exports symbol='xmlIOHTTPRead' type='function'/>
-     <exports symbol='xmlInputCloseCallback' type='function'/>
-     <exports symbol='xmlInputMatchCallback' type='function'/>
-     <exports symbol='xmlInputOpenCallback' type='function'/>
-     <exports symbol='xmlInputReadCallback' type='function'/>
-     <exports symbol='xmlNoNetExternalEntityLoader' type='function'/>
-     <exports symbol='xmlNormalizeWindowsPath' type='function'/>
-     <exports symbol='xmlOutputBufferClose' type='function'/>
-     <exports symbol='xmlOutputBufferCreateBuffer' type='function'/>
-     <exports symbol='xmlOutputBufferCreateFd' type='function'/>
-     <exports symbol='xmlOutputBufferCreateFile' type='function'/>
-     <exports symbol='xmlOutputBufferCreateFilename' type='function'/>
-     <exports symbol='xmlOutputBufferCreateFilenameDefault' type='function'/>
-     <exports symbol='xmlOutputBufferCreateFilenameFunc' type='function'/>
-     <exports symbol='xmlOutputBufferCreateIO' type='function'/>
-     <exports symbol='xmlOutputBufferFlush' type='function'/>
-     <exports symbol='xmlOutputBufferGetContent' type='function'/>
-     <exports symbol='xmlOutputBufferGetSize' type='function'/>
-     <exports symbol='xmlOutputBufferWrite' type='function'/>
-     <exports symbol='xmlOutputBufferWriteEscape' type='function'/>
-     <exports symbol='xmlOutputBufferWriteString' type='function'/>
-     <exports symbol='xmlOutputCloseCallback' type='function'/>
-     <exports symbol='xmlOutputMatchCallback' type='function'/>
-     <exports symbol='xmlOutputOpenCallback' type='function'/>
-     <exports symbol='xmlOutputWriteCallback' type='function'/>
-     <exports symbol='xmlParserGetDirectory' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateFd' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateFile' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateFilename' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateFilenameDefault' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateFilenameFunc' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateIO' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateMem' type='function'/>
-     <exports symbol='xmlParserInputBufferCreateStatic' type='function'/>
-     <exports symbol='xmlParserInputBufferGrow' type='function'/>
-     <exports symbol='xmlParserInputBufferPush' type='function'/>
-     <exports symbol='xmlParserInputBufferRead' type='function'/>
-     <exports symbol='xmlPopInputCallbacks' type='function'/>
-     <exports symbol='xmlPopOutputCallbacks' type='function'/>
-     <exports symbol='xmlRegisterDefaultInputCallbacks' type='function'/>
-     <exports symbol='xmlRegisterDefaultOutputCallbacks' type='function'/>
-     <exports symbol='xmlRegisterHTTPPostCallbacks' type='function'/>
-     <exports symbol='xmlRegisterInputCallbacks' type='function'/>
-     <exports symbol='xmlRegisterOutputCallbacks' type='function'/>
-     <exports symbol='xmlThrDefOutputBufferCreateFilenameDefault' type='function'/>
-     <exports symbol='xmlThrDefParserInputBufferCreateFilenameDefault' type='function'/>
-    </file>
-    <file name='xmlautomata'>
-     <summary>API to build regexp automata</summary>
-     <description>the API to build regexp automata </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlAutomata' type='typedef'/>
-     <exports symbol='xmlAutomataPtr' type='typedef'/>
-     <exports symbol='xmlAutomataState' type='typedef'/>
-     <exports symbol='xmlAutomataStatePtr' type='typedef'/>
-     <exports symbol='xmlAutomataCompile' type='function'/>
-     <exports symbol='xmlAutomataGetInitState' type='function'/>
-     <exports symbol='xmlAutomataIsDeterminist' type='function'/>
-     <exports symbol='xmlAutomataNewAllTrans' type='function'/>
-     <exports symbol='xmlAutomataNewCountTrans' type='function'/>
-     <exports symbol='xmlAutomataNewCountTrans2' type='function'/>
-     <exports symbol='xmlAutomataNewCountedTrans' type='function'/>
-     <exports symbol='xmlAutomataNewCounter' type='function'/>
-     <exports symbol='xmlAutomataNewCounterTrans' type='function'/>
-     <exports symbol='xmlAutomataNewEpsilon' type='function'/>
-     <exports symbol='xmlAutomataNewNegTrans' type='function'/>
-     <exports symbol='xmlAutomataNewOnceTrans' type='function'/>
-     <exports symbol='xmlAutomataNewOnceTrans2' type='function'/>
-     <exports symbol='xmlAutomataNewState' type='function'/>
-     <exports symbol='xmlAutomataNewTransition' type='function'/>
-     <exports symbol='xmlAutomataNewTransition2' type='function'/>
-     <exports symbol='xmlAutomataSetFinalState' type='function'/>
-     <exports symbol='xmlFreeAutomata' type='function'/>
-     <exports symbol='xmlNewAutomata' type='function'/>
-    </file>
-    <file name='xmlerror'>
-     <summary>error handling</summary>
-     <description>the API used to report errors </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='initGenericErrorDefaultFunc' type='macro'/>
-     <exports symbol='XML_BUF_OVERFLOW' type='enum'/>
-     <exports symbol='XML_C14N_CREATE_CTXT' type='enum'/>
-     <exports symbol='XML_C14N_CREATE_STACK' type='enum'/>
-     <exports symbol='XML_C14N_INVALID_NODE' type='enum'/>
-     <exports symbol='XML_C14N_RELATIVE_NAMESPACE' type='enum'/>
-     <exports symbol='XML_C14N_REQUIRES_UTF8' type='enum'/>
-     <exports symbol='XML_C14N_UNKNOW_NODE' type='enum'/>
-     <exports symbol='XML_CATALOG_ENTRY_BROKEN' type='enum'/>
-     <exports symbol='XML_CATALOG_MISSING_ATTR' type='enum'/>
-     <exports symbol='XML_CATALOG_NOT_CATALOG' type='enum'/>
-     <exports symbol='XML_CATALOG_PREFER_VALUE' type='enum'/>
-     <exports symbol='XML_CATALOG_RECURSION' type='enum'/>
-     <exports symbol='XML_CHECK_ENTITY_TYPE' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_CDATA' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_COMMENT' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_DOCTYPE' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_ELEMENT' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_ENTITY' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_ENTITYREF' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_FRAGMENT' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_NOTATION' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_PI' type='enum'/>
-     <exports symbol='XML_CHECK_FOUND_TEXT' type='enum'/>
-     <exports symbol='XML_CHECK_NAME_NOT_NULL' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_ATTR' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_ATTR_DECL' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_DTD' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_ELEM_DECL' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_ENTITY_DECL' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_NCNAME' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_NS_DECL' type='enum'/>
-     <exports symbol='XML_CHECK_NOT_UTF8' type='enum'/>
-     <exports symbol='XML_CHECK_NO_DICT' type='enum'/>
-     <exports symbol='XML_CHECK_NO_DOC' type='enum'/>
-     <exports symbol='XML_CHECK_NO_ELEM' type='enum'/>
-     <exports symbol='XML_CHECK_NO_HREF' type='enum'/>
-     <exports symbol='XML_CHECK_NO_NAME' type='enum'/>
-     <exports symbol='XML_CHECK_NO_NEXT' type='enum'/>
-     <exports symbol='XML_CHECK_NO_PARENT' type='enum'/>
-     <exports symbol='XML_CHECK_NO_PREV' type='enum'/>
-     <exports symbol='XML_CHECK_NS_ANCESTOR' type='enum'/>
-     <exports symbol='XML_CHECK_NS_SCOPE' type='enum'/>
-     <exports symbol='XML_CHECK_OUTSIDE_DICT' type='enum'/>
-     <exports symbol='XML_CHECK_UNKNOWN_NODE' type='enum'/>
-     <exports symbol='XML_CHECK_WRONG_DOC' type='enum'/>
-     <exports symbol='XML_CHECK_WRONG_NAME' type='enum'/>
-     <exports symbol='XML_CHECK_WRONG_NEXT' type='enum'/>
-     <exports symbol='XML_CHECK_WRONG_PARENT' type='enum'/>
-     <exports symbol='XML_CHECK_WRONG_PREV' type='enum'/>
-     <exports symbol='XML_DTD_ATTRIBUTE_DEFAULT' type='enum'/>
-     <exports symbol='XML_DTD_ATTRIBUTE_REDEFINED' type='enum'/>
-     <exports symbol='XML_DTD_ATTRIBUTE_VALUE' type='enum'/>
-     <exports symbol='XML_DTD_CONTENT_ERROR' type='enum'/>
-     <exports symbol='XML_DTD_CONTENT_MODEL' type='enum'/>
-     <exports symbol='XML_DTD_CONTENT_NOT_DETERMINIST' type='enum'/>
-     <exports symbol='XML_DTD_DIFFERENT_PREFIX' type='enum'/>
-     <exports symbol='XML_DTD_DUP_TOKEN' type='enum'/>
-     <exports symbol='XML_DTD_ELEM_DEFAULT_NAMESPACE' type='enum'/>
-     <exports symbol='XML_DTD_ELEM_NAMESPACE' type='enum'/>
-     <exports symbol='XML_DTD_ELEM_REDEFINED' type='enum'/>
-     <exports symbol='XML_DTD_EMPTY_NOTATION' type='enum'/>
-     <exports symbol='XML_DTD_ENTITY_TYPE' type='enum'/>
-     <exports symbol='XML_DTD_ID_FIXED' type='enum'/>
-     <exports symbol='XML_DTD_ID_REDEFINED' type='enum'/>
-     <exports symbol='XML_DTD_ID_SUBSET' type='enum'/>
-     <exports symbol='XML_DTD_INVALID_CHILD' type='enum'/>
-     <exports symbol='XML_DTD_INVALID_DEFAULT' type='enum'/>
-     <exports symbol='XML_DTD_LOAD_ERROR' type='enum'/>
-     <exports symbol='XML_DTD_MISSING_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_DTD_MIXED_CORRUPT' type='enum'/>
-     <exports symbol='XML_DTD_MULTIPLE_ID' type='enum'/>
-     <exports symbol='XML_DTD_NOTATION_REDEFINED' type='enum'/>
-     <exports symbol='XML_DTD_NOTATION_VALUE' type='enum'/>
-     <exports symbol='XML_DTD_NOT_EMPTY' type='enum'/>
-     <exports symbol='XML_DTD_NOT_PCDATA' type='enum'/>
-     <exports symbol='XML_DTD_NOT_STANDALONE' type='enum'/>
-     <exports symbol='XML_DTD_NO_DOC' type='enum'/>
-     <exports symbol='XML_DTD_NO_DTD' type='enum'/>
-     <exports symbol='XML_DTD_NO_ELEM_NAME' type='enum'/>
-     <exports symbol='XML_DTD_NO_PREFIX' type='enum'/>
-     <exports symbol='XML_DTD_NO_ROOT' type='enum'/>
-     <exports symbol='XML_DTD_ROOT_NAME' type='enum'/>
-     <exports symbol='XML_DTD_STANDALONE_DEFAULTED' type='enum'/>
-     <exports symbol='XML_DTD_STANDALONE_WHITE_SPACE' type='enum'/>
-     <exports symbol='XML_DTD_UNKNOWN_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_DTD_UNKNOWN_ELEM' type='enum'/>
-     <exports symbol='XML_DTD_UNKNOWN_ENTITY' type='enum'/>
-     <exports symbol='XML_DTD_UNKNOWN_ID' type='enum'/>
-     <exports symbol='XML_DTD_UNKNOWN_NOTATION' type='enum'/>
-     <exports symbol='XML_DTD_XMLID_TYPE' type='enum'/>
-     <exports symbol='XML_DTD_XMLID_VALUE' type='enum'/>
-     <exports symbol='XML_ERR_ARGUMENT' type='enum'/>
-     <exports symbol='XML_ERR_ATTLIST_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_ATTLIST_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_ATTRIBUTE_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_ATTRIBUTE_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_ATTRIBUTE_REDEFINED' type='enum'/>
-     <exports symbol='XML_ERR_ATTRIBUTE_WITHOUT_VALUE' type='enum'/>
-     <exports symbol='XML_ERR_CDATA_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_CHARREF_AT_EOF' type='enum'/>
-     <exports symbol='XML_ERR_CHARREF_IN_DTD' type='enum'/>
-     <exports symbol='XML_ERR_CHARREF_IN_EPILOG' type='enum'/>
-     <exports symbol='XML_ERR_CHARREF_IN_PROLOG' type='enum'/>
-     <exports symbol='XML_ERR_COMMENT_ABRUPTLY_ENDED' type='enum'/>
-     <exports symbol='XML_ERR_COMMENT_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_CONDSEC_INVALID' type='enum'/>
-     <exports symbol='XML_ERR_CONDSEC_INVALID_KEYWORD' type='enum'/>
-     <exports symbol='XML_ERR_CONDSEC_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_CONDSEC_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_DOCTYPE_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_DOCUMENT_EMPTY' type='enum'/>
-     <exports symbol='XML_ERR_DOCUMENT_END' type='enum'/>
-     <exports symbol='XML_ERR_DOCUMENT_START' type='enum'/>
-     <exports symbol='XML_ERR_ELEMCONTENT_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_ELEMCONTENT_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_ENCODING_NAME' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_AT_EOF' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_IN_DTD' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_IN_EPILOG' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_IN_PROLOG' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_NO_NAME' type='enum'/>
-     <exports symbol='XML_ERR_ENTITYREF_SEMICOL_MISSING' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_BOUNDARY' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_CHAR_ERROR' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_IS_EXTERNAL' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_IS_PARAMETER' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_LOOP' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_PE_INTERNAL' type='enum'/>
-     <exports symbol='XML_ERR_ENTITY_PROCESSING' type='enum'/>
-     <exports symbol='XML_ERR_EQUAL_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_ERROR' type='enum'/>
-     <exports symbol='XML_ERR_EXTRA_CONTENT' type='enum'/>
-     <exports symbol='XML_ERR_EXT_ENTITY_STANDALONE' type='enum'/>
-     <exports symbol='XML_ERR_EXT_SUBSET_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_FATAL' type='enum'/>
-     <exports symbol='XML_ERR_GT_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_HYPHEN_IN_COMMENT' type='enum'/>
-     <exports symbol='XML_ERR_INTERNAL_ERROR' type='enum'/>
-     <exports symbol='XML_ERR_INT_SUBSET_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_CHAR' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_CHARREF' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_DEC_CHARREF' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_ENCODING' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_HEX_CHARREF' type='enum'/>
-     <exports symbol='XML_ERR_INVALID_URI' type='enum'/>
-     <exports symbol='XML_ERR_LITERAL_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_LITERAL_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_LTSLASH_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_LT_IN_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_ERR_LT_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_MISPLACED_CDATA_END' type='enum'/>
-     <exports symbol='XML_ERR_MISSING_ENCODING' type='enum'/>
-     <exports symbol='XML_ERR_MIXED_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_MIXED_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_NAME_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_NAME_TOO_LONG' type='enum'/>
-     <exports symbol='XML_ERR_NMTOKEN_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_NONE' type='enum'/>
-     <exports symbol='XML_ERR_NOTATION_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_NOTATION_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_NOTATION_PROCESSING' type='enum'/>
-     <exports symbol='XML_ERR_NOT_STANDALONE' type='enum'/>
-     <exports symbol='XML_ERR_NOT_WELL_BALANCED' type='enum'/>
-     <exports symbol='XML_ERR_NO_DTD' type='enum'/>
-     <exports symbol='XML_ERR_NO_MEMORY' type='enum'/>
-     <exports symbol='XML_ERR_NS_DECL_ERROR' type='enum'/>
-     <exports symbol='XML_ERR_OK' type='enum'/>
-     <exports symbol='XML_ERR_PCDATA_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_AT_EOF' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_IN_EPILOG' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_IN_INT_SUBSET' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_IN_PROLOG' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_NO_NAME' type='enum'/>
-     <exports symbol='XML_ERR_PEREF_SEMICOL_MISSING' type='enum'/>
-     <exports symbol='XML_ERR_PI_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_PI_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_PUBID_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_REDECL_PREDEF_ENTITY' type='enum'/>
-     <exports symbol='XML_ERR_RESERVED_XML_NAME' type='enum'/>
-     <exports symbol='XML_ERR_RESOURCE_LIMIT' type='enum'/>
-     <exports symbol='XML_ERR_SEPARATOR_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_SPACE_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_STANDALONE_VALUE' type='enum'/>
-     <exports symbol='XML_ERR_STRING_NOT_CLOSED' type='enum'/>
-     <exports symbol='XML_ERR_STRING_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_ERR_SYSTEM' type='enum'/>
-     <exports symbol='XML_ERR_TAG_NAME_MISMATCH' type='enum'/>
-     <exports symbol='XML_ERR_TAG_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_UNDECLARED_ENTITY' type='enum'/>
-     <exports symbol='XML_ERR_UNKNOWN_ENCODING' type='enum'/>
-     <exports symbol='XML_ERR_UNKNOWN_VERSION' type='enum'/>
-     <exports symbol='XML_ERR_UNPARSED_ENTITY' type='enum'/>
-     <exports symbol='XML_ERR_UNSUPPORTED_ENCODING' type='enum'/>
-     <exports symbol='XML_ERR_URI_FRAGMENT' type='enum'/>
-     <exports symbol='XML_ERR_URI_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_USER_STOP' type='enum'/>
-     <exports symbol='XML_ERR_VALUE_REQUIRED' type='enum'/>
-     <exports symbol='XML_ERR_VERSION_MISMATCH' type='enum'/>
-     <exports symbol='XML_ERR_VERSION_MISSING' type='enum'/>
-     <exports symbol='XML_ERR_WARNING' type='enum'/>
-     <exports symbol='XML_ERR_XMLDECL_NOT_FINISHED' type='enum'/>
-     <exports symbol='XML_ERR_XMLDECL_NOT_STARTED' type='enum'/>
-     <exports symbol='XML_FROM_BUFFER' type='enum'/>
-     <exports symbol='XML_FROM_C14N' type='enum'/>
-     <exports symbol='XML_FROM_CATALOG' type='enum'/>
-     <exports symbol='XML_FROM_CHECK' type='enum'/>
-     <exports symbol='XML_FROM_DATATYPE' type='enum'/>
-     <exports symbol='XML_FROM_DTD' type='enum'/>
-     <exports symbol='XML_FROM_FTP' type='enum'/>
-     <exports symbol='XML_FROM_HTML' type='enum'/>
-     <exports symbol='XML_FROM_HTTP' type='enum'/>
-     <exports symbol='XML_FROM_I18N' type='enum'/>
-     <exports symbol='XML_FROM_IO' type='enum'/>
-     <exports symbol='XML_FROM_MEMORY' type='enum'/>
-     <exports symbol='XML_FROM_MODULE' type='enum'/>
-     <exports symbol='XML_FROM_NAMESPACE' type='enum'/>
-     <exports symbol='XML_FROM_NONE' type='enum'/>
-     <exports symbol='XML_FROM_OUTPUT' type='enum'/>
-     <exports symbol='XML_FROM_PARSER' type='enum'/>
-     <exports symbol='XML_FROM_REGEXP' type='enum'/>
-     <exports symbol='XML_FROM_RELAXNGP' type='enum'/>
-     <exports symbol='XML_FROM_RELAXNGV' type='enum'/>
-     <exports symbol='XML_FROM_SCHEMASP' type='enum'/>
-     <exports symbol='XML_FROM_SCHEMASV' type='enum'/>
-     <exports symbol='XML_FROM_SCHEMATRONV' type='enum'/>
-     <exports symbol='XML_FROM_TREE' type='enum'/>
-     <exports symbol='XML_FROM_URI' type='enum'/>
-     <exports symbol='XML_FROM_VALID' type='enum'/>
-     <exports symbol='XML_FROM_WRITER' type='enum'/>
-     <exports symbol='XML_FROM_XINCLUDE' type='enum'/>
-     <exports symbol='XML_FROM_XPATH' type='enum'/>
-     <exports symbol='XML_FROM_XPOINTER' type='enum'/>
-     <exports symbol='XML_FROM_XSLT' type='enum'/>
-     <exports symbol='XML_FTP_ACCNT' type='enum'/>
-     <exports symbol='XML_FTP_EPSV_ANSWER' type='enum'/>
-     <exports symbol='XML_FTP_PASV_ANSWER' type='enum'/>
-     <exports symbol='XML_FTP_URL_SYNTAX' type='enum'/>
-     <exports symbol='XML_HTML_INCORRECTLY_OPENED_COMMENT' type='enum'/>
-     <exports symbol='XML_HTML_STRUCURE_ERROR' type='enum'/>
-     <exports symbol='XML_HTML_UNKNOWN_TAG' type='enum'/>
-     <exports symbol='XML_HTTP_UNKNOWN_HOST' type='enum'/>
-     <exports symbol='XML_HTTP_URL_SYNTAX' type='enum'/>
-     <exports symbol='XML_HTTP_USE_IP' type='enum'/>
-     <exports symbol='XML_I18N_CONV_FAILED' type='enum'/>
-     <exports symbol='XML_I18N_EXCESS_HANDLER' type='enum'/>
-     <exports symbol='XML_I18N_NO_HANDLER' type='enum'/>
-     <exports symbol='XML_I18N_NO_NAME' type='enum'/>
-     <exports symbol='XML_I18N_NO_OUTPUT' type='enum'/>
-     <exports symbol='XML_IO_BUFFER_FULL' type='enum'/>
-     <exports symbol='XML_IO_EACCES' type='enum'/>
-     <exports symbol='XML_IO_EADDRINUSE' type='enum'/>
-     <exports symbol='XML_IO_EAFNOSUPPORT' type='enum'/>
-     <exports symbol='XML_IO_EAGAIN' type='enum'/>
-     <exports symbol='XML_IO_EALREADY' type='enum'/>
-     <exports symbol='XML_IO_EBADF' type='enum'/>
-     <exports symbol='XML_IO_EBADMSG' type='enum'/>
-     <exports symbol='XML_IO_EBUSY' type='enum'/>
-     <exports symbol='XML_IO_ECANCELED' type='enum'/>
-     <exports symbol='XML_IO_ECHILD' type='enum'/>
-     <exports symbol='XML_IO_ECONNREFUSED' type='enum'/>
-     <exports symbol='XML_IO_EDEADLK' type='enum'/>
-     <exports symbol='XML_IO_EDOM' type='enum'/>
-     <exports symbol='XML_IO_EEXIST' type='enum'/>
-     <exports symbol='XML_IO_EFAULT' type='enum'/>
-     <exports symbol='XML_IO_EFBIG' type='enum'/>
-     <exports symbol='XML_IO_EINPROGRESS' type='enum'/>
-     <exports symbol='XML_IO_EINTR' type='enum'/>
-     <exports symbol='XML_IO_EINVAL' type='enum'/>
-     <exports symbol='XML_IO_EIO' type='enum'/>
-     <exports symbol='XML_IO_EISCONN' type='enum'/>
-     <exports symbol='XML_IO_EISDIR' type='enum'/>
-     <exports symbol='XML_IO_EMFILE' type='enum'/>
-     <exports symbol='XML_IO_EMLINK' type='enum'/>
-     <exports symbol='XML_IO_EMSGSIZE' type='enum'/>
-     <exports symbol='XML_IO_ENAMETOOLONG' type='enum'/>
-     <exports symbol='XML_IO_ENCODER' type='enum'/>
-     <exports symbol='XML_IO_ENETUNREACH' type='enum'/>
-     <exports symbol='XML_IO_ENFILE' type='enum'/>
-     <exports symbol='XML_IO_ENODEV' type='enum'/>
-     <exports symbol='XML_IO_ENOENT' type='enum'/>
-     <exports symbol='XML_IO_ENOEXEC' type='enum'/>
-     <exports symbol='XML_IO_ENOLCK' type='enum'/>
-     <exports symbol='XML_IO_ENOMEM' type='enum'/>
-     <exports symbol='XML_IO_ENOSPC' type='enum'/>
-     <exports symbol='XML_IO_ENOSYS' type='enum'/>
-     <exports symbol='XML_IO_ENOTDIR' type='enum'/>
-     <exports symbol='XML_IO_ENOTEMPTY' type='enum'/>
-     <exports symbol='XML_IO_ENOTSOCK' type='enum'/>
-     <exports symbol='XML_IO_ENOTSUP' type='enum'/>
-     <exports symbol='XML_IO_ENOTTY' type='enum'/>
-     <exports symbol='XML_IO_ENXIO' type='enum'/>
-     <exports symbol='XML_IO_EPERM' type='enum'/>
-     <exports symbol='XML_IO_EPIPE' type='enum'/>
-     <exports symbol='XML_IO_ERANGE' type='enum'/>
-     <exports symbol='XML_IO_EROFS' type='enum'/>
-     <exports symbol='XML_IO_ESPIPE' type='enum'/>
-     <exports symbol='XML_IO_ESRCH' type='enum'/>
-     <exports symbol='XML_IO_ETIMEDOUT' type='enum'/>
-     <exports symbol='XML_IO_EXDEV' type='enum'/>
-     <exports symbol='XML_IO_FLUSH' type='enum'/>
-     <exports symbol='XML_IO_LOAD_ERROR' type='enum'/>
-     <exports symbol='XML_IO_NETWORK_ATTEMPT' type='enum'/>
-     <exports symbol='XML_IO_NO_INPUT' type='enum'/>
-     <exports symbol='XML_IO_UNKNOWN' type='enum'/>
-     <exports symbol='XML_IO_UNSUPPORTED_PROTOCOL' type='enum'/>
-     <exports symbol='XML_IO_WRITE' type='enum'/>
-     <exports symbol='XML_MODULE_CLOSE' type='enum'/>
-     <exports symbol='XML_MODULE_OPEN' type='enum'/>
-     <exports symbol='XML_NS_ERR_ATTRIBUTE_REDEFINED' type='enum'/>
-     <exports symbol='XML_NS_ERR_COLON' type='enum'/>
-     <exports symbol='XML_NS_ERR_EMPTY' type='enum'/>
-     <exports symbol='XML_NS_ERR_QNAME' type='enum'/>
-     <exports symbol='XML_NS_ERR_UNDEFINED_NAMESPACE' type='enum'/>
-     <exports symbol='XML_NS_ERR_XML_NAMESPACE' type='enum'/>
-     <exports symbol='XML_REGEXP_COMPILE_ERROR' type='enum'/>
-     <exports symbol='XML_RNGP_ANYNAME_ATTR_ANCESTOR' type='enum'/>
-     <exports symbol='XML_RNGP_ATTRIBUTE_CHILDREN' type='enum'/>
-     <exports symbol='XML_RNGP_ATTRIBUTE_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_ATTRIBUTE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_ATTRIBUTE_NOOP' type='enum'/>
-     <exports symbol='XML_RNGP_ATTR_CONFLICT' type='enum'/>
-     <exports symbol='XML_RNGP_CHOICE_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_CHOICE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_CREATE_FAILURE' type='enum'/>
-     <exports symbol='XML_RNGP_DATA_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_DEFINE_CREATE_FAILED' type='enum'/>
-     <exports symbol='XML_RNGP_DEFINE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_DEFINE_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_DEFINE_NAME_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_DEF_CHOICE_AND_INTERLEAVE' type='enum'/>
-     <exports symbol='XML_RNGP_ELEMENT_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_ELEMENT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_ELEMENT_NAME' type='enum'/>
-     <exports symbol='XML_RNGP_ELEMENT_NO_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_ELEM_CONTENT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_ELEM_CONTENT_ERROR' type='enum'/>
-     <exports symbol='XML_RNGP_ELEM_TEXT_CONFLICT' type='enum'/>
-     <exports symbol='XML_RNGP_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_EMPTY_CONSTRUCT' type='enum'/>
-     <exports symbol='XML_RNGP_EMPTY_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_EMPTY_NOT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_ERROR_TYPE_LIB' type='enum'/>
-     <exports symbol='XML_RNGP_EXCEPT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_EXCEPT_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_EXCEPT_MULTIPLE' type='enum'/>
-     <exports symbol='XML_RNGP_EXCEPT_NO_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_EXTERNALREF_EMTPY' type='enum'/>
-     <exports symbol='XML_RNGP_EXTERNALREF_RECURSE' type='enum'/>
-     <exports symbol='XML_RNGP_EXTERNAL_REF_FAILURE' type='enum'/>
-     <exports symbol='XML_RNGP_FORBIDDEN_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_RNGP_FOREIGN_ELEMENT' type='enum'/>
-     <exports symbol='XML_RNGP_GRAMMAR_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_GRAMMAR_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_GRAMMAR_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_GRAMMAR_NO_START' type='enum'/>
-     <exports symbol='XML_RNGP_GROUP_ATTR_CONFLICT' type='enum'/>
-     <exports symbol='XML_RNGP_HREF_ERROR' type='enum'/>
-     <exports symbol='XML_RNGP_INCLUDE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_INCLUDE_FAILURE' type='enum'/>
-     <exports symbol='XML_RNGP_INCLUDE_RECURSE' type='enum'/>
-     <exports symbol='XML_RNGP_INTERLEAVE_ADD' type='enum'/>
-     <exports symbol='XML_RNGP_INTERLEAVE_CREATE_FAILED' type='enum'/>
-     <exports symbol='XML_RNGP_INTERLEAVE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_INTERLEAVE_NO_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_INVALID_DEFINE_NAME' type='enum'/>
-     <exports symbol='XML_RNGP_INVALID_URI' type='enum'/>
-     <exports symbol='XML_RNGP_INVALID_VALUE' type='enum'/>
-     <exports symbol='XML_RNGP_MISSING_HREF' type='enum'/>
-     <exports symbol='XML_RNGP_NAME_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_NEED_COMBINE' type='enum'/>
-     <exports symbol='XML_RNGP_NOTALLOWED_NOT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_NSNAME_ATTR_ANCESTOR' type='enum'/>
-     <exports symbol='XML_RNGP_NSNAME_NO_NS' type='enum'/>
-     <exports symbol='XML_RNGP_PARAM_FORBIDDEN' type='enum'/>
-     <exports symbol='XML_RNGP_PARAM_NAME_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_PARENTREF_CREATE_FAILED' type='enum'/>
-     <exports symbol='XML_RNGP_PARENTREF_NAME_INVALID' type='enum'/>
-     <exports symbol='XML_RNGP_PARENTREF_NOT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_PARENTREF_NO_NAME' type='enum'/>
-     <exports symbol='XML_RNGP_PARENTREF_NO_PARENT' type='enum'/>
-     <exports symbol='XML_RNGP_PARSE_ERROR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_ATTR_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_ATTR_ELEM' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_ELEM' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_GROUP' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_LIST' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_ONEMORE' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_REF' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_TEXT' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_ELEM' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_INTERLEAVE' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_LIST' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_REF' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_LIST_TEXT' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_ONEMORE_GROUP_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_ATTR' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_DATA' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_GROUP' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_INTERLEAVE' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_LIST' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_ONEMORE' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_TEXT' type='enum'/>
-     <exports symbol='XML_RNGP_PAT_START_VALUE' type='enum'/>
-     <exports symbol='XML_RNGP_PREFIX_UNDEFINED' type='enum'/>
-     <exports symbol='XML_RNGP_REF_CREATE_FAILED' type='enum'/>
-     <exports symbol='XML_RNGP_REF_CYCLE' type='enum'/>
-     <exports symbol='XML_RNGP_REF_NAME_INVALID' type='enum'/>
-     <exports symbol='XML_RNGP_REF_NOT_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_REF_NO_DEF' type='enum'/>
-     <exports symbol='XML_RNGP_REF_NO_NAME' type='enum'/>
-     <exports symbol='XML_RNGP_START_CHOICE_AND_INTERLEAVE' type='enum'/>
-     <exports symbol='XML_RNGP_START_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_START_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_START_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_TEXT_EXPECTED' type='enum'/>
-     <exports symbol='XML_RNGP_TEXT_HAS_CHILD' type='enum'/>
-     <exports symbol='XML_RNGP_TYPE_MISSING' type='enum'/>
-     <exports symbol='XML_RNGP_TYPE_NOT_FOUND' type='enum'/>
-     <exports symbol='XML_RNGP_TYPE_VALUE' type='enum'/>
-     <exports symbol='XML_RNGP_UNKNOWN_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_RNGP_UNKNOWN_COMBINE' type='enum'/>
-     <exports symbol='XML_RNGP_UNKNOWN_CONSTRUCT' type='enum'/>
-     <exports symbol='XML_RNGP_UNKNOWN_TYPE_LIB' type='enum'/>
-     <exports symbol='XML_RNGP_URI_FRAGMENT' type='enum'/>
-     <exports symbol='XML_RNGP_URI_NOT_ABSOLUTE' type='enum'/>
-     <exports symbol='XML_RNGP_VALUE_EMPTY' type='enum'/>
-     <exports symbol='XML_RNGP_VALUE_NO_CONTENT' type='enum'/>
-     <exports symbol='XML_RNGP_XMLNS_NAME' type='enum'/>
-     <exports symbol='XML_RNGP_XML_NS' type='enum'/>
-     <exports symbol='XML_SAVE_CHAR_INVALID' type='enum'/>
-     <exports symbol='XML_SAVE_NOT_UTF8' type='enum'/>
-     <exports symbol='XML_SAVE_NO_DOCTYPE' type='enum'/>
-     <exports symbol='XML_SAVE_UNKNOWN_ENCODING' type='enum'/>
-     <exports symbol='XML_SCHEMAP_AG_PROPS_CORRECT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ATTRFORMDEFAULT_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ATTRGRP_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ATTR_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_AU_PROPS_CORRECT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_AU_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_A_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_A_PROPS_CORRECT_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ALL_LIMITED' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_CT_EXTENDS_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_CT_EXTENDS_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_CT_EXTENDS_1_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_DERIVED_OK_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_DERIVED_OK_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_VALID_DEFAULT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_VALID_DEFAULT_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CT_PROPS_CORRECT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CT_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CT_PROPS_CORRECT_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CT_PROPS_CORRECT_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CT_PROPS_CORRECT_5' type='enum'/>
-     <exports symbol='XML_SCHEMAP_CVC_SIMPLE_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_C_PROPS_CORRECT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DEF_AND_PREFIX' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ELEMFORMDEFAULT_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ELEM_DEFAULT_FIXED' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ELEM_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_EXTENSION_NO_BASE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_5' type='enum'/>
-     <exports symbol='XML_SCHEMAP_E_PROPS_CORRECT_6' type='enum'/>
-     <exports symbol='XML_SCHEMAP_FACET_NO_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_FAILED_BUILD_IMPORT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_FAILED_LOAD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_FAILED_PARSE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_GROUP_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI' type='enum'/>
-     <exports symbol='XML_SCHEMAP_IMPORT_REDEFINE_NSNAME' type='enum'/>
-     <exports symbol='XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INTERNAL' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_ATTR_COMBINATION' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_ATTR_NAME' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_ATTR_USE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_BOOLEAN' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_ENUM' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_FACET' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_FACET_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_MAXOCCURS' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_MINOCCURS' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_REF_AND_SUBTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_INVALID_WHITE_SPACE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_MG_PROPS_CORRECT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_MG_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOATTR_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOROOT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOTATION_NO_NAME' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOTHING_TO_PARSE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOTYPE_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOT_DETERMINISTIC' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NOT_SCHEMA' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NO_XMLNS' type='enum'/>
-     <exports symbol='XML_SCHEMAP_NO_XSI' type='enum'/>
-     <exports symbol='XML_SCHEMAP_PREFIX_UNDEFINED' type='enum'/>
-     <exports symbol='XML_SCHEMAP_P_PROPS_CORRECT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_P_PROPS_CORRECT_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_P_PROPS_CORRECT_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_RECURSIVE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_ATTR' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_ATTRGROUP' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_ELEMENT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_GROUP' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_NOTATION' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REDEFINED_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REF_AND_CONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REF_AND_SUBTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_REGEXP_INVALID' type='enum'/>
-     <exports symbol='XML_SCHEMAP_RESTRICTION_NONAME_NOREF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_S4S_ATTR_INVALID_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_S4S_ATTR_MISSING' type='enum'/>
-     <exports symbol='XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED' type='enum'/>
-     <exports symbol='XML_SCHEMAP_S4S_ELEM_MISSING' type='enum'/>
-     <exports symbol='XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SIMPLETYPE_NONAME' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_3_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_CT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ELEMENT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ELEMENT_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ELEMENT_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_ELEMENT_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_IMPORT_3_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_INCLUDE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_REDEFINE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_RESOLVE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_SIMPLE_TYPE_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_SIMPLE_TYPE_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_SIMPLE_TYPE_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_SIMPLE_TYPE_4' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAP_ST_PROPS_CORRECT_3' type='enum'/>
-     <exports symbol='XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_TYPE_AND_SUBTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNION_NOT_EXPRESSIBLE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ALL_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ATTR_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_BASE_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_CHOICE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_ELEM_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_FACET_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_FACET_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_GROUP_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_IMPORT_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_LIST_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_MEMBER_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_NOTATION_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_PREFIX' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_REF' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_TYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAP_UNKNOWN_UNION_CHILD' type='enum'/>
-     <exports symbol='XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH' type='enum'/>
-     <exports symbol='XML_SCHEMAP_WARN_ATTR_REDECL_PROH' type='enum'/>
-     <exports symbol='XML_SCHEMAP_WARN_SKIP_SCHEMA' type='enum'/>
-     <exports symbol='XML_SCHEMAP_WARN_UNLOCATED_SCHEMA' type='enum'/>
-     <exports symbol='XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER' type='enum'/>
-     <exports symbol='XML_SCHEMATRONV_ASSERT' type='enum'/>
-     <exports symbol='XML_SCHEMATRONV_REPORT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_ATTRINVALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_ATTRUNKNOWN' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CONSTRUCT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ATTRIBUTE_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ATTRIBUTE_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ATTRIBUTE_3' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ATTRIBUTE_4' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_AU' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_4' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_3_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_3_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_3_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_4_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_4_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_4_3' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_2_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_2_2_2_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_5_2_2_2_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_6' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ELT_7' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_ENUMERATION_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_FACET_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_IDC' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_LENGTH_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MAXLENGTH_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MININCLUSIVE_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_MINLENGTH_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_PATTERN_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_TOTALDIGITS_VALID' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_TYPE_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_TYPE_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_TYPE_3_1_1' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_TYPE_3_1_2' type='enum'/>
-     <exports symbol='XML_SCHEMAV_CVC_WILDCARD' type='enum'/>
-     <exports symbol='XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING' type='enum'/>
-     <exports symbol='XML_SCHEMAV_ELEMCONT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_ELEMENT_CONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_EXTRACONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_FACET' type='enum'/>
-     <exports symbol='XML_SCHEMAV_HAVEDEFAULT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_INTERNAL' type='enum'/>
-     <exports symbol='XML_SCHEMAV_INVALIDATTR' type='enum'/>
-     <exports symbol='XML_SCHEMAV_INVALIDELEM' type='enum'/>
-     <exports symbol='XML_SCHEMAV_ISABSTRACT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_MISC' type='enum'/>
-     <exports symbol='XML_SCHEMAV_MISSING' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOROLLBACK' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOROOT' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTDETERMINIST' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTEMPTY' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTNILLABLE' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTSIMPLE' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTTOPLEVEL' type='enum'/>
-     <exports symbol='XML_SCHEMAV_NOTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAV_UNDECLAREDELEM' type='enum'/>
-     <exports symbol='XML_SCHEMAV_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAV_WRONGELEM' type='enum'/>
-     <exports symbol='XML_TREE_INVALID_DEC' type='enum'/>
-     <exports symbol='XML_TREE_INVALID_HEX' type='enum'/>
-     <exports symbol='XML_TREE_NOT_UTF8' type='enum'/>
-     <exports symbol='XML_TREE_UNTERMINATED_ENTITY' type='enum'/>
-     <exports symbol='XML_WAR_CATALOG_PI' type='enum'/>
-     <exports symbol='XML_WAR_ENCODING_MISMATCH' type='enum'/>
-     <exports symbol='XML_WAR_ENTITY_REDEFINED' type='enum'/>
-     <exports symbol='XML_WAR_LANG_VALUE' type='enum'/>
-     <exports symbol='XML_WAR_NS_COLUMN' type='enum'/>
-     <exports symbol='XML_WAR_NS_URI' type='enum'/>
-     <exports symbol='XML_WAR_NS_URI_RELATIVE' type='enum'/>
-     <exports symbol='XML_WAR_SPACE_VALUE' type='enum'/>
-     <exports symbol='XML_WAR_UNDECLARED_ENTITY' type='enum'/>
-     <exports symbol='XML_WAR_UNKNOWN_VERSION' type='enum'/>
-     <exports symbol='XML_XINCLUDE_BUILD_FAILED' type='enum'/>
-     <exports symbol='XML_XINCLUDE_DEPRECATED_NS' type='enum'/>
-     <exports symbol='XML_XINCLUDE_ENTITY_DEF_MISMATCH' type='enum'/>
-     <exports symbol='XML_XINCLUDE_FALLBACKS_IN_INCLUDE' type='enum'/>
-     <exports symbol='XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE' type='enum'/>
-     <exports symbol='XML_XINCLUDE_FRAGMENT_ID' type='enum'/>
-     <exports symbol='XML_XINCLUDE_HREF_URI' type='enum'/>
-     <exports symbol='XML_XINCLUDE_INCLUDE_IN_INCLUDE' type='enum'/>
-     <exports symbol='XML_XINCLUDE_INVALID_CHAR' type='enum'/>
-     <exports symbol='XML_XINCLUDE_MULTIPLE_ROOT' type='enum'/>
-     <exports symbol='XML_XINCLUDE_NO_FALLBACK' type='enum'/>
-     <exports symbol='XML_XINCLUDE_NO_HREF' type='enum'/>
-     <exports symbol='XML_XINCLUDE_PARSE_VALUE' type='enum'/>
-     <exports symbol='XML_XINCLUDE_RECURSION' type='enum'/>
-     <exports symbol='XML_XINCLUDE_TEXT_DOCUMENT' type='enum'/>
-     <exports symbol='XML_XINCLUDE_TEXT_FRAGMENT' type='enum'/>
-     <exports symbol='XML_XINCLUDE_UNKNOWN_ENCODING' type='enum'/>
-     <exports symbol='XML_XINCLUDE_XPTR_FAILED' type='enum'/>
-     <exports symbol='XML_XINCLUDE_XPTR_RESULT' type='enum'/>
-     <exports symbol='XML_XPATH_ENCODING_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_EXPRESSION_OK' type='enum'/>
-     <exports symbol='XML_XPATH_EXPR_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_ARITY' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_CHAR_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_CTXT_POSITION' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_CTXT_SIZE' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_OPERAND' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_PREDICATE_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_INVALID_TYPE' type='enum'/>
-     <exports symbol='XML_XPATH_MEMORY_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_NUMBER_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_START_LITERAL_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_UNCLOSED_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_UNDEF_PREFIX_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_UNDEF_VARIABLE_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_UNFINISHED_LITERAL_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_UNKNOWN_FUNC_ERROR' type='enum'/>
-     <exports symbol='XML_XPATH_VARIABLE_REF_ERROR' type='enum'/>
-     <exports symbol='XML_XPTR_CHILDSEQ_START' type='enum'/>
-     <exports symbol='XML_XPTR_EVAL_FAILED' type='enum'/>
-     <exports symbol='XML_XPTR_EXTRA_OBJECTS' type='enum'/>
-     <exports symbol='XML_XPTR_RESOURCE_ERROR' type='enum'/>
-     <exports symbol='XML_XPTR_SUB_RESOURCE_ERROR' type='enum'/>
-     <exports symbol='XML_XPTR_SYNTAX_ERROR' type='enum'/>
-     <exports symbol='XML_XPTR_UNKNOWN_SCHEME' type='enum'/>
-     <exports symbol='xmlError' type='typedef'/>
-     <exports symbol='xmlErrorDomain' type='typedef'/>
-     <exports symbol='xmlErrorLevel' type='typedef'/>
-     <exports symbol='xmlErrorPtr' type='typedef'/>
-     <exports symbol='xmlParserErrors' type='typedef'/>
-     <exports symbol='_xmlError' type='struct'/>
-     <exports symbol='xmlCopyError' type='function'/>
-     <exports symbol='xmlCtxtGetLastError' type='function'/>
-     <exports symbol='xmlCtxtResetLastError' type='function'/>
-     <exports symbol='xmlFormatError' type='function'/>
-     <exports symbol='xmlGenericErrorFunc' type='function'/>
-     <exports symbol='xmlGetLastError' type='function'/>
-     <exports symbol='xmlParserError' type='function'/>
-     <exports symbol='xmlParserPrintFileContext' type='function'/>
-     <exports symbol='xmlParserPrintFileInfo' type='function'/>
-     <exports symbol='xmlParserValidityError' type='function'/>
-     <exports symbol='xmlParserValidityWarning' type='function'/>
-     <exports symbol='xmlParserWarning' type='function'/>
-     <exports symbol='xmlResetError' type='function'/>
-     <exports symbol='xmlResetLastError' type='function'/>
-     <exports symbol='xmlSetGenericErrorFunc' type='function'/>
-     <exports symbol='xmlSetStructuredErrorFunc' type='function'/>
-     <exports symbol='xmlStructuredErrorFunc' type='function'/>
-     <exports symbol='xmlThrDefSetGenericErrorFunc' type='function'/>
-     <exports symbol='xmlThrDefSetStructuredErrorFunc' type='function'/>
-    </file>
-    <file name='xmlexports'>
-     <summary>macros for marking symbols as exportable/importable.</summary>
-     <description>macros for marking symbols as exportable/importable. </description>
-    </file>
-    <file name='xmlmemory'>
-     <summary>interface for the memory allocator</summary>
-     <description>provides interfaces for the memory allocator, including debugging capabilities. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlFree' type='variable'/>
-     <exports symbol='xmlMalloc' type='variable'/>
-     <exports symbol='xmlMallocAtomic' type='variable'/>
-     <exports symbol='xmlMemStrdup' type='variable'/>
-     <exports symbol='xmlRealloc' type='variable'/>
-     <exports symbol='xmlCleanupMemory' type='function'/>
-     <exports symbol='xmlFreeFunc' type='function'/>
-     <exports symbol='xmlGcMemGet' type='function'/>
-     <exports symbol='xmlGcMemSetup' type='function'/>
-     <exports symbol='xmlInitMemory' type='function'/>
-     <exports symbol='xmlMallocAtomicLoc' type='function'/>
-     <exports symbol='xmlMallocFunc' type='function'/>
-     <exports symbol='xmlMallocLoc' type='function'/>
-     <exports symbol='xmlMemBlocks' type='function'/>
-     <exports symbol='xmlMemDisplay' type='function'/>
-     <exports symbol='xmlMemDisplayLast' type='function'/>
-     <exports symbol='xmlMemFree' type='function'/>
-     <exports symbol='xmlMemGet' type='function'/>
-     <exports symbol='xmlMemMalloc' type='function'/>
-     <exports symbol='xmlMemRealloc' type='function'/>
-     <exports symbol='xmlMemSetup' type='function'/>
-     <exports symbol='xmlMemShow' type='function'/>
-     <exports symbol='xmlMemSize' type='function'/>
-     <exports symbol='xmlMemStrdupLoc' type='function'/>
-     <exports symbol='xmlMemUsed' type='function'/>
-     <exports symbol='xmlMemoryDump' type='function'/>
-     <exports symbol='xmlMemoryStrdup' type='function'/>
-     <exports symbol='xmlReallocFunc' type='function'/>
-     <exports symbol='xmlReallocLoc' type='function'/>
-     <exports symbol='xmlStrdupFunc' type='function'/>
-    </file>
-    <file name='xmlmodule'>
-     <summary>dynamic module loading</summary>
-     <description>basic API for dynamic module loading, used by libexslt added in 2.6.17 </description>
-     <author>Joel W. Reed </author>
-     <exports symbol='XML_MODULE_LAZY' type='enum'/>
-     <exports symbol='XML_MODULE_LOCAL' type='enum'/>
-     <exports symbol='xmlModule' type='typedef'/>
-     <exports symbol='xmlModuleOption' type='typedef'/>
-     <exports symbol='xmlModulePtr' type='typedef'/>
-     <exports symbol='xmlModuleClose' type='function'/>
-     <exports symbol='xmlModuleFree' type='function'/>
-     <exports symbol='xmlModuleOpen' type='function'/>
-     <exports symbol='xmlModuleSymbol' type='function'/>
-    </file>
-    <file name='xmlreader'>
-     <summary>the XMLReader implementation</summary>
-     <description>API of the XML streaming API based on C# interfaces. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_PARSER_DEFAULTATTRS' type='enum'/>
-     <exports symbol='XML_PARSER_LOADDTD' type='enum'/>
-     <exports symbol='XML_PARSER_SEVERITY_ERROR' type='enum'/>
-     <exports symbol='XML_PARSER_SEVERITY_VALIDITY_ERROR' type='enum'/>
-     <exports symbol='XML_PARSER_SEVERITY_VALIDITY_WARNING' type='enum'/>
-     <exports symbol='XML_PARSER_SEVERITY_WARNING' type='enum'/>
-     <exports symbol='XML_PARSER_SUBST_ENTITIES' type='enum'/>
-     <exports symbol='XML_PARSER_VALIDATE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_ATTRIBUTE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_CDATA' type='enum'/>
-     <exports symbol='XML_READER_TYPE_COMMENT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_DOCUMENT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_DOCUMENT_FRAGMENT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_DOCUMENT_TYPE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_ELEMENT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_END_ELEMENT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_END_ENTITY' type='enum'/>
-     <exports symbol='XML_READER_TYPE_ENTITY' type='enum'/>
-     <exports symbol='XML_READER_TYPE_ENTITY_REFERENCE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_NONE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_NOTATION' type='enum'/>
-     <exports symbol='XML_READER_TYPE_PROCESSING_INSTRUCTION' type='enum'/>
-     <exports symbol='XML_READER_TYPE_SIGNIFICANT_WHITESPACE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_TEXT' type='enum'/>
-     <exports symbol='XML_READER_TYPE_WHITESPACE' type='enum'/>
-     <exports symbol='XML_READER_TYPE_XML_DECLARATION' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_CLOSED' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_EOF' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_ERROR' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_INITIAL' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_INTERACTIVE' type='enum'/>
-     <exports symbol='XML_TEXTREADER_MODE_READING' type='enum'/>
-     <exports symbol='xmlParserProperties' type='typedef'/>
-     <exports symbol='xmlParserSeverities' type='typedef'/>
-     <exports symbol='xmlReaderTypes' type='typedef'/>
-     <exports symbol='xmlTextReader' type='typedef'/>
-     <exports symbol='xmlTextReaderLocatorPtr' type='typedef'/>
-     <exports symbol='xmlTextReaderMode' type='typedef'/>
-     <exports symbol='xmlTextReaderPtr' type='typedef'/>
-     <exports symbol='xmlFreeTextReader' type='function'/>
-     <exports symbol='xmlNewTextReader' type='function'/>
-     <exports symbol='xmlNewTextReaderFilename' type='function'/>
-     <exports symbol='xmlReaderForDoc' type='function'/>
-     <exports symbol='xmlReaderForFd' type='function'/>
-     <exports symbol='xmlReaderForFile' type='function'/>
-     <exports symbol='xmlReaderForIO' type='function'/>
-     <exports symbol='xmlReaderForMemory' type='function'/>
-     <exports symbol='xmlReaderNewDoc' type='function'/>
-     <exports symbol='xmlReaderNewFd' type='function'/>
-     <exports symbol='xmlReaderNewFile' type='function'/>
-     <exports symbol='xmlReaderNewIO' type='function'/>
-     <exports symbol='xmlReaderNewMemory' type='function'/>
-     <exports symbol='xmlReaderNewWalker' type='function'/>
-     <exports symbol='xmlReaderWalker' type='function'/>
-     <exports symbol='xmlTextReaderAttributeCount' type='function'/>
-     <exports symbol='xmlTextReaderBaseUri' type='function'/>
-     <exports symbol='xmlTextReaderByteConsumed' type='function'/>
-     <exports symbol='xmlTextReaderClose' type='function'/>
-     <exports symbol='xmlTextReaderConstBaseUri' type='function'/>
-     <exports symbol='xmlTextReaderConstEncoding' type='function'/>
-     <exports symbol='xmlTextReaderConstLocalName' type='function'/>
-     <exports symbol='xmlTextReaderConstName' type='function'/>
-     <exports symbol='xmlTextReaderConstNamespaceUri' type='function'/>
-     <exports symbol='xmlTextReaderConstPrefix' type='function'/>
-     <exports symbol='xmlTextReaderConstString' type='function'/>
-     <exports symbol='xmlTextReaderConstValue' type='function'/>
-     <exports symbol='xmlTextReaderConstXmlLang' type='function'/>
-     <exports symbol='xmlTextReaderConstXmlVersion' type='function'/>
-     <exports symbol='xmlTextReaderCurrentDoc' type='function'/>
-     <exports symbol='xmlTextReaderCurrentNode' type='function'/>
-     <exports symbol='xmlTextReaderDepth' type='function'/>
-     <exports symbol='xmlTextReaderErrorFunc' type='function'/>
-     <exports symbol='xmlTextReaderExpand' type='function'/>
-     <exports symbol='xmlTextReaderGetAttribute' type='function'/>
-     <exports symbol='xmlTextReaderGetAttributeNo' type='function'/>
-     <exports symbol='xmlTextReaderGetAttributeNs' type='function'/>
-     <exports symbol='xmlTextReaderGetErrorHandler' type='function'/>
-     <exports symbol='xmlTextReaderGetLastError' type='function'/>
-     <exports symbol='xmlTextReaderGetParserColumnNumber' type='function'/>
-     <exports symbol='xmlTextReaderGetParserLineNumber' type='function'/>
-     <exports symbol='xmlTextReaderGetParserProp' type='function'/>
-     <exports symbol='xmlTextReaderGetRemainder' type='function'/>
-     <exports symbol='xmlTextReaderHasAttributes' type='function'/>
-     <exports symbol='xmlTextReaderHasValue' type='function'/>
-     <exports symbol='xmlTextReaderIsDefault' type='function'/>
-     <exports symbol='xmlTextReaderIsEmptyElement' type='function'/>
-     <exports symbol='xmlTextReaderIsNamespaceDecl' type='function'/>
-     <exports symbol='xmlTextReaderIsValid' type='function'/>
-     <exports symbol='xmlTextReaderLocalName' type='function'/>
-     <exports symbol='xmlTextReaderLocatorBaseURI' type='function'/>
-     <exports symbol='xmlTextReaderLocatorLineNumber' type='function'/>
-     <exports symbol='xmlTextReaderLookupNamespace' type='function'/>
-     <exports symbol='xmlTextReaderMoveToAttribute' type='function'/>
-     <exports symbol='xmlTextReaderMoveToAttributeNo' type='function'/>
-     <exports symbol='xmlTextReaderMoveToAttributeNs' type='function'/>
-     <exports symbol='xmlTextReaderMoveToElement' type='function'/>
-     <exports symbol='xmlTextReaderMoveToFirstAttribute' type='function'/>
-     <exports symbol='xmlTextReaderMoveToNextAttribute' type='function'/>
-     <exports symbol='xmlTextReaderName' type='function'/>
-     <exports symbol='xmlTextReaderNamespaceUri' type='function'/>
-     <exports symbol='xmlTextReaderNext' type='function'/>
-     <exports symbol='xmlTextReaderNextSibling' type='function'/>
-     <exports symbol='xmlTextReaderNodeType' type='function'/>
-     <exports symbol='xmlTextReaderNormalization' type='function'/>
-     <exports symbol='xmlTextReaderPrefix' type='function'/>
-     <exports symbol='xmlTextReaderPreserve' type='function'/>
-     <exports symbol='xmlTextReaderPreservePattern' type='function'/>
-     <exports symbol='xmlTextReaderQuoteChar' type='function'/>
-     <exports symbol='xmlTextReaderRead' type='function'/>
-     <exports symbol='xmlTextReaderReadAttributeValue' type='function'/>
-     <exports symbol='xmlTextReaderReadInnerXml' type='function'/>
-     <exports symbol='xmlTextReaderReadOuterXml' type='function'/>
-     <exports symbol='xmlTextReaderReadState' type='function'/>
-     <exports symbol='xmlTextReaderReadString' type='function'/>
-     <exports symbol='xmlTextReaderRelaxNGSetSchema' type='function'/>
-     <exports symbol='xmlTextReaderRelaxNGValidate' type='function'/>
-     <exports symbol='xmlTextReaderRelaxNGValidateCtxt' type='function'/>
-     <exports symbol='xmlTextReaderSchemaValidate' type='function'/>
-     <exports symbol='xmlTextReaderSchemaValidateCtxt' type='function'/>
-     <exports symbol='xmlTextReaderSetErrorHandler' type='function'/>
-     <exports symbol='xmlTextReaderSetMaxAmplification' type='function'/>
-     <exports symbol='xmlTextReaderSetParserProp' type='function'/>
-     <exports symbol='xmlTextReaderSetResourceLoader' type='function'/>
-     <exports symbol='xmlTextReaderSetSchema' type='function'/>
-     <exports symbol='xmlTextReaderSetStructuredErrorHandler' type='function'/>
-     <exports symbol='xmlTextReaderSetup' type='function'/>
-     <exports symbol='xmlTextReaderStandalone' type='function'/>
-     <exports symbol='xmlTextReaderValue' type='function'/>
-     <exports symbol='xmlTextReaderXmlLang' type='function'/>
-    </file>
-    <file name='xmlregexp'>
-     <summary>regular expressions handling</summary>
-     <description>basic API for libxml regular expressions handling used for XML Schemas and validation. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlRegExecCtxt' type='typedef'/>
-     <exports symbol='xmlRegExecCtxtPtr' type='typedef'/>
-     <exports symbol='xmlRegexp' type='typedef'/>
-     <exports symbol='xmlRegexpPtr' type='typedef'/>
-     <exports symbol='xmlRegExecCallbacks' type='function'/>
-     <exports symbol='xmlRegExecErrInfo' type='function'/>
-     <exports symbol='xmlRegExecNextValues' type='function'/>
-     <exports symbol='xmlRegExecPushString' type='function'/>
-     <exports symbol='xmlRegExecPushString2' type='function'/>
-     <exports symbol='xmlRegFreeExecCtxt' type='function'/>
-     <exports symbol='xmlRegFreeRegexp' type='function'/>
-     <exports symbol='xmlRegNewExecCtxt' type='function'/>
-     <exports symbol='xmlRegexpCompile' type='function'/>
-     <exports symbol='xmlRegexpExec' type='function'/>
-     <exports symbol='xmlRegexpIsDeterminist' type='function'/>
-     <exports symbol='xmlRegexpPrint' type='function'/>
-    </file>
-    <file name='xmlsave'>
-     <summary>the XML document serializer</summary>
-     <description>API to save document or subtree of document </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_SAVE_AS_HTML' type='enum'/>
-     <exports symbol='XML_SAVE_AS_XML' type='enum'/>
-     <exports symbol='XML_SAVE_EMPTY' type='enum'/>
-     <exports symbol='XML_SAVE_FORMAT' type='enum'/>
-     <exports symbol='XML_SAVE_INDENT' type='enum'/>
-     <exports symbol='XML_SAVE_NO_DECL' type='enum'/>
-     <exports symbol='XML_SAVE_NO_EMPTY' type='enum'/>
-     <exports symbol='XML_SAVE_NO_INDENT' type='enum'/>
-     <exports symbol='XML_SAVE_NO_XHTML' type='enum'/>
-     <exports symbol='XML_SAVE_WSNONSIG' type='enum'/>
-     <exports symbol='XML_SAVE_XHTML' type='enum'/>
-     <exports symbol='xmlSaveCtxt' type='typedef'/>
-     <exports symbol='xmlSaveCtxtPtr' type='typedef'/>
-     <exports symbol='xmlSaveOption' type='typedef'/>
-     <exports symbol='xmlSaveClose' type='function'/>
-     <exports symbol='xmlSaveDoc' type='function'/>
-     <exports symbol='xmlSaveFinish' type='function'/>
-     <exports symbol='xmlSaveFlush' type='function'/>
-     <exports symbol='xmlSaveSetAttrEscape' type='function'/>
-     <exports symbol='xmlSaveSetEscape' type='function'/>
-     <exports symbol='xmlSaveSetIndentString' type='function'/>
-     <exports symbol='xmlSaveToBuffer' type='function'/>
-     <exports symbol='xmlSaveToFd' type='function'/>
-     <exports symbol='xmlSaveToFilename' type='function'/>
-     <exports symbol='xmlSaveToIO' type='function'/>
-     <exports symbol='xmlSaveTree' type='function'/>
-     <exports symbol='xmlThrDefIndentTreeOutput' type='function'/>
-     <exports symbol='xmlThrDefSaveNoEmptyTags' type='function'/>
-     <exports symbol='xmlThrDefTreeIndentString' type='function'/>
-    </file>
-    <file name='xmlschemas'>
-     <summary>incomplete XML Schemas structure implementation</summary>
-     <description>interface to the XML Schemas handling and schema validity checking, it is incomplete right now. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_SCHEMAS_ERR_' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_ATTRINVALID' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_ATTRUNKNOWN' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_CONSTRUCT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_ELEMCONT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_EXTRACONTENT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_FACET' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_HAVEDEFAULT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_INTERNAL' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_INVALIDATTR' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_INVALIDELEM' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_ISABSTRACT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_MISSING' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOROLLBACK' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOROOT' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTDETERMINIST' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTEMPTY' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTNILLABLE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTSIMPLE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTTOPLEVEL' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_NOTYPE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_OK' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_UNDECLAREDELEM' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_VALUE' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_WRONGELEM' type='enum'/>
-     <exports symbol='XML_SCHEMAS_ERR_XXX' type='enum'/>
-     <exports symbol='XML_SCHEMA_VAL_VC_I_CREATE' type='enum'/>
-     <exports symbol='xmlSchema' type='typedef'/>
-     <exports symbol='xmlSchemaParserCtxt' type='typedef'/>
-     <exports symbol='xmlSchemaParserCtxtPtr' type='typedef'/>
-     <exports symbol='xmlSchemaPtr' type='typedef'/>
-     <exports symbol='xmlSchemaSAXPlugPtr' type='typedef'/>
-     <exports symbol='xmlSchemaSAXPlugStruct' type='typedef'/>
-     <exports symbol='xmlSchemaValidCtxt' type='typedef'/>
-     <exports symbol='xmlSchemaValidCtxtPtr' type='typedef'/>
-     <exports symbol='xmlSchemaValidError' type='typedef'/>
-     <exports symbol='xmlSchemaValidOption' type='typedef'/>
-     <exports symbol='xmlSchemaDump' type='function'/>
-     <exports symbol='xmlSchemaFree' type='function'/>
-     <exports symbol='xmlSchemaFreeParserCtxt' type='function'/>
-     <exports symbol='xmlSchemaFreeValidCtxt' type='function'/>
-     <exports symbol='xmlSchemaGetParserErrors' type='function'/>
-     <exports symbol='xmlSchemaGetValidErrors' type='function'/>
-     <exports symbol='xmlSchemaIsValid' type='function'/>
-     <exports symbol='xmlSchemaNewDocParserCtxt' type='function'/>
-     <exports symbol='xmlSchemaNewMemParserCtxt' type='function'/>
-     <exports symbol='xmlSchemaNewParserCtxt' type='function'/>
-     <exports symbol='xmlSchemaNewValidCtxt' type='function'/>
-     <exports symbol='xmlSchemaParse' type='function'/>
-     <exports symbol='xmlSchemaSAXPlug' type='function'/>
-     <exports symbol='xmlSchemaSAXUnplug' type='function'/>
-     <exports symbol='xmlSchemaSetParserErrors' type='function'/>
-     <exports symbol='xmlSchemaSetParserStructuredErrors' type='function'/>
-     <exports symbol='xmlSchemaSetResourceLoader' type='function'/>
-     <exports symbol='xmlSchemaSetValidErrors' type='function'/>
-     <exports symbol='xmlSchemaSetValidOptions' type='function'/>
-     <exports symbol='xmlSchemaSetValidStructuredErrors' type='function'/>
-     <exports symbol='xmlSchemaValidCtxtGetOptions' type='function'/>
-     <exports symbol='xmlSchemaValidCtxtGetParserCtxt' type='function'/>
-     <exports symbol='xmlSchemaValidateDoc' type='function'/>
-     <exports symbol='xmlSchemaValidateFile' type='function'/>
-     <exports symbol='xmlSchemaValidateOneElement' type='function'/>
-     <exports symbol='xmlSchemaValidateSetFilename' type='function'/>
-     <exports symbol='xmlSchemaValidateSetLocator' type='function'/>
-     <exports symbol='xmlSchemaValidateStream' type='function'/>
-     <exports symbol='xmlSchemaValidityErrorFunc' type='function'/>
-     <exports symbol='xmlSchemaValidityLocatorFunc' type='function'/>
-     <exports symbol='xmlSchemaValidityWarningFunc' type='function'/>
-    </file>
-    <file name='xmlschemastypes'>
-     <summary>implementation of XML Schema Datatypes</summary>
-     <description>module providing the XML Schema Datatypes implementation both definition and validity checking </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_SCHEMA_WHITESPACE_COLLAPSE' type='enum'/>
-     <exports symbol='XML_SCHEMA_WHITESPACE_PRESERVE' type='enum'/>
-     <exports symbol='XML_SCHEMA_WHITESPACE_REPLACE' type='enum'/>
-     <exports symbol='XML_SCHEMA_WHITESPACE_UNKNOWN' type='enum'/>
-     <exports symbol='xmlSchemaWhitespaceValueType' type='typedef'/>
-     <exports symbol='xmlSchemaCheckFacet' type='function'/>
-     <exports symbol='xmlSchemaCleanupTypes' type='function'/>
-     <exports symbol='xmlSchemaCollapseString' type='function'/>
-     <exports symbol='xmlSchemaCompareValues' type='function'/>
-     <exports symbol='xmlSchemaCompareValuesWhtsp' type='function'/>
-     <exports symbol='xmlSchemaCopyValue' type='function'/>
-     <exports symbol='xmlSchemaFreeFacet' type='function'/>
-     <exports symbol='xmlSchemaFreeValue' type='function'/>
-     <exports symbol='xmlSchemaGetBuiltInListSimpleTypeItemType' type='function'/>
-     <exports symbol='xmlSchemaGetBuiltInType' type='function'/>
-     <exports symbol='xmlSchemaGetCanonValue' type='function'/>
-     <exports symbol='xmlSchemaGetCanonValueWhtsp' type='function'/>
-     <exports symbol='xmlSchemaGetFacetValueAsULong' type='function'/>
-     <exports symbol='xmlSchemaGetPredefinedType' type='function'/>
-     <exports symbol='xmlSchemaGetValType' type='function'/>
-     <exports symbol='xmlSchemaInitTypes' type='function'/>
-     <exports symbol='xmlSchemaIsBuiltInTypeFacet' type='function'/>
-     <exports symbol='xmlSchemaNewFacet' type='function'/>
-     <exports symbol='xmlSchemaNewNOTATIONValue' type='function'/>
-     <exports symbol='xmlSchemaNewQNameValue' type='function'/>
-     <exports symbol='xmlSchemaNewStringValue' type='function'/>
-     <exports symbol='xmlSchemaValPredefTypeNode' type='function'/>
-     <exports symbol='xmlSchemaValPredefTypeNodeNoNorm' type='function'/>
-     <exports symbol='xmlSchemaValidateFacet' type='function'/>
-     <exports symbol='xmlSchemaValidateFacetWhtsp' type='function'/>
-     <exports symbol='xmlSchemaValidateLengthFacet' type='function'/>
-     <exports symbol='xmlSchemaValidateLengthFacetWhtsp' type='function'/>
-     <exports symbol='xmlSchemaValidateListSimpleTypeFacet' type='function'/>
-     <exports symbol='xmlSchemaValidatePredefinedType' type='function'/>
-     <exports symbol='xmlSchemaValueAppend' type='function'/>
-     <exports symbol='xmlSchemaValueGetAsBoolean' type='function'/>
-     <exports symbol='xmlSchemaValueGetAsString' type='function'/>
-     <exports symbol='xmlSchemaValueGetNext' type='function'/>
-     <exports symbol='xmlSchemaWhiteSpaceReplace' type='function'/>
-    </file>
-    <file name='xmlstring'>
-     <summary>set of routines to process strings</summary>
-     <description>type and interfaces needed for the internal string handling of the library, especially UTF8 processing. </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='BAD_CAST' type='macro'/>
-     <exports symbol='xmlChar' type='typedef'/>
-     <exports symbol='xmlCharStrdup' type='function'/>
-     <exports symbol='xmlCharStrndup' type='function'/>
-     <exports symbol='xmlCheckUTF8' type='function'/>
-     <exports symbol='xmlGetUTF8Char' type='function'/>
-     <exports symbol='xmlStrEqual' type='function'/>
-     <exports symbol='xmlStrPrintf' type='function'/>
-     <exports symbol='xmlStrQEqual' type='function'/>
-     <exports symbol='xmlStrVPrintf' type='function'/>
-     <exports symbol='xmlStrcasecmp' type='function'/>
-     <exports symbol='xmlStrcasestr' type='function'/>
-     <exports symbol='xmlStrcat' type='function'/>
-     <exports symbol='xmlStrchr' type='function'/>
-     <exports symbol='xmlStrcmp' type='function'/>
-     <exports symbol='xmlStrdup' type='function'/>
-     <exports symbol='xmlStrlen' type='function'/>
-     <exports symbol='xmlStrncasecmp' type='function'/>
-     <exports symbol='xmlStrncat' type='function'/>
-     <exports symbol='xmlStrncatNew' type='function'/>
-     <exports symbol='xmlStrncmp' type='function'/>
-     <exports symbol='xmlStrndup' type='function'/>
-     <exports symbol='xmlStrstr' type='function'/>
-     <exports symbol='xmlStrsub' type='function'/>
-     <exports symbol='xmlUTF8Charcmp' type='function'/>
-     <exports symbol='xmlUTF8Size' type='function'/>
-     <exports symbol='xmlUTF8Strlen' type='function'/>
-     <exports symbol='xmlUTF8Strloc' type='function'/>
-     <exports symbol='xmlUTF8Strndup' type='function'/>
-     <exports symbol='xmlUTF8Strpos' type='function'/>
-     <exports symbol='xmlUTF8Strsize' type='function'/>
-     <exports symbol='xmlUTF8Strsub' type='function'/>
-    </file>
-    <file name='xmlversion'>
-     <summary>compile-time version information</summary>
-     <description>compile-time version information for the XML library </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='LIBXML_AUTOMATA_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_C14N_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_CATALOG_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_DEBUG_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_DOTTED_VERSION' type='macro'/>
-     <exports symbol='LIBXML_HTML_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_HTTP_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_ICONV_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_ICU_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_ISO8859X_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_LZMA_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_MODULES_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_MODULE_EXTENSION' type='macro'/>
-     <exports symbol='LIBXML_OUTPUT_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_PATTERN_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_PUSH_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_READER_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_REGEXP_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_RELAXNG_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_SAX1_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_SCHEMAS_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_SCHEMATRON_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_TEST_VERSION' type='macro'/>
-     <exports symbol='LIBXML_THREAD_ALLOC_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_THREAD_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_TREE_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_VALID_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_VERSION' type='macro'/>
-     <exports symbol='LIBXML_VERSION_EXTRA' type='macro'/>
-     <exports symbol='LIBXML_VERSION_STRING' type='macro'/>
-     <exports symbol='LIBXML_WRITER_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_XINCLUDE_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_XPATH_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_XPTR_ENABLED' type='macro'/>
-     <exports symbol='LIBXML_ZLIB_ENABLED' type='macro'/>
-    </file>
-    <file name='xmlwriter'>
-     <summary>text writing API for XML</summary>
-     <description>text writing API for XML </description>
-     <author>Alfred Mickautsch &lt;alfred@mickautsch.de&gt; </author>
-     <exports symbol='xmlTextWriterWriteDocType' type='macro'/>
-     <exports symbol='xmlTextWriterWriteProcessingInstruction' type='macro'/>
-     <exports symbol='xmlTextWriter' type='typedef'/>
-     <exports symbol='xmlTextWriterPtr' type='typedef'/>
-     <exports symbol='xmlFreeTextWriter' type='function'/>
-     <exports symbol='xmlNewTextWriter' type='function'/>
-     <exports symbol='xmlNewTextWriterDoc' type='function'/>
-     <exports symbol='xmlNewTextWriterFilename' type='function'/>
-     <exports symbol='xmlNewTextWriterMemory' type='function'/>
-     <exports symbol='xmlNewTextWriterPushParser' type='function'/>
-     <exports symbol='xmlNewTextWriterTree' type='function'/>
-     <exports symbol='xmlTextWriterClose' type='function'/>
-     <exports symbol='xmlTextWriterEndAttribute' type='function'/>
-     <exports symbol='xmlTextWriterEndCDATA' type='function'/>
-     <exports symbol='xmlTextWriterEndComment' type='function'/>
-     <exports symbol='xmlTextWriterEndDTD' type='function'/>
-     <exports symbol='xmlTextWriterEndDTDAttlist' type='function'/>
-     <exports symbol='xmlTextWriterEndDTDElement' type='function'/>
-     <exports symbol='xmlTextWriterEndDTDEntity' type='function'/>
-     <exports symbol='xmlTextWriterEndDocument' type='function'/>
-     <exports symbol='xmlTextWriterEndElement' type='function'/>
-     <exports symbol='xmlTextWriterEndPI' type='function'/>
-     <exports symbol='xmlTextWriterFlush' type='function'/>
-     <exports symbol='xmlTextWriterFullEndElement' type='function'/>
-     <exports symbol='xmlTextWriterSetIndent' type='function'/>
-     <exports symbol='xmlTextWriterSetIndentString' type='function'/>
-     <exports symbol='xmlTextWriterSetQuoteChar' type='function'/>
-     <exports symbol='xmlTextWriterStartAttribute' type='function'/>
-     <exports symbol='xmlTextWriterStartAttributeNS' type='function'/>
-     <exports symbol='xmlTextWriterStartCDATA' type='function'/>
-     <exports symbol='xmlTextWriterStartComment' type='function'/>
-     <exports symbol='xmlTextWriterStartDTD' type='function'/>
-     <exports symbol='xmlTextWriterStartDTDAttlist' type='function'/>
-     <exports symbol='xmlTextWriterStartDTDElement' type='function'/>
-     <exports symbol='xmlTextWriterStartDTDEntity' type='function'/>
-     <exports symbol='xmlTextWriterStartDocument' type='function'/>
-     <exports symbol='xmlTextWriterStartElement' type='function'/>
-     <exports symbol='xmlTextWriterStartElementNS' type='function'/>
-     <exports symbol='xmlTextWriterStartPI' type='function'/>
-     <exports symbol='xmlTextWriterWriteAttribute' type='function'/>
-     <exports symbol='xmlTextWriterWriteAttributeNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteBase64' type='function'/>
-     <exports symbol='xmlTextWriterWriteBinHex' type='function'/>
-     <exports symbol='xmlTextWriterWriteCDATA' type='function'/>
-     <exports symbol='xmlTextWriterWriteComment' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTD' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDAttlist' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDEntity' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDExternalEntity' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDExternalEntityContents' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDInternalEntity' type='function'/>
-     <exports symbol='xmlTextWriterWriteDTDNotation' type='function'/>
-     <exports symbol='xmlTextWriterWriteElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteElementNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatAttribute' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatAttributeNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatCDATA' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatComment' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatDTD' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatDTDAttlist' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatDTDElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatDTDInternalEntity' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatElementNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatPI' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatRaw' type='function'/>
-     <exports symbol='xmlTextWriterWriteFormatString' type='function'/>
-     <exports symbol='xmlTextWriterWritePI' type='function'/>
-     <exports symbol='xmlTextWriterWriteRaw' type='function'/>
-     <exports symbol='xmlTextWriterWriteRawLen' type='function'/>
-     <exports symbol='xmlTextWriterWriteString' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatAttribute' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatAttributeNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatCDATA' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatComment' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatDTD' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatDTDAttlist' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatDTDElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatDTDInternalEntity' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatElement' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatElementNS' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatPI' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatRaw' type='function'/>
-     <exports symbol='xmlTextWriterWriteVFormatString' type='function'/>
-    </file>
-    <file name='xpath'>
-     <summary>XML Path Language implementation</summary>
-     <description>API for the XML Path Language implementation  XML Path Language implementation XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer</description>
-     <author>Daniel Veillard </author>
-     <exports symbol='XML_XPATH_CHECKNS' type='macro'/>
-     <exports symbol='XML_XPATH_NOVAR' type='macro'/>
-     <exports symbol='xmlXPathNodeSetGetLength' type='macro'/>
-     <exports symbol='xmlXPathNodeSetIsEmpty' type='macro'/>
-     <exports symbol='xmlXPathNodeSetItem' type='macro'/>
-     <exports symbol='XPATH_BOOLEAN' type='enum'/>
-     <exports symbol='XPATH_ENCODING_ERROR' type='enum'/>
-     <exports symbol='XPATH_EXPRESSION_OK' type='enum'/>
-     <exports symbol='XPATH_EXPR_ERROR' type='enum'/>
-     <exports symbol='XPATH_FORBID_VARIABLE_ERROR' type='enum'/>
-     <exports symbol='XPATH_INVALID_ARITY' type='enum'/>
-     <exports symbol='XPATH_INVALID_CHAR_ERROR' type='enum'/>
-     <exports symbol='XPATH_INVALID_CTXT' type='enum'/>
-     <exports symbol='XPATH_INVALID_CTXT_POSITION' type='enum'/>
-     <exports symbol='XPATH_INVALID_CTXT_SIZE' type='enum'/>
-     <exports symbol='XPATH_INVALID_OPERAND' type='enum'/>
-     <exports symbol='XPATH_INVALID_PREDICATE_ERROR' type='enum'/>
-     <exports symbol='XPATH_INVALID_TYPE' type='enum'/>
-     <exports symbol='XPATH_MEMORY_ERROR' type='enum'/>
-     <exports symbol='XPATH_NODESET' type='enum'/>
-     <exports symbol='XPATH_NUMBER' type='enum'/>
-     <exports symbol='XPATH_NUMBER_ERROR' type='enum'/>
-     <exports symbol='XPATH_OP_LIMIT_EXCEEDED' type='enum'/>
-     <exports symbol='XPATH_RECURSION_LIMIT_EXCEEDED' type='enum'/>
-     <exports symbol='XPATH_STACK_ERROR' type='enum'/>
-     <exports symbol='XPATH_START_LITERAL_ERROR' type='enum'/>
-     <exports symbol='XPATH_STRING' type='enum'/>
-     <exports symbol='XPATH_UNCLOSED_ERROR' type='enum'/>
-     <exports symbol='XPATH_UNDEFINED' type='enum'/>
-     <exports symbol='XPATH_UNDEF_PREFIX_ERROR' type='enum'/>
-     <exports symbol='XPATH_UNDEF_VARIABLE_ERROR' type='enum'/>
-     <exports symbol='XPATH_UNFINISHED_LITERAL_ERROR' type='enum'/>
-     <exports symbol='XPATH_UNKNOWN_FUNC_ERROR' type='enum'/>
-     <exports symbol='XPATH_USERS' type='enum'/>
-     <exports symbol='XPATH_VARIABLE_REF_ERROR' type='enum'/>
-     <exports symbol='XPATH_XSLT_TREE' type='enum'/>
-     <exports symbol='XPTR_RESOURCE_ERROR' type='enum'/>
-     <exports symbol='XPTR_SUB_RESOURCE_ERROR' type='enum'/>
-     <exports symbol='XPTR_SYNTAX_ERROR' type='enum'/>
-     <exports symbol='xmlNodeSet' type='typedef'/>
-     <exports symbol='xmlNodeSetPtr' type='typedef'/>
-     <exports symbol='xmlXPathAxis' type='typedef'/>
-     <exports symbol='xmlXPathAxisPtr' type='typedef'/>
-     <exports symbol='xmlXPathCompExpr' type='typedef'/>
-     <exports symbol='xmlXPathCompExprPtr' type='typedef'/>
-     <exports symbol='xmlXPathContext' type='typedef'/>
-     <exports symbol='xmlXPathContextPtr' type='typedef'/>
-     <exports symbol='xmlXPathError' type='typedef'/>
-     <exports symbol='xmlXPathFuncPtr' type='typedef'/>
-     <exports symbol='xmlXPathFunct' type='typedef'/>
-     <exports symbol='xmlXPathObject' type='typedef'/>
-     <exports symbol='xmlXPathObjectPtr' type='typedef'/>
-     <exports symbol='xmlXPathObjectType' type='typedef'/>
-     <exports symbol='xmlXPathParserContext' type='typedef'/>
-     <exports symbol='xmlXPathParserContextPtr' type='typedef'/>
-     <exports symbol='xmlXPathType' type='typedef'/>
-     <exports symbol='xmlXPathTypePtr' type='typedef'/>
-     <exports symbol='xmlXPathVariable' type='typedef'/>
-     <exports symbol='xmlXPathVariablePtr' type='typedef'/>
-     <exports symbol='_xmlNodeSet' type='struct'/>
-     <exports symbol='_xmlXPathAxis' type='struct'/>
-     <exports symbol='_xmlXPathContext' type='struct'/>
-     <exports symbol='_xmlXPathFunct' type='struct'/>
-     <exports symbol='_xmlXPathObject' type='struct'/>
-     <exports symbol='_xmlXPathParserContext' type='struct'/>
-     <exports symbol='_xmlXPathType' type='struct'/>
-     <exports symbol='_xmlXPathVariable' type='struct'/>
-     <exports symbol='xmlXPathNAN' type='variable'/>
-     <exports symbol='xmlXPathNINF' type='variable'/>
-     <exports symbol='xmlXPathPINF' type='variable'/>
-     <exports symbol='xmlXPathAxisFunc' type='function'/>
-     <exports symbol='xmlXPathCastBooleanToNumber' type='function'/>
-     <exports symbol='xmlXPathCastBooleanToString' type='function'/>
-     <exports symbol='xmlXPathCastNodeSetToBoolean' type='function'/>
-     <exports symbol='xmlXPathCastNodeSetToNumber' type='function'/>
-     <exports symbol='xmlXPathCastNodeSetToString' type='function'/>
-     <exports symbol='xmlXPathCastNodeToNumber' type='function'/>
-     <exports symbol='xmlXPathCastNodeToString' type='function'/>
-     <exports symbol='xmlXPathCastNumberToBoolean' type='function'/>
-     <exports symbol='xmlXPathCastNumberToString' type='function'/>
-     <exports symbol='xmlXPathCastStringToBoolean' type='function'/>
-     <exports symbol='xmlXPathCastStringToNumber' type='function'/>
-     <exports symbol='xmlXPathCastToBoolean' type='function'/>
-     <exports symbol='xmlXPathCastToNumber' type='function'/>
-     <exports symbol='xmlXPathCastToString' type='function'/>
-     <exports symbol='xmlXPathCmpNodes' type='function'/>
-     <exports symbol='xmlXPathCompile' type='function'/>
-     <exports symbol='xmlXPathCompiledEval' type='function'/>
-     <exports symbol='xmlXPathCompiledEvalToBoolean' type='function'/>
-     <exports symbol='xmlXPathContextSetCache' type='function'/>
-     <exports symbol='xmlXPathConvertBoolean' type='function'/>
-     <exports symbol='xmlXPathConvertFunc' type='function'/>
-     <exports symbol='xmlXPathConvertNumber' type='function'/>
-     <exports symbol='xmlXPathConvertString' type='function'/>
-     <exports symbol='xmlXPathCtxtCompile' type='function'/>
-     <exports symbol='xmlXPathEval' type='function'/>
-     <exports symbol='xmlXPathEvalExpression' type='function'/>
-     <exports symbol='xmlXPathEvalFunc' type='function'/>
-     <exports symbol='xmlXPathEvalPredicate' type='function'/>
-     <exports symbol='xmlXPathFreeCompExpr' type='function'/>
-     <exports symbol='xmlXPathFreeContext' type='function'/>
-     <exports symbol='xmlXPathFreeNodeSet' type='function'/>
-     <exports symbol='xmlXPathFreeNodeSetList' type='function'/>
-     <exports symbol='xmlXPathFreeObject' type='function'/>
-     <exports symbol='xmlXPathFuncLookupFunc' type='function'/>
-     <exports symbol='xmlXPathFunction' type='function'/>
-     <exports symbol='xmlXPathInit' type='function'/>
-     <exports symbol='xmlXPathIsInf' type='function'/>
-     <exports symbol='xmlXPathIsNaN' type='function'/>
-     <exports symbol='xmlXPathNewContext' type='function'/>
-     <exports symbol='xmlXPathNodeEval' type='function'/>
-     <exports symbol='xmlXPathNodeSetCreate' type='function'/>
-     <exports symbol='xmlXPathObjectCopy' type='function'/>
-     <exports symbol='xmlXPathOrderDocElems' type='function'/>
-     <exports symbol='xmlXPathSetContextNode' type='function'/>
-     <exports symbol='xmlXPathSetErrorHandler' type='function'/>
-     <exports symbol='xmlXPathVariableLookupFunc' type='function'/>
-    </file>
-    <file name='xpathInternals'>
-     <summary>internal interfaces for XML Path Language implementation</summary>
-     <description>internal interfaces for XML Path Language implementation used to build new modules on top of XPath like XPointer and XSLT </description>
-     <author>Daniel Veillard </author>
-     <exports symbol='CAST_TO_BOOLEAN' type='macro'/>
-     <exports symbol='CAST_TO_NUMBER' type='macro'/>
-     <exports symbol='CAST_TO_STRING' type='macro'/>
-     <exports symbol='CHECK_ARITY' type='macro'/>
-     <exports symbol='CHECK_ERROR' type='macro'/>
-     <exports symbol='CHECK_ERROR0' type='macro'/>
-     <exports symbol='CHECK_TYPE' type='macro'/>
-     <exports symbol='CHECK_TYPE0' type='macro'/>
-     <exports symbol='XP_ERROR' type='macro'/>
-     <exports symbol='XP_ERROR0' type='macro'/>
-     <exports symbol='valuePop' type='macro'/>
-     <exports symbol='valuePush' type='macro'/>
-     <exports symbol='xmlXPathCheckError' type='macro'/>
-     <exports symbol='xmlXPathEmptyNodeSet' type='macro'/>
-     <exports symbol='xmlXPathGetContextNode' type='macro'/>
-     <exports symbol='xmlXPathGetDocument' type='macro'/>
-     <exports symbol='xmlXPathGetError' type='macro'/>
-     <exports symbol='xmlXPathReturnBoolean' type='macro'/>
-     <exports symbol='xmlXPathReturnEmptyNodeSet' type='macro'/>
-     <exports symbol='xmlXPathReturnEmptyString' type='macro'/>
-     <exports symbol='xmlXPathReturnExternal' type='macro'/>
-     <exports symbol='xmlXPathReturnFalse' type='macro'/>
-     <exports symbol='xmlXPathReturnNodeSet' type='macro'/>
-     <exports symbol='xmlXPathReturnNumber' type='macro'/>
-     <exports symbol='xmlXPathReturnString' type='macro'/>
-     <exports symbol='xmlXPathReturnTrue' type='macro'/>
-     <exports symbol='xmlXPathSetArityError' type='macro'/>
-     <exports symbol='xmlXPathSetError' type='macro'/>
-     <exports symbol='xmlXPathSetTypeError' type='macro'/>
-     <exports symbol='xmlXPathStackIsExternal' type='macro'/>
-     <exports symbol='xmlXPathStackIsNodeSet' type='macro'/>
-     <exports symbol='xmlXPathAddValues' type='function'/>
-     <exports symbol='xmlXPathBooleanFunction' type='function'/>
-     <exports symbol='xmlXPathCeilingFunction' type='function'/>
-     <exports symbol='xmlXPathCompareValues' type='function'/>
-     <exports symbol='xmlXPathConcatFunction' type='function'/>
-     <exports symbol='xmlXPathContainsFunction' type='function'/>
-     <exports symbol='xmlXPathCountFunction' type='function'/>
-     <exports symbol='xmlXPathDebugDumpCompExpr' type='function'/>
-     <exports symbol='xmlXPathDebugDumpObject' type='function'/>
-     <exports symbol='xmlXPathDifference' type='function'/>
-     <exports symbol='xmlXPathDistinct' type='function'/>
-     <exports symbol='xmlXPathDistinctSorted' type='function'/>
-     <exports symbol='xmlXPathDivValues' type='function'/>
-     <exports symbol='xmlXPathEqualValues' type='function'/>
-     <exports symbol='xmlXPathErr' type='function'/>
-     <exports symbol='xmlXPathEvalExpr' type='function'/>
-     <exports symbol='xmlXPathEvaluatePredicateResult' type='function'/>
-     <exports symbol='xmlXPathFalseFunction' type='function'/>
-     <exports symbol='xmlXPathFloorFunction' type='function'/>
-     <exports symbol='xmlXPathFreeParserContext' type='function'/>
-     <exports symbol='xmlXPathFunctionLookup' type='function'/>
-     <exports symbol='xmlXPathFunctionLookupNS' type='function'/>
-     <exports symbol='xmlXPathHasSameNodes' type='function'/>
-     <exports symbol='xmlXPathIdFunction' type='function'/>
-     <exports symbol='xmlXPathIntersection' type='function'/>
-     <exports symbol='xmlXPathIsNodeType' type='function'/>
-     <exports symbol='xmlXPathLangFunction' type='function'/>
-     <exports symbol='xmlXPathLastFunction' type='function'/>
-     <exports symbol='xmlXPathLeading' type='function'/>
-     <exports symbol='xmlXPathLeadingSorted' type='function'/>
-     <exports symbol='xmlXPathLocalNameFunction' type='function'/>
-     <exports symbol='xmlXPathModValues' type='function'/>
-     <exports symbol='xmlXPathMultValues' type='function'/>
-     <exports symbol='xmlXPathNamespaceURIFunction' type='function'/>
-     <exports symbol='xmlXPathNewBoolean' type='function'/>
-     <exports symbol='xmlXPathNewCString' type='function'/>
-     <exports symbol='xmlXPathNewFloat' type='function'/>
-     <exports symbol='xmlXPathNewNodeSet' type='function'/>
-     <exports symbol='xmlXPathNewNodeSetList' type='function'/>
-     <exports symbol='xmlXPathNewParserContext' type='function'/>
-     <exports symbol='xmlXPathNewString' type='function'/>
-     <exports symbol='xmlXPathNewValueTree' type='function'/>
-     <exports symbol='xmlXPathNextAncestor' type='function'/>
-     <exports symbol='xmlXPathNextAncestorOrSelf' type='function'/>
-     <exports symbol='xmlXPathNextAttribute' type='function'/>
-     <exports symbol='xmlXPathNextChild' type='function'/>
-     <exports symbol='xmlXPathNextDescendant' type='function'/>
-     <exports symbol='xmlXPathNextDescendantOrSelf' type='function'/>
-     <exports symbol='xmlXPathNextFollowing' type='function'/>
-     <exports symbol='xmlXPathNextFollowingSibling' type='function'/>
-     <exports symbol='xmlXPathNextNamespace' type='function'/>
-     <exports symbol='xmlXPathNextParent' type='function'/>
-     <exports symbol='xmlXPathNextPreceding' type='function'/>
-     <exports symbol='xmlXPathNextPrecedingSibling' type='function'/>
-     <exports symbol='xmlXPathNextSelf' type='function'/>
-     <exports symbol='xmlXPathNodeLeading' type='function'/>
-     <exports symbol='xmlXPathNodeLeadingSorted' type='function'/>
-     <exports symbol='xmlXPathNodeSetAdd' type='function'/>
-     <exports symbol='xmlXPathNodeSetAddNs' type='function'/>
-     <exports symbol='xmlXPathNodeSetAddUnique' type='function'/>
-     <exports symbol='xmlXPathNodeSetContains' type='function'/>
-     <exports symbol='xmlXPathNodeSetDel' type='function'/>
-     <exports symbol='xmlXPathNodeSetFreeNs' type='function'/>
-     <exports symbol='xmlXPathNodeSetMerge' type='function'/>
-     <exports symbol='xmlXPathNodeSetRemove' type='function'/>
-     <exports symbol='xmlXPathNodeSetSort' type='function'/>
-     <exports symbol='xmlXPathNodeTrailing' type='function'/>
-     <exports symbol='xmlXPathNodeTrailingSorted' type='function'/>
-     <exports symbol='xmlXPathNormalizeFunction' type='function'/>
-     <exports symbol='xmlXPathNotEqualValues' type='function'/>
-     <exports symbol='xmlXPathNotFunction' type='function'/>
-     <exports symbol='xmlXPathNsLookup' type='function'/>
-     <exports symbol='xmlXPathNumberFunction' type='function'/>
-     <exports symbol='xmlXPathParseNCName' type='function'/>
-     <exports symbol='xmlXPathParseName' type='function'/>
-     <exports symbol='xmlXPathPopBoolean' type='function'/>
-     <exports symbol='xmlXPathPopExternal' type='function'/>
-     <exports symbol='xmlXPathPopNodeSet' type='function'/>
-     <exports symbol='xmlXPathPopNumber' type='function'/>
-     <exports symbol='xmlXPathPopString' type='function'/>
-     <exports symbol='xmlXPathPositionFunction' type='function'/>
-     <exports symbol='xmlXPathRegisterAllFunctions' type='function'/>
-     <exports symbol='xmlXPathRegisterFunc' type='function'/>
-     <exports symbol='xmlXPathRegisterFuncLookup' type='function'/>
-     <exports symbol='xmlXPathRegisterFuncNS' type='function'/>
-     <exports symbol='xmlXPathRegisterNs' type='function'/>
-     <exports symbol='xmlXPathRegisterVariable' type='function'/>
-     <exports symbol='xmlXPathRegisterVariableLookup' type='function'/>
-     <exports symbol='xmlXPathRegisterVariableNS' type='function'/>
-     <exports symbol='xmlXPathRegisteredFuncsCleanup' type='function'/>
-     <exports symbol='xmlXPathRegisteredNsCleanup' type='function'/>
-     <exports symbol='xmlXPathRegisteredVariablesCleanup' type='function'/>
-     <exports symbol='xmlXPathRoot' type='function'/>
-     <exports symbol='xmlXPathRoundFunction' type='function'/>
-     <exports symbol='xmlXPathStartsWithFunction' type='function'/>
-     <exports symbol='xmlXPathStringEvalNumber' type='function'/>
-     <exports symbol='xmlXPathStringFunction' type='function'/>
-     <exports symbol='xmlXPathStringLengthFunction' type='function'/>
-     <exports symbol='xmlXPathSubValues' type='function'/>
-     <exports symbol='xmlXPathSubstringAfterFunction' type='function'/>
-     <exports symbol='xmlXPathSubstringBeforeFunction' type='function'/>
-     <exports symbol='xmlXPathSubstringFunction' type='function'/>
-     <exports symbol='xmlXPathSumFunction' type='function'/>
-     <exports symbol='xmlXPathTrailing' type='function'/>
-     <exports symbol='xmlXPathTrailingSorted' type='function'/>
-     <exports symbol='xmlXPathTranslateFunction' type='function'/>
-     <exports symbol='xmlXPathTrueFunction' type='function'/>
-     <exports symbol='xmlXPathValueFlipSign' type='function'/>
-     <exports symbol='xmlXPathValuePop' type='function'/>
-     <exports symbol='xmlXPathValuePush' type='function'/>
-     <exports symbol='xmlXPathVariableLookup' type='function'/>
-     <exports symbol='xmlXPathVariableLookupNS' type='function'/>
-     <exports symbol='xmlXPathWrapCString' type='function'/>
-     <exports symbol='xmlXPathWrapExternal' type='function'/>
-     <exports symbol='xmlXPathWrapNodeSet' type='function'/>
-     <exports symbol='xmlXPathWrapString' type='function'/>
-     <exports symbol='xmlXPatherror' type='function'/>
-    </file>
-    <file name='xpointer'>
-     <summary>API to handle XML Pointers</summary>
-     <description>API to handle XML Pointers Base implementation was made accordingly to W3C Candidate Recommendation 7 June 2000</description>
-     <author>Daniel Veillard </author>
-     <exports symbol='xmlXPtrEval' type='function'/>
-     <exports symbol='xmlXPtrNewContext' type='function'/>
-    </file>
-  </files>
-  <symbols>
-    <macro name='BAD_CAST' file='xmlstring'>
-      <info>Macro to cast a string to an xmlChar * when one know its safe.</info>
-    </macro>
-    <macro name='CAST_TO_BOOLEAN' file='xpathInternals'>
-      <info>Macro to try to cast the value on the top of the XPath stack to a boolean.</info>
-    </macro>
-    <macro name='CAST_TO_NUMBER' file='xpathInternals'>
-      <info>Macro to try to cast the value on the top of the XPath stack to a number.</info>
-    </macro>
-    <macro name='CAST_TO_STRING' file='xpathInternals'>
-      <info>Macro to try to cast the value on the top of the XPath stack to a string.</info>
-    </macro>
-    <macro name='CHECK_ARITY' file='xpathInternals'>
-      <info>Macro to check that the number of args passed to an XPath function matches.</info>
-      <arg name='x' info='the number of expected args'/>
-    </macro>
-    <macro name='CHECK_ERROR' file='xpathInternals'>
-      <info>Macro to return from the function if an XPath error was detected.</info>
-    </macro>
-    <macro name='CHECK_ERROR0' file='xpathInternals'>
-      <info>Macro to return 0 from the function if an XPath error was detected.</info>
-    </macro>
-    <macro name='CHECK_TYPE' file='xpathInternals'>
-      <info>Macro to check that the value on top of the XPath stack is of a given type.</info>
-      <arg name='typeval' info='the XPath type'/>
-    </macro>
-    <macro name='CHECK_TYPE0' file='xpathInternals'>
-      <info>Macro to check that the value on top of the XPath stack is of a given type. Return(0) in case of failure</info>
-      <arg name='typeval' info='the XPath type'/>
-    </macro>
-    <macro name='HTML_COMMENT_NODE' file='HTMLtree'>
-      <info>Macro. A comment in a HTML document is really implemented the same way as a comment in an XML document.</info>
-    </macro>
-    <macro name='HTML_ENTITY_REF_NODE' file='HTMLtree'>
-      <info>Macro. An entity reference in a HTML document is really implemented the same way as an entity reference in an XML document.</info>
-    </macro>
-    <macro name='HTML_PI_NODE' file='HTMLtree'>
-      <info>Macro. A processing instruction in a HTML document is really implemented the same way as a processing instruction in an XML document.</info>
-    </macro>
-    <macro name='HTML_PRESERVE_NODE' file='HTMLtree'>
-      <info>Macro. A preserved node in a HTML document is really implemented the same way as a CDATA section in an XML document.</info>
-    </macro>
-    <macro name='HTML_TEXT_NODE' file='HTMLtree'>
-      <info>Macro. A text node in a HTML document is really implemented the same way as a text node in an XML document.</info>
-    </macro>
-    <macro name='IS_ASCII_DIGIT' file='parserInternals'>
-      <info>Macro to check [0-9]</info>
-      <arg name='c' info='an xmlChar value'/>
-    </macro>
-    <macro name='IS_ASCII_LETTER' file='parserInternals'>
-      <info>Macro to check [a-zA-Z]</info>
-      <arg name='c' info='an xmlChar value'/>
-    </macro>
-    <macro name='IS_BASECHAR' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [85] BaseChar ::= ... long list see REC ...</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_BLANK' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [3] S ::= (#x20 | #x9 | #xD | #xA)+</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_BLANK_CH' file='parserInternals'>
-      <info>Behaviour same as IS_BLANK</info>
-      <arg name='c' info='an xmlChar value (normally unsigned char)'/>
-    </macro>
-    <macro name='IS_BYTE_CHAR' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [2] Char ::= #x9 | #xA | #xD | [#x20...] any byte character in the accepted range</info>
-      <arg name='c' info='an byte value (int)'/>
-    </macro>
-    <macro name='IS_CHAR' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_CHAR_CH' file='parserInternals'>
-      <info>Behaves like IS_CHAR on single-byte value</info>
-      <arg name='c' info='an xmlChar (usually an unsigned char)'/>
-    </macro>
-    <macro name='IS_COMBINING' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [87] CombiningChar ::= ... long list see REC ...</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_COMBINING_CH' file='parserInternals'>
-      <info>Always false (all combining chars &gt; 0xff)</info>
-      <arg name='c' info='an xmlChar (usually an unsigned char)'/>
-    </macro>
-    <macro name='IS_DIGIT' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:  [88] Digit ::= ... long list see REC ...</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_DIGIT_CH' file='parserInternals'>
-      <info>Behaves like IS_DIGIT but with a single byte argument</info>
-      <arg name='c' info='an xmlChar value (usually an unsigned char)'/>
-    </macro>
-    <macro name='IS_EXTENDER' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:   [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_EXTENDER_CH' file='parserInternals'>
-      <info>Behaves like IS_EXTENDER but with a single-byte argument</info>
-      <arg name='c' info='an xmlChar value (usually an unsigned char)'/>
-    </macro>
-    <macro name='IS_IDEOGRAPHIC' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:   [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_LETTER' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:   [84] Letter ::= BaseChar | Ideographic</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_LETTER_CH' file='parserInternals'>
-      <info>Macro behaves like IS_LETTER, but only check base chars</info>
-      <arg name='c' info='an xmlChar value (normally unsigned char)'/>
-    </macro>
-    <macro name='IS_PUBIDCHAR' file='parserInternals'>
-      <info>Macro to check the following production in the XML spec:   [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-&apos;()+,./:=?;!*#@$_%]</info>
-      <arg name='c' info='an UNICODE value (int)'/>
-    </macro>
-    <macro name='IS_PUBIDCHAR_CH' file='parserInternals'>
-      <info>Same as IS_PUBIDCHAR but for single-byte value</info>
-      <arg name='c' info='an xmlChar value (normally unsigned char)'/>
-    </macro>
-    <macro name='LIBXML2_NEW_BUFFER' file='tree'>
-      <info>Macro used to express that the API use the new buffers for xmlParserInputBuffer and xmlOutputBuffer. The change was introduced in 2.9.0.</info>
-    </macro>
-    <macro name='LIBXML_AUTOMATA_ENABLED' file='xmlversion'>
-      <info>Whether the automata interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_C14N_ENABLED' file='xmlversion'>
-      <info>Whether the Canonicalization support is configured in</info>
-    </macro>
-    <macro name='LIBXML_CATALOG_ENABLED' file='xmlversion'>
-      <info>Whether the Catalog support is configured in</info>
-    </macro>
-    <macro name='LIBXML_DEBUG_ENABLED' file='xmlversion'>
-      <info>Whether Debugging module is configured in</info>
-    </macro>
-    <macro name='LIBXML_DOTTED_VERSION' file='xmlversion'>
-      <info>the version string like &quot;1.2.3&quot;</info>
-    </macro>
-    <macro name='LIBXML_HTML_ENABLED' file='xmlversion'>
-      <info>Whether the HTML support is configured in</info>
-    </macro>
-    <macro name='LIBXML_HTTP_ENABLED' file='xmlversion'>
-      <info>Whether the HTTP support is configured in</info>
-    </macro>
-    <macro name='LIBXML_ICONV_ENABLED' file='xmlversion'>
-      <info>Whether iconv support is available</info>
-    </macro>
-    <macro name='LIBXML_ICU_ENABLED' file='xmlversion'>
-      <info>Whether icu support is available</info>
-    </macro>
-    <macro name='LIBXML_ISO8859X_ENABLED' file='xmlversion'>
-      <info>Whether ISO-8859-* support is made available in case iconv is not</info>
-    </macro>
-    <macro name='LIBXML_LZMA_ENABLED' file='xmlversion'>
-      <info>Whether the Lzma support is compiled in</info>
-    </macro>
-    <macro name='LIBXML_MODULES_ENABLED' file='xmlversion'>
-      <info>Whether the module interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_MODULE_EXTENSION' file='xmlversion'>
-      <info>the string suffix used by dynamic modules (usually shared libraries)</info>
-    </macro>
-    <macro name='LIBXML_OUTPUT_ENABLED' file='xmlversion'>
-      <info>Whether the serialization/saving support is configured in</info>
-    </macro>
-    <macro name='LIBXML_PATTERN_ENABLED' file='xmlversion'>
-      <info>Whether the xmlPattern node selection interface is configured in</info>
-    </macro>
-    <macro name='LIBXML_PUSH_ENABLED' file='xmlversion'>
-      <info>Whether the push parsing interfaces are configured in</info>
-    </macro>
-    <macro name='LIBXML_READER_ENABLED' file='xmlversion'>
-      <info>Whether the xmlReader parsing interface is configured in</info>
-    </macro>
-    <macro name='LIBXML_REGEXP_ENABLED' file='xmlversion'>
-      <info>Whether the regular expressions interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_RELAXNG_ENABLED' file='xmlversion'>
-      <info>Whether the RelaxNG validation interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_SAX1_ENABLED' file='xmlversion'>
-      <info>Whether the older SAX1 interface is configured in</info>
-    </macro>
-    <macro name='LIBXML_SCHEMAS_ENABLED' file='xmlversion'>
-      <info>Whether the Schemas validation interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_SCHEMATRON_ENABLED' file='xmlversion'>
-      <info>Whether the Schematron validation interfaces are compiled in</info>
-    </macro>
-    <macro name='LIBXML_TEST_VERSION' file='xmlversion'>
-      <info>Macro to check that the libxml version in use is compatible with the version the software has been compiled against</info>
-    </macro>
-    <macro name='LIBXML_THREAD_ALLOC_ENABLED' file='xmlversion'>
-      <info>Whether the allocation hooks are per-thread</info>
-    </macro>
-    <macro name='LIBXML_THREAD_ENABLED' file='xmlversion'>
-      <info>Whether the thread support is configured in</info>
-    </macro>
-    <macro name='LIBXML_TREE_ENABLED' file='xmlversion'>
-      <info>Always enabled since 2.14.0</info>
-    </macro>
-    <macro name='LIBXML_VALID_ENABLED' file='xmlversion'>
-      <info>Whether the DTD validation support is configured in</info>
-    </macro>
-    <macro name='LIBXML_VERSION' file='xmlversion'>
-      <info>the version number: 1.2.3 value is 10203</info>
-    </macro>
-    <macro name='LIBXML_VERSION_EXTRA' file='xmlversion'>
-      <info>extra version information, used to show a git commit description</info>
-    </macro>
-    <macro name='LIBXML_VERSION_STRING' file='xmlversion'>
-      <info>the version number string, 1.2.3 value is &quot;10203&quot;</info>
-    </macro>
-    <macro name='LIBXML_WRITER_ENABLED' file='xmlversion'>
-      <info>Whether the xmlWriter saving interface is configured in</info>
-    </macro>
-    <macro name='LIBXML_XINCLUDE_ENABLED' file='xmlversion'>
-      <info>Whether XInclude is configured in</info>
-    </macro>
-    <macro name='LIBXML_XPATH_ENABLED' file='xmlversion'>
-      <info>Whether XPath is configured in</info>
-    </macro>
-    <macro name='LIBXML_XPTR_ENABLED' file='xmlversion'>
-      <info>Whether XPointer is configured in</info>
-    </macro>
-    <macro name='LIBXML_ZLIB_ENABLED' file='xmlversion'>
-      <info>Whether the Zlib support is compiled in</info>
-    </macro>
-    <macro name='UTF8ToHtml' file='HTMLparser'>
-    </macro>
-    <macro name='UTF8Toisolat1' file='encoding'>
-    </macro>
-    <macro name='XINCLUDE_FALLBACK' file='xinclude'>
-      <info>Macro defining &quot;fallback&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_HREF' file='xinclude'>
-      <info>Macro defining &quot;href&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_NODE' file='xinclude'>
-      <info>Macro defining &quot;include&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_NS' file='xinclude'>
-      <info>Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude</info>
-    </macro>
-    <macro name='XINCLUDE_OLD_NS' file='xinclude'>
-      <info>Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude</info>
-    </macro>
-    <macro name='XINCLUDE_PARSE' file='xinclude'>
-      <info>Macro defining &quot;parse&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_PARSE_ENCODING' file='xinclude'>
-      <info>Macro defining &quot;encoding&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_PARSE_TEXT' file='xinclude'>
-      <info>Macro defining &quot;text&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_PARSE_XML' file='xinclude'>
-      <info>Macro defining &quot;xml&quot;</info>
-    </macro>
-    <macro name='XINCLUDE_PARSE_XPOINTER' file='xinclude'>
-      <info>Macro defining &quot;xpointer&quot;</info>
-    </macro>
-    <macro name='XML_CAST_FPTR' file='hash'>
-      <info>Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc  #define XML_CAST_FPTR(fptr) (*(void **)(&amp;fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now</info>
-      <arg name='fptr' info='pointer to a function'/>
-    </macro>
-    <macro name='XML_CATALOGS_NAMESPACE' file='catalog'>
-      <info>The namespace for the XML Catalogs elements.</info>
-    </macro>
-    <macro name='XML_CATALOG_PI' file='catalog'>
-      <info>The specific XML Catalog Processing Instruction name.</info>
-    </macro>
-    <macro name='XML_DEFAULT_VERSION' file='parser'>
-      <info>The default version of XML used: 1.0</info>
-    </macro>
-    <macro name='XML_GET_CONTENT' file='tree'>
-      <info>Macro to extract the content pointer of a node.</info>
-    </macro>
-    <macro name='XML_GET_LINE' file='tree'>
-      <info>Macro to extract the line number of an element node.</info>
-    </macro>
-    <macro name='XML_LOCAL_NAMESPACE' file='tree'>
-      <info>A namespace declaration node.</info>
-    </macro>
-    <macro name='XML_MAX_DICTIONARY_LIMIT' file='parserInternals'>
-      <info>Maximum size allowed by the parser for a dictionary by default This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Introduced in 2.9.0</info>
-    </macro>
-    <macro name='XML_MAX_HUGE_LENGTH' file='parserInternals'>
-      <info>Maximum size allowed when XML_PARSE_HUGE is set.</info>
-    </macro>
-    <macro name='XML_MAX_LOOKUP_LIMIT' file='parserInternals'>
-      <info>Maximum size allowed by the parser for ahead lookup This is an upper boundary enforced by the parser to avoid bad behaviour on &quot;unfriendly&apos; content Introduced in 2.9.0</info>
-    </macro>
-    <macro name='XML_MAX_NAMELEN' file='parserInternals'>
-      <info>Identifiers can be longer, but this will be more costly at runtime.</info>
-    </macro>
-    <macro name='XML_MAX_NAME_LENGTH' file='parserInternals'>
-      <info>Maximum size allowed for a markup identifier. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Note that with the use of parsing dictionaries overriding the limit may result in more runtime memory usage in face of &quot;unfriendly&apos; content Introduced in 2.9.0</info>
-    </macro>
-    <macro name='XML_MAX_TEXT_LENGTH' file='parserInternals'>
-      <info>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it. Introduced in 2.9.0</info>
-    </macro>
-    <macro name='XML_SAX2_MAGIC' file='parser'>
-      <info>Special constant found in SAX2 blocks initialized fields</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANYATTR_LAX' file='schemasInternals'>
-      <info>Ignore validation non definition on attributes Obsolete, not used anymore.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANYATTR_SKIP' file='schemasInternals'>
-      <info>Skip unknown attribute from validation Obsolete, not used anymore.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANYATTR_STRICT' file='schemasInternals'>
-      <info>Apply strict validation rules on attributes Obsolete, not used anymore.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANY_LAX' file='schemasInternals'>
-      <info>Used by wildcards. Validate if type found, don&apos;t worry if not found</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANY_SKIP' file='schemasInternals'>
-      <info>Skip unknown attribute from validation</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ANY_STRICT' file='schemasInternals'>
-      <info>Used by wildcards. Apply strict validation rules</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTRGROUP_GLOBAL' file='schemasInternals'>
-      <info>The attribute group has been defined.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTRGROUP_HAS_REFS' file='schemasInternals'>
-      <info>Whether this attr. group contains attr. group references.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTRGROUP_MARKED' file='schemasInternals'>
-      <info>Marks the attr group as marked; used for circular checks.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTRGROUP_REDEFINED' file='schemasInternals'>
-      <info>The attr group was redefined.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED' file='schemasInternals'>
-      <info>The attribute wildcard has been built.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_FIXED' file='schemasInternals'>
-      <info>the attribute has a fixed value</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_GLOBAL' file='schemasInternals'>
-      <info>allow elements in no namespace</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_INTERNAL_RESOLVED' file='schemasInternals'>
-      <info>this is set when the &quot;type&quot; and &quot;ref&quot; references have been resolved.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_NSDEFAULT' file='schemasInternals'>
-      <info>allow elements in no namespace</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_USE_OPTIONAL' file='schemasInternals'>
-      <info>The attribute is optional.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_USE_PROHIBITED' file='schemasInternals'>
-      <info>Used by wildcards. The attribute is prohibited.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ATTR_USE_REQUIRED' file='schemasInternals'>
-      <info>The attribute is required.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION' file='schemasInternals'>
-      <info>the schema has &quot;extension&quot; in the set of blockDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION' file='schemasInternals'>
-      <info>the schema has &quot;restriction&quot; in the set of blockDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION' file='schemasInternals'>
-      <info>the schema has &quot;substitution&quot; in the set of blockDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_ABSTRACT' file='schemasInternals'>
-      <info>the element is abstract</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_BLOCK_ABSENT' file='schemasInternals'>
-      <info>the &quot;block&quot; attribute is absent</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_BLOCK_EXTENSION' file='schemasInternals'>
-      <info>disallowed substitutions are absent</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_BLOCK_RESTRICTION' file='schemasInternals'>
-      <info>disallowed substitutions: &quot;restriction&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION' file='schemasInternals'>
-      <info>disallowed substitutions: &quot;substitution&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_CIRCULAR' file='schemasInternals'>
-      <info>a helper flag for the search of circular references.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_DEFAULT' file='schemasInternals'>
-      <info>the element has a default value</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_FINAL_ABSENT' file='schemasInternals'>
-      <info>substitution group exclusions are absent</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_FINAL_EXTENSION' file='schemasInternals'>
-      <info>substitution group exclusions: &quot;extension&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_FINAL_RESTRICTION' file='schemasInternals'>
-      <info>substitution group exclusions: &quot;restriction&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_FIXED' file='schemasInternals'>
-      <info>the element has a fixed value</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_GLOBAL' file='schemasInternals'>
-      <info>the element is global</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_INTERNAL_CHECKED' file='schemasInternals'>
-      <info>this is set when the elem decl has been checked against all constraints</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_INTERNAL_RESOLVED' file='schemasInternals'>
-      <info>this is set when &quot;type&quot;, &quot;ref&quot;, &quot;substitutionGroup&quot; references have been resolved.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_NILLABLE' file='schemasInternals'>
-      <info>the element is nillable</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_NSDEFAULT' file='schemasInternals'>
-      <info>allow elements in no namespace Obsolete, not used anymore.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_REF' file='schemasInternals'>
-      <info>the element is a reference to a type</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD' file='schemasInternals'>
-      <info>the declaration is a substitution group head</info>
-    </macro>
-    <macro name='XML_SCHEMAS_ELEM_TOPLEVEL' file='schemasInternals'>
-      <info>the element is top level obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FACET_COLLAPSE' file='schemasInternals'>
-      <info>collapse the types of the facet</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FACET_PRESERVE' file='schemasInternals'>
-      <info>preserve the type of the facet</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FACET_REPLACE' file='schemasInternals'>
-      <info>replace the type of the facet</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FACET_UNKNOWN' file='schemasInternals'>
-      <info>unknown facet handling</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FINAL_DEFAULT_EXTENSION' file='schemasInternals'>
-      <info>the schema has &quot;extension&quot; in the set of finalDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FINAL_DEFAULT_LIST' file='schemasInternals'>
-      <info>the schema has &quot;list&quot; in the set of finalDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION' file='schemasInternals'>
-      <info>the schema has &quot;restriction&quot; in the set of finalDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_FINAL_DEFAULT_UNION' file='schemasInternals'>
-      <info>the schema has &quot;union&quot; in the set of finalDefault.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_INCLUDING_CONVERT_NS' file='schemasInternals'>
-      <info>the schema is currently including an other schema with no target namespace.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_QUALIF_ATTR' file='schemasInternals'>
-      <info>Reflects attributeFormDefault == qualified in an XML schema document.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_QUALIF_ELEM' file='schemasInternals'>
-      <info>Reflects elementFormDefault == qualified in an XML schema document.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_ABSTRACT' file='schemasInternals'>
-      <info>the simple/complexType is abstract.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_BLOCK_DEFAULT' file='schemasInternals'>
-      <info>the complexType did not specify &apos;block&apos; so use the default of the &lt;schema&gt; item.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_BLOCK_EXTENSION' file='schemasInternals'>
-      <info>the complexType has a &apos;block&apos; of &quot;extension&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_BLOCK_RESTRICTION' file='schemasInternals'>
-      <info>the complexType has a &apos;block&apos; of &quot;restriction&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE' file='schemasInternals'>
-      <info>Marks the item as a builtin primitive.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION' file='schemasInternals'>
-      <info>the simple or complex type has a derivation method of &quot;extension&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION' file='schemasInternals'>
-      <info>the simple or complex type has a derivation method of &quot;restriction&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FACETSNEEDVALUE' file='schemasInternals'>
-      <info>indicates if the facets need a computed value</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FINAL_DEFAULT' file='schemasInternals'>
-      <info>the simpleType has a final of &quot;default&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FINAL_EXTENSION' file='schemasInternals'>
-      <info>the complexType has a final of &quot;extension&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FINAL_LIST' file='schemasInternals'>
-      <info>the simpleType has a final of &quot;list&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FINAL_RESTRICTION' file='schemasInternals'>
-      <info>the simpleType/complexType has a final of &quot;restriction&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FINAL_UNION' file='schemasInternals'>
-      <info>the simpleType has a final of &quot;union&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_FIXUP_1' file='schemasInternals'>
-      <info>First stage of fixup was done.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_GLOBAL' file='schemasInternals'>
-      <info>the type is global</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_HAS_FACETS' file='schemasInternals'>
-      <info>has facets</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>
-    <macro name='XML_SCHEMAS_TYPE_MIXED' file='schemasInternals'>
-      <info>the element content type is mixed</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_NORMVALUENEEDED' file='schemasInternals'>
-      <info>indicates if the facets (pattern) need a normalized value</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD' file='schemasInternals'>
-      <info>the complexType owns an attribute wildcard, i.e. it can be freed by the complexType</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_REDEFINED' file='schemasInternals'>
-      <info>The type was redefined.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_VARIETY_ABSENT' file='schemasInternals'>
-      <info>the simpleType has a variety of &quot;absent&quot;. TODO: Actually not necessary :-/, since if none of the variety flags occur then it&apos;s automatically absent.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_VARIETY_ATOMIC' file='schemasInternals'>
-      <info>the simpleType has a variety of &quot;union&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_VARIETY_LIST' file='schemasInternals'>
-      <info>the simpleType has a variety of &quot;list&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_VARIETY_UNION' file='schemasInternals'>
-      <info>the simpleType has a variety of &quot;union&quot;.</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE' file='schemasInternals'>
-      <info>a whitespace-facet value of &quot;collapse&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE' file='schemasInternals'>
-      <info>a whitespace-facet value of &quot;preserve&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_TYPE_WHITESPACE_REPLACE' file='schemasInternals'>
-      <info>a whitespace-facet value of &quot;replace&quot;</info>
-    </macro>
-    <macro name='XML_SCHEMAS_WILDCARD_COMPLETE' file='schemasInternals'>
-      <info>If the wildcard is complete.</info>
-    </macro>
-    <macro name='XML_SUBSTITUTE_BOTH' file='parserInternals'>
-      <info>Both general and parameter entities need to be substituted.</info>
-    </macro>
-    <macro name='XML_SUBSTITUTE_NONE' file='parserInternals'>
-      <info>If no entities need to be substituted.</info>
-    </macro>
-    <macro name='XML_SUBSTITUTE_PEREF' file='parserInternals'>
-      <info>Whether parameter entities need to be substituted.</info>
-    </macro>
-    <macro name='XML_SUBSTITUTE_REF' file='parserInternals'>
-      <info>Whether general entities need to be substituted.</info>
-    </macro>
-    <macro name='XML_XML_ID' file='tree'>
-      <info>This is the name for the special xml:id attribute</info>
-    </macro>
-    <macro name='XML_XML_NAMESPACE' file='tree'>
-      <info>This is the namespace for the special xml: prefix predefined in the XML Namespace specification.</info>
-    </macro>
-    <macro name='XML_XPATH_CHECKNS' file='xpath'>
-      <info>check namespaces at compilation</info>
-    </macro>
-    <macro name='XML_XPATH_NOVAR' file='xpath'>
-      <info>forbid variables in expression</info>
-    </macro>
-    <macro name='XP_ERROR' file='xpathInternals'>
-      <info>Macro to raise an XPath error and return.</info>
-      <arg name='X' info='the error code'/>
-    </macro>
-    <macro name='XP_ERROR0' file='xpathInternals'>
-      <info>Macro to raise an XPath error and return 0.</info>
-      <arg name='X' info='the error code'/>
-    </macro>
-    <macro name='htmlDefaultSubelement' file='HTMLparser'>
-      <info>Returns the default subelement for this element</info>
-      <arg name='elt' info='HTML element'/>
-    </macro>
-    <macro name='htmlElementAllowedHereDesc' file='HTMLparser'>
-      <info>Checks whether an HTML element description may be a direct child of the specified element.  Returns 1 if allowed; 0 otherwise.</info>
-      <arg name='parent' info='HTML parent element'/>
-      <arg name='elt' info='HTML element'/>
-    </macro>
-    <macro name='htmlRequiredAttrs' file='HTMLparser'>
-      <info>Returns the attributes required for the specified element.</info>
-      <arg name='elt' info='HTML element'/>
-    </macro>
-    <macro name='initGenericErrorDefaultFunc' file='xmlerror'>
-    </macro>
-    <macro name='inputPop' file='parserInternals'>
-    </macro>
-    <macro name='inputPush' file='parserInternals'>
-    </macro>
-    <macro name='isolat1ToUTF8' file='encoding'>
-    </macro>
-    <macro name='valuePop' file='xpathInternals'>
-    </macro>
-    <macro name='valuePush' file='xpathInternals'>
-    </macro>
-    <macro name='xmlBufferAllocScheme' file='tree'>
-    </macro>
-    <macro name='xmlChildrenNode' file='tree'>
-      <info>Macro for compatibility naming layer with libxml1. Maps to &quot;children.&quot;</info>
-    </macro>
-    <macro name='xmlDefaultBufferSize' file='tree'>
-    </macro>
-    <macro name='xmlIsBaseCharQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsBaseChar_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsBlankQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsBlank_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsCharQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsChar_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsCombiningQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsDigitQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsDigit_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsExtenderQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsExtender_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsIdeographicQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsPubidCharQ' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlIsPubidChar_ch' file='chvalid'>
-      <info>Automatically generated by genChRanges.py</info>
-      <arg name='c' info='char to validate'/>
-    </macro>
-    <macro name='xmlParserMaxDepth' file='parserInternals'>
-    </macro>
-    <macro name='xmlRootNode' file='tree'>
-      <info>Macro for compatibility naming layer with libxml1. Maps to &quot;children&quot;.</info>
-    </macro>
-    <macro name='xmlTextWriterWriteDocType' file='xmlwriter'>
-      <info>this macro maps to xmlTextWriterWriteDTD</info>
-    </macro>
-    <macro name='xmlTextWriterWriteProcessingInstruction' file='xmlwriter'>
-      <info>This macro maps to xmlTextWriterWritePI</info>
-    </macro>
-    <macro name='xmlXPathCheckError' file='xpathInternals'>
-      <info>Check if an XPath error was raised.  Returns true if an error has been raised, false otherwise.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathEmptyNodeSet' file='xpathInternals'>
-      <info>Empties a node-set.</info>
-      <arg name='ns' info='a node-set'/>
-    </macro>
-    <macro name='xmlXPathGetContextNode' file='xpathInternals'>
-      <info>Get the context node of an XPath context.  Returns the context node.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathGetDocument' file='xpathInternals'>
-      <info>Get the document of an XPath context.  Returns the context document.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathGetError' file='xpathInternals'>
-      <info>Get the error code of an XPath context.  Returns the context error.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathNodeSetGetLength' file='xpath'>
-      <info>Implement a functionality similar to the DOM NodeList.length.  Returns the number of nodes in the node-set.</info>
-      <arg name='ns' info='a node-set'/>
-    </macro>
-    <macro name='xmlXPathNodeSetIsEmpty' file='xpath'>
-      <info>Checks whether @ns is empty or not.  Returns %TRUE if @ns is an empty node-set.</info>
-      <arg name='ns' info='a node-set'/>
-    </macro>
-    <macro name='xmlXPathNodeSetItem' file='xpath'>
-      <info>Implements a functionality similar to the DOM NodeList.item().  Returns the xmlNodePtr at the given @index in @ns or NULL if @index is out of range (0 to length-1)</info>
-      <arg name='ns' info='a node-set'/>
-      <arg name='index' info='index of a node in the set'/>
-    </macro>
-    <macro name='xmlXPathReturnBoolean' file='xpathInternals'>
-      <info>Pushes the boolean @val on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='val' info='a boolean'/>
-    </macro>
-    <macro name='xmlXPathReturnEmptyNodeSet' file='xpathInternals'>
-      <info>Pushes an empty node-set on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathReturnEmptyString' file='xpathInternals'>
-      <info>Pushes an empty string on the stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathReturnExternal' file='xpathInternals'>
-      <info>Pushes user data on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='val' info='user data'/>
-    </macro>
-    <macro name='xmlXPathReturnFalse' file='xpathInternals'>
-      <info>Pushes false on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathReturnNodeSet' file='xpathInternals'>
-      <info>Pushes the node-set @ns on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='ns' info='a node-set'/>
-    </macro>
-    <macro name='xmlXPathReturnNumber' file='xpathInternals'>
-      <info>Pushes the double @val on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='val' info='a double'/>
-    </macro>
-    <macro name='xmlXPathReturnString' file='xpathInternals'>
-      <info>Pushes the string @str on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='str' info='a string'/>
-    </macro>
-    <macro name='xmlXPathReturnTrue' file='xpathInternals'>
-      <info>Pushes true on the context stack.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathSetArityError' file='xpathInternals'>
-      <info>Raises an XPATH_INVALID_ARITY error.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathSetError' file='xpathInternals'>
-      <info>Raises an error.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-      <arg name='err' info='an xmlXPathError code'/>
-    </macro>
-    <macro name='xmlXPathSetTypeError' file='xpathInternals'>
-      <info>Raises an XPATH_INVALID_TYPE error.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathStackIsExternal' file='xpathInternals'>
-      <info>Checks if the current value on the XPath stack is an external object.  Returns true if the current object on the stack is an external object.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <macro name='xmlXPathStackIsNodeSet' file='xpathInternals'>
-      <info>Check if the current value on the XPath stack is a node set or an XSLT value tree.  Returns true if the current object on the stack is a node-set.</info>
-      <arg name='ctxt' info='an XPath parser context'/>
-    </macro>
-    <enum name='HTML_DEPRECATED' file='HTMLparser' value='2' type='htmlStatus'/>
-    <enum name='HTML_INVALID' file='HTMLparser' value='1' type='htmlStatus'/>
-    <enum name='HTML_NA' file='HTMLparser' value='0' type='htmlStatus' info='something we don&apos;t check at all'/>
-    <enum name='HTML_PARSE_BIG_LINES' file='HTMLparser' value='4194304' type='htmlParserOption' info=' Store big lines numbers in text PSVI field'/>
-    <enum name='HTML_PARSE_COMPACT' file='HTMLparser' value='65536' type='htmlParserOption' info='compact small text nodes'/>
-    <enum name='HTML_PARSE_HTML5' file='HTMLparser' value='2' type='htmlParserOption' info='HTML5 support'/>
-    <enum name='HTML_PARSE_HUGE' file='HTMLparser' value='524288' type='htmlParserOption' info='relax any hardcoded limit from the parser'/>
-    <enum name='HTML_PARSE_IGNORE_ENC' file='HTMLparser' value='2097152' type='htmlParserOption' info='ignore internal document encoding hint'/>
-    <enum name='HTML_PARSE_NOBLANKS' file='HTMLparser' value='256' type='htmlParserOption' info='remove blank nodes'/>
-    <enum name='HTML_PARSE_NODEFDTD' file='HTMLparser' value='4' type='htmlParserOption' info='do not default a doctype if not found'/>
-    <enum name='HTML_PARSE_NOERROR' file='HTMLparser' value='32' type='htmlParserOption' info='suppress error reports'/>
-    <enum name='HTML_PARSE_NOIMPLIED' file='HTMLparser' value='8192' type='htmlParserOption' info='Do not add implied html/body... elements'/>
-    <enum name='HTML_PARSE_NONET' file='HTMLparser' value='2048' type='htmlParserOption' info='No effect'/>
-    <enum name='HTML_PARSE_NOWARNING' file='HTMLparser' value='64' type='htmlParserOption' info='suppress warning reports'/>
-    <enum name='HTML_PARSE_PEDANTIC' file='HTMLparser' value='128' type='htmlParserOption' info='No effect'/>
-    <enum name='HTML_PARSE_RECOVER' file='HTMLparser' value='1' type='htmlParserOption' info='No effect'/>
-    <enum name='HTML_REQUIRED' file='HTMLparser' value='12' type='htmlStatus' info=' VALID bit set so ( &amp; HTML_VALID ) is TRUE'/>
-    <enum name='HTML_VALID' file='HTMLparser' value='4' type='htmlStatus'/>
-    <enum name='XLINK_ACTUATE_AUTO' file='xlink' value='1' type='xlinkActuate'/>
-    <enum name='XLINK_ACTUATE_NONE' file='xlink' value='0' type='xlinkActuate'/>
-    <enum name='XLINK_ACTUATE_ONREQUEST' file='xlink' value='2' type='xlinkActuate'/>
-    <enum name='XLINK_SHOW_EMBED' file='xlink' value='2' type='xlinkShow'/>
-    <enum name='XLINK_SHOW_NEW' file='xlink' value='1' type='xlinkShow'/>
-    <enum name='XLINK_SHOW_NONE' file='xlink' value='0' type='xlinkShow'/>
-    <enum name='XLINK_SHOW_REPLACE' file='xlink' value='3' type='xlinkShow'/>
-    <enum name='XLINK_TYPE_EXTENDED' file='xlink' value='2' type='xlinkType'/>
-    <enum name='XLINK_TYPE_EXTENDED_SET' file='xlink' value='3' type='xlinkType'/>
-    <enum name='XLINK_TYPE_NONE' file='xlink' value='0' type='xlinkType'/>
-    <enum name='XLINK_TYPE_SIMPLE' file='xlink' value='1' type='xlinkType'/>
-    <enum name='XML_ATTRIBUTE_CDATA' file='tree' value='1' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_DECL' file='tree' value='16' type='xmlElementType'/>
-    <enum name='XML_ATTRIBUTE_ENTITIES' file='tree' value='6' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_ENTITY' file='tree' value='5' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_ENUMERATION' file='tree' value='9' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_FIXED' file='tree' value='4' type='xmlAttributeDefault'/>
-    <enum name='XML_ATTRIBUTE_ID' file='tree' value='2' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_IDREF' file='tree' value='3' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_IDREFS' file='tree' value='4' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_IMPLIED' file='tree' value='3' type='xmlAttributeDefault'/>
-    <enum name='XML_ATTRIBUTE_NMTOKEN' file='tree' value='7' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_NMTOKENS' file='tree' value='8' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_NODE' file='tree' value='2' type='xmlElementType'/>
-    <enum name='XML_ATTRIBUTE_NONE' file='tree' value='1' type='xmlAttributeDefault'/>
-    <enum name='XML_ATTRIBUTE_NOTATION' file='tree' value='10' type='xmlAttributeType'/>
-    <enum name='XML_ATTRIBUTE_REQUIRED' file='tree' value='2' type='xmlAttributeDefault'/>
-    <enum name='XML_BUFFER_ALLOC_BOUNDED' file='tree' value='6' type='xmlBufferAllocationScheme' info=' limit the upper size of the buffer'/>
-    <enum name='XML_BUFFER_ALLOC_DOUBLEIT' file='tree' value='1' type='xmlBufferAllocationScheme' info='double each time one need to grow'/>
-    <enum name='XML_BUFFER_ALLOC_EXACT' file='tree' value='2' type='xmlBufferAllocationScheme' info='grow only to the minimal size'/>
-    <enum name='XML_BUFFER_ALLOC_HYBRID' file='tree' value='5' type='xmlBufferAllocationScheme' info='exact up to a threshold, and doubleit thereafter'/>
-    <enum name='XML_BUFFER_ALLOC_IMMUTABLE' file='tree' value='3' type='xmlBufferAllocationScheme' info='immutable buffer, deprecated'/>
-    <enum name='XML_BUFFER_ALLOC_IO' file='tree' value='4' type='xmlBufferAllocationScheme' info='special allocation scheme used for I/O'/>
-    <enum name='XML_BUF_OVERFLOW' file='xmlerror' value='7000' type='xmlParserErrors'/>
-    <enum name='XML_C14N_1_0' file='c14n' value='0' type='xmlC14NMode' info='Original C14N 1.0 spec'/>
-    <enum name='XML_C14N_1_1' file='c14n' value='2' type='xmlC14NMode' info=' C14N 1.1 spec'/>
-    <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_EXCLUSIVE_1_0' file='c14n' value='1' type='xmlC14NMode' info='Exclusive C14N 1.0 spec'/>
-    <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'/>
-    <enum name='XML_CATALOG_PREFER_VALUE' file='xmlerror' value='1652' type='xmlParserErrors' info='1652'/>
-    <enum name='XML_CATALOG_RECURSION' file='xmlerror' value='1654' type='xmlParserErrors' info='1654'/>
-    <enum name='XML_CATA_ALLOW_ALL' file='catalog' value='3' type='xmlCatalogAllow'/>
-    <enum name='XML_CATA_ALLOW_DOCUMENT' file='catalog' value='2' type='xmlCatalogAllow'/>
-    <enum name='XML_CATA_ALLOW_GLOBAL' file='catalog' value='1' type='xmlCatalogAllow'/>
-    <enum name='XML_CATA_ALLOW_NONE' file='catalog' value='0' type='xmlCatalogAllow'/>
-    <enum name='XML_CATA_PREFER_NONE' file='catalog' value='0' type='xmlCatalogPrefer'/>
-    <enum name='XML_CATA_PREFER_PUBLIC' file='catalog' value='1' type='xmlCatalogPrefer'/>
-    <enum name='XML_CATA_PREFER_SYSTEM' file='catalog' value='2' type='xmlCatalogPrefer'/>
-    <enum name='XML_CDATA_SECTION_NODE' file='tree' value='4' type='xmlElementType'/>
-    <enum name='XML_CHAR_ENCODING_2022_JP' file='encoding' value='19' type='xmlCharEncoding' info='ISO-2022-JP'/>
-    <enum name='XML_CHAR_ENCODING_8859_1' file='encoding' value='10' type='xmlCharEncoding' info='ISO-8859-1 ISO Latin 1'/>
-    <enum name='XML_CHAR_ENCODING_8859_10' file='encoding' value='25' type='xmlCharEncoding' info='ISO-8859-10'/>
-    <enum name='XML_CHAR_ENCODING_8859_11' file='encoding' value='26' type='xmlCharEncoding' info='ISO-8859-11'/>
-    <enum name='XML_CHAR_ENCODING_8859_13' file='encoding' value='27' type='xmlCharEncoding' info='ISO-8859-13'/>
-    <enum name='XML_CHAR_ENCODING_8859_14' file='encoding' value='28' type='xmlCharEncoding' info='ISO-8859-14'/>
-    <enum name='XML_CHAR_ENCODING_8859_15' file='encoding' value='29' type='xmlCharEncoding' info='ISO-8859-15'/>
-    <enum name='XML_CHAR_ENCODING_8859_16' file='encoding' value='30' type='xmlCharEncoding' info=' ISO-8859-16'/>
-    <enum name='XML_CHAR_ENCODING_8859_2' file='encoding' value='11' type='xmlCharEncoding' info='ISO-8859-2 ISO Latin 2'/>
-    <enum name='XML_CHAR_ENCODING_8859_3' file='encoding' value='12' type='xmlCharEncoding' info='ISO-8859-3'/>
-    <enum name='XML_CHAR_ENCODING_8859_4' file='encoding' value='13' type='xmlCharEncoding' info='ISO-8859-4'/>
-    <enum name='XML_CHAR_ENCODING_8859_5' file='encoding' value='14' type='xmlCharEncoding' info='ISO-8859-5'/>
-    <enum name='XML_CHAR_ENCODING_8859_6' file='encoding' value='15' type='xmlCharEncoding' info='ISO-8859-6'/>
-    <enum name='XML_CHAR_ENCODING_8859_7' file='encoding' value='16' type='xmlCharEncoding' info='ISO-8859-7'/>
-    <enum name='XML_CHAR_ENCODING_8859_8' file='encoding' value='17' type='xmlCharEncoding' info='ISO-8859-8'/>
-    <enum name='XML_CHAR_ENCODING_8859_9' file='encoding' value='18' type='xmlCharEncoding' info='ISO-8859-9'/>
-    <enum name='XML_CHAR_ENCODING_ASCII' file='encoding' value='22' type='xmlCharEncoding' info='pure ASCII Available since 2.14.0'/>
-    <enum name='XML_CHAR_ENCODING_EBCDIC' file='encoding' value='6' type='xmlCharEncoding' info='EBCDIC uh!'/>
-    <enum name='XML_CHAR_ENCODING_ERROR' file='encoding' value='-1' type='xmlCharEncoding' info='No char encoding detected'/>
-    <enum name='XML_CHAR_ENCODING_EUC_JP' file='encoding' value='21' type='xmlCharEncoding' info='EUC-JP'/>
-    <enum name='XML_CHAR_ENCODING_HTML' file='encoding' value='24' type='xmlCharEncoding' info='HTML (output only)'/>
-    <enum name='XML_CHAR_ENCODING_NONE' file='encoding' value='0' type='xmlCharEncoding' info='No char encoding detected'/>
-    <enum name='XML_CHAR_ENCODING_SHIFT_JIS' file='encoding' value='20' type='xmlCharEncoding' info='Shift_JIS'/>
-    <enum name='XML_CHAR_ENCODING_UCS2' file='encoding' value='9' type='xmlCharEncoding' info='UCS-2'/>
-    <enum name='XML_CHAR_ENCODING_UCS4BE' file='encoding' value='5' type='xmlCharEncoding' info='UCS-4 big endian'/>
-    <enum name='XML_CHAR_ENCODING_UCS4LE' file='encoding' value='4' type='xmlCharEncoding' info='UCS-4 little endian'/>
-    <enum name='XML_CHAR_ENCODING_UCS4_2143' file='encoding' value='7' type='xmlCharEncoding' info='UCS-4 unusual ordering'/>
-    <enum name='XML_CHAR_ENCODING_UCS4_3412' file='encoding' value='8' type='xmlCharEncoding' info='UCS-4 unusual ordering'/>
-    <enum name='XML_CHAR_ENCODING_UTF16' file='encoding' value='23' type='xmlCharEncoding' info='UTF-16 native'/>
-    <enum name='XML_CHAR_ENCODING_UTF16BE' file='encoding' value='3' type='xmlCharEncoding' info='UTF-16 big endian'/>
-    <enum name='XML_CHAR_ENCODING_UTF16LE' file='encoding' value='2' type='xmlCharEncoding' info='UTF-16 little endian'/>
-    <enum name='XML_CHAR_ENCODING_UTF8' file='encoding' value='1' type='xmlCharEncoding' info='UTF-8'/>
-    <enum name='XML_CHECK_ENTITY_TYPE' file='xmlerror' value='5012' type='xmlParserErrors' info='5012'/>
-    <enum name='XML_CHECK_FOUND_ATTRIBUTE' file='xmlerror' value='5001' type='xmlParserErrors' info='5001'/>
-    <enum name='XML_CHECK_FOUND_CDATA' file='xmlerror' value='5003' type='xmlParserErrors' info='5003'/>
-    <enum name='XML_CHECK_FOUND_COMMENT' file='xmlerror' value='5007' type='xmlParserErrors' info='5007'/>
-    <enum name='XML_CHECK_FOUND_DOCTYPE' file='xmlerror' value='5008' type='xmlParserErrors' info='5008'/>
-    <enum name='XML_CHECK_FOUND_ELEMENT' file='xmlerror' value='5000' type='xmlParserErrors'/>
-    <enum name='XML_CHECK_FOUND_ENTITY' file='xmlerror' value='5005' type='xmlParserErrors' info='5005'/>
-    <enum name='XML_CHECK_FOUND_ENTITYREF' file='xmlerror' value='5004' type='xmlParserErrors' info='5004'/>
-    <enum name='XML_CHECK_FOUND_FRAGMENT' file='xmlerror' value='5009' type='xmlParserErrors' info='5009'/>
-    <enum name='XML_CHECK_FOUND_NOTATION' file='xmlerror' value='5010' type='xmlParserErrors' info='5010'/>
-    <enum name='XML_CHECK_FOUND_PI' file='xmlerror' value='5006' type='xmlParserErrors' info='5006'/>
-    <enum name='XML_CHECK_FOUND_TEXT' file='xmlerror' value='5002' type='xmlParserErrors' info='5002'/>
-    <enum name='XML_CHECK_NAME_NOT_NULL' file='xmlerror' value='5037' type='xmlParserErrors' info='5037'/>
-    <enum name='XML_CHECK_NOT_ATTR' file='xmlerror' value='5023' type='xmlParserErrors' info='5023'/>
-    <enum name='XML_CHECK_NOT_ATTR_DECL' file='xmlerror' value='5024' type='xmlParserErrors' info='5024'/>
-    <enum name='XML_CHECK_NOT_DTD' file='xmlerror' value='5022' type='xmlParserErrors' info='5022'/>
-    <enum name='XML_CHECK_NOT_ELEM_DECL' file='xmlerror' value='5025' type='xmlParserErrors' info='5025'/>
-    <enum name='XML_CHECK_NOT_ENTITY_DECL' file='xmlerror' value='5026' type='xmlParserErrors' info='5026'/>
-    <enum name='XML_CHECK_NOT_NCNAME' file='xmlerror' value='5034' type='xmlParserErrors' info='5034'/>
-    <enum name='XML_CHECK_NOT_NS_DECL' file='xmlerror' value='5027' type='xmlParserErrors' info='5027'/>
-    <enum name='XML_CHECK_NOT_UTF8' file='xmlerror' value='5032' type='xmlParserErrors' info='5032'/>
-    <enum name='XML_CHECK_NO_DICT' file='xmlerror' value='5033' type='xmlParserErrors' info='5033'/>
-    <enum name='XML_CHECK_NO_DOC' file='xmlerror' value='5014' type='xmlParserErrors' info='5014'/>
-    <enum name='XML_CHECK_NO_ELEM' file='xmlerror' value='5016' type='xmlParserErrors' info='5016'/>
-    <enum name='XML_CHECK_NO_HREF' file='xmlerror' value='5028' type='xmlParserErrors' info='5028'/>
-    <enum name='XML_CHECK_NO_NAME' file='xmlerror' value='5015' type='xmlParserErrors' info='5015'/>
-    <enum name='XML_CHECK_NO_NEXT' file='xmlerror' value='5020' type='xmlParserErrors' info='5020'/>
-    <enum name='XML_CHECK_NO_PARENT' file='xmlerror' value='5013' type='xmlParserErrors' info='5013'/>
-    <enum name='XML_CHECK_NO_PREV' file='xmlerror' value='5018' type='xmlParserErrors' info='5018'/>
-    <enum name='XML_CHECK_NS_ANCESTOR' file='xmlerror' value='5031' type='xmlParserErrors' info='5031'/>
-    <enum name='XML_CHECK_NS_SCOPE' file='xmlerror' value='5030' type='xmlParserErrors' info='5030'/>
-    <enum name='XML_CHECK_OUTSIDE_DICT' file='xmlerror' value='5035' type='xmlParserErrors' info='5035'/>
-    <enum name='XML_CHECK_UNKNOWN_NODE' file='xmlerror' value='5011' type='xmlParserErrors' info='5011'/>
-    <enum name='XML_CHECK_WRONG_DOC' file='xmlerror' value='5017' type='xmlParserErrors' info='5017'/>
-    <enum name='XML_CHECK_WRONG_NAME' file='xmlerror' value='5036' type='xmlParserErrors' info='5036'/>
-    <enum name='XML_CHECK_WRONG_NEXT' file='xmlerror' value='5021' type='xmlParserErrors' info='5021'/>
-    <enum name='XML_CHECK_WRONG_PARENT' file='xmlerror' value='5029' type='xmlParserErrors' info='5029'/>
-    <enum name='XML_CHECK_WRONG_PREV' file='xmlerror' value='5019' type='xmlParserErrors' info='5019'/>
-    <enum name='XML_COMMENT_NODE' file='tree' value='8' type='xmlElementType'/>
-    <enum name='XML_DOCUMENT_FRAG_NODE' file='tree' value='11' type='xmlElementType'/>
-    <enum name='XML_DOCUMENT_NODE' file='tree' value='9' type='xmlElementType'/>
-    <enum name='XML_DOCUMENT_TYPE_NODE' file='tree' value='10' type='xmlElementType' info='unused'/>
-    <enum name='XML_DOC_DTDVALID' file='tree' value='8' type='xmlDocProperties' info='DTD validation was successful'/>
-    <enum name='XML_DOC_HTML' file='tree' value='128' type='xmlDocProperties' info=' parsed or built HTML document'/>
-    <enum name='XML_DOC_INTERNAL' file='tree' value='64' type='xmlDocProperties' info='built for internal processing'/>
-    <enum name='XML_DOC_NSVALID' file='tree' value='2' type='xmlDocProperties' info='document is Namespace valid'/>
-    <enum name='XML_DOC_OLD10' file='tree' value='4' type='xmlDocProperties' info='parsed with old XML-1.0 parser'/>
-    <enum name='XML_DOC_USERBUILT' file='tree' value='32' type='xmlDocProperties' info='Document was built using the API
-and not by parsing an instance'/>
-    <enum name='XML_DOC_WELLFORMED' file='tree' value='1' type='xmlDocProperties' info='document is XML well formed'/>
-    <enum name='XML_DOC_XINCLUDE' file='tree' value='16' type='xmlDocProperties' info='XInclude substitution was done'/>
-    <enum name='XML_DTD_ATTRIBUTE_DEFAULT' file='xmlerror' value='500' type='xmlParserErrors'/>
-    <enum name='XML_DTD_ATTRIBUTE_REDEFINED' file='xmlerror' value='501' type='xmlParserErrors' info='501'/>
-    <enum name='XML_DTD_ATTRIBUTE_VALUE' file='xmlerror' value='502' type='xmlParserErrors' info='502'/>
-    <enum name='XML_DTD_CONTENT_ERROR' file='xmlerror' value='503' type='xmlParserErrors' info='503'/>
-    <enum name='XML_DTD_CONTENT_MODEL' file='xmlerror' value='504' type='xmlParserErrors' info='504'/>
-    <enum name='XML_DTD_CONTENT_NOT_DETERMINIST' file='xmlerror' value='505' type='xmlParserErrors' info='505'/>
-    <enum name='XML_DTD_DIFFERENT_PREFIX' file='xmlerror' value='506' type='xmlParserErrors' info='506'/>
-    <enum name='XML_DTD_DUP_TOKEN' file='xmlerror' value='541' type='xmlParserErrors' info='541'/>
-    <enum name='XML_DTD_ELEM_DEFAULT_NAMESPACE' file='xmlerror' value='507' type='xmlParserErrors' info='507'/>
-    <enum name='XML_DTD_ELEM_NAMESPACE' file='xmlerror' value='508' type='xmlParserErrors' info='508'/>
-    <enum name='XML_DTD_ELEM_REDEFINED' file='xmlerror' value='509' type='xmlParserErrors' info='509'/>
-    <enum name='XML_DTD_EMPTY_NOTATION' file='xmlerror' value='510' type='xmlParserErrors' info='510'/>
-    <enum name='XML_DTD_ENTITY_TYPE' file='xmlerror' value='511' type='xmlParserErrors' info='511'/>
-    <enum name='XML_DTD_ID_FIXED' file='xmlerror' value='512' type='xmlParserErrors' info='512'/>
-    <enum name='XML_DTD_ID_REDEFINED' file='xmlerror' value='513' type='xmlParserErrors' info='513'/>
-    <enum name='XML_DTD_ID_SUBSET' file='xmlerror' value='514' type='xmlParserErrors' info='514'/>
-    <enum name='XML_DTD_INVALID_CHILD' file='xmlerror' value='515' type='xmlParserErrors' info='515'/>
-    <enum name='XML_DTD_INVALID_DEFAULT' file='xmlerror' value='516' type='xmlParserErrors' info='516'/>
-    <enum name='XML_DTD_LOAD_ERROR' file='xmlerror' value='517' type='xmlParserErrors' info='517'/>
-    <enum name='XML_DTD_MISSING_ATTRIBUTE' file='xmlerror' value='518' type='xmlParserErrors' info='518'/>
-    <enum name='XML_DTD_MIXED_CORRUPT' file='xmlerror' value='519' type='xmlParserErrors' info='519'/>
-    <enum name='XML_DTD_MULTIPLE_ID' file='xmlerror' value='520' type='xmlParserErrors' info='520'/>
-    <enum name='XML_DTD_NODE' file='tree' value='14' type='xmlElementType'/>
-    <enum name='XML_DTD_NOTATION_REDEFINED' file='xmlerror' value='526' type='xmlParserErrors' info='526'/>
-    <enum name='XML_DTD_NOTATION_VALUE' file='xmlerror' value='527' type='xmlParserErrors' info='527'/>
-    <enum name='XML_DTD_NOT_EMPTY' file='xmlerror' value='528' type='xmlParserErrors' info='528'/>
-    <enum name='XML_DTD_NOT_PCDATA' file='xmlerror' value='529' type='xmlParserErrors' info='529'/>
-    <enum name='XML_DTD_NOT_STANDALONE' file='xmlerror' value='530' type='xmlParserErrors' info='530'/>
-    <enum name='XML_DTD_NO_DOC' file='xmlerror' value='521' type='xmlParserErrors' info='521'/>
-    <enum name='XML_DTD_NO_DTD' file='xmlerror' value='522' type='xmlParserErrors' info='522'/>
-    <enum name='XML_DTD_NO_ELEM_NAME' file='xmlerror' value='523' type='xmlParserErrors' info='523'/>
-    <enum name='XML_DTD_NO_PREFIX' file='xmlerror' value='524' type='xmlParserErrors' info='524'/>
-    <enum name='XML_DTD_NO_ROOT' file='xmlerror' value='525' type='xmlParserErrors' info='525'/>
-    <enum name='XML_DTD_ROOT_NAME' file='xmlerror' value='531' type='xmlParserErrors' info='531'/>
-    <enum name='XML_DTD_STANDALONE_DEFAULTED' file='xmlerror' value='538' type='xmlParserErrors' info='538'/>
-    <enum name='XML_DTD_STANDALONE_WHITE_SPACE' file='xmlerror' value='532' type='xmlParserErrors' info='532'/>
-    <enum name='XML_DTD_UNKNOWN_ATTRIBUTE' file='xmlerror' value='533' type='xmlParserErrors' info='533'/>
-    <enum name='XML_DTD_UNKNOWN_ELEM' file='xmlerror' value='534' type='xmlParserErrors' info='534'/>
-    <enum name='XML_DTD_UNKNOWN_ENTITY' file='xmlerror' value='535' type='xmlParserErrors' info='535'/>
-    <enum name='XML_DTD_UNKNOWN_ID' file='xmlerror' value='536' type='xmlParserErrors' info='536'/>
-    <enum name='XML_DTD_UNKNOWN_NOTATION' file='xmlerror' value='537' type='xmlParserErrors' info='537'/>
-    <enum name='XML_DTD_XMLID_TYPE' file='xmlerror' value='540' type='xmlParserErrors' info='540'/>
-    <enum name='XML_DTD_XMLID_VALUE' file='xmlerror' value='539' type='xmlParserErrors' info='539'/>
-    <enum name='XML_ELEMENT_CONTENT_ELEMENT' file='tree' value='2' type='xmlElementContentType'/>
-    <enum name='XML_ELEMENT_CONTENT_MULT' file='tree' value='3' type='xmlElementContentOccur'/>
-    <enum name='XML_ELEMENT_CONTENT_ONCE' file='tree' value='1' type='xmlElementContentOccur'/>
-    <enum name='XML_ELEMENT_CONTENT_OPT' file='tree' value='2' type='xmlElementContentOccur'/>
-    <enum name='XML_ELEMENT_CONTENT_OR' file='tree' value='4' type='xmlElementContentType'/>
-    <enum name='XML_ELEMENT_CONTENT_PCDATA' file='tree' value='1' type='xmlElementContentType'/>
-    <enum name='XML_ELEMENT_CONTENT_PLUS' file='tree' value='4' type='xmlElementContentOccur'/>
-    <enum name='XML_ELEMENT_CONTENT_SEQ' file='tree' value='3' type='xmlElementContentType'/>
-    <enum name='XML_ELEMENT_DECL' file='tree' value='15' type='xmlElementType'/>
-    <enum name='XML_ELEMENT_NODE' file='tree' value='1' type='xmlElementType'/>
-    <enum name='XML_ELEMENT_TYPE_ANY' file='tree' value='2' type='xmlElementTypeVal'/>
-    <enum name='XML_ELEMENT_TYPE_ELEMENT' file='tree' value='4' type='xmlElementTypeVal'/>
-    <enum name='XML_ELEMENT_TYPE_EMPTY' file='tree' value='1' type='xmlElementTypeVal'/>
-    <enum name='XML_ELEMENT_TYPE_MIXED' file='tree' value='3' type='xmlElementTypeVal'/>
-    <enum name='XML_ELEMENT_TYPE_UNDEFINED' file='tree' value='0' type='xmlElementTypeVal'/>
-    <enum name='XML_ENC_ERR_INPUT' file='encoding' value='-2' type='xmlCharEncError'/>
-    <enum name='XML_ENC_ERR_INTERNAL' file='encoding' value='-1' type='xmlCharEncError'/>
-    <enum name='XML_ENC_ERR_MEMORY' file='encoding' value='-4' type='xmlCharEncError'/>
-    <enum name='XML_ENC_ERR_SPACE' file='encoding' value='-3' type='xmlCharEncError'/>
-    <enum name='XML_ENC_ERR_SUCCESS' file='encoding' value='0' type='xmlCharEncError'/>
-    <enum name='XML_ENC_INPUT' file='encoding' value='1' type='xmlCharEncFlags'/>
-    <enum name='XML_ENC_OUTPUT' file='encoding' value='2' type='xmlCharEncFlags'/>
-    <enum name='XML_ENTITY_DECL' file='tree' value='17' type='xmlElementType'/>
-    <enum name='XML_ENTITY_NODE' file='tree' value='6' type='xmlElementType' info='unused'/>
-    <enum name='XML_ENTITY_REF_NODE' file='tree' value='5' type='xmlElementType'/>
-    <enum name='XML_ERR_ARGUMENT' file='xmlerror' value='115' type='xmlParserErrors' info='115'/>
-    <enum name='XML_ERR_ATTLIST_NOT_FINISHED' file='xmlerror' value='51' type='xmlParserErrors' info='51'/>
-    <enum name='XML_ERR_ATTLIST_NOT_STARTED' file='xmlerror' value='50' type='xmlParserErrors' info='50'/>
-    <enum name='XML_ERR_ATTRIBUTE_NOT_FINISHED' file='xmlerror' value='40' type='xmlParserErrors' info='40'/>
-    <enum name='XML_ERR_ATTRIBUTE_NOT_STARTED' file='xmlerror' value='39' type='xmlParserErrors' info='39'/>
-    <enum name='XML_ERR_ATTRIBUTE_REDEFINED' file='xmlerror' value='42' type='xmlParserErrors' info='42'/>
-    <enum name='XML_ERR_ATTRIBUTE_WITHOUT_VALUE' file='xmlerror' value='41' type='xmlParserErrors' info='41'/>
-    <enum name='XML_ERR_CDATA_NOT_FINISHED' file='xmlerror' value='63' type='xmlParserErrors' info='63'/>
-    <enum name='XML_ERR_CHARREF_AT_EOF' file='xmlerror' value='10' type='xmlParserErrors' info='10'/>
-    <enum name='XML_ERR_CHARREF_IN_DTD' file='xmlerror' value='13' type='xmlParserErrors' info='13'/>
-    <enum name='XML_ERR_CHARREF_IN_EPILOG' file='xmlerror' value='12' type='xmlParserErrors' info='12'/>
-    <enum name='XML_ERR_CHARREF_IN_PROLOG' file='xmlerror' value='11' type='xmlParserErrors' info='11'/>
-    <enum name='XML_ERR_COMMENT_ABRUPTLY_ENDED' file='xmlerror' value='112' type='xmlParserErrors' info='112'/>
-    <enum name='XML_ERR_COMMENT_NOT_FINISHED' file='xmlerror' value='45' type='xmlParserErrors' info='45'/>
-    <enum name='XML_ERR_CONDSEC_INVALID' file='xmlerror' value='83' type='xmlParserErrors' info='83'/>
-    <enum name='XML_ERR_CONDSEC_INVALID_KEYWORD' file='xmlerror' value='95' type='xmlParserErrors' info='95'/>
-    <enum name='XML_ERR_CONDSEC_NOT_FINISHED' file='xmlerror' value='59' type='xmlParserErrors' info='59'/>
-    <enum name='XML_ERR_CONDSEC_NOT_STARTED' file='xmlerror' value='58' type='xmlParserErrors' info='58'/>
-    <enum name='XML_ERR_DOCTYPE_NOT_FINISHED' file='xmlerror' value='61' type='xmlParserErrors' info='61'/>
-    <enum name='XML_ERR_DOCUMENT_EMPTY' file='xmlerror' value='4' type='xmlParserErrors' info='4'/>
-    <enum name='XML_ERR_DOCUMENT_END' file='xmlerror' value='5' type='xmlParserErrors' info='5'/>
-    <enum name='XML_ERR_DOCUMENT_START' file='xmlerror' value='3' type='xmlParserErrors' info='3'/>
-    <enum name='XML_ERR_ELEMCONTENT_NOT_FINISHED' file='xmlerror' value='55' type='xmlParserErrors' info='55'/>
-    <enum name='XML_ERR_ELEMCONTENT_NOT_STARTED' file='xmlerror' value='54' type='xmlParserErrors' info='54'/>
-    <enum name='XML_ERR_ENCODING_NAME' file='xmlerror' value='79' type='xmlParserErrors' info='79'/>
-    <enum name='XML_ERR_ENTITYREF_AT_EOF' file='xmlerror' value='14' type='xmlParserErrors' info='14'/>
-    <enum name='XML_ERR_ENTITYREF_IN_DTD' file='xmlerror' value='17' type='xmlParserErrors' info='17'/>
-    <enum name='XML_ERR_ENTITYREF_IN_EPILOG' file='xmlerror' value='16' type='xmlParserErrors' info='16'/>
-    <enum name='XML_ERR_ENTITYREF_IN_PROLOG' file='xmlerror' value='15' type='xmlParserErrors' info='15'/>
-    <enum name='XML_ERR_ENTITYREF_NO_NAME' file='xmlerror' value='22' type='xmlParserErrors' info='22'/>
-    <enum name='XML_ERR_ENTITYREF_SEMICOL_MISSING' file='xmlerror' value='23' type='xmlParserErrors' info='23'/>
-    <enum name='XML_ERR_ENTITY_BOUNDARY' file='xmlerror' value='90' type='xmlParserErrors' info='90'/>
-    <enum name='XML_ERR_ENTITY_CHAR_ERROR' file='xmlerror' value='87' type='xmlParserErrors' info='87'/>
-    <enum name='XML_ERR_ENTITY_IS_EXTERNAL' file='xmlerror' value='29' type='xmlParserErrors' info='29'/>
-    <enum name='XML_ERR_ENTITY_IS_PARAMETER' file='xmlerror' value='30' type='xmlParserErrors' info='30'/>
-    <enum name='XML_ERR_ENTITY_LOOP' file='xmlerror' value='89' type='xmlParserErrors' info='89'/>
-    <enum name='XML_ERR_ENTITY_NOT_FINISHED' file='xmlerror' value='37' type='xmlParserErrors' info='37'/>
-    <enum name='XML_ERR_ENTITY_NOT_STARTED' file='xmlerror' value='36' type='xmlParserErrors' info='36'/>
-    <enum name='XML_ERR_ENTITY_PE_INTERNAL' file='xmlerror' value='88' type='xmlParserErrors' info='88'/>
-    <enum name='XML_ERR_ENTITY_PROCESSING' file='xmlerror' value='104' type='xmlParserErrors' info='104'/>
-    <enum name='XML_ERR_EQUAL_REQUIRED' file='xmlerror' value='75' type='xmlParserErrors' info='75'/>
-    <enum name='XML_ERR_ERROR' file='xmlerror' value='2' type='xmlErrorLevel' info='A recoverable error'/>
-    <enum name='XML_ERR_EXTRA_CONTENT' file='xmlerror' value='86' type='xmlParserErrors' info='86'/>
-    <enum name='XML_ERR_EXT_ENTITY_STANDALONE' file='xmlerror' value='82' type='xmlParserErrors' info='82'/>
-    <enum name='XML_ERR_EXT_SUBSET_NOT_FINISHED' file='xmlerror' value='60' type='xmlParserErrors' info='60'/>
-    <enum name='XML_ERR_FATAL' file='xmlerror' value='3' type='xmlErrorLevel' info=' A fatal error'/>
-    <enum name='XML_ERR_GT_REQUIRED' file='xmlerror' value='73' type='xmlParserErrors' info='73'/>
-    <enum name='XML_ERR_HYPHEN_IN_COMMENT' file='xmlerror' value='80' type='xmlParserErrors' info='80'/>
-    <enum name='XML_ERR_INTERNAL_ERROR' file='xmlerror' value='1' type='xmlParserErrors' info='1'/>
-    <enum name='XML_ERR_INT_SUBSET_NOT_FINISHED' file='xmlerror' value='118' type='xmlParserErrors' info='118'/>
-    <enum name='XML_ERR_INVALID_CHAR' file='xmlerror' value='9' type='xmlParserErrors' info='9'/>
-    <enum name='XML_ERR_INVALID_CHARREF' file='xmlerror' value='8' type='xmlParserErrors' info='8'/>
-    <enum name='XML_ERR_INVALID_DEC_CHARREF' file='xmlerror' value='7' type='xmlParserErrors' info='7'/>
-    <enum name='XML_ERR_INVALID_ENCODING' file='xmlerror' value='81' type='xmlParserErrors' info='81'/>
-    <enum name='XML_ERR_INVALID_HEX_CHARREF' file='xmlerror' value='6' type='xmlParserErrors' info='6'/>
-    <enum name='XML_ERR_INVALID_URI' file='xmlerror' value='91' type='xmlParserErrors' info='91'/>
-    <enum name='XML_ERR_LITERAL_NOT_FINISHED' file='xmlerror' value='44' type='xmlParserErrors' info='44'/>
-    <enum name='XML_ERR_LITERAL_NOT_STARTED' file='xmlerror' value='43' type='xmlParserErrors' info='43'/>
-    <enum name='XML_ERR_LTSLASH_REQUIRED' file='xmlerror' value='74' type='xmlParserErrors' info='74'/>
-    <enum name='XML_ERR_LT_IN_ATTRIBUTE' file='xmlerror' value='38' type='xmlParserErrors' info='38'/>
-    <enum name='XML_ERR_LT_REQUIRED' file='xmlerror' value='72' type='xmlParserErrors' info='72'/>
-    <enum name='XML_ERR_MISPLACED_CDATA_END' file='xmlerror' value='62' type='xmlParserErrors' info='62'/>
-    <enum name='XML_ERR_MISSING_ENCODING' file='xmlerror' value='101' type='xmlParserErrors' info='101'/>
-    <enum name='XML_ERR_MIXED_NOT_FINISHED' file='xmlerror' value='53' type='xmlParserErrors' info='53'/>
-    <enum name='XML_ERR_MIXED_NOT_STARTED' file='xmlerror' value='52' type='xmlParserErrors' info='52'/>
-    <enum name='XML_ERR_NAME_REQUIRED' file='xmlerror' value='68' type='xmlParserErrors' info='68'/>
-    <enum name='XML_ERR_NAME_TOO_LONG' file='xmlerror' value='110' type='xmlParserErrors' info='110'/>
-    <enum name='XML_ERR_NMTOKEN_REQUIRED' file='xmlerror' value='67' type='xmlParserErrors' info='67'/>
-    <enum name='XML_ERR_NONE' file='xmlerror' value='0' type='xmlErrorLevel'/>
-    <enum name='XML_ERR_NOTATION_NOT_FINISHED' file='xmlerror' value='49' type='xmlParserErrors' info='49'/>
-    <enum name='XML_ERR_NOTATION_NOT_STARTED' file='xmlerror' value='48' type='xmlParserErrors' info='48'/>
-    <enum name='XML_ERR_NOTATION_PROCESSING' file='xmlerror' value='105' type='xmlParserErrors' info='105'/>
-    <enum name='XML_ERR_NOT_STANDALONE' file='xmlerror' value='103' type='xmlParserErrors' info='103'/>
-    <enum name='XML_ERR_NOT_WELL_BALANCED' file='xmlerror' value='85' type='xmlParserErrors' info='85'/>
-    <enum name='XML_ERR_NO_DTD' file='xmlerror' value='94' type='xmlParserErrors' info='94'/>
-    <enum name='XML_ERR_NO_MEMORY' file='xmlerror' value='2' type='xmlParserErrors' info='2'/>
-    <enum name='XML_ERR_NS_DECL_ERROR' file='xmlerror' value='35' type='xmlParserErrors' info='35'/>
-    <enum name='XML_ERR_OK' file='xmlerror' value='0' type='xmlParserErrors'/>
-    <enum name='XML_ERR_PCDATA_REQUIRED' file='xmlerror' value='69' type='xmlParserErrors' info='69'/>
-    <enum name='XML_ERR_PEREF_AT_EOF' file='xmlerror' value='18' type='xmlParserErrors' info='18'/>
-    <enum name='XML_ERR_PEREF_IN_EPILOG' file='xmlerror' value='20' type='xmlParserErrors' info='20'/>
-    <enum name='XML_ERR_PEREF_IN_INT_SUBSET' file='xmlerror' value='21' type='xmlParserErrors' info='21'/>
-    <enum name='XML_ERR_PEREF_IN_PROLOG' file='xmlerror' value='19' type='xmlParserErrors' info='19'/>
-    <enum name='XML_ERR_PEREF_NO_NAME' file='xmlerror' value='24' type='xmlParserErrors' info='24'/>
-    <enum name='XML_ERR_PEREF_SEMICOL_MISSING' file='xmlerror' value='25' type='xmlParserErrors' info='25'/>
-    <enum name='XML_ERR_PI_NOT_FINISHED' file='xmlerror' value='47' type='xmlParserErrors' info='47'/>
-    <enum name='XML_ERR_PI_NOT_STARTED' file='xmlerror' value='46' type='xmlParserErrors' info='46'/>
-    <enum name='XML_ERR_PUBID_REQUIRED' file='xmlerror' value='71' type='xmlParserErrors' info='71'/>
-    <enum name='XML_ERR_REDECL_PREDEF_ENTITY' file='xmlerror' value='117' type='xmlParserErrors' info='117'/>
-    <enum name='XML_ERR_RESERVED_XML_NAME' file='xmlerror' value='64' type='xmlParserErrors' info='64'/>
-    <enum name='XML_ERR_RESOURCE_LIMIT' file='xmlerror' value='114' type='xmlParserErrors' info='114'/>
-    <enum name='XML_ERR_SEPARATOR_REQUIRED' file='xmlerror' value='66' type='xmlParserErrors' info='66'/>
-    <enum name='XML_ERR_SPACE_REQUIRED' file='xmlerror' value='65' type='xmlParserErrors' info='65'/>
-    <enum name='XML_ERR_STANDALONE_VALUE' file='xmlerror' value='78' type='xmlParserErrors' info='78'/>
-    <enum name='XML_ERR_STRING_NOT_CLOSED' file='xmlerror' value='34' type='xmlParserErrors' info='34'/>
-    <enum name='XML_ERR_STRING_NOT_STARTED' file='xmlerror' value='33' type='xmlParserErrors' info='33'/>
-    <enum name='XML_ERR_SYSTEM' file='xmlerror' value='116' type='xmlParserErrors' info='116'/>
-    <enum name='XML_ERR_TAG_NAME_MISMATCH' file='xmlerror' value='76' type='xmlParserErrors' info='76'/>
-    <enum name='XML_ERR_TAG_NOT_FINISHED' file='xmlerror' value='77' type='xmlParserErrors' info='77'/>
-    <enum name='XML_ERR_UNDECLARED_ENTITY' file='xmlerror' value='26' type='xmlParserErrors' info='26'/>
-    <enum name='XML_ERR_UNKNOWN_ENCODING' file='xmlerror' value='31' type='xmlParserErrors' info='31'/>
-    <enum name='XML_ERR_UNKNOWN_VERSION' file='xmlerror' value='108' type='xmlParserErrors' info='108'/>
-    <enum name='XML_ERR_UNPARSED_ENTITY' file='xmlerror' value='28' type='xmlParserErrors' info='28'/>
-    <enum name='XML_ERR_UNSUPPORTED_ENCODING' file='xmlerror' value='32' type='xmlParserErrors' info='32'/>
-    <enum name='XML_ERR_URI_FRAGMENT' file='xmlerror' value='92' type='xmlParserErrors' info='92'/>
-    <enum name='XML_ERR_URI_REQUIRED' file='xmlerror' value='70' type='xmlParserErrors' info='70'/>
-    <enum name='XML_ERR_USER_STOP' file='xmlerror' value='111' type='xmlParserErrors' info='111'/>
-    <enum name='XML_ERR_VALUE_REQUIRED' file='xmlerror' value='84' type='xmlParserErrors' info='84'/>
-    <enum name='XML_ERR_VERSION_MISMATCH' file='xmlerror' value='109' type='xmlParserErrors' info='109'/>
-    <enum name='XML_ERR_VERSION_MISSING' file='xmlerror' value='96' type='xmlParserErrors' info='96'/>
-    <enum name='XML_ERR_WARNING' file='xmlerror' value='1' type='xmlErrorLevel' info='A simple warning'/>
-    <enum name='XML_ERR_XMLDECL_NOT_FINISHED' file='xmlerror' value='57' type='xmlParserErrors' info='57'/>
-    <enum name='XML_ERR_XMLDECL_NOT_STARTED' file='xmlerror' value='56' type='xmlParserErrors' info='56'/>
-    <enum name='XML_EXTERNAL_GENERAL_PARSED_ENTITY' file='entities' value='2' type='xmlEntityType'/>
-    <enum name='XML_EXTERNAL_GENERAL_UNPARSED_ENTITY' file='entities' value='3' type='xmlEntityType'/>
-    <enum name='XML_EXTERNAL_PARAMETER_ENTITY' file='entities' value='5' type='xmlEntityType'/>
-    <enum name='XML_FROM_BUFFER' file='xmlerror' value='29' type='xmlErrorDomain' info='The buffers module'/>
-    <enum name='XML_FROM_C14N' file='xmlerror' value='21' type='xmlErrorDomain' info='The Canonicalization module'/>
-    <enum name='XML_FROM_CATALOG' file='xmlerror' value='20' type='xmlErrorDomain' info='The Catalog module'/>
-    <enum name='XML_FROM_CHECK' file='xmlerror' value='24' type='xmlErrorDomain' info='The error checking module'/>
-    <enum name='XML_FROM_DATATYPE' file='xmlerror' value='15' type='xmlErrorDomain' info='The W3C XML Schemas Datatype module'/>
-    <enum name='XML_FROM_DTD' file='xmlerror' value='4' type='xmlErrorDomain' info='The XML DTD validation with parser contex'/>
-    <enum name='XML_FROM_FTP' file='xmlerror' value='9' type='xmlErrorDomain' info='The FTP module'/>
-    <enum name='XML_FROM_HTML' file='xmlerror' value='5' type='xmlErrorDomain' info='The HTML parser'/>
-    <enum name='XML_FROM_HTTP' file='xmlerror' value='10' type='xmlErrorDomain' info='The HTTP module'/>
-    <enum name='XML_FROM_I18N' file='xmlerror' value='27' type='xmlErrorDomain' info='The module handling character conversion'/>
-    <enum name='XML_FROM_IO' file='xmlerror' value='8' type='xmlErrorDomain' info='The Input/Output stack'/>
-    <enum name='XML_FROM_MEMORY' file='xmlerror' value='6' type='xmlErrorDomain' info='The memory allocator'/>
-    <enum name='XML_FROM_MODULE' file='xmlerror' value='26' type='xmlErrorDomain' info='The dynamically loaded module modul'/>
-    <enum name='XML_FROM_NAMESPACE' file='xmlerror' value='3' type='xmlErrorDomain' info='The XML Namespace module'/>
-    <enum name='XML_FROM_NONE' file='xmlerror' value='0' type='xmlErrorDomain'/>
-    <enum name='XML_FROM_OUTPUT' file='xmlerror' value='7' type='xmlErrorDomain' info='The serialization code'/>
-    <enum name='XML_FROM_PARSER' file='xmlerror' value='1' type='xmlErrorDomain' info='The XML parser'/>
-    <enum name='XML_FROM_REGEXP' file='xmlerror' value='14' type='xmlErrorDomain' info='The regular expressions module'/>
-    <enum name='XML_FROM_RELAXNGP' file='xmlerror' value='18' type='xmlErrorDomain' info='The Relax-NG parser module'/>
-    <enum name='XML_FROM_RELAXNGV' file='xmlerror' value='19' type='xmlErrorDomain' info='The Relax-NG validator module'/>
-    <enum name='XML_FROM_SCHEMASP' file='xmlerror' value='16' type='xmlErrorDomain' info='The W3C XML Schemas parser module'/>
-    <enum name='XML_FROM_SCHEMASV' file='xmlerror' value='17' type='xmlErrorDomain' info='The W3C XML Schemas validation module'/>
-    <enum name='XML_FROM_SCHEMATRONV' file='xmlerror' value='28' type='xmlErrorDomain' info='The Schematron validator module'/>
-    <enum name='XML_FROM_TREE' file='xmlerror' value='2' type='xmlErrorDomain' info='The tree module'/>
-    <enum name='XML_FROM_URI' file='xmlerror' value='30' type='xmlErrorDomain' info=' The URI module'/>
-    <enum name='XML_FROM_VALID' file='xmlerror' value='23' type='xmlErrorDomain' info='The XML DTD validation with valid context'/>
-    <enum name='XML_FROM_WRITER' file='xmlerror' value='25' type='xmlErrorDomain' info='The xmlwriter module'/>
-    <enum name='XML_FROM_XINCLUDE' file='xmlerror' value='11' type='xmlErrorDomain' info='The XInclude processing'/>
-    <enum name='XML_FROM_XPATH' file='xmlerror' value='12' type='xmlErrorDomain' info='The XPath module'/>
-    <enum name='XML_FROM_XPOINTER' file='xmlerror' value='13' type='xmlErrorDomain' info='The XPointer module'/>
-    <enum name='XML_FROM_XSLT' file='xmlerror' value='22' type='xmlErrorDomain' info='The XSLT engine from libxslt'/>
-    <enum name='XML_FTP_ACCNT' file='xmlerror' value='2002' type='xmlParserErrors' info='2002'/>
-    <enum name='XML_FTP_EPSV_ANSWER' file='xmlerror' value='2001' type='xmlParserErrors' info='2001'/>
-    <enum name='XML_FTP_PASV_ANSWER' file='xmlerror' value='2000' type='xmlParserErrors'/>
-    <enum name='XML_FTP_URL_SYNTAX' file='xmlerror' value='2003' type='xmlParserErrors' info='2003'/>
-    <enum name='XML_HTML_DOCUMENT_NODE' file='tree' value='13' type='xmlElementType'/>
-    <enum name='XML_HTML_INCORRECTLY_OPENED_COMMENT' file='xmlerror' value='802' type='xmlParserErrors' info='802'/>
-    <enum name='XML_HTML_STRUCURE_ERROR' file='xmlerror' value='800' type='xmlParserErrors'/>
-    <enum name='XML_HTML_UNKNOWN_TAG' file='xmlerror' value='801' type='xmlParserErrors' info='801'/>
-    <enum name='XML_HTTP_UNKNOWN_HOST' file='xmlerror' value='2022' type='xmlParserErrors' info='2022'/>
-    <enum name='XML_HTTP_URL_SYNTAX' file='xmlerror' value='2020' type='xmlParserErrors'/>
-    <enum name='XML_HTTP_USE_IP' file='xmlerror' value='2021' type='xmlParserErrors' info='2021'/>
-    <enum name='XML_I18N_CONV_FAILED' file='xmlerror' value='6003' type='xmlParserErrors' info='6003'/>
-    <enum name='XML_I18N_EXCESS_HANDLER' file='xmlerror' value='6002' type='xmlParserErrors' info='6002'/>
-    <enum name='XML_I18N_NO_HANDLER' file='xmlerror' value='6001' type='xmlParserErrors' info='6001'/>
-    <enum name='XML_I18N_NO_NAME' file='xmlerror' value='6000' type='xmlParserErrors'/>
-    <enum name='XML_I18N_NO_OUTPUT' file='xmlerror' value='6004' type='xmlParserErrors' info='6004'/>
-    <enum name='XML_INPUT_BUF_STATIC' file='parser' value='2' type='xmlParserInputFlags'/>
-    <enum name='XML_INPUT_BUF_ZERO_TERMINATED' file='parser' value='4' type='xmlParserInputFlags'/>
-    <enum name='XML_INPUT_NETWORK' file='parser' value='16' type='xmlParserInputFlags'/>
-    <enum name='XML_INPUT_UNZIP' file='parser' value='8' type='xmlParserInputFlags'/>
-    <enum name='XML_INTERNAL_GENERAL_ENTITY' file='entities' value='1' type='xmlEntityType'/>
-    <enum name='XML_INTERNAL_PARAMETER_ENTITY' file='entities' value='4' type='xmlEntityType'/>
-    <enum name='XML_INTERNAL_PREDEFINED_ENTITY' file='entities' value='6' type='xmlEntityType'/>
-    <enum name='XML_IO_BUFFER_FULL' file='xmlerror' value='1548' type='xmlParserErrors' info='1548'/>
-    <enum name='XML_IO_EACCES' file='xmlerror' value='1501' type='xmlParserErrors' info='1501'/>
-    <enum name='XML_IO_EADDRINUSE' file='xmlerror' value='1554' type='xmlParserErrors' info='1554'/>
-    <enum name='XML_IO_EAFNOSUPPORT' file='xmlerror' value='1556' type='xmlParserErrors' info='1556'/>
-    <enum name='XML_IO_EAGAIN' file='xmlerror' value='1502' type='xmlParserErrors' info='1502'/>
-    <enum name='XML_IO_EALREADY' file='xmlerror' value='1555' type='xmlParserErrors' info='1555'/>
-    <enum name='XML_IO_EBADF' file='xmlerror' value='1503' type='xmlParserErrors' info='1503'/>
-    <enum name='XML_IO_EBADMSG' file='xmlerror' value='1504' type='xmlParserErrors' info='1504'/>
-    <enum name='XML_IO_EBUSY' file='xmlerror' value='1505' type='xmlParserErrors' info='1505'/>
-    <enum name='XML_IO_ECANCELED' file='xmlerror' value='1506' type='xmlParserErrors' info='1506'/>
-    <enum name='XML_IO_ECHILD' file='xmlerror' value='1507' type='xmlParserErrors' info='1507'/>
-    <enum name='XML_IO_ECONNREFUSED' file='xmlerror' value='1552' type='xmlParserErrors' info='1552'/>
-    <enum name='XML_IO_EDEADLK' file='xmlerror' value='1508' type='xmlParserErrors' info='1508'/>
-    <enum name='XML_IO_EDOM' file='xmlerror' value='1509' type='xmlParserErrors' info='1509'/>
-    <enum name='XML_IO_EEXIST' file='xmlerror' value='1510' type='xmlParserErrors' info='1510'/>
-    <enum name='XML_IO_EFAULT' file='xmlerror' value='1511' type='xmlParserErrors' info='1511'/>
-    <enum name='XML_IO_EFBIG' file='xmlerror' value='1512' type='xmlParserErrors' info='1512'/>
-    <enum name='XML_IO_EINPROGRESS' file='xmlerror' value='1513' type='xmlParserErrors' info='1513'/>
-    <enum name='XML_IO_EINTR' file='xmlerror' value='1514' type='xmlParserErrors' info='1514'/>
-    <enum name='XML_IO_EINVAL' file='xmlerror' value='1515' type='xmlParserErrors' info='1515'/>
-    <enum name='XML_IO_EIO' file='xmlerror' value='1516' type='xmlParserErrors' info='1516'/>
-    <enum name='XML_IO_EISCONN' file='xmlerror' value='1551' type='xmlParserErrors' info='1551'/>
-    <enum name='XML_IO_EISDIR' file='xmlerror' value='1517' type='xmlParserErrors' info='1517'/>
-    <enum name='XML_IO_EMFILE' file='xmlerror' value='1518' type='xmlParserErrors' info='1518'/>
-    <enum name='XML_IO_EMLINK' file='xmlerror' value='1519' type='xmlParserErrors' info='1519'/>
-    <enum name='XML_IO_EMSGSIZE' file='xmlerror' value='1520' type='xmlParserErrors' info='1520'/>
-    <enum name='XML_IO_ENAMETOOLONG' file='xmlerror' value='1521' type='xmlParserErrors' info='1521'/>
-    <enum name='XML_IO_ENCODER' file='xmlerror' value='1544' type='xmlParserErrors' info='1544'/>
-    <enum name='XML_IO_ENETUNREACH' file='xmlerror' value='1553' type='xmlParserErrors' info='1553'/>
-    <enum name='XML_IO_ENFILE' file='xmlerror' value='1522' type='xmlParserErrors' info='1522'/>
-    <enum name='XML_IO_ENODEV' file='xmlerror' value='1523' type='xmlParserErrors' info='1523'/>
-    <enum name='XML_IO_ENOENT' file='xmlerror' value='1524' type='xmlParserErrors' info='1524'/>
-    <enum name='XML_IO_ENOEXEC' file='xmlerror' value='1525' type='xmlParserErrors' info='1525'/>
-    <enum name='XML_IO_ENOLCK' file='xmlerror' value='1526' type='xmlParserErrors' info='1526'/>
-    <enum name='XML_IO_ENOMEM' file='xmlerror' value='1527' type='xmlParserErrors' info='1527'/>
-    <enum name='XML_IO_ENOSPC' file='xmlerror' value='1528' type='xmlParserErrors' info='1528'/>
-    <enum name='XML_IO_ENOSYS' file='xmlerror' value='1529' type='xmlParserErrors' info='1529'/>
-    <enum name='XML_IO_ENOTDIR' file='xmlerror' value='1530' type='xmlParserErrors' info='1530'/>
-    <enum name='XML_IO_ENOTEMPTY' file='xmlerror' value='1531' type='xmlParserErrors' info='1531'/>
-    <enum name='XML_IO_ENOTSOCK' file='xmlerror' value='1550' type='xmlParserErrors' info='1550'/>
-    <enum name='XML_IO_ENOTSUP' file='xmlerror' value='1532' type='xmlParserErrors' info='1532'/>
-    <enum name='XML_IO_ENOTTY' file='xmlerror' value='1533' type='xmlParserErrors' info='1533'/>
-    <enum name='XML_IO_ENXIO' file='xmlerror' value='1534' type='xmlParserErrors' info='1534'/>
-    <enum name='XML_IO_EPERM' file='xmlerror' value='1535' type='xmlParserErrors' info='1535'/>
-    <enum name='XML_IO_EPIPE' file='xmlerror' value='1536' type='xmlParserErrors' info='1536'/>
-    <enum name='XML_IO_ERANGE' file='xmlerror' value='1537' type='xmlParserErrors' info='1537'/>
-    <enum name='XML_IO_EROFS' file='xmlerror' value='1538' type='xmlParserErrors' info='1538'/>
-    <enum name='XML_IO_ESPIPE' file='xmlerror' value='1539' type='xmlParserErrors' info='1539'/>
-    <enum name='XML_IO_ESRCH' file='xmlerror' value='1540' type='xmlParserErrors' info='1540'/>
-    <enum name='XML_IO_ETIMEDOUT' file='xmlerror' value='1541' type='xmlParserErrors' info='1541'/>
-    <enum name='XML_IO_EXDEV' file='xmlerror' value='1542' type='xmlParserErrors' info='1542'/>
-    <enum name='XML_IO_FLUSH' file='xmlerror' value='1545' type='xmlParserErrors' info='1545'/>
-    <enum name='XML_IO_LOAD_ERROR' file='xmlerror' value='1549' type='xmlParserErrors' info='1549'/>
-    <enum name='XML_IO_NETWORK_ATTEMPT' file='xmlerror' value='1543' type='xmlParserErrors' info='1543'/>
-    <enum name='XML_IO_NO_INPUT' file='xmlerror' value='1547' type='xmlParserErrors' info='1547'/>
-    <enum name='XML_IO_UNKNOWN' file='xmlerror' value='1500' type='xmlParserErrors'/>
-    <enum name='XML_IO_UNSUPPORTED_PROTOCOL' file='xmlerror' value='1557' type='xmlParserErrors' info='1557'/>
-    <enum name='XML_IO_WRITE' file='xmlerror' value='1546' type='xmlParserErrors' info='1546'/>
-    <enum name='XML_MODULE_CLOSE' file='xmlerror' value='4901' type='xmlParserErrors' info='4901'/>
-    <enum name='XML_MODULE_LAZY' file='xmlmodule' value='1' type='xmlModuleOption' info='lazy binding'/>
-    <enum name='XML_MODULE_LOCAL' file='xmlmodule' value='2' type='xmlModuleOption' info=' local binding'/>
-    <enum name='XML_MODULE_OPEN' file='xmlerror' value='4900' type='xmlParserErrors' info='4900'/>
-    <enum name='XML_NAMESPACE_DECL' file='tree' value='18' type='xmlElementType'/>
-    <enum name='XML_NOTATION_NODE' file='tree' value='12' type='xmlElementType' info='unused'/>
-    <enum name='XML_NS_ERR_ATTRIBUTE_REDEFINED' file='xmlerror' value='203' type='xmlParserErrors' info='203'/>
-    <enum name='XML_NS_ERR_COLON' file='xmlerror' value='205' type='xmlParserErrors' info='205'/>
-    <enum name='XML_NS_ERR_EMPTY' file='xmlerror' value='204' type='xmlParserErrors' info='204'/>
-    <enum name='XML_NS_ERR_QNAME' file='xmlerror' value='202' type='xmlParserErrors' info='202'/>
-    <enum name='XML_NS_ERR_UNDEFINED_NAMESPACE' file='xmlerror' value='201' type='xmlParserErrors' info='201'/>
-    <enum name='XML_NS_ERR_XML_NAMESPACE' file='xmlerror' value='200' type='xmlParserErrors'/>
-    <enum name='XML_PARSER_ATTRIBUTE_VALUE' file='parser' value='12' type='xmlParserInputState' info='within an attribute value'/>
-    <enum name='XML_PARSER_CDATA_SECTION' file='parser' value='8' type='xmlParserInputState' info='within a CDATA section'/>
-    <enum name='XML_PARSER_COMMENT' file='parser' value='5' type='xmlParserInputState' info='within a comment'/>
-    <enum name='XML_PARSER_CONTENT' file='parser' value='7' type='xmlParserInputState' info='within the content'/>
-    <enum name='XML_PARSER_DEFAULTATTRS' file='xmlreader' value='2' type='xmlParserProperties'/>
-    <enum name='XML_PARSER_DTD' file='parser' value='3' type='xmlParserInputState' info='within some DTD content'/>
-    <enum name='XML_PARSER_END_TAG' file='parser' value='9' type='xmlParserInputState' info='within a closing tag'/>
-    <enum name='XML_PARSER_ENTITY_DECL' file='parser' value='10' type='xmlParserInputState' info='within an entity declaration'/>
-    <enum name='XML_PARSER_ENTITY_VALUE' file='parser' value='11' type='xmlParserInputState' info='within an entity value in a decl'/>
-    <enum name='XML_PARSER_EOF' file='parser' value='-1' type='xmlParserInputState' info='nothing is to be parsed'/>
-    <enum name='XML_PARSER_EPILOG' file='parser' value='14' type='xmlParserInputState' info='the Misc* after the last end tag'/>
-    <enum name='XML_PARSER_IGNORE' file='parser' value='15' type='xmlParserInputState' info='within an IGNORED section'/>
-    <enum name='XML_PARSER_LOADDTD' file='xmlreader' value='1' type='xmlParserProperties'/>
-    <enum name='XML_PARSER_MISC' file='parser' value='1' type='xmlParserInputState' info='Misc* before int subset'/>
-    <enum name='XML_PARSER_PI' file='parser' value='2' type='xmlParserInputState' info='Within a processing instruction'/>
-    <enum name='XML_PARSER_PROLOG' file='parser' value='4' type='xmlParserInputState' info='Misc* after internal subset'/>
-    <enum name='XML_PARSER_PUBLIC_LITERAL' file='parser' value='16' type='xmlParserInputState' info='within a PUBLIC value'/>
-    <enum name='XML_PARSER_SEVERITY_ERROR' file='xmlreader' value='4' type='xmlParserSeverities'/>
-    <enum name='XML_PARSER_SEVERITY_VALIDITY_ERROR' file='xmlreader' value='2' type='xmlParserSeverities'/>
-    <enum name='XML_PARSER_SEVERITY_VALIDITY_WARNING' file='xmlreader' value='1' type='xmlParserSeverities'/>
-    <enum name='XML_PARSER_SEVERITY_WARNING' file='xmlreader' value='3' type='xmlParserSeverities'/>
-    <enum name='XML_PARSER_START' file='parser' value='0' type='xmlParserInputState' info='nothing has been parsed'/>
-    <enum name='XML_PARSER_START_TAG' file='parser' value='6' type='xmlParserInputState' info='within a start tag'/>
-    <enum name='XML_PARSER_SUBST_ENTITIES' file='xmlreader' value='4' type='xmlParserProperties'/>
-    <enum name='XML_PARSER_SYSTEM_LITERAL' file='parser' value='13' type='xmlParserInputState' info='within a SYSTEM value'/>
-    <enum name='XML_PARSER_VALIDATE' file='xmlreader' value='3' type='xmlParserProperties'/>
-    <enum name='XML_PARSER_XML_DECL' file='parser' value='17' type='xmlParserInputState' info=' before XML decl (but after BOM)'/>
-    <enum name='XML_PARSE_BIG_LINES' file='parser' value='4194304' type='xmlParserOption' info='Store big lines numbers in text PSVI field since 2.13.0'/>
-    <enum name='XML_PARSE_CATALOG_PI' file='parser' value='67108864' type='xmlParserOption' info=' allow catalog PIs'/>
-    <enum name='XML_PARSE_COMPACT' file='parser' value='65536' type='xmlParserOption' info='compact small text nodes; no modification of
-the tree allowed afterwards (will possibly
-crash if you try to modify the tree)'/>
-    <enum name='XML_PARSE_DOM' file='parser' value='1' type='xmlParserMode'/>
-    <enum name='XML_PARSE_DTDATTR' file='parser' value='8' type='xmlParserOption' info='default DTD attributes'/>
-    <enum name='XML_PARSE_DTDLOAD' file='parser' value='4' type='xmlParserOption' info='load the external subset'/>
-    <enum name='XML_PARSE_DTDVALID' file='parser' value='16' type='xmlParserOption' info='validate with the DTD'/>
-    <enum name='XML_PARSE_HUGE' file='parser' value='524288' type='xmlParserOption' info='relax any hardcoded limit from the parser'/>
-    <enum name='XML_PARSE_IGNORE_ENC' file='parser' value='2097152' type='xmlParserOption' info='ignore internal document encoding hint'/>
-    <enum name='XML_PARSE_NOBASEFIX' file='parser' value='262144' type='xmlParserOption' info='do not fixup XINCLUDE xml:base uris'/>
-    <enum name='XML_PARSE_NOBLANKS' file='parser' value='256' type='xmlParserOption' info='remove blank nodes'/>
-    <enum name='XML_PARSE_NOCDATA' file='parser' value='16384' type='xmlParserOption' info='merge CDATA as text nodes'/>
-    <enum name='XML_PARSE_NODICT' file='parser' value='4096' type='xmlParserOption' info='Do not reuse the context dictionary'/>
-    <enum name='XML_PARSE_NOENT' file='parser' value='2' type='xmlParserOption' info='substitute entities'/>
-    <enum name='XML_PARSE_NOERROR' file='parser' value='32' type='xmlParserOption' info='suppress error reports'/>
-    <enum name='XML_PARSE_NONET' file='parser' value='2048' type='xmlParserOption' info='Forbid network access'/>
-    <enum name='XML_PARSE_NOWARNING' file='parser' value='64' type='xmlParserOption' info='suppress warning reports'/>
-    <enum name='XML_PARSE_NOXINCNODE' file='parser' value='32768' type='xmlParserOption' info='do not generate XINCLUDE START/END nodes'/>
-    <enum name='XML_PARSE_NO_SYS_CATALOG' file='parser' value='33554432' type='xmlParserOption' info='disable global system catalog'/>
-    <enum name='XML_PARSE_NO_XXE' file='parser' value='8388608' type='xmlParserOption' info='disable loading of external content since 2.14.0'/>
-    <enum name='XML_PARSE_NSCLEAN' file='parser' value='8192' type='xmlParserOption' info='remove redundant namespaces declarations'/>
-    <enum name='XML_PARSE_OLD10' file='parser' value='131072' type='xmlParserOption' info='parse using XML-1.0 before update 5'/>
-    <enum name='XML_PARSE_OLDSAX' file='parser' value='1048576' type='xmlParserOption' info='parse using SAX2 interface before 2.7.0'/>
-    <enum name='XML_PARSE_PEDANTIC' file='parser' value='128' type='xmlParserOption' info='pedantic error reporting'/>
-    <enum name='XML_PARSE_PUSH_DOM' file='parser' value='3' type='xmlParserMode'/>
-    <enum name='XML_PARSE_PUSH_SAX' file='parser' value='4' type='xmlParserMode'/>
-    <enum name='XML_PARSE_READER' file='parser' value='5' type='xmlParserMode'/>
-    <enum name='XML_PARSE_RECOVER' file='parser' value='1' type='xmlParserOption' info='recover on errors'/>
-    <enum name='XML_PARSE_SAX' file='parser' value='2' type='xmlParserMode'/>
-    <enum name='XML_PARSE_SAX1' file='parser' value='512' type='xmlParserOption' info='use the SAX1 interface internally'/>
-    <enum name='XML_PARSE_UNKNOWN' file='parser' value='0' type='xmlParserMode'/>
-    <enum name='XML_PARSE_UNZIP' file='parser' value='16777216' type='xmlParserOption' info='allow compressed content'/>
-    <enum name='XML_PARSE_XINCLUDE' file='parser' value='1024' type='xmlParserOption' info='Implement XInclude substitution'/>
-    <enum name='XML_PATTERN_DEFAULT' file='pattern' value='0' type='xmlPatternFlags' info='simple pattern match'/>
-    <enum name='XML_PATTERN_XPATH' file='pattern' value='1' type='xmlPatternFlags' info='standard XPath pattern'/>
-    <enum name='XML_PATTERN_XSFIELD' file='pattern' value='4' type='xmlPatternFlags' info=' XPath subset for schema field'/>
-    <enum name='XML_PATTERN_XSSEL' file='pattern' value='2' type='xmlPatternFlags' info='XPath subset for schema selector'/>
-    <enum name='XML_PI_NODE' file='tree' value='7' type='xmlElementType'/>
-    <enum name='XML_READER_TYPE_ATTRIBUTE' file='xmlreader' value='2' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_CDATA' file='xmlreader' value='4' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_COMMENT' file='xmlreader' value='8' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_DOCUMENT' file='xmlreader' value='9' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_DOCUMENT_FRAGMENT' file='xmlreader' value='11' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_DOCUMENT_TYPE' file='xmlreader' value='10' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_ELEMENT' file='xmlreader' value='1' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_END_ELEMENT' file='xmlreader' value='15' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_END_ENTITY' file='xmlreader' value='16' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_ENTITY' file='xmlreader' value='6' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_ENTITY_REFERENCE' file='xmlreader' value='5' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_NONE' file='xmlreader' value='0' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_NOTATION' file='xmlreader' value='12' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_PROCESSING_INSTRUCTION' file='xmlreader' value='7' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_SIGNIFICANT_WHITESPACE' file='xmlreader' value='14' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_TEXT' file='xmlreader' value='3' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_WHITESPACE' file='xmlreader' value='13' type='xmlReaderTypes'/>
-    <enum name='XML_READER_TYPE_XML_DECLARATION' file='xmlreader' value='17' type='xmlReaderTypes'/>
-    <enum name='XML_REGEXP_COMPILE_ERROR' file='xmlerror' value='1450' type='xmlParserErrors'/>
-    <enum name='XML_RELAXNGP_CRNG' file='relaxng' value='2' type='xmlRelaxNGParserFlag'/>
-    <enum name='XML_RELAXNGP_FREE_DOC' file='relaxng' value='1' type='xmlRelaxNGParserFlag'/>
-    <enum name='XML_RELAXNGP_NONE' file='relaxng' value='0' type='xmlRelaxNGParserFlag'/>
-    <enum name='XML_RELAXNG_ERR_ATTREXTRANS' file='relaxng' value='20' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ATTRNAME' file='relaxng' value='14' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ATTRNONS' file='relaxng' value='16' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ATTRVALID' file='relaxng' value='24' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ATTRWRONGNS' file='relaxng' value='18' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_CONTENTVALID' file='relaxng' value='25' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_DATAELEM' file='relaxng' value='28' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_DATATYPE' file='relaxng' value='31' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_DUPID' file='relaxng' value='4' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMEXTRANS' file='relaxng' value='19' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMNAME' file='relaxng' value='13' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMNONS' file='relaxng' value='15' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMNOTEMPTY' file='relaxng' value='21' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMWRONG' file='relaxng' value='38' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_ELEMWRONGNS' file='relaxng' value='17' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_EXTRACONTENT' file='relaxng' value='26' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_EXTRADATA' file='relaxng' value='35' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_INTEREXTRA' file='relaxng' value='12' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_INTERNAL' file='relaxng' value='37' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_INTERNODATA' file='relaxng' value='10' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_INTERSEQ' file='relaxng' value='11' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_INVALIDATTR' file='relaxng' value='27' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_LACKDATA' file='relaxng' value='36' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_LIST' file='relaxng' value='33' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_LISTELEM' file='relaxng' value='30' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_LISTEMPTY' file='relaxng' value='9' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_LISTEXTRA' file='relaxng' value='8' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_MEMORY' file='relaxng' value='1' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_NODEFINE' file='relaxng' value='7' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_NOELEM' file='relaxng' value='22' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_NOGRAMMAR' file='relaxng' value='34' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_NOSTATE' file='relaxng' value='6' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_NOTELEM' file='relaxng' value='23' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_TEXTWRONG' file='relaxng' value='39' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_TYPE' file='relaxng' value='2' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_TYPECMP' file='relaxng' value='5' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_TYPEVAL' file='relaxng' value='3' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_VALELEM' file='relaxng' value='29' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_ERR_VALUE' file='relaxng' value='32' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RELAXNG_OK' file='relaxng' value='0' type='xmlRelaxNGValidErr'/>
-    <enum name='XML_RESOURCE_DTD' file='parser' value='2' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_GENERAL_ENTITY' file='parser' value='3' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_MAIN_DOCUMENT' file='parser' value='1' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_PARAMETER_ENTITY' file='parser' value='4' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_UNKNOWN' file='parser' value='0' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_XINCLUDE' file='parser' value='5' type='xmlResourceType'/>
-    <enum name='XML_RESOURCE_XINCLUDE_TEXT' file='parser' value='6' type='xmlResourceType'/>
-    <enum name='XML_RNGP_ANYNAME_ATTR_ANCESTOR' file='xmlerror' value='1000' type='xmlParserErrors'/>
-    <enum name='XML_RNGP_ATTRIBUTE_CHILDREN' file='xmlerror' value='1002' type='xmlParserErrors' info='1002'/>
-    <enum name='XML_RNGP_ATTRIBUTE_CONTENT' file='xmlerror' value='1003' type='xmlParserErrors' info='1003'/>
-    <enum name='XML_RNGP_ATTRIBUTE_EMPTY' file='xmlerror' value='1004' type='xmlParserErrors' info='1004'/>
-    <enum name='XML_RNGP_ATTRIBUTE_NOOP' file='xmlerror' value='1005' type='xmlParserErrors' info='1005'/>
-    <enum name='XML_RNGP_ATTR_CONFLICT' file='xmlerror' value='1001' type='xmlParserErrors' info='1001'/>
-    <enum name='XML_RNGP_CHOICE_CONTENT' file='xmlerror' value='1006' type='xmlParserErrors' info='1006'/>
-    <enum name='XML_RNGP_CHOICE_EMPTY' file='xmlerror' value='1007' type='xmlParserErrors' info='1007'/>
-    <enum name='XML_RNGP_CREATE_FAILURE' file='xmlerror' value='1008' type='xmlParserErrors' info='1008'/>
-    <enum name='XML_RNGP_DATA_CONTENT' file='xmlerror' value='1009' type='xmlParserErrors' info='1009'/>
-    <enum name='XML_RNGP_DEFINE_CREATE_FAILED' file='xmlerror' value='1011' type='xmlParserErrors' info='1011'/>
-    <enum name='XML_RNGP_DEFINE_EMPTY' file='xmlerror' value='1012' type='xmlParserErrors' info='1012'/>
-    <enum name='XML_RNGP_DEFINE_MISSING' file='xmlerror' value='1013' type='xmlParserErrors' info='1013'/>
-    <enum name='XML_RNGP_DEFINE_NAME_MISSING' file='xmlerror' value='1014' type='xmlParserErrors' info='1014'/>
-    <enum name='XML_RNGP_DEF_CHOICE_AND_INTERLEAVE' file='xmlerror' value='1010' type='xmlParserErrors' info='1010'/>
-    <enum name='XML_RNGP_ELEMENT_CONTENT' file='xmlerror' value='1018' type='xmlParserErrors' info='1018'/>
-    <enum name='XML_RNGP_ELEMENT_EMPTY' file='xmlerror' value='1017' type='xmlParserErrors' info='1017'/>
-    <enum name='XML_RNGP_ELEMENT_NAME' file='xmlerror' value='1019' type='xmlParserErrors' info='1019'/>
-    <enum name='XML_RNGP_ELEMENT_NO_CONTENT' file='xmlerror' value='1020' type='xmlParserErrors' info='1020'/>
-    <enum name='XML_RNGP_ELEM_CONTENT_EMPTY' file='xmlerror' value='1015' type='xmlParserErrors' info='1015'/>
-    <enum name='XML_RNGP_ELEM_CONTENT_ERROR' file='xmlerror' value='1016' type='xmlParserErrors' info='1016'/>
-    <enum name='XML_RNGP_ELEM_TEXT_CONFLICT' file='xmlerror' value='1021' type='xmlParserErrors' info='1021'/>
-    <enum name='XML_RNGP_EMPTY' file='xmlerror' value='1022' type='xmlParserErrors' info='1022'/>
-    <enum name='XML_RNGP_EMPTY_CONSTRUCT' file='xmlerror' value='1023' type='xmlParserErrors' info='1023'/>
-    <enum name='XML_RNGP_EMPTY_CONTENT' file='xmlerror' value='1024' type='xmlParserErrors' info='1024'/>
-    <enum name='XML_RNGP_EMPTY_NOT_EMPTY' file='xmlerror' value='1025' type='xmlParserErrors' info='1025'/>
-    <enum name='XML_RNGP_ERROR_TYPE_LIB' file='xmlerror' value='1026' type='xmlParserErrors' info='1026'/>
-    <enum name='XML_RNGP_EXCEPT_EMPTY' file='xmlerror' value='1027' type='xmlParserErrors' info='1027'/>
-    <enum name='XML_RNGP_EXCEPT_MISSING' file='xmlerror' value='1028' type='xmlParserErrors' info='1028'/>
-    <enum name='XML_RNGP_EXCEPT_MULTIPLE' file='xmlerror' value='1029' type='xmlParserErrors' info='1029'/>
-    <enum name='XML_RNGP_EXCEPT_NO_CONTENT' file='xmlerror' value='1030' type='xmlParserErrors' info='1030'/>
-    <enum name='XML_RNGP_EXTERNALREF_EMTPY' file='xmlerror' value='1031' type='xmlParserErrors' info='1031'/>
-    <enum name='XML_RNGP_EXTERNALREF_RECURSE' file='xmlerror' value='1033' type='xmlParserErrors' info='1033'/>
-    <enum name='XML_RNGP_EXTERNAL_REF_FAILURE' file='xmlerror' value='1032' type='xmlParserErrors' info='1032'/>
-    <enum name='XML_RNGP_FORBIDDEN_ATTRIBUTE' file='xmlerror' value='1034' type='xmlParserErrors' info='1034'/>
-    <enum name='XML_RNGP_FOREIGN_ELEMENT' file='xmlerror' value='1035' type='xmlParserErrors' info='1035'/>
-    <enum name='XML_RNGP_GRAMMAR_CONTENT' file='xmlerror' value='1036' type='xmlParserErrors' info='1036'/>
-    <enum name='XML_RNGP_GRAMMAR_EMPTY' file='xmlerror' value='1037' type='xmlParserErrors' info='1037'/>
-    <enum name='XML_RNGP_GRAMMAR_MISSING' file='xmlerror' value='1038' type='xmlParserErrors' info='1038'/>
-    <enum name='XML_RNGP_GRAMMAR_NO_START' file='xmlerror' value='1039' type='xmlParserErrors' info='1039'/>
-    <enum name='XML_RNGP_GROUP_ATTR_CONFLICT' file='xmlerror' value='1040' type='xmlParserErrors' info='1040'/>
-    <enum name='XML_RNGP_HREF_ERROR' file='xmlerror' value='1041' type='xmlParserErrors' info='1041'/>
-    <enum name='XML_RNGP_INCLUDE_EMPTY' file='xmlerror' value='1042' type='xmlParserErrors' info='1042'/>
-    <enum name='XML_RNGP_INCLUDE_FAILURE' file='xmlerror' value='1043' type='xmlParserErrors' info='1043'/>
-    <enum name='XML_RNGP_INCLUDE_RECURSE' file='xmlerror' value='1044' type='xmlParserErrors' info='1044'/>
-    <enum name='XML_RNGP_INTERLEAVE_ADD' file='xmlerror' value='1045' type='xmlParserErrors' info='1045'/>
-    <enum name='XML_RNGP_INTERLEAVE_CREATE_FAILED' file='xmlerror' value='1046' type='xmlParserErrors' info='1046'/>
-    <enum name='XML_RNGP_INTERLEAVE_EMPTY' file='xmlerror' value='1047' type='xmlParserErrors' info='1047'/>
-    <enum name='XML_RNGP_INTERLEAVE_NO_CONTENT' file='xmlerror' value='1048' type='xmlParserErrors' info='1048'/>
-    <enum name='XML_RNGP_INVALID_DEFINE_NAME' file='xmlerror' value='1049' type='xmlParserErrors' info='1049'/>
-    <enum name='XML_RNGP_INVALID_URI' file='xmlerror' value='1050' type='xmlParserErrors' info='1050'/>
-    <enum name='XML_RNGP_INVALID_VALUE' file='xmlerror' value='1051' type='xmlParserErrors' info='1051'/>
-    <enum name='XML_RNGP_MISSING_HREF' file='xmlerror' value='1052' type='xmlParserErrors' info='1052'/>
-    <enum name='XML_RNGP_NAME_MISSING' file='xmlerror' value='1053' type='xmlParserErrors' info='1053'/>
-    <enum name='XML_RNGP_NEED_COMBINE' file='xmlerror' value='1054' type='xmlParserErrors' info='1054'/>
-    <enum name='XML_RNGP_NOTALLOWED_NOT_EMPTY' file='xmlerror' value='1055' type='xmlParserErrors' info='1055'/>
-    <enum name='XML_RNGP_NSNAME_ATTR_ANCESTOR' file='xmlerror' value='1056' type='xmlParserErrors' info='1056'/>
-    <enum name='XML_RNGP_NSNAME_NO_NS' file='xmlerror' value='1057' type='xmlParserErrors' info='1057'/>
-    <enum name='XML_RNGP_PARAM_FORBIDDEN' file='xmlerror' value='1058' type='xmlParserErrors' info='1058'/>
-    <enum name='XML_RNGP_PARAM_NAME_MISSING' file='xmlerror' value='1059' type='xmlParserErrors' info='1059'/>
-    <enum name='XML_RNGP_PARENTREF_CREATE_FAILED' file='xmlerror' value='1060' type='xmlParserErrors' info='1060'/>
-    <enum name='XML_RNGP_PARENTREF_NAME_INVALID' file='xmlerror' value='1061' type='xmlParserErrors' info='1061'/>
-    <enum name='XML_RNGP_PARENTREF_NOT_EMPTY' file='xmlerror' value='1064' type='xmlParserErrors' info='1064'/>
-    <enum name='XML_RNGP_PARENTREF_NO_NAME' file='xmlerror' value='1062' type='xmlParserErrors' info='1062'/>
-    <enum name='XML_RNGP_PARENTREF_NO_PARENT' file='xmlerror' value='1063' type='xmlParserErrors' info='1063'/>
-    <enum name='XML_RNGP_PARSE_ERROR' file='xmlerror' value='1065' type='xmlParserErrors' info='1065'/>
-    <enum name='XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME' file='xmlerror' value='1066' type='xmlParserErrors' info='1066'/>
-    <enum name='XML_RNGP_PAT_ATTR_ATTR' file='xmlerror' value='1067' type='xmlParserErrors' info='1067'/>
-    <enum name='XML_RNGP_PAT_ATTR_ELEM' file='xmlerror' value='1068' type='xmlParserErrors' info='1068'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_ATTR' file='xmlerror' value='1069' type='xmlParserErrors' info='1069'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_ELEM' file='xmlerror' value='1070' type='xmlParserErrors' info='1070'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_EMPTY' file='xmlerror' value='1071' type='xmlParserErrors' info='1071'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_GROUP' file='xmlerror' value='1072' type='xmlParserErrors' info='1072'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE' file='xmlerror' value='1073' type='xmlParserErrors' info='1073'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_LIST' file='xmlerror' value='1074' type='xmlParserErrors' info='1074'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_ONEMORE' file='xmlerror' value='1075' type='xmlParserErrors' info='1075'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_REF' file='xmlerror' value='1076' type='xmlParserErrors' info='1076'/>
-    <enum name='XML_RNGP_PAT_DATA_EXCEPT_TEXT' file='xmlerror' value='1077' type='xmlParserErrors' info='1077'/>
-    <enum name='XML_RNGP_PAT_LIST_ATTR' file='xmlerror' value='1078' type='xmlParserErrors' info='1078'/>
-    <enum name='XML_RNGP_PAT_LIST_ELEM' file='xmlerror' value='1079' type='xmlParserErrors' info='1079'/>
-    <enum name='XML_RNGP_PAT_LIST_INTERLEAVE' file='xmlerror' value='1080' type='xmlParserErrors' info='1080'/>
-    <enum name='XML_RNGP_PAT_LIST_LIST' file='xmlerror' value='1081' type='xmlParserErrors' info='1081'/>
-    <enum name='XML_RNGP_PAT_LIST_REF' file='xmlerror' value='1082' type='xmlParserErrors' info='1082'/>
-    <enum name='XML_RNGP_PAT_LIST_TEXT' file='xmlerror' value='1083' type='xmlParserErrors' info='1083'/>
-    <enum name='XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME' file='xmlerror' value='1084' type='xmlParserErrors' info='1084'/>
-    <enum name='XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME' file='xmlerror' value='1085' type='xmlParserErrors' info='1085'/>
-    <enum name='XML_RNGP_PAT_ONEMORE_GROUP_ATTR' file='xmlerror' value='1086' type='xmlParserErrors' info='1086'/>
-    <enum name='XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR' file='xmlerror' value='1087' type='xmlParserErrors' info='1087'/>
-    <enum name='XML_RNGP_PAT_START_ATTR' file='xmlerror' value='1088' type='xmlParserErrors' info='1088'/>
-    <enum name='XML_RNGP_PAT_START_DATA' file='xmlerror' value='1089' type='xmlParserErrors' info='1089'/>
-    <enum name='XML_RNGP_PAT_START_EMPTY' file='xmlerror' value='1090' type='xmlParserErrors' info='1090'/>
-    <enum name='XML_RNGP_PAT_START_GROUP' file='xmlerror' value='1091' type='xmlParserErrors' info='1091'/>
-    <enum name='XML_RNGP_PAT_START_INTERLEAVE' file='xmlerror' value='1092' type='xmlParserErrors' info='1092'/>
-    <enum name='XML_RNGP_PAT_START_LIST' file='xmlerror' value='1093' type='xmlParserErrors' info='1093'/>
-    <enum name='XML_RNGP_PAT_START_ONEMORE' file='xmlerror' value='1094' type='xmlParserErrors' info='1094'/>
-    <enum name='XML_RNGP_PAT_START_TEXT' file='xmlerror' value='1095' type='xmlParserErrors' info='1095'/>
-    <enum name='XML_RNGP_PAT_START_VALUE' file='xmlerror' value='1096' type='xmlParserErrors' info='1096'/>
-    <enum name='XML_RNGP_PREFIX_UNDEFINED' file='xmlerror' value='1097' type='xmlParserErrors' info='1097'/>
-    <enum name='XML_RNGP_REF_CREATE_FAILED' file='xmlerror' value='1098' type='xmlParserErrors' info='1098'/>
-    <enum name='XML_RNGP_REF_CYCLE' file='xmlerror' value='1099' type='xmlParserErrors' info='1099'/>
-    <enum name='XML_RNGP_REF_NAME_INVALID' file='xmlerror' value='1100' type='xmlParserErrors' info='1100'/>
-    <enum name='XML_RNGP_REF_NOT_EMPTY' file='xmlerror' value='1103' type='xmlParserErrors' info='1103'/>
-    <enum name='XML_RNGP_REF_NO_DEF' file='xmlerror' value='1101' type='xmlParserErrors' info='1101'/>
-    <enum name='XML_RNGP_REF_NO_NAME' file='xmlerror' value='1102' type='xmlParserErrors' info='1102'/>
-    <enum name='XML_RNGP_START_CHOICE_AND_INTERLEAVE' file='xmlerror' value='1104' type='xmlParserErrors' info='1104'/>
-    <enum name='XML_RNGP_START_CONTENT' file='xmlerror' value='1105' type='xmlParserErrors' info='1105'/>
-    <enum name='XML_RNGP_START_EMPTY' file='xmlerror' value='1106' type='xmlParserErrors' info='1106'/>
-    <enum name='XML_RNGP_START_MISSING' file='xmlerror' value='1107' type='xmlParserErrors' info='1107'/>
-    <enum name='XML_RNGP_TEXT_EXPECTED' file='xmlerror' value='1108' type='xmlParserErrors' info='1108'/>
-    <enum name='XML_RNGP_TEXT_HAS_CHILD' file='xmlerror' value='1109' type='xmlParserErrors' info='1109'/>
-    <enum name='XML_RNGP_TYPE_MISSING' file='xmlerror' value='1110' type='xmlParserErrors' info='1110'/>
-    <enum name='XML_RNGP_TYPE_NOT_FOUND' file='xmlerror' value='1111' type='xmlParserErrors' info='1111'/>
-    <enum name='XML_RNGP_TYPE_VALUE' file='xmlerror' value='1112' type='xmlParserErrors' info='1112'/>
-    <enum name='XML_RNGP_UNKNOWN_ATTRIBUTE' file='xmlerror' value='1113' type='xmlParserErrors' info='1113'/>
-    <enum name='XML_RNGP_UNKNOWN_COMBINE' file='xmlerror' value='1114' type='xmlParserErrors' info='1114'/>
-    <enum name='XML_RNGP_UNKNOWN_CONSTRUCT' file='xmlerror' value='1115' type='xmlParserErrors' info='1115'/>
-    <enum name='XML_RNGP_UNKNOWN_TYPE_LIB' file='xmlerror' value='1116' type='xmlParserErrors' info='1116'/>
-    <enum name='XML_RNGP_URI_FRAGMENT' file='xmlerror' value='1117' type='xmlParserErrors' info='1117'/>
-    <enum name='XML_RNGP_URI_NOT_ABSOLUTE' file='xmlerror' value='1118' type='xmlParserErrors' info='1118'/>
-    <enum name='XML_RNGP_VALUE_EMPTY' file='xmlerror' value='1119' type='xmlParserErrors' info='1119'/>
-    <enum name='XML_RNGP_VALUE_NO_CONTENT' file='xmlerror' value='1120' type='xmlParserErrors' info='1120'/>
-    <enum name='XML_RNGP_XMLNS_NAME' file='xmlerror' value='1121' type='xmlParserErrors' info='1121'/>
-    <enum name='XML_RNGP_XML_NS' file='xmlerror' value='1122' type='xmlParserErrors' info='1122'/>
-    <enum name='XML_SAVE_AS_HTML' file='xmlsave' value='64' type='xmlSaveOption' info='force HTML serialization on XML doc'/>
-    <enum name='XML_SAVE_AS_XML' file='xmlsave' value='32' type='xmlSaveOption' info='force XML serialization on HTML doc'/>
-    <enum name='XML_SAVE_CHAR_INVALID' file='xmlerror' value='1401' type='xmlParserErrors' info='1401'/>
-    <enum name='XML_SAVE_EMPTY' file='xmlsave' value='256' type='xmlSaveOption' info='force empty tags, overriding global'/>
-    <enum name='XML_SAVE_FORMAT' file='xmlsave' value='1' type='xmlSaveOption' info='format save output'/>
-    <enum name='XML_SAVE_INDENT' file='xmlsave' value='1024' type='xmlSaveOption' info=' force indenting, overriding global'/>
-    <enum name='XML_SAVE_NOT_UTF8' file='xmlerror' value='1400' type='xmlParserErrors'/>
-    <enum name='XML_SAVE_NO_DECL' file='xmlsave' value='2' type='xmlSaveOption' info='drop the xml declaration'/>
-    <enum name='XML_SAVE_NO_DOCTYPE' file='xmlerror' value='1402' type='xmlParserErrors' info='1402'/>
-    <enum name='XML_SAVE_NO_EMPTY' file='xmlsave' value='4' type='xmlSaveOption' info='no empty tags'/>
-    <enum name='XML_SAVE_NO_INDENT' file='xmlsave' value='512' type='xmlSaveOption' info='disable indenting'/>
-    <enum name='XML_SAVE_NO_XHTML' file='xmlsave' value='8' type='xmlSaveOption' info='disable XHTML1 specific rules'/>
-    <enum name='XML_SAVE_UNKNOWN_ENCODING' file='xmlerror' value='1403' type='xmlParserErrors' info='1403'/>
-    <enum name='XML_SAVE_WSNONSIG' file='xmlsave' value='128' type='xmlSaveOption' info='format with non-significant whitespace Available since 2.14.0'/>
-    <enum name='XML_SAVE_XHTML' file='xmlsave' value='16' type='xmlSaveOption' info='force XHTML1 specific rules'/>
-    <enum name='XML_SCHEMAP_AG_PROPS_CORRECT' file='xmlerror' value='3087' type='xmlParserErrors' info='3086'/>
-    <enum name='XML_SCHEMAP_ATTRFORMDEFAULT_VALUE' file='xmlerror' value='1701' type='xmlParserErrors' info='1701'/>
-    <enum name='XML_SCHEMAP_ATTRGRP_NONAME_NOREF' file='xmlerror' value='1702' type='xmlParserErrors' info='1702'/>
-    <enum name='XML_SCHEMAP_ATTR_NONAME_NOREF' file='xmlerror' value='1703' type='xmlParserErrors' info='1703'/>
-    <enum name='XML_SCHEMAP_AU_PROPS_CORRECT' file='xmlerror' value='3089' type='xmlParserErrors' info='3088'/>
-    <enum name='XML_SCHEMAP_AU_PROPS_CORRECT_2' file='xmlerror' value='3078' type='xmlParserErrors' info='3078'/>
-    <enum name='XML_SCHEMAP_A_PROPS_CORRECT_2' file='xmlerror' value='3079' type='xmlParserErrors' info='3079'/>
-    <enum name='XML_SCHEMAP_A_PROPS_CORRECT_3' file='xmlerror' value='3090' type='xmlParserErrors' info='3089'/>
-    <enum name='XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF' file='xmlerror' value='1704' type='xmlParserErrors' info='1704'/>
-    <enum name='XML_SCHEMAP_COS_ALL_LIMITED' file='xmlerror' value='3091' type='xmlParserErrors' info='3090'/>
-    <enum name='XML_SCHEMAP_COS_CT_EXTENDS_1_1' file='xmlerror' value='3063' type='xmlParserErrors' info='3063'/>
-    <enum name='XML_SCHEMAP_COS_CT_EXTENDS_1_2' file='xmlerror' value='3088' type='xmlParserErrors' info='3087'/>
-    <enum name='XML_SCHEMAP_COS_CT_EXTENDS_1_3' file='xmlerror' value='1800' type='xmlParserErrors' info='1800'/>
-    <enum name='XML_SCHEMAP_COS_ST_DERIVED_OK_2_1' file='xmlerror' value='3031' type='xmlParserErrors' info='3031'/>
-    <enum name='XML_SCHEMAP_COS_ST_DERIVED_OK_2_2' file='xmlerror' value='3032' type='xmlParserErrors' info='3032'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_1_1' file='xmlerror' value='3011' type='xmlParserErrors' info='3011'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_1_2' file='xmlerror' value='3012' type='xmlParserErrors' info='3012'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1' file='xmlerror' value='3013' type='xmlParserErrors' info='3013'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2' file='xmlerror' value='3014' type='xmlParserErrors' info='3014'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_1' file='xmlerror' value='3015' type='xmlParserErrors' info='3015'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1' file='xmlerror' value='3016' type='xmlParserErrors' info='3016'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2' file='xmlerror' value='3017' type='xmlParserErrors' info='3017'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1' file='xmlerror' value='3018' type='xmlParserErrors' info='3018'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2' file='xmlerror' value='3019' type='xmlParserErrors' info='3019'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3' file='xmlerror' value='3020' type='xmlParserErrors' info='3020'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4' file='xmlerror' value='3021' type='xmlParserErrors' info='3021'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5' file='xmlerror' value='3022' type='xmlParserErrors' info='3022'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_1' file='xmlerror' value='3023' type='xmlParserErrors' info='3023'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1' file='xmlerror' value='3024' type='xmlParserErrors' info='3024'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2' file='xmlerror' value='3025' type='xmlParserErrors' info='3025'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1' file='xmlerror' value='3027' type='xmlParserErrors' info='3027'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2' file='xmlerror' value='3026' type='xmlParserErrors' info='3026'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3' file='xmlerror' value='3028' type='xmlParserErrors' info='3028'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4' file='xmlerror' value='3029' type='xmlParserErrors' info='3029'/>
-    <enum name='XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5' file='xmlerror' value='3030' type='xmlParserErrors' info='3030'/>
-    <enum name='XML_SCHEMAP_COS_VALID_DEFAULT_1' file='xmlerror' value='3058' type='xmlParserErrors' info='3058'/>
-    <enum name='XML_SCHEMAP_COS_VALID_DEFAULT_2_1' file='xmlerror' value='3059' type='xmlParserErrors' info='3059'/>
-    <enum name='XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1' file='xmlerror' value='3060' type='xmlParserErrors' info='3060'/>
-    <enum name='XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2' file='xmlerror' value='3061' type='xmlParserErrors' info='3061'/>
-    <enum name='XML_SCHEMAP_CT_PROPS_CORRECT_1' file='xmlerror' value='1782' type='xmlParserErrors' info='1782'/>
-    <enum name='XML_SCHEMAP_CT_PROPS_CORRECT_2' file='xmlerror' value='1783' type='xmlParserErrors' info='1783'/>
-    <enum name='XML_SCHEMAP_CT_PROPS_CORRECT_3' file='xmlerror' value='1784' type='xmlParserErrors' info='1784'/>
-    <enum name='XML_SCHEMAP_CT_PROPS_CORRECT_4' file='xmlerror' value='1785' type='xmlParserErrors' info='1785'/>
-    <enum name='XML_SCHEMAP_CT_PROPS_CORRECT_5' file='xmlerror' value='1786' type='xmlParserErrors' info='1786'/>
-    <enum name='XML_SCHEMAP_CVC_SIMPLE_TYPE' file='xmlerror' value='3062' type='xmlParserErrors' info='3062'/>
-    <enum name='XML_SCHEMAP_C_PROPS_CORRECT' file='xmlerror' value='3080' type='xmlParserErrors' info='3080'/>
-    <enum name='XML_SCHEMAP_DEF_AND_PREFIX' file='xmlerror' value='1768' type='xmlParserErrors' info='1768'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1' file='xmlerror' value='1787' type='xmlParserErrors' info='1787'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1' file='xmlerror' value='1788' type='xmlParserErrors' info='1788'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2' file='xmlerror' value='1789' type='xmlParserErrors' info='1789'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3' file='xmlerror' value='3077' type='xmlParserErrors' info='3077'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2' file='xmlerror' value='1790' type='xmlParserErrors' info='1790'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3' file='xmlerror' value='1791' type='xmlParserErrors' info='1791'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1' file='xmlerror' value='1797' type='xmlParserErrors' info='1797'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2' file='xmlerror' value='1798' type='xmlParserErrors' info='1798'/>
-    <enum name='XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3' file='xmlerror' value='1799' type='xmlParserErrors' info='1799'/>
-    <enum name='XML_SCHEMAP_ELEMFORMDEFAULT_VALUE' file='xmlerror' value='1705' type='xmlParserErrors' info='1705'/>
-    <enum name='XML_SCHEMAP_ELEM_DEFAULT_FIXED' file='xmlerror' value='1755' type='xmlParserErrors' info='1755'/>
-    <enum name='XML_SCHEMAP_ELEM_NONAME_NOREF' file='xmlerror' value='1706' type='xmlParserErrors' info='1706'/>
-    <enum name='XML_SCHEMAP_EXTENSION_NO_BASE' file='xmlerror' value='1707' type='xmlParserErrors' info='1707'/>
-    <enum name='XML_SCHEMAP_E_PROPS_CORRECT_2' file='xmlerror' value='3045' type='xmlParserErrors' info='3045'/>
-    <enum name='XML_SCHEMAP_E_PROPS_CORRECT_3' file='xmlerror' value='3046' type='xmlParserErrors' info='3046'/>
-    <enum name='XML_SCHEMAP_E_PROPS_CORRECT_4' file='xmlerror' value='3047' type='xmlParserErrors' info='3047'/>
-    <enum name='XML_SCHEMAP_E_PROPS_CORRECT_5' file='xmlerror' value='3048' type='xmlParserErrors' info='3048'/>
-    <enum name='XML_SCHEMAP_E_PROPS_CORRECT_6' file='xmlerror' value='3049' type='xmlParserErrors' info='3049'/>
-    <enum name='XML_SCHEMAP_FACET_NO_VALUE' file='xmlerror' value='1708' type='xmlParserErrors' info='1708'/>
-    <enum name='XML_SCHEMAP_FAILED_BUILD_IMPORT' file='xmlerror' value='1709' type='xmlParserErrors' info='1709'/>
-    <enum name='XML_SCHEMAP_FAILED_LOAD' file='xmlerror' value='1757' type='xmlParserErrors' info='1757'/>
-    <enum name='XML_SCHEMAP_FAILED_PARSE' file='xmlerror' value='1766' type='xmlParserErrors' info='1766'/>
-    <enum name='XML_SCHEMAP_GROUP_NONAME_NOREF' file='xmlerror' value='1710' type='xmlParserErrors' info='1710'/>
-    <enum name='XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI' file='xmlerror' value='1711' type='xmlParserErrors' info='1711'/>
-    <enum name='XML_SCHEMAP_IMPORT_REDEFINE_NSNAME' file='xmlerror' value='1712' type='xmlParserErrors' info='1712'/>
-    <enum name='XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI' file='xmlerror' value='1713' type='xmlParserErrors' info='1713'/>
-    <enum name='XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI' file='xmlerror' value='1770' type='xmlParserErrors' info='1770'/>
-    <enum name='XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI' file='xmlerror' value='1771' type='xmlParserErrors' info='1771'/>
-    <enum name='XML_SCHEMAP_INTERNAL' file='xmlerror' value='3069' type='xmlParserErrors' info='3069 non-W3C'/>
-    <enum name='XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE' file='xmlerror' value='1793' type='xmlParserErrors' info='1793'/>
-    <enum name='XML_SCHEMAP_INVALID_ATTR_COMBINATION' file='xmlerror' value='1777' type='xmlParserErrors' info='1777'/>
-    <enum name='XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION' file='xmlerror' value='1778' type='xmlParserErrors' info='1778'/>
-    <enum name='XML_SCHEMAP_INVALID_ATTR_NAME' file='xmlerror' value='1780' type='xmlParserErrors' info='1780'/>
-    <enum name='XML_SCHEMAP_INVALID_ATTR_USE' file='xmlerror' value='1774' type='xmlParserErrors' info='1774'/>
-    <enum name='XML_SCHEMAP_INVALID_BOOLEAN' file='xmlerror' value='1714' type='xmlParserErrors' info='1714'/>
-    <enum name='XML_SCHEMAP_INVALID_ENUM' file='xmlerror' value='1715' type='xmlParserErrors' info='1715'/>
-    <enum name='XML_SCHEMAP_INVALID_FACET' file='xmlerror' value='1716' type='xmlParserErrors' info='1716'/>
-    <enum name='XML_SCHEMAP_INVALID_FACET_VALUE' file='xmlerror' value='1717' type='xmlParserErrors' info='1717'/>
-    <enum name='XML_SCHEMAP_INVALID_MAXOCCURS' file='xmlerror' value='1718' type='xmlParserErrors' info='1718'/>
-    <enum name='XML_SCHEMAP_INVALID_MINOCCURS' file='xmlerror' value='1719' type='xmlParserErrors' info='1719'/>
-    <enum name='XML_SCHEMAP_INVALID_REF_AND_SUBTYPE' file='xmlerror' value='1720' type='xmlParserErrors' info='1720'/>
-    <enum name='XML_SCHEMAP_INVALID_WHITE_SPACE' file='xmlerror' value='1721' type='xmlParserErrors' info='1721'/>
-    <enum name='XML_SCHEMAP_MG_PROPS_CORRECT_1' file='xmlerror' value='3074' type='xmlParserErrors' info='3074'/>
-    <enum name='XML_SCHEMAP_MG_PROPS_CORRECT_2' file='xmlerror' value='3075' type='xmlParserErrors' info='3075'/>
-    <enum name='XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD' file='xmlerror' value='1779' type='xmlParserErrors' info='1779'/>
-    <enum name='XML_SCHEMAP_NOATTR_NOREF' file='xmlerror' value='1722' type='xmlParserErrors' info='1722'/>
-    <enum name='XML_SCHEMAP_NOROOT' file='xmlerror' value='1759' type='xmlParserErrors' info='1759'/>
-    <enum name='XML_SCHEMAP_NOTATION_NO_NAME' file='xmlerror' value='1723' type='xmlParserErrors' info='1723'/>
-    <enum name='XML_SCHEMAP_NOTHING_TO_PARSE' file='xmlerror' value='1758' type='xmlParserErrors' info='1758'/>
-    <enum name='XML_SCHEMAP_NOTYPE_NOREF' file='xmlerror' value='1724' type='xmlParserErrors' info='1724'/>
-    <enum name='XML_SCHEMAP_NOT_DETERMINISTIC' file='xmlerror' value='3070' type='xmlParserErrors' info='3070 non-W3C'/>
-    <enum name='XML_SCHEMAP_NOT_SCHEMA' file='xmlerror' value='1772' type='xmlParserErrors' info='1772'/>
-    <enum name='XML_SCHEMAP_NO_XMLNS' file='xmlerror' value='3056' type='xmlParserErrors' info='3056'/>
-    <enum name='XML_SCHEMAP_NO_XSI' file='xmlerror' value='3057' type='xmlParserErrors' info='3057'/>
-    <enum name='XML_SCHEMAP_PREFIX_UNDEFINED' file='xmlerror' value='1700' type='xmlParserErrors'/>
-    <enum name='XML_SCHEMAP_P_PROPS_CORRECT_1' file='xmlerror' value='3042' type='xmlParserErrors' info='3042'/>
-    <enum name='XML_SCHEMAP_P_PROPS_CORRECT_2_1' file='xmlerror' value='3043' type='xmlParserErrors' info='3043'/>
-    <enum name='XML_SCHEMAP_P_PROPS_CORRECT_2_2' file='xmlerror' value='3044' type='xmlParserErrors' info='3044'/>
-    <enum name='XML_SCHEMAP_RECURSIVE' file='xmlerror' value='1775' type='xmlParserErrors' info='1775'/>
-    <enum name='XML_SCHEMAP_REDEFINED_ATTR' file='xmlerror' value='1764' type='xmlParserErrors' info='1764'/>
-    <enum name='XML_SCHEMAP_REDEFINED_ATTRGROUP' file='xmlerror' value='1763' type='xmlParserErrors' info='1763'/>
-    <enum name='XML_SCHEMAP_REDEFINED_ELEMENT' file='xmlerror' value='1762' type='xmlParserErrors' info='1762'/>
-    <enum name='XML_SCHEMAP_REDEFINED_GROUP' file='xmlerror' value='1760' type='xmlParserErrors' info='1760'/>
-    <enum name='XML_SCHEMAP_REDEFINED_NOTATION' file='xmlerror' value='1765' type='xmlParserErrors' info='1765'/>
-    <enum name='XML_SCHEMAP_REDEFINED_TYPE' file='xmlerror' value='1761' type='xmlParserErrors' info='1761'/>
-    <enum name='XML_SCHEMAP_REF_AND_CONTENT' file='xmlerror' value='1781' type='xmlParserErrors' info='1781'/>
-    <enum name='XML_SCHEMAP_REF_AND_SUBTYPE' file='xmlerror' value='1725' type='xmlParserErrors' info='1725'/>
-    <enum name='XML_SCHEMAP_REGEXP_INVALID' file='xmlerror' value='1756' type='xmlParserErrors' info='1756'/>
-    <enum name='XML_SCHEMAP_RESTRICTION_NONAME_NOREF' file='xmlerror' value='1726' type='xmlParserErrors' info='1726'/>
-    <enum name='XML_SCHEMAP_S4S_ATTR_INVALID_VALUE' file='xmlerror' value='3037' type='xmlParserErrors' info='3037'/>
-    <enum name='XML_SCHEMAP_S4S_ATTR_MISSING' file='xmlerror' value='3036' type='xmlParserErrors' info='3036'/>
-    <enum name='XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED' file='xmlerror' value='3035' type='xmlParserErrors' info='3035'/>
-    <enum name='XML_SCHEMAP_S4S_ELEM_MISSING' file='xmlerror' value='3034' type='xmlParserErrors' info='3034'/>
-    <enum name='XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED' file='xmlerror' value='3033' type='xmlParserErrors' info='3033'/>
-    <enum name='XML_SCHEMAP_SIMPLETYPE_NONAME' file='xmlerror' value='1727' type='xmlParserErrors' info='1727'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_1' file='xmlerror' value='3051' type='xmlParserErrors' info='3051'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_2' file='xmlerror' value='3052' type='xmlParserErrors' info='3052'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_3_1' file='xmlerror' value='3053' type='xmlParserErrors' info='3053'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_3_2' file='xmlerror' value='3054' type='xmlParserErrors' info='3054'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_4' file='xmlerror' value='3055' type='xmlParserErrors' info='3055'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1' file='xmlerror' value='3071' type='xmlParserErrors' info='3071'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2' file='xmlerror' value='3072' type='xmlParserErrors' info='3072'/>
-    <enum name='XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3' file='xmlerror' value='3073' type='xmlParserErrors' info='3073'/>
-    <enum name='XML_SCHEMAP_SRC_CT_1' file='xmlerror' value='3076' type='xmlParserErrors' info='3076'/>
-    <enum name='XML_SCHEMAP_SRC_ELEMENT_1' file='xmlerror' value='3038' type='xmlParserErrors' info='3038'/>
-    <enum name='XML_SCHEMAP_SRC_ELEMENT_2_1' file='xmlerror' value='3039' type='xmlParserErrors' info='3039'/>
-    <enum name='XML_SCHEMAP_SRC_ELEMENT_2_2' file='xmlerror' value='3040' type='xmlParserErrors' info='3040'/>
-    <enum name='XML_SCHEMAP_SRC_ELEMENT_3' file='xmlerror' value='3041' type='xmlParserErrors' info='3041'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT' file='xmlerror' value='3082' type='xmlParserErrors' info='3082'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_1_1' file='xmlerror' value='3064' type='xmlParserErrors' info='3064'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_1_2' file='xmlerror' value='3065' type='xmlParserErrors' info='3065'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_2' file='xmlerror' value='3066' type='xmlParserErrors' info='3066'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_2_1' file='xmlerror' value='3067' type='xmlParserErrors' info='3067'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_2_2' file='xmlerror' value='3068' type='xmlParserErrors' info='3068'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_3_1' file='xmlerror' value='1795' type='xmlParserErrors' info='1795'/>
-    <enum name='XML_SCHEMAP_SRC_IMPORT_3_2' file='xmlerror' value='1796' type='xmlParserErrors' info='1796'/>
-    <enum name='XML_SCHEMAP_SRC_INCLUDE' file='xmlerror' value='3050' type='xmlParserErrors' info='3050'/>
-    <enum name='XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE' file='xmlerror' value='3006' type='xmlParserErrors' info='3006'/>
-    <enum name='XML_SCHEMAP_SRC_REDEFINE' file='xmlerror' value='3081' type='xmlParserErrors' info='3081'/>
-    <enum name='XML_SCHEMAP_SRC_RESOLVE' file='xmlerror' value='3004' type='xmlParserErrors' info='3004'/>
-    <enum name='XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE' file='xmlerror' value='3005' type='xmlParserErrors' info='3005'/>
-    <enum name='XML_SCHEMAP_SRC_SIMPLE_TYPE_1' file='xmlerror' value='3000' type='xmlParserErrors'/>
-    <enum name='XML_SCHEMAP_SRC_SIMPLE_TYPE_2' file='xmlerror' value='3001' type='xmlParserErrors' info='3001'/>
-    <enum name='XML_SCHEMAP_SRC_SIMPLE_TYPE_3' file='xmlerror' value='3002' type='xmlParserErrors' info='3002'/>
-    <enum name='XML_SCHEMAP_SRC_SIMPLE_TYPE_4' file='xmlerror' value='3003' type='xmlParserErrors' info='3003'/>
-    <enum name='XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES' file='xmlerror' value='3007' type='xmlParserErrors' info='3007'/>
-    <enum name='XML_SCHEMAP_ST_PROPS_CORRECT_1' file='xmlerror' value='3008' type='xmlParserErrors' info='3008'/>
-    <enum name='XML_SCHEMAP_ST_PROPS_CORRECT_2' file='xmlerror' value='3009' type='xmlParserErrors' info='3009'/>
-    <enum name='XML_SCHEMAP_ST_PROPS_CORRECT_3' file='xmlerror' value='3010' type='xmlParserErrors' info='3010'/>
-    <enum name='XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE' file='xmlerror' value='1776' type='xmlParserErrors' info='1776'/>
-    <enum name='XML_SCHEMAP_TYPE_AND_SUBTYPE' file='xmlerror' value='1728' type='xmlParserErrors' info='1728'/>
-    <enum name='XML_SCHEMAP_UNION_NOT_EXPRESSIBLE' file='xmlerror' value='1794' type='xmlParserErrors' info='1794'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ALL_CHILD' file='xmlerror' value='1729' type='xmlParserErrors' info='1729'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD' file='xmlerror' value='1730' type='xmlParserErrors' info='1730'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD' file='xmlerror' value='1732' type='xmlParserErrors' info='1732'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP' file='xmlerror' value='1733' type='xmlParserErrors' info='1733'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ATTR_CHILD' file='xmlerror' value='1731' type='xmlParserErrors' info='1731'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_BASE_TYPE' file='xmlerror' value='1734' type='xmlParserErrors' info='1734'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_CHOICE_CHILD' file='xmlerror' value='1735' type='xmlParserErrors' info='1735'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD' file='xmlerror' value='1736' type='xmlParserErrors' info='1736'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD' file='xmlerror' value='1737' type='xmlParserErrors' info='1737'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_ELEM_CHILD' file='xmlerror' value='1738' type='xmlParserErrors' info='1738'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD' file='xmlerror' value='1739' type='xmlParserErrors' info='1739'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_FACET_CHILD' file='xmlerror' value='1740' type='xmlParserErrors' info='1740'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_FACET_TYPE' file='xmlerror' value='1741' type='xmlParserErrors' info='1741'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_GROUP_CHILD' file='xmlerror' value='1742' type='xmlParserErrors' info='1742'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_IMPORT_CHILD' file='xmlerror' value='1743' type='xmlParserErrors' info='1743'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD' file='xmlerror' value='1769' type='xmlParserErrors' info='1769'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_LIST_CHILD' file='xmlerror' value='1744' type='xmlParserErrors' info='1744'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_MEMBER_TYPE' file='xmlerror' value='1773' type='xmlParserErrors' info='1773'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_NOTATION_CHILD' file='xmlerror' value='1745' type='xmlParserErrors' info='1745'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_PREFIX' file='xmlerror' value='1767' type='xmlParserErrors' info='1767'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD' file='xmlerror' value='1746' type='xmlParserErrors' info='1746'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_REF' file='xmlerror' value='1747' type='xmlParserErrors' info='1747'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD' file='xmlerror' value='1748' type='xmlParserErrors' info='1748'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD' file='xmlerror' value='1749' type='xmlParserErrors' info='1749'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD' file='xmlerror' value='1750' type='xmlParserErrors' info='1750'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD' file='xmlerror' value='1751' type='xmlParserErrors' info='1751'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD' file='xmlerror' value='1752' type='xmlParserErrors' info='1752'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_TYPE' file='xmlerror' value='1753' type='xmlParserErrors' info='1753'/>
-    <enum name='XML_SCHEMAP_UNKNOWN_UNION_CHILD' file='xmlerror' value='1754' type='xmlParserErrors' info='1754'/>
-    <enum name='XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH' file='xmlerror' value='3086' type='xmlParserErrors' info='3085'/>
-    <enum name='XML_SCHEMAP_WARN_ATTR_REDECL_PROH' file='xmlerror' value='3085' type='xmlParserErrors' info='3085'/>
-    <enum name='XML_SCHEMAP_WARN_SKIP_SCHEMA' file='xmlerror' value='3083' type='xmlParserErrors' info='3083'/>
-    <enum name='XML_SCHEMAP_WARN_UNLOCATED_SCHEMA' file='xmlerror' value='3084' type='xmlParserErrors' info='3084'/>
-    <enum name='XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER' file='xmlerror' value='1792' type='xmlParserErrors' info='1792'/>
-    <enum name='XML_SCHEMAS_ANYSIMPLETYPE' file='schemasInternals' value='46' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ANYTYPE' file='schemasInternals' value='45' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ANYURI' file='schemasInternals' value='29' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_BASE64BINARY' file='schemasInternals' value='44' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_BOOLEAN' file='schemasInternals' value='15' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_BYTE' file='schemasInternals' value='41' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_DATE' file='schemasInternals' value='10' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_DATETIME' file='schemasInternals' value='11' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_DECIMAL' file='schemasInternals' value='3' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_DOUBLE' file='schemasInternals' value='14' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_DURATION' file='schemasInternals' value='12' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ENTITIES' file='schemasInternals' value='27' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ENTITY' file='schemasInternals' value='26' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ERR_' file='xmlschemas' value='24' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_ATTRINVALID' file='xmlschemas' value='21' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_ATTRUNKNOWN' file='xmlschemas' value='20' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_CONSTRUCT' file='xmlschemas' value='17' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_ELEMCONT' file='xmlschemas' value='10' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_EXTRACONTENT' file='xmlschemas' value='13' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_FACET' file='xmlschemas' value='23' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_HAVEDEFAULT' file='xmlschemas' value='11' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_INTERNAL' file='xmlschemas' value='18' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_INVALIDATTR' file='xmlschemas' value='14' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_INVALIDELEM' file='xmlschemas' value='15' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_ISABSTRACT' file='xmlschemas' value='8' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_MISSING' file='xmlschemas' value='4' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOROLLBACK' file='xmlschemas' value='7' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOROOT' file='xmlschemas' value='1' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTDETERMINIST' file='xmlschemas' value='16' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTEMPTY' file='xmlschemas' value='9' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTNILLABLE' file='xmlschemas' value='12' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTSIMPLE' file='xmlschemas' value='19' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTTOPLEVEL' file='xmlschemas' value='3' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_NOTYPE' file='xmlschemas' value='6' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_OK' file='xmlschemas' value='0' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_UNDECLAREDELEM' file='xmlschemas' value='2' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_VALUE' file='xmlschemas' value='22' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_WRONGELEM' file='xmlschemas' value='5' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_ERR_XXX' file='xmlschemas' value='25' type='xmlSchemaValidError'/>
-    <enum name='XML_SCHEMAS_FLOAT' file='schemasInternals' value='13' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_GDAY' file='schemasInternals' value='5' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_GMONTH' file='schemasInternals' value='6' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_GMONTHDAY' file='schemasInternals' value='7' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_GYEAR' file='schemasInternals' value='8' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_GYEARMONTH' file='schemasInternals' value='9' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_HEXBINARY' file='schemasInternals' value='43' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ID' file='schemasInternals' value='23' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_IDREF' file='schemasInternals' value='24' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_IDREFS' file='schemasInternals' value='25' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_INT' file='schemasInternals' value='35' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_INTEGER' file='schemasInternals' value='30' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_LANGUAGE' file='schemasInternals' value='17' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_LONG' file='schemasInternals' value='37' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NAME' file='schemasInternals' value='20' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NCNAME' file='schemasInternals' value='22' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NINTEGER' file='schemasInternals' value='32' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NMTOKEN' file='schemasInternals' value='18' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NMTOKENS' file='schemasInternals' value='19' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NNINTEGER' file='schemasInternals' value='33' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NORMSTRING' file='schemasInternals' value='2' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NOTATION' file='schemasInternals' value='28' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_NPINTEGER' file='schemasInternals' value='31' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_PINTEGER' file='schemasInternals' value='34' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_QNAME' file='schemasInternals' value='21' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_SHORT' file='schemasInternals' value='39' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_STRING' file='schemasInternals' value='1' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_TIME' file='schemasInternals' value='4' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_TOKEN' file='schemasInternals' value='16' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_UBYTE' file='schemasInternals' value='42' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_UINT' file='schemasInternals' value='36' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_ULONG' file='schemasInternals' value='38' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_UNKNOWN' file='schemasInternals' value='0' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMAS_USHORT' file='schemasInternals' value='40' type='xmlSchemaValType'/>
-    <enum name='XML_SCHEMATRONV_ASSERT' file='xmlerror' value='4000' type='xmlParserErrors' info='4000'/>
-    <enum name='XML_SCHEMATRONV_REPORT' file='xmlerror' value='4001' type='xmlParserErrors'/>
-    <enum name='XML_SCHEMATRON_OUT_BUFFER' file='schematron' value='512' type='xmlSchematronValidOptions' info='output to a buffer'/>
-    <enum name='XML_SCHEMATRON_OUT_ERROR' file='schematron' value='8' type='xmlSchematronValidOptions' info='output via xmlStructuredErrorFunc'/>
-    <enum name='XML_SCHEMATRON_OUT_FILE' file='schematron' value='256' type='xmlSchematronValidOptions' info='output to a file descriptor'/>
-    <enum name='XML_SCHEMATRON_OUT_IO' file='schematron' value='1024' type='xmlSchematronValidOptions' info=' output to I/O mechanism'/>
-    <enum name='XML_SCHEMATRON_OUT_QUIET' file='schematron' value='1' type='xmlSchematronValidOptions' info='quiet no report'/>
-    <enum name='XML_SCHEMATRON_OUT_TEXT' file='schematron' value='2' type='xmlSchematronValidOptions' info='build a textual report'/>
-    <enum name='XML_SCHEMATRON_OUT_XML' file='schematron' value='4' type='xmlSchematronValidOptions' info='output SVRL'/>
-    <enum name='XML_SCHEMAV_ATTRINVALID' file='xmlerror' value='1821' type='xmlParserErrors' info='1821'/>
-    <enum name='XML_SCHEMAV_ATTRUNKNOWN' file='xmlerror' value='1820' type='xmlParserErrors' info='1820'/>
-    <enum name='XML_SCHEMAV_CONSTRUCT' file='xmlerror' value='1817' type='xmlParserErrors' info='1817'/>
-    <enum name='XML_SCHEMAV_CVC_ATTRIBUTE_1' file='xmlerror' value='1861' type='xmlParserErrors' info='1861'/>
-    <enum name='XML_SCHEMAV_CVC_ATTRIBUTE_2' file='xmlerror' value='1862' type='xmlParserErrors' info='1862'/>
-    <enum name='XML_SCHEMAV_CVC_ATTRIBUTE_3' file='xmlerror' value='1863' type='xmlParserErrors' info='1863'/>
-    <enum name='XML_SCHEMAV_CVC_ATTRIBUTE_4' file='xmlerror' value='1864' type='xmlParserErrors' info='1864'/>
-    <enum name='XML_SCHEMAV_CVC_AU' file='xmlerror' value='1874' type='xmlParserErrors' info='1874'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_1' file='xmlerror' value='1873' type='xmlParserErrors' info='1873'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1' file='xmlerror' value='1841' type='xmlParserErrors' info='1841'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2' file='xmlerror' value='1842' type='xmlParserErrors' info='1842'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3' file='xmlerror' value='1843' type='xmlParserErrors' info='1843'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4' file='xmlerror' value='1844' type='xmlParserErrors' info='1844'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1' file='xmlerror' value='1865' type='xmlParserErrors' info='1865'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1' file='xmlerror' value='1866' type='xmlParserErrors' info='1866'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2' file='xmlerror' value='1867' type='xmlParserErrors' info='1867'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_4' file='xmlerror' value='1868' type='xmlParserErrors' info='1868'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1' file='xmlerror' value='1869' type='xmlParserErrors' info='1869'/>
-    <enum name='XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2' file='xmlerror' value='1870' type='xmlParserErrors' info='1870'/>
-    <enum name='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1' file='xmlerror' value='1824' type='xmlParserErrors' info='1824'/>
-    <enum name='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2' file='xmlerror' value='1825' type='xmlParserErrors' info='1825'/>
-    <enum name='XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3' file='xmlerror' value='1826' type='xmlParserErrors' info='1826'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_1' file='xmlerror' value='1845' type='xmlParserErrors' info='1845'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_2' file='xmlerror' value='1846' type='xmlParserErrors' info='1846'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_3_1' file='xmlerror' value='1847' type='xmlParserErrors' info='1847'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_3_2_1' file='xmlerror' value='1848' type='xmlParserErrors' info='1848'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_3_2_2' file='xmlerror' value='1849' type='xmlParserErrors' info='1849'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_4_1' file='xmlerror' value='1850' type='xmlParserErrors' info='1850'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_4_2' file='xmlerror' value='1851' type='xmlParserErrors' info='1851'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_4_3' file='xmlerror' value='1852' type='xmlParserErrors' info='1852'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_1_1' file='xmlerror' value='1853' type='xmlParserErrors' info='1853'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_1_2' file='xmlerror' value='1854' type='xmlParserErrors' info='1854'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_2_1' file='xmlerror' value='1855' type='xmlParserErrors' info='1855'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_2_2_1' file='xmlerror' value='1856' type='xmlParserErrors' info='1856'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_2_2_2_1' file='xmlerror' value='1857' type='xmlParserErrors' info='1857'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_5_2_2_2_2' file='xmlerror' value='1858' type='xmlParserErrors' info='1858'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_6' file='xmlerror' value='1859' type='xmlParserErrors' info='1859'/>
-    <enum name='XML_SCHEMAV_CVC_ELT_7' file='xmlerror' value='1860' type='xmlParserErrors' info='1860'/>
-    <enum name='XML_SCHEMAV_CVC_ENUMERATION_VALID' file='xmlerror' value='1840' type='xmlParserErrors' info='1840'/>
-    <enum name='XML_SCHEMAV_CVC_FACET_VALID' file='xmlerror' value='1829' type='xmlParserErrors' info='1829'/>
-    <enum name='XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID' file='xmlerror' value='1838' type='xmlParserErrors' info='1838'/>
-    <enum name='XML_SCHEMAV_CVC_IDC' file='xmlerror' value='1877' type='xmlParserErrors' info='1877'/>
-    <enum name='XML_SCHEMAV_CVC_LENGTH_VALID' file='xmlerror' value='1830' type='xmlParserErrors' info='1830'/>
-    <enum name='XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID' file='xmlerror' value='1836' type='xmlParserErrors' info='1836'/>
-    <enum name='XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID' file='xmlerror' value='1834' type='xmlParserErrors' info='1834'/>
-    <enum name='XML_SCHEMAV_CVC_MAXLENGTH_VALID' file='xmlerror' value='1832' type='xmlParserErrors' info='1832'/>
-    <enum name='XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID' file='xmlerror' value='1835' type='xmlParserErrors' info='1835'/>
-    <enum name='XML_SCHEMAV_CVC_MININCLUSIVE_VALID' file='xmlerror' value='1833' type='xmlParserErrors' info='1833'/>
-    <enum name='XML_SCHEMAV_CVC_MINLENGTH_VALID' file='xmlerror' value='1831' type='xmlParserErrors' info='1831'/>
-    <enum name='XML_SCHEMAV_CVC_PATTERN_VALID' file='xmlerror' value='1839' type='xmlParserErrors' info='1839'/>
-    <enum name='XML_SCHEMAV_CVC_TOTALDIGITS_VALID' file='xmlerror' value='1837' type='xmlParserErrors' info='1837'/>
-    <enum name='XML_SCHEMAV_CVC_TYPE_1' file='xmlerror' value='1875' type='xmlParserErrors' info='1875'/>
-    <enum name='XML_SCHEMAV_CVC_TYPE_2' file='xmlerror' value='1876' type='xmlParserErrors' info='1876'/>
-    <enum name='XML_SCHEMAV_CVC_TYPE_3_1_1' file='xmlerror' value='1827' type='xmlParserErrors' info='1827'/>
-    <enum name='XML_SCHEMAV_CVC_TYPE_3_1_2' file='xmlerror' value='1828' type='xmlParserErrors' info='1828'/>
-    <enum name='XML_SCHEMAV_CVC_WILDCARD' file='xmlerror' value='1878' type='xmlParserErrors' info='1878'/>
-    <enum name='XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING' file='xmlerror' value='1872' type='xmlParserErrors' info='1872'/>
-    <enum name='XML_SCHEMAV_ELEMCONT' file='xmlerror' value='1810' type='xmlParserErrors' info='1810'/>
-    <enum name='XML_SCHEMAV_ELEMENT_CONTENT' file='xmlerror' value='1871' type='xmlParserErrors' info='1871'/>
-    <enum name='XML_SCHEMAV_EXTRACONTENT' file='xmlerror' value='1813' type='xmlParserErrors' info='1813'/>
-    <enum name='XML_SCHEMAV_FACET' file='xmlerror' value='1823' type='xmlParserErrors' info='1823'/>
-    <enum name='XML_SCHEMAV_HAVEDEFAULT' file='xmlerror' value='1811' type='xmlParserErrors' info='1811'/>
-    <enum name='XML_SCHEMAV_INTERNAL' file='xmlerror' value='1818' type='xmlParserErrors' info='1818'/>
-    <enum name='XML_SCHEMAV_INVALIDATTR' file='xmlerror' value='1814' type='xmlParserErrors' info='1814'/>
-    <enum name='XML_SCHEMAV_INVALIDELEM' file='xmlerror' value='1815' type='xmlParserErrors' info='1815'/>
-    <enum name='XML_SCHEMAV_ISABSTRACT' file='xmlerror' value='1808' type='xmlParserErrors' info='1808'/>
-    <enum name='XML_SCHEMAV_MISC' file='xmlerror' value='1879' type='xmlParserErrors' info='1879'/>
-    <enum name='XML_SCHEMAV_MISSING' file='xmlerror' value='1804' type='xmlParserErrors' info='1804'/>
-    <enum name='XML_SCHEMAV_NOROLLBACK' file='xmlerror' value='1807' type='xmlParserErrors' info='1807'/>
-    <enum name='XML_SCHEMAV_NOROOT' file='xmlerror' value='1801' type='xmlParserErrors'/>
-    <enum name='XML_SCHEMAV_NOTDETERMINIST' file='xmlerror' value='1816' type='xmlParserErrors' info='1816'/>
-    <enum name='XML_SCHEMAV_NOTEMPTY' file='xmlerror' value='1809' type='xmlParserErrors' info='1809'/>
-    <enum name='XML_SCHEMAV_NOTNILLABLE' file='xmlerror' value='1812' type='xmlParserErrors' info='1812'/>
-    <enum name='XML_SCHEMAV_NOTSIMPLE' file='xmlerror' value='1819' type='xmlParserErrors' info='1819'/>
-    <enum name='XML_SCHEMAV_NOTTOPLEVEL' file='xmlerror' value='1803' type='xmlParserErrors' info='1803'/>
-    <enum name='XML_SCHEMAV_NOTYPE' file='xmlerror' value='1806' type='xmlParserErrors' info='1806'/>
-    <enum name='XML_SCHEMAV_UNDECLAREDELEM' file='xmlerror' value='1802' type='xmlParserErrors' info='1802'/>
-    <enum name='XML_SCHEMAV_VALUE' file='xmlerror' value='1822' type='xmlParserErrors' info='1822'/>
-    <enum name='XML_SCHEMAV_WRONGELEM' file='xmlerror' value='1805' type='xmlParserErrors' info='1805'/>
-    <enum name='XML_SCHEMA_CONTENT_ANY' file='schemasInternals' value='7' type='xmlSchemaContentType'/>
-    <enum name='XML_SCHEMA_CONTENT_BASIC' file='schemasInternals' value='6' type='xmlSchemaContentType'/>
-    <enum name='XML_SCHEMA_CONTENT_ELEMENTS' file='schemasInternals' value='2' type='xmlSchemaContentType'/>
-    <enum name='XML_SCHEMA_CONTENT_EMPTY' file='schemasInternals' value='1' type='xmlSchemaContentType'/>
-    <enum name='XML_SCHEMA_CONTENT_MIXED' file='schemasInternals' value='3' type='xmlSchemaContentType'/>
-    <enum name='XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS' file='schemasInternals' value='5' type='xmlSchemaContentType' info='Obsolete'/>
-    <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_ATTR_USE_PROHIB' file='schemasInternals' value='2001' type='xmlSchemaTypeType'/>
-    <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'/>
-    <enum name='XML_SCHEMA_FACET_MAXEXCLUSIVE' file='schemasInternals' value='1003' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_MAXINCLUSIVE' file='schemasInternals' value='1002' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_MAXLENGTH' file='schemasInternals' value='1010' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_MINEXCLUSIVE' file='schemasInternals' value='1001' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_MININCLUSIVE' file='schemasInternals' value='1000' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_MINLENGTH' file='schemasInternals' value='1011' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_PATTERN' file='schemasInternals' value='1006' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_TOTALDIGITS' file='schemasInternals' value='1004' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_FACET_WHITESPACE' file='schemasInternals' value='1008' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ALL' file='schemasInternals' value='8' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ANY' file='schemasInternals' value='2' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ANY_ATTRIBUTE' file='schemasInternals' value='21' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ATTRIBUTE' file='schemasInternals' value='15' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ATTRIBUTEGROUP' file='schemasInternals' value='16' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ATTRIBUTE_USE' file='schemasInternals' value='26' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_BASIC' file='schemasInternals' value='1' type='xmlSchemaTypeType' info='A built-in datatype'/>
-    <enum name='XML_SCHEMA_TYPE_CHOICE' file='schemasInternals' value='7' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_COMPLEX' file='schemasInternals' value='5' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_COMPLEX_CONTENT' file='schemasInternals' value='10' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_ELEMENT' file='schemasInternals' value='14' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_EXTENSION' file='schemasInternals' value='13' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_FACET' file='schemasInternals' value='3' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_GROUP' file='schemasInternals' value='17' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_IDC_KEY' file='schemasInternals' value='23' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_IDC_KEYREF' file='schemasInternals' value='24' type='xmlSchemaTypeType'/>
-    <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'/>
-    <enum name='XML_SCHEMA_TYPE_SIMPLE_CONTENT' file='schemasInternals' value='9' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_UNION' file='schemasInternals' value='20' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_TYPE_UR' file='schemasInternals' value='11' type='xmlSchemaTypeType'/>
-    <enum name='XML_SCHEMA_VAL_VC_I_CREATE' file='xmlschemas' value='1' type='xmlSchemaValidOption' info=' Default/fixed: create an attribute node
-* or an element&apos;s text node on the instance.
-*'/>
-    <enum name='XML_SCHEMA_WHITESPACE_COLLAPSE' file='xmlschemastypes' value='3' type='xmlSchemaWhitespaceValueType'/>
-    <enum name='XML_SCHEMA_WHITESPACE_PRESERVE' file='xmlschemastypes' value='1' type='xmlSchemaWhitespaceValueType'/>
-    <enum name='XML_SCHEMA_WHITESPACE_REPLACE' file='xmlschemastypes' value='2' type='xmlSchemaWhitespaceValueType'/>
-    <enum name='XML_SCHEMA_WHITESPACE_UNKNOWN' file='xmlschemastypes' value='0' type='xmlSchemaWhitespaceValueType'/>
-    <enum name='XML_STATUS_CATASTROPHIC_ERROR' file='parser' value='8' type='xmlParserStatus'/>
-    <enum name='XML_STATUS_DTD_VALIDATION_FAILED' file='parser' value='4' type='xmlParserStatus'/>
-    <enum name='XML_STATUS_NOT_NS_WELL_FORMED' file='parser' value='2' type='xmlParserStatus'/>
-    <enum name='XML_STATUS_NOT_WELL_FORMED' file='parser' value='1' type='xmlParserStatus'/>
-    <enum name='XML_TEXTREADER_MODE_CLOSED' file='xmlreader' value='4' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXTREADER_MODE_EOF' file='xmlreader' value='3' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXTREADER_MODE_ERROR' file='xmlreader' value='2' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXTREADER_MODE_INITIAL' file='xmlreader' value='0' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXTREADER_MODE_INTERACTIVE' file='xmlreader' value='1' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXTREADER_MODE_READING' file='xmlreader' value='5' type='xmlTextReaderMode'/>
-    <enum name='XML_TEXT_NODE' file='tree' value='3' type='xmlElementType'/>
-    <enum name='XML_TREE_INVALID_DEC' file='xmlerror' value='1301' type='xmlParserErrors' info='1301'/>
-    <enum name='XML_TREE_INVALID_HEX' file='xmlerror' value='1300' type='xmlParserErrors'/>
-    <enum name='XML_TREE_NOT_UTF8' file='xmlerror' value='1303' type='xmlParserErrors' info='1303'/>
-    <enum name='XML_TREE_UNTERMINATED_ENTITY' file='xmlerror' value='1302' type='xmlParserErrors' info='1302'/>
-    <enum name='XML_WAR_CATALOG_PI' file='xmlerror' value='93' type='xmlParserErrors' info='93'/>
-    <enum name='XML_WAR_ENCODING_MISMATCH' file='xmlerror' value='113' type='xmlParserErrors' info='113'/>
-    <enum name='XML_WAR_ENTITY_REDEFINED' file='xmlerror' value='107' type='xmlParserErrors' info='107'/>
-    <enum name='XML_WAR_LANG_VALUE' file='xmlerror' value='98' type='xmlParserErrors' info='98'/>
-    <enum name='XML_WAR_NS_COLUMN' file='xmlerror' value='106' type='xmlParserErrors' info='106'/>
-    <enum name='XML_WAR_NS_URI' file='xmlerror' value='99' type='xmlParserErrors' info='99'/>
-    <enum name='XML_WAR_NS_URI_RELATIVE' file='xmlerror' value='100' type='xmlParserErrors' info='100'/>
-    <enum name='XML_WAR_SPACE_VALUE' file='xmlerror' value='102' type='xmlParserErrors' info='102'/>
-    <enum name='XML_WAR_UNDECLARED_ENTITY' file='xmlerror' value='27' type='xmlParserErrors' info='27'/>
-    <enum name='XML_WAR_UNKNOWN_VERSION' file='xmlerror' value='97' type='xmlParserErrors' info='97'/>
-    <enum name='XML_WITH_AUTOMATA' file='parser' value='23' type='xmlFeature'/>
-    <enum name='XML_WITH_C14N' file='parser' value='14' type='xmlFeature'/>
-    <enum name='XML_WITH_CATALOG' file='parser' value='15' type='xmlFeature'/>
-    <enum name='XML_WITH_DEBUG' file='parser' value='28' type='xmlFeature'/>
-    <enum name='XML_WITH_DEBUG_MEM' file='parser' value='29' type='xmlFeature'/>
-    <enum name='XML_WITH_DEBUG_RUN' file='parser' value='30' type='xmlFeature' info='unused'/>
-    <enum name='XML_WITH_EXPR' file='parser' value='24' type='xmlFeature'/>
-    <enum name='XML_WITH_FTP' file='parser' value='9' type='xmlFeature'/>
-    <enum name='XML_WITH_HTML' file='parser' value='12' type='xmlFeature'/>
-    <enum name='XML_WITH_HTTP' file='parser' value='10' type='xmlFeature'/>
-    <enum name='XML_WITH_ICONV' file='parser' value='19' type='xmlFeature'/>
-    <enum name='XML_WITH_ICU' file='parser' value='32' type='xmlFeature'/>
-    <enum name='XML_WITH_ISO8859X' file='parser' value='20' type='xmlFeature'/>
-    <enum name='XML_WITH_LEGACY' file='parser' value='13' type='xmlFeature'/>
-    <enum name='XML_WITH_LZMA' file='parser' value='33' type='xmlFeature'/>
-    <enum name='XML_WITH_MODULES' file='parser' value='27' type='xmlFeature'/>
-    <enum name='XML_WITH_NONE' file='parser' value='99999' type='xmlFeature' info=' just to be sure of allocation size'/>
-    <enum name='XML_WITH_OUTPUT' file='parser' value='3' type='xmlFeature'/>
-    <enum name='XML_WITH_PATTERN' file='parser' value='6' type='xmlFeature'/>
-    <enum name='XML_WITH_PUSH' file='parser' value='4' type='xmlFeature'/>
-    <enum name='XML_WITH_READER' file='parser' value='5' type='xmlFeature'/>
-    <enum name='XML_WITH_REGEXP' file='parser' value='22' type='xmlFeature'/>
-    <enum name='XML_WITH_RELAXNG' file='parser' value='34' type='xmlFeature' info='since 2.14.0'/>
-    <enum name='XML_WITH_SAX1' file='parser' value='8' type='xmlFeature'/>
-    <enum name='XML_WITH_SCHEMAS' file='parser' value='25' type='xmlFeature'/>
-    <enum name='XML_WITH_SCHEMATRON' file='parser' value='26' type='xmlFeature'/>
-    <enum name='XML_WITH_THREAD' file='parser' value='1' type='xmlFeature'/>
-    <enum name='XML_WITH_TREE' file='parser' value='2' type='xmlFeature'/>
-    <enum name='XML_WITH_UNICODE' file='parser' value='21' type='xmlFeature'/>
-    <enum name='XML_WITH_VALID' file='parser' value='11' type='xmlFeature'/>
-    <enum name='XML_WITH_WRITER' file='parser' value='7' type='xmlFeature'/>
-    <enum name='XML_WITH_XINCLUDE' file='parser' value='18' type='xmlFeature'/>
-    <enum name='XML_WITH_XPATH' file='parser' value='16' type='xmlFeature'/>
-    <enum name='XML_WITH_XPTR' file='parser' value='17' type='xmlFeature'/>
-    <enum name='XML_WITH_ZLIB' file='parser' value='31' type='xmlFeature'/>
-    <enum name='XML_XINCLUDE_BUILD_FAILED' file='xmlerror' value='1609' type='xmlParserErrors' info='1609'/>
-    <enum name='XML_XINCLUDE_DEPRECATED_NS' file='xmlerror' value='1617' type='xmlParserErrors' info='1617'/>
-    <enum name='XML_XINCLUDE_END' file='tree' value='20' type='xmlElementType' info=' XML_DOCB_DOCUMENT_NODE=	21 removed'/>
-    <enum name='XML_XINCLUDE_ENTITY_DEF_MISMATCH' file='xmlerror' value='1602' type='xmlParserErrors' info='1602'/>
-    <enum name='XML_XINCLUDE_FALLBACKS_IN_INCLUDE' file='xmlerror' value='1615' type='xmlParserErrors' info='1615'/>
-    <enum name='XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE' file='xmlerror' value='1616' type='xmlParserErrors' info='1616'/>
-    <enum name='XML_XINCLUDE_FRAGMENT_ID' file='xmlerror' value='1618' type='xmlParserErrors' info='1618'/>
-    <enum name='XML_XINCLUDE_HREF_URI' file='xmlerror' value='1605' type='xmlParserErrors' info='1605'/>
-    <enum name='XML_XINCLUDE_INCLUDE_IN_INCLUDE' file='xmlerror' value='1614' type='xmlParserErrors' info='1614'/>
-    <enum name='XML_XINCLUDE_INVALID_CHAR' file='xmlerror' value='1608' type='xmlParserErrors' info='1608'/>
-    <enum name='XML_XINCLUDE_MULTIPLE_ROOT' file='xmlerror' value='1611' type='xmlParserErrors' info='1611'/>
-    <enum name='XML_XINCLUDE_NO_FALLBACK' file='xmlerror' value='1604' type='xmlParserErrors' info='1604'/>
-    <enum name='XML_XINCLUDE_NO_HREF' file='xmlerror' value='1603' type='xmlParserErrors' info='1603'/>
-    <enum name='XML_XINCLUDE_PARSE_VALUE' file='xmlerror' value='1601' type='xmlParserErrors' info='1601'/>
-    <enum name='XML_XINCLUDE_RECURSION' file='xmlerror' value='1600' type='xmlParserErrors'/>
-    <enum name='XML_XINCLUDE_START' file='tree' value='19' type='xmlElementType'/>
-    <enum name='XML_XINCLUDE_TEXT_DOCUMENT' file='xmlerror' value='1607' type='xmlParserErrors' info='1607'/>
-    <enum name='XML_XINCLUDE_TEXT_FRAGMENT' file='xmlerror' value='1606' type='xmlParserErrors' info='1606'/>
-    <enum name='XML_XINCLUDE_UNKNOWN_ENCODING' file='xmlerror' value='1610' type='xmlParserErrors' info='1610'/>
-    <enum name='XML_XINCLUDE_XPTR_FAILED' file='xmlerror' value='1612' type='xmlParserErrors' info='1612'/>
-    <enum name='XML_XINCLUDE_XPTR_RESULT' file='xmlerror' value='1613' type='xmlParserErrors' info='1613'/>
-    <enum name='XML_XPATH_ENCODING_ERROR' file='xmlerror' value='1220' type='xmlParserErrors' info='1220'/>
-    <enum name='XML_XPATH_EXPRESSION_OK' file='xmlerror' value='1200' type='xmlParserErrors'/>
-    <enum name='XML_XPATH_EXPR_ERROR' file='xmlerror' value='1207' type='xmlParserErrors' info='1207'/>
-    <enum name='XML_XPATH_INVALID_ARITY' file='xmlerror' value='1212' type='xmlParserErrors' info='1212'/>
-    <enum name='XML_XPATH_INVALID_CHAR_ERROR' file='xmlerror' value='1221' type='xmlParserErrors' info='1221'/>
-    <enum name='XML_XPATH_INVALID_CTXT_POSITION' file='xmlerror' value='1214' type='xmlParserErrors' info='1214'/>
-    <enum name='XML_XPATH_INVALID_CTXT_SIZE' file='xmlerror' value='1213' type='xmlParserErrors' info='1213'/>
-    <enum name='XML_XPATH_INVALID_OPERAND' file='xmlerror' value='1210' type='xmlParserErrors' info='1210'/>
-    <enum name='XML_XPATH_INVALID_PREDICATE_ERROR' file='xmlerror' value='1206' type='xmlParserErrors' info='1206'/>
-    <enum name='XML_XPATH_INVALID_TYPE' file='xmlerror' value='1211' type='xmlParserErrors' info='1211'/>
-    <enum name='XML_XPATH_MEMORY_ERROR' file='xmlerror' value='1215' type='xmlParserErrors' info='1215'/>
-    <enum name='XML_XPATH_NUMBER_ERROR' file='xmlerror' value='1201' type='xmlParserErrors' info='1201'/>
-    <enum name='XML_XPATH_START_LITERAL_ERROR' file='xmlerror' value='1203' type='xmlParserErrors' info='1203'/>
-    <enum name='XML_XPATH_UNCLOSED_ERROR' file='xmlerror' value='1208' type='xmlParserErrors' info='1208'/>
-    <enum name='XML_XPATH_UNDEF_PREFIX_ERROR' file='xmlerror' value='1219' type='xmlParserErrors' info='1219'/>
-    <enum name='XML_XPATH_UNDEF_VARIABLE_ERROR' file='xmlerror' value='1205' type='xmlParserErrors' info='1205'/>
-    <enum name='XML_XPATH_UNFINISHED_LITERAL_ERROR' file='xmlerror' value='1202' type='xmlParserErrors' info='1202'/>
-    <enum name='XML_XPATH_UNKNOWN_FUNC_ERROR' file='xmlerror' value='1209' type='xmlParserErrors' info='1209'/>
-    <enum name='XML_XPATH_VARIABLE_REF_ERROR' file='xmlerror' value='1204' type='xmlParserErrors' info='1204'/>
-    <enum name='XML_XPTR_CHILDSEQ_START' file='xmlerror' value='1901' type='xmlParserErrors' info='1901'/>
-    <enum name='XML_XPTR_EVAL_FAILED' file='xmlerror' value='1902' type='xmlParserErrors' info='1902'/>
-    <enum name='XML_XPTR_EXTRA_OBJECTS' file='xmlerror' value='1903' type='xmlParserErrors' info='1903'/>
-    <enum name='XML_XPTR_RESOURCE_ERROR' file='xmlerror' value='1217' type='xmlParserErrors' info='1217'/>
-    <enum name='XML_XPTR_SUB_RESOURCE_ERROR' file='xmlerror' value='1218' type='xmlParserErrors' info='1218'/>
-    <enum name='XML_XPTR_SYNTAX_ERROR' file='xmlerror' value='1216' type='xmlParserErrors' info='1216'/>
-    <enum name='XML_XPTR_UNKNOWN_SCHEME' file='xmlerror' value='1900' type='xmlParserErrors'/>
-    <enum name='XPATH_BOOLEAN' file='xpath' value='2' type='xmlXPathObjectType'/>
-    <enum name='XPATH_ENCODING_ERROR' file='xpath' value='20' type='xmlXPathError'/>
-    <enum name='XPATH_EXPRESSION_OK' file='xpath' value='0' type='xmlXPathError'/>
-    <enum name='XPATH_EXPR_ERROR' file='xpath' value='7' type='xmlXPathError'/>
-    <enum name='XPATH_FORBID_VARIABLE_ERROR' file='xpath' value='24' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_ARITY' file='xpath' value='12' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_CHAR_ERROR' file='xpath' value='21' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_CTXT' file='xpath' value='22' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_CTXT_POSITION' file='xpath' value='14' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_CTXT_SIZE' file='xpath' value='13' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_OPERAND' file='xpath' value='10' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_PREDICATE_ERROR' file='xpath' value='6' type='xmlXPathError'/>
-    <enum name='XPATH_INVALID_TYPE' file='xpath' value='11' type='xmlXPathError'/>
-    <enum name='XPATH_MEMORY_ERROR' file='xpath' value='15' type='xmlXPathError'/>
-    <enum name='XPATH_NODESET' file='xpath' value='1' type='xmlXPathObjectType'/>
-    <enum name='XPATH_NUMBER' file='xpath' value='3' type='xmlXPathObjectType'/>
-    <enum name='XPATH_NUMBER_ERROR' file='xpath' value='1' type='xmlXPathError'/>
-    <enum name='XPATH_OP_LIMIT_EXCEEDED' file='xpath' value='25' type='xmlXPathError'/>
-    <enum name='XPATH_RECURSION_LIMIT_EXCEEDED' file='xpath' value='26' type='xmlXPathError'/>
-    <enum name='XPATH_STACK_ERROR' file='xpath' value='23' type='xmlXPathError'/>
-    <enum name='XPATH_START_LITERAL_ERROR' file='xpath' value='3' type='xmlXPathError'/>
-    <enum name='XPATH_STRING' file='xpath' value='4' type='xmlXPathObjectType'/>
-    <enum name='XPATH_UNCLOSED_ERROR' file='xpath' value='8' type='xmlXPathError'/>
-    <enum name='XPATH_UNDEFINED' file='xpath' value='0' type='xmlXPathObjectType'/>
-    <enum name='XPATH_UNDEF_PREFIX_ERROR' file='xpath' value='19' type='xmlXPathError'/>
-    <enum name='XPATH_UNDEF_VARIABLE_ERROR' file='xpath' value='5' type='xmlXPathError'/>
-    <enum name='XPATH_UNFINISHED_LITERAL_ERROR' file='xpath' value='2' type='xmlXPathError'/>
-    <enum name='XPATH_UNKNOWN_FUNC_ERROR' file='xpath' value='9' type='xmlXPathError'/>
-    <enum name='XPATH_USERS' file='xpath' value='8' type='xmlXPathObjectType'/>
-    <enum name='XPATH_VARIABLE_REF_ERROR' file='xpath' value='4' type='xmlXPathError'/>
-    <enum name='XPATH_XSLT_TREE' file='xpath' value='9' type='xmlXPathObjectType' info=' An XSLT value tree, non modifiable'/>
-    <enum name='XPTR_RESOURCE_ERROR' file='xpath' value='17' type='xmlXPathError'/>
-    <enum name='XPTR_SUB_RESOURCE_ERROR' file='xpath' value='18' type='xmlXPathError'/>
-    <enum name='XPTR_SYNTAX_ERROR' file='xpath' value='16' type='xmlXPathError'/>
-    <typedef name='htmlDocPtr' file='HTMLparser' type='xmlDocPtr'/>
-    <struct name='htmlElemDesc' file='HTMLparser' type='struct _htmlElemDesc'>
-      <field name='name' type='const char *'/>
-      <field name='startTag' type='char'/>
-      <field name='endTag' type='char'/>
-      <field name='saveEndTag' type='char'/>
-      <field name='empty' type='char'/>
-      <field name='depr' type='char'/>
-      <field name='dtd' type='char'/>
-      <field name='isinline' type='char'/>
-      <field name='desc' type='const char *'/>
-      <field name='subelts' type='const char **'/>
-      <field name='defaultsubelt' type='const char *'/>
-      <field name='attrs_opt' type='const char **'/>
-      <field name='attrs_depr' type='const char **'/>
-      <field name='attrs_req' type='const char **'/>
-      <field name='dataMode' type='int'/>
-    </struct>
-    <typedef name='htmlElemDescPtr' file='HTMLparser' type='htmlElemDesc *'/>
-    <struct name='htmlEntityDesc' file='HTMLparser' type='struct _htmlEntityDesc'>
-      <field name='value' type='unsigned int'/>
-      <field name='name' type='const char *'/>
-      <field name='desc' type='const char *'/>
-    </struct>
-    <typedef name='htmlEntityDescPtr' file='HTMLparser' type='htmlEntityDesc *'/>
-    <typedef name='htmlNodePtr' file='HTMLparser' type='xmlNodePtr'/>
-    <typedef name='htmlParserCtxt' file='HTMLparser' type='xmlParserCtxt'/>
-    <typedef name='htmlParserCtxtPtr' file='HTMLparser' type='xmlParserCtxtPtr'/>
-    <typedef name='htmlParserInput' file='HTMLparser' type='xmlParserInput'/>
-    <typedef name='htmlParserInputPtr' file='HTMLparser' type='xmlParserInputPtr'/>
-    <typedef name='htmlParserNodeInfo' file='HTMLparser' type='xmlParserNodeInfo'/>
-    <typedef name='htmlParserOption' file='HTMLparser' type='enum'/>
-    <typedef name='htmlSAXHandler' file='HTMLparser' type='xmlSAXHandler'/>
-    <typedef name='htmlSAXHandlerPtr' file='HTMLparser' type='xmlSAXHandlerPtr'/>
-    <typedef name='htmlStatus' file='HTMLparser' type='enum'/>
-    <typedef name='xlinkActuate' file='xlink' type='enum'/>
-    <typedef name='xlinkHRef' file='xlink' type='xmlChar *'/>
-    <struct name='xlinkHandler' file='xlink' type='struct _xlinkHandler'>
-      <field name='simple' type='xlinkSimpleLinkFunk'/>
-      <field name='extended' type='xlinkExtendedLinkFunk'/>
-      <field name='set' type='xlinkExtendedLinkSetFunk'/>
-    </struct>
-    <typedef name='xlinkHandlerPtr' file='xlink' type='xlinkHandler *'/>
-    <typedef name='xlinkRole' file='xlink' type='xmlChar *'/>
-    <typedef name='xlinkShow' file='xlink' type='enum'/>
-    <typedef name='xlinkTitle' file='xlink' type='xmlChar *'/>
-    <typedef name='xlinkType' file='xlink' type='enum'/>
-    <struct name='xmlAttr' file='tree' type='struct _xmlAttr'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlNode *'/>
-      <field name='next' type='struct _xmlAttr *'/>
-      <field name='prev' type='struct _xmlAttr *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='ns' type='xmlNs *'/>
-      <field name='atype' type='xmlAttributeType'/>
-      <field name='psvi' type='void *'/>
-      <field name='id' type='struct _xmlID *'/>
-    </struct>
-    <struct name='xmlAttrHashBucket' file='parser' type='struct _xmlAttrHashBucket'/>
-    <typedef name='xmlAttrPtr' file='tree' type='xmlAttr *'/>
-    <struct name='xmlAttribute' file='tree' type='struct _xmlAttribute'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlDtd *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='nexth' type='struct _xmlAttribute *'/>
-      <field name='atype' type='xmlAttributeType'/>
-      <field name='def' type='xmlAttributeDefault'/>
-      <field name='defaultValue' type='const xmlChar *'/>
-      <field name='tree' type='xmlEnumerationPtr'/>
-      <field name='prefix' type='const xmlChar *'/>
-      <field name='elem' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlAttributeDefault' file='tree' type='enum'/>
-    <typedef name='xmlAttributePtr' file='tree' type='xmlAttribute *'/>
-    <struct name='xmlAttributeTable' file='valid' type='struct _xmlHashTable'/>
-    <typedef name='xmlAttributeTablePtr' file='valid' type='xmlAttributeTable *'/>
-    <typedef name='xmlAttributeType' file='tree' type='enum'/>
-    <struct name='xmlAutomata' file='xmlautomata' type='struct _xmlAutomata'/>
-    <typedef name='xmlAutomataPtr' file='xmlautomata' type='xmlAutomata *'>
-      <info>A libxml automata description, It can be compiled into a regexp</info>
-    </typedef>
-    <struct name='xmlAutomataState' file='xmlautomata' type='struct _xmlAutomataState'/>
-    <typedef name='xmlAutomataStatePtr' file='xmlautomata' type='xmlAutomataState *'>
-      <info>A state int the automata description,</info>
-    </typedef>
-    <struct name='xmlBuf' file='tree' type='struct _xmlBuf'/>
-    <typedef name='xmlBufPtr' file='tree' type='xmlBuf *'>
-      <info>A pointer to a buffer structure, the actual structure internals are not public</info>
-    </typedef>
-    <struct name='xmlBuffer' file='tree' type='struct _xmlBuffer'>
-      <field name='content' type='xmlChar *'/>
-      <field name='use' type='unsigned int'/>
-      <field name='size' type='unsigned int'/>
-      <field name='alloc' type='xmlBufferAllocationScheme'/>
-      <field name='contentIO' type='xmlChar *'/>
-    </struct>
-    <typedef name='xmlBufferAllocationScheme' file='tree' type='enum'/>
-    <typedef name='xmlBufferPtr' file='tree' type='xmlBuffer *'/>
-    <typedef name='xmlC14NMode' file='c14n' type='enum'/>
-    <struct name='xmlCatalog' file='catalog' type='struct _xmlCatalog'/>
-    <typedef name='xmlCatalogAllow' file='catalog' type='enum'/>
-    <typedef name='xmlCatalogPrefer' file='catalog' type='enum'/>
-    <typedef name='xmlCatalogPtr' file='catalog' type='xmlCatalog *'/>
-    <struct name='xmlChLRange' file='chvalid' type='struct _xmlChLRange'>
-      <field name='low' type='unsigned int'/>
-      <field name='high' type='unsigned int'/>
-    </struct>
-    <typedef name='xmlChLRangePtr' file='chvalid' type='xmlChLRange *'/>
-    <struct name='xmlChRangeGroup' file='chvalid' type='struct _xmlChRangeGroup'>
-      <field name='nbShortRange' type='int'/>
-      <field name='nbLongRange' type='int'/>
-      <field name='shortRange' type='const xmlChSRange *'/>
-      <field name='longRange' type='const xmlChLRange *'/>
-    </struct>
-    <typedef name='xmlChRangeGroupPtr' file='chvalid' type='xmlChRangeGroup *'/>
-    <struct name='xmlChSRange' file='chvalid' type='struct _xmlChSRange'>
-      <field name='low' type='unsigned short'/>
-      <field name='high' type='unsigned short'/>
-    </struct>
-    <typedef name='xmlChSRangePtr' file='chvalid' type='xmlChSRange *'/>
-    <typedef name='xmlChar' file='xmlstring' type='unsigned char'>
-      <info>This is a basic byte in an UTF-8 encoded string. It&apos;s unsigned allowing to pinpoint case where char * are assigned to xmlChar * (possibly making serialization back impossible).</info>
-    </typedef>
-    <typedef name='xmlCharEncError' file='encoding' type='enum'/>
-    <typedef name='xmlCharEncFlags' file='encoding' type='enum'/>
-    <typedef name='xmlCharEncoding' file='encoding' type='enum'/>
-    <struct name='xmlCharEncodingHandler' file='encoding' type='struct _xmlCharEncodingHandler'>
-      <field name='name' type='char *'/>
-      <field name='inputCtxt' type='void *'/>
-      <field name='outputCtxt' type='void *'/>
-      <field name='ctxtDtor' type='xmlCharEncConvCtxtDtor'/>
-      <field name='flags' type='int'/>
-    </struct>
-    <typedef name='xmlCharEncodingHandlerPtr' file='encoding' type='xmlCharEncodingHandler *'/>
-    <struct name='xmlDOMWrapCtxt' file='tree' type='struct _xmlDOMWrapCtxt'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='int'/>
-      <field name='namespaceMap' type='void *'/>
-      <field name='getNsForNodeFunc' type='xmlDOMWrapAcquireNsFunction'/>
-    </struct>
-    <typedef name='xmlDOMWrapCtxtPtr' file='tree' type='xmlDOMWrapCtxt *'/>
-    <struct name='xmlDict' file='dict' type='struct _xmlDict'/>
-    <typedef name='xmlDictPtr' file='dict' type='xmlDict *'/>
-    <struct name='xmlDoc' file='tree' type='struct _xmlDoc'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='char *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlNode *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='compression' type='int'/>
-      <field name='standalone' type='int'/>
-      <field name='intSubset' type='struct _xmlDtd *'/>
-      <field name='extSubset' type='struct _xmlDtd *'/>
-      <field name='oldNs' type='struct _xmlNs *'/>
-      <field name='version' type='const xmlChar *'/>
-      <field name='encoding' type='const xmlChar *'/>
-      <field name='ids' type='void *'/>
-      <field name='refs' type='void *'/>
-      <field name='URL' type='const xmlChar *'/>
-      <field name='charset' type='int'/>
-      <field name='dict' type='struct _xmlDict *'/>
-      <field name='psvi' type='void *'/>
-      <field name='parseFlags' type='int'/>
-      <field name='properties' type='int'/>
-    </struct>
-    <typedef name='xmlDocProperties' file='tree' type='enum'/>
-    <typedef name='xmlDocPtr' file='tree' type='xmlDoc *'/>
-    <struct name='xmlDtd' file='tree' type='struct _xmlDtd'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlDoc *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='notations' type='void *'/>
-      <field name='elements' type='void *'/>
-      <field name='attributes' type='void *'/>
-      <field name='entities' type='void *'/>
-      <field name='ExternalID' type='const xmlChar *'/>
-      <field name='SystemID' type='const xmlChar *'/>
-      <field name='pentities' type='void *'/>
-    </struct>
-    <typedef name='xmlDtdPtr' file='tree' type='xmlDtd *'/>
-    <struct name='xmlElement' file='tree' type='struct _xmlElement'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlDtd *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='etype' type='xmlElementTypeVal'/>
-      <field name='content' type='xmlElementContentPtr'/>
-      <field name='attributes' type='xmlAttributePtr'/>
-      <field name='prefix' type='const xmlChar *'/>
-      <field name='contModel' type='xmlRegexpPtr'/>
-      <field name='contModel' type='void *'/>
-    </struct>
-    <struct name='xmlElementContent' file='tree' type='struct _xmlElementContent'>
-      <field name='type' type='xmlElementContentType'/>
-      <field name='ocur' type='xmlElementContentOccur'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='c1' type='struct _xmlElementContent *'/>
-      <field name='c2' type='struct _xmlElementContent *'/>
-      <field name='parent' type='struct _xmlElementContent *'/>
-      <field name='prefix' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlElementContentOccur' file='tree' type='enum'/>
-    <typedef name='xmlElementContentPtr' file='tree' type='xmlElementContent *'/>
-    <typedef name='xmlElementContentType' file='tree' type='enum'/>
-    <typedef name='xmlElementPtr' file='tree' type='xmlElement *'/>
-    <struct name='xmlElementTable' file='valid' type='struct _xmlHashTable'/>
-    <typedef name='xmlElementTablePtr' file='valid' type='xmlElementTable *'/>
-    <typedef name='xmlElementType' file='tree' type='enum'/>
-    <typedef name='xmlElementTypeVal' file='tree' type='enum'/>
-    <struct name='xmlEntitiesTable' file='entities' type='struct _xmlHashTable'/>
-    <typedef name='xmlEntitiesTablePtr' file='entities' type='xmlEntitiesTable *'/>
-    <struct name='xmlEntity' file='tree' type='struct _xmlEntity'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlDtd *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='orig' type='xmlChar *'/>
-      <field name='content' type='xmlChar *'/>
-      <field name='length' type='int'/>
-      <field name='etype' type='xmlEntityType'/>
-      <field name='ExternalID' type='const xmlChar *'/>
-      <field name='SystemID' type='const xmlChar *'/>
-      <field name='nexte' type='struct _xmlEntity *'/>
-      <field name='URI' type='const xmlChar *'/>
-      <field name='owner' type='int'/>
-      <field name='flags' type='int'/>
-      <field name='expandedSize' type='unsigned long'/>
-    </struct>
-    <typedef name='xmlEntityPtr' file='tree' type='xmlEntity *'/>
-    <typedef name='xmlEntityType' file='entities' type='enum'/>
-    <struct name='xmlEnumeration' file='tree' type='struct _xmlEnumeration'>
-      <field name='next' type='struct _xmlEnumeration *'/>
-      <field name='name' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlEnumerationPtr' file='tree' type='xmlEnumeration *'/>
-    <struct name='xmlError' file='xmlerror' type='struct _xmlError'>
-      <field name='domain' type='int'/>
-      <field name='code' type='int'/>
-      <field name='message' type='char *'/>
-      <field name='level' type='xmlErrorLevel'/>
-      <field name='file' type='char *'/>
-      <field name='line' type='int'/>
-      <field name='str1' type='char *'/>
-      <field name='str2' type='char *'/>
-      <field name='str3' type='char *'/>
-      <field name='int1' type='int'/>
-      <field name='int2' type='int'/>
-      <field name='ctxt' type='void *'/>
-      <field name='node' type='void *'/>
-    </struct>
-    <typedef name='xmlErrorDomain' file='xmlerror' type='enum'/>
-    <typedef name='xmlErrorLevel' file='xmlerror' type='enum'/>
-    <typedef name='xmlErrorPtr' file='xmlerror' type='xmlError *'/>
-    <typedef name='xmlFeature' file='parser' type='enum'/>
-    <struct name='xmlHashTable' file='hash' type='struct _xmlHashTable'/>
-    <typedef name='xmlHashTablePtr' file='hash' type='xmlHashTable *'/>
-    <struct name='xmlID' file='tree' type='struct _xmlID'>
-      <field name='next' type='struct _xmlID *'/>
-      <field name='value' type='const xmlChar *'/>
-      <field name='attr' type='xmlAttrPtr'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='lineno' type='int'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-    </struct>
-    <typedef name='xmlIDPtr' file='tree' type='xmlID *'/>
-    <struct name='xmlIDTable' file='valid' type='struct _xmlHashTable'/>
-    <typedef name='xmlIDTablePtr' file='valid' type='xmlIDTable *'/>
-    <struct name='xmlLink' file='list' type='struct _xmlLink'/>
-    <typedef name='xmlLinkPtr' file='list' type='xmlLink *'/>
-    <struct name='xmlList' file='list' type='struct _xmlList'/>
-    <typedef name='xmlListPtr' file='list' type='xmlList *'/>
-    <struct name='xmlModule' file='xmlmodule' type='struct _xmlModule'/>
-    <typedef name='xmlModuleOption' file='xmlmodule' type='enum'/>
-    <typedef name='xmlModulePtr' file='xmlmodule' type='xmlModule *'>
-      <info>A handle to a dynamically loaded module</info>
-    </typedef>
-    <struct name='xmlMutex' file='threads' type='struct _xmlMutex'/>
-    <typedef name='xmlMutexPtr' file='threads' type='xmlMutex *'/>
-    <struct name='xmlNode' file='tree' type='struct _xmlNode'>
-      <field name='_private' type='void *'/>
-      <field name='type' type='xmlElementType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='children' type='struct _xmlNode *'/>
-      <field name='last' type='struct _xmlNode *'/>
-      <field name='parent' type='struct _xmlNode *'/>
-      <field name='next' type='struct _xmlNode *'/>
-      <field name='prev' type='struct _xmlNode *'/>
-      <field name='doc' type='struct _xmlDoc *'/>
-      <field name='ns' type='xmlNs *'/>
-      <field name='content' type='xmlChar *'/>
-      <field name='properties' type='struct _xmlAttr *'/>
-      <field name='nsDef' type='xmlNs *'/>
-      <field name='psvi' type='void *'/>
-      <field name='line' type='unsigned short'/>
-      <field name='extra' type='unsigned short'/>
-    </struct>
-    <typedef name='xmlNodePtr' file='tree' type='xmlNode *'/>
-    <struct name='xmlNodeSet' file='xpath' type='struct _xmlNodeSet'>
-      <field name='nodeNr' type='int'/>
-      <field name='nodeMax' type='int'/>
-      <field name='nodeTab' type='xmlNodePtr *'/>
-    </struct>
-    <typedef name='xmlNodeSetPtr' file='xpath' type='xmlNodeSet *'/>
-    <struct name='xmlNotation' file='tree' type='struct _xmlNotation'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='PublicID' type='const xmlChar *'/>
-      <field name='SystemID' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlNotationPtr' file='tree' type='xmlNotation *'/>
-    <struct name='xmlNotationTable' file='valid' type='struct _xmlHashTable'/>
-    <typedef name='xmlNotationTablePtr' file='valid' type='xmlNotationTable *'/>
-    <struct name='xmlNs' file='tree' type='struct _xmlNs'>
-      <field name='next' type='struct _xmlNs *'/>
-      <field name='type' type='xmlNsType'/>
-      <field name='href' type='const xmlChar *'/>
-      <field name='prefix' type='const xmlChar *'/>
-      <field name='_private' type='void *'/>
-      <field name='context' type='struct _xmlDoc *'/>
-    </struct>
-    <typedef name='xmlNsPtr' file='tree' type='xmlNs *'/>
-    <typedef name='xmlNsType' file='tree' type='xmlElementType'/>
-    <struct name='xmlOutputBuffer' file='tree' type='struct _xmlOutputBuffer'>
-      <field name='context' type='void *'/>
-      <field name='writecallback' type='xmlOutputWriteCallback'/>
-      <field name='closecallback' type='xmlOutputCloseCallback'/>
-      <field name='encoder' type='xmlCharEncodingHandlerPtr'/>
-      <field name='buffer' type='xmlBufPtr'/>
-      <field name='conv' type='xmlBufPtr'/>
-      <field name='written' type='int'/>
-      <field name='error' type='int'/>
-    </struct>
-    <typedef name='xmlOutputBufferPtr' file='tree' type='xmlOutputBuffer *'/>
-    <struct name='xmlParserCtxt' file='tree' type='struct _xmlParserCtxt'>
-      <field name='sax' type='struct _xmlSAXHandler *'/>
-      <field name='userData' type='void *'/>
-      <field name='myDoc' type='xmlDocPtr'/>
-      <field name='wellFormed' type='int'/>
-      <field name='replaceEntities' type='int'/>
-      <field name='version' type='const xmlChar *'/>
-      <field name='encoding' type='const xmlChar *'/>
-      <field name='standalone' type='int'/>
-      <field name='html' type='int'/>
-      <field name='input' type='xmlParserInputPtr'/>
-      <field name='inputNr' type='int'/>
-      <field name='inputMax' type='int'/>
-      <field name='inputTab' type='xmlParserInputPtr *'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='nodeNr' type='int'/>
-      <field name='nodeMax' type='int'/>
-      <field name='nodeTab' type='xmlNodePtr *'/>
-      <field name='record_info' type='int'/>
-      <field name='node_seq' type='xmlParserNodeInfoSeq'/>
-      <field name='errNo' type='int'/>
-      <field name='hasExternalSubset' type='int'/>
-      <field name='hasPErefs' type='int'/>
-      <field name='external' type='int'/>
-      <field name='valid' type='int'/>
-      <field name='validate' type='int'/>
-      <field name='vctxt' type='xmlValidCtxt'/>
-      <field name='instate' type='xmlParserInputState'/>
-      <field name='token' type='int'/>
-      <field name='directory' type='char *'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='nameNr' type='int'/>
-      <field name='nameMax' type='int'/>
-      <field name='nameTab' type='const xmlChar **'/>
-      <field name='nbChars' type='long'/>
-      <field name='checkIndex' type='long'/>
-      <field name='keepBlanks' type='int'/>
-      <field name='disableSAX' type='int'/>
-      <field name='inSubset' type='int'/>
-      <field name='intSubName' type='const xmlChar *'/>
-      <field name='extSubURI' type='xmlChar *'/>
-      <field name='extSubSystem' type='xmlChar *'/>
-      <field name='space' type='int *'/>
-      <field name='spaceNr' type='int'/>
-      <field name='spaceMax' type='int'/>
-      <field name='spaceTab' type='int *'/>
-      <field name='depth' type='int'/>
-      <field name='entity' type='xmlParserInputPtr'/>
-      <field name='charset' type='int'/>
-      <field name='nodelen' type='int'/>
-      <field name='nodemem' type='int'/>
-      <field name='pedantic' type='int'/>
-      <field name='_private' type='void *'/>
-      <field name='loadsubset' type='int'/>
-      <field name='linenumbers' type='int'/>
-      <field name='catalogs' type='void *'/>
-      <field name='recovery' type='int'/>
-      <field name='progressive' type='int'/>
-      <field name='dict' type='xmlDictPtr'/>
-      <field name='atts' type='const xmlChar **'/>
-      <field name='maxatts' type='int'/>
-      <field name='docdict' type='int'/>
-      <field name='str_xml' type='const xmlChar *'/>
-      <field name='str_xmlns' type='const xmlChar *'/>
-      <field name='str_xml_ns' type='const xmlChar *'/>
-      <field name='sax2' type='int'/>
-      <field name='nsNr' type='int'/>
-      <field name='nsMax' type='int'/>
-      <field name='nsTab' type='const xmlChar **'/>
-      <field name='attallocs' type='unsigned *'/>
-      <field name='pushTab' type='xmlStartTag *'/>
-      <field name='attsDefault' type='xmlHashTablePtr'/>
-      <field name='attsSpecial' type='xmlHashTablePtr'/>
-      <field name='nsWellFormed' type='int'/>
-      <field name='options' type='int'/>
-      <field name='dictNames' type='int'/>
-      <field name='freeElemsNr' type='int'/>
-      <field name='freeElems' type='xmlNodePtr'/>
-      <field name='freeAttrsNr' type='int'/>
-      <field name='freeAttrs' type='xmlAttrPtr'/>
-      <field name='lastError' type='xmlError'/>
-      <field name='parseMode' type='xmlParserMode'/>
-      <field name='nbentities' type='unsigned long'/>
-      <field name='sizeentities' type='unsigned long'/>
-      <field name='nodeInfo' type='xmlParserNodeInfo *'/>
-      <field name='nodeInfoNr' type='int'/>
-      <field name='nodeInfoMax' type='int'/>
-      <field name='nodeInfoTab' type='xmlParserNodeInfo *'/>
-      <field name='input_id' type='int'/>
-      <field name='sizeentcopy' type='unsigned long'/>
-      <field name='endCheckState' type='int'/>
-      <field name='nbErrors' type='unsigned short'/>
-      <field name='nbWarnings' type='unsigned short'/>
-      <field name='maxAmpl' type='unsigned'/>
-      <field name='nsdb' type='xmlParserNsData *'/>
-      <field name='attrHashMax' type='unsigned'/>
-      <field name='attrHash' type='xmlAttrHashBucket *'/>
-      <field name='errorHandler' type='xmlStructuredErrorFunc'/>
-      <field name='errorCtxt' type='void *'/>
-      <field name='resourceLoader' type='xmlResourceLoader'/>
-      <field name='resourceCtxt' type='void *'/>
-      <field name='convImpl' type='xmlCharEncConvImpl'/>
-      <field name='convCtxt' type='void *'/>
-    </struct>
-    <typedef name='xmlParserCtxtPtr' file='tree' type='xmlParserCtxt *'/>
-    <typedef name='xmlParserErrors' file='xmlerror' type='enum'/>
-    <struct name='xmlParserInput' file='tree' type='struct _xmlParserInput'>
-      <field name='buf' type='xmlParserInputBufferPtr'/>
-      <field name='filename' type='const char *'/>
-      <field name='directory' type='const char *'/>
-      <field name='base' type='const xmlChar *'/>
-      <field name='cur' type='const xmlChar *'/>
-      <field name='end' type='const xmlChar *'/>
-      <field name='length' type='int'/>
-      <field name='line' type='int'/>
-      <field name='col' type='int'/>
-      <field name='consumed' type='unsigned long'/>
-      <field name='free' type='xmlParserInputDeallocate'/>
-      <field name='encoding' type='const xmlChar *'/>
-      <field name='version' type='const xmlChar *'/>
-      <field name='flags' type='int'/>
-      <field name='id' type='int'/>
-      <field name='parentConsumed' type='unsigned long'/>
-      <field name='entity' type='xmlEntityPtr'/>
-    </struct>
-    <struct name='xmlParserInputBuffer' file='tree' type='struct _xmlParserInputBuffer'>
-      <field name='context' type='void *'/>
-      <field name='readcallback' type='xmlInputReadCallback'/>
-      <field name='closecallback' type='xmlInputCloseCallback'/>
-      <field name='encoder' type='xmlCharEncodingHandlerPtr'/>
-      <field name='buffer' type='xmlBufPtr'/>
-      <field name='raw' type='xmlBufPtr'/>
-      <field name='compressed' type='int'/>
-      <field name='error' type='int'/>
-      <field name='rawconsumed' type='unsigned long'/>
-    </struct>
-    <typedef name='xmlParserInputBufferPtr' file='tree' type='xmlParserInputBuffer *'/>
-    <typedef name='xmlParserInputFlags' file='parser' type='enum'/>
-    <typedef name='xmlParserInputPtr' file='tree' type='xmlParserInput *'/>
-    <typedef name='xmlParserInputState' file='parser' type='enum'/>
-    <typedef name='xmlParserMode' file='parser' type='enum'/>
-    <struct name='xmlParserNodeInfo' file='parser' type='struct _xmlParserNodeInfo'>
-      <field name='node' type='const struct _xmlNode *'/>
-      <field name='begin_pos' type='unsigned long'/>
-      <field name='begin_line' type='unsigned long'/>
-      <field name='end_pos' type='unsigned long'/>
-      <field name='end_line' type='unsigned long'/>
-    </struct>
-    <typedef name='xmlParserNodeInfoPtr' file='parser' type='xmlParserNodeInfo *'/>
-    <struct name='xmlParserNodeInfoSeq' file='parser' type='struct _xmlParserNodeInfoSeq'>
-      <field name='maximum' type='unsigned long'/>
-      <field name='length' type='unsigned long'/>
-      <field name='buffer' type='xmlParserNodeInfo *'/>
-    </struct>
-    <typedef name='xmlParserNodeInfoSeqPtr' file='parser' type='xmlParserNodeInfoSeq *'/>
-    <struct name='xmlParserNsData' file='parser' type='struct _xmlParserNsData'/>
-    <typedef name='xmlParserOption' file='parser' type='enum'/>
-    <typedef name='xmlParserProperties' file='xmlreader' type='enum'/>
-    <typedef name='xmlParserSeverities' file='xmlreader' type='enum'/>
-    <typedef name='xmlParserStatus' file='parser' type='enum'/>
-    <struct name='xmlPattern' file='pattern' type='struct _xmlPattern'/>
-    <typedef name='xmlPatternFlags' file='pattern' type='enum'/>
-    <typedef name='xmlPatternPtr' file='pattern' type='xmlPattern *'/>
-    <struct name='xmlRMutex' file='threads' type='struct _xmlRMutex'/>
-    <typedef name='xmlRMutexPtr' file='threads' type='xmlRMutex *'/>
-    <typedef name='xmlReaderTypes' file='xmlreader' type='enum'/>
-    <struct name='xmlRef' file='tree' type='struct _xmlRef'>
-      <field name='next' type='struct _xmlRef *'/>
-      <field name='value' type='const xmlChar *'/>
-      <field name='attr' type='xmlAttrPtr'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='lineno' type='int'/>
-    </struct>
-    <typedef name='xmlRefPtr' file='tree' type='xmlRef *'/>
-    <struct name='xmlRefTable' file='valid' type='struct _xmlHashTable'/>
-    <typedef name='xmlRefTablePtr' file='valid' type='xmlRefTable *'/>
-    <struct name='xmlRegExecCtxt' file='xmlregexp' type='struct _xmlRegExecCtxt'/>
-    <typedef name='xmlRegExecCtxtPtr' file='xmlregexp' type='xmlRegExecCtxt *'>
-      <info>A libxml progressive regular expression evaluation context</info>
-    </typedef>
-    <struct name='xmlRegexp' file='xmlregexp' type='struct _xmlRegexp'/>
-    <typedef name='xmlRegexpPtr' file='xmlregexp' type='xmlRegexp *'>
-      <info>A libxml regular expression, they can actually be far more complex thank the POSIX regex expressions.</info>
-    </typedef>
-    <struct name='xmlRelaxNG' file='relaxng' type='struct _xmlRelaxNG'/>
-    <struct name='xmlRelaxNGParserCtxt' file='relaxng' type='struct _xmlRelaxNGParserCtxt'/>
-    <typedef name='xmlRelaxNGParserCtxtPtr' file='relaxng' type='xmlRelaxNGParserCtxt *'/>
-    <typedef name='xmlRelaxNGParserFlag' file='relaxng' type='enum'/>
-    <typedef name='xmlRelaxNGPtr' file='relaxng' type='xmlRelaxNG *'/>
-    <struct name='xmlRelaxNGValidCtxt' file='relaxng' type='struct _xmlRelaxNGValidCtxt'/>
-    <typedef name='xmlRelaxNGValidCtxtPtr' file='relaxng' type='xmlRelaxNGValidCtxt *'/>
-    <typedef name='xmlRelaxNGValidErr' file='relaxng' type='enum'/>
-    <typedef name='xmlResourceType' file='parser' type='enum'/>
-    <struct name='xmlSAXHandler' file='tree' type='struct _xmlSAXHandler'>
-      <field name='internalSubset' type='internalSubsetSAXFunc'/>
-      <field name='isStandalone' type='isStandaloneSAXFunc'/>
-      <field name='hasInternalSubset' type='hasInternalSubsetSAXFunc'/>
-      <field name='hasExternalSubset' type='hasExternalSubsetSAXFunc'/>
-      <field name='resolveEntity' type='resolveEntitySAXFunc'/>
-      <field name='getEntity' type='getEntitySAXFunc'/>
-      <field name='entityDecl' type='entityDeclSAXFunc'/>
-      <field name='notationDecl' type='notationDeclSAXFunc'/>
-      <field name='attributeDecl' type='attributeDeclSAXFunc'/>
-      <field name='elementDecl' type='elementDeclSAXFunc'/>
-      <field name='unparsedEntityDecl' type='unparsedEntityDeclSAXFunc'/>
-      <field name='setDocumentLocator' type='setDocumentLocatorSAXFunc'/>
-      <field name='startDocument' type='startDocumentSAXFunc'/>
-      <field name='endDocument' type='endDocumentSAXFunc'/>
-      <field name='startElement' type='startElementSAXFunc'/>
-      <field name='endElement' type='endElementSAXFunc'/>
-      <field name='reference' type='referenceSAXFunc'/>
-      <field name='characters' type='charactersSAXFunc'/>
-      <field name='ignorableWhitespace' type='ignorableWhitespaceSAXFunc'/>
-      <field name='processingInstruction' type='processingInstructionSAXFunc'/>
-      <field name='comment' type='commentSAXFunc'/>
-      <field name='warning' type='warningSAXFunc'/>
-      <field name='error' type='errorSAXFunc'/>
-      <field name='fatalError' type='fatalErrorSAXFunc'/>
-      <field name='getParameterEntity' type='getParameterEntitySAXFunc'/>
-      <field name='cdataBlock' type='cdataBlockSAXFunc'/>
-      <field name='externalSubset' type='externalSubsetSAXFunc'/>
-      <field name='initialized' type='unsigned int'/>
-      <field name='_private' type='void *'/>
-      <field name='startElementNs' type='startElementNsSAX2Func'/>
-      <field name='endElementNs' type='endElementNsSAX2Func'/>
-      <field name='serror' type='xmlStructuredErrorFunc'/>
-    </struct>
-    <typedef name='xmlSAXHandlerPtr' file='tree' type='xmlSAXHandler *'/>
-    <struct name='xmlSAXHandlerV1' file='parser' type='struct _xmlSAXHandlerV1'>
-      <field name='internalSubset' type='internalSubsetSAXFunc'/>
-      <field name='isStandalone' type='isStandaloneSAXFunc'/>
-      <field name='hasInternalSubset' type='hasInternalSubsetSAXFunc'/>
-      <field name='hasExternalSubset' type='hasExternalSubsetSAXFunc'/>
-      <field name='resolveEntity' type='resolveEntitySAXFunc'/>
-      <field name='getEntity' type='getEntitySAXFunc'/>
-      <field name='entityDecl' type='entityDeclSAXFunc'/>
-      <field name='notationDecl' type='notationDeclSAXFunc'/>
-      <field name='attributeDecl' type='attributeDeclSAXFunc'/>
-      <field name='elementDecl' type='elementDeclSAXFunc'/>
-      <field name='unparsedEntityDecl' type='unparsedEntityDeclSAXFunc'/>
-      <field name='setDocumentLocator' type='setDocumentLocatorSAXFunc'/>
-      <field name='startDocument' type='startDocumentSAXFunc'/>
-      <field name='endDocument' type='endDocumentSAXFunc'/>
-      <field name='startElement' type='startElementSAXFunc'/>
-      <field name='endElement' type='endElementSAXFunc'/>
-      <field name='reference' type='referenceSAXFunc'/>
-      <field name='characters' type='charactersSAXFunc'/>
-      <field name='ignorableWhitespace' type='ignorableWhitespaceSAXFunc'/>
-      <field name='processingInstruction' type='processingInstructionSAXFunc'/>
-      <field name='comment' type='commentSAXFunc'/>
-      <field name='warning' type='warningSAXFunc'/>
-      <field name='error' type='errorSAXFunc'/>
-      <field name='fatalError' type='fatalErrorSAXFunc'/>
-      <field name='getParameterEntity' type='getParameterEntitySAXFunc'/>
-      <field name='cdataBlock' type='cdataBlockSAXFunc'/>
-      <field name='externalSubset' type='externalSubsetSAXFunc'/>
-      <field name='initialized' type='unsigned int'/>
-    </struct>
-    <typedef name='xmlSAXHandlerV1Ptr' file='parser' type='xmlSAXHandlerV1 *'/>
-    <struct name='xmlSAXLocator' file='tree' type='struct _xmlSAXLocator'>
-      <field name='getPublicId' type='const xmlChar *(*getPublicId)'/>
-      <field name='getSystemId' type='const xmlChar *(*getSystemId)'/>
-      <field name='getLineNumber' type='int(*getLineNumber)'/>
-      <field name='getColumnNumber' type='int(*getColumnNumber)'/>
-    </struct>
-    <typedef name='xmlSAXLocatorPtr' file='tree' type='xmlSAXLocator *'/>
-    <struct name='xmlSaveCtxt' file='xmlsave' type='struct _xmlSaveCtxt'/>
-    <typedef name='xmlSaveCtxtPtr' file='xmlsave' type='xmlSaveCtxt *'/>
-    <typedef name='xmlSaveOption' file='xmlsave' type='enum'/>
-    <struct name='xmlSchema' file='xmlschemas' type='struct _xmlSchema'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-      <field name='version' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='doc' type='xmlDocPtr'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='flags' type='int'/>
-      <field name='typeDecl' type='xmlHashTablePtr'/>
-      <field name='attrDecl' type='xmlHashTablePtr'/>
-      <field name='attrgrpDecl' type='xmlHashTablePtr'/>
-      <field name='elemDecl' type='xmlHashTablePtr'/>
-      <field name='notaDecl' type='xmlHashTablePtr'/>
-      <field name='schemasImports' type='xmlHashTablePtr'/>
-      <field name='_private' type='void *'/>
-      <field name='groupDecl' type='xmlHashTablePtr'/>
-      <field name='dict' type='xmlDictPtr'/>
-      <field name='includes' type='void *'/>
-      <field name='preserve' type='int'/>
-      <field name='counter' type='int'/>
-      <field name='idcDef' type='xmlHashTablePtr'/>
-      <field name='volatiles' type='void *'/>
-    </struct>
-    <struct name='xmlSchemaAnnot' file='schemasInternals' type='struct _xmlSchemaAnnot'>
-      <field name='next' type='struct _xmlSchemaAnnot *'/>
-      <field name='content' type='xmlNodePtr'/>
-    </struct>
-    <typedef name='xmlSchemaAnnotPtr' file='schemasInternals' type='xmlSchemaAnnot *'/>
-    <struct name='xmlSchemaAttribute' file='schemasInternals' type='struct _xmlSchemaAttribute'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='next' type='struct _xmlSchemaAttribute *'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='ref' type='const xmlChar *'/>
-      <field name='refNs' type='const xmlChar *'/>
-      <field name='typeName' type='const xmlChar *'/>
-      <field name='typeNs' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='base' type='xmlSchemaTypePtr'/>
-      <field name='occurs' type='int'/>
-      <field name='defValue' type='const xmlChar *'/>
-      <field name='subtypes' type='xmlSchemaTypePtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-      <field name='flags' type='int'/>
-      <field name='refPrefix' type='const xmlChar *'/>
-      <field name='defVal' type='xmlSchemaValPtr'/>
-      <field name='refDecl' type='xmlSchemaAttributePtr'/>
-    </struct>
-    <struct name='xmlSchemaAttributeGroup' file='schemasInternals' type='struct _xmlSchemaAttributeGroup'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='next' type='struct _xmlSchemaAttribute *'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='ref' type='const xmlChar *'/>
-      <field name='refNs' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='attributes' type='xmlSchemaAttributePtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='flags' type='int'/>
-      <field name='attributeWildcard' type='xmlSchemaWildcardPtr'/>
-      <field name='refPrefix' type='const xmlChar *'/>
-      <field name='refItem' type='xmlSchemaAttributeGroupPtr'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-      <field name='attrUses' type='void *'/>
-    </struct>
-    <typedef name='xmlSchemaAttributeGroupPtr' file='schemasInternals' type='xmlSchemaAttributeGroup *'/>
-    <struct name='xmlSchemaAttributeLink' file='schemasInternals' type='struct _xmlSchemaAttributeLink'>
-      <field name='next' type='struct _xmlSchemaAttributeLink *'/>
-      <field name='attr' type='struct _xmlSchemaAttribute *'/>
-    </struct>
-    <typedef name='xmlSchemaAttributeLinkPtr' file='schemasInternals' type='xmlSchemaAttributeLink *'/>
-    <typedef name='xmlSchemaAttributePtr' file='schemasInternals' type='xmlSchemaAttribute *'/>
-    <typedef name='xmlSchemaContentType' file='schemasInternals' type='enum'/>
-    <struct name='xmlSchemaElement' file='schemasInternals' type='struct _xmlSchemaElement'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='next' type='struct _xmlSchemaType *'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='ref' type='const xmlChar *'/>
-      <field name='refNs' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='subtypes' type='xmlSchemaTypePtr'/>
-      <field name='attributes' type='xmlSchemaAttributePtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='minOccurs' type='int'/>
-      <field name='maxOccurs' type='int'/>
-      <field name='flags' type='int'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-      <field name='namedType' type='const xmlChar *'/>
-      <field name='namedTypeNs' type='const xmlChar *'/>
-      <field name='substGroup' type='const xmlChar *'/>
-      <field name='substGroupNs' type='const xmlChar *'/>
-      <field name='scope' type='const xmlChar *'/>
-      <field name='value' type='const xmlChar *'/>
-      <field name='refDecl' type='struct _xmlSchemaElement *'/>
-      <field name='contModel' type='xmlRegexpPtr'/>
-      <field name='contentType' type='xmlSchemaContentType'/>
-      <field name='refPrefix' type='const xmlChar *'/>
-      <field name='defVal' type='xmlSchemaValPtr'/>
-      <field name='idcs' type='void *'/>
-    </struct>
-    <typedef name='xmlSchemaElementPtr' file='schemasInternals' type='xmlSchemaElement *'/>
-    <struct name='xmlSchemaFacet' file='schemasInternals' type='struct _xmlSchemaFacet'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='next' type='struct _xmlSchemaFacet *'/>
-      <field name='value' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='fixed' type='int'/>
-      <field name='whitespace' type='int'/>
-      <field name='val' type='xmlSchemaValPtr'/>
-      <field name='regexp' type='xmlRegexpPtr'/>
-    </struct>
-    <struct name='xmlSchemaFacetLink' file='schemasInternals' type='struct _xmlSchemaFacetLink'>
-      <field name='next' type='struct _xmlSchemaFacetLink *'/>
-      <field name='facet' type='xmlSchemaFacetPtr'/>
-    </struct>
-    <typedef name='xmlSchemaFacetLinkPtr' file='schemasInternals' type='xmlSchemaFacetLink *'/>
-    <typedef name='xmlSchemaFacetPtr' file='schemasInternals' type='xmlSchemaFacet *'/>
-    <struct name='xmlSchemaNotation' file='schemasInternals' type='struct _xmlSchemaNotation'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='identifier' type='const xmlChar *'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlSchemaNotationPtr' file='schemasInternals' type='xmlSchemaNotation *'/>
-    <struct name='xmlSchemaParserCtxt' file='xmlschemas' type='struct _xmlSchemaParserCtxt'/>
-    <typedef name='xmlSchemaParserCtxtPtr' file='xmlschemas' type='xmlSchemaParserCtxt *'/>
-    <typedef name='xmlSchemaPtr' file='xmlschemas' type='xmlSchema *'/>
-    <typedef name='xmlSchemaSAXPlugPtr' file='xmlschemas' type='xmlSchemaSAXPlugStruct *'/>
-    <struct name='xmlSchemaSAXPlugStruct' file='xmlschemas' type='struct _xmlSchemaSAXPlug'/>
-    <struct name='xmlSchemaType' file='schemasInternals' type='struct _xmlSchemaType'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='next' type='struct _xmlSchemaType *'/>
-      <field name='name' type='const xmlChar *'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='ref' type='const xmlChar *'/>
-      <field name='refNs' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='subtypes' type='xmlSchemaTypePtr'/>
-      <field name='attributes' type='xmlSchemaAttributePtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='minOccurs' type='int'/>
-      <field name='maxOccurs' type='int'/>
-      <field name='flags' type='int'/>
-      <field name='contentType' type='xmlSchemaContentType'/>
-      <field name='base' type='const xmlChar *'/>
-      <field name='baseNs' type='const xmlChar *'/>
-      <field name='baseType' type='xmlSchemaTypePtr'/>
-      <field name='facets' type='xmlSchemaFacetPtr'/>
-      <field name='redef' type='struct _xmlSchemaType *'/>
-      <field name='recurse' type='int'/>
-      <field name='attributeUses' type='xmlSchemaAttributeLinkPtr *'/>
-      <field name='attributeWildcard' type='xmlSchemaWildcardPtr'/>
-      <field name='builtInType' type='int'/>
-      <field name='memberTypes' type='xmlSchemaTypeLinkPtr'/>
-      <field name='facetSet' type='xmlSchemaFacetLinkPtr'/>
-      <field name='refPrefix' type='const xmlChar *'/>
-      <field name='contentTypeDef' type='xmlSchemaTypePtr'/>
-      <field name='contModel' type='xmlRegexpPtr'/>
-      <field name='targetNamespace' type='const xmlChar *'/>
-      <field name='attrUses' type='void *'/>
-    </struct>
-    <struct name='xmlSchemaTypeLink' file='schemasInternals' type='struct _xmlSchemaTypeLink'>
-      <field name='next' type='struct _xmlSchemaTypeLink *'/>
-      <field name='type' type='xmlSchemaTypePtr'/>
-    </struct>
-    <typedef name='xmlSchemaTypeLinkPtr' file='schemasInternals' type='xmlSchemaTypeLink *'/>
-    <typedef name='xmlSchemaTypePtr' file='schemasInternals' type='xmlSchemaType *'/>
-    <typedef name='xmlSchemaTypeType' file='schemasInternals' type='enum'/>
-    <struct name='xmlSchemaVal' file='schemasInternals' type='struct _xmlSchemaVal'/>
-    <typedef name='xmlSchemaValPtr' file='schemasInternals' type='xmlSchemaVal *'/>
-    <typedef name='xmlSchemaValType' file='schemasInternals' type='enum'/>
-    <struct name='xmlSchemaValidCtxt' file='xmlschemas' type='struct _xmlSchemaValidCtxt'/>
-    <typedef name='xmlSchemaValidCtxtPtr' file='xmlschemas' type='xmlSchemaValidCtxt *'/>
-    <typedef name='xmlSchemaValidError' file='xmlschemas' type='enum'/>
-    <typedef name='xmlSchemaValidOption' file='xmlschemas' type='enum'/>
-    <typedef name='xmlSchemaWhitespaceValueType' file='xmlschemastypes' type='enum'/>
-    <struct name='xmlSchemaWildcard' file='schemasInternals' type='struct _xmlSchemaWildcard'>
-      <field name='type' type='xmlSchemaTypeType'/>
-      <field name='id' type='const xmlChar *'/>
-      <field name='annot' type='xmlSchemaAnnotPtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='minOccurs' type='int'/>
-      <field name='maxOccurs' type='int'/>
-      <field name='processContents' type='int'/>
-      <field name='any' type='int'/>
-      <field name='nsSet' type='xmlSchemaWildcardNsPtr'/>
-      <field name='negNsSet' type='xmlSchemaWildcardNsPtr'/>
-      <field name='flags' type='int'/>
-    </struct>
-    <struct name='xmlSchemaWildcardNs' file='schemasInternals' type='struct _xmlSchemaWildcardNs'>
-      <field name='next' type='struct _xmlSchemaWildcardNs *'/>
-      <field name='value' type='const xmlChar *'/>
-    </struct>
-    <typedef name='xmlSchemaWildcardNsPtr' file='schemasInternals' type='xmlSchemaWildcardNs *'/>
-    <typedef name='xmlSchemaWildcardPtr' file='schemasInternals' type='xmlSchemaWildcard *'/>
-    <struct name='xmlSchematron' file='schematron' type='struct _xmlSchematron'/>
-    <struct name='xmlSchematronParserCtxt' file='schematron' type='struct _xmlSchematronParserCtxt'/>
-    <typedef name='xmlSchematronParserCtxtPtr' file='schematron' type='xmlSchematronParserCtxt *'/>
-    <typedef name='xmlSchematronPtr' file='schematron' type='xmlSchematron *'/>
-    <struct name='xmlSchematronValidCtxt' file='schematron' type='struct _xmlSchematronValidCtxt'/>
-    <typedef name='xmlSchematronValidCtxtPtr' file='schematron' type='xmlSchematronValidCtxt *'/>
-    <typedef name='xmlSchematronValidOptions' file='schematron' type='enum'/>
-    <struct name='xmlStartTag' file='parser' type='struct _xmlStartTag'/>
-    <struct name='xmlStreamCtxt' file='pattern' type='struct _xmlStreamCtxt'/>
-    <typedef name='xmlStreamCtxtPtr' file='pattern' type='xmlStreamCtxt *'/>
-    <struct name='xmlTextReader' file='xmlreader' type='struct _xmlTextReader'/>
-    <typedef name='xmlTextReaderLocatorPtr' file='xmlreader' type='void *'/>
-    <typedef name='xmlTextReaderMode' file='xmlreader' type='enum'/>
-    <typedef name='xmlTextReaderPtr' file='xmlreader' type='xmlTextReader *'>
-      <info>Pointer to an xmlReader context.</info>
-    </typedef>
-    <struct name='xmlTextWriter' file='xmlwriter' type='struct _xmlTextWriter'/>
-    <typedef name='xmlTextWriterPtr' file='xmlwriter' type='xmlTextWriter *'/>
-    <struct name='xmlURI' file='uri' type='struct _xmlURI'>
-      <field name='scheme' type='char *'/>
-      <field name='opaque' type='char *'/>
-      <field name='authority' type='char *'/>
-      <field name='server' type='char *'/>
-      <field name='user' type='char *'/>
-      <field name='port' type='int'/>
-      <field name='path' type='char *'/>
-      <field name='query' type='char *'/>
-      <field name='fragment' type='char *'/>
-      <field name='cleanup' type='int'/>
-      <field name='query_raw' type='char *'/>
-    </struct>
-    <typedef name='xmlURIPtr' file='uri' type='xmlURI *'/>
-    <struct name='xmlValidCtxt' file='valid' type='struct _xmlValidCtxt'>
-      <field name='userData' type='void *'/>
-      <field name='error' type='xmlValidityErrorFunc'/>
-      <field name='warning' type='xmlValidityWarningFunc'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='nodeNr' type='int'/>
-      <field name='nodeMax' type='int'/>
-      <field name='nodeTab' type='xmlNodePtr *'/>
-      <field name='flags' type='unsigned int'/>
-      <field name='doc' type='xmlDocPtr'/>
-      <field name='valid' type='int'/>
-      <field name='vstate' type='xmlValidState *'/>
-      <field name='vstateNr' type='int'/>
-      <field name='vstateMax' type='int'/>
-      <field name='vstateTab' type='xmlValidState *'/>
-      <field name='am' type='xmlAutomataPtr'/>
-      <field name='state' type='xmlAutomataStatePtr'/>
-      <field name='am' type='void *'/>
-      <field name='state' type='void *'/>
-    </struct>
-    <typedef name='xmlValidCtxtPtr' file='valid' type='xmlValidCtxt *'/>
-    <struct name='xmlValidState' file='valid' type='struct _xmlValidState'/>
-    <typedef name='xmlValidStatePtr' file='valid' type='xmlValidState *'/>
-    <struct name='xmlXIncludeCtxt' file='xinclude' type='struct _xmlXIncludeCtxt'/>
-    <typedef name='xmlXIncludeCtxtPtr' file='xinclude' type='xmlXIncludeCtxt *'/>
-    <struct name='xmlXPathAxis' file='xpath' type='struct _xmlXPathAxis'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='func' type='xmlXPathAxisFunc'/>
-    </struct>
-    <typedef name='xmlXPathAxisPtr' file='xpath' type='xmlXPathAxis *'/>
-    <struct name='xmlXPathCompExpr' file='xpath' type='struct _xmlXPathCompExpr'/>
-    <typedef name='xmlXPathCompExprPtr' file='xpath' type='xmlXPathCompExpr *'/>
-    <struct name='xmlXPathContext' file='xpath' type='struct _xmlXPathContext'>
-      <field name='doc' type='xmlDocPtr'/>
-      <field name='node' type='xmlNodePtr'/>
-      <field name='nb_variables_unused' type='int'/>
-      <field name='max_variables_unused' type='int'/>
-      <field name='varHash' type='xmlHashTablePtr'/>
-      <field name='nb_types' type='int'/>
-      <field name='max_types' type='int'/>
-      <field name='types' type='xmlXPathTypePtr'/>
-      <field name='nb_funcs_unused' type='int'/>
-      <field name='max_funcs_unused' type='int'/>
-      <field name='funcHash' type='xmlHashTablePtr'/>
-      <field name='nb_axis' type='int'/>
-      <field name='max_axis' type='int'/>
-      <field name='axis' type='xmlXPathAxisPtr'/>
-      <field name='namespaces' type='xmlNsPtr *'/>
-      <field name='nsNr' type='int'/>
-      <field name='user' type='void *'/>
-      <field name='contextSize' type='int'/>
-      <field name='proximityPosition' type='int'/>
-      <field name='xptr' type='int'/>
-      <field name='here' type='xmlNodePtr'/>
-      <field name='origin' type='xmlNodePtr'/>
-      <field name='nsHash' type='xmlHashTablePtr'/>
-      <field name='varLookupFunc' type='xmlXPathVariableLookupFunc'/>
-      <field name='varLookupData' type='void *'/>
-      <field name='extra' type='void *'/>
-      <field name='function' type='const xmlChar *'/>
-      <field name='functionURI' type='const xmlChar *'/>
-      <field name='funcLookupFunc' type='xmlXPathFuncLookupFunc'/>
-      <field name='funcLookupData' type='void *'/>
-      <field name='tmpNsList' type='xmlNsPtr *'/>
-      <field name='tmpNsNr' type='int'/>
-      <field name='userData' type='void *'/>
-      <field name='error' type='xmlStructuredErrorFunc'/>
-      <field name='lastError' type='xmlError'/>
-      <field name='debugNode' type='xmlNodePtr'/>
-      <field name='dict' type='xmlDictPtr'/>
-      <field name='flags' type='int'/>
-      <field name='cache' type='void *'/>
-      <field name='opLimit' type='unsigned long'/>
-      <field name='opCount' type='unsigned long'/>
-      <field name='depth' type='int'/>
-    </struct>
-    <typedef name='xmlXPathContextPtr' file='xpath' type='xmlXPathContext *'/>
-    <typedef name='xmlXPathError' file='xpath' type='enum'/>
-    <typedef name='xmlXPathFuncPtr' file='xpath' type='xmlXPathFunct *'/>
-    <struct name='xmlXPathFunct' file='xpath' type='struct _xmlXPathFunct'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='func' type='xmlXPathEvalFunc'/>
-    </struct>
-    <struct name='xmlXPathObject' file='xpath' type='struct _xmlXPathObject'>
-      <field name='type' type='xmlXPathObjectType'/>
-      <field name='nodesetval' type='xmlNodeSetPtr'/>
-      <field name='boolval' type='int'/>
-      <field name='floatval' type='double'/>
-      <field name='stringval' type='xmlChar *'/>
-      <field name='user' type='void *'/>
-      <field name='index' type='int'/>
-      <field name='user2' type='void *'/>
-      <field name='index2' type='int'/>
-    </struct>
-    <typedef name='xmlXPathObjectPtr' file='xpath' type='xmlXPathObject *'/>
-    <typedef name='xmlXPathObjectType' file='xpath' type='enum'/>
-    <struct name='xmlXPathParserContext' file='xpath' type='struct _xmlXPathParserContext'>
-      <field name='cur' type='const xmlChar *'/>
-      <field name='base' type='const xmlChar *'/>
-      <field name='error' type='int'/>
-      <field name='context' type='xmlXPathContextPtr'/>
-      <field name='value' type='xmlXPathObjectPtr'/>
-      <field name='valueNr' type='int'/>
-      <field name='valueMax' type='int'/>
-      <field name='valueTab' type='xmlXPathObjectPtr *'/>
-      <field name='comp' type='xmlXPathCompExprPtr'/>
-      <field name='xptr' type='int'/>
-      <field name='ancestor' type='xmlNodePtr'/>
-      <field name='valueFrame' type='int'/>
-    </struct>
-    <typedef name='xmlXPathParserContextPtr' file='xpath' type='xmlXPathParserContext *'/>
-    <struct name='xmlXPathType' file='xpath' type='struct _xmlXPathType'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='func' type='xmlXPathConvertFunc'/>
-    </struct>
-    <typedef name='xmlXPathTypePtr' file='xpath' type='xmlXPathType *'/>
-    <struct name='xmlXPathVariable' file='xpath' type='struct _xmlXPathVariable'>
-      <field name='name' type='const xmlChar *'/>
-      <field name='value' type='xmlXPathObjectPtr'/>
-    </struct>
-    <typedef name='xmlXPathVariablePtr' file='xpath' type='xmlXPathVariable *'/>
-    <variable name='htmlDefaultSAXHandler' file='HTMLparser' type='const xmlSAXHandlerV1'>
-      <info>DEPRECATED: This handler is unused and will be removed from future versions.  Default old SAX v1 handler for HTML, builds the DOM tree</info>
-    </variable>
-    <variable name='xmlFree' file='xmlmemory' type='xmlFreeFunc'>
-      <info>@mem: an already allocated block of memory  The variable holding the libxml free() implementation</info>
-    </variable>
-    <variable name='xmlIsBaseCharGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsCharGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsCombiningGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsDigitGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsExtenderGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsIdeographicGroup' file='chvalid' type='const xmlChRangeGroup'/>
-    <variable name='xmlIsPubidChar_tab' file='chvalid' type='const unsigned charxmlIsPubidChar_tab[256]'/>
-    <variable name='xmlMalloc' file='xmlmemory' type='xmlMallocFunc'>
-      <info>@size:  the size requested in bytes  The variable holding the libxml malloc() implementation  Returns a pointer to the newly allocated block or NULL in case of error</info>
-    </variable>
-    <variable name='xmlMallocAtomic' file='xmlmemory' type='xmlMallocFunc'>
-      <info>@size:  the size requested in bytes  The variable holding the libxml malloc() implementation for atomic data (i.e. blocks not containing pointers), useful when using a garbage collecting allocator.  Returns a pointer to the newly allocated block or NULL in case of error</info>
-    </variable>
-    <variable name='xmlMemStrdup' file='xmlmemory' type='xmlStrdupFunc'>
-      <info>@str: a zero terminated string  The variable holding the libxml strdup() implementation  Returns the copy of the string or NULL in case of error</info>
-    </variable>
-    <variable name='xmlParserVersion' file='parser' type='const char * const'>
-      <info>Constant string describing the internal version of the library</info>
-    </variable>
-    <variable name='xmlRealloc' file='xmlmemory' type='xmlReallocFunc'>
-      <info>@mem: an already allocated block of memory @size:  the new size requested in bytes  The variable holding the libxml realloc() implementation  Returns a pointer to the newly reallocated block or NULL in case of error</info>
-    </variable>
-    <variable name='xmlStringComment' file='parserInternals' type='const xmlCharxmlStringComment[]'/>
-    <variable name='xmlStringText' file='parserInternals' type='const xmlCharxmlStringText[]'/>
-    <variable name='xmlStringTextNoenc' file='parserInternals' type='const xmlCharxmlStringTextNoenc[]'/>
-    <variable name='xmlXPathNAN' file='xpath' type='double'/>
-    <variable name='xmlXPathNINF' file='xpath' type='double'/>
-    <variable name='xmlXPathPINF' file='xpath' type='double'/>
-    <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)'/>
-      <arg name='elem' type='const xmlChar *' info='the name of the element'/>
-      <arg name='fullname' type='const xmlChar *' info='the attribute name'/>
-      <arg name='type' type='int' info='the attribute type'/>
-      <arg name='def' type='int' info='the type of default value'/>
-      <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' 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>
-    <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>
-    <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>
-    <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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='the element name'/>
-      <arg name='type' type='int' info='the element type'/>
-      <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
-    </functype>
-    <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>
-    <functype name='endElementNsSAX2Func' file='parser' module='parser'>
-      <info>SAX2 callback when an element end has been detected by the parser. It provides the namespace information for the element.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
-      <arg name='localname' type='const xmlChar *' info='the local name of the element'/>
-      <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' 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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type'/>
-      <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'/>
-      <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
-    </functype>
-    <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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='the root element name'/>
-      <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' 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='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>
-    <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>
-    <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>
-    <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.</info>
-      <return type='htmlStatus' info='HTML_VALID'/>
-      <arg name='elt' type='const htmlElemDesc *' info='HTML element'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='doc' type='htmlDocPtr' info='the HTML document'/>
-      <arg name='name' type='const xmlChar *' info='The tag name'/>
-      <arg name='elem' type='htmlNodePtr' info='the HTML element'/>
-    </function>
-    <function name='htmlCreateFileParserCtxt' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlNewParserCtxt and htmlCtxtReadFile.  Create a parser context to read from a file.  A non-NULL encoding overrides encoding declarations in the document.  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 if a memory allocation failed.'/>
-      <arg name='filename' type='const char *' info='the filename'/>
-      <arg name='encoding' type='const char *' info='optional encoding'/>
-    </function>
-    <function name='htmlCreateMemoryParserCtxt' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlNewParserCtxt and htmlCtxtReadMemory.  Create a parser context for an HTML in-memory document. The input buffer must not contain any terminating null bytes.</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' 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.</info>
-      <return type='htmlParserCtxtPtr' info='the new parser context or NULL if a memory allocation failed.'/>
-      <arg name='sax' type='htmlSAXHandlerPtr' info='a SAX handler (optional)'/>
-      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (optional)'/>
-      <arg name='chunk' type='const char *' info='a pointer to an array of chars (optional)'/>
-      <arg name='size' type='int' info='number of chars in the array'/>
-      <arg name='filename' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='enc' type='xmlCharEncoding' info='encoding (deprecated, pass XML_CHAR_ENCODING_NONE)'/>
-    </function>
-    <function name='htmlCtxtParseDocument' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML document and return the resulting document tree.  Available since 2.13.0.</info>
-      <return type='htmlDocPtr' info='the resulting document tree or NULL'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='input' type='xmlParserInputPtr' info='parser input'/>
-    </function>
-    <function name='htmlCtxtReadDoc' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML in-memory document and build a tree.  See htmlCtxtUseOptions for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='str' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='URL' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <function name='htmlCtxtReadFd' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML from a file descriptor and build a tree.  See htmlCtxtUseOptions for details.  NOTE that the file descriptor will not be closed when the context is freed or reset.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='URL' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optinal)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <function name='htmlCtxtReadFile' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML file from the filesystem, the network or a user-defined resource loader.  See htmlCtxtUseOptions for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='filename' type='const char *' info='a file or URL'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <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.  See htmlCtxtUseOptions for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML in-memory document and build a tree. The input buffer must not contain any terminating null bytes.  See htmlCtxtUseOptions for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='URL' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optinal)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <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='htmlCtxtSetOptions' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Applies the options to the parser context. Unset options are cleared.  Available since 2.14.0. With older versions, you can use htmlCtxtUseOptions.  HTML_PARSE_RECOVER  No effect as of 2.14.0.  HTML_PARSE_HTML5  Make the tokenizer emit a SAX callback for each token. This results in unbalanced invocations of startElement and endElement.  For now, this is only usable with custom SAX callbacks.  HTML_PARSE_NODEFDTD  Do not default to a doctype if none was found.  HTML_PARSE_NOERROR  Disable error and warning reports to the error handlers. Errors are still accessible with xmlCtxtGetLastError.  HTML_PARSE_NOWARNING  Disable warning reports.  HTML_PARSE_PEDANTIC  No effect.  HTML_PARSE_NOBLANKS  Remove some text nodes containing only whitespace from the result document. Which nodes are removed depends on a conservative heuristic. The reindenting feature of the serialization code relies on this option to be set when parsing. Use of this option is DISCOURAGED.  HTML_PARSE_NONET  No effect.  HTML_PARSE_NOIMPLIED  Do not add implied html, head or body elements.  HTML_PARSE_COMPACT  Store small strings directly in the node struct to save memory.  HTML_PARSE_HUGE  Relax some internal limits.  Available since 2.14.0. Use XML_PARSE_HUGE works with older versions.  Maximum size of text nodes, tags, comments, CDATA sections  normal: 10M huge:    1B  Maximum size of names, system literals, pubid literals  normal: 50K huge:   10M  Maximum nesting depth of elements  normal:  256 huge:   2048  HTML_PARSE_IGNORE_ENC  Ignore the encoding in the HTML declaration. This option is mostly unneeded these days. The only effect is to enforce UTF-8 decoding of ASCII-like data.  HTML_PARSE_BIG_LINES  Enable reporting of line numbers larger than 65535.  Available since 2.14.0.</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 HTML parser context'/>
-      <arg name='options' type='int' info='a bitmask of xmlParserOption values'/>
-    </function>
-    <function name='htmlCtxtUseOptions' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlCtxtSetOptions.  Applies the options to the parser context. The following options are never cleared and can only be enabled:  HTML_PARSE_NODEFDTD HTML_PARSE_NOERROR HTML_PARSE_NOWARNING HTML_PARSE_NOIMPLIED HTML_PARSE_COMPACT HTML_PARSE_HUGE HTML_PARSE_IGNORE_ENC HTML_PARSE_BIG_LINES</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' module='SAX2'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: This function is a no-op. Call xmlInitParser to initialize the library.</info>
-      <return type='void'/>
-    </function>
-    <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'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='encoding' type='const char *' info='the encoding string (unused)'/>
-      <arg name='format' type='int' info='should formatting spaces been added'/>
-    </function>
-    <function name='htmlDocContentDumpOutput' file='HTMLtree' module='HTMLtree'>
-      <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Dump an HTML document. Formatting return/spaces are added.</info>
-      <return type='void'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='encoding' type='const char *' info='the encoding string (unused)'/>
-    </function>
-    <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' 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'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
-      <arg name='size' type='int *' info='OUT: the memory length'/>
-    </function>
-    <function name='htmlDocDumpMemoryFormat' 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'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
-      <arg name='size' type='int *' info='OUT: the memory length'/>
-      <arg name='format' type='int' info='should formatting spaces been added'/>
-    </function>
-    <function name='htmlElementAllowedHere' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.</info>
-      <return type='int' info='1'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.</info>
-      <return type='htmlStatus' info='HTML_VALID'/>
-      <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' 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.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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'/>
-      <arg name='quoteChar' type='int' info='the quote character to escape (&apos; or &quot;) or zero.'/>
-    </function>
-    <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' 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' 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' 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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use HTML_PARSE_NOIMPLIED  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='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: This is a no-op.</info>
-      <return type='void'/>
-    </function>
-    <function name='htmlIsAutoClosed' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='HTMLtree'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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' 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' 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='htmlNewParserCtxt' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Allocate and initialize a new HTML parser context.  This can be used to parse HTML documents into DOM trees with functions like xmlCtxtReadFile or xmlCtxtReadMemory.  See htmlCtxtUseOptions for parser options.  See xmlCtxtSetErrorHandler for advanced error handling.  See htmlNewSAXParserCtxt for custom SAX parsers.</info>
-      <return type='htmlParserCtxtPtr' info='the htmlParserCtxtPtr or NULL in case of allocation error'/>
-    </function>
-    <function name='htmlNewSAXParserCtxt' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Allocate and initialize a new HTML SAX parser context. If userData is NULL, the parser context will be passed as user data.  Available since 2.11.0. If you want support older versions, it&apos;s best to invoke htmlNewParserCtxt and set ctxt-&gt;sax with struct assignment.  Also see htmlNewParserCtxt.</info>
-      <return type='htmlParserCtxtPtr' info='the htmlParserCtxtPtr or NULL in case of allocation error'/>
-      <arg name='sax' type='const htmlSAXHandler *' info='SAX handler'/>
-      <arg name='userData' type='void *' info='user data'/>
-    </function>
-    <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'/>
-      <arg name='buf' type='xmlBufferPtr' info='the HTML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-    </function>
-    <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'/>
-      <arg name='out' type='FILE *' info='the FILE pointer'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-    </function>
-    <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.'/>
-      <arg name='out' type='FILE *' info='the FILE pointer'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <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' 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'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <arg name='encoding' type='const char *' info='the encoding string (unused)'/>
-      <arg name='format' type='int' info='should formatting spaces been added'/>
-    </function>
-    <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'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='the HTML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <arg name='encoding' type='const char *' info='the encoding string (unused)'/>
-    </function>
-    <function name='htmlNodeStatus' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.</info>
-      <return type='htmlStatus' info='HTML_VALID'/>
-      <arg name='node' type='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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='int' info='0'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-    </function>
-    <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 in push parser mode.  Assumes that the parser context was initialized with htmlCreatePushParserCtxt.  The last chunk, which will often be empty, must be marked with the @terminate flag. With the default SAX callbacks, the resulting document will be available in ctxt-&gt;myDoc. This pointer will not be freed by the library.  If the document isn&apos;t well-formed, ctxt-&gt;myDoc is set to NULL.</info>
-      <return type='int' info='an xmlParserErrors code (0 on success).'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-      <arg name='chunk' type='const char *' info='chunk of memory'/>
-      <arg name='size' type='int' info='size of chunk in bytes'/>
-      <arg name='terminate' type='int' info='last chunk indicator'/>
-    </function>
-    <function name='htmlParseDoc' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlReadDoc.  Parse an HTML in-memory document and build a tree.  This function uses deprecated global parser options.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
-      <arg name='encoding' type='const char *' info='the encoding (optional)'/>
-    </function>
-    <function name='htmlParseDocument' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML document and invoke the SAX handlers. This is useful if you&apos;re only interested in custom SAX callbacks. If you want a document tree, use htmlCtxtParseDocument.</info>
-      <return type='int' info='0, -1 in case of error.'/>
-      <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
-    </function>
-    <function name='htmlParseElement' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  parse an HTML element, this is highly recursive this is kept for compatibility with previous code versions  [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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='const htmlEntityDesc *' info='NULL.'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Parse an HTML file and build a tree.</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='encoding (optional)'/>
-    </function>
-    <function name='htmlReadDoc' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Convenience function to parse an HTML document from a zero-terminated string.  See htmlCtxtReadDoc for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree.'/>
-      <arg name='str' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='url' type='const char *' info='only used for error reporting (optoinal)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <function name='htmlReadFd' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Convenience function to parse an HTML document from a file descriptor.  NOTE that the file descriptor will not be closed when the context is freed or reset.  See htmlCtxtReadFd for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='url' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <function name='htmlReadFile' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Convenience function to parse an HTML file from the filesystem, the network or a global user-defined resource loader.  See htmlCtxtReadFile for details.</info>
-      <return type='htmlDocPtr' 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 (optional)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOptions'/>
-    </function>
-    <function name='htmlReadIO' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Convenience function to parse an HTML document from I/O functions and context.  See htmlCtxtReadIO for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function (optional)'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='url' type='const char *' info='only used for error reporting (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
-    </function>
-    <function name='htmlReadMemory' file='HTMLparser' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Convenience function to parse an HTML document from memory. The input buffer must not contain any terminating null bytes.  See htmlCtxtReadMemory for details.</info>
-      <return type='htmlDocPtr' info='the resulting document tree'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='url' type='const char *' info='only used for error reporting (optional)'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlNewSAXParserCtxt and htmlCtxtReadDoc.  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.'/>
-      <arg name='cur' type='const 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'/>
-      <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' module='HTMLparser'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>DEPRECATED: Use htmlNewSAXParserCtxt and htmlCtxtReadFile.  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.'/>
-      <arg name='filename' type='const char *' info='the filename'/>
-      <arg name='encoding' type='const char *' info='encoding (optional)'/>
-      <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' 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' 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.'/>
-      <arg name='filename' type='const char *' info='the filename'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='encoding' type='const char *' info='the document encoding'/>
-    </function>
-    <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.'/>
-      <arg name='filename' type='const char *' info='the filename'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <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' 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' 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='htmlUTF8ToHtml' 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.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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>
-    <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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='the root element name'/>
-      <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='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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='The name of the notation'/>
-      <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <functype name='startElementNsSAX2Func' file='parser' module='parser'>
-      <info>SAX2 callback when an element start has been detected by the parser. It provides the namespace information 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)'/>
-      <arg name='localname' type='const xmlChar *' info='the local name of the element'/>
-      <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'/>
-      <arg name='nb_namespaces' type='int' info='number of namespace definitions on that node'/>
-      <arg name='namespaces' type='const xmlChar **' info='pointer to the array of prefix/URI pairs namespace definitions'/>
-      <arg name='nb_attributes' type='int' info='the number of attributes on that node'/>
-      <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' 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>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='The name of the entity'/>
-      <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'/>
-      <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
-    </functype>
-    <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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>This is the prototype for a extended link detection callback.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='user data pointer'/>
-      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
-      <arg name='nbLocators' type='int' info='the number of locators detected on the link'/>
-      <arg name='hrefs' type='const xlinkHRef *' info='pointer to the array of locator hrefs'/>
-      <arg name='roles' type='const xlinkRole *' info='pointer to the array of locator roles'/>
-      <arg name='nbArcs' type='int' info='the number of arcs detected on the link'/>
-      <arg name='from' type='const xlinkRole *' info='pointer to the array of source roles found on the arcs'/>
-      <arg name='to' type='const xlinkRole *' info='pointer to the array of target roles found on the arcs'/>
-      <arg name='show' type='xlinkShow *' info='array of values for the show attributes found on the arcs'/>
-      <arg name='actuate' type='xlinkActuate *' info='array of values for the actuate attributes found on the arcs'/>
-      <arg name='nbTitles' type='int' info='the number of titles detected on the link'/>
-      <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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>This is the prototype for a extended link set detection callback.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='user data pointer'/>
-      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
-      <arg name='nbLocators' type='int' info='the number of locators detected on the link'/>
-      <arg name='hrefs' type='const xlinkHRef *' info='pointer to the array of locator hrefs'/>
-      <arg name='roles' type='const xlinkRole *' info='pointer to the array of locator roles'/>
-      <arg name='nbTitles' type='int' info='the number of titles detected on the link'/>
-      <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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  Get the default xlink detection routine</info>
-      <return type='xlinkNodeDetectFunc' info='the current function or NULL;'/>
-    </function>
-    <function name='xlinkGetDefaultHandler' file='xlink' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  Get the default xlink handler.</info>
-      <return type='xlinkHandlerPtr' info='the current xlinkHandlerPtr value.'/>
-    </function>
-    <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' 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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='xlink'>
-      <cond>defined(LIBXML_XPTR_ENABLED)</cond>
-      <info>This is the prototype for a simple link detection callback.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='user data pointer'/>
-      <arg name='node' type='xmlNodePtr' info='the node carrying the link'/>
-      <arg name='href' type='const xlinkHRef' info='the target of the link'/>
-      <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' 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'/>
-      <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
-      <arg name='type' type='const xmlChar *' info='the type of record to add to the catalog'/>
-      <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' 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' 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' 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='catal' type='xmlCatalogPtr' info='a Catalog'/>
-      <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' 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' 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' 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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
-      <arg name='elem' type='const xmlChar *' info='the element name'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-      <arg name='ns' type='const xmlChar *' info='the attribute namespace prefix'/>
-      <arg name='type' type='xmlAttributeType' info='the attribute type'/>
-      <arg name='def' type='xmlAttributeDefault' info='the attribute default type'/>
-      <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' module='tree'>
-      <info>Unlink @cur and append it to the children of @parent.  If @cur is a text node, it may be merged with an adjacent text node and freed. In this case the text node containing the merged content is returned.  If @cur is an attribute node, it is appended to the attributes of @parent. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed.  General notes:  Move operations like xmlAddChild can cause element or attribute nodes to reference namespaces that aren&apos;t declared in one of their ancestors. This can lead to use-after-free errors if the elements containing the declarations are freed later, especially when moving nodes from one document to another. You should consider calling xmlReconciliateNs after a move operation to normalize namespaces. Another option is to call xmlDOMWrapAdoptNode with the target parent before moving a node.  For the most part, move operations don&apos;t check whether the resulting tree structure is valid. Users must make sure that parent nodes only receive children of valid types. Inserted child nodes must never be an ancestor of the parent node to avoid cycles in the tree structure. In general, only document, document fragments, elements and attributes should be used as parent nodes.  When moving a node between documents and a memory allocation fails, the node&apos;s content will be corrupted and it will be unlinked. In this case, the node must be freed manually.  Moving DTDs between documents isn&apos;t supported.</info>
-      <return type='xmlNodePtr' info='@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-      <arg name='cur' type='xmlNodePtr' info='the child node'/>
-    </function>
-    <function name='xmlAddChildList' file='tree' module='tree'>
-      <info>Append a node list to another node.  See xmlAddChild.</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' 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'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
-      <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' 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'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
-      <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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <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' module='encoding'>
-      <info>DEPRECATED: This function modifies global state and is not thread-safe.  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='xmlAddEntity' file='entities' module='entities'>
-      <info>Register a new entity for this document.  Available since 2.13.0.</info>
-      <return type='int' info='an xmlParserErrors error code.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='extSubset' type='int' info='add to the external or internal subset'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
-      <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
-      <arg name='content' type='const xmlChar *' info='the entity content'/>
-      <arg name='out' type='xmlEntityPtr *' info='pointer to resulting entity (optional)'/>
-    </function>
-    <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'/>
-      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
-      <arg name='value' type='const xmlChar *' info='the value name'/>
-      <arg name='attr' type='xmlAttrPtr' info='the attribute holding the ID'/>
-    </function>
-    <function name='xmlAddIDSafe' file='valid' module='valid'>
-      <info>Register a new id declaration  Available since 2.13.0.</info>
-      <return type='int' info='1 on success, 0 if the ID already exists, -1 if a memory allocation fails.'/>
-      <arg name='attr' type='xmlAttrPtr' info='the attribute holding the ID'/>
-      <arg name='value' type='const xmlChar *' info='the attribute (ID) value'/>
-    </function>
-    <function name='xmlAddNextSibling' file='tree' module='tree'>
-      <info>Unlinks @cur and inserts it as next sibling after @prev.  Unlike xmlAddChild this function does not merge text nodes.  If @cur is an attribute node, it is inserted after attribute @prev. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed.  See the notes in xmlAddChild.</info>
-      <return type='xmlNodePtr' info='@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='prev' type='xmlNodePtr' info='the target node'/>
-      <arg name='cur' type='xmlNodePtr' info='the new node'/>
-    </function>
-    <function name='xmlAddNotationDecl' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='dtd' type='xmlDtdPtr' info='pointer to the DTD'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <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' module='tree'>
-      <info>Unlinks @cur and inserts it as previous sibling before @next.  Unlike xmlAddChild this function does not merge text nodes.  If @cur is an attribute node, it is inserted before attribute @next. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed.  See the notes in xmlAddChild.</info>
-      <return type='xmlNodePtr' info='@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='next' type='xmlNodePtr' info='the target node'/>
-      <arg name='cur' type='xmlNodePtr' info='the new node'/>
-    </function>
-    <function name='xmlAddRef' file='valid' module='valid'>
-      <info>DEPRECATED, do not use. This function will be removed from the public API.  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'/>
-      <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
-      <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' module='tree'>
-      <info>Unlinks @cur and inserts it as last sibling of @node.  If @cur is a text node, it may be merged with an adjacent text node and freed. In this case the text node containing the merged content is returned.  If @cur is an attribute node, it is appended to the attribute list containing @node. If the attribute list contains an attribute with a name matching @cur, the old attribute is destroyed.  See the notes in xmlAddChild.</info>
-      <return type='xmlNodePtr' info='@cur or a sibling if @cur was merged. Returns NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the target node'/>
-      <arg name='cur' type='xmlNodePtr' info='the new node'/>
-    </function>
-    <function name='xmlAllocOutputBuffer' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Create a buffered parser output  Consumes @encoder even in error case.</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' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFrom*.  Create a buffered parser input for progressive parsing.  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</info>
-      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
-      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known (deprecated)'/>
-    </function>
-    <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'/>
-      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='lax' type='int' info='allow to transition if not all all transitions have been activated'/>
-    </function>
-    <function name='xmlAutomataNewCountTrans' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
-      <arg name='min' type='int' info='the minimum successive occurrences of token'/>
-      <arg name='max' type='int' info='the maximum successive occurrences of token'/>
-      <arg name='data' type='void *' info='data associated to the transition'/>
-    </function>
-    <function name='xmlAutomataNewCountTrans2' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
-      <arg name='token2' type='const xmlChar *' info='the second input string associated to that transition'/>
-      <arg name='min' type='int' info='the minimum successive occurrences of token'/>
-      <arg name='max' type='int' info='the maximum successive occurrences of token'/>
-      <arg name='data' type='void *' info='data associated to the transition'/>
-    </function>
-    <function name='xmlAutomataNewCountedTrans' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='counter' type='int' info='the counter associated to that transition'/>
-    </function>
-    <function name='xmlAutomataNewCounter' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Create a new counter</info>
-      <return type='int' info='the counter number or -1 in case of error'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='counter' type='int' info='the counter associated to that transition'/>
-    </function>
-    <function name='xmlAutomataNewEpsilon' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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='xmlAutomataNewNegTrans' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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 any value except (@token,@token2) Note that if @token2 is not NULL, then (X, NULL) won&apos;t match to follow # the semantic of XSD ##other</info>
-      <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the first input string associated to that transition'/>
-      <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='xmlAutomataNewOnceTrans' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
-      <arg name='min' type='int' info='the minimum successive occurrences of token'/>
-      <arg name='max' type='int' info='the maximum successive occurrences of token'/>
-      <arg name='data' type='void *' info='data associated to the transition'/>
-    </function>
-    <function name='xmlAutomataNewOnceTrans2' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
-      <arg name='token2' type='const xmlChar *' info='the second input string associated to that transition'/>
-      <arg name='min' type='int' info='the minimum successive occurrences of token'/>
-      <arg name='max' type='int' info='the maximum successive occurrences of token'/>
-      <arg name='data' type='void *' info='data associated to the transition'/>
-    </function>
-    <function name='xmlAutomataNewState' file='xmlautomata' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-      <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'/>
-      <arg name='token' type='const xmlChar *' info='the first input string associated to that transition'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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='xmlBufContent' file='tree' module='buf'>
-      <info>Function to extract the content of a buffer</info>
-      <return type='xmlChar *' info='the internal content'/>
-      <arg name='buf' type='const xmlBuf *' info='the buffer'/>
-    </function>
-    <function name='xmlBufEnd' file='tree' module='buf'>
-      <info>Function to extract the end of the content of a buffer</info>
-      <return type='xmlChar *' info='the end of the internal content or NULL in case of error'/>
-      <arg name='buf' type='xmlBufPtr' info='the buffer'/>
-    </function>
-    <function name='xmlBufGetNodeContent' 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 @buf with this value</info>
-      <return type='int' info='0 in case of success and -1 in case of error.'/>
-      <arg name='buf' type='xmlBufPtr' info='a buffer xmlBufPtr'/>
-      <arg name='cur' type='const xmlNode *' info='the node being read'/>
-    </function>
-    <function name='xmlBufNodeDump' 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='size_t' info='the number of bytes written to the buffer, in case of error 0 is returned or @buf stores the error'/>
-      <arg name='buf' type='xmlBufPtr' info='the XML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <arg name='level' type='int' info='the imbrication level for indenting'/>
-      <arg name='format' type='int' info='is formatting allowed'/>
-    </function>
-    <function name='xmlBufShrink' file='tree' module='buf'>
-      <info>DEPRECATED: Don&apos;t use.  Remove the beginning of an XML buffer. NOTE that this routine behaviour differs from xmlBufferShrink() as it will return 0 on error instead of -1 due to size_t being used as the return type.</info>
-      <return type='size_t' info='the number of byte removed or 0 in case of failure'/>
-      <arg name='buf' type='xmlBufPtr' info='the buffer to dump'/>
-      <arg name='len' type='size_t' info='the number of xmlChar to remove'/>
-    </function>
-    <function name='xmlBufUse' file='tree' module='buf'>
-      <info>Function to get the length of a buffer</info>
-      <return type='size_t' info='the length of data in the internal content'/>
-      <arg name='buf' type='const xmlBufPtr' info='the buffer'/>
-    </function>
-    <function name='xmlBufferAdd' file='tree' module='buf'>
-      <info>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</info>
-      <return type='int' info='a xmlParserErrors code.'/>
-      <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' module='buf'>
-      <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='a xmlParserErrors code.'/>
-      <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' module='buf'>
-      <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' module='buf'>
-      <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' module='buf'>
-      <info>Function to extract the content of a buffer</info>
-      <return type='const xmlChar *' info='the internal content'/>
-      <arg name='buf' type='const xmlBuffer *' info='the buffer'/>
-    </function>
-    <function name='xmlBufferCreate' file='tree' module='buf'>
-      <info>routine to create an XML buffer.</info>
-      <return type='xmlBufferPtr' info='the new structure.'/>
-    </function>
-    <function name='xmlBufferCreateSize' file='tree' module='buf'>
-      <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' module='buf'>
-      <info></info>
-      <return type='xmlBufferPtr' info='an XML buffer initialized with bytes.'/>
-      <arg name='mem' type='void *' info='the memory area'/>
-      <arg name='size' type='size_t' info='the size in byte'/>
-    </function>
-    <function name='xmlBufferDetach' file='tree' module='buf'>
-      <info>Remove the string contained in a buffer and gie it back to the caller. The buffer is reset to an empty content. This doesn&apos;t work with immutable buffers as they can&apos;t be reset.</info>
-      <return type='xmlChar *' info='the previous string contained by the buffer.'/>
-      <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
-    </function>
-    <function name='xmlBufferDump' file='tree' module='buf'>
-      <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' module='buf'>
-      <info>empty a buffer.</info>
-      <return type='void'/>
-      <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
-    </function>
-    <function name='xmlBufferFree' file='tree' module='buf'>
-      <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' module='buf'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='buf'>
-      <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 xmlBuffer *' info='the buffer'/>
-    </function>
-    <function name='xmlBufferResize' file='tree' module='buf'>
-      <info>DEPRECATED: Don&apos;t use. 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' module='buf'>
-      <info>Sets the allocation scheme for this buffer.  For libxml2 before 2.14, it is recommended to set this to XML_BUFFER_ALLOC_DOUBLE_IT. Has no effect on 2.14 or later.</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' module='buf'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='buf'>
-      <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' module='buf'>
-      <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' module='buf'>
-      <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' 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'/>
-      <arg name='prefix' type='const xmlChar *' info='the prefix'/>
-      <arg name='memory' type='xmlChar *' info='preallocated memory'/>
-      <arg name='len' type='int' info='preallocated memory length'/>
-    </function>
-    <function name='xmlBuildRelativeURI' file='uri' module='uri'>
-      <info>See xmlBuildRelativeURISafe.</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='xmlBuildRelativeURISafe' 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 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  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, -1 if a memory allocation failed or an error code if URI or base are invalid.'/>
-      <arg name='URI' type='const xmlChar *' info='the URI reference under consideration'/>
-      <arg name='base' type='const xmlChar *' info='the base value'/>
-      <arg name='valPtr' type='xmlChar **' info='pointer to result URI'/>
-    </function>
-    <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='xmlBuildURISafe' 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  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, -1 if a memory allocation failed or an error code if URI or base are invalid.'/>
-      <arg name='URI' type='const xmlChar *' info='the URI instance found in the document'/>
-      <arg name='base' type='const xmlChar *' info='the base value'/>
-      <arg name='valPtr' type='xmlChar **' info='pointer to result URI'/>
-    </function>
-    <function name='xmlByteConsumed' file='parser' module='encoding'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='c14n'>
-      <cond>defined(LIBXML_C14N_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'/>
-      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
-      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
-      <arg name='mode' type='int' info='the c14n mode (see @xmlC14NMode)'/>
-      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
-      <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' module='c14n'>
-      <cond>defined(LIBXML_C14N_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'/>
-      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
-      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
-      <arg name='mode' type='int' info='the c14n mode (see @xmlC14NMode)'/>
-      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
-      <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
-      <arg name='filename' type='const char *' info='the filename to store canonical XML image'/>
-      <arg name='compression' type='int' info='the compression level (zlib required): -1 - libxml default, 0 - uncompressed, &gt;0 - compression level'/>
-    </function>
-    <function name='xmlC14NDocSaveTo' file='c14n' module='c14n'>
-      <cond>defined(LIBXML_C14N_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'/>
-      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
-      <arg name='nodes' type='xmlNodeSetPtr' info='the nodes set to be included in the canonized image or NULL if all document nodes should be included'/>
-      <arg name='mode' type='int' info='the c14n mode (see @xmlC14NMode)'/>
-      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
-      <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' module='c14n'>
-      <cond>defined(LIBXML_C14N_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'/>
-      <arg name='doc' type='xmlDocPtr' info='the XML document for canonization'/>
-      <arg name='is_visible_callback' type='xmlC14NIsVisibleCallback' info='the function to use to determine is node visible or not'/>
-      <arg name='user_data' type='void *' info='the first parameter for @is_visible_callback function (in most cases, it is nodes set)'/>
-      <arg name='mode' type='int' info='the c14n mode (see @xmlC14NMode)'/>
-      <arg name='inclusive_ns_prefixes' type='xmlChar **' info='the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise)'/>
-      <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' module='c14n'>
-      <cond>defined(LIBXML_C14N_ENABLED)</cond>
-      <info>Signature for a C14N callback on visible nodes</info>
-      <return type='int' info='1 if the node should be included'/>
-      <arg name='user_data' type='void *' info='user data'/>
-      <arg name='node' type='xmlNodePtr' info='the current node'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-    </functype>
-    <function name='xmlCanonicPath' file='uri' module='uri'>
-      <info>Prepares a path.  If the path contains the substring &quot;://&quot;, it is considered a Legacy Extended IRI. Characters which aren&apos;t allowed in URIs are escaped.  Otherwise, the path is considered a filesystem path which is copied without modification.  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.</info>
-      <return type='xmlChar *' info='the escaped path.'/>
-      <arg name='path' type='const xmlChar *' info='the resource locator in a filesystem notation'/>
-    </function>
-    <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'/>
-      <arg name='type' type='const xmlChar *' info='the type of record to add to the catalog'/>
-      <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' 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' 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' 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' 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' 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' module='catalog'>
-      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
-      <info>DEPRECATED: Use XML_PARSE_NO_SYS_CATALOG and XML_PARSE_CATALOG_PI.  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' 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' 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' 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' 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.'/>
-      <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
-      <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' 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' 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' 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' 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' 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' 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' 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' module='catalog'>
-      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
-      <info>DEPRECATED: This setting is global and not thread-safe.  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' module='catalog'>
-      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
-      <info>DEPRECATED: Use XML_PARSE_NO_SYS_CATALOG and XML_PARSE_CATALOG_PI.  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' module='encoding'>
-      <info>Releases an xmlCharEncodingHandler. Must be called after a handler is no longer in use.</info>
-      <return type='int' info='0.'/>
-      <arg name='handler' type='xmlCharEncodingHandler *' info='char encoding transformation data structure'/>
-    </function>
-    <functype name='xmlCharEncConvCtxtDtor' file='encoding' module='encoding'>
-      <info>Free a conversion context.</info>
-      <return type='void'/>
-      <arg name='vctxt' type='void *' info='conversion context'/>
-    </functype>
-    <functype name='xmlCharEncConvFunc' file='encoding' module='encoding'>
-      <info>Convert between character encodings.  The value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced.  If the converter can consume partial multi-byte sequences, the @flush flag can be used to detect truncated sequences at EOF. Otherwise, the flag can be ignored.</info>
-      <return type='xmlCharEncError' info='an XML_ENC_ERR code.'/>
-      <arg name='vctxt' type='void *' info='conversion context'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <arg name='in' type='const unsigned char *' info='a pointer to an array of input bytes'/>
-      <arg name='inlen' type='int *' info='the length of @in'/>
-      <arg name='flush' type='int' info='end of input'/>
-    </functype>
-    <functype name='xmlCharEncConvImpl' file='encoding' module='encoding'>
-      <info>If this function returns XML_ERR_OK, it must fill the @out pointer with an encoding handler. The handler can be obtained from xmlCharEncNewCustomHandler.  @flags can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='vctxt' type='void *' info='user data'/>
-      <arg name='name' type='const char *' info='encoding name'/>
-      <arg name='flags' type='xmlCharEncFlags' info='bit mask of flags'/>
-      <arg name='out' type='xmlCharEncodingHandler **' info='pointer to resulting handler'/>
-    </functype>
-    <function name='xmlCharEncFirstLine' file='encoding' module='encoding'>
-      <info>DEPERECATED: Don&apos;t use.</info>
-      <return type='int' info='the number of bytes written or an XML_ENC_ERR code.'/>
-      <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='xmlCharEncInFunc' file='encoding' module='encoding'>
-      <info>Generic front-end for the encoding handler input function</info>
-      <return type='int' info='the number of bytes written or an XML_ENC_ERR code.'/>
-      <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='xmlCharEncNewCustomHandler' file='encoding' module='encoding'>
-      <info>Create a custom xmlCharEncodingHandler.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='name' type='const char *' info='the encoding name'/>
-      <arg name='input' type='xmlCharEncConvFunc' info='input callback which converts to UTF-8'/>
-      <arg name='output' type='xmlCharEncConvFunc' info='output callback which converts from UTF-8'/>
-      <arg name='ctxtDtor' type='xmlCharEncConvCtxtDtor' info='context destructor'/>
-      <arg name='inputCtxt' type='void *' info='context for input callback'/>
-      <arg name='outputCtxt' type='void *' info='context for output callback'/>
-      <arg name='out' type='xmlCharEncodingHandler **' info='pointer to resulting handler'/>
-    </function>
-    <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 bytes written or an XML_ENC_ERR code.'/>
-      <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>
-    <functype name='xmlCharEncodingInputFunc' file='encoding' module='encoding'>
-      <info>Convert characters to UTF-8.  On success, the value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced.</info>
-      <return type='int' info='the number of bytes written or an XML_ENC_ERR code.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the UTF-8 result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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' module='encoding'>
-      <info>Convert characters from UTF-8.  On success, the value of @inlen after return is the number of bytes consumed and @outlen is the number of bytes produced.</info>
-      <return type='int' info='the number of bytes written or an XML_ENC_ERR code.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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' 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 xmlChRangeGroup *' info='pointer to range to be used to validate'/>
-    </function>
-    <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' 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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parserInternals'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, do not use.  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])+  The current REC reference the successors of RFC 1766, currently 5646  http://www.rfc-editor.org/rfc/rfc5646.txt langtag       = language [&quot;-&quot; script] [&quot;-&quot; region] *(&quot;-&quot; variant) *(&quot;-&quot; extension) [&quot;-&quot; privateuse] language      = 2*3ALPHA            ; shortest ISO 639 code [&quot;-&quot; extlang]       ; sometimes followed by ; extended language subtags / 4ALPHA              ; or reserved for future use / 5*8ALPHA            ; or registered language subtag  extlang       = 3ALPHA              ; selected ISO 639 codes *2(&quot;-&quot; 3ALPHA)      ; permanently reserved  script        = 4ALPHA              ; ISO 15924 code  region        = 2ALPHA              ; ISO 3166-1 code / 3DIGIT              ; UN M.49 code  variant       = 5*8alphanum         ; registered variants / (DIGIT 3alphanum)  extension     = singleton 1*(&quot;-&quot; (2*8alphanum))  ; Single alphanumerics ; &quot;x&quot; reserved for private use singleton     = DIGIT               ; 0 - 9 / %x41-57             ; A - W / %x59-5A             ; Y - Z / %x61-77             ; a - w / %x79-7A             ; y - z  it sounds right to still allow Irregular i-xxx IANA and user codes too The parser below doesn&apos;t try to cope with extension or privateuse that could be added but that&apos;s not interoperable anyway</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='xmlCheckThreadLocalStorage' file='threads' module='globals'>
-      <info>Check whether thread-local storage could be allocated.  In cross-platform code running in multithreaded environments, this function should be called once in each thread before calling other library functions to make sure that thread-local storage was allocated properly.</info>
-      <return type='int' info='0 on success or -1 if a memory allocation failed. A failed allocation signals a typically fatal and irrecoverable out-of-memory situation. Don&apos;t call any library functions in this case.  Available since 2.12.0.'/>
-    </function>
-    <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='xmlChildElementCount' file='tree' module='tree'>
-      <info>Count the number of child nodes which are elements.  Note that entity references are not expanded.</info>
-      <return type='unsigned long' info='the number of element children or 0 if arguments are invalid.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-    </function>
-    <function name='xmlCleanupCharEncodingHandlers' file='encoding' module='encoding'>
-      <info>DEPRECATED: This function will be made private. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.  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' module='encoding'>
-      <info>DEPRECATED: This function modifies global state and is not thread-safe.  Unregisters all aliases</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlCleanupGlobals' file='parser' module='globals'>
-      <info>DEPRECATED: This function is a no-op. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.</info>
-      <return type='void'/>
-    </function>
-    <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' module='xmlmemory'>
-      <info>DEPRECATED: This function is a no-op. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.</info>
-      <return type='void'/>
-    </function>
-    <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' module='threads'>
-      <info>This function is named somewhat misleadingly. It does not clean up parser state but global memory allocated by the library itself.  Since 2.9.11, cleanup is performed automatically if a shared or dynamic libxml2 library is unloaded. This function should only be used to avoid false positives from memory leak checkers in static builds.  WARNING: xmlCleanupParser assumes that all other threads that called libxml2 functions have terminated. No library calls must be made after calling this function. In general, THIS FUNCTION SHOULD ONLY BE CALLED RIGHT BEFORE THE WHOLE PROCESS EXITS.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlCleanupThreads' file='threads' module='threads'>
-      <info>DEPRECATED: This function is a no-op. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlClearNodeInfoSeq' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  -- 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' 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' 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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='parserInternals'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='tree'>
-      <info>Copy a document. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</info>
-      <return type='xmlDocPtr' info='the copied document or NULL if a memory allocation failed.'/>
-      <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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='tree'>
-      <info>Copy a DTD.</info>
-      <return type='xmlDtdPtr' info='the copied DTD or NULL if a memory allocation failed.'/>
-      <arg name='dtd' type='xmlDtdPtr' info='the DTD'/>
-    </function>
-    <function name='xmlCopyElementContent' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='entities'>
-      <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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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='const xmlError *' info='a source error'/>
-      <arg name='to' type='xmlErrorPtr' info='a target error'/>
-    </function>
-    <function name='xmlCopyNamespace' file='tree' module='tree'>
-      <info>Copy a namespace.</info>
-      <return type='xmlNsPtr' info='the copied namespace or NULL if a memory allocation failed.'/>
-      <arg name='cur' type='xmlNsPtr' info='the namespace'/>
-    </function>
-    <function name='xmlCopyNamespaceList' file='tree' module='tree'>
-      <info>Copy a namespace list.</info>
-      <return type='xmlNsPtr' info='the head of the copied list or NULL if a memory allocation failed.'/>
-      <arg name='cur' type='xmlNsPtr' info='the first namespace'/>
-    </function>
-    <function name='xmlCopyNode' file='tree' module='tree'>
-      <info>Copy a node.  Use of this function is DISCOURAGED in favor of xmlDocCopyNode.</info>
-      <return type='xmlNodePtr' info='the copied node or NULL if a memory allocation failed.'/>
-      <arg name='node' type='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' module='tree'>
-      <info>Copy a node list and all children.  Use of this function is DISCOURAGED in favor of xmlDocCopyNodeList.</info>
-      <return type='xmlNodePtr' info='the head of the copied list or NULL if a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
-    </function>
-    <function name='xmlCopyNotationTable' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='tree'>
-      <info>Create a copy of the attribute. This function sets the parent pointer of the copy to @target but doesn&apos;t set the attribute on the target element. Users should consider to set the attribute by calling xmlAddChild afterwards or reset the parent pointer to NULL.</info>
-      <return type='xmlAttrPtr' info='the copied attribute or NULL if a memory allocation failed.'/>
-      <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' module='tree'>
-      <info>Create a copy of an attribute list. This function sets the parent pointers of the copied attributes to @target but doesn&apos;t set the attributes on the target element.</info>
-      <return type='xmlAttrPtr' info='the head of the copied list or NULL if a memory allocation failed.'/>
-      <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='xmlCreateCharEncodingHandler' file='encoding' module='encoding'>
-      <info>Find or create a handler matching the encoding. The following converters are looked up in order:  - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - Custom implementation if provided - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled  The handler must be closed with xmlCharEncCloseFunc.  If the encoding is UTF-8, a NULL handler and no error code will be returned.  @flags can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.  Available since 2.14.0.</info>
-      <return type='xmlParserErrors' info='XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another xmlParserErrors error code.'/>
-      <arg name='name' type='const char *' info='a string describing the char encoding.'/>
-      <arg name='flags' type='xmlCharEncFlags' info='bit mask of flags'/>
-      <arg name='impl' type='xmlCharEncConvImpl' info='a conversion implementation (optional)'/>
-      <arg name='implCtxt' type='void *' info='user data for conversion implementation (optional)'/>
-      <arg name='out' type='xmlCharEncodingHandler **' info='pointer to result'/>
-    </function>
-    <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='str' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Use xmlNewParserCtxt and xmlCtxtReadFile.  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' 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 (optional)'/>
-      <arg name='user_data' type='void *' info='user data for SAX callbacks (optional)'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function (optional)'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known (deprecated)'/>
-    </function>
-    <function name='xmlCreateIntSubset' file='tree' module='tree'>
-      <info>Create a DTD node.  If a document is provided and it already has an internal subset, the existing DTD object is returned without creating a new object. If the document has no internal subset, it will be set to the created DTD.</info>
-      <return type='xmlDtdPtr' info='a pointer to the new or existing DTD object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document pointer (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the DTD name (optional)'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the external (PUBLIC) ID (optional)'/>
-      <arg name='SystemID' type='const xmlChar *' info='the system ID (optional)'/>
-    </function>
-    <function name='xmlCreateMemoryParserCtxt' file='parserInternals' module='parser'>
-      <info>Create a parser context for an XML in-memory document. The input buffer must not contain a terminating null byte.</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' module='parser'>
-      <cond>defined(LIBXML_PUSH_ENABLED)</cond>
-      <info>Create a parser context for using the XML parser in push mode. See xmlParseChunk.  Passing an initial chunk is useless and deprecated.  The push parser doesn&apos;t support recovery mode or the XML_PARSE_NOBLANKS option.  @filename is used as base URI to fetch external entities and for error reports.</info>
-      <return type='xmlParserCtxtPtr' info='the new parser context or NULL if a memory allocation failed.'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler (optional)'/>
-      <arg name='user_data' type='void *' info='user data for SAX callbacks (optional)'/>
-      <arg name='chunk' type='const char *' info='initial chunk (optional, deprecated)'/>
-      <arg name='size' type='int' info='size of initial chunk in bytes'/>
-      <arg name='filename' type='const char *' info='file name or URI (optional)'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Use xmlNewParserCtxt and xmlCtxtReadFile.  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='xmlCtxtErrMemory' file='parserInternals' module='parserInternals'>
-      <info>Handle an out-of-memory error.  Available since 2.13.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlCtxtGetCatalogs' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='void *' info='the local catalogs.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetDeclaredEncoding' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='const xmlChar *' info='the encoding from the encoding declaration. This can differ from the actual encoding.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetDict' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='xmlDictPtr' info='the dictionary.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetDocument' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='xmlDocPtr' info='the parsed document or NULL if a fatal error occurred when parsing. The document must be freed by the caller. Resets the context&apos;s document to NULL.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetLastError' file='xmlerror' module='parserInternals'>
-      <info>Get the last parsing error registered.</info>
-      <return type='const xmlError *' info='NULL if no error occurred or a pointer to the error'/>
-      <arg name='ctx' type='void *' info='an XML parser context'/>
-    </function>
-    <function name='xmlCtxtGetOptions' file='parser' module='parser'>
-      <info>Get the current options of the parser context.  Available since 2.14.0.</info>
-      <return type='int' info='the current options set in the parser context, or -1 if ctxt is NULL.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlCtxtGetPrivate' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='void *' info='the private application data.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetSaxHandler' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='xmlSAXHandler *' info='the SAX handler struct. This is not a copy and must not be freed. Handlers can be updated.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetStandalone' file='parser' module='parser'>
-      <info>Available since 2.14.0.</info>
-      <return type='int' info='the value from the standalone document declaration.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetStatus' file='parser' module='parserInternals'>
-      <info>Get well-formedness and validation status after parsing. Also reports catastrophic errors which are not related to parsing like out-of-memory, I/O or other errors.  Available since 2.14.0.</info>
-      <return type='xmlParserStatus' info='a bitmask of XML_STATUS_* flags ORed together.'/>
-      <arg name='ctxt' type='xmlParserCtxt *' info='an XML parser context'/>
-    </function>
-    <function name='xmlCtxtGetValidCtxt' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='xmlValidCtxtPtr' info='the validation context.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtGetVersion' file='parser' module='parser'>
-      <info>Available since 2.14.0.</info>
-      <return type='const xmlChar *' info='the version from the XML declaration.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtIsHtml' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='int' info='1 if this is a HTML parser context, 0 otherwise.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtIsStopped' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.</info>
-      <return type='int' info='1 if the parser is stopped, 0 otherwise.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-    </function>
-    <function name='xmlCtxtParseContent' file='parser' module='parser'>
-      <info>Parse a well-balanced chunk of XML matching the &apos;content&apos; production.  Namespaces in scope of @node and entities of @node&apos;s document are recognized. When validating, the DTD of @node&apos;s document is used.  Always consumes @input even in error case.  Available since 2.14.0.</info>
-      <return type='xmlNodePtr' info='a node list or NULL in case of error.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='input' type='xmlParserInputPtr' info='parser input'/>
-      <arg name='node' type='xmlNodePtr' info='target node or document'/>
-      <arg name='hasTextDecl' type='int' info='whether to parse text declaration'/>
-    </function>
-    <function name='xmlCtxtParseDocument' file='parser' module='parser'>
-      <info>Parse an XML document and return the resulting document tree. Takes ownership of the input object.  Available since 2.13.0.</info>
-      <return type='xmlDocPtr' info='the resulting document tree or NULL'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='input' type='xmlParserInputPtr' info='parser input'/>
-    </function>
-    <function name='xmlCtxtParseDtd' file='parser' module='parser'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>Parse a DTD.  Option XML_PARSE_DTDLOAD should be enabled in the parser context to make external entities work.  Availabe since 2.14.0.</info>
-      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error. @input will be freed by the function in any case.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='a parser context'/>
-      <arg name='input' type='xmlParserInputPtr' info='a parser input'/>
-      <arg name='publicId' type='const xmlChar *' info='public ID of the DTD (optional)'/>
-      <arg name='systemId' type='const xmlChar *' info='system ID of the DTD (optional)'/>
-    </function>
-    <function name='xmlCtxtPopInput' 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='xmlCtxtPushInput' file='parserInternals' module='parser'>
-      <info>Pushes a new parser input on top of the input 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='xmlParserInputPtr' info='the parser input'/>
-    </function>
-    <function name='xmlCtxtReadDoc' file='parser' module='parser'>
-      <info>Parse an XML in-memory document and build a tree.  @URL is used as base to resolve external entities and for error reporting.  See xmlCtxtUseOptions for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='str' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlCtxtReadFd' file='parser' module='parser'>
-      <info>Parse an XML document from a file descriptor and build a tree.  NOTE that the file descriptor will not be closed when the context is freed or reset.  @URL is used as base to resolve external entities and for error reporting.  See xmlCtxtUseOptions for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlCtxtReadFile' file='parser' module='parser'>
-      <info>Parse an XML file from the filesystem, the network or a user-defined resource loader.  This function always enables the XML_PARSE_UNZIP option for backward compatibility. This feature is potentially insecure and might be removed from later versions.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='filename' type='const char *' info='a file or URL'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <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  @URL is used as base to resolve external entities and for error reporting.  See xmlCtxtUseOptions for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' module='parser'>
-      <info>Parse an XML in-memory document and build a tree. The input buffer must not contain a terminating null byte.  @URL is used as base to resolve external entities and for error reporting.  See xmlCtxtUseOptions for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <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' module='parserInternals'>
-      <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' 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'/>
-      <arg name='chunk' type='const char *' info='a pointer to an array of chars'/>
-      <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'/>
-      <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
-    </function>
-    <function name='xmlCtxtSetCatalogs' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.  Set the local catalogs.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='catalogs' type='void *' info='catalogs pointer'/>
-    </function>
-    <function name='xmlCtxtSetCharEncConvImpl' file='parser' module='parserInternals'>
-      <info>Installs a custom implementation to convert between character encodings.  This bypasses legacy feature like global encoding handlers or encoding aliases.  Available since 2.14.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='impl' type='xmlCharEncConvImpl' info='callback'/>
-      <arg name='vctxt' type='void *' info='user data'/>
-    </function>
-    <function name='xmlCtxtSetDict' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.  Set the dictionary. This should only be done immediately after creating a parser context.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='dict' type='xmlDictPtr' info='dictionary'/>
-    </function>
-    <function name='xmlCtxtSetErrorHandler' file='parser' module='parserInternals'>
-      <info>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated.  This is the recommended way to collect errors from the parser and takes precedence over all other error reporting mechanisms. These are (in order of precedence):  - per-context structured handler (xmlCtxtSetErrorHandler) - per-context structured &quot;serror&quot; SAX handler - global structured handler (xmlSetStructuredErrorFunc) - per-context generic &quot;error&quot; and &quot;warning&quot; SAX handlers - global generic handler (xmlSetGenericErrorFunc) - print to stderr  Available since 2.13.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='handler' type='xmlStructuredErrorFunc' info='error handler'/>
-      <arg name='data' type='void *' info='data for error handler'/>
-    </function>
-    <function name='xmlCtxtSetMaxAmplification' file='parser' module='parser'>
-      <info>To protect against exponential entity expansion (&quot;billion laughs&quot;), the size of serialized output is (roughly) limited to the input size multiplied by this factor. The default value is 5.  When working with documents making heavy use of entity expansion, it can be necessary to increase the value. For security reasons, this should only be considered when processing trusted input.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='maxAmpl' type='unsigned' info='maximum amplification factor'/>
-    </function>
-    <function name='xmlCtxtSetOptions' file='parser' module='parser'>
-      <info>Applies the options to the parser context. Unset options are cleared.  Available since 2.13.0. With older versions, you can use xmlCtxtUseOptions.  XML_PARSE_RECOVER  Enable &quot;recovery&quot; mode which allows non-wellformed documents. How this mode behaves exactly is unspecified and may change without further notice. Use of this feature is DISCOURAGED.  Not supported by the push parser.  XML_PARSE_NOENT  Despite the confusing name, this option enables substitution of entities. The resulting tree won&apos;t contain any entity reference nodes.  This option also enables loading of external entities (both general and parameter entities) which is dangerous. If you process untrusted data, it&apos;s recommended to set the XML_PARSE_NO_XXE option to disable loading of external entities.  XML_PARSE_DTDLOAD  Enables loading of an external DTD and the loading and substitution of external parameter entities. Has no effect if XML_PARSE_NO_XXE is set.  XML_PARSE_DTDATTR  Adds default attributes from the DTD to the result document.  Implies XML_PARSE_DTDLOAD, but loading of external content can be disabled with XML_PARSE_NO_XXE.  XML_PARSE_DTDVALID  This option enables DTD validation which requires to load external DTDs and external entities (both general and parameter entities) unless XML_PARSE_NO_XXE was set.  XML_PARSE_NO_XXE  Disables loading of external DTDs or entities.  Available since 2.13.0.  XML_PARSE_NOERROR  Disable error and warning reports to the error handlers. Errors are still accessible with xmlCtxtGetLastError.  XML_PARSE_NOWARNING  Disable warning reports.  XML_PARSE_PEDANTIC  Enable some pedantic warnings.  XML_PARSE_NOBLANKS  Remove some whitespace from the result document. Where to remove whitespace depends on DTD element declarations or a broken heuristic with unfixable bugs. Use of this option is DISCOURAGED.  Not supported by the push parser.  XML_PARSE_SAX1  Always invoke the deprecated SAX1 startElement and endElement handlers. This option is DEPRECATED.  XML_PARSE_NONET  Disable network access with the builtin HTTP client.  XML_PARSE_NODICT  Create a document without interned strings, making all strings separate memory allocations.  XML_PARSE_NSCLEAN  Remove redundant namespace declarations from the result document.  XML_PARSE_NOCDATA  Output normal text nodes instead of CDATA nodes.  XML_PARSE_COMPACT  Store small strings directly in the node struct to save memory.  XML_PARSE_OLD10  Use old Name productions from before XML 1.0 Fifth Edition. This options is DEPRECATED.  XML_PARSE_HUGE  Relax some internal limits.  Maximum size of text nodes, tags, comments, processing instructions, CDATA sections, entity values  normal: 10M huge:    1B  Maximum size of names, system literals, pubid literals  normal: 50K huge:   10M  Maximum nesting depth of elements  normal:  256 huge:   2048  Maximum nesting depth of entities  normal: 20 huge:   40  XML_PARSE_OLDSAX  Enable an unspecified legacy mode for SAX parsers. This option is DEPRECATED.  XML_PARSE_IGNORE_ENC  Ignore the encoding in the XML declaration. This option is mostly unneeded these days. The only effect is to enforce UTF-8 decoding of ASCII-like data.  XML_PARSE_BIG_LINES  Enable reporting of line numbers larger than 65535.  XML_PARSE_UNZIP  Enable input decompression. Setting this option is discouraged to avoid zip bombs.  Available since 2.14.0.  XML_PARSE_NO_SYS_CATALOG  Disables the global system XML catalog.  Available since 2.14.0.  XML_PARSE_CATALOG_PI  Enable XML catalog processing instructions.  Available since 2.14.0.</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 bitmask of xmlParserOption values'/>
-    </function>
-    <function name='xmlCtxtSetPrivate' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.  Set the private application data.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='priv' type='void *' info='private application data'/>
-    </function>
-    <function name='xmlCtxtSetResourceLoader' file='parser' module='parserInternals'>
-      <info>Installs a custom callback to load documents, DTDs or external entities.  Available since 2.14.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='loader' type='xmlResourceLoader' info='callback'/>
-      <arg name='vctxt' type='void *' info='user data'/>
-    </function>
-    <function name='xmlCtxtSetSaxHandler' file='parser' module='parserInternals'>
-      <info>Available since 2.14.0.  Set the SAX handler struct to a copy of @sax.</info>
-      <return type='int' info='0 on success or -1 if arguments are invalid or a memory allocation failed.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='parser context'/>
-      <arg name='sax' type='const xmlSAXHandler *' info='SAX handler'/>
-    </function>
-    <function name='xmlCtxtUseOptions' file='parser' module='parser'>
-      <info>DEPRECATED: Use xmlCtxtSetOptions.  Applies the options to the parser context. The following options are never cleared and can only be enabled:  XML_PARSE_NOERROR XML_PARSE_NOWARNING XML_PARSE_NONET XML_PARSE_NSCLEAN XML_PARSE_NOCDATA XML_PARSE_COMPACT XML_PARSE_OLD10 XML_PARSE_HUGE XML_PARSE_OLDSAX XML_PARSE_IGNORE_ENC XML_PARSE_BIG_LINES</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='xmlCtxtValidateDocument' file='parser' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>Validate a document.  Like xmlValidateDocument but uses the parser context&apos;s error handler.  Option XML_PARSE_DTDLOAD should be enabled in the parser context to make external entities work.  Availabe since 2.14.0.</info>
-      <return type='int' info='1 if valid or 0 otherwise.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='a parser context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-    </function>
-    <function name='xmlCtxtValidateDtd' file='parser' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>Validate a document against a DTD.  Like xmlValidateDtd but uses the parser context&apos;s error handler.  Availabe since 2.14.0.</info>
-      <return type='int' info='1 if valid or 0 otherwise.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='a parser context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='dtd' type='xmlDtdPtr' info='a dtd instance'/>
-    </function>
-    <function name='xmlCurrentChar' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Internal function, do not use.  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>
-    <functype name='xmlDOMWrapAcquireNsFunction' file='tree' module='tree'>
-      <info>A function called to acquire namespaces (xmlNs) from the wrapper.</info>
-      <return type='xmlNsPtr' info='an xmlNsPtr or NULL in case of an error.'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='a DOM wrapper context'/>
-      <arg name='node' type='xmlNodePtr' info='the context node (element or attribute)'/>
-      <arg name='nsName' type='const xmlChar *' info='the requested namespace name'/>
-      <arg name='nsPrefix' type='const xmlChar *' info='the requested namespace prefix'/>
-    </functype>
-    <function name='xmlDOMWrapAdoptNode' file='tree' module='tree'>
-      <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used This is the case when you have an unlinked node and just want to move it to the context of  If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. NOTE: This function was not intensively tested.</info>
-      <return type='int' info='0 if the operation succeeded, 1 if a node of unsupported type was given, 2 if a node of not yet supported type was given and -1 on API/internal errors.'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the optional context for custom processing'/>
-      <arg name='sourceDoc' type='xmlDocPtr' info='the optional sourceDoc'/>
-      <arg name='node' type='xmlNodePtr' info='the node to start with'/>
-      <arg name='destDoc' type='xmlDocPtr' info='the destination doc'/>
-      <arg name='destParent' type='xmlNodePtr' info='the optional new parent of @node in @destDoc'/>
-      <arg name='options' type='int' info='option flags'/>
-    </function>
-    <function name='xmlDOMWrapCloneNode' file='tree' module='tree'>
-      <info>References of out-of scope ns-decls are remapped to point to @destDoc: 1) If @destParent is given, then nsDef entries on element-nodes are used 2) If *no* @destParent is given, then @destDoc-&gt;oldNs entries are used. This is the case when you don&apos;t know already where the cloned branch will be added to.  If @destParent is given, it ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content. TODO: 1) What to do with XInclude? Currently this returns an error for XInclude.</info>
-      <return type='int' info='0 if the operation succeeded, 1 if a node of unsupported (or not yet supported) type was given, -1 on API/internal errors.'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the optional context for custom processing'/>
-      <arg name='sourceDoc' type='xmlDocPtr' info='the optional sourceDoc'/>
-      <arg name='node' type='xmlNodePtr' info='the node to start with'/>
-      <arg name='resNode' type='xmlNodePtr *' info='the clone of the given @node'/>
-      <arg name='destDoc' type='xmlDocPtr' info='the destination doc'/>
-      <arg name='destParent' type='xmlNodePtr' info='the optional new parent of @node in @destDoc'/>
-      <arg name='deep' type='int' info='descend into child if set'/>
-      <arg name='options' type='int' info='option flags'/>
-    </function>
-    <function name='xmlDOMWrapFreeCtxt' file='tree' module='tree'>
-      <info>Frees the DOM-wrapper context.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='the DOM-wrapper context'/>
-    </function>
-    <function name='xmlDOMWrapNewCtxt' file='tree' module='tree'>
-      <info>Allocates and initializes a new DOM-wrapper context.</info>
-      <return type='xmlDOMWrapCtxtPtr' info='the xmlDOMWrapCtxtPtr or NULL in case of an internal error.'/>
-    </function>
-    <function name='xmlDOMWrapReconcileNamespaces' file='tree' module='tree'>
-      <info>Ensures that ns-references point to ns-decls hold on element-nodes. Ensures that the tree is namespace wellformed by creating additional ns-decls where needed. Note that, since prefixes of already existent ns-decls can be shadowed by this process, it could break QNames in attribute values or element content.  NOTE: This function was not intensively tested.</info>
-      <return type='int' info='0 if succeeded, -1 otherwise and on API/internal errors.'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='DOM wrapper context, unused at the moment'/>
-      <arg name='elem' type='xmlNodePtr' info='the element-node'/>
-      <arg name='options' type='int' info='option flags'/>
-    </function>
-    <function name='xmlDOMWrapRemoveNode' file='tree' module='tree'>
-      <info>Unlinks the given node from its owner. This will substitute ns-references to node-&gt;nsDef for ns-references to doc-&gt;oldNs, thus ensuring the removed branch to be autark wrt ns-references.  NOTE: This function was not intensively tested.</info>
-      <return type='int' info='0 on success, 1 if the node is not supported, -1 on API and internal errors.'/>
-      <arg name='ctxt' type='xmlDOMWrapCtxtPtr' info='a DOM wrapper context'/>
-      <arg name='doc' type='xmlDocPtr' info='the doc'/>
-      <arg name='node' type='xmlNodePtr' info='the node to be removed.'/>
-      <arg name='options' type='int' info='set of options, unused at the moment'/>
-    </function>
-    <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' module='debugXML'>
-      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
-      <info>Dumps debug information for the attribute</info>
-      <return type='void'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
-      <arg name='depth' type='int' info='the indentation level.'/>
-    </function>
-    <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'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <arg name='attr' type='xmlAttrPtr' info='the attribute list'/>
-      <arg name='depth' type='int' info='the indentation level.'/>
-    </function>
-    <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' 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' module='debugXML'>
-      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
-      <info>Dumps debug information concerning 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' 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' module='debugXML'>
-      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
-      <info>Dumps debug information for the element node, it is recursive</info>
-      <return type='void'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-      <arg name='depth' type='int' info='the indentation level.'/>
-    </function>
-    <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'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <arg name='node' type='xmlNodePtr' info='the node list'/>
-      <arg name='depth' type='int' info='the indentation level.'/>
-    </function>
-    <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'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-      <arg name='depth' type='int' info='the indentation level.'/>
-    </function>
-    <function name='xmlDebugDumpString' file='debugXML' module='debugXML'>
-      <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
-      <info>Dumps information 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='xmlDefaultSAXHandlerInit' file='SAX2' module='SAX2'>
-      <info>DEPRECATED: This function is a no-op. Call xmlInitParser to initialize the library.  Initialize the default SAX2 handler</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlDelEncodingAlias' file='encoding' module='encoding'>
-      <info>DEPRECATED: This function modifies global state and is not thread-safe.  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='tree' module='tree'>
-      <info>DEPRECATED: don&apos;t use  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='tree' module='tree'>
-      <info>Signature for the deregistration callback of a discarded node</info>
-      <return type='void'/>
-      <arg name='node' type='xmlNodePtr' info='the current node'/>
-    </functype>
-    <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' module='dict'>
-      <info>DEPRECATED: This function is a no-op. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlDictCreate' file='dict' module='dict'>
-      <info>Create a new dictionary</info>
-      <return type='xmlDictPtr' info='the newly created dictionary, or NULL if an error occurred.'/>
-    </function>
-    <function name='xmlDictCreateSub' file='dict' module='dict'>
-      <info>Create a new dictionary, inheriting strings from the read-only dictionary @sub. On lookup, strings are first searched in the new dictionary, then in @sub, and if not found are created in the new dictionary.</info>
-      <return type='xmlDictPtr' info='the newly created dictionary, or NULL if an error occurred.'/>
-      <arg name='sub' type='xmlDictPtr' info='an existing dictionary'/>
-    </function>
-    <function name='xmlDictExists' file='dict' module='dict'>
-      <info>Check if a string exists in the dictionary.</info>
-      <return type='const xmlChar *' info='the internal copy of the name or NULL if not found.'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
-      <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' 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 dictionary'/>
-    </function>
-    <function name='xmlDictGetUsage' file='dict' module='dict'>
-      <info>Get how much memory is used by a dictionary for strings Added in 2.9.0</info>
-      <return type='size_t' info='the amount of strings allocated'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
-    </function>
-    <function name='xmlDictLookup' file='dict' module='dict'>
-      <info>Lookup a string and add it to the dictionary if it wasn&apos;t found.</info>
-      <return type='const xmlChar *' info='the interned copy of the string or NULL if a memory allocation failed.'/>
-      <arg name='dict' type='xmlDictPtr' info='dictionary'/>
-      <arg name='name' type='const xmlChar *' info='string key'/>
-      <arg name='len' type='int' info='length of the key, if -1 it is recomputed'/>
-    </function>
-    <function name='xmlDictOwns' file='dict' module='dict'>
-      <info>check if a string is owned by the dictionary</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 dictionary'/>
-      <arg name='str' type='const xmlChar *' info='the string'/>
-    </function>
-    <function name='xmlDictQLookup' file='dict' module='dict'>
-      <info>Lookup the QName @prefix:@name and add it to the dictionary if it wasn&apos;t found.</info>
-      <return type='const xmlChar *' info='the interned copy of the string or NULL if a memory allocation failed.'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
-      <arg name='prefix' type='const xmlChar *' info='the prefix'/>
-      <arg name='name' type='const xmlChar *' info='the name'/>
-    </function>
-    <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 dictionary'/>
-    </function>
-    <function name='xmlDictSetLimit' file='dict' module='dict'>
-      <info>Set a size limit for the dictionary Added in 2.9.0</info>
-      <return type='size_t' info='the previous limit of the dictionary or 0'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
-      <arg name='limit' type='size_t' info='the limit in bytes'/>
-    </function>
-    <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 dictionary or -1 in case of error'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
-    </function>
-    <function name='xmlDocCopyNode' file='tree' module='tree'>
-      <info>Copy a node into another document.</info>
-      <return type='xmlNodePtr' info='the copied node or NULL if a memory allocation failed.'/>
-      <arg name='node' type='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' module='tree'>
-      <info>Copy a node list and all children into a new document.</info>
-      <return type='xmlNodePtr' info='the head of the copied list or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document'/>
-      <arg name='node' type='xmlNodePtr' info='the first node in the list.'/>
-    </function>
-    <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' 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'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
-      <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' 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'/>
-      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
-      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
-      <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'/>
-      <arg name='format' type='int' info='should formatting spaces been added'/>
-    </function>
-    <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'/>
-      <arg name='cur' type='xmlDocPtr' info='the document'/>
-      <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' 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'/>
-      <arg name='out_doc' type='xmlDocPtr' info='Document to generate XML text from'/>
-      <arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
-      <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' 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'/>
-      <arg name='f' type='FILE *' info='the FILE*'/>
-      <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' 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 root element or NULL if no element was found.'/>
-      <arg name='doc' type='const xmlDoc *' info='the document'/>
-    </function>
-    <function name='xmlDocSetRootElement' file='tree' module='tree'>
-      <info>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).  @root must be an element node. It is unlinked before insertion.</info>
-      <return type='xmlNodePtr' info='the unlinked old root element or NULL if the document didn&apos;t have a root element or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='root' type='xmlNodePtr' info='the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead.'/>
-    </function>
-    <function name='xmlDumpAttributeDecl' file='valid' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlSaveTree.  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' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlSaveTree.  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' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' 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' 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' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Dump an XML/HTML node, recursive behaviour, children are printed too.</info>
-      <return type='void'/>
-      <arg name='f' type='FILE *' info='the FILE * for the output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-    </function>
-    <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.  This escapes &apos;&lt;&apos;, &apos;&gt;&apos;, &apos;&amp;&apos; and &apos;\r&apos;. If the document has no encoding, non-ASCII codepoints are escaped. There is some special handling for HTML documents.</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' module='entities'>
-      <info>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.  This escapes &apos;&lt;&apos;, &apos;&gt;&apos;, &apos;&amp;&apos;, &apos;&quot;&apos; and &apos;\r&apos; chars.</info>
-      <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
-      <arg name='doc' type='const xmlDoc *' info='unused'/>
-      <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
-    </function>
-    <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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='int' info='0 or -1 an error code case of error'/>
-      <arg name='context' type='void *' info='the I/O context'/>
-    </function>
-    <function name='xmlFileMatch' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='void *' info='an IO context or NULL in case or failure'/>
-      <arg name='filename' type='const char *' info='the URI for matching'/>
-    </function>
-    <function name='xmlFileRead' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='int' info='the number of bytes read 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' module='encoding'>
-      <info>DEPRECATED: Use xmlOpenCharEncodingHandler which has better error reporting.  If the encoding is UTF-8, this will return a no-op handler that shouldn&apos;t be used.</info>
-      <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if no handler was found or an error occurred.'/>
-      <arg name='name' type='const char *' info='a string describing the char encoding.'/>
-    </function>
-    <function name='xmlFirstElementChild' file='tree' module='tree'>
-      <info>Find the first child node which is an element.  Note that entity references are not expanded.</info>
-      <return type='xmlNodePtr' info='the first element or NULL if parent has no children.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-    </function>
-    <function name='xmlFormatError' file='xmlerror' module='error'>
-      <info>Report a formatted error to a printf-like callback.  This can result in a verbose multi-line report including additional information from the parser context.  Available since 2.13.0.</info>
-      <return type='void'/>
-      <arg name='err' type='const xmlError *' info='the error'/>
-      <arg name='channel' type='xmlGenericErrorFunc' info='callback'/>
-      <arg name='data' type='void *' info='user data for callback'/>
-    </function>
-    <function name='xmlFreeAttributeTable' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Free an automata</info>
-      <return type='void'/>
-      <arg name='am' type='xmlAutomataPtr' info='an automata'/>
-    </function>
-    <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' module='tree'>
-      <info>Free a document including all children and associated DTDs.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlDocPtr' info='pointer to the document'/>
-    </function>
-    <function name='xmlFreeDocElementContent' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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='xmlFreeEntity' file='entities' module='entities'>
-      <info>Frees the entity.</info>
-      <return type='void'/>
-      <arg name='entity' type='xmlEntityPtr' info='an entity'/>
-    </function>
-    <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' 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' 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' 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' module='threads'>
-      <info>Free a mutex.</info>
-      <return type='void'/>
-      <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
-    </function>
-    <function name='xmlFreeNode' file='tree' module='tree'>
-      <info>Free a node including all the children.  This doesn&apos;t unlink the node from the tree. Call xmlUnlinkNode first unless @cur is a root node.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlNodePtr' info='the node'/>
-    </function>
-    <function name='xmlFreeNodeList' file='tree' module='tree'>
-      <info>Free a node list including all children.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlNodePtr' info='the first node in the list'/>
-    </function>
-    <function name='xmlFreeNotationTable' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='tree'>
-      <info>Free an xmlNs object.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlNsPtr' info='the namespace pointer'/>
-    </function>
-    <function name='xmlFreeNsList' file='tree' module='tree'>
-      <info>Free a list of xmlNs objects.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlNsPtr' info='the first namespace pointer'/>
-    </function>
-    <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' 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' 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' 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' module='tree'>
-      <info>Free an attribute including all children.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
-    </function>
-    <function name='xmlFreePropList' file='tree' module='tree'>
-      <info>Free an attribute list including all children.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlAttrPtr' info='the first attribute in the list'/>
-    </function>
-    <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' module='valid'>
-      <info>DEPRECATED, do not use. This function will be removed from the public API.  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' 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' 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' 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' 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' 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' module='xmlmemory'>
-      <info>DEPRECATED: xmlMemGet.  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'/>
-      <arg name='mallocFunc' type='xmlMallocFunc *' info='place to save the malloc() function in use'/>
-      <arg name='mallocAtomicFunc' type='xmlMallocFunc *' info='place to save the atomic malloc() function in use'/>
-      <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' module='xmlmemory'>
-      <info>DEPRECATED: Use xmlMemSetup.  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'/>
-      <arg name='mallocFunc' type='xmlMallocFunc' info='the malloc() function to use'/>
-      <arg name='mallocAtomicFunc' type='xmlMallocFunc' info='the malloc() function to use for atomic allocations'/>
-      <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' 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 varargs to format the message'/>
-    </functype>
-    <function name='xmlGetBufferAllocationScheme' file='tree' module='buf'>
-      <info>DEPRECATED: Use xmlBufferSetAllocationScheme.  Types are XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed, improves performance XML_BUFFER_ALLOC_HYBRID - use exact sizes on small strings to keep memory usage tight in normal usage, and doubleit on large strings to avoid pathological performance.</info>
-      <return type='xmlBufferAllocationScheme' info='the current allocation scheme'/>
-    </function>
-    <function name='xmlGetCharEncodingHandler' file='encoding' module='encoding'>
-      <info>DEPRECATED: Use xmlLookupCharEncodingHandler which has better error reporting.</info>
-      <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if no handler was found or an error occurred.'/>
-      <arg name='enc' type='xmlCharEncoding' info='an xmlCharEncoding value.'/>
-    </function>
-    <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' module='tree'>
-      <info>DEPRECATED: Use xmlGetDocCompressMode  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' 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='const xmlDoc *' info='the document'/>
-    </function>
-    <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='const xmlDoc *' info='the document referencing the entity'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-    </function>
-    <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' module='valid'>
-      <info>Search the DTD for the description of this element  NOTE: A NULL return value can also mean that a memory allocation failed.</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' 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' 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' 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'/>
-      <arg name='elem' type='const xmlChar *' info='the element name'/>
-      <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' 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' module='encoding'>
-      <info>DEPRECATED: This function is not thread-safe.  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' module='parserInternals'>
-      <info>DEPRECATED: See xmlSetExternalEntityLoader.  Get the default external entity resolver function for the application</info>
-      <return type='xmlExternalEntityLoader' info='the xmlExternalEntityLoader function pointer'/>
-    </function>
-    <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' module='tree'>
-      <info>Get the internal subset of a document.</info>
-      <return type='xmlDtdPtr' info='a pointer to the DTD object or NULL if not found.'/>
-      <arg name='doc' type='const xmlDoc *' info='the document pointer'/>
-    </function>
-    <function name='xmlGetLastChild' file='tree' module='tree'>
-      <info>Find the last child of a node.</info>
-      <return type='xmlNodePtr' info='the last child or NULL if parent has no children.'/>
-      <arg name='parent' type='const xmlNode *' info='the parent node'/>
-    </function>
-    <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='const xmlError *' info='a pointer to the error'/>
-    </function>
-    <function name='xmlGetLineNo' file='tree' module='tree'>
-      <info>Get line number of @node. Try to override the limitation of lines being store in 16 bits ints if XML_PARSE_BIG_LINES parser option was used</info>
-      <return type='long' info='the line number if successful, -1 otherwise'/>
-      <arg name='node' type='const xmlNode *' info='valid node'/>
-    </function>
-    <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. This function is similar to xmlGetProp except it will accept only an attribute in no namespace.  NOTE: This function doesn&apos;t allow to distinguish malloc failures from missing attributes. It&apos;s more robust to use xmlNodeGetAttrValue.</info>
-      <return type='xmlChar *' info='the attribute value or NULL if not found or a memory allocation failed. It&apos;s up to the caller to free the memory with xmlFree().'/>
-      <arg name='node' type='const xmlNode *' info='the node'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-    </function>
-    <function name='xmlGetNodePath' file='tree' module='tree'>
-      <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='const xmlNode *' info='a node'/>
-    </function>
-    <function name='xmlGetNsList' file='tree' module='tree'>
-      <info>Find all in-scope namespaces of a node.  Use xmlGetNsListSafe for better error reporting.</info>
-      <return type='xmlNsPtr *' info='a NULL terminated array of namespace pointers that must be freed by the caller or NULL if no namespaces were found or a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='the document'/>
-      <arg name='node' type='const xmlNode *' info='the current node'/>
-    </function>
-    <function name='xmlGetNsListSafe' file='tree' module='tree'>
-      <info>Find all in-scope namespaces of a node. @out returns a NULL terminated array of namespace pointers that must be freed by the caller.  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, 1 if no namespaces were found, -1 if a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='the document'/>
-      <arg name='node' type='const xmlNode *' info='the current node'/>
-      <arg name='out' type='xmlNsPtr **' info='the returned namespace array'/>
-    </function>
-    <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.  NOTE: This function doesn&apos;t allow to distinguish malloc failures from missing attributes. It&apos;s more robust to use xmlNodeGetAttrValue.</info>
-      <return type='xmlChar *' info='the attribute value or NULL if not found or a memory allocation failed. It&apos;s up to the caller to free the memory with xmlFree().'/>
-      <arg name='node' type='const xmlNode *' 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' 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' 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' 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.  NOTE: This function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing.  NOTE: This function doesn&apos;t allow to distinguish malloc failures from missing attributes. It&apos;s more robust to use xmlNodeGetAttrValue.</info>
-      <return type='xmlChar *' info='the attribute value or NULL if not found or a memory allocation failed. It&apos;s up to the caller to free the memory with xmlFree().'/>
-      <arg name='node' type='const xmlNode *' info='the node'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-    </function>
-    <function name='xmlGetRefs' file='valid' module='valid'>
-      <info>DEPRECATED, do not use. This function will be removed from the public API.  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='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='xmlHasFeature' file='parser' module='parser'>
-      <info>Examines if the library has been compiled with a given feature.</info>
-      <return type='int' info='a non-zero value if the feature exist, otherwise zero. Returns zero (0) if the feature does not exist or an unknown unknown feature is requested, non-zero otherwise.'/>
-      <arg name='feature' type='xmlFeature' info='the feature to be examined'/>
-    </function>
-    <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. 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. Also returns NULL if a memory allocation failed making this function unreliable.'/>
-      <arg name='node' type='const xmlNode *' 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' module='tree'>
-      <info>Search an attribute associated to a node This function also looks in DTD attribute declaration for #FIXED or default declaration values.</info>
-      <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found. Also returns NULL if a memory allocation failed making this function unreliable.'/>
-      <arg name='node' type='const xmlNode *' info='the node'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-    </function>
-    <function name='xmlHashAdd' file='hash' module='hash'>
-      <info>Add a hash table entry. If an entry with this key already exists, payload will not be updated and 0 is returned. This return value can&apos;t be distinguished from out-of-memory errors, so this function should be used with care.  Available since 2.13.0.</info>
-      <return type='int' info='1 on success, 0 if an entry exists and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <function name='xmlHashAdd2' file='hash' module='hash'>
-      <info>Add a hash table entry with two strings as key.  See xmlHashAdd.  Available since 2.13.0.</info>
-      <return type='int' info='1 on success, 0 if an entry exists and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <function name='xmlHashAdd3' file='hash' module='hash'>
-      <info>Add a hash table entry with three strings as key.  See xmlHashAdd.  Available since 2.13.0.</info>
-      <return type='int' info='1 on success, 0 if an entry exists and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='key3' type='const xmlChar *' info='third string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <function name='xmlHashAddEntry' file='hash' module='hash'>
-      <info>Add a hash table entry. If an entry with this key already exists, payload will not be updated and -1 is returned. This return value can&apos;t be distinguished from out-of-memory errors, so this function should be used with care.  NOTE: This function doesn&apos;t allow to distinguish malloc failures from existing entries. Use xmlHashAdd instead.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <function name='xmlHashAddEntry2' file='hash' module='hash'>
-      <info>Add a hash table entry with two strings as key.  See xmlHashAddEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <function name='xmlHashAddEntry3' file='hash' module='hash'>
-      <info>Add a hash table entry with three strings as key.  See xmlHashAddEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='key3' type='const xmlChar *' info='third string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-    </function>
-    <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='const xmlChar *' info='the name associated'/>
-    </functype>
-    <function name='xmlHashCopy' file='hash' module='hash'>
-      <info>DEPRECATED: Leaks memory in error case.  Copy the hash table using @copy to copy payloads.</info>
-      <return type='xmlHashTablePtr' info='the new table or NULL if a memory allocation failed.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='copy' type='xmlHashCopier' info='copier function for items in the hash'/>
-    </function>
-    <function name='xmlHashCopySafe' file='hash' module='hash'>
-      <info>Copy the hash table using @copyFunc to copy payloads.  Available since 2.13.0.</info>
-      <return type='xmlHashTablePtr' info='the new table or NULL if a memory allocation failed.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='copyFunc' type='xmlHashCopier' info='copier function for items in the hash'/>
-      <arg name='deallocFunc' type='xmlHashDeallocator' info='deallocation function in case of errors'/>
-    </function>
-    <function name='xmlHashCreate' file='hash' module='hash'>
-      <info>Create a new hash table. Set size to zero if the number of entries can&apos;t be estimated.</info>
-      <return type='xmlHashTablePtr' info='the newly created object, or NULL if a memory allocation failed.'/>
-      <arg name='size' type='int' info='initial size of the hash table'/>
-    </function>
-    <function name='xmlHashCreateDict' file='hash' module='hash'>
-      <info>Create a new hash table backed by a dictionary. This can reduce resource usage considerably if most keys passed to API functions originate from this dictionary.</info>
-      <return type='xmlHashTablePtr' info='the newly created object, or NULL if a memory allocation failed.'/>
-      <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' 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='const xmlChar *' info='the name associated'/>
-    </functype>
-    <function name='xmlHashDefaultDeallocator' file='hash' module='hash'>
-      <info>Free a hash table entry with xmlFree.</info>
-      <return type='void'/>
-      <arg name='entry' type='void *' info='hash table entry'/>
-      <arg name='key' type='const xmlChar *' info='the entry&apos;s string key'/>
-    </function>
-    <function name='xmlHashFree' file='hash' module='hash'>
-      <info>Free the hash and its contents. The payload is deallocated with @dealloc if provided.</info>
-      <return type='void'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function or NULL'/>
-    </function>
-    <function name='xmlHashLookup' file='hash' module='hash'>
-      <info>Find the entry specified by @key.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='string key'/>
-    </function>
-    <function name='xmlHashLookup2' file='hash' module='hash'>
-      <info>Find the payload specified by the (@key, @key2) tuple.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-    </function>
-    <function name='xmlHashLookup3' file='hash' module='hash'>
-      <info>Find the payload specified by the (@key, @key2, @key3) tuple.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='key3' type='const xmlChar *' info='third string key'/>
-    </function>
-    <function name='xmlHashQLookup' file='hash' module='hash'>
-      <info>Find the payload specified by the QName @prefix:@name or @name.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='prefix' type='const xmlChar *' info='prefix of the string key'/>
-      <arg name='name' type='const xmlChar *' info='local name of the string key'/>
-    </function>
-    <function name='xmlHashQLookup2' file='hash' module='hash'>
-      <info>Find the payload specified by the QNames tuple.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='prefix' type='const xmlChar *' info='first prefix'/>
-      <arg name='name' type='const xmlChar *' info='first local name'/>
-      <arg name='prefix2' type='const xmlChar *' info='second prefix'/>
-      <arg name='name2' type='const xmlChar *' info='second local name'/>
-    </function>
-    <function name='xmlHashQLookup3' file='hash' module='hash'>
-      <info>Find the payload specified by the QNames tuple.</info>
-      <return type='void *' info='a pointer to the payload or NULL if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='prefix' type='const xmlChar *' info='first prefix'/>
-      <arg name='name' type='const xmlChar *' info='first local name'/>
-      <arg name='prefix2' type='const xmlChar *' info='second prefix'/>
-      <arg name='name2' type='const xmlChar *' info='second local name'/>
-      <arg name='prefix3' type='const xmlChar *' info='third prefix'/>
-      <arg name='name3' type='const xmlChar *' info='third local name'/>
-    </function>
-    <function name='xmlHashRemoveEntry' file='hash' module='hash'>
-      <info>Find the entry specified by the @key and remove it from the hash table. Payload will be freed with @dealloc.</info>
-      <return type='int' info='0 on success and -1 if no entry was found.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='string key'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for removed item or NULL'/>
-    </function>
-    <function name='xmlHashRemoveEntry2' file='hash' module='hash'>
-      <info>Remove an entry with two strings as key.  See xmlHashRemoveEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for removed item or NULL'/>
-    </function>
-    <function name='xmlHashRemoveEntry3' file='hash' module='hash'>
-      <info>Remove an entry with three strings as key.  See xmlHashRemoveEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='key3' type='const xmlChar *' info='third string key'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for removed item or NULL'/>
-    </function>
-    <function name='xmlHashScan' file='hash' module='hash'>
-      <info>Scan the hash @table and apply @scan to each value.</info>
-      <return type='void'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='scan' type='xmlHashScanner' info='scanner function for items in the hash'/>
-      <arg name='data' type='void *' info='extra data passed to @scan'/>
-    </function>
-    <function name='xmlHashScan3' file='hash' module='hash'>
-      <info>Scan the hash @table and apply @scan to each value matching (@key, @key2, @key3) tuple. If one of the keys is null, the comparison is considered to match.</info>
-      <return type='void'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key or NULL'/>
-      <arg name='key2' type='const xmlChar *' info='second string key or NULL'/>
-      <arg name='key3' type='const xmlChar *' info='third string key or NULL'/>
-      <arg name='scan' type='xmlHashScanner' info='scanner function for items in the hash'/>
-      <arg name='data' type='void *' info='extra data passed to @scan'/>
-    </function>
-    <function name='xmlHashScanFull' file='hash' module='hash'>
-      <info>Scan the hash @table and apply @scan to each value.</info>
-      <return type='void'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='scan' type='xmlHashScannerFull' info='scanner function for items in the hash'/>
-      <arg name='data' type='void *' info='extra data passed to @scan'/>
-    </function>
-    <function name='xmlHashScanFull3' file='hash' module='hash'>
-      <info>Scan the hash @table and apply @scan to each value matching (@key, @key2, @key3) tuple. If one of the keys is null, the comparison is considered to match.</info>
-      <return type='void'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key or NULL'/>
-      <arg name='key2' type='const xmlChar *' info='second string key or NULL'/>
-      <arg name='key3' type='const xmlChar *' info='third string key or NULL'/>
-      <arg name='scan' type='xmlHashScannerFull' info='scanner function for items in the hash'/>
-      <arg name='data' type='void *' info='extra data passed to @scan'/>
-    </function>
-    <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 scanner data'/>
-      <arg name='name' type='const xmlChar *' info='the name associated'/>
-    </functype>
-    <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'/>
-      <arg name='data' type='void *' info='extra scanner data'/>
-      <arg name='name' type='const xmlChar *' info='the name associated'/>
-      <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' module='hash'>
-      <info>Query the number of elements 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='hash' type='xmlHashTablePtr' info='hash table'/>
-    </function>
-    <function name='xmlHashUpdateEntry' file='hash' module='hash'>
-      <info>Add a hash table entry. If an entry with this key already exists, the old payload will be freed and updated with the new value.</info>
-      <return type='int' info='0 in case of success, -1 if a memory allocation failed.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for replaced item or NULL'/>
-    </function>
-    <function name='xmlHashUpdateEntry2' file='hash' module='hash'>
-      <info>Add a hash table entry with two strings as key.  See xmlHashUpdateEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for replaced item or NULL'/>
-    </function>
-    <function name='xmlHashUpdateEntry3' file='hash' module='hash'>
-      <info>Add a hash table entry with three strings as key.  See xmlHashUpdateEntry.</info>
-      <return type='int' info='0 on success and -1 in case of error.'/>
-      <arg name='hash' type='xmlHashTablePtr' info='hash table'/>
-      <arg name='key' type='const xmlChar *' info='first string key'/>
-      <arg name='key2' type='const xmlChar *' info='second string key'/>
-      <arg name='key3' type='const xmlChar *' info='third string key'/>
-      <arg name='payload' type='void *' info='pointer to the payload'/>
-      <arg name='dealloc' type='xmlHashDeallocator' info='deallocator function for replaced item or NULL'/>
-    </function>
-    <function name='xmlIOHTTPClose' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xmlIO'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xmlIO'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xmlIO'>
-      <cond>defined(LIBXML_HTTP_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Support for HTTP POST has been removed.</info>
-      <return type='void *' info='NULL.'/>
-      <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' module='xmlIO'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Read @len bytes to @buffer from the I/O channel.</info>
-      <return type='int' info='the number of bytes written'/>
-      <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='xmlIOParseDTD' file='parser' module='parser'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlCtxtParseDtd.  Load and parse a DTD</info>
-      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error. @input will be freed by the function in any case.'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block or NULL'/>
-      <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' module='encoding'>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlInitGlobals' file='parser' module='globals'>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlInitMemory' file='xmlmemory' module='xmlmemory'>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='int' info='0.'/>
-    </function>
-    <function name='xmlInitNodeInfoSeq' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  -- 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' module='threads'>
-      <info>Initialization function for the XML parser.  For older versions, it&apos;s recommended to call this function once from the main thread before using the library in multithreaded programs.  Since 2.14.0, there&apos;s no distinction between threads. It should be unnecessary to call this function.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlInitParserCtxt' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Internal function which will be made private in a future version.  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' module='threads'>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlInitializeCatalog' file='catalog' module='catalog'>
-      <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
-      <info>Load the default system catalog.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlInitializeDict' file='dict' module='dict'>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='int' info='0.'/>
-    </function>
-    <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' module='xmlIO'>
-      <info>Callback used in the I/O Input API to detect if the current handler can provide input functionality 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' 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' 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='xmlInputSetEncodingHandler' file='parser' module='parserInternals'>
-      <info>Use encoding handler to decode input data.  Closes the handler on error.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='input' type='xmlParserInputPtr' info='the input stream'/>
-      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
-    </function>
-    <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' 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' 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='const xmlNode *' info='the node'/>
-    </function>
-    <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' 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' 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' 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' 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 or -1 if a memory allocation failed.'/>
-      <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' 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' module='parserInternals'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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='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' 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' module='valid'>
-      <info>DEPRECATED, do not use. This function will be removed from the public API.  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' module='tree'>
-      <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='xmlIsolat1ToUTF8' 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 or an XML_ENC_ERR code.  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 produced.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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='xmlKeepBlanksDefault' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Use the modern options API with XML_PARSE_NOBLANKS.  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='xmlLastElementChild' file='tree' module='tree'>
-      <info>Find the last child node which is an element.  Note that entity references are not expanded.</info>
-      <return type='xmlNodePtr' info='the last element or NULL if parent has no children.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-    </function>
-    <function name='xmlLineNumbersDefault' file='parser' module='parserInternals'>
-      <info>DEPRECATED: The modern options API always enables line numbers.  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' 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' 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' 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' 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='xmlListPtr' info='the old list'/>
-    </function>
-    <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' 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' 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' 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' 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='xmlListPtr' info='the list'/>
-    </function>
-    <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' 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' 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' 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' 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' 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' 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' 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' 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' 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' module='list'>
-      <info>Remove the first instance associated to data in the list</info>
-      <return type='int' info='1 if a deallocation occurred, 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' module='list'>
-      <info>Remove the last instance associated to data in the list</info>
-      <return type='int' info='1 if a deallocation occurred, 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' 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' 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' 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='void *' info='a user parameter passed to the walker function'/>
-    </function>
-    <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' 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' 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' 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='void *' info='a user parameter passed to the walker function'/>
-    </function>
-    <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='void *' info='extra user provided data to the walker'/>
-    </functype>
-    <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' 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' 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' module='parserInternals'>
-      <info>@URL is a filename or URL. If if contains the substring &quot;://&quot;, it is assumed to be a Legacy Extended IRI. Otherwise, it is treated as a filesystem path.  @ID is an optional XML public ID, typically from a doctype declaration. It is used for catalog lookups.  If catalog lookup is enabled (default is yes) and URL or ID are found in system or local XML catalogs, URL is replaced with the result. Then the following resource loaders will be called if they were registered (in order of precedence):  - the resource loader set with xmlCtxtSetResourceLoader - the global external entity loader set with xmlSetExternalEntityLoader (without catalog resolution, deprecated) - the per-thread xmlParserInputBufferCreateFilenameFunc set with xmlParserInputBufferCreateFilenameDefault (deprecated) - the default loader which will return - the result from a matching global input callback set with xmlRegisterInputCallbacks (deprecated) - a HTTP resource if support is compiled in. - a file opened from the filesystem, with automatic detection of compressed files if support is compiled in.</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' 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' module='threads'>
-      <info>xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlLookupCharEncodingHandler' file='encoding' module='encoding'>
-      <info>Find or create a handler matching the encoding. The following converters are looked up in order:  - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled  The handler must be closed with xmlCharEncCloseFunc.  If the encoding is UTF-8, a NULL handler and no error code will be returned.  Available since 2.13.0.</info>
-      <return type='xmlParserErrors' info='XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another xmlParserErrors error code.'/>
-      <arg name='enc' type='xmlCharEncoding' info='an xmlCharEncoding value.'/>
-      <arg name='out' type='xmlCharEncodingHandler **' info='pointer to result'/>
-    </function>
-    <function name='xmlMallocAtomicLoc' file='xmlmemory' module='xmlmemory'>
-      <info>DEPRECATED: don&apos;t use</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 unsigned 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' 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' module='xmlmemory'>
-      <info>DEPRECATED: don&apos;t use</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' 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' module='xmlmemory'>
-      <info>DEPRECATED: This feature was removed.</info>
-      <return type='void'/>
-      <arg name='fp' type='FILE *' info='a FILE descriptor'/>
-    </function>
-    <function name='xmlMemDisplayLast' file='xmlmemory' module='xmlmemory'>
-      <info>DEPRECATED: This feature was removed.</info>
-      <return type='void'/>
-      <arg name='fp' type='FILE *' info='a FILE descriptor'/>
-      <arg name='nbBytes' type='long' info='the amount of memory to dump'/>
-    </function>
-    <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' 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'/>
-      <arg name='mallocFunc' type='xmlMallocFunc *' info='place to save the malloc() function in use'/>
-      <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' 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' 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' 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'/>
-      <arg name='mallocFunc' type='xmlMallocFunc' info='the malloc() function to use'/>
-      <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' module='xmlmemory'>
-      <info>DEPRECATED: This feature was removed.</info>
-      <return type='void'/>
-      <arg name='fp' type='FILE *' info='a FILE descriptor'/>
-      <arg name='nr' type='int' info='number of entries to dump'/>
-    </function>
-    <function name='xmlMemSize' file='xmlmemory' module='xmlmemory'>
-      <info></info>
-      <return type='size_t' info='the size of a memory allocation.'/>
-      <arg name='ptr' type='void *' info='pointer to the memory allocation'/>
-    </function>
-    <function name='xmlMemStrdupLoc' file='xmlmemory' module='xmlmemory'>
-      <info>DEPRECATED: don&apos;t use</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' 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' module='xmlmemory'>
-      <info>DEPRECATED: This feature was removed.</info>
-      <return type='void'/>
-    </function>
-    <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' 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' 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' module='xmlmodule'>
-      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
-      <info>Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * . 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' module='xmlmodule'>
-      <cond>defined(LIBXML_MODULES_ENABLED)</cond>
-      <info>Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * .</info>
-      <return type='int' info='0 if the symbol was found, or -1 in case of error'/>
-      <arg name='module' type='xmlModulePtr' info='the module'/>
-      <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' 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' 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='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' module='nanohttp'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>Cleanup the HTTP protocol layer.</info>
-      <return type='void'/>
-    </function>
-    <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' 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' 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' 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 in case of success. The contentType, if provided must be freed by the caller'/>
-      <arg name='URL' type='const char *' info='The URL to load'/>
-      <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' module='nanohttp'>
-      <cond>defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>Initialize the HTTP protocol layer. Currently it just checks for proxy information</info>
-      <return type='void'/>
-    </function>
-    <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'/>
-      <arg name='URL' type='const char *' info='The URL to load'/>
-      <arg name='method' type='const char *' info='the HTTP method to use'/>
-      <arg name='input' type='const char *' info='the input string if any'/>
-      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
-      <arg name='headers' type='const char *' info='the extra headers'/>
-      <arg name='ilen' type='int' info='input length'/>
-    </function>
-    <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'/>
-      <arg name='URL' type='const char *' info='The URL to load'/>
-      <arg name='method' type='const char *' info='the HTTP method to use'/>
-      <arg name='input' type='const char *' info='the input string if any'/>
-      <arg name='contentType' type='char **' info='the Content-Type information IN and OUT'/>
-      <arg name='redir' type='char **' info='the redirected URL OUT'/>
-      <arg name='headers' type='const char *' info='the extra headers'/>
-      <arg name='ilen' type='int' info='input length'/>
-    </function>
-    <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' 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' 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'/>
-      <arg name='redir' type='char **' info='if available the redirected URL will be returned'/>
-    </function>
-    <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.'/>
-      <arg name='ctx' type='void *' info='the HTTP context'/>
-      <arg name='dest' type='void *' info='a buffer'/>
-      <arg name='len' type='int' info='the buffer length'/>
-    </function>
-    <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' 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' 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 in case 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' 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 information.</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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_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' module='tree'>
-      <info>Create a CDATA section node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document (optional)'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-      <arg name='len' type='int' info='size of text content'/>
-    </function>
-    <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' module='encoding'>
-      <info>DEPRECATED: This function modifies global state and is not thread-safe.  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' module='tree'>
-      <info>This function is MISNAMED. It doesn&apos;t create a character reference but an entity reference.  Create an empty entity reference node. This function doesn&apos;t attempt to look up the entity in @doc.  Entity names like &apos;&amp;entity;&apos; are handled as well.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-    </function>
-    <function name='xmlNewChild' file='tree' module='tree'>
-      <info>Create a new child element and append it to a parent element.  If @ns is NULL, the newly created element inherits the namespace of the parent.  If provided, @content is expected to be a valid XML attribute value possibly containing character and entity references. Text and entity reference node will be added to the child element, see xmlNewDocNode.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-      <arg name='ns' type='xmlNsPtr' info='a namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the name of the child'/>
-      <arg name='content' type='const xmlChar *' info='text content with XML references (optional)'/>
-    </function>
-    <function name='xmlNewComment' file='tree' module='tree'>
-      <info>Use of this function is DISCOURAGED in favor of xmlNewDocComment.  Create a comment node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='content' type='const xmlChar *' info='the comment content (optional)'/>
-    </function>
-    <function name='xmlNewDoc' file='tree' module='tree'>
-      <info>Creates a new XML document. If version is NULL, &quot;1.0&quot; is used.</info>
-      <return type='xmlDocPtr' info='a new document or NULL if a memory allocation failed.'/>
-      <arg name='version' type='const xmlChar *' info='XML version string like &quot;1.0&quot; (optional)'/>
-    </function>
-    <function name='xmlNewDocComment' file='tree' module='tree'>
-      <info>Create a comment node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='content' type='const xmlChar *' info='the comment content'/>
-    </function>
-    <function name='xmlNewDocElementContent' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='tree'>
-      <info>Create a document fragment node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document (optional)'/>
-    </function>
-    <function name='xmlNewDocNode' file='tree' module='tree'>
-      <info>Create an element node.  If provided, @content is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. Only references are handled, nested elements, comments or PIs are not. See xmlNewDocRawNode for an alternative.  General notes on object creation:  Each node and all its children are associated with the same document. The document should be provided when creating nodes to avoid a performance penalty when adding the node to a document tree. Note that a document only owns nodes reachable from the root node. Unlinked subtrees must be freed manually.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document'/>
-      <arg name='ns' type='xmlNsPtr' info='namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the node name'/>
-      <arg name='content' type='const xmlChar *' info='text content with XML references (optional)'/>
-    </function>
-    <function name='xmlNewDocNodeEatName' file='tree' module='tree'>
-      <info>Create an element node.  Like xmlNewDocNode, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document'/>
-      <arg name='ns' type='xmlNsPtr' info='namespace (optional)'/>
-      <arg name='name' type='xmlChar *' info='the node name'/>
-      <arg name='content' type='const xmlChar *' info='text content with XML references (optional)'/>
-    </function>
-    <function name='xmlNewDocPI' file='tree' module='tree'>
-      <info>Create a processing instruction object.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the processing instruction target'/>
-      <arg name='content' type='const xmlChar *' info='the PI content (optional)'/>
-    </function>
-    <function name='xmlNewDocProp' file='tree' module='tree'>
-      <info>Create an attribute object.  If provided, @value is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. If you want to pass a raw string, see xmlNewProp.</info>
-      <return type='xmlAttrPtr' info='a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
-      <arg name='value' type='const xmlChar *' info='attribute value with XML references (optional)'/>
-    </function>
-    <function name='xmlNewDocRawNode' file='tree' module='tree'>
-      <info>Create an element node.  If provided, @value should be a raw, unescaped string.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document'/>
-      <arg name='ns' type='xmlNsPtr' info='namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the node name'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-    </function>
-    <function name='xmlNewDocText' file='tree' module='tree'>
-      <info>Create a new text node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='the target document'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-    </function>
-    <function name='xmlNewDocTextLen' file='tree' module='tree'>
-      <info>Create a new text node.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the target document'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-      <arg name='len' type='int' info='size of text content'/>
-    </function>
-    <function name='xmlNewDtd' file='tree' module='tree'>
-      <info>Create a DTD node.  If a document is provided, it is an error if it already has an external subset. If the document has no external subset, it will be set to the created DTD.  To create an internal subset, use xmlCreateIntSubset().</info>
-      <return type='xmlDtdPtr' info='a pointer to the new DTD object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document pointer (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the DTD name (optional)'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the external ID (optional)'/>
-      <arg name='SystemID' type='const xmlChar *' info='the system ID (optional)'/>
-    </function>
-    <function name='xmlNewElementContent' file='valid' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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='xmlNewEntity' file='entities' module='entities'>
-      <info>Create a new entity, this differs from xmlAddDocEntity() that if the document is NULL or has no internal subset defined, then an unlinked entity structure will be returned, it is then the responsibility of the caller to link it to the document later or free it when not needed anymore.</info>
-      <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type XML_xxx_yyy_ENTITY'/>
-      <arg name='ExternalID' type='const xmlChar *' info='the entity external ID if available'/>
-      <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='xmlNewEntityInputStream' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Internal function, do not use.  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='ent' type='xmlEntityPtr' info='an Entity pointer'/>
-    </function>
-    <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='buf' type='xmlParserInputBufferPtr' info='an input buffer'/>
-      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
-    </function>
-    <function name='xmlNewInputFromFd' file='parser' module='parserInternals'>
-      <info>Creates a new parser input to read from a zero-terminated string.  @url is used as base to resolve external entities and for error reporting.  @fd is closed after parsing has finished.  Supported @flags are XML_INPUT_UNZIP to decompress data automatically. This feature is deprecated and will be removed in a future release.  Available since 2.14.0.</info>
-      <return type='xmlParserInputPtr' info='a new parser input or NULL if a memory allocation failed.'/>
-      <arg name='url' type='const char *' info='base URL (optional)'/>
-      <arg name='fd' type='int' info='file descriptor'/>
-      <arg name='flags' type='xmlParserInputFlags' info='input flags'/>
-    </function>
-    <function name='xmlNewInputFromFile' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Use xmlNewInputFromUrl.  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='xmlNewInputFromIO' file='parser' module='parserInternals'>
-      <info>Creates a new parser input to read from input callbacks and cintext.  @url is used as base to resolve external entities and for error reporting.  @ioRead is called to read new data into a provided buffer. It must return the number of bytes written into the buffer ot a negative xmlParserErrors code on failure.  @ioClose is called after parsing has finished.  @ioCtxt is an opaque pointer passed to the callbacks.  Available since 2.14.0.</info>
-      <return type='xmlParserInputPtr' info='a new parser input or NULL if a memory allocation failed.'/>
-      <arg name='url' type='const char *' info='base URL (optional)'/>
-      <arg name='ioRead' type='xmlInputReadCallback' info='read callback'/>
-      <arg name='ioClose' type='xmlInputCloseCallback' info='close callback (optional)'/>
-      <arg name='ioCtxt' type='void *' info='IO context'/>
-      <arg name='flags' type='xmlParserInputFlags' info='unused, pass 0'/>
-    </function>
-    <function name='xmlNewInputFromMemory' file='parser' module='parserInternals'>
-      <info>Creates a new parser input to read from a memory area.  @url is used as base to resolve external entities and for error reporting.  If the XML_INPUT_BUF_STATIC flag is set, the memory area must stay unchanged until parsing has finished. This can avoid temporary copies.  If the XML_INPUT_BUF_ZERO_TERMINATED flag is set, the memory area must contain a zero byte after the buffer at position @size. This can avoid temporary copies.  Available since 2.14.0.</info>
-      <return type='xmlParserInputPtr' info='a new parser input or NULL if a memory allocation failed.'/>
-      <arg name='url' type='const char *' info='base URL (optional)'/>
-      <arg name='mem' type='const void *' info='pointer to char array'/>
-      <arg name='size' type='size_t' info='size of array'/>
-      <arg name='flags' type='xmlParserInputFlags' info='optimization hints'/>
-    </function>
-    <function name='xmlNewInputFromString' file='parser' module='parserInternals'>
-      <info>Creates a new parser input to read from a zero-terminated string.  @url is used as base to resolve external entities and for error reporting.  If the XML_INPUT_BUF_STATIC flag is set, the string must stay unchanged until parsing has finished. This can avoid temporary copies.  Available since 2.14.0.</info>
-      <return type='xmlParserInputPtr' info='a new parser input or NULL if a memory allocation failed.'/>
-      <arg name='url' type='const char *' info='base URL (optional)'/>
-      <arg name='str' type='const char *' info='zero-terminated string'/>
-      <arg name='flags' type='xmlParserInputFlags' info='optimization hints'/>
-    </function>
-    <function name='xmlNewInputFromUrl' file='parser' module='parserInternals'>
-      <info>Create a new input stream based on a file or a URL.  The flag XML_INPUT_UNZIP allows decompression.  The flag XML_INPUT_NETWORK allows network access.  The following resource loaders will be called if they were registered (in order of precedence):  - the per-thread xmlParserInputBufferCreateFilenameFunc set with xmlParserInputBufferCreateFilenameDefault (deprecated) - the default loader which will return - the result from a matching global input callback set with xmlRegisterInputCallbacks (deprecated) - a HTTP resource if support is compiled in. - a file opened from the filesystem, with automatic detection of compressed files if support is compiled in.  Available since 2.14.0.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='filename' type='const char *' info='the filename to use as entity'/>
-      <arg name='flags' type='xmlParserInputFlags' info='XML_INPUT flags'/>
-      <arg name='out' type='xmlParserInputPtr *' info='pointer to new parser input'/>
-    </function>
-    <function name='xmlNewInputStream' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Use xmlNewInputFromUrl or similar functions.  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' 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' module='tree'>
-      <info>Create an element node.  Use of this function is DISCOURAGED in favor of xmlNewDocNode.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='ns' type='xmlNsPtr' info='namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the node name'/>
-    </function>
-    <function name='xmlNewNodeEatName' file='tree' module='tree'>
-      <info>Create an element node.  Use of this function is DISCOURAGED in favor of xmlNewDocNodeEatName.  Like xmlNewNode, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='ns' type='xmlNsPtr' info='namespace (optional)'/>
-      <arg name='name' type='xmlChar *' info='the node name'/>
-    </function>
-    <function name='xmlNewNs' file='tree' module='tree'>
-      <info>Create a new namespace. For a default namespace, @prefix should be NULL. The namespace URI in @href is not checked. You should make sure to pass a valid URI.  If @node is provided, it must be an element node. The namespace will be appended to the node&apos;s namespace declarations. It is an error if the node already has a definition for the prefix or default namespace.</info>
-      <return type='xmlNsPtr' info='a new namespace pointer or NULL if arguments are invalid, the prefix is already in use or a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the element carrying the namespace (optional)'/>
-      <arg name='href' type='const xmlChar *' info='the URI associated'/>
-      <arg name='prefix' type='const xmlChar *' info='the prefix for the namespace (optional)'/>
-    </function>
-    <function name='xmlNewNsProp' file='tree' module='tree'>
-      <info>Create an attribute object.  If provided, @value should be a raw, unescaped string.  If @node is provided, the created attribute will be appended without checking for duplicate names. It is an error if @node is not an element.</info>
-      <return type='xmlAttrPtr' info='a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the parent node (optional)'/>
-      <arg name='ns' type='xmlNsPtr' info='the namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the local name of the attribute'/>
-      <arg name='value' type='const xmlChar *' info='the value of the attribute (optional)'/>
-    </function>
-    <function name='xmlNewNsPropEatName' file='tree' module='tree'>
-      <info>Like xmlNewNsProp, but the @name string will be used directly without making a copy. Takes ownership of @name which will also be freed on error.</info>
-      <return type='xmlAttrPtr' info='a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the parent node (optional)'/>
-      <arg name='ns' type='xmlNsPtr' info='the namespace (optional)'/>
-      <arg name='name' type='xmlChar *' info='the local name of the attribute'/>
-      <arg name='value' type='const xmlChar *' info='the value of the attribute (optional)'/>
-    </function>
-    <function name='xmlNewPI' file='tree' module='tree'>
-      <info>Create a processing instruction node.  Use of this function is DISCOURAGED in favor of xmlNewDocPI.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='name' type='const xmlChar *' info='the processing instruction target'/>
-      <arg name='content' type='const xmlChar *' info='the PI content (optional)'/>
-    </function>
-    <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' module='tree'>
-      <info>Create an attribute node.  If provided, @value should be a raw, unescaped string.  If @node is provided, the created attribute will be appended without checking for duplicate names. It is an error if @node is not an element.</info>
-      <return type='xmlAttrPtr' info='a pointer to the attribute or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='node' type='xmlNodePtr' info='the parent node (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
-      <arg name='value' type='const xmlChar *' info='the value of the attribute (optional)'/>
-    </function>
-    <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' module='tree'>
-      <info>Create a new entity reference node, linking the result with the entity in @doc if found.  Entity names like &apos;&amp;entity;&apos; are handled as well.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='the target document (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-    </function>
-    <function name='xmlNewSAXParserCtxt' file='parser' module='parserInternals'>
-      <info>Allocate and initialize a new SAX parser context. If userData is NULL, the parser context will be passed as user data.  Available since 2.11.0. If you want support older versions, it&apos;s best to invoke xmlNewParserCtxt and set ctxt-&gt;sax with struct assignment.</info>
-      <return type='xmlParserCtxtPtr' info='the xmlParserCtxtPtr or NULL if memory allocation failed.'/>
-      <arg name='sax' type='const xmlSAXHandler *' info='SAX handler'/>
-      <arg name='userData' type='void *' info='user data'/>
-    </function>
-    <function name='xmlNewStringInputStream' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Use xmlNewInputFromString.  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' module='tree'>
-      <info>Create a text node.  Use of this function is DISCOURAGED in favor of xmlNewDocText.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-    </function>
-    <function name='xmlNewTextChild' file='tree' module='tree'>
-      <info>Create a new child element and append it to a parent element.  If @ns is NULL, the newly created element inherits the namespace of the parent.  If @content is provided, a text node will be added to the child element, see xmlNewDocRawNode.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='parent' type='xmlNodePtr' info='the parent node'/>
-      <arg name='ns' type='xmlNsPtr' info='a namespace (optional)'/>
-      <arg name='name' type='const xmlChar *' info='the name of the child'/>
-      <arg name='content' type='const xmlChar *' info='raw text content of the child (optional)'/>
-    </function>
-    <function name='xmlNewTextLen' file='tree' module='tree'>
-      <info>Use of this function is DISCOURAGED in favor of xmlNewDocTextLen.</info>
-      <return type='xmlNodePtr' info='a pointer to the new node object or NULL if a memory allocation failed.'/>
-      <arg name='content' type='const xmlChar *' info='raw text content (optional)'/>
-      <arg name='len' type='int' info='size of text content'/>
-    </function>
-    <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' 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' 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' 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' 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' 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' 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' 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'/>
-      <arg name='doc' type='xmlDocPtr' info='xmlDocPtr'/>
-      <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' 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' module='parserInternals'>
-      <info>DEPRECATED: Internal function, do not use.  Skip to the next char input char.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
-    </function>
-    <function name='xmlNextElementSibling' file='tree' module='tree'>
-      <info>Find the closest following sibling which is a element.  Note that entity references are not expanded.</info>
-      <return type='xmlNodePtr' info='the sibling or NULL if no sibling was found.'/>
-      <arg name='node' type='xmlNodePtr' info='the current node'/>
-    </function>
-    <function name='xmlNoNetExternalEntityLoader' file='xmlIO' module='parserInternals'>
-      <info>DEPRECATED: Use XML_PARSE_NONET.  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' module='tree'>
-      <info>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</info>
-      <return type='int' info='0 on success, 1 on error, -1 if a memory allocation failed.'/>
-      <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' module='tree'>
-      <info>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</info>
-      <return type='int' info='0 on success, 1 on error, -1 if a memory allocation failed.'/>
-      <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' 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='const xmlNode *' info='the node being read'/>
-    </function>
-    <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. Since this is using xmlBuffer structures it is limited to 2GB and somehow deprecated, use xmlNodeDumpOutput() instead.</info>
-      <return type='int' info='the number of bytes written to the buffer or -1 in case of error'/>
-      <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <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' 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'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='the XML buffer output'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='cur' type='xmlNodePtr' info='the current node'/>
-      <arg name='level' type='int' info='the imbrication level for indenting'/>
-      <arg name='format' type='int' info='is formatting allowed'/>
-      <arg name='encoding' type='const char *' info='an optional encoding string'/>
-    </function>
-    <function name='xmlNodeGetAttrValue' 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. The returned value must be freed by the caller.  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, 1 if no attribute was found, -1 if a memory allocation failed.'/>
-      <arg name='node' type='const xmlNode *' info='the node'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-      <arg name='nsUri' type='const xmlChar *' info='the URI of the namespace'/>
-      <arg name='out' type='xmlChar **' info='the returned string'/>
-    </function>
-    <function name='xmlNodeGetBase' file='tree' module='tree'>
-      <info>See xmlNodeGetBaseSafe. This function doesn&apos;t allow to distinguish memory allocation failures from a non-existing base.</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='const xmlDoc *' info='the document the node pertains to'/>
-      <arg name='cur' type='const xmlNode *' info='the node being checked'/>
-    </function>
-    <function name='xmlNodeGetBaseSafe' 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 doc-&gt;URL in this case  Available since 2.13.0.</info>
-      <return type='int' info='0 in case of success, 1 if a URI or argument is invalid, -1 if a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='the document the node pertains to'/>
-      <arg name='cur' type='const xmlNode *' info='the node being checked'/>
-      <arg name='baseOut' type='xmlChar **' info='pointer to base'/>
-    </function>
-    <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='const xmlNode *' info='the node being read'/>
-    </function>
-    <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='const xmlNode *' info='the node being checked'/>
-    </function>
-    <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='const xmlNode *' info='the node being checked'/>
-    </function>
-    <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='const xmlNode *' info='the node'/>
-    </function>
-    <function name='xmlNodeListGetRawString' file='tree' module='tree'>
-      <info>Serializes attribute children (text and entity reference nodes) into a string.  If @inLine is true, entity references will be substituted. Otherwise, entity references will be kept and special characters like &apos;&amp;&apos; will be escaped.</info>
-      <return type='xmlChar *' info='a string or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='a document (optional)'/>
-      <arg name='list' type='const xmlNode *' info='a node list of attribute children'/>
-      <arg name='inLine' type='int' info='whether entity references are substituted'/>
-    </function>
-    <function name='xmlNodeListGetString' file='tree' module='tree'>
-      <info>Serializes attribute children (text and entity reference nodes) into a string.  If @inLine is true, entity references will be substituted. Otherwise, entity references will be kept and special characters like &apos;&amp;&apos; as well as non-ASCII chars will be escaped. See xmlNodeListGetRawString for an alternative option.</info>
-      <return type='xmlChar *' info='a string or NULL if a memory allocation failed.'/>
-      <arg name='doc' type='xmlDocPtr' info='a document (optional)'/>
-      <arg name='list' type='const xmlNode *' info='a node list of attribute children'/>
-      <arg name='inLine' type='int' info='whether entity references are substituted'/>
-    </function>
-    <function name='xmlNodeSetBase' file='tree' module='tree'>
-      <info>Set (or reset) the base URI of a node, i.e. the value of the xml:base attribute.</info>
-      <return type='int' info='0 on success, -1 on error.'/>
-      <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' module='tree'>
-      <info>Replace the text content of a node.  Sets the raw text content of text, CDATA, comment or PI nodes.  For element and attribute nodes, removes all children and replaces them by parsing @content which is expected to be a valid XML attribute value possibly containing character and entity references. Syntax errors and references to undeclared entities are ignored silently. Unfortunately, there isn&apos;t an API to pass raw content directly. An inefficient work-around is to escape the content with xmlEncodeSpecialChars before passing it. A better trick is clearing the old content with xmlNodeSetContent(node, NULL) first and then calling xmlNodeAddContent(node, content). Unlike this function, xmlNodeAddContent accepts raw text.</info>
-      <return type='int' info='0 on success, 1 on error, -1 if a memory allocation failed.'/>
-      <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' module='tree'>
-      <info>See xmlNodeSetContent.</info>
-      <return type='int' info='0 on success, 1 on error, -1 if a memory allocation failed.'/>
-      <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
-      <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' module='tree'>
-      <info>Set the language of a node, i.e. the values of the xml:lang attribute.</info>
-      <return type='int' info='0 on success, 1 if arguments are invalid, -1 if a memory allocation failed.'/>
-      <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' module='tree'>
-      <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' module='tree'>
-      <info>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</info>
-      <return type='int' info='0 on success, 1 if arguments are invalid, -1 if a memory allocation failed.'/>
-      <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' 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' module='xmlIO'>
-      <info>DEPRECATED: This never really worked.</info>
-      <return type='xmlChar *' info='a copy of path.'/>
-      <arg name='path' type='const xmlChar *' info='the input file path'/>
-    </function>
-    <function name='xmlOpenCharEncodingHandler' file='encoding' module='encoding'>
-      <info>Find or create a handler matching the encoding. The following converters are looked up in order:  - Built-in handler (UTF-8, UTF-16, ISO-8859-1, ASCII) - User-registered global handler (deprecated) - iconv if enabled - ICU if enabled  The handler must be closed with xmlCharEncCloseFunc.  If the encoding is UTF-8, a NULL handler and no error code will be returned.  Available since 2.13.0.</info>
-      <return type='xmlParserErrors' info='XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another xmlParserErrors error code.'/>
-      <arg name='name' type='const char *' info='a string describing the char encoding.'/>
-      <arg name='output' type='int' info='boolean, use handler for output'/>
-      <arg name='out' type='xmlCharEncodingHandler **' info='pointer to result'/>
-    </function>
-    <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 a negative xmlParserErrors code in case of error.'/>
-      <arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
-    </function>
-    <function name='xmlOutputBufferCreateBuffer' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Create a buffered output for the progressive saving to a xmlBuffer  Consumes @encoder even in error case.</info>
-      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
-      <arg name='buffer' type='xmlBufferPtr' info='a xmlBufferPtr'/>
-      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
-    </function>
-    <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  Consumes @encoder even in error case.</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' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Create a buffered output for the progressive saving to a FILE * buffered C I/O  Consumes @encoder even in error case.</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' 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.  Consumes @encoder even in error case.</info>
-      <return type='xmlOutputBufferPtr' info='the new output or NULL'/>
-      <arg name='URI' type='const char *' info='a C string containing the URI or filename'/>
-      <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='xmlIO' 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='xmlIO' module='xmlIO'>
-      <info>Signature for the function doing the lookup for a suitable output method corresponding to an URI.</info>
-      <return type='xmlOutputBufferPtr' info='the new xmlOutputBufferPtr in case of success or NULL if no method was found.'/>
-      <arg name='URI' type='const char *' info='the URI to write to'/>
-      <arg name='encoder' type='xmlCharEncodingHandlerPtr' info=''/>
-      <arg name='compression' type='int' info=''/>
-    </functype>
-    <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  Consumes @encoder even in error case.</info>
-      <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
-      <arg name='iowrite' type='xmlOutputWriteCallback' info='an I/O write function'/>
-      <arg name='ioclose' type='xmlOutputCloseCallback' info='an I/O close function'/>
-      <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' 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='xmlOutputBufferGetContent' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Gives a pointer to the data currently held in the output buffer</info>
-      <return type='const xmlChar *' info='a pointer to the data or NULL in case of error'/>
-      <arg name='out' type='xmlOutputBufferPtr' info='an xmlOutputBufferPtr'/>
-    </function>
-    <function name='xmlOutputBufferGetSize' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Gives the length of the data currently held in the output buffer</info>
-      <return type='size_t' info='0 in case or error or no data is held, the size otherwise'/>
-      <arg name='out' type='xmlOutputBufferPtr' info='an xmlOutputBufferPtr'/>
-    </function>
-    <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.'/>
-      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
-      <arg name='len' type='int' info='the size in bytes of the array.'/>
-      <arg name='data' type='const char *' info='an char array'/>
-    </function>
-    <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 characters 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.'/>
-      <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
-      <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' 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' 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' 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 functionality 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' 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' 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'/>
-      <arg name='context' type='void *' info='an Output context'/>
-      <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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse an attribute list declaration for an element. Always consumes &apos;&lt;!&apos;.  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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'/>
-      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to (must not be NULL)'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block (possibly NULL)'/>
-      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
-      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
-      <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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>Parse a well-balanced chunk of an XML document  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, or thehe 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, assuming the parsing succeeded to some extent.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to (must not be NULL)'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block (possibly NULL)'/>
-      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
-      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
-      <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
-      <arg name='listOut' 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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse escaped pure raw content. Always consumes &apos;&lt;![&apos;.  [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' 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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='cdata' type='int' info='unused'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse a numeric character reference. Always consumes &apos;&amp;&apos;.  [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' module='parser'>
-      <cond>defined(LIBXML_PUSH_ENABLED)</cond>
-      <info>Parse a chunk of memory in push parser mode.  Assumes that the parser context was initialized with xmlCreatePushParserCtxt.  The last chunk, which will often be empty, must be marked with the @terminate flag. With the default SAX callbacks, the resulting document will be available in ctxt-&gt;myDoc. This pointer will not be freed when calling xmlFreeParserCtxt and must be freed by the caller. If the document isn&apos;t well-formed, it will still be returned in ctxt-&gt;myDoc.  As an exception, xmlCtxtResetPush will free the document in ctxt-&gt;myDoc. So ctxt-&gt;myDoc should be set to NULL after extracting the document.</info>
-      <return type='int' info='an xmlParserErrors code (0 on success).'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='chunk' type='const char *' info='chunk of memory'/>
-      <arg name='size' type='int' info='size of chunk in bytes'/>
-      <arg name='terminate' type='int' info='last chunk indicator'/>
-    </function>
-    <function name='xmlParseComment' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse an XML (SGML) comment. Always consumes &apos;&lt;!&apos;.  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' module='parser'>
-      <info>Parse XML element content. This is useful if you&apos;re only interested in custom SAX callbacks. If you want a node list, use xmlCtxtParseContent.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <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='ctxt' type='xmlParserCtxtPtr' info='the existing parsing context'/>
-      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
-      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
-      <arg name='listOut' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadDoc.  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 an array of xmlChar'/>
-    </function>
-    <function name='xmlParseDocTypeDecl' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>Parse an XML document and invoke the SAX handlers. This is useful if you&apos;re only interested in custom SAX callbacks. If you want a document tree, use xmlCtxtParseDocument.</info>
-      <return type='int' info='0, -1 in case of error.'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlParseElement' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  parse an XML element  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse an element declaration. Always consumes &apos;&lt;!&apos;.  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse an entity declaration. Always consumes &apos;&lt;!&apos;.  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlParseCtxtExternalEntity.  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'/>
-      <arg name='doc' type='xmlDocPtr' info='the document the chunk pertains to'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block (possibly NULL)'/>
-      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks (possibly NULL)'/>
-      <arg name='depth' type='int' info='Used for loop detection, use 0'/>
-      <arg name='URL' type='const xmlChar *' info='the URL for the entity to load'/>
-      <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
-      <arg name='list' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
-    </function>
-    <function name='xmlParseExternalID' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadFile.  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' 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)*  This function assumes the encoding of @node&apos;s document which is typically not what you want. A better alternative is xmlCtxtParseContent.</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'/>
-      <arg name='data' type='const char *' info='the input string'/>
-      <arg name='datalen' type='int' info='the input string length in bytes'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-      <arg name='listOut' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
-    </function>
-    <function name='xmlParseMarkupDecl' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse markup declarations. Always consumes &apos;&lt;!&apos; or &apos;&lt;?&apos;.  [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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadMemory.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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='xmlParseNmtoken' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse a notation declaration. Always consumes &apos;&lt;!&apos;.  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse a parameter entity reference. Always consumes &apos;%&apos;.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  parse an XML Processing Instruction.  [16] PI ::= &apos;&lt;?&apos; PITarget (S (Char* - (Char* &apos;?&gt;&apos; Char*)))? &apos;?&gt;&apos;  The processing is transferred to SAX once parsed.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlParsePITarget' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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='xmlParseReference' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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.  Always consumes &apos;&amp;&apos;.  [67] Reference ::= EntityRef | CharRef</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlParseSDDecl' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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=&quot;yes&quot; 0 if standalone=&quot;no&quot; -2 if standalone attribute is missing or invalid (A standalone value of -2 means that the XML declaration was found, but no value was specified for the standalone attribute).'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlParseStartTag' file='parserInternals' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Parse a start tag. Always consumes &apos;&lt;&apos;.  [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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  parse an XML declaration header for external entities  [77] TextDecl ::= &apos;&lt;?xml&apos; VersionInfo? EncodingDecl S? &apos;?&gt;&apos;</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-    </function>
-    <function name='xmlParseURI' file='uri' module='uri'>
-      <info>Parse an URI based on RFC 3986  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='xmlParseURIRaw' file='uri' module='uri'>
-      <info>Parse an URI but allows to keep intact the original fragments.  URI-reference = URI / relative-ref</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'/>
-      <arg name='raw' type='int' info='if 1 unescaping of URI pieces are disabled'/>
-    </function>
-    <function name='xmlParseURIReference' file='uri' module='uri'>
-      <info>Parse an URI reference string based on RFC 3986 and fills in the appropriate fields of the @uri structure  URI-reference = URI / relative-ref</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='xmlParseURISafe' file='uri' module='uri'>
-      <info>Parse an URI based on RFC 3986  URI-reference = [ absoluteURI | relativeURI ] [ &quot;#&quot; fragment ]  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, an error code (typically 1) if the URI is invalid or -1 if a memory allocation failed.'/>
-      <arg name='str' type='const char *' info='the URI string to analyze'/>
-      <arg name='uriOut' type='xmlURIPtr *' info='optional pointer to parsed URI'/>
-    </function>
-    <function name='xmlParseVersionInfo' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  parse the XML version value.  [26] VersionNum ::= &apos;1.&apos; [0-9]+  In practice allow [0-9].[0-9]+ at that level</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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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='xmlParserNodeInfoPtr' info='a node info sequence pointer'/>
-    </function>
-    <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' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='node' type='xmlNodePtr' info='an XML node within the tree'/>
-    </function>
-    <function name='xmlParserFindNodeInfoIndex' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
-      <arg name='node' type='xmlNodePtr' info='an XML node pointer'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Internal function, do not use.  [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='xmlParserInputBufferCreateFd' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFromFd.  Create a buffered parser input for the progressive parsing for the input from a file descriptor  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</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 (deprecated)'/>
-    </function>
-    <function name='xmlParserInputBufferCreateFile' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Don&apos;t use.  Create a buffered parser input for the progressive parsing of a FILE * buffered C I/O  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</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 (deprecated)'/>
-    </function>
-    <function name='xmlParserInputBufferCreateFilename' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFromUrl.  Create a buffered parser input for the progressive parsing of a file 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='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlCtxtSetResourceLoader or similar functions.  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='xmlIO' module='xmlIO'>
-      <info>Signature for the function doing the lookup for a suitable input method corresponding to an URI.</info>
-      <return type='xmlParserInputBufferPtr' info='the new xmlParserInputBufferPtr in case of success or NULL if no method was found.'/>
-      <arg name='URI' type='const char *' info='the URI to read from'/>
-      <arg name='enc' type='xmlCharEncoding' info='the requested source encoding'/>
-    </functype>
-    <function name='xmlParserInputBufferCreateIO' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFromIO.  Create a buffered parser input for the progressive parsing for the input from an I/O handler  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</info>
-      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known (deprecated)'/>
-    </function>
-    <function name='xmlParserInputBufferCreateMem' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFromMemory.  Create a parser input buffer for parsing from a memory area.  This function makes a copy of the whole input buffer. If you are sure that the contents of the buffer will remain valid until the document was parsed, you can avoid the copy by using xmlParserInputBufferCreateStatic.  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</info>
-      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL in case of error.'/>
-      <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 (deprecated)'/>
-    </function>
-    <function name='xmlParserInputBufferCreateStatic' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlNewInputFromMemory.  Create a parser input buffer for parsing from a memory area.  This functions assumes that the contents of the input buffer remain valid until the document was parsed. Use xmlParserInputBufferCreateMem otherwise.  The encoding argument is deprecated and should be set to XML_CHAR_ENCODING_NONE. The encoding can be changed with xmlSwitchEncoding or xmlSwitchEncodingName later on.</info>
-      <return type='xmlParserInputBufferPtr' info='the new parser input or NULL in case of error.'/>
-      <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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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</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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xmlIO'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Same as xmlParserInputBufferGrow.</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' 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' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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 amount of char 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' module='parserInternals'>
-      <info>DEPRECATED: This function was internal and is deprecated.</info>
-      <return type='int' info='-1 as this is an error to use it.'/>
-      <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' module='parserInternals'>
-      <info>DEPRECATED: Don&apos;t use.  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' module='error'>
-      <info>DEPRECATED: Use xmlFormatError.  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' module='error'>
-      <info>DEPRECATED: Use xmlFormatError.  Displays the associated file and line information for the current input</info>
-      <return type='void'/>
-      <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr input'/>
-    </function>
-    <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' 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' 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='xmlPathToURI' file='uri' module='uri'>
-      <info>Constructs an URI expressing the existing path</info>
-      <return type='xmlChar *' info='a new URI, 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='xmlPatternCompileSafe' file='pattern' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Compile a pattern.  Available since 2.13.0.</info>
-      <return type='int' info='0 on success, 1 on error, -1 if a memory allocation failed.'/>
-      <arg name='pattern' type='const xmlChar *' info='the pattern to compile'/>
-      <arg name='dict' type='xmlDict *' info='an optional dictionary for interned strings'/>
-      <arg name='flags' type='int' info='compilation flags, see xmlPatternFlags'/>
-      <arg name='namespaces' type='const xmlChar **' info='the prefix definitions, array of [URI, prefix] or NULL'/>
-      <arg name='patternOut' type='xmlPatternPtr *' info='output pattern'/>
-    </function>
-    <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' 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' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Test whether 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' 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='xmlPatternMinDepth' file='pattern' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Check the minimum depth reachable by a pattern, 0 mean the / or . are part of the set.</info>
-      <return type='int' info='-1 in case of error otherwise the depth,'/>
-      <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
-    </function>
-    <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' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Compile a pattern.</info>
-      <return type='xmlPatternPtr' info='the compiled form of the pattern or NULL in case of error'/>
-      <arg name='pattern' type='const xmlChar *' info='the pattern to compile'/>
-      <arg name='dict' type='xmlDict *' info='an optional dictionary for interned strings'/>
-      <arg name='flags' type='int' info='compilation flags, see xmlPatternFlags'/>
-      <arg name='namespaces' type='const xmlChar **' info='the prefix definitions, array of [URI, prefix] or NULL'/>
-    </function>
-    <function name='xmlPedanticParserDefault' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Use the modern options API with XML_PARSE_PEDANTIC.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</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' 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='xmlPopOutputCallbacks' file='xmlIO' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Remove the top output callbacks from the output stack. This includes the compiled-in I/O.</info>
-      <return type='int' info='the number of output callback registered or -1 in case of error.'/>
-    </function>
-    <function name='xmlPreviousElementSibling' file='tree' module='tree'>
-      <info>Find the closest preceding sibling which is a element.  Note that entity references are not expanded.</info>
-      <return type='xmlNodePtr' info='the sibling or NULL if no sibling was found.'/>
-      <arg name='node' type='xmlNodePtr' info='the current node'/>
-    </function>
-    <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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Push an input stream onto the stack.</info>
-      <return type='int' info='-1 in case of error or the index in the input stack'/>
-      <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' 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' 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' module='parser'>
-      <info>Convenience function to parse an XML document from a zero-terminated string.  See xmlCtxtReadDoc for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='cur' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlReadFd' file='parser' module='parser'>
-      <info>Parse an XML from a file descriptor and build a tree.  See xmlCtxtReadFd for details.  NOTE that the file descriptor will not be closed when the context is freed or reset.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlReadFile' file='parser' module='parser'>
-      <info>Convenience function to parse an XML file from the filesystem, the network or a global user-define resource loader.  This function always enables the XML_PARSE_UNZIP option for backward compatibility. If a &quot;-&quot; filename is passed, it will read from stdin. Both of these features are potentially insecure and might be removed from later versions.  See xmlCtxtReadFile for details.</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 (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlReadIO' file='parser' module='parser'>
-      <info>Parse an XML document from I/O functions and context and build a tree.  See xmlCtxtReadIO for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function (optional)'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='URL' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <function name='xmlReadMemory' file='parser' module='parser'>
-      <info>Parse an XML in-memory document and build a tree. The input buffer must not contain a terminating null byte.  See xmlCtxtReadMemory for details.</info>
-      <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='url' type='const char *' info='base URL (optional)'/>
-      <arg name='encoding' type='const char *' info='the document encoding (optional)'/>
-      <arg name='options' type='int' info='a combination of xmlParserOption'/>
-    </function>
-    <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.'/>
-      <arg name='cur' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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.'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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.'/>
-      <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='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.'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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.'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <arg name='cur' type='const xmlChar *' info='a pointer to a zero terminated string'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <arg name='fd' type='int' info='an open file descriptor'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <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='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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
-      <arg name='ioclose' type='xmlInputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <arg name='buffer' type='const char *' info='a pointer to a char array'/>
-      <arg name='size' type='int' info='the size of the array'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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' 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' 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' 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' module='xmlmemory'>
-      <info>DEPRECATED: don&apos;t use</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.'/>
-      <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' module='tree'>
-      <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='0 on success 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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadDoc with XML_PARSE_RECOVER.  parse an XML in-memory document and build a tree. In the case the document is not Well Formed, a attempt to build a tree is tried anyway</info>
-      <return type='xmlDocPtr' info='the resulting document tree or NULL in case of failure'/>
-      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
-    </function>
-    <function name='xmlRecoverFile' file='parser' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadFile with XML_PARSE_RECOVER.  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, it attempts to build a tree anyway</info>
-      <return type='xmlDocPtr' info='the resulting document tree or NULL in case of failure'/>
-      <arg name='filename' type='const char *' info='the filename'/>
-    </function>
-    <function name='xmlRecoverMemory' file='parser' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlReadMemory with XML_PARSE_RECOVER.  parse an XML in-memory block and build a tree. In the case the document is not Well Formed, an attempt to build a tree is tried anyway</info>
-      <return type='xmlDocPtr' info='the resulting document tree or NULL in case of error'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Callback function when doing a transition in the automata</info>
-      <return type='void'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='the regular expression context'/>
-      <arg name='token' type='const xmlChar *' info='the current token string'/>
-      <arg name='transdata' type='void *' info='transition data'/>
-      <arg name='inputdata' type='void *' info='input data'/>
-    </functype>
-    <function name='xmlRegExecErrInfo' file='xmlregexp' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Extract error information 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.'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regexp execution context generating an error'/>
-      <arg name='string' type='const xmlChar **' info='return value for the error string'/>
-      <arg name='nbval' type='int *' info='pointer to the number of accepted values IN/OUT'/>
-      <arg name='nbneg' type='int *' info='return number of negative transitions'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Extract information 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.'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regexp execution context'/>
-      <arg name='nbval' type='int *' info='pointer to the number of accepted values IN/OUT'/>
-      <arg name='nbneg' type='int *' info='return number of negative transitions'/>
-      <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' 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.'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regexp execution context or NULL to indicate the end'/>
-      <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' 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.'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regexp execution context or NULL to indicate the end'/>
-      <arg name='value' type='const xmlChar *' info='the first string token input'/>
-      <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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>Free the structures associated to a regular expression evaluation context.</info>
-      <return type='void'/>
-      <arg name='exec' type='xmlRegExecCtxtPtr' info='a regular expression evaluation context'/>
-    </function>
-    <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' 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'/>
-      <arg name='comp' type='xmlRegexpPtr' info='a precompiled regular expression'/>
-      <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' 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' 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' 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' module='xmlregexp'>
-      <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  No-op since 2.14.0.</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' module='encoding'>
-      <info>DEPRECATED: This function modifies global state and is not thread-safe.  Register the char encoding handler.</info>
-      <return type='void'/>
-      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr handler block'/>
-    </function>
-    <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' 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' module='xmlIO'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED) &amp;&amp; defined(LIBXML_HTTP_ENABLED)</cond>
-      <info>DEPRECATED: Support for HTTP POST has been removed.</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlRegisterInputCallbacks' file='xmlIO' module='xmlIO'>
-      <info>DEPRECATED: Use xmlCtxtSetResourceLoader or similar functions.  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'/>
-      <arg name='openFunc' type='xmlInputOpenCallback' info='the xmlInputOpenCallback'/>
-      <arg name='readFunc' type='xmlInputReadCallback' info='the xmlInputReadCallback'/>
-      <arg name='closeFunc' type='xmlInputCloseCallback' info='the xmlInputCloseCallback'/>
-    </function>
-    <function name='xmlRegisterNodeDefault' file='tree' module='tree'>
-      <info>DEPRECATED: don&apos;t use  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='tree' module='tree'>
-      <info>Signature for the registration callback of a created node</info>
-      <return type='void'/>
-      <arg name='node' type='xmlNodePtr' info='the current node'/>
-    </functype>
-    <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'/>
-      <arg name='matchFunc' type='xmlOutputMatchCallback' info='the xmlOutputMatchCallback'/>
-      <arg name='openFunc' type='xmlOutputOpenCallback' info='the xmlOutputOpenCallback'/>
-      <arg name='writeFunc' type='xmlOutputWriteCallback' info='the xmlOutputWriteCallback'/>
-      <arg name='closeFunc' type='xmlOutputCloseCallback' info='the xmlOutputCloseCallback'/>
-    </function>
-    <function name='xmlRelaxNGCleanupTypes' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>DEPRECATED: This function will be made private. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have call cleanup functions at all.  Cleanup the default Schemas type library associated to RelaxNG</info>
-      <return type='void'/>
-    </function>
-    <function name='xmlRelaxNGDump' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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.'/>
-      <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a Relax-NG validation context'/>
-      <arg name='err' type='xmlRelaxNGValidityErrorFunc *' info='the error callback result'/>
-      <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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Get the error and warning callback information</info>
-      <return type='int' info='-1 in case of error and 0 otherwise'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='a Relax-NG validation context'/>
-      <arg name='err' type='xmlRelaxNGValidityErrorFunc *' info='the error function result'/>
-      <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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Initialize 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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlRelaxNGSetParserStructuredErrors.  Set the callback functions used to handle errors for a validation context</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a Relax-NG validation context'/>
-      <arg name='err' type='xmlRelaxNGValidityErrorFunc' info='the error callback'/>
-      <arg name='warn' type='xmlRelaxNGValidityWarningFunc' info='the warning callback'/>
-      <arg name='ctx' type='void *' info='contextual data for the callbacks'/>
-    </function>
-    <function name='xmlRelaxNGSetParserStructuredErrors' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Set the callback functions used to handle errors for a parsing context</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a Relax-NG parser context'/>
-      <arg name='serror' type='xmlStructuredErrorFunc' info='the error callback'/>
-      <arg name='ctx' type='void *' info='contextual data for the callbacks'/>
-    </function>
-    <function name='xmlRelaxNGSetResourceLoader' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Set the callback function used to load external resources.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a Relax-NG parser context'/>
-      <arg name='loader' type='xmlResourceLoader' info='the callback'/>
-      <arg name='vctxt' type='void *' info='contextual data for the callbacks'/>
-    </function>
-    <function name='xmlRelaxNGSetValidErrors' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlRelaxNGSetValidStructuredErrors.  Set the error and warning callback information</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='a Relax-NG validation context'/>
-      <arg name='err' type='xmlRelaxNGValidityErrorFunc' info='the error function'/>
-      <arg name='warn' type='xmlRelaxNGValidityWarningFunc' info='the warning function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <function name='xmlRelaxNGSetValidStructuredErrors' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Set the structured error callback</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='a Relax-NG validation context'/>
-      <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <function name='xmlRelaxNGValidateDoc' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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.'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-    </function>
-    <function name='xmlRelaxNGValidatePopElement' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the RelaxNG validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-    </function>
-    <function name='xmlRelaxNGValidatePushCData' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the RelaxNG validation context'/>
-      <arg name='data' type='const xmlChar *' info='some character data read'/>
-      <arg name='len' type='int' info='the length of the data'/>
-    </function>
-    <function name='xmlRelaxNGValidatePushElement' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_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.'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-    </function>
-    <functype name='xmlRelaxNGValidityErrorFunc' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Signature of an error callback from a Relax-NG validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <functype name='xmlRelaxNGValidityWarningFunc' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Signature of a warning callback from a Relax-NG validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <function name='xmlRelaxParserSetFlag' file='relaxng' module='relaxng'>
-      <cond>defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Semi private function used to pass information 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' 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' module='tree'>
-      <info>Unlink and free an attribute including all children.  Note this doesn&apos;t work for namespace declarations.  The attribute must have a non-NULL parent pointer.</info>
-      <return type='int' info='0 on success or -1 if the attribute was not found or arguments are invalid.'/>
-      <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
-    </function>
-    <function name='xmlRemoveRef' file='valid' module='valid'>
-      <info>DEPRECATED, do not use. This function will be removed from the public API.  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' module='tree'>
-      <info>Unlink the old node. If @cur is provided, it is unlinked and inserted in place of @old.  It is an error if @old has no parent.  Unlike xmlAddChild, this function doesn&apos;t merge text nodes or delete duplicate attributes.  See the notes in xmlAddChild.</info>
-      <return type='xmlNodePtr' info='@old or NULL if arguments are invalid or a memory allocation failed.'/>
-      <arg name='old' type='xmlNodePtr' info='the old node'/>
-      <arg name='cur' type='xmlNodePtr' info='the node (optional)'/>
-    </function>
-    <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' 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>
-    <functype name='xmlResourceLoader' file='parser' module='parser'>
-      <info>Callback for custom resource loaders.  @flags can contain XML_INPUT_UNZIP and XML_INPUT_NETWORK.  On success, @out should be set to a new parser input object and XML_ERR_OK should be returned.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='ctxt' type='void *' info='parser context'/>
-      <arg name='url' type='const char *' info='URL to load'/>
-      <arg name='publicId' type='const char *' info='publid ID from DTD (optional)'/>
-      <arg name='type' type='xmlResourceType' info='resource type'/>
-      <arg name='flags' type='xmlParserInputFlags' info='flags'/>
-      <arg name='out' type='xmlParserInputPtr *' info='result pointer'/>
-    </functype>
-    <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)'/>
-      <arg name='elem' type='const xmlChar *' info='the name of the element'/>
-      <arg name='fullname' type='const xmlChar *' info='the attribute name'/>
-      <arg name='type' type='int' info='the attribute type'/>
-      <arg name='def' type='int' info='the type of default value'/>
-      <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' 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' 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' 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' 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)'/>
-      <arg name='name' type='const xmlChar *' info='the element name'/>
-      <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' 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' module='SAX2'>
-      <info>DEPRECATED: Don&apos;t call this function directly.  called when the end of an element has been detected.  Used for HTML and SAX1.</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' module='SAX2'>
-      <info>SAX2 callback when an element end has been detected by the parser. It provides the namespace information for the element.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
-      <arg name='localname' type='const xmlChar *' info='the local name of the element'/>
-      <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' 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)'/>
-      <arg name='name' type='const xmlChar *' info='the entity name'/>
-      <arg name='type' type='int' info='the entity type'/>
-      <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'/>
-      <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
-    </function>
-    <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)'/>
-      <arg name='name' type='const xmlChar *' info='the root element name'/>
-      <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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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='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' module='SAX2'>
-      <info>Callback on internal subset declaration.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
-      <arg name='name' type='const xmlChar *' info='the root element name'/>
-      <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' 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' 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)'/>
-      <arg name='name' type='const xmlChar *' info='The name of the notation'/>
-      <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' 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' 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' module='SAX2'>
-      <info>This is only used to load DTDs. The preferred way to install custom resolvers is xmlCtxtSetResourceLoader.</info>
-      <return type='xmlParserInputPtr' info='a parser input.'/>
-      <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' 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' 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' module='SAX2'>
-      <info>DEPRECATED: Don&apos;t call this function directly.  Called when an opening tag has been processed.  Used for HTML and SAX1.</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
-      <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' module='SAX2'>
-      <info>SAX2 callback when an element start has been detected by the parser. It provides the namespace information 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)'/>
-      <arg name='localname' type='const xmlChar *' info='the local name of the element'/>
-      <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'/>
-      <arg name='nb_namespaces' type='int' info='number of namespace definitions on that node'/>
-      <arg name='namespaces' type='const xmlChar **' info='pointer to the array of prefix/URI pairs namespace definitions'/>
-      <arg name='nb_attributes' type='int' info='the number of attributes on that node'/>
-      <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' 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)'/>
-      <arg name='name' type='const xmlChar *' info='The name of the entity'/>
-      <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'/>
-      <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
-    </function>
-    <function name='xmlSAXDefaultVersion' file='SAX2' module='SAX2'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use parser option XML_PARSE_SAX1.  Has no effect.</info>
-      <return type='int' info='2 in case of success and -1 in case of error.'/>
-      <arg name='version' type='int' info='the version, must be 2'/>
-    </function>
-    <function name='xmlSAXParseDTD' file='parser' module='parser'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlCtxtParseDtd.  Load and parse an external subset.</info>
-      <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadDoc.  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='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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <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'/>
-      <arg name='data' type='void *' info='the userdata'/>
-    </function>
-    <function name='xmlSAXParseMemory' file='parser' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
-      <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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <arg name='buffer' type='const char *' info='an pointer to a char array'/>
-      <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 no Well Formed documents'/>
-      <arg name='data' type='void *' info='the userdata'/>
-    </function>
-    <function name='xmlSAXUserParseFile' file='parser' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
-      <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' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.  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'/>
-      <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
-      <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
-      <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' 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' 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' 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' 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' 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.'/>
-      <arg name='filename' type='const char *' info='the filename (or URL)'/>
-      <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' 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.'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='an output I/O buffer'/>
-      <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 transcoding'/>
-    </function>
-    <function name='xmlSaveFinish' 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.  Available since 2.13.0.</info>
-      <return type='xmlParserErrors' info='an xmlParserErrors code.'/>
-      <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
-    </function>
-    <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' 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.'/>
-      <arg name='filename' type='const char *' info='the filename (or URL)'/>
-      <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' 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'/>
-      <arg name='filename' type='const char *' info='the filename or URL to output'/>
-      <arg name='cur' type='xmlDocPtr' info='the document being saved'/>
-      <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' 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.'/>
-      <arg name='buf' type='xmlOutputBufferPtr' info='an output I/O buffer'/>
-      <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 transcoding'/>
-      <arg name='format' type='int' info='should formatting spaces been added'/>
-    </function>
-    <function name='xmlSaveSetAttrEscape' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  Has no effect.</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' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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='xmlSaveSetIndentString' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Sets the indent string.  Available since 2.14.0.</info>
-      <return type='int' info='0 on success, -1 if the string is NULL, empty or too long.'/>
-      <arg name='ctxt' type='xmlSaveCtxtPtr' info='save context'/>
-      <arg name='indent' type='const char *' info='indent string'/>
-    </function>
-    <function name='xmlSaveToBuffer' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>Create a document saving context serializing to a buffer with the encoding and the options given</info>
-      <return type='xmlSaveCtxtPtr' info='a new serialization context or NULL in case of error.'/>
-      <arg name='buffer' type='xmlBufferPtr' info='a buffer'/>
-      <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='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.'/>
-      <arg name='fd' type='int' info='a file descriptor number'/>
-      <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' 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.'/>
-      <arg name='filename' type='const char *' info='a file name or an URL'/>
-      <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' 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.'/>
-      <arg name='iowrite' type='xmlOutputWriteCallback' info='an I/O write function'/>
-      <arg name='ioclose' type='xmlOutputCloseCallback' info='an I/O close function'/>
-      <arg name='ioctx' type='void *' info='an I/O handler'/>
-      <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' 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='cur' type='xmlNodePtr' info='the top node of the subtree to save'/>
-    </function>
-    <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='xmlSchemaCheckFacet' file='xmlschemastypes' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Checks and computes the values of facets.</info>
-      <return type='int' info='0 if valid, a positive error code if not valid and -1 in case of an internal or API error.'/>
-      <arg name='facet' type='xmlSchemaFacetPtr' info='the facet'/>
-      <arg name='typeDecl' type='xmlSchemaTypePtr' info='the schema type definition'/>
-      <arg name='pctxt' type='xmlSchemaParserCtxtPtr' info='the schema parser context or NULL'/>
-      <arg name='name' type='const xmlChar *' info='the optional name of the type'/>
-    </function>
-    <function name='xmlSchemaCleanupTypes' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>DEPRECATED: This function will be made private. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don&apos;t have to call cleanup functions at all.  Cleanup the default XML Schemas type library</info>
-      <return type='void'/>
-    </function>
-    <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' 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' 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='xws' type='xmlSchemaWhitespaceValueType' info='the whitespace value of x'/>
-      <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' 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' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED) &amp;&amp; defined(LIBXML_DEBUG_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' 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' 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' 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' 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' 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' 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' 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' 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' 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' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Get the canonical 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;.  TODO: XML Schema 1.0 does not define canonical representations for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay, anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.</info>
-      <return type='int' info='0 if the value could be built, 1 if the value type is not supported yet 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='xmlSchemaGetCanonValueWhtsp' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Get the canonical representation of the value. The caller has to free the returned @retValue.</info>
-      <return type='int' info='0 if the value could be built, 1 if the value type is not supported yet 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'/>
-      <arg name='ws' type='xmlSchemaWhitespaceValueType' info='the whitespace type of the value'/>
-    </function>
-    <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' 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'/>
-      <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='a XMl-Schema parser context'/>
-      <arg name='err' type='xmlSchemaValidityErrorFunc *' info='the error callback result'/>
-      <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' 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='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 information</info>
-      <return type='int' info='-1 in case of error and 0 otherwise'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a XML-Schema validation context'/>
-      <arg name='err' type='xmlSchemaValidityErrorFunc *' info='the error function result'/>
-      <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' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Initialize the default XML Schemas type library</info>
-      <return type='int' info='0 on success, -1 on error.'/>
-    </function>
-    <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='xmlSchemaIsValid' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Check if any error was detected during validation.</info>
-      <return type='int' info='1 if valid so far, 0 if errors were detected, and -1 in case of internal error.'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='the schema validation context'/>
-    </function>
-    <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' 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' 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' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Allocate a new NOTATION value. The given values are consumed and freed with the struct.</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' 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='xmlSchemaNewQNameValue' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Allocate a new QName value. The given values are consumed and freed with the struct.</info>
-      <return type='xmlSchemaValPtr' info='a pointer to the new value or NULL in case of an error.'/>
-      <arg name='namespaceName' type='const xmlChar *' info='the namespace name'/>
-      <arg name='localName' type='const xmlChar *' info='the local name'/>
-    </function>
-    <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. The given value is consumed and freed with the struct.</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' 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' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</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='xmlSchemaSAXPlug' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Plug a SAX based validation layer in a SAX parsing event flow. The original @saxptr and @dataptr data are replaced by new pointers but the calls to the original will be maintained.</info>
-      <return type='xmlSchemaSAXPlugPtr' info='a pointer to a data structure needed to unplug the validation layer or NULL in case of errors.'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
-      <arg name='sax' type='xmlSAXHandlerPtr *' info='a pointer to the original xmlSAXHandlerPtr'/>
-      <arg name='user_data' type='void **' info='a pointer to the original SAX user data pointer'/>
-    </function>
-    <function name='xmlSchemaSAXUnplug' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Unplug a SAX based validation layer in a SAX parsing event flow. The original pointers used in the call are restored.</info>
-      <return type='int' info='0 in case of success and -1 in case of failure.'/>
-      <arg name='plug' type='xmlSchemaSAXPlugPtr' info='a data structure returned by xmlSchemaSAXPlug'/>
-    </function>
-    <function name='xmlSchemaSetParserErrors' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlSchemaSetParserStructuredErrors.  Set the callback functions used to handle errors for a validation context</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='a schema validation context'/>
-      <arg name='err' type='xmlSchemaValidityErrorFunc' info='the error callback'/>
-      <arg name='warn' type='xmlSchemaValidityWarningFunc' info='the warning callback'/>
-      <arg name='ctx' type='void *' info='contextual data for the callbacks'/>
-    </function>
-    <function name='xmlSchemaSetParserStructuredErrors' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Set the structured error callback</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='a schema parser context'/>
-      <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <function name='xmlSchemaSetResourceLoader' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Register a callback function that will be called to load documents or external entities.  Available since 2.14.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='schema parser'/>
-      <arg name='loader' type='xmlResourceLoader' info='resource loader'/>
-      <arg name='data' type='void *' info='user data which will be passed to the loader'/>
-    </function>
-    <function name='xmlSchemaSetValidErrors' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlSchemaSetValidStructuredErrors.  Set the error and warning callback information</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
-      <arg name='err' type='xmlSchemaValidityErrorFunc' info='the error function'/>
-      <arg name='warn' type='xmlSchemaValidityWarningFunc' info='the warning function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <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='xmlSchemaSetValidStructuredErrors' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Set the structured error callback</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
-      <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <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.'/>
-      <arg name='type' type='xmlSchemaTypePtr' info='the predefined type'/>
-      <arg name='value' type='const xmlChar *' info='the value to check'/>
-      <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' 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.'/>
-      <arg name='type' type='xmlSchemaTypePtr' info='the predefined type'/>
-      <arg name='value' type='const xmlChar *' info='the value to check'/>
-      <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' 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='xmlSchemaValidCtxtGetParserCtxt' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>allow access to the parser context of the schema validation context</info>
-      <return type='xmlParserCtxtPtr' info='the parser context of the schema validation context or NULL in case of error.'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
-    </function>
-    <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' 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.'/>
-      <arg name='base' type='xmlSchemaTypePtr' info='the base type'/>
-      <arg name='facet' type='xmlSchemaFacetPtr' info='the facet to check'/>
-      <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='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='xmlSchemaValidateFile' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Do a schemas validation of the given resource, it will use the SAX streamable validation internally.</info>
-      <return type='int' info='0 if the document 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='filename' type='const char *' info='the URI of the instance'/>
-      <arg name='options' type='int' info='a future set of options, currently unused'/>
-    </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'/>
-      <arg name='facet' type='xmlSchemaFacetPtr' info='the facet to check'/>
-      <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'/>
-    </function>
-    <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'/>
-      <arg name='value' type='const xmlChar *' info='the lexical repr of the value to validate'/>
-      <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' 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' 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.'/>
-      <arg name='type' type='xmlSchemaTypePtr' info='the predefined type'/>
-      <arg name='value' type='const xmlChar *' info='the value to check'/>
-      <arg name='val' type='xmlSchemaValPtr *' info='the return computed value'/>
-    </function>
-    <function name='xmlSchemaValidateSetFilename' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Workaround to provide file error reporting information when this is not provided by current APIs</info>
-      <return type='void'/>
-      <arg name='vctxt' type='xmlSchemaValidCtxtPtr' info='the schema validation context'/>
-      <arg name='filename' type='const char *' info='the file name'/>
-    </function>
-    <function name='xmlSchemaValidateSetLocator' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Allows to set a locator function to the validation context, which will be used to provide file and line information since those are not provided as part of the SAX validation flow Setting @f to NULL disable the locator.</info>
-      <return type='void'/>
-      <arg name='vctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
-      <arg name='f' type='xmlSchemaValidityLocatorFunc' info='the locator function pointer'/>
-      <arg name='ctxt' type='void *' info='the locator context'/>
-    </function>
-    <function name='xmlSchemaValidateStream' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Validate an input based on a flow of SAX event from the parser and forward the events to the @sax handler with the provided @user_data the user provided @sax handler must be a SAX2 one.</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='input' type='xmlParserInputBufferPtr' info='the input to use for reading the data'/>
-      <arg name='enc' type='xmlCharEncoding' info='an optional encoding information'/>
-      <arg name='sax' type='const xmlSAXHandler *' 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' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Signature of an error callback from an XSD validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <functype name='xmlSchemaValidityLocatorFunc' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>A schemas validation locator, a callback called by the validator. This is used when file or node information are not available to find out what file and line number are affected</info>
-      <return type='int' info='0 in case of success and -1 in case of error'/>
-      <arg name='ctx' type='void *' info='user provided context'/>
-      <arg name='file' type='const char **' info='returned file information'/>
-      <arg name='line' type='unsigned long *' info='returned line information'/>
-    </functype>
-    <functype name='xmlSchemaValidityWarningFunc' file='xmlschemas' module='xmlschemas'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Signature of a warning callback from an XSD validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <function name='xmlSchemaValueAppend' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Appends a next sibling to a list of computed values.</info>
-      <return type='int' info='0 if succeeded and -1 on API errors.'/>
-      <arg name='prev' type='xmlSchemaValPtr' info='the value'/>
-      <arg name='cur' type='xmlSchemaValPtr' info='the value to be appended'/>
-    </function>
-    <function name='xmlSchemaValueGetAsBoolean' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Accessor for the boolean value of a computed value.</info>
-      <return type='int' info='1 if true and 0 if false, or in case of an error. Hmm.'/>
-      <arg name='val' type='xmlSchemaValPtr' info='the value'/>
-    </function>
-    <function name='xmlSchemaValueGetAsString' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Accessor for the string value of a computed value.</info>
-      <return type='const xmlChar *' info='the string value or NULL if there was none, or on API errors.'/>
-      <arg name='val' type='xmlSchemaValPtr' info='the value'/>
-    </function>
-    <function name='xmlSchemaValueGetNext' file='xmlschemastypes' module='xmlschemastypes'>
-      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Accessor for the next sibling of a list of computed values.</info>
-      <return type='xmlSchemaValPtr' info='the next value or NULL if there was none, or on API errors.'/>
-      <arg name='cur' type='xmlSchemaValPtr' info='the value'/>
-    </function>
-    <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='xmlSchematronFree' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Deallocate a Schematron structure.</info>
-      <return type='void'/>
-      <arg name='schema' type='xmlSchematronPtr' info='a schema structure'/>
-    </function>
-    <function name='xmlSchematronFreeParserCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Free the resources associated to the schema parser context</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchematronParserCtxtPtr' info='the schema parser context'/>
-    </function>
-    <function name='xmlSchematronFreeValidCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Free the resources associated to the schema validation context</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchematronValidCtxtPtr' info='the schema validation context'/>
-    </function>
-    <function name='xmlSchematronNewDocParserCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Create an XML Schematrons parse context for that document. NB. The document may be modified during the parsing process.</info>
-      <return type='xmlSchematronParserCtxtPtr' info='the parser context or NULL in case of error'/>
-      <arg name='doc' type='xmlDocPtr' info='a preparsed document tree'/>
-    </function>
-    <function name='xmlSchematronNewMemParserCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Create an XML Schematrons parse context for that memory buffer expected to contain an XML Schematrons file.</info>
-      <return type='xmlSchematronParserCtxtPtr' 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='xmlSchematronNewParserCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Create an XML Schematrons parse context for that file/resource expected to contain an XML Schematrons file.</info>
-      <return type='xmlSchematronParserCtxtPtr' 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='xmlSchematronNewValidCtxt' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Create an XML Schematrons validation context based on the given schema.</info>
-      <return type='xmlSchematronValidCtxtPtr' info='the validation context or NULL in case of error'/>
-      <arg name='schema' type='xmlSchematronPtr' info='a precompiled XML Schematrons'/>
-      <arg name='options' type='int' info='a set of xmlSchematronValidOptions'/>
-    </function>
-    <function name='xmlSchematronParse' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>parse a schema definition resource and build an internal XML Schema structure which can be used to validate instances.</info>
-      <return type='xmlSchematronPtr' info='the internal XML Schematron structure built from the resource or NULL in case of error'/>
-      <arg name='ctxt' type='xmlSchematronParserCtxtPtr' info='a schema validation context'/>
-    </function>
-    <function name='xmlSchematronSetValidStructuredErrors' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Set the structured error callback</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlSchematronValidCtxtPtr' info='a Schematron validation context'/>
-      <arg name='serror' type='xmlStructuredErrorFunc' info='the structured error function'/>
-      <arg name='ctx' type='void *' info='the functions context'/>
-    </function>
-    <function name='xmlSchematronValidateDoc' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Validate a tree instance against the schematron</info>
-      <return type='int' info='0 in case of success, -1 in case of internal error and an error count otherwise.'/>
-      <arg name='ctxt' type='xmlSchematronValidCtxtPtr' info='the schema validation context'/>
-      <arg name='instance' type='xmlDocPtr' info='the document instance tree'/>
-    </function>
-    <functype name='xmlSchematronValidityErrorFunc' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Signature of an error callback from a Schematron validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <functype name='xmlSchematronValidityWarningFunc' file='schematron' module='schematron'>
-      <cond>defined(LIBXML_SCHEMATRON_ENABLED)</cond>
-      <info>Signature of a warning callback from a Schematron validation</info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info='the validation context'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='...' type='...' info='extra arguments'/>
-    </functype>
-    <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 if no namespace was found or a memory allocation failed. Allocations can only fail if the &quot;xml&quot; namespace is queried.'/>
-      <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' 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 if no namespace was found or a memory allocation failed. Allocations can only fail if the &quot;xml&quot; namespace is queried.'/>
-      <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' module='buf'>
-      <info>DEPRECATED: Use xmlBufferSetAllocationScheme.  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' module='tree'>
-      <info>DEPRECATED: Use xmlSetDocCompressMode  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' 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='xmlSetExternalEntityLoader' file='parser' module='parserInternals'>
-      <info>DEPRECATED: This is a global setting and not thread-safe. Use xmlCtxtSetResourceLoader or similar functions.  Changes the default external entity resolver function for the application.</info>
-      <return type='void'/>
-      <arg name='f' type='xmlExternalEntityLoader' info='the new entity resolver function'/>
-    </function>
-    <function name='xmlSetGenericErrorFunc' file='xmlerror' module='error'>
-      <info>DEPRECATED: See xmlSetStructuredErrorFunc for alternatives.  Set the global &quot;generic&quot; handler and context for error messages. The generic error handler will only receive fragments of error messages which should be concatenated or printed to a stream.  If handler is NULL, use the built-in default handler which prints to stderr.  Since this is a global setting, it&apos;s a good idea to reset the error handler to its default value after collecting the errors you&apos;re interested in.  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' module='tree'>
-      <info>Associate all subtrees in @list with a new document.  Internal function, see xmlSetTreeDoc.</info>
-      <return type='int' info='0 on success. If a memory allocation fails, returns -1. All subtrees will be updated on failure but some strings may be lost.'/>
-      <arg name='list' type='xmlNodePtr' info='a node list'/>
-      <arg name='doc' type='xmlDocPtr' info='new document'/>
-    </function>
-    <function name='xmlSetNs' file='tree' module='tree'>
-      <info>Set the namespace of an element or attribute node. Passing a NULL namespace unsets the namespace.</info>
-      <return type='void'/>
-      <arg name='node' type='xmlNodePtr' info='a node in the document'/>
-      <arg name='ns' type='xmlNsPtr' info='a namespace pointer (optional)'/>
-    </function>
-    <function name='xmlSetNsProp' file='tree' module='tree'>
-      <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.'/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-      <arg name='ns' type='xmlNsPtr' info='the namespace definition'/>
-      <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' module='tree'>
-      <info>Set (or reset) an attribute carried by a node. If @name has a prefix, then the corresponding namespace-binding will be used, if in scope; it is an error it there&apos;s no such ns-binding for the prefix in scope.</info>
-      <return type='xmlAttrPtr' info='the attribute pointer.'/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name (a QName)'/>
-      <arg name='value' type='const xmlChar *' info='the attribute value'/>
-    </function>
-    <function name='xmlSetStructuredErrorFunc' file='xmlerror' module='error'>
-      <info>DEPRECATED: Use a per-context error handler.  It&apos;s recommended to use the per-context error handlers instead:  - xmlCtxtSetErrorHandler (since 2.13.0) - xmlTextReaderSetStructuredErrorHandler - xmlXPathSetErrorHandler (since 2.13.0) - xmlXIncludeSetErrorHandler (since 2.13.0) - xmlSchemaSetParserStructuredErrors - xmlSchemaSetValidStructuredErrors - xmlRelaxNGSetParserStructuredErrors - xmlRelaxNGSetValidStructuredErrors  Set the global &quot;structured&quot; handler and context for error messages. If handler is NULL, the error handler is deactivated.  The structured error handler takes precedence over &quot;generic&quot; handlers, even per-context generic handlers.  Since this is a global setting, it&apos;s a good idea to deactivate the error handler after collecting the errors you&apos;re interested in.  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' module='tree'>
-      <info>This is an internal function which shouldn&apos;t be used. It is invoked by functions like xmlAddChild, xmlAddSibling or xmlReplaceNode. @tree must be the root node of an unlinked subtree.  Associate all nodes in a tree with a new document.  Also copy strings from the old document&apos;s dictionary and remove ID attributes from the old ID table.</info>
-      <return type='int' info='0 on success. If a memory allocation fails, returns -1. The whole tree will be updated on failure but some strings may be lost.'/>
-      <arg name='tree' type='xmlNodePtr' info='root of a subtree'/>
-      <arg name='doc' type='xmlDocPtr' info='new document'/>
-    </function>
-    <function name='xmlSetupParserForBuffer' file='parser' module='parser'>
-      <cond>defined(LIBXML_SAX1_ENABLED)</cond>
-      <info>DEPRECATED: Don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
-      <arg name='buffer' type='const xmlChar *' info='a xmlChar * buffer'/>
-      <arg name='filename' type='const char *' info='a file name'/>
-    </function>
-    <function name='xmlSkipBlankChars' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, do not use.  Skip whitespace in the input stream.</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' module='valid'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='size' type='int' info='the buffer size'/>
-      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
-      <arg name='englob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
-    </function>
-    <function name='xmlSplitQName' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Don&apos;t use.  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='prefixOut' type='xmlChar **' info='a xmlChar **'/>
-    </function>
-    <function name='xmlSplitQName2' file='tree' module='tree'>
-      <info>DEPRECATED: This function doesn&apos;t report malloc failures.  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 the name doesn&apos;t have a prefix. Otherwise, returns the local part, and prefix is updated to get the Prefix. Both the return value and the prefix must be freed by the caller.'/>
-      <arg name='name' type='const xmlChar *' info='the full QName'/>
-      <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
-    </function>
-    <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 length in byte of the prefix and return a pointer to the start of the name without the prefix'/>
-      <arg name='name' type='const xmlChar *' info='the full QName'/>
-      <arg name='len' type='int *' info='an int *'/>
-    </function>
-    <function name='xmlSprintfElementContent' file='valid' module='valid'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Deprecated, unsafe, use xmlSnprintfElementContent</info>
-      <return type='void'/>
-      <arg name='buf' type='char *' info='an output buffer'/>
-      <arg name='content' type='xmlElementContentPtr' info='An element table'/>
-      <arg name='englob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
-    </function>
-    <function name='xmlStopParser' file='parser' module='parser'>
-      <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' module='xmlstring'>
-      <info>Check if both strings are equal of have same content. Should be a bit more readable and faster than xmlStrcmp()</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' 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.'/>
-      <arg name='len' type='int' info='the result buffer length.'/>
-      <arg name='msg' type='const char *' info='the message with printf formatting.'/>
-      <arg name='...' type='...' info='extra parameters for the message.'/>
-    </function>
-    <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' 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.'/>
-      <arg name='len' type='int' info='the result buffer length.'/>
-      <arg name='msg' type='const char *' info='the message with printf formatting.'/>
-      <arg name='ap' type='va_list' info='extra parameters for the message.'/>
-    </function>
-    <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' 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='const xmlChar *' info='the xmlChar to search (needle)'/>
-    </function>
-    <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. The original @cur is reallocated 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'/>
-    </function>
-    <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' 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' 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' 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' 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' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Otherwise the function will act as if it has been given an element-node.</info>
-      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
-      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
-      <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' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Push new attribute data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Otherwise the function will act as if it has been given an attribute-node.</info>
-      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
-      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
-      <arg name='name' type='const xmlChar *' info='the current name'/>
-      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
-    </function>
-    <function name='xmlStreamPushNode' file='pattern' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionary, 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. Different from xmlStreamPush() this function can be fed with nodes of type: element-, attribute-, text-, cdata-section-, comment- and processing-instruction-node.</info>
-      <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
-      <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
-      <arg name='name' type='const xmlChar *' info='the current name'/>
-      <arg name='ns' type='const xmlChar *' info='the namespace name'/>
-      <arg name='nodeType' type='int' info='the type of the node being pushed'/>
-    </function>
-    <function name='xmlStreamWantsAnyNode' file='pattern' module='pattern'>
-      <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
-      <info>Query if the streaming pattern additionally needs to be fed with text-, cdata-section-, comment- and processing-instruction-nodes. If the result is 0 then only element-nodes and attribute-nodes need to be pushed.</info>
-      <return type='int' info='1 in case of need of nodes of the above described types, 0 otherwise. -1 on API errors.'/>
-      <arg name='streamCtxt' type='xmlStreamCtxtPtr' info='the stream context'/>
-    </function>
-    <function name='xmlStringCurrentChar' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Internal function, do not use.  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' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</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'/>
-      <arg name='str' type='const xmlChar *' info='the input string'/>
-      <arg name='what' type='int' info='combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF'/>
-      <arg name='end' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
-      <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' module='tree'>
-      <info>DEPRECATED: Use xmlNodeSetContent.  Parse an attribute value and build a node list containing only text and entity reference nodes. The resulting nodes will be associated with the document if provided. The document is also used to look up entities.  The input is not validated. Syntax errors or references to undeclared entities will be ignored silently with unspecified results.</info>
-      <return type='xmlNodePtr' info='a pointer to the first child or NULL if the value if empty or a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='a document (optional)'/>
-      <arg name='value' type='const xmlChar *' info='an attribute value'/>
-    </function>
-    <function name='xmlStringLenDecodeEntities' file='parserInternals' module='parser'>
-      <info>DEPRECATED: Internal function, don&apos;t use.</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'/>
-      <arg name='str' type='const xmlChar *' info='the input string'/>
-      <arg name='len' type='int' info='the string length'/>
-      <arg name='what' type='int' info='combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF'/>
-      <arg name='end' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
-      <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' module='tree'>
-      <info>DEPRECATED: Use xmlNodeSetContentLen.  See xmlStringGetNodeList.</info>
-      <return type='xmlNodePtr' info='a pointer to the first child or NULL if the value if empty or a memory allocation failed.'/>
-      <arg name='doc' type='const xmlDoc *' info='a document (optional)'/>
-      <arg name='value' type='const xmlChar *' info='an attribute value'/>
-      <arg name='len' type='int' info='maximum length of the attribute value'/>
-    </function>
-    <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' 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' module='xmlstring'>
-      <info>a strncat for array of xmlChar&apos;s, it will extend @cur with the len first bytes of @add. Note that if @len &lt; 0 then this is an API error and NULL will be returned.</info>
-      <return type='xmlChar *' info='a new xmlChar *, the original @cur is reallocated 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' module='xmlstring'>
-      <info>same as xmlStrncat, but creates a new string.  The original two strings are not freed. If @len is &lt; 0 then the length will be calculated automatically.</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 or &lt; 0'/>
-    </function>
-    <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' 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' 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' 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' 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='const xmlError *' info='the error being raised.'/>
-    </functype>
-    <function name='xmlSubstituteEntitiesDefault' file='parser' module='parserInternals'>
-      <info>DEPRECATED: Use the modern options API with XML_PARSE_NOENT.  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' module='parserInternals'>
-      <info>Use encoding specified by enum to decode input data. This overrides the encoding found in the XML declaration.  This function can also be used to override the encoding of chunks passed to xmlParseChunk.</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='xmlSwitchEncodingName' file='parserInternals' module='parserInternals'>
-      <info>Use specified encoding to decode input data. This overrides the encoding found in the XML declaration.  This function can also be used to override the encoding of chunks passed to xmlParseChunk.  Available since 2.13.0.</info>
-      <return type='int' info='0 in case of success, -1 otherwise'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='encoding' type='const char *' info='the encoding name'/>
-    </function>
-    <function name='xmlSwitchInputEncoding' file='parserInternals' module='parserInternals'>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Use encoding handler to decode input data.</info>
-      <return type='int' info='0 in case of success, -1 otherwise'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context, only for error reporting'/>
-      <arg name='input' type='xmlParserInputPtr' info='the input stream'/>
-      <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
-    </function>
-    <function name='xmlSwitchToEncoding' file='parserInternals' module='parserInternals'>
-      <info>Use encoding handler to decode input data.  This function can be used to enforce the encoding of chunks passed to xmlParseChunk.</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' module='tree'>
-      <info>Concat the given string at the end of the existing node content.  If @len is -1, the string length will be calculated.</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' module='tree'>
-      <info>Merge the second text node into the first. If @first is NULL, @second is returned. Otherwise, the second node is unlinked and freed.</info>
-      <return type='xmlNodePtr' info='the first text node augmented or NULL in case of error.'/>
-      <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' 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' 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, if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <function name='xmlTextReaderByteConsumed' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>DEPRECATED: The returned value is mostly random and useless. It reflects the parser reading ahead and is in no way related to the current node.  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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Hacking interface allowing to get the xmlDocPtr corresponding 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Hacking interface allowing to get the xmlNodePtr corresponding 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' 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Signature of an error callback from a reader parser</info>
-      <return type='void'/>
-      <arg name='arg' type='void *' info='the user argument'/>
-      <arg name='msg' type='const char *' info='the message'/>
-      <arg name='severity' type='xmlParserSeverities' info='the severity of the error'/>
-      <arg name='locator' type='xmlTextReaderLocatorPtr' info='a locator indicating where the error occurred'/>
-    </functype>
-    <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' 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' 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' 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.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Retrieve the error callback function and user argument.</info>
-      <return type='void'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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='xmlTextReaderGetLastError' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Available since 2.13.0.</info>
-      <return type='const xmlError *' info='the last error.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-    </function>
-    <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' 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' 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' 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 progressed 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' 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' 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' 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' 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' 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' 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' 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, if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <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, if non NULL it need to be freed by the caller.'/>
-      <arg name='locator' type='xmlTextReaderLocatorPtr' info='the xmlTextReaderLocatorPtr used'/>
-    </function>
-    <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' 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' 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' 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' 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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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' 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' 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' 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' 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, if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <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, if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <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' 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Get the node type of the current node Reference: http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html</info>
-      <return type='int' info='the xmlReaderTypes 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' 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 behaviour 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' 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, if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <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' 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 non-negative number in case of success and -1 in case of error'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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' 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' 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' 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 positioned on an attribute 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_WRITER_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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_WRITER_ENABLED)</cond>
-      <info>Reads the contents of the current node, including child nodes and markup.</info>
-      <return type='xmlChar *' info='a string containing the node and any XML content, or NULL if the current node cannot be serialized. The string must be deallocated by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <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' 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 non-empty Element or Text node (including CDATA sections), 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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_RELAXNG_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 deactivated. @ 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 (de)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' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Use RelaxNG schema to validate the document as it is processed. Activation is only possible before the first Read(). If @rng is NULL, then RelaxNG schema validation is deactivated.</info>
-      <return type='int' info='0 in case the schemas validation could be (de)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='xmlTextReaderRelaxNGValidateCtxt' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_RELAXNG_ENABLED)</cond>
-      <info>Use RelaxNG schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then RelaxNG schema validation is deactivated.</info>
-      <return type='int' info='0 in case the schemas validation could be (de)activated and -1 in case of error.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the RelaxNG schema validation context or NULL'/>
-      <arg name='options' type='int' info='options (not used yet)'/>
-    </function>
-    <function name='xmlTextReaderSchemaValidate' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Use W3C XSD schema to validate the document as it is processed. Activation is only possible before the first Read(). If @xsd is NULL, then XML Schema validation is deactivated.</info>
-      <return type='int' info='0 in case the schemas validation could be (de)activated and -1 in case of error.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <arg name='xsd' type='const char *' info='the path to a W3C XSD schema or NULL'/>
-    </function>
-    <function name='xmlTextReaderSchemaValidateCtxt' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Use W3C XSD schema context to validate the document as it is processed. Activation is only possible before the first Read(). If @ctxt is NULL, then XML Schema validation is deactivated.</info>
-      <return type='int' info='0 in case the schemas validation could be (de)activated and -1 in case of error.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='the XML Schema validation context or NULL'/>
-      <arg name='options' type='int' info='options (not used yet)'/>
-    </function>
-    <function name='xmlTextReaderSetErrorHandler' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>DEPRECATED: Use xmlTextReaderSetStructuredErrorHandler.  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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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='xmlTextReaderSetMaxAmplification' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Set the maximum amplification factor. See xmlCtxtSetMaxAmplification.</info>
-      <return type='void'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
-      <arg name='maxAmpl' type='unsigned' info='maximum amplification factor'/>
-    </function>
-    <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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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='xmlTextReaderSetResourceLoader' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Register a callback function that will be called to load external resources like entities.  Available since 2.14.0.</info>
-      <return type='void'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='thr reader'/>
-      <arg name='loader' type='xmlResourceLoader' info='resource loader'/>
-      <arg name='data' type='void *' info='user data which will be passed to the loader'/>
-    </function>
-    <function name='xmlTextReaderSetSchema' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Use XSD Schema to validate the document as it is processed. Activation is only possible before the first Read(). if @schema is NULL, then Schema validation is deactivated. 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 Schema validation could be (de)activated and -1 in case of error.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <arg name='schema' type='xmlSchemaPtr' info='a precompiled Schema schema'/>
-    </function>
-    <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'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-      <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='xmlTextReaderSetup' file='xmlreader' module='xmlreader'>
-      <cond>defined(LIBXML_READER_ENABLED)</cond>
-      <info>Setup an XML reader with new options</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='input' type='xmlParserInputBufferPtr' info='xmlParserInputBufferPtr used to feed the reader, will be destroyed with it.'/>
-      <arg name='URL' type='const char *' info='the base URL to use for the document'/>
-      <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='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' 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' 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., if non NULL it need to be freed by the caller.'/>
-      <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
-    </function>
-    <function name='xmlTextWriterClose' file='xmlwriter' module='xmlwriter'>
-      <cond>defined(LIBXML_WRITER_ENABLED)</cond>
-      <info>Flushes and closes the output buffer.  Available since 2.13.0.</info>
-      <return type='int' info='an xmlParserErrors code.'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-    </function>
-    <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' 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' module='xmlwriter'>
-      <cond>defined(LIBXML_WRITER_ENABLED)</cond>
-      <info>End the current 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='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' 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' 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' 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' module='xmlwriter'>
-      <cond>defined(LIBXML_WRITER_ENABLED)</cond>
-      <info>End an xml document. All open elements are closed, and the content is flushed to the output.</info>
-      <return type='int' info='the bytes written or -1 in case of error'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-    </function>
-    <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' 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' 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' 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' 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' 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='xmlTextWriterSetQuoteChar' file='xmlwriter' module='xmlwriter'>
-      <cond>defined(LIBXML_WRITER_ENABLED)</cond>
-      <info>Set the character used for quoting attributes.</info>
-      <return type='int' info='-1 on error or 0 otherwise.'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='quotechar' type='xmlChar' info='the quote character'/>
-    </function>
-    <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix or NULL'/>
-      <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' 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' 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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD'/>
-      <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' 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' 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' 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='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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='version' type='const char *' info='the xml version (&quot;1.0&quot;) or NULL for default (&quot;1.0&quot;)'/>
-      <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' 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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix or NULL'/>
-      <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' 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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='attribute name'/>
-      <arg name='content' type='const xmlChar *' info='attribute content'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='attribute local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <arg name='content' type='const xmlChar *' info='attribute content'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='data' type='const char *' info='binary data'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='data' type='const char *' info='binary data'/>
-      <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' 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' 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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD'/>
-      <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'/>
-      <arg name='subset' type='const xmlChar *' info='string content of the DTD'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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 entity'/>
-      <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'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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 entity'/>
-      <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'/>
-      <arg name='ndataid' type='const xmlChar *' info='the xml notation name.'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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'/>
-      <arg name='ndataid' type='const xmlChar *' info='the xml notation name.'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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 entity'/>
-      <arg name='content' type='const xmlChar *' info='content of the entity'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the xml notation'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='element name'/>
-      <arg name='content' type='const xmlChar *' info='element content'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='element local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <arg name='content' type='const xmlChar *' info='element content'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='attribute name'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='attribute local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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='format' type='const char *' info='format string (see printf)'/>
-      <arg name='...' type='...' info='extra parameters for the format'/>
-    </function>
-    <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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD'/>
-      <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'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD ATTLIST'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD element'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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 entity'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='element name'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='element local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='target' type='const xmlChar *' info='PI target'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='target' type='const xmlChar *' info='PI target'/>
-      <arg name='content' type='const xmlChar *' info='PI content'/>
-    </function>
-    <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='attribute name'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='attribute local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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='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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD'/>
-      <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'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD ATTLIST'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='the name of the DTD element'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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 entity'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='name' type='const xmlChar *' info='element name'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='prefix' type='const xmlChar *' info='namespace prefix'/>
-      <arg name='name' type='const xmlChar *' info='element local name'/>
-      <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <arg name='target' type='const xmlChar *' info='PI target'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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' 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'/>
-      <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
-      <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='xmlThrDefDeregisterNodeDefault' file='tree' module='tree'>
-      <info></info>
-      <return type='xmlDeregisterNodeFunc' info=''/>
-      <arg name='func' type='xmlDeregisterNodeFunc' info=''/>
-    </function>
-    <function name='xmlThrDefDoValidityCheckingDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefGetWarningsDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefIndentTreeOutput' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefKeepBlanksDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefLineNumbersDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefLoadExtDtdDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefOutputBufferCreateFilenameDefault' file='xmlIO' module='xmlIO'>
-      <info></info>
-      <return type='xmlOutputBufferCreateFilenameFunc' info=''/>
-      <arg name='func' type='xmlOutputBufferCreateFilenameFunc' info=''/>
-    </function>
-    <function name='xmlThrDefParserInputBufferCreateFilenameDefault' file='xmlIO' module='xmlIO'>
-      <info></info>
-      <return type='xmlParserInputBufferCreateFilenameFunc' info=''/>
-      <arg name='func' type='xmlParserInputBufferCreateFilenameFunc' info=''/>
-    </function>
-    <function name='xmlThrDefPedanticParserDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefRegisterNodeDefault' file='tree' module='tree'>
-      <info></info>
-      <return type='xmlRegisterNodeFunc' info=''/>
-      <arg name='func' type='xmlRegisterNodeFunc' info=''/>
-    </function>
-    <function name='xmlThrDefSaveNoEmptyTags' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefSetGenericErrorFunc' file='xmlerror' module='xmlerror'>
-      <info></info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info=''/>
-      <arg name='handler' type='xmlGenericErrorFunc' info=''/>
-    </function>
-    <function name='xmlThrDefSetStructuredErrorFunc' file='xmlerror' module='xmlerror'>
-      <info></info>
-      <return type='void'/>
-      <arg name='ctx' type='void *' info=''/>
-      <arg name='handler' type='xmlStructuredErrorFunc' info=''/>
-    </function>
-    <function name='xmlThrDefSubstituteEntitiesDefaultValue' file='parser' module='parser'>
-      <info></info>
-      <return type='int' info=''/>
-      <arg name='v' type='int' info=''/>
-    </function>
-    <function name='xmlThrDefTreeIndentString' file='xmlsave' module='xmlsave'>
-      <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
-      <info></info>
-      <return type='const char *' info=''/>
-      <arg name='v' type='const char *' info=''/>
-    </function>
-    <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' module='uri'>
-      <info>This routine escapes a string to hex, ignoring unreserved characters a-z, A-Z, 0-9, &quot;-._~&quot;, a few sub-delims &quot;!*&apos;()&quot;, the gen-delim &quot;@&quot; (why?) 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' module='uri'>
-      <info>Unescaping routine, but does not check that the string is an URI. The output is a direct unsigned char translation of %XX values (no encoding) Note that the length of the result can only be smaller or same size as the input string.</info>
-      <return type='char *' info='a copy of the string, but unescaped, will return NULL only in case of error'/>
-      <arg name='str' type='const char *' info='the string to unescape'/>
-      <arg name='len' type='int' info='the length in bytes to unescape (or &lt;= 0 to indicate full string)'/>
-      <arg name='target' type='char *' info='optional destination buffer'/>
-    </function>
-    <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' 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' 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' 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' 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' 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' module='xmlstring'>
-      <info>storage size of an UTF8 string the behaviour is not guaranteed 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' 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 the start index is out of bounds or a memory allocation failed. If len is too large, the result is truncated.'/>
-      <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='xmlUTF8ToIsolat1' 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 or an XML_ENC_ERR code.  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 produced.'/>
-      <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
-      <arg name='outlen' type='int *' info='the length of @out'/>
-      <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='xmlUnlinkNode' file='tree' module='tree'>
-      <info>Unlink a node from its tree.  The node is not freed. Unless it is reinserted, it must be managed manually and freed eventually by calling xmlFreeNode.</info>
-      <return type='void'/>
-      <arg name='cur' type='xmlNodePtr' info='the node'/>
-    </function>
-    <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' module='tree'>
-      <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='ns' type='xmlNsPtr' info='the namespace definition'/>
-      <arg name='name' type='const xmlChar *' info='the attribute name'/>
-    </function>
-    <function name='xmlUnsetProp' file='tree' module='tree'>
-      <info>Remove an attribute carried by a node. This handles only attributes in no namespace.</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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  (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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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.'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context or NULL'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='elem' type='xmlNodePtr' info='the parent'/>
-      <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' 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.'/>
-      <arg name='ctree' type='xmlElementContent *' info='an element content tree'/>
-      <arg name='names' type='const xmlChar **' info='an array to store the list of child names'/>
-      <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' 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.'/>
-      <arg name='prev' type='xmlNode *' info='an element to insert after'/>
-      <arg name='next' type='xmlNode *' info='an element to insert next'/>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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.'/>
-      <arg name='doc' type='xmlDocPtr' info='the document'/>
-      <arg name='elem' type='xmlNodePtr' info='the parent'/>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='attr' type='xmlAttributePtr' info='an attribute definition'/>
-    </function>
-    <function name='xmlValidateAttributeValue' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: This function can&apos;t report malloc or other failures. Use xmlCtxtValidateDocument.  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='vctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-    </function>
-    <function name='xmlValidateDocumentFinal' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='dtd' type='xmlDtdPtr' info='a dtd instance'/>
-    </function>
-    <function name='xmlValidateDtdFinal' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='root' type='xmlNodePtr' info='an element instance'/>
-    </function>
-    <function name='xmlValidateElementDecl' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlElementPtr' info='an element definition'/>
-    </function>
-    <function name='xmlValidateNCName' file='tree' module='tree'>
-      <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' module='tree'>
-      <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' module='tree'>
-      <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' 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' 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' 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' 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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='nota' type='xmlNotationPtr' info='a notation definition'/>
-    </function>
-    <function name='xmlValidateNotationUse' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Validate that the given name match a notation declaration. - [ VC: Notation Declared ]</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='the document'/>
-      <arg name='notationName' type='const xmlChar *' info='the notation name to check'/>
-    </function>
-    <function name='xmlValidateOneAttribute' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-    </function>
-    <function name='xmlValidateOneNamespace' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <arg name='elem' type='xmlNodePtr' info='an element instance'/>
-      <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Pop the element end from the validation stack.</info>
-      <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='data' type='const xmlChar *' info='some character data read'/>
-      <arg name='len' type='int' info='the length of the data'/>
-    </function>
-    <function name='xmlValidatePushElement' file='valid' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  Push a new element start on the validation stack.</info>
-      <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
-      <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
-      <arg name='doc' type='xmlDocPtr' info='a document instance'/>
-      <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' module='tree'>
-      <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' module='valid'>
-      <cond>defined(LIBXML_VALID_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' 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' 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' 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='xmlXIncludeGetLastError' file='xinclude' module='xinclude'>
-      <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
-      <info>Available since 2.13.0.</info>
-      <return type='int' info='the last error code.'/>
-      <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='an XInclude processing context'/>
-    </function>
-    <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' 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' 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='xmlXIncludeProcessFlagsData' 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'/>
-      <arg name='data' type='void *' info='application data that will be passed to the parser context in the _private field of the parser context(s)'/>
-    </function>
-    <function name='xmlXIncludeProcessNode' file='xinclude' module='xinclude'>
-      <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
-      <info>Implement the XInclude substitution for the given subtree reusing the information 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' 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' 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='xmlXIncludeProcessTreeFlagsData' file='xinclude' module='xinclude'>
-      <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
-      <info>Implement the XInclude substitution on the XML node @tree</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='an XML node'/>
-      <arg name='flags' type='int' info='a set of xmlParserOption used for parsing XML includes'/>
-      <arg name='data' type='void *' info='application data that will be passed to the parser context in the _private field of the parser context(s)'/>
-    </function>
-    <function name='xmlXIncludeSetErrorHandler' file='xinclude' module='xinclude'>
-      <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
-      <info>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated.  Available since 2.13.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='an XInclude processing context'/>
-      <arg name='handler' type='xmlStructuredErrorFunc' info='error handler'/>
-      <arg name='data' type='void *' info='user data which will be passed to the handler'/>
-    </function>
-    <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='xmlXIncludeSetResourceLoader' file='xinclude' module='xinclude'>
-      <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
-      <info>Register a callback function that will be called to load included documents.  Available since 2.14.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='an XInclude processing context'/>
-      <arg name='loader' type='xmlResourceLoader' info='resource loader'/>
-      <arg name='data' type='void *' info='user data which will be passed to the loader'/>
-    </function>
-    <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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Converts an existing object to its string() equivalent</info>
-      <return type='xmlChar *' info='the allocated string value of the object, NULL in case of error. It&apos;s up to the caller to free the string memory with xmlFree().'/>
-      <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
-    </function>
-    <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' 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' 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'/>
-      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
-      <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' 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' 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='xmlXPathCompiledEvalToBoolean' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Applies the XPath boolean() function on the result of the given compiled expression.</info>
-      <return type='int' info='1 if the expression evaluated to true, 0 if to false and -1 in API and internal errors.'/>
-      <arg name='comp' type='xmlXPathCompExprPtr' info='the compiled XPath expression'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <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' 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='xmlXPathContextSetCache' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Creates/frees an object cache on the XPath context. If activates XPath objects (xmlXPathObject) will be cached internally to be reused. @options: 0: This will set the XPath object caching: @value: This will set the maximum number of XPath objects to be cached per slot There are two slots for node-set and misc objects. Use &lt;0 for the default number (100). Other values for @options have currently no effect.</info>
-      <return type='int' info='0 if the setting succeeded, and -1 on API or internal errors.'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='active' type='int' info='enables/disables (creates/frees) the cache'/>
-      <arg name='value' type='int' info='a value with semantics dependent on @options'/>
-      <arg name='options' type='int' info='options (currently only the value 0 is used)'/>
-    </function>
-    <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' 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' 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' 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' 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' 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' 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'/>
-      <arg name='output' type='FILE *' info='the FILE * for the output'/>
-      <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' 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'/>
-      <arg name='output' type='FILE *' info='the FILE * to dump the output'/>
-      <arg name='cur' type='xmlXPathObjectPtr' info='the object to inspect'/>
-      <arg name='depth' type='int' info='indentation level'/>
-    </function>
-    <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' 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' 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' 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' 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' 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='code' type='int' info='the error code'/>
-    </function>
-    <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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>DEPRECATED: Internal function, don&apos;t use.  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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Alias for xmlXPathEval().</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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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.'/>
-      <arg name='ctxt' type='void *' info='an XPath context'/>
-      <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' 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' 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' 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'/>
-      <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
-    </function>
-    <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' 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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>DEPRECATED: Alias for xmlInitParser.</info>
-      <return type='void'/>
-    </function>
-    <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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Checks whether a double is an infinity.</info>
-      <return type='int' info='1 if the value is +Infinite, -1 if -Infinite, 0 otherwise'/>
-      <arg name='val' type='double' info='a double value'/>
-    </function>
-    <function name='xmlXPathIsNaN' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Checks whether a double is a NaN.</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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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='xmlXPathNodeEval' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Evaluate the XPath Location Path in the given context. The node &apos;node&apos; is set as the context node. The context node is not restored.</info>
-      <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
-      <arg name='node' type='xmlNodePtr' info='the node to to use as the context node'/>
-      <arg name='str' type='const xmlChar *' info='the XPath expression'/>
-      <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <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' 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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>add a new xmlNodePtr to an existing NodeSet</info>
-      <return type='int' info='0 in case of success, and -1 in case of error'/>
-      <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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>add a new namespace node to an existing NodeSet</info>
-      <return type='int' info='0 in case of success and -1 in case of error'/>
-      <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
-      <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' 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='int' info='0 in case of success and -1 in case of failure'/>
-      <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' 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' 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' 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' 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' 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.  Frees @val1 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' 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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>DEPRECATED: No-op since 2.14.0.  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' 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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Registers an external mechanism to do function lookup.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='f' type='xmlXPathFuncLookupFunc' info='the lookup function'/>
-      <arg name='funcCtxt' type='void *' info='the lookup data'/>
-    </function>
-    <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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='name' type='const xmlChar *' info='the function name'/>
-      <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' 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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='prefix' type='const xmlChar *' info='the namespace prefix cannot be NULL or empty string'/>
-      <arg name='ns_uri' type='const xmlChar *' info='the namespace name'/>
-    </function>
-    <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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <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' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>register an external mechanism to do variable lookup</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='f' type='xmlXPathVariableLookupFunc' info='the lookup function'/>
-      <arg name='data' type='void *' info='the lookup data'/>
-    </function>
-    <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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='name' type='const xmlChar *' info='the variable name'/>
-      <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' 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' 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' 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' 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' 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 closest to positive infinity 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='xmlXPathSetContextNode' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Sets &apos;node&apos; as the context node. The node must be in the same document as that associated with the context.</info>
-      <return type='int' info='-1 in case of error or 0 if successful'/>
-      <arg name='node' type='xmlNodePtr' info='the node to to use as the context node'/>
-      <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathSetErrorHandler' file='xpath' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Register a callback function that will be called on errors and warnings. If handler is NULL, the error handler will be deactivated.  Available since 2.13.0.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name='handler' type='xmlStructuredErrorFunc' info='error handler'/>
-      <arg name='data' type='void *' info='user data which will be passed to the handler'/>
-    </function>
-    <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' 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' 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' 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' 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' 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 string 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' 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' 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' 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' 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' 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' 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' 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' 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='xmlXPathValuePop' 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='xmlXPathValuePush' file='xpathInternals' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Pushes a new XPath object on top of the value stack. If value is NULL, a memory error is recorded in the parser context.</info>
-      <return type='int' info='the number of items on the value stack, or -1 in case of error.  The object is destroyed in case of error.'/>
-      <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath evaluation context'/>
-      <arg name='value' type='xmlXPathObjectPtr' info='the XPath object'/>
-    </function>
-    <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' 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.'/>
-      <arg name='ctxt' type='void *' info='an XPath context'/>
-      <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' 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'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <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' 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' 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' 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.  In case of error the node set is destroyed and NULL is returned.'/>
-      <arg name='val' type='xmlNodeSetPtr' info='the NodePtr value'/>
-    </function>
-    <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.  Frees @val in case of error.'/>
-      <arg name='val' type='xmlChar *' info='the xmlChar * value'/>
-    </function>
-    <function name='xmlXPatherror' file='xpathInternals' module='xpath'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Formats an error message.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
-      <arg name='file' type='const char *' info='the file name'/>
-      <arg name='line' type='int' info='the line number'/>
-      <arg name='no' type='int' info='the error number'/>
-    </function>
-    <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='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.'/>
-      <arg name='doc' type='xmlDocPtr' info='the XML document'/>
-      <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>
-  </symbols>
-</api>
diff -pruN 2.14.6+dfsg-0.1/doc/libxml2.css 2.15.0+dfsg-0.3/doc/libxml2.css
--- 2.14.6+dfsg-0.1/doc/libxml2.css	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/libxml2.css	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,9 @@
+div.contents {
+    max-width: 60em;
+}
+h1 {
+    font-size: 1.5em;
+}
+h2 {
+    font-size: 1.25em;
+}
diff -pruN 2.14.6+dfsg-0.1/doc/mainpage.md 2.15.0+dfsg-0.3/doc/mainpage.md
--- 2.14.6+dfsg-0.1/doc/mainpage.md	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/mainpage.md	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,25 @@
+# API Documentation
+
+See [File List](files.html) for API documentation sorted by
+public header files.
+
+## About
+
+libxml2 is an XML toolkit implemented in C, originally developed for
+the GNOME Project.
+
+Official releases can be downloaded from
+<https://download.gnome.org/sources/libxml2/>
+
+The git repository is hosted on GNOME's GitLab server:
+<https://gitlab.gnome.org/GNOME/libxml2>
+
+Bugs should be reported at
+<https://gitlab.gnome.org/GNOME/libxml2/-/issues>
+
+Other documentation is available at
+<https://gitlab.gnome.org/GNOME/libxml2/-/wikis>
+
+## License
+
+This code is released under the MIT License, see the Copyright file.
diff -pruN 2.14.6+dfsg-0.1/doc/meson.build 2.15.0+dfsg-0.3/doc/meson.build
--- 2.14.6+dfsg-0.1/doc/meson.build	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/meson.build	2025-09-15 11:55:59.000000000 +0000
@@ -1,12 +1,67 @@
+# Doxygen
 
-install_man(files(['xml2-config.1', 'xmlcatalog.1', 'xmllint.1']))
+doxygen = find_program('doxygen')
 
-
-tutorial_files = files(
-    'xmlcatalog.html',
-    'xmllint.html',
+# TODO: To make the xml directory work as dependency of the
+# Python target, we must make sure that its timestamp changes
+# whenever the docs are rebuilt. Either delete the directory
+# before generating, or touch it afterward?
+doxygen_docs = custom_target(
+    'Doxygen documentation',
+    input: [
+        xml_src_files, libxml_headers,
+        files('libxml2.css', 'mainpage.md'),
+    ],
+    output: [ 'html', 'xml' ],
+    command: [ doxygen, '-q', files('Doxyfile') ],
+    env: {
+        'SOURCE_ROOT': meson.project_source_root() + '/',
+        'BUILD_ROOT':  meson.project_build_root()  + '/',
+    },
+    install: true,
+    install_dir: [ want_docs ? dir_doc : false, false ],
 )
 
-install_data(tutorial_files, install_dir: dir_doc)
+if want_docs
+    # xml2-config
+
+    install_man('xml2-config.1')
+
+    # Docbook
+
+    xsltproc = find_program('xsltproc')
+    types = [
+        [ 'manpages', '.1',    dir_man ],
+        [ 'html',     '.html', dir_doc ],
+    ]
+    programs = [ 'xmllint' ]
+    if want_catalog and want_output
+        programs += 'xmlcatalog'
+    endif
+
+    foreach prog : programs
+        foreach type : types
+            format = type[0]
+            ext = type[1]
+            install_dir = type[2]
+
+            xsl = 'http://docbook.sourceforge.net' + \
+                  f'/release/xsl/current/@format@/docbook.xsl'
+            output = prog + ext
 
-subdir('devhelp')
+            custom_target(
+                output,
+                input: prog + '.xml',
+                output: output,
+                command: [xsltproc,
+                    '--nonet', '--novalid',
+                    '--param', 'man.output.quietly', '1',
+                    '-o', '@OUTPUT@',
+                    xsl, '@INPUT@'
+                ],
+                install: true,
+                install_dir: install_dir
+            )
+        endforeach
+    endforeach
+endif
diff -pruN 2.14.6+dfsg-0.1/doc/xmlcatalog.1 2.15.0+dfsg-0.3/doc/xmlcatalog.1
--- 2.14.6+dfsg-0.1/doc/xmlcatalog.1	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmlcatalog.1	1970-01-01 00:00:00.000000000 +0000
@@ -1,356 +0,0 @@
-'\" t
-.\"     Title: xmlcatalog
-.\"    Author: John Fleck <jfleck@inkstain.net>
-.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 06/12/2024
-.\"    Manual: xmlcatalog Manual
-.\"    Source: libxml2
-.\"  Language: English
-.\"
-.TH "XMLCATALOG" "1" "06/12/2024" "libxml2" "xmlcatalog Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-xmlcatalog \- Command line tool to parse and manipulate XML or SGML catalog files\&.
-.SH "SYNOPSIS"
-.HP \w'\fBxmlcatalog\fR\ 'u
-\fBxmlcatalog\fR [\fB\-\-sgml\fR | \fB\-\-shell\fR | \fB\-\-convert\fR | \fB\-\-create\fR | \fB\-\-del\ \fR\fB\fIVALUE(S)\fR\fR | [\ \fB\-\-add\ \fR\fB\fITYPE\fR\fR\fB\ \fR\fB\fIORIG\fR\fR\fB\ \fR\fB\fIREPLACE\fR\fR\fB\ \fR\ |\ \fB\-\-add\ \fR\fB\fIFILENAME\fR\fR] | \fB\-\-noout\fR | \fB\-\-no\-super\-update\fR | [\fB\-v\fR\ |\ \fB\-\-verbose\fR]] {\fICATALOGFILE\fR} {\fIENTITIES\fR...}
-.SH "DESCRIPTION"
-.PP
-\fBxmlcatalog\fR
-is a command line application allowing users to monitor and manipulate
-XML
-and
-SGML
-catalogs\&. It is included in
-\fBlibxml\fR(3)\&.
-.PP
-Its functions can be invoked from a single command from the command line, or it can perform multiple functions in interactive mode\&. It can operate on both
-XML
-and
-SGML
-files\&.
-.SH "OPTIONS"
-.PP
-\fBxmlcatalog\fR
-accepts the following options (in alphabetical order):
-.PP
-\fB\-\-add \fR\fB\fITYPE\fR\fR\fB \fR\fB\fIORIG\fR\fR\fB \fR\fB\fIREPLACE\fR\fR\fB \fR
-.RS 4
-Add an entry to
-CATALOGFILE\&.
-\fITYPE\fR
-indicates the type of entry\&. Possible types are:
-\fIpublic\fR, \fIsystem\fR, \fIuri\fR, \fIrewriteSystem\fR, \fIrewriteURI\fR, \fIdelegatePublic\fR, \fIdelegateSystem\fR, \fIdelegateURI\fR, \fInextCatalog\fR\&.
-\fIORIG\fR
-is the original reference to be replaced, and
-\fIREPLACE\fR
-is the
-URI
-of the replacement entity to be used\&. The
-\fB\-\-add\fR
-option will not overwrite
-CATALOGFILE, outputting to
-stdout, unless
-\fB\-\-noout\fR
-is used\&. The
-\fB\-\-add\fR
-will always take three parameters even if some of the
-XML
-catalog constructs will have only a single argument\&.
-.RE
-.PP
-\fB\-\-add \fR\fB\fIFILENAME\fR\fR
-.RS 4
-If the
-\fB\-\-add\fR
-option is used following the
-\fB\-\-sgml\fR
-option, only a single argument, a
-\fIFILENAME\fR, is used\&. This is used to add the name of a catalog file to an
-SGML
-supercatalog, a file that contains references to other included
-SGML
-catalog files\&.
-.RE
-.PP
-\fB\-\-convert\fR
-.RS 4
-Convert SGML catalog to XML\&.
-.RE
-.PP
-\fB\-\-create\fR
-.RS 4
-Create a new
-XML
-catalog\&. Outputs to
-stdout, ignoring
-\fIfilename\fR
-unless
-\fB\-\-noout\fR
-is used, in which case it creates a new catalog file
-\fIfilename\fR\&.
-.RE
-.PP
-\fB\-\-del \fR\fB\fIVALUE(S)\fR\fR
-.RS 4
-Remove entries from
-\fICATALOGFILE\fR
-matching
-\fIVALUE(S)\fR\&. The
-\fB\-\-del\fR
-option will not overwrite
-\fICATALOGFILE\fR, outputting to
-stdout, unless
-\fB\-\-noout\fR
-is used\&.
-.RE
-.PP
-\fB\-\-noout\fR
-.RS 4
-Save output to the named file rather than outputting to
-stdout\&.
-.RE
-.PP
-\fB\-\-no\-super\-update\fR
-.RS 4
-Do not update the
-SGML
-super catalog\&.
-.RE
-.PP
-\fB\-\-shell\fR
-.RS 4
-Run a shell allowing interactive queries on catalog file
-\fICATALOGFILE\fR\&. For the set of available commands see
-the section called \(lqSHELL COMMANDS\(rq\&.
-.RE
-.PP
-\fB\-\-sgml\fR
-.RS 4
-Uses
-SGML
-super catalogs for
-\fB\-\-add\fR
-and
-\fB\-\-del\fR
-options\&.
-.RE
-.PP
-\fB\-v\fR, \fB\-\-verbose\fR
-.RS 4
-Output debugging information\&.
-.RE
-.PP
-Invoking
-\fBxmlcatalog\fR
-non\-interactively without a designated action (imposed with options like
-\fB\-\-add\fR) will result in a lookup of the catalog entry for
-\fIENTITIES\fR
-in the catalog denoted with
-\fICATALOGFILE\fR\&. The corresponding entries will be output to the command line\&. This mode of operation, together with
-\fB\-\-shell\fR
-mode and non\-modifying (i\&.e\&. without
-\fB\-\-noout\fR) direct actions, allows for a special shortcut of the void
-\fICATALOGFILE\fR
-specification (possibly expressed as "" in the shell environment) appointing the default system catalog\&. That simplifies the handling when its exact location is irrelevant but the respective built\-in still needs to be consulted\&.
-.SH "SHELL COMMANDS"
-.PP
-Invoking
-\fBxmlcatalog\fR
-with the
-\fB\-\-shell \fR\fB\fICATALOGFILE\fR\fR
-option opens a command line shell allowing interactive access to the catalog file identified by
-\fICATALOGFILE\fR\&. Invoking the shell provides a command line prompt after which the following commands (described in alphabetical order) can be entered\&.
-.PP
-\fBadd \fR\fB\fITYPE\fR\fR\fB \fR\fB\fIORIG\fR\fR\fB \fR\fB\fIREPLACE\fR\fR\fB \fR
-.RS 4
-Add an entry to the catalog file\&.
-\fITYPE\fR
-indicates the type of entry\&. Possible types are:
-\fIpublic\fR, \fIsystem\fR, \fIuri\fR, \fIrewriteSystem\fR, \fIrewriteURI\fR, \fIdelegatePublic\fR, \fIdelegateSystem\fR, \fIdelegateURI\fR, \fInextCatalog\fR\&.
-\fIORIG\fR
-is the original reference to be replaced, and
-\fIREPLACE\fR
-is the
-URI
-of the replacement entity to be used\&. The
-\fB\-\-add\fR
-option will not overwrite
-CATALOGFILE, outputting to
-stdout, unless
-\fB\-\-noout\fR
-is used\&. The
-\fB\-\-add\fR
-will always take three parameters even if some of the
-XML
-catalog constructs will have only a single argument\&.
-.RE
-.PP
-\fBdebug\fR
-.RS 4
-Print debugging statements showing the steps
-\fBxmlcatalog\fR
-is executing\&.
-.RE
-.PP
-\fBdel \fR\fB\fIVALUE(S)\fR\fR
-.RS 4
-Remove the catalog entry corresponding to
-\fIVALUE(S)\fR\&.
-.RE
-.PP
-\fBdump\fR
-.RS 4
-Print the current catalog\&.
-.RE
-.PP
-\fBexit\fR
-.RS 4
-Quit the shell\&.
-.RE
-.PP
-\fBpublic \fR\fB\fIPUBLIC\-ID\fR\fR
-.RS 4
-Execute a Formal Public Identifier lookup of the catalog entry for
-\fIPUBLIC\-ID\fR\&. The corresponding entry will be output to the command line\&.
-.RE
-.PP
-\fBquiet\fR
-.RS 4
-Stop printing debugging statements\&.
-.RE
-.PP
-\fBsystem \fR\fB\fISYSTEM\-ID\fR\fR
-.RS 4
-Execute a Formal Public Identifier lookup of the catalog entry for
-\fISYSTEM\-ID\fR\&. The corresponding entry will be output to the command line\&.
-.RE
-.SH "ENVIRONMENT"
-.PP
-\fBXML_CATALOG_FILES\fR
-.RS 4
-XML
-catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the
-\fBXML_CATALOG_FILES\fR
-environment variable to a space\-separated list of catalogs\&. Use percent\-encoding to escape spaces or other characters\&. An empty variable should deactivate loading the default catalog from
-/etc/xml/catalog
-or, more specifically,
-${sysconfdir}/xml/catalog\&.
-.RE
-.SH "DIAGNOSTICS"
-.PP
-\fBxmlcatalog\fR
-return codes provide information that can be used when calling it from scripts\&.
-.PP
-\fB0\fR
-.RS 4
-No error
-.RE
-.PP
-\fB1\fR
-.RS 4
-Failed to remove an entry from the catalog
-.RE
-.PP
-\fB2\fR
-.RS 4
-Failed to save to the catalog, check file permissions
-.RE
-.PP
-\fB3\fR
-.RS 4
-Failed to add an entry to the catalog
-.RE
-.PP
-\fB4\fR
-.RS 4
-Failed to look up an entry in the catalog
-.RE
-.SH "SEE ALSO"
-.PP
-\fBlibxml\fR(3)
-.PP
-More information can be found at
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fBlibxml\fR(3)
-web page
-\m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2\fR\m[]
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fBlibxml\fR(3)
-catalog support web page at
-\m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2/-/wikis/Catalog-support\fR\m[]
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-James Clark\*(Aqs
-SGML
-catalog page
-\m[blue]\fB\%http://www.jclark.com/sp/catalog.htm\fR\m[]
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-OASIS
-XML
-catalog specification
-\m[blue]\fB\%http://www.oasis-open.org/committees/entity/spec.html\fR\m[]
-.RE
-.sp
-.SH "AUTHOR"
-.PP
-\fBJohn Fleck\fR <\&jfleck@inkstain\&.net\&>
-.RS 4
-Author.
-.RE
-.SH "COPYRIGHT"
-.br
-Copyright \(co 2001, 2004
-.br
diff -pruN 2.14.6+dfsg-0.1/doc/xmlcatalog.html 2.15.0+dfsg-0.3/doc/xmlcatalog.html
--- 2.14.6+dfsg-0.1/doc/xmlcatalog.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmlcatalog.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,144 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>xmlcatalog</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry"><a name="idm1"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>xmlcatalog &#8212; 
-        Command line tool to parse and manipulate <acronym class="acronym">XML</acronym>
-        or <acronym class="acronym">SGML</acronym> catalog files.
-    </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">xmlcatalog</code>  [ <code class="option">--sgml</code>  |   <code class="option">--shell</code>  |   <code class="option">--convert</code>  |   <code class="option">--create</code>  |   <code class="option">--del <em class="replaceable"><code>VALUE(S)</code></em></code>  |   
-            [ 
-                    <code class="option">--add
-                     <em class="replaceable"><code>TYPE</code></em>
-                     <em class="replaceable"><code>ORIG</code></em>
-                     <em class="replaceable"><code>REPLACE</code></em>
-                    </code>
-                  |   <code class="option">--add <em class="replaceable"><code>FILENAME</code></em></code> ]
-          |   <code class="option">--noout</code>  |   <code class="option">--no-super-update</code>  |   
-            [ <code class="option">-v</code>  |   <code class="option">--verbose</code> ]
-         ] {<em class="replaceable"><code>CATALOGFILE</code></em>} {<em class="replaceable"><code>ENTITIES</code></em>...}</p></div></div><div class="refsect1"><a name="description"></a><h2>DESCRIPTION</h2><p>
-        <span class="command"><strong>xmlcatalog</strong></span> is a command line application allowing users to monitor and
-        manipulate <acronym class="acronym">XML</acronym> and <acronym class="acronym">SGML</acronym> catalogs. It
-        is included in <span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span>.
-    </p><p>
-        Its functions can be invoked from a single command from the command line,
-        or it can perform multiple functions in interactive mode. It can operate
-        on both <acronym class="acronym">XML</acronym> and <acronym class="acronym">SGML</acronym> files.
-    </p></div><div class="refsect1"><a name="options"></a><h2>OPTIONS</h2><p>
-        <span class="command"><strong>xmlcatalog</strong></span> accepts the following options (in alphabetical order):
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-                <code class="option">--add
-                 <em class="replaceable"><code>TYPE</code></em>
-                 <em class="replaceable"><code>ORIG</code></em>
-                 <em class="replaceable"><code>REPLACE</code></em>
-                </code>
-            </span></dt><dd><p>
-                    Add an entry to <code class="filename">CATALOGFILE</code>. <em class="replaceable"><code>TYPE</code></em>
-                    indicates the type of entry. Possible types are: <span class="simplelist"><em class="parameter"><code>public</code></em>, <em class="parameter"><code>system</code></em>, <em class="parameter"><code>uri</code></em>, <em class="parameter"><code>rewriteSystem</code></em>, <em class="parameter"><code>rewriteURI</code></em>, <em class="parameter"><code>delegatePublic</code></em>, <em class="parameter"><code>delegateSystem</code></em>, <em class="parameter"><code>delegateURI</code></em>, <em class="parameter"><code>nextCatalog</code></em></span>. <em class="replaceable"><code>ORIG</code></em> is the original
-                    reference to be replaced, and <em class="replaceable"><code>REPLACE</code></em>
-                    is the <acronym class="acronym">URI</acronym> of the replacement entity to be
-                    used. The <code class="option">--add</code> option will not overwrite
-                    <code class="filename">CATALOGFILE</code>, outputting
-                    to <code class="filename">stdout</code>, unless
-                    <code class="option">--noout</code> is used. The <code class="option">--add</code> will
-                    always take three parameters even if some of the <acronym class="acronym">XML</acronym>
-                    catalog constructs will have only a single argument.
-                </p></dd><dt><span class="term"><code class="option">--add <em class="replaceable"><code>FILENAME</code></em></code></span></dt><dd><p>
-                    If the <code class="option">--add</code> option is used following
-                    the <code class="option">--sgml</code> option, only a single argument,
-                    a <em class="replaceable"><code>FILENAME</code></em>, is used. This is used to add
-                    the name of a catalog file to an <acronym class="acronym">SGML</acronym> supercatalog,
-                    a file that contains references to other included <acronym class="acronym">SGML</acronym>
-                    catalog files.
-                </p></dd><dt><span class="term"><code class="option">--convert</code></span></dt><dd><p>
-                    Convert SGML catalog to XML.
-                </p></dd><dt><span class="term"><code class="option">--create</code></span></dt><dd><p>
-                    Create a new <acronym class="acronym">XML</acronym> catalog. Outputs
-                    to <code class="filename">stdout</code>,
-                    ignoring <em class="replaceable"><code>filename</code></em> unless <code class="option">--noout</code> is
-                    used, in which case it creates a new catalog
-                    file <em class="replaceable"><code>filename</code></em>.
-                </p></dd><dt><span class="term"><code class="option">--del <em class="replaceable"><code>VALUE(S)</code></em></code></span></dt><dd><p>
-                    Remove entries from <em class="replaceable"><code>CATALOGFILE</code></em>
-                    matching <em class="replaceable"><code>VALUE(S)</code></em>. The <code class="option">--del</code>
-                    option will not overwrite <em class="replaceable"><code>CATALOGFILE</code></em>,
-                    outputting to <code class="filename">stdout</code>,
-                    unless <code class="option">--noout</code> is used.
-                </p></dd><dt><span class="term"><code class="option">--noout</code></span></dt><dd><p>
-                    Save output to the named file rather than outputting
-                    to <code class="filename">stdout</code>.
-                </p></dd><dt><span class="term"><code class="option">--no-super-update</code></span></dt><dd><p>
-                    Do not update the <acronym class="acronym">SGML</acronym> super catalog.
-                </p></dd><dt><span class="term"><code class="option">--shell</code></span></dt><dd><p>
-                    Run a shell allowing interactive queries on catalog
-                    file <em class="replaceable"><code>CATALOGFILE</code></em>. For the set of available
-                    commands see <a class="xref" href="#shell" title="SHELL COMMANDS">the section called &#8220;SHELL COMMANDS&#8221;</a>.
-                </p></dd><dt><span class="term"><code class="option">--sgml</code></span></dt><dd><p>
-                    Uses <acronym class="acronym">SGML</acronym> super catalogs for <code class="option">--add</code>
-                    and <code class="option">--del</code> options.
-                </p></dd><dt><span class="term"><code class="option">-v</code>, </span><span class="term"><code class="option">--verbose</code></span></dt><dd><p>Output debugging information.</p></dd></dl></div><p>
-        Invoking <span class="command"><strong>xmlcatalog</strong></span> non-interactively without a designated action
-        (imposed with options like <code class="option">--add</code>) will result in a lookup
-        of the catalog entry for <em class="replaceable"><code>ENTITIES</code></em> in the
-        catalog denoted with <em class="replaceable"><code>CATALOGFILE</code></em>. The
-        corresponding entries will be output to the command line. This mode of
-        operation, together with <code class="option">--shell</code> mode and non-modifying
-        (i.e. without <code class="option">--noout</code>) direct actions, allows for
-        a special shortcut of the void <em class="replaceable"><code>CATALOGFILE</code></em>
-        specification (possibly expressed as "" in the shell
-        environment) appointing the default system catalog. That simplifies the
-        handling when its exact location is irrelevant but the respective built-in
-        still needs to be consulted.
-    </p></div><div class="refsect1"><a name="shell"></a><h2>SHELL COMMANDS</h2><p>
-        Invoking <span class="command"><strong>xmlcatalog</strong></span> with
-        the <code class="option">--shell <em class="replaceable"><code>CATALOGFILE</code></em></code> option opens
-        a command line shell allowing interactive access to the catalog file
-        identified by <em class="replaceable"><code>CATALOGFILE</code></em>. Invoking the shell
-        provides a command line prompt after which the following commands (described in
-        alphabetical order) can be entered.
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-                <code class="option">add
-                 <em class="replaceable"><code>TYPE</code></em>
-                 <em class="replaceable"><code>ORIG</code></em>
-                 <em class="replaceable"><code>REPLACE</code></em>
-                </code>
-            </span></dt><dd><p>
-                    Add an entry to the catalog file. <em class="replaceable"><code>TYPE</code></em>
-                    indicates the type of entry. Possible types are: <span class="simplelist"><em class="parameter"><code>public</code></em>, <em class="parameter"><code>system</code></em>, <em class="parameter"><code>uri</code></em>, <em class="parameter"><code>rewriteSystem</code></em>, <em class="parameter"><code>rewriteURI</code></em>, <em class="parameter"><code>delegatePublic</code></em>, <em class="parameter"><code>delegateSystem</code></em>, <em class="parameter"><code>delegateURI</code></em>, <em class="parameter"><code>nextCatalog</code></em></span>. <em class="replaceable"><code>ORIG</code></em> is the original
-                    reference to be replaced, and <em class="replaceable"><code>REPLACE</code></em>
-                    is the <acronym class="acronym">URI</acronym> of the replacement entity to be
-                    used. The <code class="option">--add</code> option will not overwrite
-                    <code class="filename">CATALOGFILE</code>, outputting
-                    to <code class="filename">stdout</code>, unless
-                    <code class="option">--noout</code> is used. The <code class="option">--add</code> will
-                    always take three parameters even if some of the <acronym class="acronym">XML</acronym>
-                    catalog constructs will have only a single argument.
-                </p></dd><dt><span class="term"><code class="option">debug</code></span></dt><dd><p>
-                    Print debugging statements showing the steps <span class="command"><strong>xmlcatalog</strong></span> is executing.
-                </p></dd><dt><span class="term"><code class="option">del <em class="replaceable"><code>VALUE(S)</code></em></code></span></dt><dd><p>
-                    Remove the catalog entry corresponding to <em class="replaceable"><code>VALUE(S)</code></em>.
-                </p></dd><dt><span class="term"><code class="option">dump</code></span></dt><dd><p>Print the current catalog.</p></dd><dt><span class="term"><code class="option">exit</code></span></dt><dd><p>Quit the shell.</p></dd><dt><span class="term"><code class="option">public <em class="replaceable"><code>PUBLIC-ID</code></em></code></span></dt><dd><p>
-                    Execute a Formal Public Identifier lookup of the catalog entry
-                    for <em class="replaceable"><code>PUBLIC-ID</code></em>. The corresponding entry will be
-                    output to the command line.
-                </p></dd><dt><span class="term"><code class="option">quiet</code></span></dt><dd><p>Stop printing debugging statements.</p></dd><dt><span class="term"><code class="option">system <em class="replaceable"><code>SYSTEM-ID</code></em></code></span></dt><dd><p>
-                    Execute a Formal Public Identifier lookup of the catalog entry
-                    for <em class="replaceable"><code>SYSTEM-ID</code></em>. The corresponding entry will be
-                    output to the command line.
-                </p></dd></dl></div></div><div class="refsect1"><a name="environment"></a><h2>ENVIRONMENT</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="envar">XML_CATALOG_FILES</code></span></dt><dd><p><acronym class="acronym">XML</acronym> catalog behavior can be changed by redirecting
-                    queries to the user's own set of catalogs. This can be done by setting
-                    the <code class="envar">XML_CATALOG_FILES</code> environment variable to a space-separated
-                    list of catalogs. Use percent-encoding to escape spaces or other characters.
-                    An empty variable should deactivate loading the default catalog from
-                    <code class="filename">/etc/xml/catalog</code> or, more specifically,
-                    <code class="filename">${sysconfdir}/xml/catalog</code>.
-                </p></dd></dl></div></div><div class="refsect1"><a name="diagnostics"></a><h2>DIAGNOSTICS</h2><p>
-        <span class="command"><strong>xmlcatalog</strong></span> return codes provide information that can be used when
-        calling it from scripts.
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="errorcode">0</span></span></dt><dd><p>No error</p></dd><dt><span class="term"><span class="errorcode">1</span></span></dt><dd><p>Failed to remove an entry from the catalog</p></dd><dt><span class="term"><span class="errorcode">2</span></span></dt><dd><p>Failed to save to the catalog, check file permissions</p></dd><dt><span class="term"><span class="errorcode">3</span></span></dt><dd><p>Failed to add an entry to the catalog</p></dd><dt><span class="term"><span class="errorcode">4</span></span></dt><dd><p>Failed to look up an entry in the catalog</p></dd></dl></div></div><div class="refsect1"><a name="seealso"></a><h2>SEE ALSO</h2><p><span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span>
-    </p><p>
-        More information can be found at
-        </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span> web page <a class="ulink" href="https://gitlab.gnome.org/GNOME/libxml2" target="_top">https://gitlab.gnome.org/GNOME/libxml2</a>
-                </p></li><li class="listitem"><p><span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span> catalog support web page
-                    at <a class="ulink" href="https://gitlab.gnome.org/GNOME/libxml2/-/wikis/Catalog-support" target="_top">https://gitlab.gnome.org/GNOME/libxml2/-/wikis/Catalog-support</a>
-                </p></li><li class="listitem"><p>James Clark's <acronym class="acronym">SGML</acronym> catalog
-                    page <a class="ulink" href="http://www.jclark.com/sp/catalog.htm" target="_top">http://www.jclark.com/sp/catalog.htm</a>
-                </p></li><li class="listitem"><p><acronym class="acronym">OASIS</acronym> <acronym class="acronym">XML</acronym> catalog specification
-                    <a class="ulink" href="http://www.oasis-open.org/committees/entity/spec.html" target="_top">http://www.oasis-open.org/committees/entity/spec.html</a>
-                </p></li></ul></div><p>
-    </p></div></div></body></html>
diff -pruN 2.14.6+dfsg-0.1/doc/xmlcatalog.xml 2.15.0+dfsg-0.3/doc/xmlcatalog.xml
--- 2.14.6+dfsg-0.1/doc/xmlcatalog.xml	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmlcatalog.xml	2025-09-15 11:55:59.000000000 +0000
@@ -19,6 +19,7 @@
     <author>
         <firstname>John</firstname>
         <surname>Fleck</surname>
+        <contrib></contrib>
         <affiliation>
             <address>
                 <email>jfleck@inkstain.net</email>
diff -pruN 2.14.6+dfsg-0.1/doc/xmllint.1 2.15.0+dfsg-0.3/doc/xmllint.1
--- 2.14.6+dfsg-0.1/doc/xmllint.1	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmllint.1	1970-01-01 00:00:00.000000000 +0000
@@ -1,688 +0,0 @@
-'\" t
-.\"     Title: xmllint
-.\"    Author: John Fleck <jfleck@inkstain.net>
-.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/27/2025
-.\"    Manual: xmllint Manual
-.\"    Source: libxml2
-.\"  Language: English
-.\"
-.TH "XMLLINT" "1" "03/27/2025" "libxml2" "xmllint Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-xmllint \- command line XML tool
-.SH "SYNOPSIS"
-.HP \w'\fBxmllint\fR\ 'u
-\fBxmllint\fR [\fB\-\-version\fR | \fB\-\-debug\fR | \fB\-\-quiet\fR | \fB\-\-shell\fR | \fB\-\-xpath\ "\fR\fB\fIXPath_expression\fR\fR\fB"\fR | \fB\-\-debugent\fR | \fB\-\-copy\fR | \fB\-\-recover\fR | \fB\-\-huge\fR | \fB\-\-nocompact\fR | \fB\-\-nodefdtd\fR | \fB\-\-nodict\fR | \fB\-\-noenc\fR | \fB\-\-noent\fR | \fB\-\-nofixup\-base\-uris\fR | \fB\-\-noout\fR | \fB\-\-nonet\fR | \fB\-\-path\ "\fR\fB\fIPATH(S)\fR\fR\fB"\fR | \fB\-\-load\-trace\fR | \fB\-\-htmlout\fR | \fB\-\-nowrap\fR | \fB\-\-valid\fR | \fB\-\-postvalid\fR | \fB\-\-dtdvalid\ \fR\fB\fIURL\fR\fR | \fB\-\-dtdvalidfpi\ \fR\fB\fIFPI\fR\fR | \fB\-\-timing\fR | \fB\-\-output\ \fR\fB\fIFILE\fR\fR | \fB\-\-repeat\fR | \fB\-\-insert\fR | \fB\-\-compress\fR | \fB\-\-html\fR | \fB\-\-xmlout\fR | \fB\-\-push\fR | \fB\-\-memory\fR | \fB\-\-max\-ampl\ \fR\fB\fIINTEGER\fR\fR | \fB\-\-maxmem\ \fR\fB\fINBBYTES\fR\fR | \fB\-\-nowarning\fR | \fB\-\-noblanks\fR | \fB\-\-nocdata\fR | \fB\-\-format\fR | \fB\-\-pretty\ \fR\fB\fIINTEGER\fR\fR | \fB\-\-encode\ \fR\fB\fIENCODING\fR\fR | \fB\-\-dropdtd\fR | \fB\-\-nsclean\fR | \fB\-\-testIO\fR | \fB\-\-catalogs\fR | \fB\-\-nocatalogs\fR | \fB\-\-auto\fR | \fB\-\-xinclude\fR | \fB\-\-noxincludenode\fR | \fB\-\-loaddtd\fR | \fB\-\-dtdattr\fR | \fB\-\-stream\fR | \fB\-\-walker\fR | \fB\-\-pattern\ \fR\fB\fIPATTERNVALUE\fR\fR | \fB\-\-relaxng\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-schema\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-schematron\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-c14n\fR | \fB\-\-c14n11\fR | \fB\-\-exc\-c14n\fR | \fB\-\-pedantic\fR | \fB\-\-sax\fR | \fB\-\-sax1\fR | \fB\-\-oldxml10\fR] {\fIXML\-FILE(S)\fR... | \-}
-.SH "DESCRIPTION"
-.PP
-The
-\fBxmllint\fR
-program parses one or more
-XML
-files, specified on the command line as
-\fIXML\-FILE\fR
-(or the standard input if the filename provided is
-\fB\-\fR
-)\&. It prints various types of output, depending upon the options selected\&. It is useful for detecting errors both in
-XML
-code and in the
-XML
-parser itself\&.
-.PP
-\fBxmllint\fR
-is included in
-\fBlibxml\fR(3)\&.
-.SH "OPTIONS"
-.PP
-\fBxmllint\fR
-accepts the following options (in alphabetical order):
-.PP
-\fB\-\-auto\fR
-.RS 4
-Generate a small document for testing purposes\&.
-.RE
-.PP
-\fB\-\-catalogs\fR
-.RS 4
-Use the
-SGML
-catalog(s) from
-\fBSGML_CATALOG_FILES\fR\&. Otherwise
-XML
-catalogs starting from
-/etc/xml/catalog
-or, more specifically,
-${sysconfdir}/xml/catalog
-are used by default\&.
-.RE
-.PP
-\fB\-\-compress\fR
-.RS 4
-Turn on
-\fBgzip\fR(1)
-compression of output\&.
-.RE
-.PP
-\fB\-\-copy\fR
-.RS 4
-Test the internal copy implementation\&.
-.RE
-.PP
-\fB\-\-c14n\fR, \fB\-\-c14n11\fR, \fB\-\-exc\-c14n\fR
-.RS 4
-Use the W3C
-XML
-Canonicalisation (C14N) to serialize the result of parsing to
-stdout\&. It keeps comments in the result\&.
-.RE
-.PP
-\fB\-\-dtdvalid \fR\fB\fIURL\fR\fR
-.RS 4
-Use the
-DTD
-specified by an
-\fIURL\fR
-for validation\&.
-.RE
-.PP
-\fB\-\-dtdvalidfpi \fR\fB\fIFPI\fR\fR
-.RS 4
-Use the
-DTD
-specified by a Formal Public Identifier
-\fIFPI\fR
-for validation, note that this will require a catalog exporting that Formal Public Identifier to work\&.
-.RE
-.PP
-\fB\-\-debug\fR
-.RS 4
-Parse a file and output an annotated tree of the in\-memory version of the document\&.
-.RE
-.PP
-\fB\-\-debugent\fR
-.RS 4
-Debug the entities defined in the document\&.
-.RE
-.PP
-\fB\-\-dropdtd\fR
-.RS 4
-Remove
-DTD
-from output\&.
-.RE
-.PP
-\fB\-\-dtdattr\fR
-.RS 4
-Fetch external
-DTD
-and populate the tree with inherited attributes\&.
-.RE
-.PP
-\fB\-\-encode \fR\fB\fIENCODING\fR\fR
-.RS 4
-Output in the given encoding\&. Note that this works for full document not fragments or result from XPath queries\&.
-.RE
-.PP
-\fB\-\-format\fR
-.RS 4
-Reformat and reindent the output\&. The
-\fBXMLLINT_INDENT\fR
-environment variable controls the indentation\&. The default value is two spaces " ")\&.
-.sp
-Especially in the absence of a DTD, this feature has never worked reliably and is fundamentally broken\&.
-.RE
-.PP
-\fB\-\-html\fR
-.RS 4
-Use the
-HTML
-parser\&.
-.RE
-.PP
-\fB\-\-htmlout\fR
-.RS 4
-Output results as an
-HTML
-file\&. This causes
-\fBxmllint\fR
-to output the necessary
-HTML
-tags surrounding the result tree output so the results can be displayed/viewed in a browser\&.
-.RE
-.PP
-\fB\-\-huge\fR
-.RS 4
-Ignore some hardcoded parser limits\&.
-.RE
-.PP
-\fB\-\-insert\fR
-.RS 4
-Test for valid insertions\&.
-.RE
-.PP
-\fB\-\-loaddtd\fR
-.RS 4
-Fetch an external
-DTD\&.
-.RE
-.PP
-\fB\-\-load\-trace\fR
-.RS 4
-Display all the documents loaded during the processing to
-stderr\&.
-.RE
-.PP
-\fB\-\-max\-ampl \fR\fB\fIINTEGER\fR\fR
-.RS 4
-Set the maximum amplification factor which protects against exponential entity expansion ("billion laughs")\&. The default value is 5\&. Documents making heavy use of entity expansion may require a higher value\&.
-.RE
-.PP
-\fB\-\-maxmem \fR\fB\fINNBYTES\fR\fR
-.RS 4
-Test the parser memory support\&.
-\fINNBYTES\fR
-is the maximum number of bytes the library is allowed to allocate\&. This can also be used to make sure batch processing of
-XML
-files will not exhaust the virtual memory of the server running them\&.
-.RE
-.PP
-\fB\-\-memory\fR
-.RS 4
-Parse from memory\&.
-.RE
-.PP
-\fB\-\-noblanks\fR
-.RS 4
-Drop ignorable blank spaces\&.
-.RE
-.PP
-\fB\-\-nocatalogs\fR
-.RS 4
-Do not use any catalogs\&.
-.RE
-.PP
-\fB\-\-nocdata\fR
-.RS 4
-Substitute CDATA section by equivalent text nodes\&.
-.RE
-.PP
-\fB\-\-nocompact\fR
-.RS 4
-Do not generate compact text nodes (parser option XML_PARSE_COMPACT)\&. Only for debugging\&.
-.RE
-.PP
-\fB\-\-nodefdtd\fR
-.RS 4
-Do not set default HTML doctype (parser option HTML_PARSE_NODEFDTD)\&.
-.RE
-.PP
-\fB\-\-nodict\fR
-.RS 4
-Don\*(Aqt use dictionaries (parser option XML_PARSE_NODICT)\&. Only for debugging\&.
-.RE
-.PP
-\fB\-\-noenc\fR
-.RS 4
-Ignore encoding declaration (parser option XML_PARSE_IGNORE_ENC)\&.
-.RE
-.PP
-\fB\-\-noent\fR
-.RS 4
-Substitute entity values for entity references\&. By default,
-\fBxmllint\fR
-leaves entity references in place\&.
-.RE
-.PP
-\fB\-\-nofixup\-base\-uris\fR
-.RS 4
-Don\*(Aqt fix xml:base URIs when processing XIncludes (parser option XML_PARSE_NOBASEFIX)\&.
-.RE
-.PP
-\fB\-\-nonet\fR
-.RS 4
-Do not use the Internet to fetch
-DTDs or entities\&.
-.RE
-.PP
-\fB\-\-noout\fR
-.RS 4
-Suppress output\&. By default,
-\fBxmllint\fR
-outputs the result tree\&.
-.RE
-.PP
-\fB\-\-nowarning\fR
-.RS 4
-Do not emit warnings from the parser and/or validator\&.
-.RE
-.PP
-\fB\-\-nowrap\fR
-.RS 4
-Do not output
-HTML
-doc wrapper\&.
-.RE
-.PP
-\fB\-\-noxincludenode\fR
-.RS 4
-Do XInclude processing but do not generate XInclude start and end nodes\&.
-.RE
-.PP
-\fB\-\-nsclean\fR
-.RS 4
-Remove redundant namespace declarations\&.
-.RE
-.PP
-\fB\-\-oldxml10\fR
-.RS 4
-Use deprecated parsing rules before XML 1\&.0, 5th edition\&.
-.RE
-.PP
-\fB\-\-output \fR\fB\fIFILE\fR\fR
-.RS 4
-Define a file path where
-\fBxmllint\fR
-will save the result of parsing\&. Usually the programs build a tree and save it on
-stdout, with this option the result
-XML
-instance will be saved onto a file\&.
-.RE
-.PP
-\fB\-\-path "\fR\fB\fIPATH(S)\fR\fR\fB"\fR
-.RS 4
-Use the (space\- or colon\-separated) list of filesystem paths specified by
-\fIPATHS\fR
-to load
-DTDs or entities\&. Enclose space\-separated lists by quotation marks\&.
-.RE
-.PP
-\fB\-\-pattern \fR\fB\fIPATTERNVALUE\fR\fR
-.RS 4
-Used to exercise the pattern recognition engine, which can be used with the reader interface to the parser\&. It allows to select some nodes in the document based on an XPath (subset) expression\&. Used for debugging\&.
-.RE
-.PP
-\fB\-\-pedantic\fR
-.RS 4
-Enable additional warnings\&.
-.RE
-.PP
-\fB\-\-postvalid\fR
-.RS 4
-Validate after parsing has completed\&.
-.RE
-.PP
-\fB\-\-pretty \fR\fB\fIINTEGER\fR\fR
-.RS 4
-Value 0 means no formatting, 1 means XML_SAVE_FORMAT (same as \-\-format), 2 means XML_SAVE_WSNONSIG\&.
-.RE
-.PP
-\fB\-\-push\fR
-.RS 4
-Use the push mode of the parser\&.
-.RE
-.PP
-\fB\-\-quiet\fR
-.RS 4
-Don\*(Aqt print informational messages to stderr\&.
-.RE
-.PP
-\fB\-\-recover\fR
-.RS 4
-Output any parsable portions of an invalid document\&.
-.RE
-.PP
-\fB\-\-relaxng \fR\fB\fISCHEMA\fR\fR
-.RS 4
-Use RelaxNG file named
-\fISCHEMA\fR
-for validation\&.
-.RE
-.PP
-\fB\-\-repeat\fR
-.RS 4
-Repeat 100 times, for timing or profiling\&.
-.RE
-.PP
-\fB\-\-sax\fR
-.RS 4
-Print SAX callbacks (only for debugging)\&.
-.RE
-.PP
-\fB\-\-sax1\fR
-.RS 4
-Use deprecated SAX1 interface (only for debugging)\&.
-.RE
-.PP
-\fB\-\-schema \fR\fB\fISCHEMA\fR\fR
-.RS 4
-Use a W3C
-XML
-Schema file named
-\fISCHEMA\fR
-for validation\&.
-.RE
-.PP
-\fB\-\-schematron \fR\fB\fISCHEMA\fR\fR
-.RS 4
-Use a Schematron file named
-\fISCHEMA\fR
-for validation\&.
-.RE
-.PP
-\fB\-\-shell\fR
-.RS 4
-Run a navigating shell\&. Details on available commands in shell mode are below (see
-the section called \(lqSHELL COMMANDS\(rq)\&.
-.RE
-.PP
-\fB\-\-xpath "\fR\fB\fIXPath_expression\fR\fR\fB"\fR
-.RS 4
-Run an XPath expression given as argument and print the result\&. In case of a nodeset result, each node in the node set is serialized in full in the output\&. In case of an empty node set the "XPath set is empty" result will be shown and exit code 11 will be returned\&.\&. This feature is EXPERIMENTAL\&. Implementation details can change without futher notice\&.
-.RE
-.PP
-\fB\-\-stream\fR
-.RS 4
-Use streaming
-API
-\- useful when used in combination with
-\fB\-\-relaxng\fR
-or
-\fB\-\-valid\fR
-options for validation of files that are too large to be held in memory\&.
-.RE
-.PP
-\fB\-\-testIO\fR
-.RS 4
-Test user input/output support\&.
-.RE
-.PP
-\fB\-\-timing\fR
-.RS 4
-Output information about the time it takes
-\fBxmllint\fR
-to perform the various steps\&.
-.RE
-.PP
-\fB\-\-valid\fR
-.RS 4
-Determine if the document is a valid instance of the included Document Type Definition (DTD)\&. A
-DTD
-to be validated against also can be specified at the command line using the
-\fB\-\-dtdvalid\fR
-option\&. By default,
-\fBxmllint\fR
-also checks to determine if the document is well\-formed\&.
-.RE
-.PP
-\fB\-\-version\fR
-.RS 4
-Display the version of
-\fBlibxml\fR(3)
-used\&.
-.RE
-.PP
-\fB\-\-walker\fR
-.RS 4
-Test the walker module, which is a reader interface but for a document tree, instead of using the reader
-API
-on an unparsed document it works on an existing in\-memory tree\&. Used for debugging\&.
-.RE
-.PP
-\fB\-\-xinclude\fR
-.RS 4
-Do XInclude processing\&.
-.RE
-.PP
-\fB\-\-xmlout\fR
-.RS 4
-Used in conjunction with
-\fB\-\-html\fR\&. Usually when
-HTML
-is parsed the document is saved with the
-HTML
-serializer\&. But with this option the resulting document is saved with the
-XML
-serializer\&. This is primarily used to generate
-XHTML
-from
-HTML
-input\&.
-.RE
-.SH "SHELL COMMANDS"
-.PP
-\fBxmllint\fR
-offers an interactive shell mode invoked with the
-\fB\-\-shell\fR
-command\&. Available commands in shell mode include (in alphabetical order):
-.PP
-\fBbase\fR
-.RS 4
-Display
-XML
-base of the node\&.
-.RE
-.PP
-\fBbye\fR
-.RS 4
-Leave the shell\&.
-.RE
-.PP
-\fBcat \fR\fB\fINODE\fR\fR
-.RS 4
-Display the given node or the current one\&.
-.RE
-.PP
-\fBcd \fR\fB\fIPATH\fR\fR
-.RS 4
-Change the current node to the given path (if unique) or root if no argument is given\&.
-.RE
-.PP
-\fBdir \fR\fB\fIPATH\fR\fR
-.RS 4
-Dumps information about the node (namespace, attributes, content)\&.
-.RE
-.PP
-\fBdu \fR\fB\fIPATH\fR\fR
-.RS 4
-Show the structure of the subtree under the given path or the current node\&.
-.RE
-.PP
-\fBexit\fR
-.RS 4
-Leave the shell\&.
-.RE
-.PP
-\fBhelp\fR
-.RS 4
-Show this help\&.
-.RE
-.PP
-\fBload \fR\fB\fIFILENAME\fR\fR
-.RS 4
-Load a new document with the given filename\&.
-.RE
-.PP
-\fBls \fR\fB\fIPATH\fR\fR
-.RS 4
-List contents of the given path or the current directory\&.
-.RE
-.PP
-\fBpwd\fR
-.RS 4
-Display the path to the current node\&.
-.RE
-.PP
-\fBquit\fR
-.RS 4
-Leave the shell\&.
-.RE
-.PP
-\fBsave \fR\fB\fIFILENAME\fR\fR
-.RS 4
-Save the current document to the given filename or to the original name\&.
-.RE
-.PP
-\fBvalidate\fR
-.RS 4
-Check the document for errors\&.
-.RE
-.PP
-\fBwrite \fR\fB\fIFILENAME\fR\fR
-.RS 4
-Write the current node to the given filename\&.
-.RE
-.SH "ENVIRONMENT"
-.PP
-\fBSGML_CATALOG_FILES\fR
-.RS 4
-SGML
-catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the
-\fBSGML_CATALOG_FILES\fR
-environment variable to a list of catalogs\&. An empty one should deactivate loading the default catalog\&.
-.RE
-.PP
-\fBXML_CATALOG_FILES\fR
-.RS 4
-XML
-catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the
-\fBXML_CATALOG_FILES\fR
-environment variable to a space\-separated list of catalogs\&. Use percent\-encoding to escape spaces or other characters\&. An empty variable should deactivate loading the default catalog\&.
-.RE
-.PP
-\fBXML_DEBUG_CATALOG\fR
-.RS 4
-Setting the environment variable
-\fBXML_DEBUG_CATALOG\fR
-to
-\fInon\-zero\fR
-using the
-\fBexport\fR
-command outputs debugging information related to catalog operations\&.
-.RE
-.PP
-\fBXMLLINT_INDENT\fR
-.RS 4
-Setting the environment variable
-\fBXMLLINT_INDENT\fR
-controls the indentation\&. The default value is two spaces " "\&.
-.RE
-.SH "DIAGNOSTICS"
-.PP
-\fBxmllint\fR
-return codes provide information that can be used when calling it from scripts\&.
-.PP
-\fB0\fR
-.RS 4
-No error
-.RE
-.PP
-\fB1\fR
-.RS 4
-Unclassified
-.RE
-.PP
-\fB2\fR
-.RS 4
-Error in
-DTD
-.RE
-.PP
-\fB3\fR
-.RS 4
-Validation error
-.RE
-.PP
-\fB4\fR
-.RS 4
-Validation error
-.RE
-.PP
-\fB5\fR
-.RS 4
-Error in schema compilation
-.RE
-.PP
-\fB6\fR
-.RS 4
-Error writing output
-.RE
-.PP
-\fB7\fR
-.RS 4
-Error in pattern (generated when
-\fB\-\-pattern\fR
-option is used)
-.RE
-.PP
-\fB9\fR
-.RS 4
-Out of memory error
-.RE
-.PP
-\fB10\fR
-.RS 4
-XPath evaluation error
-.RE
-.PP
-\fB11\fR
-.RS 4
-XPath result is empty
-.RE
-.SH "SEE ALSO"
-.PP
-\fBlibxml\fR(3)
-.PP
-More information can be found at
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-\fBlibxml\fR(3)
-web page
-\m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2\fR\m[]
-.RE
-.sp
-.SH "AUTHORS"
-.PP
-\fBJohn Fleck\fR <\&jfleck@inkstain\&.net\&>
-.RS 4
-Author.
-.RE
-.PP
-\fBZiying Sherwin\fR <\&sherwin@nlm\&.nih\&.gov\&>
-.RS 4
-Author.
-.RE
-.PP
-\fBHeiko Rupp\fR <\&hwr@pilhuhn\&.de\&>
-.RS 4
-Author.
-.RE
-.SH "COPYRIGHT"
-.br
-Copyright \(co 2001, 2004
-.br
diff -pruN 2.14.6+dfsg-0.1/doc/xmllint.html 2.15.0+dfsg-0.3/doc/xmllint.html
--- 2.14.6+dfsg-0.1/doc/xmllint.html	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmllint.html	1970-01-01 00:00:00.000000000 +0000
@@ -1,191 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>xmllint</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry"><a name="id1337"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>xmllint &#8212; command line <acronym class="acronym">XML</acronym> tool</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">xmllint</code>  [ <code class="option">--version</code>  |   <code class="option">--debug</code>  |   <code class="option">--quiet</code>  |   <code class="option">--shell</code>  |   <code class="option">--xpath "<em class="replaceable"><code>XPath_expression</code></em>"</code>  |   <code class="option">--debugent</code>  |   <code class="option">--copy</code>  |   <code class="option">--recover</code>  |   <code class="option">--huge</code>  |   <code class="option">--nocompact</code>  |   <code class="option">--nodefdtd</code>  |   <code class="option">--nodict</code>  |   <code class="option">--noenc</code>  |   <code class="option">--noent</code>  |   <code class="option">--nofixup-base-uris</code>  |   <code class="option">--noout</code>  |   <code class="option">--nonet</code>  |   <code class="option">--path "<em class="replaceable"><code>PATH(S)</code></em>"</code>  |   <code class="option">--load-trace</code>  |   <code class="option">--htmlout</code>  |   <code class="option">--nowrap</code>  |   <code class="option">--valid</code>  |   <code class="option">--postvalid</code>  |   <code class="option">--dtdvalid <em class="replaceable"><code>URL</code></em></code>  |   <code class="option">--dtdvalidfpi <em class="replaceable"><code>FPI</code></em></code>  |   <code class="option">--timing</code>  |   <code class="option">--output <em class="replaceable"><code>FILE</code></em></code>  |   <code class="option">--repeat</code>  |   <code class="option">--insert</code>  |   <code class="option">--compress</code>  |   <code class="option">--html</code>  |   <code class="option">--xmlout</code>  |   <code class="option">--push</code>  |   <code class="option">--memory</code>  |   <code class="option">--max-ampl <em class="replaceable"><code>INTEGER</code></em></code>  |   <code class="option">--maxmem <em class="replaceable"><code>NBBYTES</code></em></code>  |   <code class="option">--nowarning</code>  |   <code class="option">--noblanks</code>  |   <code class="option">--nocdata</code>  |   <code class="option">--format</code>  |   <code class="option">--pretty <em class="replaceable"><code>INTEGER</code></em></code>  |   <code class="option">--encode <em class="replaceable"><code>ENCODING</code></em></code>  |   <code class="option">--dropdtd</code>  |   <code class="option">--nsclean</code>  |   <code class="option">--testIO</code>  |   <code class="option">--catalogs</code>  |   <code class="option">--nocatalogs</code>  |   <code class="option">--auto</code>  |   <code class="option">--xinclude</code>  |   <code class="option">--noxincludenode</code>  |   <code class="option">--loaddtd</code>  |   <code class="option">--dtdattr</code>  |   <code class="option">--stream</code>  |   <code class="option">--walker</code>  |   <code class="option">--pattern <em class="replaceable"><code>PATTERNVALUE</code></em></code>  |   <code class="option">--relaxng <em class="replaceable"><code>SCHEMA</code></em></code>  |   <code class="option">--schema <em class="replaceable"><code>SCHEMA</code></em></code>  |   <code class="option">--schematron <em class="replaceable"><code>SCHEMA</code></em></code>  |   <code class="option">--c14n</code>  |   <code class="option">--c14n11</code>  |   <code class="option">--exc-c14n</code>  |   <code class="option">--pedantic</code>  |   <code class="option">--sax</code>  |   <code class="option">--sax1</code>  |   <code class="option">--oldxml10</code> ] { <em class="replaceable"><code>XML-FILE(S)</code></em>...  |   - }</p></div></div><div class="refsect1"><a name="description"></a><h2>DESCRIPTION</h2><p>
-        The <span class="command"><strong>xmllint</strong></span> program parses one or more <acronym class="acronym">XML</acronym> files,
-        specified on the command line as <em class="replaceable"><code>XML-FILE</code></em>
-        (or the standard input if the filename provided
-        is <span class="bold"><strong>-</strong></span> ). It prints various types of
-        output, depending upon the options selected. It is useful for detecting
-        errors both in <acronym class="acronym">XML</acronym> code and in
-        the <acronym class="acronym">XML</acronym> parser itself.
-    </p><p><span class="command"><strong>xmllint</strong></span> is included in <span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span>.</p></div><div class="refsect1"><a name="options"></a><h2>OPTIONS</h2><p>
-        <span class="command"><strong>xmllint</strong></span> accepts the following options (in alphabetical order):
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="option">--auto</code></span></dt><dd><p>Generate a small document for testing purposes.</p></dd><dt><span class="term"><code class="option">--catalogs</code></span></dt><dd><p>
-                    Use the <acronym class="acronym">SGML</acronym> catalog(s) from <code class="envar">SGML_CATALOG_FILES</code>.
-                    Otherwise <acronym class="acronym">XML</acronym> catalogs starting
-                    from <code class="filename">/etc/xml/catalog</code> or, more specifically,
-                    <code class="filename">${sysconfdir}/xml/catalog</code> are used by default.
-                </p></dd><dt><span class="term"><code class="option">--compress</code></span></dt><dd><p>
-                    Turn on <span class="citerefentry"><span class="refentrytitle">gzip</span>(1)</span> compression of output.
-                </p></dd><dt><span class="term"><code class="option">--copy</code></span></dt><dd><p>Test the internal copy implementation.</p></dd><dt><span class="term"><code class="option">--c14n</code>, </span><span class="term"><code class="option">--c14n11</code>, </span><span class="term"><code class="option">--exc-c14n</code></span></dt><dd><p>
-                    Use the W3C <acronym class="acronym">XML</acronym> Canonicalisation (<acronym class="acronym">C14N</acronym>) to
-                    serialize the result of parsing to <code class="filename">stdout</code>.
-                    It keeps comments in the result.
-                </p></dd><dt><span class="term"><code class="option">--dtdvalid <em class="replaceable"><code>URL</code></em></code></span></dt><dd><p>
-                    Use the <acronym class="acronym">DTD</acronym> specified by
-                    an <em class="replaceable"><code>URL</code></em> for validation.
-                </p></dd><dt><span class="term"><code class="option">--dtdvalidfpi <em class="replaceable"><code>FPI</code></em></code></span></dt><dd><p>
-                    Use the <acronym class="acronym">DTD</acronym> specified by a Formal Public
-                    Identifier <em class="replaceable"><code>FPI</code></em> for validation, note that this
-                    will require a catalog exporting that Formal Public Identifier to work.
-                </p></dd><dt><span class="term"><code class="option">--debug</code></span></dt><dd><p>
-                    Parse a file and output an annotated tree of the
-                    in-memory version of the document.
-                </p></dd><dt><span class="term"><code class="option">--debugent</code></span></dt><dd><p>Debug the entities defined in the document.</p></dd><dt><span class="term"><code class="option">--dropdtd</code></span></dt><dd><p>Remove <acronym class="acronym">DTD</acronym> from output.</p></dd><dt><span class="term"><code class="option">--dtdattr</code></span></dt><dd><p>
-                    Fetch external <acronym class="acronym">DTD</acronym> and populate the tree with
-                    inherited attributes.
-                </p></dd><dt><span class="term"><code class="option">--encode <em class="replaceable"><code>ENCODING</code></em></code></span></dt><dd><p>Output in the given encoding. Note that this works for full document not fragments or result from XPath queries.</p></dd><dt><span class="term"><code class="option">--format</code></span></dt><dd><p>
-                    Reformat and reindent the output. The <code class="envar">XMLLINT_INDENT</code>
-                    environment variable controls the indentation. The default value is two
-                    spaces "  ").
-                </p><p>
-                    Especially in the absence of a DTD, this feature has never worked reliably
-                    and is fundamentally broken.
-                </p></dd><dt><span class="term"><code class="option">--html</code></span></dt><dd><p>Use the <acronym class="acronym">HTML</acronym> parser.</p></dd><dt><span class="term"><code class="option">--htmlout</code></span></dt><dd><p>
-                    Output results as an <acronym class="acronym">HTML</acronym> file. This
-                    causes <span class="command"><strong>xmllint</strong></span> to output the necessary <acronym class="acronym">HTML</acronym>
-                    tags surrounding the result tree output so the results can be
-                    displayed/viewed in a browser.
-                </p></dd><dt><span class="term"><code class="option">--huge</code></span></dt><dd><p>Ignore some hardcoded parser limits.</p></dd><dt><span class="term"><code class="option">--insert</code></span></dt><dd><p>Test for valid insertions.</p></dd><dt><span class="term"><code class="option">--loaddtd</code></span></dt><dd><p>Fetch an external <acronym class="acronym">DTD</acronym>.</p></dd><dt><span class="term"><code class="option">--load-trace</code></span></dt><dd><p>
-                    Display all the documents loaded during the processing
-                    to <code class="filename">stderr</code>.
-                </p></dd><dt><span class="term"><code class="option">--max-ampl <em class="replaceable"><code>INTEGER</code></em></code></span></dt><dd><p>
-                    Set the maximum amplification factor which protects against
-                    exponential entity expansion ("billion laughs"). The default value
-                    is 5. Documents making heavy use of entity expansion may require a
-                    higher value.
-                </p></dd><dt><span class="term"><code class="option">--maxmem <em class="replaceable"><code>NNBYTES</code></em></code></span></dt><dd><p>
-                    Test the parser memory support. <em class="replaceable"><code>NNBYTES</code></em>
-                    is the maximum number of bytes the library is allowed to allocate.
-                    This can also be used to make sure batch processing
-                    of <acronym class="acronym">XML</acronym> files will not exhaust the virtual memory
-                    of the server running them.
-                </p></dd><dt><span class="term"><code class="option">--memory</code></span></dt><dd><p>Parse from memory.</p></dd><dt><span class="term"><code class="option">--noblanks</code></span></dt><dd><p>Drop ignorable blank spaces.</p></dd><dt><span class="term"><code class="option">--nocatalogs</code></span></dt><dd><p>Do not use any catalogs.</p></dd><dt><span class="term"><code class="option">--nocdata</code></span></dt><dd><p>Substitute CDATA section by equivalent text nodes.</p></dd><dt><span class="term"><code class="option">--nocompact</code></span></dt><dd><p>
-                    Do not generate compact text nodes (parser option
-                    XML_PARSE_COMPACT). Only for debugging.
-                </p></dd><dt><span class="term"><code class="option">--nodefdtd</code></span></dt><dd><p>
-                    Do not set default HTML doctype (parser option
-                    HTML_PARSE_NODEFDTD).
-                </p></dd><dt><span class="term"><code class="option">--nodict</code></span></dt><dd><p>
-                    Don't use dictionaries (parser option XML_PARSE_NODICT).
-                    Only for debugging.
-                </p></dd><dt><span class="term"><code class="option">--noenc</code></span></dt><dd><p>
-                    Ignore encoding declaration (parser option
-                    XML_PARSE_IGNORE_ENC).
-                </p></dd><dt><span class="term"><code class="option">--noent</code></span></dt><dd><p>
-                    Substitute entity values for entity references. By default, <span class="command"><strong>xmllint</strong></span>
-                    leaves entity references in place.
-                </p></dd><dt><span class="term"><code class="option">--nofixup-base-uris</code></span></dt><dd><p>
-                    Don't fix xml:base URIs when processing XIncludes
-                    (parser option XML_PARSE_NOBASEFIX).
-                </p></dd><dt><span class="term"><code class="option">--nonet</code></span></dt><dd><p>
-                    Do not use the Internet to fetch <acronym class="acronym">DTD</acronym>s or entities.
-                </p></dd><dt><span class="term"><code class="option">--noout</code></span></dt><dd><p>
-                    Suppress output. By default, <span class="command"><strong>xmllint</strong></span> outputs the result tree.
-                </p></dd><dt><span class="term"><code class="option">--nowarning</code></span></dt><dd><p>Do not emit warnings from the parser and/or validator.</p></dd><dt><span class="term"><code class="option">--nowrap</code></span></dt><dd><p>Do not output <acronym class="acronym">HTML</acronym> doc wrapper.</p></dd><dt><span class="term"><code class="option">--noxincludenode</code></span></dt><dd><p>
-                    Do XInclude processing but do not generate XInclude start and end nodes.
-                </p></dd><dt><span class="term"><code class="option">--nsclean</code></span></dt><dd><p>Remove redundant namespace declarations.</p></dd><dt><span class="term"><code class="option">--oldxml10</code></span></dt><dd><p>
-                    Use deprecated parsing rules before XML 1.0,
-                    5th edition.
-                </p></dd><dt><span class="term"><code class="option">--output <em class="replaceable"><code>FILE</code></em></code></span></dt><dd><p>
-                    Define a file path where <span class="command"><strong>xmllint</strong></span> will save the result of parsing.
-                    Usually the programs build a tree and save it
-                    on <code class="filename">stdout</code>, with this option
-                    the result <acronym class="acronym">XML</acronym> instance will be saved onto a file.
-                </p></dd><dt><span class="term"><code class="option">--path "<em class="replaceable"><code>PATH(S)</code></em>"</code></span></dt><dd><p>
-                    Use the (space- or colon-separated) list of filesystem paths specified
-                    by <em class="replaceable"><code>PATHS</code></em> to load <acronym class="acronym">DTD</acronym>s or
-                    entities. Enclose space-separated lists by quotation marks.
-                </p></dd><dt><span class="term"><code class="option">--pattern <em class="replaceable"><code>PATTERNVALUE</code></em></code></span></dt><dd><p>
-                    Used to exercise the pattern recognition engine, which can be used
-                    with the reader interface to the parser. It allows to select some
-                    nodes in the document based on an XPath (subset) expression. Used
-                    for debugging.
-                </p></dd><dt><span class="term"><code class="option">--pedantic</code></span></dt><dd><p>Enable additional warnings.</p></dd><dt><span class="term"><code class="option">--postvalid</code></span></dt><dd><p>Validate after parsing has completed.</p></dd><dt><span class="term"><code class="option">--pretty <em class="replaceable"><code>INTEGER</code></em></code></span></dt><dd><p>
-                    Value 0 means no formatting, 1 means XML_SAVE_FORMAT
-                    (same as --format), 2 means XML_SAVE_WSNONSIG.
-                </p></dd><dt><span class="term"><code class="option">--push</code></span></dt><dd><p>Use the push mode of the parser.</p></dd><dt><span class="term"><code class="option">--quiet</code></span></dt><dd><p>Don't print informational messages to stderr.</p></dd><dt><span class="term"><code class="option">--recover</code></span></dt><dd><p>Output any parsable portions of an invalid document.</p></dd><dt><span class="term"><code class="option">--relaxng <em class="replaceable"><code>SCHEMA</code></em></code></span></dt><dd><p>
-                    Use RelaxNG file named <em class="replaceable"><code>SCHEMA</code></em>
-                    for validation.
-                </p></dd><dt><span class="term"><code class="option">--repeat</code></span></dt><dd><p>Repeat 100 times, for timing or profiling.</p></dd><dt><span class="term"><code class="option">--sax</code></span></dt><dd><p>Print SAX callbacks (only for debugging).</p></dd><dt><span class="term"><code class="option">--sax1</code></span></dt><dd><p>Use deprecated SAX1 interface (only for debugging).</p></dd><dt><span class="term"><code class="option">--schema <em class="replaceable"><code>SCHEMA</code></em></code></span></dt><dd><p>
-                    Use a W3C <acronym class="acronym">XML</acronym> Schema file
-                    named <em class="replaceable"><code>SCHEMA</code></em> for validation.
-                </p></dd><dt><span class="term"><code class="option">--schematron <em class="replaceable"><code>SCHEMA</code></em></code></span></dt><dd><p>
-                    Use a Schematron file
-                    named <em class="replaceable"><code>SCHEMA</code></em> for validation.
-                </p></dd><dt><span class="term"><code class="option">--shell</code></span></dt><dd><p>
-                    Run a navigating shell. Details on available commands in shell mode
-                    are below (see <a class="xref" href="#shell" title="SHELL COMMANDS">the section called &#8220;SHELL COMMANDS&#8221;</a>).
-                </p></dd><dt><span class="term"><code class="option">--xpath "<em class="replaceable"><code>XPath_expression</code></em>"</code></span></dt><dd><p>
-                    Run an XPath expression given as argument and print the
-                    result. In case of a nodeset result, each node in the
-                    node set is serialized in full in the output. In case
-                    of an empty node set the "XPath set is empty" result
-                    will be shown and exit code 11 will be returned..
-                    This feature is EXPERIMENTAL. Implementation details can
-                    change without futher notice.
-                </p></dd><dt><span class="term"><code class="option">--stream</code></span></dt><dd><p>
-                    Use streaming <acronym class="acronym">API</acronym> - useful when used in combination
-                    with <code class="option">--relaxng</code> or <code class="option">--valid</code> options
-                    for validation of files that are too large to be held in memory.
-                </p></dd><dt><span class="term"><code class="option">--testIO</code></span></dt><dd><p>Test user input/output support.</p></dd><dt><span class="term"><code class="option">--timing</code></span></dt><dd><p>
-                    Output information about the time it takes <span class="command"><strong>xmllint</strong></span> to perform the
-                    various steps.
-                </p></dd><dt><span class="term"><code class="option">--valid</code></span></dt><dd><p>
-                    Determine if the document is a valid instance of the included
-                    Document Type Definition (<acronym class="acronym">DTD</acronym>).
-                    A <acronym class="acronym">DTD</acronym> to be validated against also can be
-                    specified at the command line using the <code class="option">--dtdvalid</code>
-                    option. By default, <span class="command"><strong>xmllint</strong></span> also checks to determine if the
-                    document is well-formed.
-                </p></dd><dt><span class="term"><code class="option">--version</code></span></dt><dd><p>
-                    Display the version of <span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span> used.
-                </p></dd><dt><span class="term"><code class="option">--walker</code></span></dt><dd><p>
-                    Test the walker module, which is a reader interface but for a
-                    document tree, instead of using the reader <acronym class="acronym">API</acronym> on
-                    an unparsed document it works on an existing in-memory tree. Used for
-                    debugging.
-                </p></dd><dt><span class="term"><code class="option">--xinclude</code></span></dt><dd><p>Do XInclude processing.</p></dd><dt><span class="term"><code class="option">--xmlout</code></span></dt><dd><p>
-                    Used in conjunction with <code class="option">--html</code>. Usually
-                    when <acronym class="acronym">HTML</acronym> is parsed the document is saved with
-                    the <acronym class="acronym">HTML</acronym> serializer. But with this option the
-                    resulting document is saved with the <acronym class="acronym">XML</acronym>
-                    serializer. This is primarily used to
-                    generate <acronym class="acronym">XHTML</acronym> from <acronym class="acronym">HTML</acronym> input.
-                </p></dd></dl></div></div><div class="refsect1"><a name="shell"></a><h2>SHELL COMMANDS</h2><p>
-        <span class="command"><strong>xmllint</strong></span> offers an interactive shell mode invoked with
-        the <code class="option">--shell</code> command. Available commands in shell mode
-        include (in alphabetical order):
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="command"><strong>base</strong></span></span></dt><dd><p>Display <acronym class="acronym">XML</acronym> base of the node.</p></dd><dt><span class="term"><span class="command"><strong>bye</strong></span></span></dt><dd><p>Leave the shell.</p></dd><dt><span class="term"><span class="command"><strong>cat <em class="replaceable"><code>NODE</code></em></strong></span></span></dt><dd><p>Display the given node or the current one.</p></dd><dt><span class="term"><span class="command"><strong>cd <em class="replaceable"><code>PATH</code></em></strong></span></span></dt><dd><p>
-                    Change the current node to the given path (if unique) or root if no
-                    argument is given.
-                </p></dd><dt><span class="term"><span class="command"><strong>dir <em class="replaceable"><code>PATH</code></em></strong></span></span></dt><dd><p>
-                    Dumps information about the node (namespace, attributes, content).
-                </p></dd><dt><span class="term"><span class="command"><strong>du <em class="replaceable"><code>PATH</code></em></strong></span></span></dt><dd><p>
-                    Show the structure of the subtree under the given path or the current node.
-                </p></dd><dt><span class="term"><span class="command"><strong>exit</strong></span></span></dt><dd><p>Leave the shell.</p></dd><dt><span class="term"><span class="command"><strong>help</strong></span></span></dt><dd><p>Show this help.</p></dd><dt><span class="term"><span class="command"><strong>load <em class="replaceable"><code>FILENAME</code></em></strong></span></span></dt><dd><p>Load a new document with the given filename.</p></dd><dt><span class="term"><span class="command"><strong>ls <em class="replaceable"><code>PATH</code></em></strong></span></span></dt><dd><p>List contents of the given path or the current directory.</p></dd><dt><span class="term"><span class="command"><strong>pwd</strong></span></span></dt><dd><p>Display the path to the current node.</p></dd><dt><span class="term"><span class="command"><strong>quit</strong></span></span></dt><dd><p>Leave the shell.</p></dd><dt><span class="term"><span class="command"><strong>save <em class="replaceable"><code>FILENAME</code></em></strong></span></span></dt><dd><p>
-                    Save the current document to the given filename or to the original name.
-                </p></dd><dt><span class="term"><code class="option">validate</code></span></dt><dd><p>Check the document for errors.</p></dd><dt><span class="term"><span class="command"><strong>write <em class="replaceable"><code>FILENAME</code></em></strong></span></span></dt><dd><p>Write the current node to the given filename.</p></dd></dl></div></div><div class="refsect1"><a name="environment"></a><h2>ENVIRONMENT</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="envar">SGML_CATALOG_FILES</code></span></dt><dd><p><acronym class="acronym">SGML</acronym> catalog behavior can be changed by redirecting
-                    queries to the user's own set of catalogs. This can be done by setting
-                    the <code class="envar">SGML_CATALOG_FILES</code> environment variable to a list
-                    of catalogs. An empty one should deactivate loading the
-                    default catalog.
-                </p></dd><dt><span class="term"><code class="envar">XML_CATALOG_FILES</code></span></dt><dd><p><acronym class="acronym">XML</acronym> catalog behavior can be changed by redirecting
-                    queries to the user's own set of catalogs. This can be done by setting
-                    the <code class="envar">XML_CATALOG_FILES</code> environment variable to a space-separated
-                    list of catalogs. Use percent-encoding to escape spaces or other characters.
-                    An empty variable should deactivate loading the default catalog.
-                </p></dd><dt><span class="term"><code class="envar">XML_DEBUG_CATALOG</code></span></dt><dd><p>Setting the environment variable <code class="envar">XML_DEBUG_CATALOG</code>
-                    to <em class="parameter"><code>non-zero</code></em> using the <span class="command"><strong>export</strong></span>
-                    command outputs debugging information related to catalog operations.
-                </p></dd><dt><span class="term"><code class="envar">XMLLINT_INDENT</code></span></dt><dd><p>Setting the environment variable <code class="envar">XMLLINT_INDENT</code>
-                    controls the indentation. The default value is two spaces "  ".
-                </p></dd></dl></div></div><div class="refsect1"><a name="diagnostics"></a><h2>DIAGNOSTICS</h2><p>
-        <span class="command"><strong>xmllint</strong></span> return codes provide information that can be used when
-        calling it from scripts.
-    </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="errorcode">0</span></span></dt><dd><p>No error</p></dd><dt><span class="term"><span class="errorcode">1</span></span></dt><dd><p>Unclassified</p></dd><dt><span class="term"><span class="errorcode">2</span></span></dt><dd><p>Error in <acronym class="acronym">DTD</acronym></p></dd><dt><span class="term"><span class="errorcode">3</span></span></dt><dd><p>Validation error</p></dd><dt><span class="term"><span class="errorcode">4</span></span></dt><dd><p>Validation error</p></dd><dt><span class="term"><span class="errorcode">5</span></span></dt><dd><p>Error in schema compilation</p></dd><dt><span class="term"><span class="errorcode">6</span></span></dt><dd><p>Error writing output</p></dd><dt><span class="term"><span class="errorcode">7</span></span></dt><dd><p>
-                    Error in pattern (generated when <code class="option">--pattern</code> option is used)
-                </p></dd><dt><span class="term"><span class="errorcode">9</span></span></dt><dd><p>Out of memory error</p></dd><dt><span class="term"><span class="errorcode">10</span></span></dt><dd><p>XPath evaluation error</p></dd><dt><span class="term"><span class="errorcode">11</span></span></dt><dd><p>XPath result is empty</p></dd></dl></div></div><div class="refsect1"><a name="seealso"></a><h2>SEE ALSO</h2><p><span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span>
-    </p><p>
-        More information can be found at
-        </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="citerefentry"><span class="refentrytitle">libxml</span>(3)</span> web page <a class="ulink" href="https://gitlab.gnome.org/GNOME/libxml2" target="_top">https://gitlab.gnome.org/GNOME/libxml2</a>
-                </p></li></ul></div><p>
-    </p></div></div></body></html>
diff -pruN 2.14.6+dfsg-0.1/doc/xmllint.xml 2.15.0+dfsg-0.3/doc/xmllint.xml
--- 2.14.6+dfsg-0.1/doc/xmllint.xml	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/doc/xmllint.xml	2025-09-15 11:55:59.000000000 +0000
@@ -11,7 +11,7 @@
 
 <refentryinfo>
     <title>xmllint Manual</title>
-    <productname>libxml2</productname>
+    <productname>xmllint</productname>
     <copyright>
         <year>2001</year>
         <year>2004</year>
@@ -20,6 +20,7 @@
         <author>
             <firstname>John</firstname>
             <surname>Fleck</surname>
+            <contrib></contrib>
             <affiliation>
                 <address>
                     <email>jfleck@inkstain.net</email>
@@ -29,6 +30,7 @@
         <author>
             <firstname>Ziying</firstname>
             <surname>Sherwin</surname>
+            <contrib></contrib>
             <affiliation>
                 <address>
                     <email>sherwin@nlm.nih.gov</email>
@@ -38,6 +40,7 @@
         <author>
             <firstname>Heiko</firstname>
             <surname>Rupp</surname>
+            <contrib></contrib>
             <affiliation>
                 <address>
                     <email>hwr@pilhuhn.de</email>
@@ -69,7 +72,6 @@
             <arg choice="plain"><option>--quiet</option></arg>
             <arg choice="plain"><option>--shell</option></arg>
             <arg choice="plain"><option>--xpath "<replaceable class="option">XPath_expression</replaceable>"</option></arg>
-            <arg choice="plain"><option>--debugent</option></arg>
             <arg choice="plain"><option>--copy</option></arg>
             <arg choice="plain"><option>--recover</option></arg>
             <arg choice="plain"><option>--huge</option></arg>
@@ -83,8 +85,6 @@
             <arg choice="plain"><option>--nonet</option></arg>
             <arg choice="plain"><option>--path "<replaceable class="option">PATH(S)</replaceable>"</option></arg>
             <arg choice="plain"><option>--load-trace</option></arg>
-            <arg choice="plain"><option>--htmlout</option></arg>
-            <arg choice="plain"><option>--nowrap</option></arg>
             <arg choice="plain"><option>--valid</option></arg>
             <arg choice="plain"><option>--postvalid</option></arg>
             <arg choice="plain"><option>--dtdvalid <replaceable class="option">URL</replaceable></option></arg>
@@ -93,6 +93,7 @@
             <arg choice="plain"><option>--output <replaceable class="option">FILE</replaceable></option></arg>
             <arg choice="plain"><option>--repeat</option></arg>
             <arg choice="plain"><option>--insert</option></arg>
+            <arg choice="plain"><option>--strict-namespace</option></arg>
             <arg choice="plain"><option>--compress</option></arg>
             <arg choice="plain"><option>--html</option></arg>
             <arg choice="plain"><option>--xmlout</option></arg>
@@ -108,7 +109,6 @@
             <arg choice="plain"><option>--encode <replaceable class="option">ENCODING</replaceable></option></arg>
             <arg choice="plain"><option>--dropdtd</option></arg>
             <arg choice="plain"><option>--nsclean</option></arg>
-            <arg choice="plain"><option>--testIO</option></arg>
             <arg choice="plain"><option>--catalogs</option></arg>
             <arg choice="plain"><option>--nocatalogs</option></arg>
             <arg choice="plain"><option>--auto</option></arg>
@@ -148,415 +148,436 @@
         errors both in <acronym>XML</acronym> code and in
         the <acronym>XML</acronym> parser itself.
     </para>
-    <para>&xmllint; is included in <citerefentry>
-        <refentrytitle>libxml</refentrytitle>
-        <manvolnum>3</manvolnum>
-    </citerefentry>.</para>
+    <para>&xmllint; is part of the libxml2 library.</para>
 </refsect1>
 
-<refsect1 id="options">
-    <title>OPTIONS</title>
+<refsect1 id="validation-options">
+    <title>VALIDATION OPTIONS</title>
     <para>
-        &xmllint; accepts the following options (in alphabetical order):
+        Options enabling validation.
     </para>
 
     <variablelist>
 
         <varlistentry>
-            <term><option>--auto</option></term>
-            <listitem>
-                <para>Generate a small document for testing purposes.</para>
-            </listitem>
-        </varlistentry>
-
-        <varlistentry>
-            <term><option>--catalogs</option></term>
+            <term><option>--dtdvalid <replaceable class="option">URL</replaceable></option></term>
             <listitem>
                 <para>
-                    Use the <acronym>SGML</acronym> catalog(s) from <envar>SGML_CATALOG_FILES</envar>.
-                    Otherwise <acronym>XML</acronym> catalogs starting
-                    from <filename>/etc/xml/catalog</filename> or, more specifically,
-                    <filename>${sysconfdir}/xml/catalog</filename> are used by default.
+                    Use the <acronym>DTD</acronym> specified by
+                    an <replaceable>URL</replaceable> for validation.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--compress</option></term>
+            <term><option>--dtdvalidfpi <replaceable class="option">FPI</replaceable></option></term>
             <listitem>
                 <para>
-                    Turn on <citerefentry>
-                <refentrytitle>gzip</refentrytitle>
-                <manvolnum>1</manvolnum>
-            </citerefentry> compression of output.
+                    Use the <acronym>DTD</acronym> specified by a Formal Public
+                    Identifier <replaceable>FPI</replaceable> for validation, note that this
+                    will require a catalog exporting that Formal Public Identifier to work.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--copy</option></term>
+            <term><option>--relaxng <replaceable class="option">SCHEMA</replaceable></option></term>
             <listitem>
-                <para>Test the internal copy implementation.</para>
+                <para>
+                    Use RelaxNG file named <replaceable class="option">SCHEMA</replaceable>
+                    for validation.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--c14n</option></term>
-            <term><option>--c14n11</option></term>
-            <term><option>--exc-c14n</option></term>
+            <term><option>--schema <replaceable>SCHEMA</replaceable></option></term>
             <listitem>
                 <para>
-                    Use the W3C <acronym>XML</acronym> Canonicalisation (<acronym>C14N</acronym>) to
-                    serialize the result of parsing to <filename class="devicefile">stdout</filename>.
-                    It keeps comments in the result.
+                    Use a W3C <acronym>XML</acronym> Schema file
+                    named <replaceable>SCHEMA</replaceable> for validation.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--dtdvalid <replaceable class="option">URL</replaceable></option></term>
+            <term><option>--schematron <replaceable>SCHEMA</replaceable></option></term>
             <listitem>
                 <para>
-                    Use the <acronym>DTD</acronym> specified by
-                    an <replaceable>URL</replaceable> for validation.
+                    Use a Schematron file
+                    named <replaceable>SCHEMA</replaceable> for validation.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--dtdvalidfpi <replaceable class="option">FPI</replaceable></option></term>
+            <term><option>--valid</option></term>
             <listitem>
                 <para>
-                    Use the <acronym>DTD</acronym> specified by a Formal Public
-                    Identifier <replaceable>FPI</replaceable> for validation, note that this
-                    will require a catalog exporting that Formal Public Identifier to work.
+                    Determine if the document is a valid instance of the included
+                    Document Type Definition (<acronym>DTD</acronym>).
+                    A <acronym>DTD</acronym> to be validated against also can be
+                    specified at the command line using the <option>--dtdvalid</option>
+                    option. By default, &xmllint; also checks to determine if the
+                    document is well-formed.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--debug</option></term>
+            <term><option>--strict-namespace</option></term>
             <listitem>
                 <para>
-                    Parse a file and output an annotated tree of the
-                    in-memory version of the document.
+                    Return an error if the document is well-formed, but has namespace
+                    errors.  This enforces namespace-well-formedness.
                 </para>
             </listitem>
         </varlistentry>
 
-        <varlistentry>
-            <term><option>--debugent</option></term>
-            <listitem>
-                <para>Debug the entities defined in the document.</para>
-            </listitem>
-        </varlistentry>
+    </variablelist>
+</refsect1>
 
-        <varlistentry>
-            <term><option>--dropdtd</option></term>
-            <listitem>
-                <para>Remove <acronym>DTD</acronym> from output.</para>
-            </listitem>
-        </varlistentry>
+<refsect1 id="parser-options">
+    <title>PARSER OPTIONS</title>
+    <para>
+        The following options set the respective parser options.
+    </para>
+
+    <variablelist>
 
         <varlistentry>
             <term><option>--dtdattr</option></term>
             <listitem>
                 <para>
                     Fetch external <acronym>DTD</acronym> and populate the tree with
-                    inherited attributes.
+                    inherited attributes. Implies <option>--loaddtd</option>.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--encode <replaceable class="option">ENCODING</replaceable></option></term>
+            <term><option>--huge</option></term>
             <listitem>
-                <para>Output in the given encoding. Note that this works for full document not fragments or result from XPath queries.</para>
+                <para>Ignore some hardcoded parser limits.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--format</option></term>
+            <term><option>--loaddtd</option></term>
             <listitem>
                 <para>
-                    Reformat and reindent the output. The <envar>XMLLINT_INDENT</envar>
-                    environment variable controls the indentation. The default value is two
-                    spaces &quot;  &quot;).
-                </para>
-                <para>
-                    Especially in the absence of a DTD, this feature has never worked reliably
-                    and is fundamentally broken.
+                    Fetch an external <acronym>DTD</acronym> and external
+                    parameter entities.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--html</option></term>
+            <term><option>--max-ampl <replaceable class="option">INTEGER</replaceable></option></term>
             <listitem>
-                <para>Use the <acronym>HTML</acronym> parser.</para>
+                <para>
+                    Set the maximum amplification factor which protects against
+                    exponential entity expansion ("billion laughs"). The default value
+                    is 5. Documents making heavy use of entity expansion may require a
+                    higher value.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--htmlout</option></term>
+            <term><option>--noblanks</option></term>
             <listitem>
                 <para>
-                    Output results as an <acronym>HTML</acronym> file. This
-                    causes &xmllint; to output the necessary <acronym>HTML</acronym>
-                    tags surrounding the result tree output so the results can be
-                    displayed/viewed in a browser.
+                    Drop "ignorable" blank spaces. This option is unreliable
+                    and shouldn't be used.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--huge</option></term>
+            <term><option>--nocatalogs</option></term>
             <listitem>
-                <para>Ignore some hardcoded parser limits.</para>
+                <para>Do not use any catalogs.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--insert</option></term>
+            <term><option>--nocdata</option></term>
             <listitem>
-                <para>Test for valid insertions.</para>
+                <para>Substitute CDATA section by equivalent text nodes.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--loaddtd</option></term>
+            <term><option>--nodefdtd</option></term>
             <listitem>
-                <para>Fetch an external <acronym>DTD</acronym>.</para>
+                <para>
+                    Do not set default HTML doctype (parser option
+                    HTML_PARSE_NODEFDTD).
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--load-trace</option></term>
+            <term><option>--noenc</option></term>
             <listitem>
                 <para>
-                    Display all the documents loaded during the processing
-                    to <filename class="devicefile">stderr</filename>.
+                    Ignore encoding declaration (parser option
+                    XML_PARSE_IGNORE_ENC).
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--max-ampl <replaceable class="option">INTEGER</replaceable></option></term>
+            <term><option>--noent</option></term>
             <listitem>
                 <para>
-                    Set the maximum amplification factor which protects against
-                    exponential entity expansion ("billion laughs"). The default value
-                    is 5. Documents making heavy use of entity expansion may require a
-                    higher value.
+                    Substitute entity values for entity references. By default, &xmllint;
+                    leaves entity references in place. This enables loading of
+                    external DTDs and entities.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--maxmem <replaceable class="option">NNBYTES</replaceable></option></term>
+            <term><option>--nofixup-base-uris</option></term>
             <listitem>
                 <para>
-                    Test the parser memory support. <replaceable>NNBYTES</replaceable>
-                    is the maximum number of bytes the library is allowed to allocate.
-                    This can also be used to make sure batch processing
-                    of <acronym>XML</acronym> files will not exhaust the virtual memory
-                    of the server running them.
+                    Don't fix xml:base URIs when processing XIncludes
+                    (parser option XML_PARSE_NOBASEFIX).
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--memory</option></term>
+            <term><option>--nonet</option></term>
             <listitem>
-                <para>Parse from memory.</para>
+                <para>
+                    Do not use the Internet to fetch <acronym>DTD</acronym>s or entities. Has no effect with libxml2 2.15 or later.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--noblanks</option></term>
+            <term><option>--nowarning</option></term>
             <listitem>
-                <para>Drop ignorable blank spaces.</para>
+                <para>Do not emit warnings from the parser and/or validator.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nocatalogs</option></term>
+            <term><option>--nsclean</option></term>
             <listitem>
-                <para>Do not use any catalogs.</para>
+                <para>Remove redundant namespace declarations.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nocdata</option></term>
+            <term><option>--oldxml10</option></term>
             <listitem>
-                <para>Substitute CDATA section by equivalent text nodes.</para>
+                <para>
+                    Use deprecated parsing rules before XML 1.0,
+                    5th edition.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nocompact</option></term>
+            <term><option>--pedantic</option></term>
             <listitem>
-                <para>
-                    Do not generate compact text nodes (parser option
-                    XML_PARSE_COMPACT). Only for debugging.
-                </para>
+                <para>Enable additional warnings.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nodefdtd</option></term>
+            <term><option>--recover</option></term>
             <listitem>
                 <para>
-                    Do not set default HTML doctype (parser option
-                    HTML_PARSE_NODEFDTD).
+                    Output any parsable portions of an invalid document.
+                    Exact behavior is unspecified. Use of this option
+                    is discouraged.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nodict</option></term>
+            <term><option>--xinclude</option></term>
             <listitem>
-                <para>
-                    Don't use dictionaries (parser option XML_PARSE_NODICT).
-                    Only for debugging.
-                </para>
+                <para>Do XInclude processing.</para>
             </listitem>
         </varlistentry>
 
+    </variablelist>
+</refsect1>
+
+<refsect1 id="miscellaneous-options">
+    <title>MISCELLANEOUS OPTIONS</title>
+    <para>
+        Options that don't fall in another category.
+    </para>
+
+    <variablelist>
+
         <varlistentry>
-            <term><option>--noenc</option></term>
+            <term><option>--catalogs</option></term>
             <listitem>
                 <para>
-                    Ignore encoding declaration (parser option
-                    XML_PARSE_IGNORE_ENC).
+                    Use the <acronym>SGML</acronym> catalog(s) from <envar>SGML_CATALOG_FILES</envar>.
+                    <acronym>XML</acronym> catalogs are loaded by default.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--noent</option></term>
+            <term><option>--dropdtd</option></term>
             <listitem>
-                <para>
-                    Substitute entity values for entity references. By default, &xmllint;
-                    leaves entity references in place.
-                </para>
+                <para>Remove <acronym>DTD</acronym> after parsing.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nofixup-base-uris</option></term>
+            <term><option>--html</option></term>
             <listitem>
-                <para>
-                    Don't fix xml:base URIs when processing XIncludes
-                    (parser option XML_PARSE_NOBASEFIX).
-                </para>
+                <para>Use the <acronym>HTML</acronym> parser.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nonet</option></term>
+            <term><option>--path "<replaceable class="option">PATH(S)</replaceable>"</option></term>
             <listitem>
                 <para>
-                    Do not use the Internet to fetch <acronym>DTD</acronym>s or entities.
+                    Use the (space- or colon-separated) list of filesystem paths specified
+                    by <replaceable>PATHS</replaceable> to load <acronym>DTD</acronym>s or
+                    entities. Enclose space-separated lists by quotation marks.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--noout</option></term>
+            <term><option>--quiet</option></term>
             <listitem>
-                <para>
-                    Suppress output. By default, &xmllint; outputs the result tree.
-                </para>
+                <para>Don't print informational messages to stderr.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nowarning</option></term>
+            <term><option>--sax</option></term>
             <listitem>
-                <para>Do not emit warnings from the parser and/or validator.</para>
+                <para>
+                    Print SAX callbacks for debugging. Can be used
+                    for streaming DTD and Schema validation when used
+                    with <option>--noout</option>.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nowrap</option></term>
+            <term><option>--shell</option></term>
             <listitem>
-                <para>Do not output <acronym>HTML</acronym> doc wrapper.</para>
+                <para>
+                    Run a navigating shell. Details on available commands in shell mode
+                    are below (see <xref linkend="shell"/>).
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--noxincludenode</option></term>
+            <term><option>--stream</option></term>
             <listitem>
                 <para>
-                    Do XInclude processing but do not generate XInclude start and end nodes.
+                    Use streaming <acronym>API</acronym> - useful when used in combination
+                    with <option>--relaxng</option> or <option>--valid</option> options
+                    for validation of files that are too large to be held in memory.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--nsclean</option></term>
+            <term><option>--version</option></term>
             <listitem>
-                <para>Remove redundant namespace declarations.</para>
+                <para>
+                    Display the version of libxml2 used.
+                </para>
             </listitem>
         </varlistentry>
 
+    </variablelist>
+</refsect1>
+
+<refsect1 id="output-options">
+    <title>OUTPUT OPTIONS</title>
+    <para>
+        Options controlling output. Except for <option>--noout</option>
+        these have no effect in SAX or stream mode.
+    </para>
+
+    <variablelist>
+
         <varlistentry>
-            <term><option>--oldxml10</option></term>
+            <term><option>--compress</option></term>
             <listitem>
                 <para>
-                    Use deprecated parsing rules before XML 1.0,
-                    5th edition.
+                    Turn on <citerefentry>
+                <refentrytitle>gzip</refentrytitle>
+                <manvolnum>1</manvolnum>
+            </citerefentry> compression of output.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--output <replaceable class="option">FILE</replaceable></option></term>
+            <term><option>--c14n</option></term>
+            <term><option>--c14n11</option></term>
+            <term><option>--exc-c14n</option></term>
             <listitem>
                 <para>
-                    Define a file path where &xmllint; will save the result of parsing.
-                    Usually the programs build a tree and save it
-                    on <filename class="devicefile">stdout</filename>, with this option
-                    the result <acronym>XML</acronym> instance will be saved onto a file.
+                    Use the W3C <acronym>XML</acronym> Canonicalisation (<acronym>C14N</acronym>) to
+                    serialize the result of parsing to <filename class="devicefile">stdout</filename>.
+                    It keeps comments in the result.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--path "<replaceable class="option">PATH(S)</replaceable>"</option></term>
+            <term><option>--encode <replaceable class="option">ENCODING</replaceable></option></term>
             <listitem>
-                <para>
-                    Use the (space- or colon-separated) list of filesystem paths specified
-                    by <replaceable>PATHS</replaceable> to load <acronym>DTD</acronym>s or
-                    entities. Enclose space-separated lists by quotation marks.
-                </para>
+                <para>Output in the given encoding. Note that this works for full document not fragments or result from XPath queries.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--pattern <replaceable class="option">PATTERNVALUE</replaceable></option></term>
+            <term><option>--format</option></term>
             <listitem>
                 <para>
-                    Used to exercise the pattern recognition engine, which can be used
-                    with the reader interface to the parser. It allows to select some
-                    nodes in the document based on an XPath (subset) expression. Used
-                    for debugging.
+                    Reformat and reindent the output. The <envar>XMLLINT_INDENT</envar>
+                    environment variable controls the indentation. The default value is two
+                    spaces &quot;  &quot;).
+                </para>
+                <para>
+                    Especially in the absence of a DTD, this feature has never worked reliably
+                    and is fundamentally broken.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--pedantic</option></term>
+            <term><option>--noout</option></term>
             <listitem>
-                <para>Enable additional warnings.</para>
+                <para>
+                    Suppress output. By default, &xmllint; outputs the result tree.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--postvalid</option></term>
+            <term><option>--output <replaceable class="option">FILE</replaceable></option></term>
             <listitem>
-                <para>Validate after parsing has completed.</para>
+                <para>
+                    Define a file path where &xmllint; will save the result of parsing.
+                    Usually the programs build a tree and save it
+                    on <filename class="devicefile">stdout</filename>, with this option
+                    the result <acronym>XML</acronym> instance will be saved onto a file.
+                </para>
             </listitem>
         </varlistentry>
 
@@ -571,152 +592,170 @@
         </varlistentry>
 
         <varlistentry>
-            <term><option>--push</option></term>
+            <term><option>--xmlout</option></term>
             <listitem>
-                <para>Use the push mode of the parser.</para>
+                <para>
+                    Used in conjunction with <option>--html</option>. Usually
+                    when <acronym>HTML</acronym> is parsed the document is saved with
+                    the <acronym>HTML</acronym> serializer. But with this option the
+                    resulting document is saved with the <acronym>XML</acronym>
+                    serializer. This is primarily used to
+                    generate <acronym>XHTML</acronym> from <acronym>HTML</acronym> input.
+                </para>
             </listitem>
         </varlistentry>
 
+    </variablelist>
+</refsect1>
+
+<refsect1 id="debug-options">
+    <title>DEBUG OPTIONS</title>
+    <para>
+        The following options can be used to debug the libxml2 library.
+        Behavior of these options may change without notice.
+    </para>
+
+    <variablelist>
+
         <varlistentry>
-            <term><option>--quiet</option></term>
+            <term><option>--auto</option></term>
             <listitem>
-                <para>Don't print informational messages to stderr.</para>
+                <para>Generate a small document for testing purposes.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--recover</option></term>
+            <term><option>--copy</option></term>
             <listitem>
-                <para>Output any parsable portions of an invalid document.</para>
+                <para>Test the internal copy implementation.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--relaxng <replaceable class="option">SCHEMA</replaceable></option></term>
+            <term><option>--debug</option></term>
             <listitem>
                 <para>
-                    Use RelaxNG file named <replaceable class="option">SCHEMA</replaceable>
-                    for validation.
+                    Parse a file and output an annotated tree of the
+                    in-memory version of the document.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--repeat</option></term>
+            <term><option>--insert</option></term>
             <listitem>
-                <para>Repeat 100 times, for timing or profiling.</para>
+                <para>
+                    Test for valid insertions. DEPRECATED: This feature
+                    will be removed.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--sax</option></term>
+            <term><option>--load-trace</option></term>
             <listitem>
-                <para>Print SAX callbacks (only for debugging).</para>
+                <para>
+                    Display all the documents loaded during the processing
+                    to <filename class="devicefile">stderr</filename>.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--sax1</option></term>
+            <term><option>--maxmem <replaceable class="option">NNBYTES</replaceable></option></term>
             <listitem>
-                <para>Use deprecated SAX1 interface (only for debugging).</para>
+                <para>
+                    Test the parser memory support. <replaceable>NNBYTES</replaceable>
+                    is the maximum number of bytes the library is allowed to allocate.
+                    This can also be used to make sure batch processing
+                    of <acronym>XML</acronym> files will not exhaust the virtual memory
+                    of the server running them.
+                </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--schema <replaceable>SCHEMA</replaceable></option></term>
+            <term><option>--memory</option></term>
             <listitem>
-                <para>
-                    Use a W3C <acronym>XML</acronym> Schema file
-                    named <replaceable>SCHEMA</replaceable> for validation.
-                </para>
+                <para>Parse from memory.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--schematron <replaceable>SCHEMA</replaceable></option></term>
+            <term><option>--nocompact</option></term>
             <listitem>
                 <para>
-                    Use a Schematron file
-                    named <replaceable>SCHEMA</replaceable> for validation.
+                    Do not generate compact text nodes (parser option
+                    XML_PARSE_COMPACT). Only for debugging.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--shell</option></term>
+            <term><option>--nodict</option></term>
             <listitem>
                 <para>
-                    Run a navigating shell. Details on available commands in shell mode
-                    are below (see <xref linkend="shell"/>).
+                    Don't use dictionaries (parser option XML_PARSE_NODICT).
+                    Only for debugging.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--xpath "<replaceable class="option">XPath_expression</replaceable>"</option></term>
+            <term><option>--noxincludenode</option></term>
             <listitem>
                 <para>
-                    Run an XPath expression given as argument and print the
-                    result. In case of a nodeset result, each node in the
-                    node set is serialized in full in the output. In case
-                    of an empty node set the "XPath set is empty" result
-                    will be shown and exit code 11 will be returned..
-                    This feature is EXPERIMENTAL. Implementation details can
-                    change without futher notice.
+                    Do XInclude processing but do not generate XInclude start and end nodes.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--stream</option></term>
+            <term><option>--pattern <replaceable class="option">PATTERNVALUE</replaceable></option></term>
             <listitem>
                 <para>
-                    Use streaming <acronym>API</acronym> - useful when used in combination
-                    with <option>--relaxng</option> or <option>--valid</option> options
-                    for validation of files that are too large to be held in memory.
+                    Used to exercise the pattern recognition engine, which can be used
+                    with the reader interface to the parser. It allows to select some
+                    nodes in the document based on an XPath (subset) expression. Used
+                    for debugging.
                 </para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--testIO</option></term>
+            <term><option>--postvalid</option></term>
+            <listitem>
+                <para>Validate after parsing has completed.</para>
+            </listitem>
+        </varlistentry>
+
+        <varlistentry>
+            <term><option>--push</option></term>
             <listitem>
-                <para>Test user input/output support.</para>
+                <para>Use the push mode of the parser.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--timing</option></term>
+            <term><option>--repeat</option></term>
             <listitem>
-                <para>
-                    Output information about the time it takes &xmllint; to perform the
-                    various steps.
-                </para>
+                <para>Repeat 100 times, for timing or profiling.</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--valid</option></term>
+            <term><option>--sax1</option></term>
             <listitem>
-                <para>
-                    Determine if the document is a valid instance of the included
-                    Document Type Definition (<acronym>DTD</acronym>).
-                    A <acronym>DTD</acronym> to be validated against also can be
-                    specified at the command line using the <option>--dtdvalid</option>
-                    option. By default, &xmllint; also checks to determine if the
-                    document is well-formed.
-                </para>
+                <para>Use deprecated SAX1 interface (only for debugging).</para>
             </listitem>
         </varlistentry>
 
         <varlistentry>
-            <term><option>--version</option></term>
+            <term><option>--timing</option></term>
             <listitem>
                 <para>
-                    Display the version of <citerefentry>
-                <refentrytitle>libxml</refentrytitle>
-                <manvolnum>3</manvolnum>
-            </citerefentry> used.
+                    Output information about the time it takes &xmllint; to perform the
+                    various steps.
                 </para>
             </listitem>
         </varlistentry>
@@ -734,22 +773,14 @@
         </varlistentry>
 
         <varlistentry>
-            <term><option>--xinclude</option></term>
-            <listitem>
-                <para>Do XInclude processing.</para>
-            </listitem>
-        </varlistentry>
-
-        <varlistentry>
-            <term><option>--xmlout</option></term>
+            <term><option>--xpath "<replaceable class="option">XPath_expression</replaceable>"</option></term>
             <listitem>
                 <para>
-                    Used in conjunction with <option>--html</option>. Usually
-                    when <acronym>HTML</acronym> is parsed the document is saved with
-                    the <acronym>HTML</acronym> serializer. But with this option the
-                    resulting document is saved with the <acronym>XML</acronym>
-                    serializer. This is primarily used to
-                    generate <acronym>XHTML</acronym> from <acronym>HTML</acronym> input.
+                    Run an XPath expression given as argument and print the
+                    result. In case of a nodeset result, each node in the
+                    node set is serialized in full in the output. In case
+                    of an empty node set the "XPath set is empty" result
+                    will be shown and exit code 11 will be returned..
                 </para>
             </listitem>
         </varlistentry>
@@ -974,7 +1005,7 @@
         <varlistentry>
             <term><errorcode>4</errorcode></term>
             <listitem>
-                <para>Validation error</para>
+                <para>Document isn't well-formed or couldn't be read</para>
             </listitem>
         </varlistentry>
 
@@ -1027,22 +1058,9 @@
 
 <refsect1 id="seealso">
     <title>SEE ALSO</title>
-    <para><citerefentry>
-            <refentrytitle>libxml</refentrytitle>
-            <manvolnum>3</manvolnum>
-        </citerefentry>
-    </para>
     <para>
-        More information can be found at
-        <itemizedlist>
-            <listitem>
-                <para><citerefentry>
-                        <refentrytitle>libxml</refentrytitle>
-                        <manvolnum>3</manvolnum>
-                    </citerefentry> web page <ulink url="https://gitlab.gnome.org/GNOME/libxml2"/>
-                </para>
-            </listitem>
-        </itemizedlist>
+        More information can be found in the libxml2 repo at
+        <ulink url="https://gitlab.gnome.org/GNOME/libxml2"/>
     </para>
 </refsect1>
 
diff -pruN 2.14.6+dfsg-0.1/encoding.c 2.15.0+dfsg-0.3/encoding.c
--- 2.14.6+dfsg-0.1/encoding.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/encoding.c	2025-09-15 11:55:59.000000000 +0000
@@ -9,15 +9,15 @@
  * [UNICODE]      The Unicode Consortium, "The Unicode Standard --
  *                Worldwide Character Encoding -- Version 1.0", Addison-
  *                Wesley, Volume 1, 1991, Volume 2, 1992.  UTF-8 is
- *                described in Unicode Technical Report #4.
+ *                described in Unicode Technical Report \#4.
  * [US-ASCII]     Coded Character Set--7-bit American Standard Code for
  *                Information Interchange, ANSI X3.4-1986.
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  *
- * Original code for IsoLatin1 and UTF-16 by "Martin J. Duerst" <duerst@w3.org>
+ * Original code for IsoLatin1 and UTF-16 by Martin J. Duerst
  */
 
 #define IN_LIBXML
@@ -43,7 +43,6 @@
 
 #include "private/buf.h"
 #include "private/enc.h"
-#include "private/entities.h"
 #include "private/error.h"
 #include "private/memory.h"
 
@@ -73,43 +72,163 @@ typedef struct {
 } xmlEncTableEntry;
 
 static const xmlEncTableEntry xmlEncTable[] = {
-    { "ASCII", XML_CHAR_ENCODING_ASCII },
-    { "EUC-JP", XML_CHAR_ENCODING_EUC_JP },
-    { "HTML", XML_CHAR_ENCODING_HTML },
-    { "ISO LATIN 1", XML_CHAR_ENCODING_8859_1 },
-    { "ISO LATIN 2", XML_CHAR_ENCODING_8859_2 },
-    { "ISO-10646-UCS-2", XML_CHAR_ENCODING_UCS2 },
-    { "ISO-10646-UCS-4", XML_CHAR_ENCODING_UCS4LE },
-    { "ISO-2022-JP", XML_CHAR_ENCODING_2022_JP },
-    { "ISO-8859-1", XML_CHAR_ENCODING_8859_1 },
-    { "ISO-8859-10", XML_CHAR_ENCODING_8859_10 },
-    { "ISO-8859-11", XML_CHAR_ENCODING_8859_11 },
-    { "ISO-8859-13", XML_CHAR_ENCODING_8859_13 },
-    { "ISO-8859-14", XML_CHAR_ENCODING_8859_14 },
-    { "ISO-8859-15", XML_CHAR_ENCODING_8859_15 },
-    { "ISO-8859-16", XML_CHAR_ENCODING_8859_16 },
-    { "ISO-8859-2", XML_CHAR_ENCODING_8859_2 },
-    { "ISO-8859-3", XML_CHAR_ENCODING_8859_3 },
-    { "ISO-8859-4", XML_CHAR_ENCODING_8859_4 },
-    { "ISO-8859-5", XML_CHAR_ENCODING_8859_5 },
-    { "ISO-8859-6", XML_CHAR_ENCODING_8859_6 },
-    { "ISO-8859-7", XML_CHAR_ENCODING_8859_7 },
-    { "ISO-8859-8", XML_CHAR_ENCODING_8859_8 },
-    { "ISO-8859-9", XML_CHAR_ENCODING_8859_9 },
-    { "ISO-LATIN-1", XML_CHAR_ENCODING_8859_1 },
-    { "ISO-LATIN-2", XML_CHAR_ENCODING_8859_2 },
-    { "SHIFT_JIS", XML_CHAR_ENCODING_SHIFT_JIS },
-    { "UCS-2", XML_CHAR_ENCODING_UCS2 },
-    { "UCS-4", XML_CHAR_ENCODING_UCS4LE },
-    { "UCS2", XML_CHAR_ENCODING_UCS2 },
-    { "UCS4", XML_CHAR_ENCODING_UCS4LE },
-    { "US-ASCII", XML_CHAR_ENCODING_ASCII },
-    { "UTF-16", XML_CHAR_ENCODING_UTF16 },
-    { "UTF-16BE", XML_CHAR_ENCODING_UTF16BE },
-    { "UTF-16LE", XML_CHAR_ENCODING_UTF16LE },
-    { "UTF-8", XML_CHAR_ENCODING_UTF8 },
-    { "UTF16", XML_CHAR_ENCODING_UTF16 },
-    { "UTF8", XML_CHAR_ENCODING_UTF8 }
+    { "ansi_x3.4-1968", XML_CHAR_ENCODING_ASCII },
+    { "arabic", XML_CHAR_ENCODING_8859_6 },
+    { "ascii", XML_CHAR_ENCODING_ASCII },
+    { "asmo-708", XML_CHAR_ENCODING_8859_6 },
+    { "cp1252", XML_CHAR_ENCODING_WINDOWS_1252 },
+    { "cp819", XML_CHAR_ENCODING_8859_1 },
+    { "cseucpkdfmtjapanese", XML_CHAR_ENCODING_EUC_JP },
+    { "csiso2022jp", XML_CHAR_ENCODING_2022_JP },
+    { "csiso88596e", XML_CHAR_ENCODING_8859_6 },
+    { "csiso88596i", XML_CHAR_ENCODING_8859_6 },
+    { "csiso88598e", XML_CHAR_ENCODING_8859_8 },
+    { "csiso88598i", XML_CHAR_ENCODING_8859_8 },
+    { "csisolatin1", XML_CHAR_ENCODING_8859_1 },
+    { "csisolatin2", XML_CHAR_ENCODING_8859_2 },
+    { "csisolatin3", XML_CHAR_ENCODING_8859_3 },
+    { "csisolatin4", XML_CHAR_ENCODING_8859_4 },
+    { "csisolatin5", XML_CHAR_ENCODING_8859_9 },
+    { "csisolatin6", XML_CHAR_ENCODING_8859_10 },
+    { "csisolatin9", XML_CHAR_ENCODING_8859_15 },
+    { "csisolatinarabic", XML_CHAR_ENCODING_8859_6 },
+    { "csisolatincyrillic", XML_CHAR_ENCODING_8859_5 },
+    { "csisolatingreek", XML_CHAR_ENCODING_8859_7 },
+    { "csisolatinhebrew", XML_CHAR_ENCODING_8859_8 },
+    { "csshiftjis", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "csunicode", XML_CHAR_ENCODING_UTF16 },
+    { "cyrillic", XML_CHAR_ENCODING_8859_5 },
+    { "ecma-114", XML_CHAR_ENCODING_8859_6 },
+    { "ecma-118", XML_CHAR_ENCODING_8859_7 },
+    { "elot_928", XML_CHAR_ENCODING_8859_7 },
+    { "euc-jp", XML_CHAR_ENCODING_EUC_JP },
+    { "greek", XML_CHAR_ENCODING_8859_7 },
+    { "greek8", XML_CHAR_ENCODING_8859_7 },
+    { "html", XML_CHAR_ENCODING_HTML },
+    { "ibm819", XML_CHAR_ENCODING_8859_1 },
+    { "iso latin 1", XML_CHAR_ENCODING_8859_1 },
+    { "iso latin 2", XML_CHAR_ENCODING_8859_2 },
+    { "iso-10646-ucs-2", XML_CHAR_ENCODING_UCS2 },
+    { "iso-10646-ucs-4", XML_CHAR_ENCODING_UCS4LE },
+    { "iso-2022-jp", XML_CHAR_ENCODING_2022_JP },
+    { "iso-8859-1", XML_CHAR_ENCODING_8859_1 },
+    { "iso-8859-10", XML_CHAR_ENCODING_8859_10 },
+    { "iso-8859-11", XML_CHAR_ENCODING_8859_11 },
+    { "iso-8859-13", XML_CHAR_ENCODING_8859_13 },
+    { "iso-8859-14", XML_CHAR_ENCODING_8859_14 },
+    { "iso-8859-15", XML_CHAR_ENCODING_8859_15 },
+    { "iso-8859-16", XML_CHAR_ENCODING_8859_16 },
+    { "iso-8859-2", XML_CHAR_ENCODING_8859_2 },
+    { "iso-8859-3", XML_CHAR_ENCODING_8859_3 },
+    { "iso-8859-4", XML_CHAR_ENCODING_8859_4 },
+    { "iso-8859-5", XML_CHAR_ENCODING_8859_5 },
+    { "iso-8859-6", XML_CHAR_ENCODING_8859_6 },
+    { "iso-8859-6-e", XML_CHAR_ENCODING_8859_6 },
+    { "iso-8859-6-i", XML_CHAR_ENCODING_8859_6 },
+    { "iso-8859-7", XML_CHAR_ENCODING_8859_7 },
+    { "iso-8859-8", XML_CHAR_ENCODING_8859_8 },
+    { "iso-8859-8-i", XML_CHAR_ENCODING_8859_8 },
+    { "iso-8859-9", XML_CHAR_ENCODING_8859_9 },
+    { "iso-ir-100", XML_CHAR_ENCODING_8859_1 },
+    { "iso-ir-101", XML_CHAR_ENCODING_8859_2 },
+    { "iso-ir-109", XML_CHAR_ENCODING_8859_3 },
+    { "iso-ir-110", XML_CHAR_ENCODING_8859_4 },
+    { "iso-ir-126", XML_CHAR_ENCODING_8859_7 },
+    { "iso-ir-127", XML_CHAR_ENCODING_8859_6 },
+    { "iso-ir-138", XML_CHAR_ENCODING_8859_8 },
+    { "iso-ir-144", XML_CHAR_ENCODING_8859_5 },
+    { "iso-ir-148", XML_CHAR_ENCODING_8859_9 },
+    { "iso-ir-157", XML_CHAR_ENCODING_8859_10 },
+    { "iso-latin-1", XML_CHAR_ENCODING_8859_1 },
+    { "iso-latin-2", XML_CHAR_ENCODING_8859_2 },
+    { "iso8859-1", XML_CHAR_ENCODING_8859_1 },
+    { "iso8859-10", XML_CHAR_ENCODING_8859_1 },
+    { "iso8859-13", XML_CHAR_ENCODING_8859_1 },
+    { "iso8859-14", XML_CHAR_ENCODING_8859_1 },
+    { "iso8859-15", XML_CHAR_ENCODING_8859_1 },
+    { "iso8859-2", XML_CHAR_ENCODING_8859_2 },
+    { "iso8859-3", XML_CHAR_ENCODING_8859_3 },
+    { "iso8859-4", XML_CHAR_ENCODING_8859_4 },
+    { "iso8859-5", XML_CHAR_ENCODING_8859_5 },
+    { "iso8859-6", XML_CHAR_ENCODING_8859_6 },
+    { "iso8859-7", XML_CHAR_ENCODING_8859_7 },
+    { "iso8859-8", XML_CHAR_ENCODING_8859_8 },
+    { "iso8859-9", XML_CHAR_ENCODING_8859_9 },
+    { "iso88591", XML_CHAR_ENCODING_8859_1 },
+    { "iso885910", XML_CHAR_ENCODING_8859_10 },
+    { "iso885913", XML_CHAR_ENCODING_8859_13 },
+    { "iso885914", XML_CHAR_ENCODING_8859_14 },
+    { "iso885915", XML_CHAR_ENCODING_8859_15 },
+    { "iso88592", XML_CHAR_ENCODING_8859_2 },
+    { "iso88593", XML_CHAR_ENCODING_8859_3 },
+    { "iso88594", XML_CHAR_ENCODING_8859_4 },
+    { "iso88595", XML_CHAR_ENCODING_8859_5 },
+    { "iso88596", XML_CHAR_ENCODING_8859_6 },
+    { "iso88597", XML_CHAR_ENCODING_8859_7 },
+    { "iso88598", XML_CHAR_ENCODING_8859_8 },
+    { "iso88599", XML_CHAR_ENCODING_8859_9 },
+    { "iso_8859-1", XML_CHAR_ENCODING_8859_1 },
+    { "iso_8859-1:1987", XML_CHAR_ENCODING_8859_1 },
+    { "iso_8859-2", XML_CHAR_ENCODING_8859_2 },
+    { "iso_8859-2:1987", XML_CHAR_ENCODING_8859_2 },
+    { "iso_8859-3", XML_CHAR_ENCODING_8859_3 },
+    { "iso_8859-3:1988", XML_CHAR_ENCODING_8859_3 },
+    { "iso_8859-4", XML_CHAR_ENCODING_8859_4 },
+    { "iso_8859-4:1988", XML_CHAR_ENCODING_8859_4 },
+    { "iso_8859-5", XML_CHAR_ENCODING_8859_5 },
+    { "iso_8859-5:1988", XML_CHAR_ENCODING_8859_5 },
+    { "iso_8859-6", XML_CHAR_ENCODING_8859_6 },
+    { "iso_8859-6:1987", XML_CHAR_ENCODING_8859_6 },
+    { "iso_8859-7", XML_CHAR_ENCODING_8859_7 },
+    { "iso_8859-7:1987", XML_CHAR_ENCODING_8859_7 },
+    { "iso_8859-8", XML_CHAR_ENCODING_8859_8 },
+    { "iso_8859-8:1988", XML_CHAR_ENCODING_8859_8 },
+    { "iso_8859-9", XML_CHAR_ENCODING_8859_9 },
+    { "iso_8859-9:1989", XML_CHAR_ENCODING_8859_9 },
+    { "l1", XML_CHAR_ENCODING_8859_1 },
+    { "l2", XML_CHAR_ENCODING_8859_2 },
+    { "l3", XML_CHAR_ENCODING_8859_3 },
+    { "l4", XML_CHAR_ENCODING_8859_4 },
+    { "l5", XML_CHAR_ENCODING_8859_9 },
+    { "l6", XML_CHAR_ENCODING_8859_10 },
+    { "l9", XML_CHAR_ENCODING_8859_15 },
+    { "latin1", XML_CHAR_ENCODING_8859_1 },
+    { "latin2", XML_CHAR_ENCODING_8859_2 },
+    { "latin3", XML_CHAR_ENCODING_8859_3 },
+    { "latin4", XML_CHAR_ENCODING_8859_4 },
+    { "latin5", XML_CHAR_ENCODING_8859_9 },
+    { "latin6", XML_CHAR_ENCODING_8859_10 },
+    { "logical", XML_CHAR_ENCODING_8859_8 },
+    { "ms932", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "ms_kanji", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "shift-jis", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "shift_jis", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "sjis", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "sun_eu_greek", XML_CHAR_ENCODING_8859_7 },
+    { "ucs-2", XML_CHAR_ENCODING_UCS2 },
+    { "ucs-4", XML_CHAR_ENCODING_UCS4LE },
+    { "ucs2", XML_CHAR_ENCODING_UCS2 },
+    { "ucs4", XML_CHAR_ENCODING_UCS4LE },
+    { "unicode", XML_CHAR_ENCODING_UTF16 },
+    { "unicode-1-1-utf-8", XML_CHAR_ENCODING_UTF8 },
+    { "unicode11utf8", XML_CHAR_ENCODING_UTF8 },
+    { "unicode20utf8", XML_CHAR_ENCODING_UTF8 },
+    { "unicodefffe", XML_CHAR_ENCODING_UTF16BE },
+    { "unicodefeff", XML_CHAR_ENCODING_UTF16LE },
+    { "us-ascii", XML_CHAR_ENCODING_ASCII },
+    { "utf-16", XML_CHAR_ENCODING_UTF16 },
+    { "utf-16be", XML_CHAR_ENCODING_UTF16BE },
+    { "utf-16le", XML_CHAR_ENCODING_UTF16LE },
+    { "utf-8", XML_CHAR_ENCODING_UTF8 },
+    { "utf16", XML_CHAR_ENCODING_UTF16 },
+    { "utf8", XML_CHAR_ENCODING_UTF8 },
+    { "visual", XML_CHAR_ENCODING_8859_8 },
+    { "windows-1252", XML_CHAR_ENCODING_WINDOWS_1252 },
+    { "windows-31j", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "x-cp1252", XML_CHAR_ENCODING_WINDOWS_1252 },
+    { "x-euc-jp", XML_CHAR_ENCODING_EUC_JP },
+    { "x-sjis", XML_CHAR_ENCODING_SHIFT_JIS },
+    { "x-unicode20utf8", XML_CHAR_ENCODING_UTF8 }
 };
 
 static xmlCharEncError
@@ -160,24 +279,26 @@ UTF8ToHtmlWrapper(void *vctxt, unsigned
 #define UTF8ToHtmlWrapper NULL
 #endif
 
-#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) && \
-    defined(LIBXML_ISO8859X_ENABLED)
-
-#include "iso8859x.inc"
+#include "codegen/charset.inc"
 
 static xmlCharEncError
-ISO8859xToUTF8(void *vctxt, unsigned char* out, int *outlen,
+EightBitToUtf8(void *vctxt, unsigned char* out, int *outlen,
                const unsigned char* in, int *inlen, int flush);
 static xmlCharEncError
-UTF8ToISO8859x(void *vctxt, unsigned char *out, int *outlen,
+Utf8ToEightBit(void *vctxt, unsigned char *out, int *outlen,
                const unsigned char *in, int *inlen, int flush);
 
-#define MAKE_ISO_HANDLER(name, n) \
-    { (char *) name, { ISO8859xToUTF8 }, { UTF8ToISO8859x }, \
-      (void *) xmlunicodetable_ISO8859_##n, \
-      (void *) xmltranscodetable_ISO8859_##n, \
+#define MAKE_8BIT_HANDLER(name, table) \
+    { (char *) name, { EightBitToUtf8 }, { Utf8ToEightBit }, \
+      (void *) xmlunicodetable_##table, \
+      (void *) xmltranscodetable_##table, \
       NULL, XML_HANDLER_STATIC }
 
+#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) && \
+    defined(LIBXML_ISO8859X_ENABLED)
+
+#define MAKE_ISO_HANDLER(name, n) MAKE_8BIT_HANDLER(name, ISO8859_##n)
+
 #else /* LIBXML_ISO8859X_ENABLED */
 
 #define MAKE_ISO_HANDLER(name, n) \
@@ -195,7 +316,7 @@ UTF8ToISO8859x(void *vctxt, unsigned cha
  * Names should match the IANA registry if possible:
  * https://www.iana.org/assignments/character-sets/character-sets.xhtml
  */
-static const xmlCharEncodingHandler defaultHandlers[31] = {
+static const xmlCharEncodingHandler defaultHandlers[32] = {
     MAKE_HANDLER(NULL, NULL, NULL), /* NONE */
     MAKE_HANDLER("UTF-8", UTF8ToUTF8, UTF8ToUTF8),
     MAKE_HANDLER("UTF-16LE", UTF16LEToUTF8, UTF8ToUTF16LE),
@@ -227,6 +348,7 @@ static const xmlCharEncodingHandler defa
     MAKE_ISO_HANDLER("ISO-8859-14", 14),
     MAKE_ISO_HANDLER("ISO-8859-15", 15),
     MAKE_ISO_HANDLER("ISO-8859-16", 16),
+    MAKE_8BIT_HANDLER("windows-1252", windows_1252)
 };
 
 #define NUM_DEFAULT_HANDLERS \
@@ -256,15 +378,13 @@ xmlCharEncUconv(const char *name, xmlCha
  ************************************************************************/
 
 /**
- * xmlDetectCharEncoding:
- * @in:  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).
- * @len:  pointer to the length of the buffer
- *
  * 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.
  *
- * Returns one of the XML_CHAR_ENCODING_... values.
+ * @param in  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).
+ * @param len  pointer to the length of the buffer
+ * @returns a xmlCharEncoding value.
  */
 xmlCharEncoding
 xmlDetectCharEncoding(const unsigned char* in, int len)
@@ -316,12 +436,11 @@ xmlDetectCharEncoding(const unsigned cha
 }
 
 /**
- * xmlCleanupEncodingAliases:
+ * Unregisters all aliases.
  *
- * DEPRECATED: This function modifies global state and is not
- * thread-safe.
+ * @deprecated This function modifies global state and is not
+ * thread-safe. See #xmlCtxtSetCharEncConvImpl for an alternative.
  *
- * Unregisters all aliases
  */
 void
 xmlCleanupEncodingAliases(void) {
@@ -343,14 +462,12 @@ xmlCleanupEncodingAliases(void) {
 }
 
 /**
- * xmlGetEncodingAlias:
- * @alias:  the alias name as parsed, in UTF-8 format (ASCII actually)
- *
- * DEPRECATED: This function is not thread-safe.
- *
  * Lookup an encoding name for the given alias.
  *
- * Returns NULL if not found, otherwise the original name
+ * @deprecated This function is not thread-safe.
+ *
+ * @param alias  the alias name as parsed, in UTF-8 format (ASCII actually)
+ * @returns NULL if not found, otherwise the original name.
  */
 const char *
 xmlGetEncodingAlias(const char *alias) {
@@ -381,17 +498,15 @@ xmlGetEncodingAlias(const char *alias) {
 }
 
 /**
- * xmlAddEncodingAlias:
- * @name:  the encoding name as parsed, in UTF-8 format (ASCII actually)
- * @alias:  the alias name as parsed, in UTF-8 format (ASCII actually)
- *
- * DEPRECATED: This function modifies global state and is not
- * thread-safe.
+ * Registers an alias `alias` for an encoding named `name`. Existing
+ * aliases will be overwritten.
  *
- * Registers an alias @alias for an encoding named @name. Existing alias
- * will be overwritten.
+ * @deprecated This function modifies global state and is not
+ * thread-safe. See #xmlCtxtSetCharEncConvImpl for an alternative.
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param name  the encoding name as parsed, in UTF-8 format (ASCII actually)
+ * @param alias  the alias name as parsed, in UTF-8 format (ASCII actually)
+ * @returns 0 in case of success, -1 in case of error.
  */
 int
 xmlAddEncodingAlias(const char *name, const char *alias) {
@@ -457,15 +572,13 @@ xmlAddEncodingAlias(const char *name, co
 }
 
 /**
- * xmlDelEncodingAlias:
- * @alias:  the alias name as parsed, in UTF-8 format (ASCII actually)
+ * Unregisters an encoding alias.
  *
- * DEPRECATED: This function modifies global state and is not
- * thread-safe.
+ * @deprecated This function modifies global state and is not
+ * thread-safe. See #xmlCtxtSetCharEncConvImpl for an alternative.
  *
- * Unregisters an encoding alias @alias
- *
- * Returns 0 in case of success, -1 in case of error
+ * @param alias  the alias name as parsed, in UTF-8 format (ASCII actually)
+ * @returns 0 in case of success, -1 in case of error.
  */
 int
 xmlDelEncodingAlias(const char *alias) {
@@ -518,14 +631,12 @@ xmlParseCharEncodingInternal(const char
 }
 
 /**
- * xmlParseCharEncoding:
- * @name:  the encoding name as parsed, in UTF-8 format (ASCII actually)
- *
  * 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.
  *
- * Returns one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE
+ * @param name  the encoding name as parsed, in UTF-8 format (ASCII actually)
+ * @returns one of the xmlCharEncoding values or XML_CHAR_ENCODING_NONE
  * if not recognized.
  */
 xmlCharEncoding
@@ -541,14 +652,12 @@ xmlParseCharEncoding(const char *name)
 }
 
 /**
- * xmlGetCharEncodingName:
- * @enc:  the encoding
- *
  * The "canonical" name for XML encoding.
  * C.f. http://www.w3.org/TR/REC-xml#charencoding
  * Section 4.3.3  Character Encoding in Entities
  *
- * Returns the canonical name for the given encoding
+ * @param enc  the encoding
+ * @returns the canonical name for the given encoding.
  */
 const char*
 xmlGetCharEncodingName(xmlCharEncoding enc) {
@@ -578,19 +687,17 @@ xmlGetCharEncodingName(xmlCharEncoding e
  ************************************************************************/
 
 /**
- * xmlNewCharEncodingHandler:
- * @name:  the encoding name, in UTF-8 format (ASCII actually)
- * @input:  the xmlCharEncodingInputFunc to read that encoding
- * @output:  the xmlCharEncodingOutputFunc to write that encoding
- *
- * DEPRECATED: This function modifies global state and is not
- * thread-safe.
- *
  * Create and registers an xmlCharEncodingHandler.
  *
- * Returns the xmlCharEncodingHandlerPtr created (or NULL in case of error).
+ * @deprecated This function modifies global state and is not
+ * thread-safe. See #xmlCtxtSetCharEncConvImpl for an alternative.
+ *
+ * @param name  the encoding name, in UTF-8 format (ASCII actually)
+ * @param input  the xmlCharEncodingInputFunc to read that encoding
+ * @param output  the xmlCharEncodingOutputFunc to write that encoding
+ * @returns the xmlCharEncodingHandler created (or NULL in case of error).
  */
-xmlCharEncodingHandlerPtr
+xmlCharEncodingHandler *
 xmlNewCharEncodingHandler(const char *name,
                           xmlCharEncodingInputFunc input,
                           xmlCharEncodingOutputFunc output) {
@@ -644,18 +751,16 @@ xmlNewCharEncodingHandler(const char *na
 }
 
 /**
- * xmlCharEncNewCustomHandler:
- * @name:  the encoding name
- * @input:  input callback which converts to UTF-8
- * @output:  output callback which converts from UTF-8
- * @ctxtDtor:  context destructor
- * @inputCtxt:  context for input callback
- * @outputCtxt:  context for output callback
- * @out:  pointer to resulting handler
- *
  * Create a custom xmlCharEncodingHandler.
  *
- * Returns an xmlParserErrors code.
+ * @param name  the encoding name
+ * @param input  input callback which converts to UTF-8
+ * @param output  output callback which converts from UTF-8
+ * @param ctxtDtor  context destructor
+ * @param inputCtxt  context for input callback
+ * @param outputCtxt  context for output callback
+ * @param out  pointer to resulting handler
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
 xmlCharEncNewCustomHandler(const char *name,
@@ -702,9 +807,7 @@ error:
 }
 
 /**
- * xmlInitCharEncodingHandlers:
- *
- * DEPRECATED: Alias for xmlInitParser.
+ * @deprecated Alias for #xmlInitParser.
  */
 void
 xmlInitCharEncodingHandlers(void) {
@@ -712,8 +815,6 @@ xmlInitCharEncodingHandlers(void) {
 }
 
 /**
- * xmlInitEncodingInternal:
- *
  * Initialize the char encoding support.
  */
 void
@@ -726,15 +827,14 @@ xmlInitEncodingInternal(void) {
 }
 
 /**
- * xmlCleanupCharEncodingHandlers:
+ * Cleanup the memory allocated for the char encoding support, it
+ * unregisters all the encoding handlers and the aliases.
  *
- * DEPRECATED: This function will be made private. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function will be made private. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  *
- * Cleanup the memory allocated for the char encoding support, it
- * unregisters all the encoding handlers and the aliases.
  */
 void
 xmlCleanupCharEncodingHandlers(void) {
@@ -759,16 +859,15 @@ xmlCleanupCharEncodingHandlers(void) {
 }
 
 /**
- * xmlRegisterCharEncodingHandler:
- * @handler:  the xmlCharEncodingHandlerPtr handler block
+ * Register the char encoding handler.
  *
- * DEPRECATED: This function modifies global state and is not
- * thread-safe.
+ * @deprecated This function modifies global state and is not
+ * thread-safe. See #xmlCtxtSetCharEncConvImpl for an alternative.
  *
- * Register the char encoding handler.
+ * @param handler  the xmlCharEncodingHandler handler block
  */
 void
-xmlRegisterCharEncodingHandler(xmlCharEncodingHandlerPtr handler) {
+xmlRegisterCharEncodingHandler(xmlCharEncodingHandler *handler) {
     if (handler == NULL)
         return;
     if (globalHandlers == NULL) {
@@ -793,17 +892,15 @@ free_handler:
 }
 
 /**
- * xmlFindExtraHandler:
- * @norig:  name of the char encoding
- * @name:  potentially aliased name of the encoding
- * @flags:  bit mask of flags
- * @impl:  a conversion implementation (optional)
- * @implCtxt:  user data for conversion implementation (optional)
- * @out:  pointer to resulting handler
- *
  * Search the non-default handlers for an exact match.
  *
- * Returns an xmlParserErrors error code.
+ * @param norig  name of the char encoding
+ * @param name  potentially aliased name of the encoding
+ * @param flags  bit mask of flags
+ * @param impl  a conversion implementation (optional)
+ * @param implCtxt  user data for conversion implementation (optional)
+ * @param out  pointer to resulting handler
+ * @returns an xmlParserErrors error code.
  */
 static xmlParserErrors
 xmlFindExtraHandler(const char *norig, const char *name, xmlCharEncFlags flags,
@@ -864,10 +961,6 @@ xmlFindExtraHandler(const char *norig, c
 }
 
 /**
- * xmlLookupCharEncodingHandler:
- * @enc:  an xmlCharEncoding value.
- * @out:  pointer to result
- *
  * Find or create a handler matching the encoding. The following
  * converters are looked up in order:
  *
@@ -876,14 +969,16 @@ xmlFindExtraHandler(const char *norig, c
  * - iconv if enabled
  * - ICU if enabled
  *
- * The handler must be closed with xmlCharEncCloseFunc.
+ * The handler must be closed with #xmlCharEncCloseFunc.
  *
  * If the encoding is UTF-8, a NULL handler and no error code will
  * be returned.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
+ * @param enc  an xmlCharEncoding value.
+ * @param out  pointer to result
+ * @returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
  * xmlParserErrors error code.
  */
 xmlParserErrors
@@ -923,16 +1018,14 @@ xmlLookupCharEncodingHandler(xmlCharEnco
 }
 
 /**
- * xmlGetCharEncodingHandler:
- * @enc:  an xmlCharEncoding value.
- *
- * DEPRECATED: Use xmlLookupCharEncodingHandler which has better error
+ * @deprecated Use #xmlLookupCharEncodingHandler which has better error
  * reporting.
  *
- * Returns the handler or NULL if no handler was found or an error
+ * @param enc  an xmlCharEncoding value.
+ * @returns the handler or NULL if no handler was found or an error
  * occurred.
  */
-xmlCharEncodingHandlerPtr
+xmlCharEncodingHandler *
 xmlGetCharEncodingHandler(xmlCharEncoding enc) {
     xmlCharEncodingHandler *ret;
 
@@ -941,13 +1034,6 @@ xmlGetCharEncodingHandler(xmlCharEncodin
 }
 
 /**
- * xmlCreateCharEncodingHandler:
- * @name:  a string describing the char encoding.
- * @flags:  bit mask of flags
- * @impl:  a conversion implementation (optional)
- * @implCtxt:  user data for conversion implementation (optional)
- * @out:  pointer to result
- *
  * Find or create a handler matching the encoding. The following
  * converters are looked up in order:
  *
@@ -957,16 +1043,21 @@ xmlGetCharEncodingHandler(xmlCharEncodin
  * - iconv if enabled
  * - ICU if enabled
  *
- * The handler must be closed with xmlCharEncCloseFunc.
+ * The handler must be closed with #xmlCharEncCloseFunc.
  *
  * If the encoding is UTF-8, a NULL handler and no error code will
  * be returned.
  *
- * @flags can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.
+ * `flags` can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
+ * @param name  a string describing the char encoding.
+ * @param flags  bit mask of flags
+ * @param impl  a conversion implementation (optional)
+ * @param implCtxt  user data for conversion implementation (optional)
+ * @param out  pointer to result
+ * @returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
  * xmlParserErrors error code.
  */
 xmlParserErrors
@@ -996,10 +1087,54 @@ xmlCreateCharEncodingHandler(const char
         return(XML_ERR_OK);
 
     if ((enc > 0) && ((size_t) enc < NUM_DEFAULT_HANDLERS)) {
+        if (flags & XML_ENC_HTML) {
+            /*
+             * TODO: HTML5 only allows a fixed set of charset
+             * labels. We should add an option to enable or
+             * disable this restriction.
+             *
+             * TODO: Map ISO-8859-9 to windows-1254.
+             */
+            switch (enc) {
+                case XML_CHAR_ENCODING_ASCII:
+                case XML_CHAR_ENCODING_8859_1:
+                    enc = XML_CHAR_ENCODING_WINDOWS_1252;
+                    break;
+                case XML_CHAR_ENCODING_UCS2:
+                case XML_CHAR_ENCODING_UTF16:
+                    enc = XML_CHAR_ENCODING_UTF16LE;
+                    break;
+                default:
+                    break;
+            }
+        }
+
         handler = &defaultHandlers[enc];
         if ((((flags & XML_ENC_INPUT) == 0) || (handler->input.func)) &&
             (((flags & XML_ENC_OUTPUT) == 0) || (handler->output.func))) {
-            *out = (xmlCharEncodingHandler *) handler;
+            xmlCharEncodingHandler *ret;
+
+            /*
+             * Return a copy of the handler with the original name.
+             */
+
+            ret = xmlMalloc(sizeof(*ret));
+            if (ret == NULL)
+                return(XML_ERR_NO_MEMORY);
+            memset(ret, 0, sizeof(*ret));
+
+            ret->name = xmlMemStrdup(norig);
+            if (ret->name == NULL) {
+                xmlFree(ret);
+                return(XML_ERR_NO_MEMORY);
+            }
+            ret->input = handler->input;
+            ret->output = handler->output;
+            ret->inputCtxt = handler->inputCtxt;
+            ret->outputCtxt = handler->outputCtxt;
+            ret->ctxtDtor = handler->ctxtDtor;
+
+            *out = ret;
             return(XML_ERR_OK);
         }
     }
@@ -1008,11 +1143,6 @@ xmlCreateCharEncodingHandler(const char
 }
 
 /**
- * xmlOpenCharEncodingHandler:
- * @name:  a string describing the char encoding.
- * @output:  boolean, use handler for output
- * @out:  pointer to result
- *
  * Find or create a handler matching the encoding. The following
  * converters are looked up in order:
  *
@@ -1021,14 +1151,17 @@ xmlCreateCharEncodingHandler(const char
  * - iconv if enabled
  * - ICU if enabled
  *
- * The handler must be closed with xmlCharEncCloseFunc.
+ * The handler must be closed with #xmlCharEncCloseFunc.
  *
  * If the encoding is UTF-8, a NULL handler and no error code will
  * be returned.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
+ * @param name  a string describing the char encoding.
+ * @param output  boolean, use handler for output
+ * @param out  pointer to result
+ * @returns XML_ERR_OK, XML_ERR_UNSUPPORTED_ENCODING or another
  * xmlParserErrors error code.
  */
 xmlParserErrors
@@ -1040,19 +1173,17 @@ xmlOpenCharEncodingHandler(const char *n
 }
 
 /**
- * xmlFindCharEncodingHandler:
- * @name:  a string describing the char encoding.
- *
- * DEPRECATED: Use xmlOpenCharEncodingHandler which has better error
- * reporting.
- *
  * If the encoding is UTF-8, this will return a no-op handler that
  * shouldn't be used.
  *
- * Returns the handler or NULL if no handler was found or an error
+ * @deprecated Use #xmlOpenCharEncodingHandler which has better error
+ * reporting.
+ *
+ * @param name  a string describing the char encoding.
+ * @returns the handler or NULL if no handler was found or an error
  * occurred.
  */
-xmlCharEncodingHandlerPtr
+xmlCharEncodingHandler *
 xmlFindCharEncodingHandler(const char *name) {
     xmlCharEncodingHandler *ret;
     xmlCharEncFlags flags;
@@ -1086,19 +1217,16 @@ typedef struct {
 } xmlIconvCtxt;
 
 /**
- * xmlIconvConvert:
- * @vctxt:  conversion context
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of input bytes
- * @inlen:  the length of @in
- * @flush:  end of input
- *
- * 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 produced.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
  *
- * Returns an XML_ENC_ERR code.
+ * @param vctxt  conversion context
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of input bytes
+ * @param inlen  the length of `in`
+ * @param flush  end of input
+ * @returns an xmlCharEncError code.
  */
 static xmlCharEncError
 xmlIconvConvert(void *vctxt, unsigned char *out, int *outlen,
@@ -1320,19 +1448,16 @@ struct _uconv_t {
 };
 
 /**
- * xmlUconvConvert:
- * @vctxt:  conversion context
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of input bytes
- * @inlen:  the length of @in
- * @flush:  end of input
- *
- * Returns an XML_ENC_ERR code.
- *
- * 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 produced.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
+ *
+ * @param vctxt  conversion context
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of input bytes
+ * @param inlen  the length of `in`
+ * @param flush  end of input
+ * @returns an xmlCharEncError code.
  */
 static xmlCharEncError
 xmlUconvConvert(void *vctxt, unsigned char *out, int *outlen,
@@ -1515,10 +1640,9 @@ error:
  ************************************************************************/
 
 /**
- * xmlEncConvertError:
- * @code:  XML_ENC_ERR code
+ * Convert xmlCharEncError to xmlParserErrors code.
  *
- * Convert XML_ENC_ERR to libxml2 error codes.
+ * @param code  xmlCharEncError code
  */
 static xmlParserErrors
 xmlEncConvertError(xmlCharEncError code) {
@@ -1543,19 +1667,16 @@ xmlEncConvertError(xmlCharEncError code)
 }
 
 /**
- * xmlEncInputChunk:
- * @handler:  encoding handler
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of input bytes
- * @inlen:  the length of @in
- * @flush:  end of input
- *
- * The value of @inlen after return is the number of octets consumed
- *     as the return value is 0, else unpredictable.
- * The value of @outlen after return is the number of octets produced.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
  *
- * Returns an XML_ENC_ERR code.
+ * @param handler  encoding handler
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of input bytes
+ * @param inlen  the length of `in`
+ * @param flush  end of input
+ * @returns an xmlCharEncError code.
  */
 xmlCharEncError
 xmlEncInputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
@@ -1600,18 +1721,15 @@ xmlEncInputChunk(xmlCharEncodingHandler
 }
 
 /**
- * xmlEncOutputChunk:
- * @handler:  encoding handler
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of input bytes
- * @inlen:  the length of @in
- *
- * Returns an XML_ENC_ERR code.
- *
- * The value of @inlen after return is the number of octets consumed
- *     as the return value is 0, else unpredictable.
- * The value of @outlen after return is the number of octets produced.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
+ *
+ * @param handler  encoding handler
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of input bytes
+ * @param inlen  the length of `in`
+ * @returns an xmlCharEncError code.
  */
 static xmlCharEncError
 xmlEncOutputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
@@ -1647,36 +1765,32 @@ xmlEncOutputChunk(xmlCharEncodingHandler
 }
 
 /**
- * xmlCharEncFirstLine:
- * @handler:   char encoding transformation data structure
- * @out:  an xmlBuffer for the output.
- * @in:  an xmlBuffer for the input
- *
  * DEPERECATED: Don't use.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * @param handler  encoding handler
+ * @param out  an xmlBuffer for the output.
+ * @param in  an xmlBuffer for the input
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
-xmlCharEncFirstLine(xmlCharEncodingHandler *handler, xmlBufferPtr out,
-                    xmlBufferPtr in) {
+xmlCharEncFirstLine(xmlCharEncodingHandler *handler, struct _xmlBuffer *out,
+                    struct _xmlBuffer *in) {
     return(xmlCharEncInFunc(handler, out, in));
 }
 
 /**
- * xmlCharEncInput:
- * @input: a parser input buffer
- * @sizeOut:  pointer to output size
- * @flush:  end of input
+ * Generic front-end for input encoding conversion.
  *
- * @sizeOut should be set to the maximum output size (or SIZE_MAX).
+ * `sizeOut` should be set to the maximum output size (or SIZE_MAX).
  * After return, it is set to the number of bytes written.
  *
- * Generic front-end for the encoding handler on parser input
- *
- * Returns an XML_ENC_ERR code.
+ * @param input  a parser input buffer
+ * @param sizeOut  pointer to output size
+ * @param flush  end of input
+ * @returns an xmlCharEncError code.
  */
 xmlCharEncError
-xmlCharEncInput(xmlParserInputBufferPtr input, size_t *sizeOut, int flush)
+xmlCharEncInput(xmlParserInputBuffer *input, size_t *sizeOut, int flush)
 {
     xmlBufPtr out, in;
     const xmlChar *dataIn;
@@ -1767,18 +1881,16 @@ xmlCharEncInput(xmlParserInputBufferPtr
 }
 
 /**
- * xmlCharEncInFunc:
- * @handler:	char encoding transformation data structure
- * @out:  an xmlBuffer for the output.
- * @in:  an xmlBuffer for the input
- *
- * Generic front-end for the encoding handler input function
+ * Generic front-end for input encoding conversion.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * @param handler  encoding handler
+ * @param out  an xmlBuffer for the output.
+ * @param in  an xmlBuffer for the input
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
-xmlCharEncInFunc(xmlCharEncodingHandler * handler, xmlBufferPtr out,
-                 xmlBufferPtr in)
+xmlCharEncInFunc(xmlCharEncodingHandler * handler, struct _xmlBuffer *out,
+                 struct _xmlBuffer *in)
 {
     int ret;
     int written;
@@ -1808,23 +1920,60 @@ xmlCharEncInFunc(xmlCharEncodingHandler
     return (written? written : ret);
 }
 
+/*
+ * @param buf  a char buffer
+ * @param val  a codepoint
+ *
+ * Serializes a decimal char ref like `&#38;`.
+ *
+ * Writes at most 10 bytes. Does not include a terminating zero byte.
+ *
+ * @returns the number of bytes written.
+ */
+static int
+xmlSerializeDecCharRef(char *buf, int val) {
+    char *out = buf;
+    int len, i;
+
+    *out++ = '&';
+    *out++ = '#';
+
+    if (val < 100) {
+        len = (val < 10) ? 1 : 2;
+    } else if (val < 10000) {
+        len = (val < 1000) ? 3 : 4;
+    } else if (val < 1000000) {
+        len = (val < 100000) ? 5 : 6;
+    } else {
+        len = 7;
+    }
+
+    for (i = len - 1; i >= 0; i--) {
+        out[i] = '0' + val % 10;
+        val /= 10;
+    }
+
+    out[len] = ';';
+
+    return(len + 3);
+}
+
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlCharEncOutput:
- * @output: a parser output buffer
- * @init: is this an initialization call without data
- *
- * Generic front-end for the encoding handler on parser output
- * a first call with @init == 1 has to be made first 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.
+ * Generic front-end for output encoding conversion.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * A first call with `init` set to 1 has to be made to write a BOM.
+ *
+ * When using GNU libiconv, unsupported characters in the output
+ * encoding will be automatically replaced with a numeric character
+ * reference.
+ *
+ * @param output  a parser output buffer
+ * @param init  is this an initialization call without data
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
-xmlCharEncOutput(xmlOutputBufferPtr output, int init)
+xmlCharEncOutput(xmlOutputBuffer *output, int init)
 {
     int ret;
     size_t written;
@@ -1933,23 +2082,22 @@ error:
 #endif
 
 /**
- * xmlCharEncOutFunc:
- * @handler:	char encoding transformation data structure
- * @out:  an xmlBuffer for the output.
- * @in:  an xmlBuffer for the input
- *
- * 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.
+ * Generic front-end for output encoding conversion.
+ *
+ * A first call with `in` set to NULL has to be made to write a BOM.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * When using GNU libiconv, unsupported characters in the output
+ * encoding will be automatically replaced with a numeric character
+ * reference.
+ *
+ * @param handler  encoding handler
+ * @param out  an xmlBuffer for the output.
+ * @param in  an xmlBuffer for the input
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
-xmlCharEncOutFunc(xmlCharEncodingHandler *handler, xmlBufferPtr out,
-                  xmlBufferPtr in) {
+xmlCharEncOutFunc(xmlCharEncodingHandler *handler, struct _xmlBuffer *out,
+                  struct _xmlBuffer *in) {
     int ret;
     int written;
     int writtentot = 0;
@@ -2033,13 +2181,11 @@ retry:
 }
 
 /**
- * xmlCharEncCloseFunc:
- * @handler:	char encoding transformation data structure
- *
  * Releases an xmlCharEncodingHandler. Must be called after
  * a handler is no longer in use.
  *
- * Returns 0.
+ * @param handler  encoding handler
+ * @returns 0.
  */
 int
 xmlCharEncCloseFunc(xmlCharEncodingHandler *handler) {
@@ -2059,11 +2205,6 @@ xmlCharEncCloseFunc(xmlCharEncodingHandl
 }
 
 /**
- * xmlByteConsumed:
- * @ctxt: an XML parser context
- *
- * DEPRECATED: Don't use.
- *
  * 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
@@ -2071,11 +2212,14 @@ xmlCharEncCloseFunc(xmlCharEncodingHandl
  * of constant cost if the input is UTF-8 but can be costly if run
  * on non-UTF-8 input.
  *
- * Returns the index in bytes from the beginning of the entity or -1
+ * @deprecated Don't use.
+ *
+ * @param ctxt  an XML parser context
+ * @returns the index in bytes from the beginning of the entity or -1
  *         in case the index could not be computed.
  */
 long
-xmlByteConsumed(xmlParserCtxtPtr ctxt) {
+xmlByteConsumed(xmlParserCtxt *ctxt) {
     xmlParserInputPtr in;
 
     if (ctxt == NULL)
@@ -2214,20 +2358,17 @@ done:
 }
 
 /**
- * xmlIsolat1ToUTF8:
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of ISO Latin 1 chars
- * @inlen:  the length of @in
- *
  * Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8
  * block of chars out.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
  *
- * 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 produced.
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of ISO Latin 1 chars
+ * @param inlen  the length of `in`
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
 xmlIsolat1ToUTF8(unsigned char* out, int *outlen,
@@ -2320,20 +2461,17 @@ done:
 }
 
 /**
- * xmlUTF8ToIsolat1:
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of UTF-8 chars
- * @inlen:  the length of @in
- *
  * Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1
  * block of chars out.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * The value of `inlen` after return is the number of bytes consumed.
+ * The value of `outlen` after return is the number of bytes produced.
  *
- * 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 produced.
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of UTF-8 chars
+ * @param inlen  the length of `in`
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 int
 xmlUTF8ToIsolat1(unsigned char* out, int *outlen,
@@ -2726,11 +2864,8 @@ UTF8ToHtmlWrapper(void *vctxt ATTRIBUTE_
 }
 #endif
 
-#if !defined(LIBXML_ICONV_ENABLED) && !defined(LIBXML_ICU_ENABLED) && \
-    defined(LIBXML_ISO8859X_ENABLED)
-
 static xmlCharEncError
-UTF8ToISO8859x(void *vctxt,
+Utf8ToEightBit(void *vctxt,
                unsigned char *out, int *outlen,
                const unsigned char *in, int *inlen,
                int flush ATTRIBUTE_UNUSED) {
@@ -2812,7 +2947,7 @@ done:
 }
 
 static xmlCharEncError
-ISO8859xToUTF8(void *vctxt,
+EightBitToUtf8(void *vctxt,
                unsigned char* out, int *outlen,
                const unsigned char* in, int *inlen,
                int flush ATTRIBUTE_UNUSED) {
@@ -2865,5 +3000,3 @@ done:
     return(ret);
 }
 
-#endif
-
diff -pruN 2.14.6+dfsg-0.1/entities.c 2.15.0+dfsg-0.3/entities.c
--- 2.14.6+dfsg-0.1/entities.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/entities.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 /* To avoid EBCDIC trouble when parsing on zOS */
@@ -28,6 +28,7 @@
 
 #include "private/entities.h"
 #include "private/error.h"
+#include "private/io.h"
 
 #ifndef SIZE_MAX
   #define SIZE_MAX ((size_t) -1)
@@ -73,14 +74,13 @@ static xmlEntity xmlEntityApos = {
     NULL, NULL, NULL, NULL, 0, 0, 0
 };
 
-/*
- * xmlFreeEntity:
- * @entity:  an entity
- *
+/**
  * Frees the entity.
+ *
+ * @param entity  an entity
  */
 void
-xmlFreeEntity(xmlEntityPtr entity)
+xmlFreeEntity(xmlEntity *entity)
 {
     xmlDictPtr dict = NULL;
 
@@ -111,13 +111,11 @@ xmlFreeEntity(xmlEntityPtr entity)
 }
 
 /*
- * xmlCreateEntity:
- *
  * internal routine doing the entity node structures allocations
  */
 static xmlEntityPtr
 xmlCreateEntity(xmlDocPtr doc, const xmlChar *name, int type,
-	        const xmlChar *ExternalID, const xmlChar *SystemID,
+	        const xmlChar *publicId, const xmlChar *systemId,
 	        const xmlChar *content) {
     xmlEntityPtr ret;
 
@@ -138,13 +136,13 @@ xmlCreateEntity(xmlDocPtr doc, const xml
         ret->name = xmlDictLookup(doc->dict, name, -1);
     if (ret->name == NULL)
         goto error;
-    if (ExternalID != NULL) {
-        ret->ExternalID = xmlStrdup(ExternalID);
+    if (publicId != NULL) {
+        ret->ExternalID = xmlStrdup(publicId);
         if (ret->ExternalID == NULL)
             goto error;
     }
-    if (SystemID != NULL) {
-        ret->SystemID = xmlStrdup(SystemID);
+    if (systemId != NULL) {
+        ret->SystemID = xmlStrdup(systemId);
         if (ret->SystemID == NULL)
             goto error;
     }
@@ -169,26 +167,24 @@ error:
 }
 
 /**
- * xmlAddEntity:
- * @doc:  the document
- * @extSubset:  add to the external or internal subset
- * @name:  the entity name
- * @type:  the entity type XML_xxx_yyy_ENTITY
- * @ExternalID:  the entity external ID if available
- * @SystemID:  the entity system ID if available
- * @content:  the entity content
- * @out:  pointer to resulting entity (optional)
- *
  * Register a new entity for this document.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns an xmlParserErrors error code.
+ * @param doc  the document
+ * @param extSubset  add to the external or internal subset
+ * @param name  the entity name
+ * @param type  an xmlEntityType value
+ * @param publicId  the publid identifier (optional)
+ * @param systemId  the system identifier (URL) (optional)
+ * @param content  the entity content
+ * @param out  pointer to resulting entity (optional)
+ * @returns an xmlParserErrors error code.
  */
 int
-xmlAddEntity(xmlDocPtr doc, int extSubset, const xmlChar *name, int type,
-	  const xmlChar *ExternalID, const xmlChar *SystemID,
-	  const xmlChar *content, xmlEntityPtr *out) {
+xmlAddEntity(xmlDoc *doc, int extSubset, const xmlChar *name, int type,
+	  const xmlChar *publicId, const xmlChar *systemId,
+	  const xmlChar *content, xmlEntity **out) {
     xmlDtdPtr dtd;
     xmlDictPtr dict = NULL;
     xmlEntitiesTablePtr table = NULL;
@@ -265,7 +261,7 @@ xmlAddEntity(xmlDocPtr doc, int extSubse
         default:
 	    return(XML_ERR_ARGUMENT);
     }
-    ret = xmlCreateEntity(dtd->doc, name, type, ExternalID, SystemID, content);
+    ret = xmlCreateEntity(dtd->doc, name, type, publicId, systemId, content);
     if (ret == NULL)
         return(XML_ERR_NO_MEMORY);
 
@@ -300,14 +296,12 @@ xmlAddEntity(xmlDocPtr doc, int extSubse
 }
 
 /**
- * xmlGetPredefinedEntity:
- * @name:  the entity name
+ * Look up a predefined entity.
  *
- * Check whether this name is an predefined entity.
- *
- * Returns NULL if not, otherwise the entity
+ * @param name  the entity name
+ * @returns the entity, or NULL if not found.
  */
-xmlEntityPtr
+xmlEntity *
 xmlGetPredefinedEntity(const xmlChar *name) {
     if (name == NULL) return(NULL);
     switch (name[0]) {
@@ -336,90 +330,85 @@ xmlGetPredefinedEntity(const xmlChar *na
 }
 
 /**
- * xmlAddDtdEntity:
- * @doc:  the document
- * @name:  the entity name
- * @type:  the entity type XML_xxx_yyy_ENTITY
- * @ExternalID:  the entity external ID if available
- * @SystemID:  the entity system ID if available
- * @content:  the entity content
- *
- * Register a new entity for this document DTD external subset.
- *
- * Returns a pointer to the entity or NULL in case of error
- */
-xmlEntityPtr
-xmlAddDtdEntity(xmlDocPtr doc, const xmlChar *name, int type,
-	        const xmlChar *ExternalID, const xmlChar *SystemID,
+ * Add a new entity to the document's external subset.
+ *
+ * #xmlAddEntity offers better error handling.
+ *
+ * @param doc  the document
+ * @param name  the entity name
+ * @param type  an xmlEntityType value
+ * @param publicId  the publid identifier (optional)
+ * @param systemId  the system identifier (URL) (optional)
+ * @param content  the entity content
+ * @returns a pointer to the entity or NULL in case of error
+ */
+xmlEntity *
+xmlAddDtdEntity(xmlDoc *doc, const xmlChar *name, int type,
+	        const xmlChar *publicId, const xmlChar *systemId,
 		const xmlChar *content) {
     xmlEntityPtr ret;
 
-    xmlAddEntity(doc, 1, name, type, ExternalID, SystemID, content, &ret);
+    xmlAddEntity(doc, 1, name, type, publicId, systemId, content, &ret);
     return(ret);
 }
 
 /**
- * xmlAddDocEntity:
- * @doc:  the document
- * @name:  the entity name
- * @type:  the entity type XML_xxx_yyy_ENTITY
- * @ExternalID:  the entity external ID if available
- * @SystemID:  the entity system ID if available
- * @content:  the entity content
+ * Add a new entity to the document's internal subset.
  *
- * Register a new entity for this document.
+ * #xmlAddEntity offers better error handling.
  *
- * Returns a pointer to the entity or NULL in case of error
- */
-xmlEntityPtr
-xmlAddDocEntity(xmlDocPtr doc, const xmlChar *name, int type,
-	        const xmlChar *ExternalID, const xmlChar *SystemID,
+ * @param doc  the document
+ * @param name  the entity name
+ * @param type  an xmlEntityType value
+ * @param publicId  the publid identifier (optional)
+ * @param systemId  the system identifier (URL) (optional)
+ * @param content  the entity content
+ * @returns a pointer to the entity or NULL in case of error
+ */
+xmlEntity *
+xmlAddDocEntity(xmlDoc *doc, const xmlChar *name, int type,
+	        const xmlChar *publicId, const xmlChar *systemId,
 	        const xmlChar *content) {
     xmlEntityPtr ret;
 
-    xmlAddEntity(doc, 0, name, type, ExternalID, SystemID, content, &ret);
+    xmlAddEntity(doc, 0, name, type, publicId, systemId, content, &ret);
     return(ret);
 }
 
 /**
- * xmlNewEntity:
- * @doc:  the document
- * @name:  the entity name
- * @type:  the entity type XML_xxx_yyy_ENTITY
- * @ExternalID:  the entity external ID if available
- * @SystemID:  the entity system ID if available
- * @content:  the entity content
- *
- * Create a new entity, this differs from xmlAddDocEntity() that if
- * the document is NULL or has no internal subset defined, then an
- * unlinked entity structure will be returned, it is then the responsibility
- * of the caller to link it to the document later or free it when not needed
- * anymore.
- *
- * Returns a pointer to the entity or NULL in case of error
- */
-xmlEntityPtr
-xmlNewEntity(xmlDocPtr doc, const xmlChar *name, int type,
-	     const xmlChar *ExternalID, const xmlChar *SystemID,
+ * Create a new entity.
+ *
+ * Like #xmlAddDocEntity, but if `doc` is NULL or has no internal
+ * subset defined, an unlinked entity will be returned. It is then
+ * the responsibility of the caller to link it to the document later
+ * or free it when not needed anymore.
+ *
+ * @param doc  the document (optional)
+ * @param name  the entity name
+ * @param type  an xmlEntityType value
+ * @param publicId  the publid identifier (optional)
+ * @param systemId  the system identifier (URL) (optional)
+ * @param content  the entity content
+ * @returns a pointer to the entity or NULL in case of error
+ */
+xmlEntity *
+xmlNewEntity(xmlDoc *doc, const xmlChar *name, int type,
+	     const xmlChar *publicId, const xmlChar *systemId,
 	     const xmlChar *content) {
     if ((doc != NULL) && (doc->intSubset != NULL)) {
-	return(xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content));
+	return(xmlAddDocEntity(doc, name, type, publicId, systemId, content));
     }
     if (name == NULL)
         return(NULL);
-    return(xmlCreateEntity(doc, name, type, ExternalID, SystemID, content));
+    return(xmlCreateEntity(doc, name, type, publicId, systemId, content));
 }
 
 /**
- * xmlGetEntityFromTable:
- * @table:  an entity table
- * @name:  the entity name
- * @parameter:  look for parameter entities
- *
- * Do an entity lookup in the table.
- * returns the corresponding parameter entity, if found.
+ * Look up an entity in a table.
  *
- * Returns A pointer to the entity structure or NULL if not found.
+ * @param table  an entity table
+ * @param name  the entity name
+ * @returns a pointer to the entity or NULL if not found.
  */
 static xmlEntityPtr
 xmlGetEntityFromTable(xmlEntitiesTablePtr table, const xmlChar *name) {
@@ -427,17 +416,15 @@ xmlGetEntityFromTable(xmlEntitiesTablePt
 }
 
 /**
- * xmlGetParameterEntity:
- * @doc:  the document referencing the entity
- * @name:  the entity name
- *
- * Do an entity lookup in the internal and external subsets and
- * returns the corresponding parameter entity, if found.
+ * Look up a paramater entity in the internal and external subset
+ * of `doc`.
  *
- * Returns A pointer to the entity structure or NULL if not found.
+ * @param doc  the document
+ * @param name  the entity name
+ * @returns a pointer to the entity or NULL if not found.
  */
-xmlEntityPtr
-xmlGetParameterEntity(xmlDocPtr doc, const xmlChar *name) {
+xmlEntity *
+xmlGetParameterEntity(xmlDoc *doc, const xmlChar *name) {
     xmlEntitiesTablePtr table;
     xmlEntityPtr ret;
 
@@ -457,18 +444,14 @@ xmlGetParameterEntity(xmlDocPtr doc, con
 }
 
 /**
- * xmlGetDtdEntity:
- * @doc:  the document referencing the entity
- * @name:  the entity name
- *
- * Do an entity lookup in the DTD entity hash table and
- * returns the corresponding entity, if found.
- * Note: the first argument is the document node, not the DTD node.
+ * Look up a general entity in the external subset of `doc`.
  *
- * Returns A pointer to the entity structure or NULL if not found.
+ * @param doc  the document
+ * @param name  the entity name
+ * @returns a pointer to the entity or NULL if not found.
  */
-xmlEntityPtr
-xmlGetDtdEntity(xmlDocPtr doc, const xmlChar *name) {
+xmlEntity *
+xmlGetDtdEntity(xmlDoc *doc, const xmlChar *name) {
     xmlEntitiesTablePtr table;
 
     if (doc == NULL)
@@ -481,17 +464,14 @@ xmlGetDtdEntity(xmlDocPtr doc, const xml
 }
 
 /**
- * xmlGetDocEntity:
- * @doc:  the document referencing the entity
- * @name:  the entity name
+ * Look up a general entity in the internal and external subset
+ * of `doc`. Also checks for predefined entities.
  *
- * Do an entity lookup in the document entity hash table and
- * returns 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.
+ * @param doc  the document referencing the entity
+ * @param name  the entity name
+ * @returns a pointer to the entity or NULL if not found.
  */
-xmlEntityPtr
+xmlEntity *
 xmlGetDocEntity(const xmlDoc *doc, const xmlChar *name) {
     xmlEntityPtr cur;
     xmlEntitiesTablePtr table;
@@ -516,289 +496,31 @@ xmlGetDocEntity(const xmlDoc *doc, const
     return(xmlGetPredefinedEntity(name));
 }
 
-/*
- * xmlSerializeHexCharRef:
- * @buf:  a char buffer
- * @val:  a codepoint
+/**
+ * Replace special characters with predefined entities or numeric
+ * character references.
  *
- * Serializes a hex char ref like &#xA0;
+ * If `doc` is NULL or an XML document, replaces `<`, `>` and `&`
+ * with predefined entities. Carriage return is replaced with
+ * `&#13;`. If `doc` or its encoding are NULL, non-ASCII
+ * characters are replaced with a hexadecimal character reference.
  *
- * Writes at most 9 bytes. Does not include a terminating zero byte.
+ * If `doc` is an HTML document, follows the HTML serialization
+ * rules.
  *
- * Returns the number of bytes written.
- */
-int
-xmlSerializeHexCharRef(char *buf, int val) {
-    char *out = buf;
-    int shift = 0, bits;
-
-    *out++ = '&';
-    *out++ = '#';
-    *out++ = 'x';
-
-    bits = val;
-    if (bits & 0xFF0000) {
-        shift = 16;
-        bits &= 0xFF0000;
-    } else if (bits & 0x00FF00) {
-        shift = 8;
-        bits &= 0x00FF00;
-    }
-    if (bits & 0xF0F0F0) {
-        shift += 4;
-    }
-
-    do {
-        int d = (val >> shift) & 0x0F;
-
-        if (d < 10)
-            *out++ = '0' + d;
-        else
-            *out++ = 'A' + (d - 10);
-
-	shift -= 4;
-    } while (shift >= 0);
-
-    *out++ = ';';
-
-    return(out - buf);
-}
-
-/*
- * xmlSerializeDecCharRef:
- * @buf:  a char buffer
- * @val:  a codepoint
+ * Silently removes some invalid characters like ASCII control
+ * codes.
  *
- * Serializes a decimal char ref like &#38;
+ * See #xmlEncodeSpecialChars for an alternative.
  *
- * Writes at most 10 bytes. Does not include a terminating zero byte.
- *
- * Returns the number of bytes written.
- */
-int
-xmlSerializeDecCharRef(char *buf, int val) {
-    char *out = buf;
-    int len, i;
-
-    *out++ = '&';
-    *out++ = '#';
-
-    if (val < 100) {
-        len = (val < 10) ? 1 : 2;
-    } else if (val < 10000) {
-        len = (val < 1000) ? 3 : 4;
-    } else if (val < 1000000) {
-        len = (val < 100000) ? 5 : 6;
-    } else {
-        len = 7;
-    }
-
-    for (i = len - 1; i >= 0; i--) {
-        out[i] = '0' + val % 10;
-        val /= 10;
-    }
-
-    out[len] = ';';
-
-    return(len + 3);
-}
-
-static const char xmlEscapeSafe[128] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-};
-
-/*
- * xmlEscapeText:
- * @text:  input text
- * @flags:  XML_ESCAPE flags
- *
- * Escapes certain characters with char refs.
- *
- * XML_ESCAPE_ATTR: for attribute content.
- * XML_ESCAPE_NON_ASCII: escape non-ASCII chars.
- * XML_ESCAPE_HTML: for HTML content.
- * XML_ESCAPE_QUOT: escape double quotes.
- * XML_ESCAPE_ALLOW_INVALID: allow invalid characters.
- *
- * Returns an escaped string or NULL if a memory allocation failed.
+ * @param doc  the document containing the string (optional)
+ * @param input  A string to convert to XML.
+ * @returns a newly allocated string with substitutions.
  */
 xmlChar *
-xmlEscapeText(const xmlChar *text, int flags) {
-    const xmlChar *cur;
-    xmlChar *buffer;
-    xmlChar *out;
-    const xmlChar *unescaped;
-    size_t size = 50;
-
-    buffer = xmlMalloc(size + 1);
-    if (buffer == NULL)
-        return(NULL);
-    out = buffer;
-
-    cur = text;
-    unescaped = cur;
+xmlEncodeEntitiesReentrant(xmlDoc *doc, const xmlChar *input) {
+    int flags = 0;
 
-    while (*cur != '\0') {
-        char buf[12];
-	const xmlChar *end;
-        const xmlChar *repl;
-        size_t used;
-        size_t replSize;
-        size_t unescapedSize;
-        size_t totalSize;
-        int chunkSize = 1;
-        int c;
-
-        /* accelerator */
-	while (1) {
-            c = *cur;
-
-            if (c < 0x80) {
-                if (!xmlEscapeSafe[*cur])
-                    break;
-            } else {
-               if (flags & XML_ESCAPE_NON_ASCII)
-                   break;
-            }
-            cur += 1;
-        }
-
-        if (c == 0) {
-            chunkSize = 0;
-            repl = BAD_CAST "";
-            replSize = 0;
-        } else if (c == '<') {
-	    /*
-	     * Special handling of server side include in HTML attributes
-	     */
-	    if ((flags & XML_ESCAPE_HTML) && (flags & XML_ESCAPE_ATTR) &&
-	        (cur[1] == '!') && (cur[2] == '-') && (cur[3] == '-') &&
-	        ((end = xmlStrstr(cur, BAD_CAST "-->")) != NULL)) {
-                chunkSize = (end - cur) + 3;
-                repl = cur;
-                replSize = chunkSize;
-	    } else {
-                repl = BAD_CAST "&lt;";
-                replSize = 4;
-            }
-	} else if (c == '>') {
-            repl = BAD_CAST "&gt;";
-            replSize = 4;
-	} else if (c == '&') {
-	    /*
-	     * Special handling of &{...} construct from HTML 4, see
-	     * http://www.w3.org/TR/html401/appendix/notes.html#h-B.7.1
-	     */
-	    if ((flags & XML_ESCAPE_HTML) && (flags & XML_ESCAPE_ATTR) &&
-                (cur[1] == '{') && (end = xmlStrchr(cur, '}'))) {
-                chunkSize = (end - cur) + 1;
-                repl = cur;
-                replSize = chunkSize;
-	    } else {
-                repl = BAD_CAST "&amp;";
-                replSize = 5;
-            }
-	} else if ((flags & XML_ESCAPE_QUOT) && (c == '"')) {
-            repl = BAD_CAST "&quot;";
-            replSize = 6;
-	} else if (((flags & XML_ESCAPE_HTML) == 0) && (c == '\r')) {
-	    repl = BAD_CAST "&#13;";
-            replSize = 5;
-	} else if ((flags & XML_ESCAPE_NON_ASCII) && (c >= 0x80)) {
-            int val;
-
-            chunkSize = 4;
-            val = xmlGetUTF8Char(cur, &chunkSize);
-            if (val < 0) {
-                val = 0xFFFD;
-                chunkSize = 1;
-            } else if (((flags & XML_ESCAPE_ALLOW_INVALID) == 0) &&
-                       (!IS_CHAR(val))) {
-                val = 0xFFFD;
-            }
-
-            replSize = xmlSerializeHexCharRef(buf, val);
-            repl = BAD_CAST buf;
-	} else if ((flags & (XML_ESCAPE_ALLOW_INVALID | XML_ESCAPE_HTML)) ||
-                   (c >= 0x20) ||
-	           (c == '\n') || (c == '\t') || (c == '\r')) {
-	    /* default case, just copy */
-            cur += 1;
-            if (*cur != 0)
-                continue;
-
-            chunkSize = 0;
-            repl = BAD_CAST "";
-            replSize = 0;
-	} else {
-            /* ignore */
-            repl = BAD_CAST "";
-            replSize = 0;
-        }
-
-        used = out - buffer;
-        unescapedSize = cur - unescaped;
-        totalSize = unescapedSize + replSize;
-
-	cur += chunkSize;
-
-        if (totalSize > size - used) {
-            xmlChar *tmp;
-            int newSize;
-
-            if ((size > (SIZE_MAX - 1) / 2) ||
-                (totalSize > (SIZE_MAX - 1) / 2 - size)) {
-                xmlFree(buffer);
-                return(NULL);
-            }
-            newSize = size + totalSize;
-            if (*cur != 0)
-                newSize *= 2;
-            tmp = xmlRealloc(buffer, newSize + 1);
-            if (tmp == NULL) {
-                xmlFree(buffer);
-                return(NULL);
-            }
-            buffer = tmp;
-            size = newSize;
-            out = buffer + used;
-        }
-
-        memcpy(out, unescaped, unescapedSize);
-        out += unescapedSize;
-        memcpy(out, repl, replSize);
-        out += replSize;
-
-        unescaped = cur;
-    }
-
-    *out = 0;
-    return(buffer);
-}
-
-/**
- * xmlEncodeEntitiesInternal:
- * @doc:  the document containing the string
- * @input:  A string to convert to XML.
- * @flags:  XML_ESCAPE flags
- *
- * 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.
- *
- * Returns A newly allocated string with the substitution done.
- */
-xmlChar *
-xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input,
-                          unsigned flags) {
     if (input == NULL)
         return(NULL);
 
@@ -811,37 +533,15 @@ xmlEncodeEntitiesInternal(xmlDocPtr doc,
 }
 
 /**
- * xmlEncodeEntitiesReentrant:
- * @doc:  the document containing the string
- * @input:  A string to convert to XML.
- *
- * 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.
- *
- * This escapes '<', '>', '&' and '\r'. If the document has no encoding,
- * non-ASCII codepoints are escaped. There is some special handling for
- * HTML documents.
- *
- * Returns A newly allocated string with the substitution done.
- */
-xmlChar *
-xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
-    return xmlEncodeEntitiesInternal(doc, input, 0);
-}
-
-/**
- * xmlEncodeSpecialChars:
- * @doc:  unused
- * @input:  A string to convert to XML.
- *
- * Do a global encoding of a string, replacing the predefined entities
- * this routine is reentrant, and result must be deallocated.
+ * Replace special characters with predefined entities or numeric
+ * character references.
  *
- * This escapes '<', '>', '&', '"' and '\r' chars.
+ * Replaces `<`, `>`, `&` and `"` with predefined entities. Carriage
+ * return is replaced with `&#13;`.
  *
- * Returns A newly allocated string with the substitution done.
+ * @param doc  unused
+ * @param input  A string to convert to XML.
+ * @returns a newly allocated string with substitutions.
  */
 xmlChar *
 xmlEncodeSpecialChars(const xmlDoc *doc ATTRIBUTE_UNUSED,
@@ -849,28 +549,26 @@ xmlEncodeSpecialChars(const xmlDoc *doc
     if (input == NULL)
         return(NULL);
 
-    return(xmlEscapeText(input, XML_ESCAPE_QUOT | XML_ESCAPE_ALLOW_INVALID));
+    return(xmlEscapeText(input, XML_ESCAPE_QUOT));
 }
 
 /**
- * xmlCreateEntitiesTable:
+ * Create and initialize an empty entities hash table.
  *
- * create and initialize an empty entities hash table.
- * This really doesn't make sense and should be deprecated
+ * @deprecated Internal function, don't use.
  *
- * Returns the xmlEntitiesTablePtr just created or NULL in case of error.
+ * @returns the xmlEntitiesTable just created or NULL in case of error.
  */
-xmlEntitiesTablePtr
+xmlEntitiesTable *
 xmlCreateEntitiesTable(void) {
     return((xmlEntitiesTablePtr) xmlHashCreate(0));
 }
 
 /**
- * xmlFreeEntityWrapper:
- * @entity:  An entity
- * @name:  its name
- *
  * Deallocate the memory used by an entities in the hash table.
+ *
+ * @param entity  An entity
+ * @param name  its name
  */
 static void
 xmlFreeEntityWrapper(void *entity, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -879,23 +577,23 @@ xmlFreeEntityWrapper(void *entity, const
 }
 
 /**
- * xmlFreeEntitiesTable:
- * @table:  An entity table
- *
  * Deallocate the memory used by an entities hash table.
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param table  An entity table
  */
 void
-xmlFreeEntitiesTable(xmlEntitiesTablePtr table) {
+xmlFreeEntitiesTable(xmlEntitiesTable *table) {
     xmlHashFree(table, xmlFreeEntityWrapper);
 }
 
 /**
- * xmlCopyEntity:
- * @ent:  An entity
- *
  * Build a copy of an entity
  *
- * Returns the new xmlEntitiesPtr or NULL in case of error.
+ * @param payload  An entity
+ * @param name  unused
+ * @returns the new xmlEntities or NULL in case of error.
  */
 static void *
 xmlCopyEntity(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -947,29 +645,31 @@ error:
 }
 
 /**
- * xmlCopyEntitiesTable:
- * @table:  An entity table
- *
  * Build a copy of an entity table.
  *
- * Returns the new xmlEntitiesTablePtr or NULL in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param table  An entity table
+ * @returns the new xmlEntitiesTable or NULL in case of error.
  */
-xmlEntitiesTablePtr
-xmlCopyEntitiesTable(xmlEntitiesTablePtr table) {
+xmlEntitiesTable *
+xmlCopyEntitiesTable(xmlEntitiesTable *table) {
     return(xmlHashCopySafe(table, xmlCopyEntity, xmlFreeEntityWrapper));
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 
 /**
- * xmlDumpEntityDecl:
- * @buf:  An XML buffer.
- * @ent:  An entity table
+ * This will dump the content of the entity table as an XML DTD
+ * definition.
  *
- * This will dump the content of the entity table as an XML DTD definition
+ * @deprecated Internal function, don't use.
+ *
+ * @param buf  An XML buffer.
+ * @param ent  An entity table
  */
 void
-xmlDumpEntityDecl(xmlBufferPtr buf, xmlEntityPtr ent) {
+xmlDumpEntityDecl(xmlBuffer *buf, xmlEntity *ent) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (ent == NULL))
@@ -982,11 +682,12 @@ xmlDumpEntityDecl(xmlBufferPtr buf, xmlE
 }
 
 /**
- * xmlDumpEntityDeclScan:
- * @ent:  An entity table
- * @buf:  An XML buffer.
+ * When using the hash table scan function, arguments need to be
+ * reversed.
  *
- * When using the hash table scan function, arguments need to be reversed
+ * @param ent  an entity table
+ * @param save  a save context
+ * @param name  unused
  */
 static void
 xmlDumpEntityDeclScan(void *ent, void *save,
@@ -995,14 +696,16 @@ xmlDumpEntityDeclScan(void *ent, void *s
 }
 
 /**
- * xmlDumpEntitiesTable:
- * @buf:  An XML buffer.
- * @table:  An entity table
+ * This will dump the content of the entity table as an XML DTD
+ * definition.
+ *
+ * @deprecated Internal function, don't use.
  *
- * This will dump the content of the entity table as an XML DTD definition
+ * @param buf  An XML buffer.
+ * @param table  An entity table
  */
 void
-xmlDumpEntitiesTable(xmlBufferPtr buf, xmlEntitiesTablePtr table) {
+xmlDumpEntitiesTable(xmlBuffer *buf, xmlEntitiesTable *table) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (table == NULL))
diff -pruN 2.14.6+dfsg-0.1/error.c 2.15.0+dfsg-0.3/error.c
--- 2.14.6+dfsg-0.1/error.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/error.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <daniel@veillard.com>
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -18,14 +18,21 @@
 
 #include "private/error.h"
 #include "private/globals.h"
+#include "private/parser.h"
 #include "private/string.h"
 
 /**
- * xmlIsCatastrophicError:
- * @level:  error level
- * @code:  error code
+ * This currently comprises
  *
- * Returns true if an error is catastrophic.
+ * - OOM errors
+ * - assertion failures
+ * - invalid argument errors
+ * - I/O errors
+ * - unexpected errors from external libraries
+ *
+ * @param level  error level
+ * @param code  error code
+ * @returns true if an error is catastrophic.
  */
 int
 xmlIsCatastrophicError(int level, int code) {
@@ -215,12 +222,11 @@ xmlVUpdateError(xmlError *err,
  ************************************************************************/
 
 /**
- * xmlGenericErrorDefaultFunc:
- * @ctx:  an error context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
+ * Default handler for out-of-context error messages.
  *
- * Default handler for out of context error messages.
+ * @param ctx  user data (unused)
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 void
 xmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
@@ -235,25 +241,32 @@ xmlGenericErrorDefaultFunc(void *ctx ATT
 }
 
 /**
- * xmlSetGenericErrorFunc:
- * @ctx:  the new error handling context
- * @handler:  the new handler function
+ * Set the thread-local "generic" handler and context for error
+ * messages.
  *
- * DEPRECATED: See xmlSetStructuredErrorFunc for alternatives.
+ * @deprecated See #xmlSetStructuredErrorFunc for alternatives.
  *
- * Set the global "generic" handler and context for error messages.
- * The generic error handler will only receive fragments of error
- * messages which should be concatenated or printed to a stream.
+ * If you only want to disable parser errors being printed to
+ * stderr, use xmlParserOption XML_PARSE_NOERROR.
  *
- * If handler is NULL, use the built-in default handler which prints
+ * The generic error handler will only receive fragments of
+ * error messages which should be concatenated or printed to a
+ * stream.
+ *
+ * If `handler` is NULL, use the built-in default handler which prints
  * to stderr.
  *
- * Since this is a global setting, it's a good idea to reset the
- * error handler to its default value after collecting the errors
- * you're interested in.
+ * Since this is a thread-local setting, it's a good idea to reset
+ * the error handler to its default value after collecting the
+ * errors you're interested in. To get the original values, you
+ * have to access xmlGenericError and xmlGenericErrorContext
+ * directly, making this function kind of useless.
  *
  * For multi-threaded applications, this must be set separately for
  * each thread.
+ *
+ * @param ctx  the new error handling context
+ * @param handler  the new handler function
  */
 void
 xmlSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler) {
@@ -265,34 +278,41 @@ xmlSetGenericErrorFunc(void *ctx, xmlGen
 }
 
 /**
- * xmlSetStructuredErrorFunc:
- * @ctx:  the new error handling context
- * @handler:  the new handler function
+ * Set the thread-local "structured" handler and context for error
+ * messages.
  *
- * DEPRECATED: Use a per-context error handler.
+ * @deprecated Use a per-context error handler.
+ *
+ * If you only want to disable parser errors being printed to
+ * stderr, use xmlParserOption XML_PARSE_NOERROR.
  *
  * It's recommended to use the per-context error handlers instead:
  *
- * - xmlCtxtSetErrorHandler (since 2.13.0)
- * - xmlTextReaderSetStructuredErrorHandler
- * - xmlXPathSetErrorHandler (since 2.13.0)
- * - xmlXIncludeSetErrorHandler (since 2.13.0)
- * - xmlSchemaSetParserStructuredErrors
- * - xmlSchemaSetValidStructuredErrors
- * - xmlRelaxNGSetParserStructuredErrors
- * - xmlRelaxNGSetValidStructuredErrors
+ * - #xmlCtxtSetErrorHandler (since 2.13.0)
+ * - #xmlTextReaderSetStructuredErrorHandler
+ * - #xmlXPathSetErrorHandler (since 2.13.0)
+ * - #xmlXIncludeSetErrorHandler (since 2.13.0)
+ * - #xmlSchemaSetParserStructuredErrors
+ * - #xmlSchemaSetValidStructuredErrors
+ * - #xmlRelaxNGSetParserStructuredErrors
+ * - #xmlRelaxNGSetValidStructuredErrors
  *
- * Set the global "structured" handler and context for error messages.
- * If handler is NULL, the error handler is deactivated.
+ * If `handler` is NULL, the error handler is deactivated.
  *
  * The structured error handler takes precedence over "generic"
  * handlers, even per-context generic handlers.
  *
- * Since this is a global setting, it's a good idea to deactivate the
- * error handler after collecting the errors you're interested in.
+ * Since this is a thread-local setting, it's a good idea to reset
+ * the error handler to its default value after collecting the
+ * errors you're interested in. To get the original values, you
+ * have to access xmlStructuredError and xmlStructuredErrorContext
+ * directly, making this function kind of useless.
  *
  * For multi-threaded applications, this must be set separately for
  * each thread.
+ *
+ * @param ctx  the new error handling context
+ * @param handler  the new handler function
  */
 void
 xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) {
@@ -307,16 +327,16 @@ xmlSetStructuredErrorFunc(void *ctx, xml
  ************************************************************************/
 
 /**
- * xmlParserPrintFileInfo:
- * @input:  an xmlParserInputPtr input
+ * Displays the associated file and line information for the
+ * current input.
  *
- * DEPRECATED: Use xmlFormatError.
+ * @deprecated Use #xmlFormatError.
  *
- * Displays the associated file and line information for the current input
+ * @param input  an xmlParserInput input
  */
 
 void
-xmlParserPrintFileInfo(xmlParserInputPtr input) {
+xmlParserPrintFileInfo(struct _xmlParserInput *input) {
     if (input != NULL) {
 	if (input->filename)
 	    xmlGenericError(xmlGenericErrorContext,
@@ -329,102 +349,65 @@ xmlParserPrintFileInfo(xmlParserInputPtr
 }
 
 /**
- * xmlParserPrintFileContextInternal:
- * @input:  an xmlParserInputPtr input
+ * Displays current context within the input content for
+ * error reporting.
  *
- * Displays current context within the input content for error tracking
+ * @param input  an xmlParserInput input
+ * @param channel  output callback
+ * @param data  user data for output callback
  */
 
 static void
 xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
 		xmlGenericErrorFunc channel, void *data ) {
-    const xmlChar *cur, *base, *start;
-    unsigned int n, col;	/* GCC warns if signed, because compared with sizeof() */
-    xmlChar  content[81]; /* space for 80 chars + line terminator */
-    xmlChar *ctnt;
+    const xmlChar *start;
+    int n, col;
+    xmlChar content[81]; /* space for 80 chars + line terminator */
 
     if ((input == NULL) || (input->cur == NULL))
         return;
 
-    cur = input->cur;
-    base = input->base;
-    /* skip backwards over any end-of-lines */
-    while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
-	cur--;
-    }
-    n = 0;
-    /* search backwards for beginning-of-line (to max buff size) */
-    while ((n < sizeof(content) - 1) && (cur > base) &&
-	   (*cur != '\n') && (*cur != '\r')) {
-        cur--;
-        n++;
-    }
-    if ((n > 0) && ((*cur == '\n') || (*cur == '\r'))) {
-        cur++;
-    } else {
-        /* skip over continuation bytes */
-        while ((cur < input->cur) && ((*cur & 0xC0) == 0x80))
-            cur++;
-    }
-    /* calculate the error position in terms of the current position */
-    col = input->cur - cur;
-    /* search forward for end-of-line (to max buff size) */
-    n = 0;
-    start = cur;
-    /* copy selected text to our buffer */
-    while ((*cur != 0) && (*(cur) != '\n') && (*(cur) != '\r')) {
-        int len = input->end - cur;
-        int c = xmlGetUTF8Char(cur, &len);
+    n = sizeof(content) - 1;
+    xmlParserInputGetWindow(input, &start, &n, &col);
 
-        if ((c < 0) || (n + len > sizeof(content)-1))
-            break;
-        cur += len;
-	n += len;
-    }
     memcpy(content, start, n);
     content[n] = 0;
     /* print out the selected text */
     channel(data ,"%s\n", content);
     /* create blank line with problem pointer */
-    n = 0;
-    ctnt = content;
-    /* (leave buffer space for pointer + line terminator) */
-    while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) {
-	if (*(ctnt) != '\t')
-	    *(ctnt) = ' ';
-	ctnt++;
+    for (n = 0; n < col; n++) {
+	if (content[n] != '\t')
+	    content[n] = ' ';
     }
-    *ctnt++ = '^';
-    *ctnt = 0;
+    content[n++] = '^';
+    content[n] = 0;
     channel(data ,"%s\n", content);
 }
 
 /**
- * xmlParserPrintFileContext:
- * @input:  an xmlParserInputPtr input
+ * Displays current context within the input content for
+ * error reporting.
  *
- * DEPRECATED: Use xmlFormatError.
+ * @deprecated Use #xmlFormatError.
  *
- * Displays current context within the input content for error tracking
+ * @param input  an xmlParserInput input
  */
 void
-xmlParserPrintFileContext(xmlParserInputPtr input) {
+xmlParserPrintFileContext(struct _xmlParserInput *input) {
    xmlParserPrintFileContextInternal(input, xmlGenericError,
                                      xmlGenericErrorContext);
 }
 
 /**
- * xmlFormatError:
- * @err:  the error
- * @channel:  callback
- * @data:  user data for callback
- *
  * Report a formatted error to a printf-like callback.
  *
  * This can result in a verbose multi-line report including additional
  * information from the parser context.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
+ * @param err  the error
+ * @param channel  callback
+ * @param data  user data for callback
  */
 void
 xmlFormatError(const xmlError *err, xmlGenericErrorFunc channel, void *data)
@@ -611,7 +594,13 @@ xmlFormatError(const xmlError *err, xmlG
         if (cur != NULL) {
             if (cur->filename)
                 channel(data, "%s:%d: \n", cur->filename, cur->line);
-            else if ((line != 0) && (domain == XML_FROM_PARSER))
+            else if ((line != 0) &&
+                     ((domain == XML_FROM_PARSER) ||
+                      (domain == XML_FROM_SCHEMASV) ||
+                      (domain == XML_FROM_SCHEMASP) ||
+                      (domain == XML_FROM_DTD) ||
+                      (domain == XML_FROM_RELAXNGP) ||
+                      (domain == XML_FROM_RELAXNGV)))
                 channel(data, "Entity: line %d: \n", cur->line);
             xmlParserPrintFileContextInternal(cur, channel, data);
         }
@@ -632,18 +621,17 @@ xmlFormatError(const xmlError *err, xmlG
 }
 
 /**
- * xmlRaiseMemoryError:
- * @schannel: the structured callback channel
- * @channel: the old callback channel
- * @data: the callback data
- * @domain: the domain for the error
- * @error: optional error struct to be filled
- *
  * Update the global and optional error structure, then forward the
  * error to an error handler.
  *
  * This function doesn't make memory allocations which are likely
  * to fail after an OOM error.
+ *
+ * @param schannel  the structured callback channel
+ * @param channel  the old callback channel
+ * @param data  the callback data
+ * @param domain  the domain for the error
+ * @param error  optional error struct to be filled
  */
 void
 xmlRaiseMemoryError(xmlStructuredErrorFunc schannel, xmlGenericErrorFunc channel,
@@ -673,30 +661,28 @@ xmlRaiseMemoryError(xmlStructuredErrorFu
 }
 
 /**
- * xmlVRaiseError:
- * @schannel: the structured callback channel
- * @channel: the old callback channel
- * @data: the callback data
- * @ctx: the parser context or NULL
- * @node: the current node or NULL
- * @domain: the domain for the error
- * @code: the code for the error
- * @level: the xmlErrorLevel for the error
- * @file: the file source of the error (or NULL)
- * @line: the line of the error or 0 if N/A
- * @str1: extra string info
- * @str2: extra string info
- * @str3: extra string info
- * @int1: extra int info
- * @col: column number of the error or 0 if N/A
- * @msg:  the message to display/transmit
- * @ap:  extra parameters for the message display
- *
  * Update the appropriate global or contextual error structure,
  * then forward the error message down the parser or generic
  * error callback handler
  *
- * Returns 0 on success, -1 if a memory allocation failed.
+ * @param schannel  the structured callback channel
+ * @param channel  the old callback channel
+ * @param data  the callback data
+ * @param ctx  the parser context or NULL
+ * @param node  the current node or NULL
+ * @param domain  the domain for the error
+ * @param code  the code for the error
+ * @param level  the xmlErrorLevel for the error
+ * @param file  the file source of the error (or NULL)
+ * @param line  the line of the error or 0 if N/A
+ * @param str1  extra string info
+ * @param str2  extra string info
+ * @param str3  extra string info
+ * @param int1  extra int info
+ * @param col  column number of the error or 0 if N/A
+ * @param msg  the message to display/transmit
+ * @param ap  extra parameters for the message display
+ * @returns 0 on success, -1 if a memory allocation failed.
  */
 int
 xmlVRaiseError(xmlStructuredErrorFunc schannel,
@@ -715,7 +701,7 @@ xmlVRaiseError(xmlStructuredErrorFunc sc
         return(0);
 #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
     if (code == XML_ERR_INTERNAL_ERROR)
-        xmlAbort("Unexpected error: %d\n", code);
+        xmlAbort("Unexpected internal error: %s\n", msg);
 #endif
     if ((xmlGetWarningsDefaultValue == 0) && (level == XML_ERR_WARNING))
         return(0);
@@ -758,30 +744,28 @@ xmlVRaiseError(xmlStructuredErrorFunc sc
 }
 
 /**
- * xmlRaiseError:
- * @schannel: the structured callback channel
- * @channel: the old callback channel
- * @data: the callback data
- * @ctx: the parser context or NULL
- * @node: the node or NULL
- * @domain: the domain for the error
- * @code: the code for the error
- * @level: the xmlErrorLevel for the error
- * @file: the file source of the error (or NULL)
- * @line: the line of the error or 0 if N/A
- * @str1: extra string info
- * @str2: extra string info
- * @str3: extra string info
- * @int1: extra int info
- * @col: column number of the error or 0 if N/A
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Update the appropriate global or contextual error structure,
  * then forward the error message down the parser or generic
  * error callback handler
  *
- * Returns 0 on success, -1 if a memory allocation failed.
+ * @param schannel  the structured callback channel
+ * @param channel  the old callback channel
+ * @param data  the callback data
+ * @param ctx  the parser context or NULL
+ * @param node  the node or NULL
+ * @param domain  the domain for the error
+ * @param code  the code for the error
+ * @param level  the xmlErrorLevel for the error
+ * @param file  the file source of the error (or NULL)
+ * @param line  the line of the error or 0 if N/A
+ * @param str1  extra string info
+ * @param str2  extra string info
+ * @param str3  extra string info
+ * @param int1  extra int info
+ * @param col  column number of the error or 0 if N/A
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
+ * @returns 0 on success, -1 if a memory allocation failed.
  */
 int
 xmlRaiseError(xmlStructuredErrorFunc schannel,
@@ -840,13 +824,18 @@ xmlVFormatLegacyError(void *ctx, const c
 }
 
 /**
- * xmlParserError:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format an error messages, gives file, line, position and
- * extra parameters.
+ * This is the default SAX error handler, but it will never be
+ * called. If it isn't replaced by the user, errors will be
+ * handled by #xmlFormatError.
+ *
+ * @deprecated Do not call directly.
+ *
+ * Format an error message with additional detail from the
+ * parser context and print to generic error handler.
+ *
+ * @param ctx  an XML parser context
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 void
 xmlParserError(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
@@ -859,13 +848,18 @@ xmlParserError(void *ctx, const char *ms
 }
 
 /**
- * xmlParserWarning:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format a warning messages, gives file, line, position and
- * extra parameters.
+ * This is the default SAX warning handler, but it will never be
+ * called. If it isn't replaced by the user, warnings will be
+ * handled by #xmlFormatError.
+ *
+ * @deprecated Do not call directly.
+ *
+ * Format an warning message with additional detail from the
+ * parser context and print to generic error handler.
+ *
+ * @param ctx  an XML parser context
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 void
 xmlParserWarning(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
@@ -878,13 +872,18 @@ xmlParserWarning(void *ctx, const char *
 }
 
 /**
- * xmlParserValidityError:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format an validity error messages, gives file,
- * line, position and extra parameters.
+ * This is the default validity error handler, but it will never be
+ * called. If it isn't replaced by the user, errors will be
+ * handled by #xmlFormatError.
+ *
+ * @deprecated Do not call directly.
+ *
+ * Format an error message with additional detail from the
+ * parser context and print to generic error handler.
+ *
+ * @param ctx  an XML parser context
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 void
 xmlParserValidityError(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
@@ -897,13 +896,18 @@ xmlParserValidityError(void *ctx, const
 }
 
 /**
- * xmlParserValidityWarning:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format a validity warning messages, gives file, line,
- * position and extra parameters.
+ * This is the default validity warning handler, but it will never
+ * be called. If it isn't replaced by the user, warnings will be
+ * handled by #xmlFormatError.
+ *
+ * @deprecated Do not call directly.
+ *
+ * Format an warning message with additional detail from the
+ * parser context and print to generic error handler.
+ *
+ * @param ctx  an XML parser context
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 void
 xmlParserValidityWarning(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
@@ -923,12 +927,9 @@ xmlParserValidityWarning(void *ctx, cons
  ************************************************************************/
 
 /**
- * xmlGetLastError:
+ * Get the last error raised in this thread.
  *
- * Get the last global error registered. This is per thread if compiled
- * with thread support.
- *
- * Returns a pointer to the error
+ * @returns a pointer to the error
  */
 const xmlError *
 xmlGetLastError(void)
@@ -941,13 +942,12 @@ xmlGetLastError(void)
 }
 
 /**
- * xmlResetError:
- * @err: pointer to the error.
+ * Reset the error to success.
  *
- * Cleanup the error.
+ * @param err  pointer to the error
  */
 void
-xmlResetError(xmlErrorPtr err)
+xmlResetError(xmlError *err)
 {
     if (err == NULL)
         return;
@@ -968,10 +968,7 @@ xmlResetError(xmlErrorPtr err)
 }
 
 /**
- * xmlResetLastError:
- *
- * Cleanup the last global error registered. For parsing error
- * this does not change the well-formedness result.
+ * Reset the last error to success.
  */
 void
 xmlResetLastError(void)
@@ -983,16 +980,14 @@ xmlResetLastError(void)
 }
 
 /**
- * xmlCopyError:
- * @from:  a source error
- * @to:  a target error
- *
- * Save the original error to the new place.
+ * Copy an error.
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param from  a source error
+ * @param to  a target error
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlCopyError(const xmlError *from, xmlErrorPtr to) {
+xmlCopyError(const xmlError *from, xmlError *to) {
     const char *fmt = NULL;
 
     if ((from == NULL) || (to == NULL))
@@ -1010,10 +1005,8 @@ xmlCopyError(const xmlError *from, xmlEr
 }
 
 /**
- * xmlErrString:
- * @code:  an xmlParserErrors code
- *
- * Returns an error message for a code.
+ * @param code  an xmlParserErrors code
+ * @returns an error message for a code.
  */
 const char *
 xmlErrString(xmlParserErrors code) {
@@ -1343,11 +1336,10 @@ xmlErrString(xmlParserErrors code) {
 }
 
 /**
- * xmlVPrintErrorMessage:
- * @fmt:  printf format string
- * @ap:  arguments
- *
  * Prints to stderr.
+ *
+ * @param fmt  printf-like format string
+ * @param ap  arguments
  */
 void
 xmlVPrintErrorMessage(const char *fmt, va_list ap) {
@@ -1355,11 +1347,10 @@ xmlVPrintErrorMessage(const char *fmt, v
 }
 
 /**
- * xmlPrintErrorMessage:
- * @fmt:  printf format string
- * @...:  arguments
- *
  * Prints to stderr.
+ *
+ * @param fmt  printf-like format string
+ * @param ...  arguments
  */
 void
 xmlPrintErrorMessage(const char *fmt, ...) {
@@ -1371,11 +1362,10 @@ xmlPrintErrorMessage(const char *fmt, ..
 }
 
 /**
- * xmlAbort:
- * @fmt:  printf format string
- * @...:  arguments
- *
  * Print message to stderr and abort.
+ *
+ * @param fmt  printf-like format string
+ * @param ...  arguments
  */
 void
 xmlAbort(const char *fmt, ...) {
diff -pruN 2.14.6+dfsg-0.1/example/Makefile.in 2.15.0+dfsg-0.3/example/Makefile.in
--- 2.14.6+dfsg-0.1/example/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/example/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -273,6 +273,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -312,8 +313,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -351,10 +350,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -363,7 +360,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
diff -pruN 2.14.6+dfsg-0.1/example/io1.c 2.15.0+dfsg-0.3/example/io1.c
--- 2.14.6+dfsg-0.1/example/io1.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/example/io1.c	2025-09-15 11:55:59.000000000 +0000
@@ -96,7 +96,7 @@ sqlRead(void * context, char * buffer, i
    return(len);
 }
 
-const char *include = "<?xml version='1.0'?>\n\
+static const char *const include = "<?xml version='1.0'?>\n\
 <document xmlns:xi=\"http://www.w3.org/2003/XInclude\">\n\
   <p>List of people:</p>\n\
   <xi:include href=\"sql:select_name_from_people\"/>\n\
diff -pruN 2.14.6+dfsg-0.1/fuzz/Makefile.am 2.15.0+dfsg-0.3/fuzz/Makefile.am
--- 2.14.6+dfsg-0.1/fuzz/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -59,7 +59,7 @@ xml_LDFLAGS = $(AM_LDFLAGS) -fsanitize=f
 fuzz-xml: xml$(EXEEXT) seed/xml.stamp
 	@mkdir -p corpus/xml
 	./xml$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xml seed/xml
@@ -77,7 +77,7 @@ valid_LDFLAGS = $(AM_LDFLAGS) -fsanitize
 fuzz-valid: valid$(EXEEXT) seed/valid.stamp
 	@mkdir -p corpus/valid
 	./valid$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/valid seed/valid
@@ -95,7 +95,7 @@ xinclude_LDFLAGS = $(AM_LDFLAGS) -fsanit
 fuzz-xinclude: xinclude$(EXEEXT) seed/xinclude.stamp
 	@mkdir -p corpus/xinclude
 	./xinclude$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xinclude seed/xinclude
@@ -113,7 +113,7 @@ html_LDFLAGS = $(AM_LDFLAGS) -fsanitize=
 fuzz-html: html$(EXEEXT) seed/html.stamp
 	@mkdir -p corpus/html
 	./html$(EXEEXT) \
-	    -dict=html.dict \
+	    -dict=$(srcdir)/html.dict \
 	    -max_len=1000000 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/html seed/html
@@ -131,7 +131,7 @@ reader_LDFLAGS = $(AM_LDFLAGS) -fsanitiz
 fuzz-reader: reader$(EXEEXT) seed/reader.stamp
 	@mkdir -p corpus/reader
 	./reader$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/reader seed/reader
@@ -149,7 +149,7 @@ lint_LDFLAGS = -fsanitize=fuzzer
 fuzz-lint: lint$(EXEEXT) seed/lint.stamp
 	@mkdir -p corpus/lint
 	./lint$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/lint seed/lint
@@ -179,7 +179,7 @@ regexp_LDFLAGS = $(AM_LDFLAGS) -fsanitiz
 fuzz-regexp: regexp$(EXEEXT) seed/regexp.stamp
 	@mkdir -p corpus/regexp
 	./regexp$(EXEEXT) \
-	    -dict=regexp.dict \
+	    -dict=$(srcdir)/regexp.dict \
 	    -max_len=200 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/regexp seed/regexp
@@ -214,7 +214,7 @@ schema_LDFLAGS = $(AM_LDFLAGS) -fsanitiz
 fuzz-schema: schema$(EXEEXT) seed/schema.stamp
 	@mkdir -p corpus/schema
 	./schema$(EXEEXT) \
-	    -dict=schema.dict \
+	    -dict=$(srcdir)/schema.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/schema seed/schema
@@ -232,7 +232,7 @@ xpath_LDFLAGS = $(AM_LDFLAGS) -fsanitize
 fuzz-xpath: xpath$(EXEEXT) seed/xpath.stamp
 	@mkdir -p corpus/xpath
 	./xpath$(EXEEXT) \
-	    -dict=xpath.dict \
+	    -dict=$(srcdir)/xpath.dict \
 	    -max_len=10000 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xpath seed/xpath
diff -pruN 2.14.6+dfsg-0.1/fuzz/Makefile.in 2.15.0+dfsg-0.3/fuzz/Makefile.in
--- 2.14.6+dfsg-0.1/fuzz/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -294,6 +294,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -333,8 +334,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -372,10 +371,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -384,7 +381,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -951,7 +947,7 @@ seed/xml.stamp: genSeed$(EXEEXT)
 fuzz-xml: xml$(EXEEXT) seed/xml.stamp
 	@mkdir -p corpus/xml
 	./xml$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xml seed/xml
@@ -966,7 +962,7 @@ seed/valid.stamp: genSeed$(EXEEXT)
 fuzz-valid: valid$(EXEEXT) seed/valid.stamp
 	@mkdir -p corpus/valid
 	./valid$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/valid seed/valid
@@ -981,7 +977,7 @@ seed/xinclude.stamp: genSeed$(EXEEXT)
 fuzz-xinclude: xinclude$(EXEEXT) seed/xinclude.stamp
 	@mkdir -p corpus/xinclude
 	./xinclude$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xinclude seed/xinclude
@@ -996,7 +992,7 @@ seed/html.stamp: genSeed$(EXEEXT)
 fuzz-html: html$(EXEEXT) seed/html.stamp
 	@mkdir -p corpus/html
 	./html$(EXEEXT) \
-	    -dict=html.dict \
+	    -dict=$(srcdir)/html.dict \
 	    -max_len=1000000 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/html seed/html
@@ -1011,7 +1007,7 @@ seed/reader.stamp: genSeed$(EXEEXT)
 fuzz-reader: reader$(EXEEXT) seed/reader.stamp
 	@mkdir -p corpus/reader
 	./reader$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/reader seed/reader
@@ -1026,7 +1022,7 @@ seed/lint.stamp: genSeed$(EXEEXT)
 fuzz-lint: lint$(EXEEXT) seed/lint.stamp
 	@mkdir -p corpus/lint
 	./lint$(EXEEXT) \
-	    -dict=xml.dict \
+	    -dict=$(srcdir)/xml.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/lint seed/lint
@@ -1048,7 +1044,7 @@ seed/regexp.stamp:
 fuzz-regexp: regexp$(EXEEXT) seed/regexp.stamp
 	@mkdir -p corpus/regexp
 	./regexp$(EXEEXT) \
-	    -dict=regexp.dict \
+	    -dict=$(srcdir)/regexp.dict \
 	    -max_len=200 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/regexp seed/regexp
@@ -1077,7 +1073,7 @@ seed/schema.stamp: genSeed$(EXEEXT)
 fuzz-schema: schema$(EXEEXT) seed/schema.stamp
 	@mkdir -p corpus/schema
 	./schema$(EXEEXT) \
-	    -dict=schema.dict \
+	    -dict=$(srcdir)/schema.dict \
 	    -max_len=$(XML_MAX_LEN) \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/schema seed/schema
@@ -1092,7 +1088,7 @@ seed/xpath.stamp: genSeed$(EXEEXT)
 fuzz-xpath: xpath$(EXEEXT) seed/xpath.stamp
 	@mkdir -p corpus/xpath
 	./xpath$(EXEEXT) \
-	    -dict=xpath.dict \
+	    -dict=$(srcdir)/xpath.dict \
 	    -max_len=10000 \
 	    $$XML_FUZZ_OPTIONS \
 	    corpus/xpath seed/xpath
diff -pruN 2.14.6+dfsg-0.1/fuzz/README.md 2.15.0+dfsg-0.3/fuzz/README.md
--- 2.14.6+dfsg-0.1/fuzz/README.md	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/README.md	2025-09-15 11:55:59.000000000 +0000
@@ -51,3 +51,7 @@ XML_FUZZ_MALLOC_ABORT to see which alloc
 failures which are erroneously reported can be harder. If the report
 goes through xmlRaiseMemoryError, you can abort() there to get a
 stack trace.
+
+Bugs related to handling of malloc failures are not considered
+security-critical by the libxml2 maintainers. Nevertheless, we'd like
+to see such issues reported.
diff -pruN 2.14.6+dfsg-0.1/fuzz/api.c 2.15.0+dfsg-0.3/fuzz/api.c
--- 2.14.6+dfsg-0.1/fuzz/api.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/api.c	2025-09-15 11:55:59.000000000 +0000
@@ -38,6 +38,9 @@
 #ifndef XML_DEPRECATED
   #define XML_DEPRECATED
 #endif
+#ifndef XML_DEPRECATED_MEMBER
+  #define XML_DEPRECATED_MEMBER
+#endif
 
 #include <libxml/catalog.h>
 #include <libxml/HTMLtree.h>
@@ -2649,7 +2652,7 @@ LLVMFuzzerTestOneInput(const char *data,
                     oomReport = 0;
                 /*
                  * Don't reference XML_ELEMENT_TYPE_UNDEFINED dummy
-                 * declarations.
+                 * declarations which can be freed by xmlAddElementDecl.
                  */
                 if (elem != NULL && elem->parent == NULL)
                     elem = NULL;
diff -pruN 2.14.6+dfsg-0.1/fuzz/genSeed.c 2.15.0+dfsg-0.3/fuzz/genSeed.c
--- 2.14.6+dfsg-0.1/fuzz/genSeed.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/genSeed.c	2025-09-15 11:55:59.000000000 +0000
@@ -60,44 +60,18 @@ fuzzResourceRecorder(void *data ATTRIBUT
                      xmlResourceType type ATTRIBUTE_UNUSED,
                      xmlParserInputFlags flags,
                      xmlParserInputPtr *out) {
-    xmlParserInputPtr in;
-    static const int chunkSize = 16384;
-    int code, len;
-
     *out = NULL;
 
-    code = xmlNewInputFromUrl(URL, flags, &in);
-    if (code != XML_ERR_OK)
-        return(code);
-
-    if (globalData.entities == NULL) {
-        globalData.entities = xmlHashCreate(4);
-    } else if (xmlHashLookup(globalData.entities,
-                             (const xmlChar *) URL) != NULL) {
-        *out = in;
-        return(XML_ERR_OK);
-    }
+    if (globalData.entities == NULL ||
+        xmlHashLookup(globalData.entities, BAD_CAST URL) == NULL) {
+        data = xmlSlurpFile(URL, NULL);
 
-    do {
-        len = xmlParserInputGrow(in, chunkSize);
-        if (len < 0) {
-            fprintf(stderr, "Error reading %s\n", URL);
-            xmlFreeInputStream(in);
-            return(in->buf->error);
-        }
-    } while (len > 0);
+        if (globalData.entities == NULL)
+            globalData.entities = xmlHashCreate(4);
 
-    data = xmlStrdup(xmlBufContent(in->buf->buffer));
-    if (data == NULL) {
-        fprintf(stderr, "Error allocating entity data\n");
-        xmlFreeInputStream(in);
-        return(XML_ERR_NO_MEMORY);
+        xmlHashAddEntry(globalData.entities, (const xmlChar *) URL, data);
     }
 
-    xmlFreeInputStream(in);
-
-    xmlHashAddEntry(globalData.entities, (const xmlChar *) URL, data);
-
     return(xmlNewInputFromUrl(URL, flags, out));
 }
 
diff -pruN 2.14.6+dfsg-0.1/fuzz/lint.c 2.15.0+dfsg-0.3/fuzz/lint.c
--- 2.14.6+dfsg-0.1/fuzz/lint.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/fuzz/lint.c	2025-09-15 11:55:59.000000000 +0000
@@ -47,12 +47,12 @@ static const char *const switches[] = {
     "--compress",
     "--copy",
     "--debug",
-    "--debugent",
+    NULL,
     "--dropdtd",
     "--dtdattr",
     "--exc-c14n",
     "--format",
-    "--htmlout",
+    NULL,
     "--huge",
     "--insert",
     "--loaddtd",
@@ -69,7 +69,7 @@ static const char *const switches[] = {
     "--nonet",
     "--noout",
     "--nowarning",
-    "--nowrap",
+    NULL,
     "--noxincludenode",
     "--nsclean",
     "--oldxml10",
@@ -81,7 +81,7 @@ static const char *const switches[] = {
     "--recover",
     "--repeat",
     "--sax1",
-    "--testIO",
+    NULL,
     "--timing",
     "--valid",
     "--version",
@@ -192,7 +192,7 @@ LLVMFuzzerTestOneInput(const char *data,
 
     ival = xmlFuzzReadInt(1);
     if (ival != 0) {
-        snprintf(prettyBuf, 20, "%d", ival - 128);
+        snprintf(prettyBuf, 20, "%d", ival % 4);
         pushArg("--pretty");
         pushArg(prettyBuf);
     }
diff -pruN 2.14.6+dfsg-0.1/globals.c 2.15.0+dfsg-0.3/globals.c
--- 2.14.6+dfsg-0.1/globals.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/globals.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,9 +3,6 @@
  *            of the library
  *
  * See Copyright for the status of this software.
- *
- * Gary Pennington <Gary.Pennington@uk.sun.com>
- * daniel@veillard.com
  */
 
 #define IN_LIBXML
@@ -37,6 +34,11 @@
 static xmlMutex xmlThrDefMutex;
 
 /*
+ * Deprecated global setting which is unused since 2.15.0
+ */
+static int lineNumbersDefaultValue = 1;
+
+/*
  * Thread-local storage emulation.
  *
  * This works by replacing a global variable
@@ -145,7 +147,6 @@ struct _xmlGlobalState {
     int doValidityCheckingDefaultValue;
     int getWarningsDefaultValue;
     int keepBlanksDefaultValue;
-    int lineNumbersDefaultValue;
     int loadExtDtdDefaultValue;
     int pedanticParserDefaultValue;
     int substituteEntitiesDefaultValue;
@@ -189,67 +190,25 @@ static xmlGlobalState globalState;
  *									*
  ************************************************************************/
 
-/*
- * Memory allocation routines
- */
-
-/**
- * xmlFree:
- * @mem: an already allocated block of memory
- *
- * The variable holding the libxml free() implementation
- */
-xmlFreeFunc xmlFree = free;
-/**
- * xmlMalloc:
- * @size:  the size requested in bytes
- *
- * The variable holding the libxml malloc() implementation
- *
- * Returns a pointer to the newly allocated block or NULL in case of error
- */
-xmlMallocFunc xmlMalloc = malloc;
 /**
- * xmlMallocAtomic:
- * @size:  the size requested in bytes
- *
- * The variable holding the libxml malloc() implementation for atomic
- * data (i.e. blocks not containing pointers), useful when using a
- * garbage collecting allocator.
- *
- * Returns a pointer to the newly allocated block or NULL in case of error
- */
-xmlMallocFunc xmlMallocAtomic = malloc;
-/**
- * xmlRealloc:
- * @mem: an already allocated block of memory
- * @size:  the new size requested in bytes
- *
- * The variable holding the libxml realloc() implementation
- *
- * Returns a pointer to the newly reallocated block or NULL in case of error
- */
-xmlReallocFunc xmlRealloc = realloc;
-/**
- * xmlPosixStrdup
- * @cur:  the input char *
- *
  * a strdup implementation with a type signature matching POSIX
  *
- * Returns a new xmlChar * or NULL
+ * @param cur  the input char *
+ * @returns a new xmlChar * or NULL
  */
 static char *
 xmlPosixStrdup(const char *cur) {
     return((char*) xmlCharStrdup(cur));
 }
-/**
- * xmlMemStrdup:
- * @str: a zero terminated string
- *
- * The variable holding the libxml strdup() implementation
- *
- * Returns the copy of the string or NULL in case of error
+
+/*
+ * Memory allocation routines
  */
+
+xmlFreeFunc xmlFree = free;
+xmlMallocFunc xmlMalloc = malloc;
+xmlMallocFunc xmlMallocAtomic = malloc;
+xmlReallocFunc xmlRealloc = realloc;
 xmlStrdupFunc xmlMemStrdup = xmlPosixStrdup;
 
 /*
@@ -260,7 +219,6 @@ static int xmlDoValidityCheckingDefaultV
 static int xmlGetWarningsDefaultValueThrDef = 1;
 static int xmlLoadExtDtdDefaultValueThrDef = 0;
 static int xmlPedanticParserDefaultValueThrDef = 0;
-static int xmlLineNumbersDefaultValueThrDef = 0;
 static int xmlKeepBlanksDefaultValueThrDef = 1;
 static int xmlSubstituteEntitiesDefaultValueThrDef = 0;
 
@@ -285,12 +243,11 @@ static int xmlSaveNoEmptyTagsThrDef = 0;
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlDefaultSAXHandler:
+ * Default SAX version1 handler for XML, builds the DOM tree
  *
- * DEPRECATED: This handler is unused and will be removed from future
+ * @deprecated This handler is unused and will be removed from future
  * versions.
  *
- * Default SAX version1 handler for XML, builds the DOM tree
  */
 const xmlSAXHandlerV1 xmlDefaultSAXHandler = {
     xmlSAX2InternalSubset,
@@ -325,12 +282,11 @@ const xmlSAXHandlerV1 xmlDefaultSAXHandl
 #endif /* LIBXML_SAX1_ENABLED */
 
 /**
- * xmlDefaultSAXLocator:
- *
- * DEPRECATED: Don't use
- *
  * The default SAX Locator
  * { getPublicId, getSystemId, getLineNumber, getColumnNumber}
+ *
+ * @deprecated Don't use
+ *
  */
 const xmlSAXLocator xmlDefaultSAXLocator = {
     xmlSAX2GetPublicId,
@@ -341,12 +297,11 @@ const xmlSAXLocator xmlDefaultSAXLocator
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_SAX1_ENABLED)
 /**
- * htmlDefaultSAXHandler:
+ * Default old SAX v1 handler for HTML, builds the DOM tree
  *
- * DEPRECATED: This handler is unused and will be removed from future
+ * @deprecated This handler is unused and will be removed from future
  * versions.
  *
- * Default old SAX v1 handler for HTML, builds the DOM tree
  */
 const xmlSAXHandlerV1 htmlDefaultSAXHandler = {
     xmlSAX2InternalSubset,
@@ -390,17 +345,13 @@ xmlInitGlobalState(xmlGlobalStatePtr gs)
  ************************************************************************/
 
 /**
- * xmlInitGlobals:
- *
- * DEPRECATED: Alias for xmlInitParser.
+ * @deprecated Alias for #xmlInitParser.
  */
 void xmlInitGlobals(void) {
     xmlInitParser();
 }
 
 /**
- * xmlInitGlobalsInternal:
- *
  * Additional initialisation for multi-threading
  */
 void xmlInitGlobalsInternal(void) {
@@ -419,10 +370,8 @@ void xmlInitGlobalsInternal(void) {
 }
 
 /**
- * xmlCleanupGlobals:
- *
- * DEPRECATED: This function is a no-op. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function is a no-op. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  */
@@ -430,8 +379,6 @@ void xmlCleanupGlobals(void) {
 }
 
 /**
- * xmlCleanupGlobalsInternal:
- *
  * Additional cleanup for multi-threading
  */
 void xmlCleanupGlobalsInternal(void) {
@@ -517,13 +464,11 @@ xmlRegisterGlobalStateDtor(xmlGlobalStat
 
 #ifndef USE_TLS
 /**
- * xmlNewGlobalState:
- *
- * xmlNewGlobalState() allocates a global state. This structure is used to
+ * Allocates a global state. This structure is used to
  * hold all data for use by a thread when supporting backwards compatibility
  * of libxml2 to pre-thread-safe behaviour.
  *
- * Returns the newly allocated xmlGlobalStatePtr or NULL in case of error
+ * @returns the newly allocated xmlGlobalState or NULL in case of error
  */
 static xmlGlobalStatePtr
 xmlNewGlobalState(int allowFailure)
@@ -613,7 +558,6 @@ xmlInitGlobalState(xmlGlobalStatePtr gs)
          xmlDoValidityCheckingDefaultValueThrDef;
     gs->getWarningsDefaultValue = xmlGetWarningsDefaultValueThrDef;
     gs->keepBlanksDefaultValue = xmlKeepBlanksDefaultValueThrDef;
-    gs->lineNumbersDefaultValue = xmlLineNumbersDefaultValueThrDef;
     gs->loadExtDtdDefaultValue = xmlLoadExtDtdDefaultValueThrDef;
     gs->pedanticParserDefaultValue = xmlPedanticParserDefaultValueThrDef;
     gs->substituteEntitiesDefaultValue =
@@ -680,7 +624,7 @@ __xmlKeepBlanksDefaultValue(void) {
 
 int *
 __xmlLineNumbersDefaultValue(void) {
-    return(&xmlGetThreadLocalStorage(0)->lineNumbersDefaultValue);
+    return(&lineNumbersDefaultValue);
 }
 
 int *
@@ -783,9 +727,7 @@ __xmlMemStrdup(void) {
 #endif /* LIBXML_THREAD_ALLOC_ENABLED */
 
 /**
- * xmlGetLocalRngState:
- *
- * Returns the local RNG state.
+ * @returns the local RNG state.
  */
 unsigned *
 xmlGetLocalRngState(void) {
@@ -793,8 +735,6 @@ xmlGetLocalRngState(void) {
 }
 
 /**
- * xmlCheckThreadLocalStorage:
- *
  * Check whether thread-local storage could be allocated.
  *
  * In cross-platform code running in multithreaded environments, this
@@ -802,11 +742,10 @@ xmlGetLocalRngState(void) {
  * library functions to make sure that thread-local storage was
  * allocated properly.
  *
- * Returns 0 on success or -1 if a memory allocation failed. A failed
+ * @since 2.12.0
+ * @returns 0 on success or -1 if a memory allocation failed. A failed
  * allocation signals a typically fatal and irrecoverable out-of-memory
  * situation. Don't call any library functions in this case.
- *
- * Available since 2.12.0.
  */
 int
 xmlCheckThreadLocalStorage(void) {
@@ -818,29 +757,23 @@ xmlCheckThreadLocalStorage(void) {
 }
 
 /**
- * xmlGetLastErrorInternal:
- *
- * Returns a pointer to the global error struct.
+ * @returns a pointer to the global error struct.
  */
 xmlError *
 xmlGetLastErrorInternal(void) {
     return(&xmlGetThreadLocalStorage(0)->lastError);
 }
 
-/** DOC_DISABLE */
-
+#ifdef USE_DLL_MAIN
 /**
- * DllMain:
- * @hinstDLL: handle to DLL instance
- * @fdwReason: Reason code for entry
- * @lpvReserved: generic pointer (depends upon reason code)
- *
  * Entry point for Windows library. It is being used to free thread-specific
  * storage.
  *
- * Returns TRUE always
+ * @param hinstDLL  handle to DLL instance
+ * @param fdwReason  Reason code for entry
+ * @param lpvReserved  generic pointer (depends upon reason code)
+ * @returns TRUE always
  */
-#ifdef USE_DLL_MAIN
 #if defined(LIBXML_STATIC_FOR_DLL)
 int
 xmlDllMain(ATTRIBUTE_UNUSED void *hinstDLL, unsigned long fdwReason,
@@ -861,38 +794,46 @@ DllMain(ATTRIBUTE_UNUSED HINSTANCE hinst
         ATTRIBUTE_UNUSED LPVOID lpvReserved)
 #endif
 {
-    switch (fdwReason) {
-        case DLL_THREAD_DETACH:
+    if ((fdwReason == DLL_THREAD_DETACH) ||
+        (fdwReason == DLL_PROCESS_DETACH)) {
 #ifdef USE_TLS
-            xmlFreeGlobalState(&globalState);
+        xmlFreeGlobalState(&globalState);
 #else
-            if (globalkey != TLS_OUT_OF_INDEXES) {
-                xmlGlobalState *globalval;
+        if (globalkey != TLS_OUT_OF_INDEXES) {
+            xmlGlobalState *globalval;
 
-                globalval = (xmlGlobalState *) TlsGetValue(globalkey);
-                if (globalval) {
-                    xmlFreeGlobalState(globalval);
-                    TlsSetValue(globalkey, NULL);
-                }
+            globalval = (xmlGlobalState *) TlsGetValue(globalkey);
+            if (globalval) {
+                xmlFreeGlobalState(globalval);
+                TlsSetValue(globalkey, NULL);
             }
+        }
 #endif
-            break;
+    }
 
 #ifndef LIBXML_THREAD_ALLOC_ENABLED
-        case DLL_PROCESS_DETACH:
-            if (xmlFree == free)
-                xmlCleanupParser();
-            if (globalkey != TLS_OUT_OF_INDEXES) {
-                TlsFree(globalkey);
-                globalkey = TLS_OUT_OF_INDEXES;
-            }
-            break;
-#endif
+    if (fdwReason == DLL_PROCESS_DETACH) {
+        if (xmlFree == free)
+            xmlCleanupParser();
+        if (globalkey != TLS_OUT_OF_INDEXES) {
+            TlsFree(globalkey);
+            globalkey = TLS_OUT_OF_INDEXES;
+        }
     }
+#endif
+
     return TRUE;
 }
 #endif /* USE_DLL_MAIN */
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Call #xmlSetGenericErrorFunc in each thread.
+ *
+ * @param ctx  user data
+ * @param handler  error handler
+ */
 void
 xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler) {
     xmlMutexLock(&xmlThrDefMutex);
@@ -904,6 +845,14 @@ xmlThrDefSetGenericErrorFunc(void *ctx,
     xmlMutexUnlock(&xmlThrDefMutex);
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Call #xmlSetStructuredErrorFunc in each thread.
+ *
+ * @param ctx  user data
+ * @param handler  error handler
+ */
 void
 xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) {
     xmlMutexLock(&xmlThrDefMutex);
@@ -912,6 +861,14 @@ xmlThrDefSetStructuredErrorFunc(void *ct
     xmlMutexUnlock(&xmlThrDefMutex);
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use xmlParserOption XML_PARSE_DTDVALID.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefDoValidityCheckingDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -921,6 +878,14 @@ int xmlThrDefDoValidityCheckingDefaultVa
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use xmlParserOption XML_PARSE_NOWARNING.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefGetWarningsDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -931,6 +896,15 @@ int xmlThrDefGetWarningsDefaultValue(int
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Indenting is enabled by default. Use the xmlsave.h API
+ * and xmlSaveOption XML_SAVE_NO_INDENT to disable indenting.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefIndentTreeOutput(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -940,6 +914,14 @@ int xmlThrDefIndentTreeOutput(int v) {
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use the xmlsave.h API and #xmlSaveSetIndentString.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 const char * xmlThrDefTreeIndentString(const char * v) {
     const char * ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -949,6 +931,14 @@ const char * xmlThrDefTreeIndentString(c
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use the xmlsave.h API and xmlSaveOption XML_SAVE_NO_EMPTY.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefSaveNoEmptyTags(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -959,6 +949,15 @@ int xmlThrDefSaveNoEmptyTags(int v) {
 }
 #endif
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Whitespace is kept by default. Use xmlParserOption
+ * XML_PARSE_NOBLANKS to remove whitespace.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefKeepBlanksDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -968,15 +967,26 @@ int xmlThrDefKeepBlanksDefaultValue(int
     return ret;
 }
 
-int xmlThrDefLineNumbersDefaultValue(int v) {
-    int ret;
-    xmlMutexLock(&xmlThrDefMutex);
-    ret = xmlLineNumbersDefaultValueThrDef;
-    xmlLineNumbersDefaultValueThrDef = v;
-    xmlMutexUnlock(&xmlThrDefMutex);
-    return ret;
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Has no effect.
+ *
+ * @param v  unused
+ * @returns 1
+ */
+int xmlThrDefLineNumbersDefaultValue(int v ATTRIBUTE_UNUSED) {
+    return 1;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use xmlParserOption XML_PARSE_DTDLOAD.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefLoadExtDtdDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -986,6 +996,14 @@ int xmlThrDefLoadExtDtdDefaultValue(int
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use xmlParserOption XML_PARSE_PEDANTIC.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefPedanticParserDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -995,6 +1013,14 @@ int xmlThrDefPedanticParserDefaultValue(
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Use xmlParserOption XML_PARSE_NOENT.
+ *
+ * @param v  new value
+ * @returns the old value
+ */
 int xmlThrDefSubstituteEntitiesDefaultValue(int v) {
     int ret;
     xmlMutexLock(&xmlThrDefMutex);
@@ -1004,6 +1030,14 @@ int xmlThrDefSubstituteEntitiesDefaultVa
     return ret;
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated This feature will be removed.
+ *
+ * @param func  new value
+ * @returns the old value
+ */
 xmlRegisterNodeFunc
 xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func)
 {
@@ -1019,6 +1053,14 @@ xmlThrDefRegisterNodeDefault(xmlRegister
     return(old);
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated This feature will be removed.
+ *
+ * @param func  new value
+ * @returns the old value
+ */
 xmlDeregisterNodeFunc
 xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func)
 {
@@ -1034,6 +1076,15 @@ xmlThrDefDeregisterNodeDefault(xmlDeregi
     return(old);
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Call #xmlParserInputBufferCreateFilenameDefault
+ * in each thread.
+ *
+ * @param func  new value
+ * @returns the old value
+ */
 xmlParserInputBufferCreateFilenameFunc
 xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func)
 {
@@ -1051,6 +1102,15 @@ xmlThrDefParserInputBufferCreateFilename
     return(old);
 }
 
+/**
+ * Set per-thread default value.
+ *
+ * @deprecated Call #xmlOutputBufferCreateFilenameDefault
+ * in each thread.
+ *
+ * @param func  new value
+ * @returns the old value
+ */
 xmlOutputBufferCreateFilenameFunc
 xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func)
 {
@@ -1069,5 +1129,3 @@ xmlThrDefOutputBufferCreateFilenameDefau
     return(old);
 }
 
-/** DOC_ENABLE */
-
diff -pruN 2.14.6+dfsg-0.1/hash.c 2.15.0+dfsg-0.3/hash.c
--- 2.14.6+dfsg-0.1/hash.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/hash.c	2025-09-15 11:55:59.000000000 +0000
@@ -148,15 +148,13 @@ xmlHashQNameValue(unsigned seed,
 }
 
 /**
- * xmlHashCreate:
- * @size: initial size of the hash table
- *
  * Create a new hash table. Set size to zero if the number of entries
  * can't be estimated.
  *
- * Returns the newly created object, or NULL if a memory allocation failed.
+ * @param size  initial size of the hash table
+ * @returns the newly created object, or NULL if a memory allocation failed.
  */
-xmlHashTablePtr
+xmlHashTable *
 xmlHashCreate(int size) {
     xmlHashTablePtr hash;
 
@@ -195,18 +193,16 @@ xmlHashCreate(int size) {
 }
 
 /**
- * xmlHashCreateDict:
- * @size: the size of the hash table
- * @dict: a dictionary to use for the hash
- *
  * Create a new hash table backed by a dictionary. This can reduce
  * resource usage considerably if most keys passed to API functions
  * originate from this dictionary.
  *
- * Returns the newly created object, or NULL if a memory allocation failed.
+ * @param size  the size of the hash table
+ * @param dict  a dictionary to use for the hash
+ * @returns the newly created object, or NULL if a memory allocation failed.
  */
-xmlHashTablePtr
-xmlHashCreateDict(int size, xmlDictPtr dict) {
+xmlHashTable *
+xmlHashCreateDict(int size, xmlDict *dict) {
     xmlHashTablePtr hash;
 
     hash = xmlHashCreate(size);
@@ -218,15 +214,14 @@ xmlHashCreateDict(int size, xmlDictPtr d
 }
 
 /**
- * xmlHashFree:
- * @hash: hash table
- * @dealloc: deallocator function or NULL
- *
  * Free the hash and its contents. The payload is deallocated with
- * @dealloc if provided.
+ * `dealloc` if provided.
+ *
+ * @param hash  hash table
+ * @param dealloc  deallocator function or NULL
  */
 void
-xmlHashFree(xmlHashTablePtr hash, xmlHashDeallocator dealloc) {
+xmlHashFree(xmlHashTable *hash, xmlHashDeallocator dealloc) {
     if (hash == NULL)
         return;
 
@@ -259,11 +254,10 @@ xmlHashFree(xmlHashTablePtr hash, xmlHas
 }
 
 /**
- * xmlFastStrEqual:
- * @s1: string
- * @s2: string
- *
  * Compare two strings for equality, allowing NULL values.
+ *
+ * @param s1  string
+ * @param s2  string
  */
 static int
 xmlFastStrEqual(const xmlChar *s1, const xmlChar *s2) {
@@ -275,17 +269,16 @@ xmlFastStrEqual(const xmlChar *s1, const
 }
 
 /**
- * xmlHashFindEntry:
- * @hash: hash table, non-NULL, size > 0
- * @key: first string key, non-NULL
- * @key2: second string key
- * @key3: third string key
- * @hashValue: valid hash value of keys
- * @pfound: result of search
- *
  * Try to find a matching hash table entry. If an entry was found, set
- * @found to 1 and return the entry. Otherwise, set @found to 0 and return
+ * `found` to 1 and return the entry. Otherwise, set `found` to 0 and return
  * the location where a new entry should be inserted.
+ *
+ * @param hash  hash table, non-NULL, size > 0
+ * @param key  first string key, non-NULL
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param hashValue  valid hash value of keys
+ * @param pfound  result of search
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 static xmlHashEntry *
@@ -342,13 +335,11 @@ xmlHashFindEntry(const xmlHashTable *has
 }
 
 /**
- * xmlHashGrow:
- * @hash: hash table
- * @size: new size of the hash table
- *
  * Resize the hash table.
  *
- * Returns 0 in case of success, -1 if a memory allocation failed.
+ * @param hash  hash table
+ * @param size  new size of the hash table
+ * @returns 0 in case of success, -1 if a memory allocation failed.
  */
 static int
 xmlHashGrow(xmlHashTablePtr hash, unsigned size) {
@@ -409,20 +400,19 @@ done:
 }
 
 /**
- * xmlHashUpdateInternal:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- * @payload: pointer to the payload
- * @dealloc: deallocator function for replaced item or NULL
- * @update: whether existing entries should be updated
- *
  * Internal function to add or update hash entries.
+ *
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param payload  pointer to the payload
+ * @param dealloc  deallocator function for replaced item or NULL
+ * @param update  whether existing entries should be updated
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 static int
-xmlHashUpdateInternal(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashUpdateInternal(xmlHashTable *hash, const xmlChar *key,
                       const xmlChar *key2, const xmlChar *key3,
                       void *payload, xmlHashDeallocator dealloc, int update) {
     xmlChar *copy, *copy2, *copy3;
@@ -593,11 +583,10 @@ xmlHashUpdateInternal(xmlHashTablePtr ha
 }
 
 /**
- * xmlHashDefaultDeallocator:
- * @entry: hash table entry
- * @key: the entry's string key
- *
  * Free a hash table entry with xmlFree.
+ *
+ * @param entry  hash table entry
+ * @param key  the entry's string key
  */
 void
 xmlHashDefaultDeallocator(void *entry, const xmlChar *key ATTRIBUTE_UNUSED) {
@@ -605,87 +594,79 @@ xmlHashDefaultDeallocator(void *entry, c
 }
 
 /**
- * xmlHashAdd:
- * @hash: hash table
- * @key: string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry. If an entry with this key already exists,
  * payload will not be updated and 0 is returned. This return value
  * can't be distinguished from out-of-memory errors, so this function
  * should be used with care.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 1 on success, 0 if an entry exists and -1 in case of error.
+ * @param hash  hash table
+ * @param key  string key
+ * @param payload  pointer to the payload
+ * @returns 1 on success, 0 if an entry exists and -1 in case of error.
  */
 int
-xmlHashAdd(xmlHashTablePtr hash, const xmlChar *key, void *payload) {
+xmlHashAdd(xmlHashTable *hash, const xmlChar *key, void *payload) {
     return(xmlHashUpdateInternal(hash, key, NULL, NULL, payload, NULL, 0));
 }
 
 /**
- * xmlHashAdd2:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry with two strings as key.
  *
- * See xmlHashAdd.
+ * See #xmlHashAdd.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 1 on success, 0 if an entry exists and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param payload  pointer to the payload
+ * @returns 1 on success, 0 if an entry exists and -1 in case of error.
  */
 int
-xmlHashAdd2(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashAdd2(xmlHashTable *hash, const xmlChar *key,
                  const xmlChar *key2, void *payload) {
     return(xmlHashUpdateInternal(hash, key, key2, NULL, payload, NULL, 0));
 }
 
 /**
- * xmlHashAdd3:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry with three strings as key.
  *
- * See xmlHashAdd.
+ * See #xmlHashAdd.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 1 on success, 0 if an entry exists and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param payload  pointer to the payload
+ * @returns 1 on success, 0 if an entry exists and -1 in case of error.
  */
 int
-xmlHashAdd3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashAdd3(xmlHashTable *hash, const xmlChar *key,
                  const xmlChar *key2, const xmlChar *key3,
                  void *payload) {
     return(xmlHashUpdateInternal(hash, key, key2, key3, payload, NULL, 0));
 }
 
 /**
- * xmlHashAddEntry:
- * @hash: hash table
- * @key: string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry. If an entry with this key already exists,
  * payload will not be updated and -1 is returned. This return value
  * can't be distinguished from out-of-memory errors, so this function
  * should be used with care.
  *
  * NOTE: This function doesn't allow to distinguish malloc failures from
- *       existing entries. Use xmlHashAdd instead.
+ *       existing entries. Use #xmlHashAdd instead.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  string key
+ * @param payload  pointer to the payload
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashAddEntry(xmlHashTablePtr hash, const xmlChar *key, void *payload) {
+xmlHashAddEntry(xmlHashTable *hash, const xmlChar *key, void *payload) {
     int res = xmlHashUpdateInternal(hash, key, NULL, NULL, payload, NULL, 0);
 
     if (res == 0)
@@ -697,20 +678,18 @@ xmlHashAddEntry(xmlHashTablePtr hash, co
 }
 
 /**
- * xmlHashAddEntry2:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry with two strings as key.
  *
- * See xmlHashAddEntry.
+ * See #xmlHashAddEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param payload  pointer to the payload
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashAddEntry2(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashAddEntry2(xmlHashTable *hash, const xmlChar *key,
                  const xmlChar *key2, void *payload) {
     int res = xmlHashUpdateInternal(hash, key, key2, NULL, payload, NULL, 0);
 
@@ -723,21 +702,19 @@ xmlHashAddEntry2(xmlHashTablePtr hash, c
 }
 
 /**
- * xmlHashAddEntry3:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- * @payload: pointer to the payload
- *
  * Add a hash table entry with three strings as key.
  *
- * See xmlHashAddEntry.
+ * See #xmlHashAddEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param payload  pointer to the payload
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashAddEntry3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashAddEntry3(xmlHashTable *hash, const xmlChar *key,
                  const xmlChar *key2, const xmlChar *key3,
                  void *payload) {
     int res = xmlHashUpdateInternal(hash, key, key2, key3, payload, NULL, 0);
@@ -751,19 +728,17 @@ xmlHashAddEntry3(xmlHashTablePtr hash, c
 }
 
 /**
- * xmlHashUpdateEntry:
- * @hash: hash table
- * @key: string key
- * @payload: pointer to the payload
- * @dealloc: deallocator function for replaced item or NULL
- *
  * Add a hash table entry. If an entry with this key already exists,
  * the old payload will be freed and updated with the new value.
  *
- * Returns 0 in case of success, -1 if a memory allocation failed.
+ * @param hash  hash table
+ * @param key  string key
+ * @param payload  pointer to the payload
+ * @param dealloc  deallocator function for replaced item or NULL
+ * @returns 0 in case of success, -1 if a memory allocation failed.
  */
 int
-xmlHashUpdateEntry(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashUpdateEntry(xmlHashTable *hash, const xmlChar *key,
                    void *payload, xmlHashDeallocator dealloc) {
     int res = xmlHashUpdateInternal(hash, key, NULL, NULL, payload,
                                     dealloc, 1);
@@ -775,21 +750,19 @@ xmlHashUpdateEntry(xmlHashTablePtr hash,
 }
 
 /**
- * xmlHashUpdateEntry2:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @payload: pointer to the payload
- * @dealloc: deallocator function for replaced item or NULL
- *
  * Add a hash table entry with two strings as key.
  *
- * See xmlHashUpdateEntry.
+ * See #xmlHashUpdateEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param payload  pointer to the payload
+ * @param dealloc  deallocator function for replaced item or NULL
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashUpdateEntry2(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashUpdateEntry2(xmlHashTable *hash, const xmlChar *key,
                    const xmlChar *key2, void *payload,
                    xmlHashDeallocator dealloc) {
     int res = xmlHashUpdateInternal(hash, key, key2, NULL, payload,
@@ -802,22 +775,20 @@ xmlHashUpdateEntry2(xmlHashTablePtr hash
 }
 
 /**
- * xmlHashUpdateEntry3:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- * @payload: pointer to the payload
- * @dealloc: deallocator function for replaced item or NULL
- *
  * Add a hash table entry with three strings as key.
  *
- * See xmlHashUpdateEntry.
+ * See #xmlHashUpdateEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param payload  pointer to the payload
+ * @param dealloc  deallocator function for replaced item or NULL
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashUpdateEntry3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashUpdateEntry3(xmlHashTable *hash, const xmlChar *key,
                    const xmlChar *key2, const xmlChar *key3,
                    void *payload, xmlHashDeallocator dealloc) {
     int res = xmlHashUpdateInternal(hash, key, key2, key3, payload,
@@ -830,83 +801,73 @@ xmlHashUpdateEntry3(xmlHashTablePtr hash
 }
 
 /**
- * xmlHashLookup:
- * @hash: hash table
- * @key: string key
+ * Find the entry specified by `key`.
  *
- * Find the entry specified by @key.
- *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param key  string key
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 void *
-xmlHashLookup(xmlHashTablePtr hash, const xmlChar *key) {
+xmlHashLookup(xmlHashTable *hash, const xmlChar *key) {
     return(xmlHashLookup3(hash, key, NULL, NULL));
 }
 
 /**
- * xmlHashLookup2:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- *
- * Find the payload specified by the (@key, @key2) tuple.
+ * Find the payload specified by the (`key`, `key2`) tuple.
  *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 void *
-xmlHashLookup2(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashLookup2(xmlHashTable *hash, const xmlChar *key,
               const xmlChar *key2) {
     return(xmlHashLookup3(hash, key, key2, NULL));
 }
 
 /**
- * xmlHashQLookup:
- * @hash: hash table
- * @prefix: prefix of the string key
- * @name: local name of the string key
+ * Find the payload specified by the QName `prefix:name` or `name`.
  *
- * Find the payload specified by the QName @prefix:@name or @name.
- *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param prefix  prefix of the string key
+ * @param name  local name of the string key
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 void *
-xmlHashQLookup(xmlHashTablePtr hash, const xmlChar *prefix,
+xmlHashQLookup(xmlHashTable *hash, const xmlChar *prefix,
                const xmlChar *name) {
     return(xmlHashQLookup3(hash, prefix, name, NULL, NULL, NULL, NULL));
 }
 
 /**
- * xmlHashQLookup2:
- * @hash: hash table
- * @prefix: first prefix
- * @name: first local name
- * @prefix2: second prefix
- * @name2: second local name
- *
  * Find the payload specified by the QNames tuple.
  *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param prefix  first prefix
+ * @param name  first local name
+ * @param prefix2  second prefix
+ * @param name2  second local name
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 void *
-xmlHashQLookup2(xmlHashTablePtr hash, const xmlChar *prefix,
+xmlHashQLookup2(xmlHashTable *hash, const xmlChar *prefix,
                 const xmlChar *name, const xmlChar *prefix2,
                 const xmlChar *name2) {
     return(xmlHashQLookup3(hash, prefix, name, prefix2, name2, NULL, NULL));
 }
 
 /**
- * xmlHashLookup3:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- *
- * Find the payload specified by the (@key, @key2, @key3) tuple.
+ * Find the payload specified by the (`key`, `key2`, `key3`) tuple.
  *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 void *
-xmlHashLookup3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashLookup3(xmlHashTable *hash, const xmlChar *key,
                const xmlChar *key2, const xmlChar *key3) {
     const xmlHashEntry *entry;
     unsigned hashValue;
@@ -922,22 +883,20 @@ xmlHashLookup3(xmlHashTablePtr hash, con
 }
 
 /**
- * xmlHashQLookup3:
- * @hash: hash table
- * @prefix: first prefix
- * @name: first local name
- * @prefix2: second prefix
- * @name2: second local name
- * @prefix3: third prefix
- * @name3: third local name
- *
  * Find the payload specified by the QNames tuple.
  *
- * Returns a pointer to the payload or NULL if no entry was found.
+ * @param hash  hash table
+ * @param prefix  first prefix
+ * @param name  first local name
+ * @param prefix2  second prefix
+ * @param name2  second local name
+ * @param prefix3  third prefix
+ * @param name3  third local name
+ * @returns a pointer to the payload or NULL if no entry was found.
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 void *
-xmlHashQLookup3(xmlHashTablePtr hash,
+xmlHashQLookup3(xmlHashTable *hash,
                 const xmlChar *prefix, const xmlChar *name,
                 const xmlChar *prefix2, const xmlChar *name2,
                 const xmlChar *prefix3, const xmlChar *name3) {
@@ -990,15 +949,14 @@ stubHashScannerFull(void *payload, void
 }
 
 /**
- * xmlHashScan:
- * @hash: hash table
- * @scan: scanner function for items in the hash
- * @data: extra data passed to @scan
+ * Scan the hash `table` and apply `scan` to each value.
  *
- * Scan the hash @table and apply @scan to each value.
+ * @param hash  hash table
+ * @param scan  scanner function for items in the hash
+ * @param data  extra data passed to `scan`
  */
 void
-xmlHashScan(xmlHashTablePtr hash, xmlHashScanner scan, void *data) {
+xmlHashScan(xmlHashTable *hash, xmlHashScanner scan, void *data) {
     stubData sdata;
     sdata.data = data;
     sdata.scan = scan;
@@ -1006,15 +964,14 @@ xmlHashScan(xmlHashTablePtr hash, xmlHas
 }
 
 /**
- * xmlHashScanFull:
- * @hash: hash table
- * @scan: scanner function for items in the hash
- * @data: extra data passed to @scan
+ * Scan the hash `table` and apply `scan` to each value.
  *
- * Scan the hash @table and apply @scan to each value.
+ * @param hash  hash table
+ * @param scan  scanner function for items in the hash
+ * @param data  extra data passed to `scan`
  */
 void
-xmlHashScanFull(xmlHashTablePtr hash, xmlHashScannerFull scan, void *data) {
+xmlHashScanFull(xmlHashTable *hash, xmlHashScannerFull scan, void *data) {
     const xmlHashEntry *entry, *end;
     xmlHashEntry old;
     unsigned i;
@@ -1056,20 +1013,19 @@ xmlHashScanFull(xmlHashTablePtr hash, xm
 }
 
 /**
- * xmlHashScan3:
- * @hash: hash table
- * @key: first string key or NULL
- * @key2: second string key or NULL
- * @key3: third string key or NULL
- * @scan: scanner function for items in the hash
- * @data: extra data passed to @scan
- *
- * Scan the hash @table and apply @scan to each value matching
- * (@key, @key2, @key3) tuple. If one of the keys is null,
+ * Scan the hash `table` and apply `scan` to each value matching
+ * (`key`, `key2`, `key3`) tuple. If one of the keys is null,
  * the comparison is considered to match.
+ *
+ * @param hash  hash table
+ * @param key  first string key or NULL
+ * @param key2  second string key or NULL
+ * @param key3  third string key or NULL
+ * @param scan  scanner function for items in the hash
+ * @param data  extra data passed to `scan`
  */
 void
-xmlHashScan3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashScan3(xmlHashTable *hash, const xmlChar *key,
              const xmlChar *key2, const xmlChar *key3,
              xmlHashScanner scan, void *data) {
     stubData sdata;
@@ -1079,20 +1035,19 @@ xmlHashScan3(xmlHashTablePtr hash, const
 }
 
 /**
- * xmlHashScanFull3:
- * @hash: hash table
- * @key: first string key or NULL
- * @key2: second string key or NULL
- * @key3: third string key or NULL
- * @scan: scanner function for items in the hash
- * @data: extra data passed to @scan
- *
- * Scan the hash @table and apply @scan to each value matching
- * (@key, @key2, @key3) tuple. If one of the keys is null,
+ * Scan the hash `table` and apply `scan` to each value matching
+ * (`key`, `key2`, `key3`) tuple. If one of the keys is null,
  * the comparison is considered to match.
+ *
+ * @param hash  hash table
+ * @param key  first string key or NULL
+ * @param key2  second string key or NULL
+ * @param key3  third string key or NULL
+ * @param scan  scanner function for items in the hash
+ * @param data  extra data passed to `scan`
  */
 void
-xmlHashScanFull3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashScanFull3(xmlHashTable *hash, const xmlChar *key,
                  const xmlChar *key2, const xmlChar *key3,
                  xmlHashScannerFull scan, void *data) {
     const xmlHashEntry *entry, *end;
@@ -1140,20 +1095,19 @@ xmlHashScanFull3(xmlHashTablePtr hash, c
     }
 }
 
-/*
- * xmlHashCopySafe:
- * @hash: hash table
- * @copyFunc: copier function for items in the hash
- * @deallocFunc: deallocation function in case of errors
+/**
+ * @param hash  hash table
+ * @param copyFunc  copier function for items in the hash
+ * @param deallocFunc  deallocation function in case of errors
  *
- * Copy the hash table using @copyFunc to copy payloads.
+ * Copy the hash table using `copyFunc` to copy payloads.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns the new table or NULL if a memory allocation failed.
+ * @returns the new table or NULL if a memory allocation failed.
  */
-xmlHashTablePtr
-xmlHashCopySafe(xmlHashTablePtr hash, xmlHashCopier copyFunc,
+xmlHashTable *
+xmlHashCopySafe(xmlHashTable *hash, xmlHashCopier copyFunc,
                 xmlHashDeallocator deallocFunc) {
     const xmlHashEntry *entry, *end;
     xmlHashTablePtr ret;
@@ -1193,90 +1147,81 @@ error:
     return(NULL);
 }
 
-/*
- * xmlHashCopy:
- * @hash: hash table
- * @copy: copier function for items in the hash
+/**
+ * @param hash  hash table
+ * @param copy  copier function for items in the hash
  *
- * DEPRECATED: Leaks memory in error case.
+ * @deprecated Leaks memory in error case.
  *
- * Copy the hash table using @copy to copy payloads.
+ * Copy the hash table using `copy` to copy payloads.
  *
- * Returns the new table or NULL if a memory allocation failed.
+ * @returns the new table or NULL if a memory allocation failed.
  */
-xmlHashTablePtr
-xmlHashCopy(xmlHashTablePtr hash, xmlHashCopier copy) {
+xmlHashTable *
+xmlHashCopy(xmlHashTable *hash, xmlHashCopier copy) {
     return(xmlHashCopySafe(hash, copy, NULL));
 }
 
 /**
- * xmlHashSize:
- * @hash: hash table
- *
  * Query the number of elements in the hash table.
  *
- * Returns the number of elements in the hash table or
+ * @param hash  hash table
+ * @returns the number of elements in the hash table or
  * -1 in case of error.
  */
 int
-xmlHashSize(xmlHashTablePtr hash) {
+xmlHashSize(xmlHashTable *hash) {
     if (hash == NULL)
         return(-1);
     return(hash->nbElems);
 }
 
 /**
- * xmlHashRemoveEntry:
- * @hash: hash table
- * @key: string key
- * @dealloc: deallocator function for removed item or NULL
- *
- * Find the entry specified by the @key and remove it from the hash table.
- * Payload will be freed with @dealloc.
+ * Find the entry specified by the `key` and remove it from the hash table.
+ * Payload will be freed with `dealloc`.
  *
- * Returns 0 on success and -1 if no entry was found.
+ * @param hash  hash table
+ * @param key  string key
+ * @param dealloc  deallocator function for removed item or NULL
+ * @returns 0 on success and -1 if no entry was found.
  */
-int xmlHashRemoveEntry(xmlHashTablePtr hash, const xmlChar *key,
+int xmlHashRemoveEntry(xmlHashTable *hash, const xmlChar *key,
                        xmlHashDeallocator dealloc) {
     return(xmlHashRemoveEntry3(hash, key, NULL, NULL, dealloc));
 }
 
 /**
- * xmlHashRemoveEntry2:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @dealloc: deallocator function for removed item or NULL
- *
  * Remove an entry with two strings as key.
  *
- * See xmlHashRemoveEntry.
+ * See #xmlHashRemoveEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param dealloc  deallocator function for removed item or NULL
+ * @returns 0 on success and -1 in case of error.
  */
 int
-xmlHashRemoveEntry2(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashRemoveEntry2(xmlHashTable *hash, const xmlChar *key,
                     const xmlChar *key2, xmlHashDeallocator dealloc) {
     return(xmlHashRemoveEntry3(hash, key, key2, NULL, dealloc));
 }
 
 /**
- * xmlHashRemoveEntry3:
- * @hash: hash table
- * @key: first string key
- * @key2: second string key
- * @key3: third string key
- * @dealloc: deallocator function for removed item or NULL
- *
  * Remove an entry with three strings as key.
  *
- * See xmlHashRemoveEntry.
+ * See #xmlHashRemoveEntry.
  *
- * Returns 0 on success and -1 in case of error.
+ * @param hash  hash table
+ * @param key  first string key
+ * @param key2  second string key
+ * @param key3  third string key
+ * @param dealloc  deallocator function for removed item or NULL
+ * @returns 0 on success and -1 in case of error.
  */
 ATTRIBUTE_NO_SANITIZE_INTEGER
 int
-xmlHashRemoveEntry3(xmlHashTablePtr hash, const xmlChar *key,
+xmlHashRemoveEntry3(xmlHashTable *hash, const xmlChar *key,
                     const xmlChar *key2, const xmlChar *key3,
                     xmlHashDeallocator dealloc) {
     xmlHashEntry *entry, *cur, *next;
diff -pruN 2.14.6+dfsg-0.1/html5ent.inc 2.15.0+dfsg-0.3/html5ent.inc
--- 2.14.6+dfsg-0.1/html5ent.inc	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/html5ent.inc	1970-01-01 00:00:00.000000000 +0000
@@ -1,1607 +0,0 @@
-static const unsigned char htmlEntAlpha[177] = {
-      0,   0,   0,   0,   0,  19,  19,   0,  12,  31,   0,  31,  65,   0,  45,
-    119,   0,  24, 144,   0,   8, 152,   0,  19, 173,   0,  12, 185,   0,  20,
-    210,   0,   7, 217,   0,   8, 225,   0,  49,  28,   1,   9,  37,   1,  20,
-    108,   1,  23, 131,   1,  11, 150,   1,   4, 154,   1,  31, 198,   1,  22,
-    238,   1,  19,   4,   2,  30,  40,   2,  12,  57,   2,   5,  62,   2,   4,
-     66,   2,  10,  76,   2,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0,
-      0,   0,   0,   0,   0,   0,   0,   0,   0,  86,   2,  25, 146,   2,  79,
-      5,   3,  52,  99,   3,  48, 163,   3,  46, 225,   3,  35,   5,   4,  25,
-     64,   4,  25,  92,   4,  28, 142,   4,   8, 150,   4,   9, 160,   4,  82,
-     56,   5,  24,  93,   5,  85,   2,   6,  41,  55,   6,  23, 121,   6,   9,
-    131,   6,  74, 233,   6,  58, 129,   7,  41, 185,   7,  42, 232,   7,  36,
-     18,   8,   9,  29,   8,  24,  53,   8,  11,  64,   8,  13
-};
-
-static const unsigned short htmlEntValues[2125] = {
-        0,     8,    13,    22,    31,    39,    45,    53,    62,    70,
-       78,    85,    93,   102,   119,   127,   136,   146,   155,   162,
-      175,   183,   193,   199,   210,   224,   231,   239,   248,   256,
-      264,   274,   281,   288,   297,   328,   339,   348,   357,   365,
-      376,   383,   393,   405,   412,   418,   431,   446,   460,   475,
-      503,   528,   547,   564,   577,   587,   606,   614,   627,   662,
-      671,   680,   306,   558,   689,   697,   716,   723,   730,   737,
-      747,   755,   764,   773,   779,   794,   802,   821,   838,   863,
-      881,   900,   911,   928,   937,   963,   988,  1000,  1019,  1038,
-     1062,  1079,  1102,  1130,  1154,  1174,  1192,  1209,  1230,  1251,
-     1286,  1298,  1321,  1342,  1370,  1392,  1421,  1444,  1457,  1466,
-      705,   788,   945,   953,  1266,  1274,  1362,  1413,  1434,  1475,
-     1481,  1487,  1496,  1505,  1513,  1519,  1526,  1534,  1543,  1554,
-     1562,  1582,  1606,  1614,  1623,  1633,  1654,  1669,  1677,  1685,
-     1691,  1698,  1708,  1644,  1724,  1730,  1738,  1759,  1784,  1793,
-     1803,  1817,  1825,  1832,  1836,  1851,  1860,  1869,  1877,  1883,
-     1890,  1898,  1904,  1913,  1940,  1960,  1978,  1993,  2014,  2030,
-     2039,  1846,  1931,  2045,  2054,  2062,  2067,  2075,  2082,  2098,
-     2106,  2124,  2132,  2141,  2157,  2170,  2177,  2185,  2192,  2201,
-     2209,  2215,  2222,  2229,  2238,  2276,  2309,  2327,  2345,  2353,
-     2362,  2369,  2377,  2386,  2394,  2246,  2253,  2266,  2285,  2295,
-     2401,  2409,  2415,  2423,  2432,  2441,  2450,  2458,  2465,  2472,
-     2480,  2489,  2495,  2503,  2512,  2521,  2528,  2532,  2541,  2550,
-     2558,  2572,  2580,  2589,  2598,  2604,  2624,  2662,  2677,  2698,
-     2719,  2747,  2760,  2778,  2797,  2831,  2867,  2887,  2906,  2932,
-     2956,  2969,  2987,  3007,  3024,  3039,  3051,  3069,  3082,  3090,
-     3111,  3120,  3137,  3159,  3177,  3194,  3216,  3234,  3243,  3261,
-     3280,  3288,  3295,  3304,  2639,  2647,  2739,  2810,  2820,  2849,
-     2857,  2924,  2948,  3098,  3310,  3317,  3323,  3338,  3351,  3359,
-     3372,  3381,  3389,  3394,  3401,  3410,  3419,  3428,  3434,  3457,
-     3479,  3500,  3525,  3549,  3567,  3576,  3584,  3595,  3614,  3622,
-     4343,  4352,  4361,  3631,  3645,  3656,  3678,  3690,  3714,  3725,
-     3815,  3834,  3850,  3889,  3960,  3987,  4008,  4050,  4069,  4109,
-     4140,  4173,  4199,  4253,  4281,  4327,  3702,  3739,  3749,  3765,
-     3779,  3788,  3805,  3869,  3879,  3900,  3910,  3922,  3933,  3950,
-     4023,  4035,  4089,  4099,  4130,  4163,  4189,  4214,  4226,  4241,
-     4271,  4293,  4303,  4317,  4366,  4374,  4383,  4391,  4397,  4406,
-     4414,  4423,  4431,  4439,  4449,  4458,  4482,  4500,  4506,  4515,
-     4524,  4533,  4543,  4550,  4561,  4574,  4589,  4608,  4620,  4626,
-     4634,  4640,  4645,  4657,  4674,  4682,  4778,  4787,  4690,  4738,
-     4746,  4756,  4703,  4713,  4728,  4771,  4793,  4799,  4807,  4815,
-     4824,  4833,  4839,  4848,  4856,  4873,  4882,  4891,  4897,  4966,
-     4973,  4979,  5000,  5038,  5054,  5076,  5098,  5127,  5141,  5176,
-     5213,  5234,  5254,  5281,  5306,  5320,  5328,  5344,  5359,  5367,
-     5374,  4866,  4905,  4922,  4943,  5016,  5024,  5119,  5155,  5165,
-     5195,  5203,  5273,  5298,  5389,  5398,  5405,  5414,  5423,  5459,
-     5467,  5485,  5503,  5522,  5538,  5546,  5561,  5570,  5578,  5665,
-     5674,  5682,  5711,  5760,  5772,  5779,  5431,  5439,  5447,  5454,
-     5590,  5607,  5630,  5655,  5620,  5645,  5691,  5701,  5725,  5735,
-     5750,  5788,  5810,  5800,  5818,  5826,  5835,  5843,  5850,  5855,
-     5861,  5870,  5879,  5885,  5893,  5906,  5914,  5931,  5944,  5989,
-     5998,  6011,  6020,  5955,  5965,  5979,  6029,  6038,  6057,  6065,
-     6074,  6082,  6088,  6097,  6105,  6114,  6122,  6132,  6146,  6162,
-     6182,  6202,  6210,  6219,  6254,  6269,  6286,  6307,  6318,  6333,
-     6351,  6370,  6386,  6394,  6403,  6412,  6048,  6193,  6232,  6240,
-     6297,  6379,  6419,  6428,  6436,  6442,  6459,  6466,  6476,  6541,
-     6558,  6566,  6575,  6584,  6453,  6486,  6498,  6509,  6527,  6594,
-     6602,  6611,  6619,  6628,  6637,  6645,  6650,  6659,  6668,  6675,
-     6682,  6689,  6698,  6706,  6712,  6720,  6729,  6738,  6745,  6752,
-     6761,  6770,  6776,  6783,  6801,  6808,  6815,  6823,  6832,  6841,
-     6850,  6891,  6899,  6914,  6923,  6934,  6943,  6951,  6959,  6968,
-     6973,  7012,  7147,  7155,  7164,  7223,  7231,  7240,  7245,  7263,
-     7272,  7279,  7291,  6858,  6866,  6872,  6879,  6886,  6907,  6982,
-     6990,  6996,  7006,  7021,  7027,  7034,  7100,  7124,  7132,  7138,
-     7044,  7051,  7058,  7065,  7072,  7079,  7086,  7093,  7109,  7118,
-     7172,  7178,  7187,  7193,  7200,  7205,  7216,  7256,  7300,  7308,
-     7320,  7334,  7347,  7367,  7377,  7396,  7415,  7424,  7430,  7439,
-     7457,  7468,  7476,  7486,  7493,  7501,  7512,  7520,  7530,  7541,
-     7551,  7562,  7574,  7587,  7599,  7610,  7629,  7646,  7658,  7668,
-     7680,  7690,  7706,  7721,  7768,  7777,  7786,  7795,  7804,  7813,
-     7835,  7843,  7852,  7869,  7879,  7888,  7897,  7906,  7915,  7949,
-     7958,  7967,  7976,  7985,  8031,  8041,  8050,  8059,  8068,  8077,
-     8111,  8123,  8134,  8146,  8155,  8164,  8173,  8182,  8228,  8238,
-     8246,  8255,  8264,  8273,  8289,  8312,  8329,  7360,  7389,  7406,
-     7451,  7740,  7749,  7758,  7823,  7861,  7925,  7931,  7937,  7943,
-     7995,  8001,  8007,  8013,  8019,  8025,  8087,  8093,  8099,  8105,
-     8192,  8198,  8204,  8210,  8216,  8222,  8283,  8297,  8303,  8322,
-     8339,  8345,  8353,  8359,  8368,  8428,  8437,  8445,  8454,  8463,
-     8472,  8480,  8498,  8505,  8513,  8524,  8542,  8550,  8557,  8577,
-     8583,  8730,  8749,  8772,  8785,  8823,  8841,  8851,  8860,  8870,
-     8886,  8895,  8904,  8913,  8929,  8945,  8954,  8965,  8976,  8985,
-     8994,  9012,  9071,  9089,  9104,  9119,  9131,  9145,  9154,  9172,
-     9191,  9200,  9209,  9221,  9230,  8377,  8385,  8395,  8403,  8411,
-     8419,  8491,  8533,  8568,  8592,  8598,  8697,  8703,  8713,  8721,
-     8605,  8612,  8628,  8645,  8653,  8662,  8673,  8685,  8741,  8758,
-     8766,  8781,  8795,  8802,  8813,  8833,  8879,  8923,  8939,  9006,
-     9021,  9031,  9039,  9047,  9055,  9062,  9083,  9240,  9248,  9256,
-     9266,  9276,  9284,  9300,  9311,  9319,  9328,  9334,  9370,  9376,
-     9384,  9395,  9405,  9413,  9422,  9431,  9466,  9472,  9482,  9491,
-     9528,  9535,  9545,  9555,  9563,  9572,  9627,  9645,  9658,  9676,
-     9695,  9715,  9727,  9737,  9747,  9756,  9763,  9771,  9780,  9789,
-     9805,  9814,  9823,  9834,  9841,  9294,  9342,  9352,  9360,  9441,
-     9460,  9451,  9499,  9520,  9508,  9580,  9597,  9607,  9616,  9589,
-     9799,  9853,  9862,  9870,  9879,  9889,  9898,  9913,  9923,  9929,
-     9936,  9942,  9951,  9959,  9991, 10032, 10040, 10065, 10089, 10095,
-    10103, 10111, 10120, 10137, 10146, 10167, 10177, 10188, 10197, 10211,
-    10226, 10234, 10244, 10262, 10274, 10283, 10292, 10300, 10309, 10317,
-    10323, 10329, 10336, 10344, 10350, 10359, 10374,  9908,  9967,  9975,
-     9983,  9999, 10010, 10016, 10024, 10051, 10059, 10075, 10082, 10130,
-    10155, 10162, 10255, 10390, 10407, 10413, 10423, 10433, 10442, 10452,
-    10460, 10469, 10477, 10485, 10494, 10503, 10510, 10519, 10529, 10545,
-    10557, 10566, 10576, 10585, 10595, 10605, 10615, 10625, 10635, 10644,
-    10654, 10664, 10674, 10684, 10694, 10704, 10713, 10722, 10539, 10731,
-    10745, 10754, 10769, 10776, 10785, 10793, 10799, 10806, 10901, 10909,
-    10923, 10932, 10939, 10965, 10972, 10991, 11014, 11023, 11032, 11039,
-    11047, 11069, 11191, 11207, 10739, 10764, 10814, 10820, 10844, 10828,
-    10834, 10852, 10859, 10883, 10869, 10877, 10894, 10917, 10947, 10953,
-    10959, 10982, 11000, 11008, 11057, 11063, 11075, 11082, 11090, 11098,
-    11107, 11117, 11129, 11138, 11147, 11159, 11172, 11182, 11218, 11226,
-    11236, 11243, 11253, 11262, 11286, 11294, 11302, 11322, 11332, 11342,
-    11350, 11362, 11374, 11383, 11393, 11410, 11428, 11437, 11447, 11456,
-    11466, 11475, 11485, 11272, 11280, 11314, 11495, 11504, 11524, 11531,
-    11539, 11546, 11554, 11563, 11605, 11613, 11621, 11630, 11642, 11654,
-    11662, 11670, 11678, 11776, 11783, 11791, 11800, 11807, 11816, 11825,
-    11834, 11878, 11894, 11902, 11512, 11519, 11571, 11580, 11588, 11597,
-    11686, 11695, 11713, 11721, 11705, 11729, 11737, 11747, 11757, 11767,
-    11844, 11850, 11858, 11872, 11866, 11886, 11909, 11917, 11923, 11931,
-    11939, 11948, 11957, 11966, 11974, 11989, 11998, 12004, 12012, 12021,
-    12028, 12035, 12044, 11984, 12053, 12062, 12070, 12080, 12089, 12103,
-    12111, 12120, 12132, 12142, 12151, 12174, 12181, 12189, 12257, 12291,
-    12300, 12309, 12317, 12325, 12334, 12345, 12356, 12365, 12374, 12383,
-    12389, 12395, 12403, 12420, 12431, 12443, 12451, 12766, 12776, 12786,
-    12794, 12808, 12817, 12834, 12843, 12850, 12894, 12903, 12924, 12931,
-    12950, 12973, 12982, 12991, 13000, 13009, 13026, 13048, 13062, 13080,
-    13097, 13115, 13124, 13133, 13143, 13154, 13164, 13172, 13196, 13211,
-    13220, 13232, 13249, 13256, 13265, 13275, 13284, 13291, 13313, 13319,
-    13336, 13345, 13441, 13453, 13464, 13480, 12097, 12161, 12167, 12199,
-    12214, 12221, 12228, 12235, 12242, 12250, 12207, 12266, 12274, 12282,
-    12414, 12459, 12482, 12500, 12516, 12533, 12558, 12578, 12600, 12617,
-    12623, 12647, 12473, 12552, 12631, 12637, 12655, 12662, 12686, 12704,
-    12716, 12725, 12736, 12748, 12757, 12672, 12680, 12697, 12802, 12828,
-    12858, 12866, 12877, 12886, 12915, 12941, 12959, 12967, 13181, 13190,
-    13204, 13243, 13301, 13307, 13330, 13351, 13358, 13366, 13374, 13383,
-    13392, 13401, 13411, 13420, 13429, 13435, 13491, 13500, 13507, 13515,
-    13533, 13577, 13587, 13597, 13603, 13612, 13629, 13637, 13644, 13652,
-    13682, 13713, 13721, 13729, 13739, 13749, 13758, 13764, 13773, 13783,
-    13525, 13542, 13552, 13561, 13570, 13661, 13667, 13675, 13693, 13699,
-    13707, 13790, 13801, 13809, 13818, 13838, 13852, 13871, 13880, 13900,
-    13915, 13925, 13935, 13944, 13953, 13964, 14005, 14031, 14038, 14059,
-    14067, 14076, 14085, 14106, 14114, 14120, 14129, 14226, 14234, 14243,
-    14288, 14297, 14312, 14321, 14330, 14339, 14367, 14374, 14383, 14392,
-    14401, 14409, 14491, 14500, 14524, 14532, 14541, 14627, 14665, 14676,
-    14720, 14729, 14756, 14771, 14788, 14820, 14833, 14851, 14875, 14884,
-    14893, 14904, 14915, 14969, 14989, 15043, 15051, 15060, 15068, 15094,
-    15121, 15149, 15159, 15169, 15180, 15190, 15201, 15210, 15221, 15231,
-    15242, 15264, 15274, 15288, 15300, 15309, 15319, 15337, 13830, 13892,
-    13973, 13981, 13990, 13996, 14016, 14025, 14051, 14096, 14137, 14145,
-    14154, 14171, 14181, 14190, 14199, 14209, 14164, 14220, 14252, 14280,
-    14260, 14268, 14306, 14347, 14361, 14355, 14418, 14430, 14447, 14475,
-    14455, 14463, 14485, 14509, 14518, 14549, 14597, 14558, 14566, 14576,
-    14583, 14590, 14606, 14613, 14620, 14637, 14647, 14657, 14685, 14693,
-    14703, 14711, 14740, 14748, 14782, 14797, 14805, 14813, 14861, 14869,
-    14925, 14933, 14939, 14952, 14961, 14980, 14999, 15007, 15013, 15026,
-    15035, 15087, 15114, 15128, 15134, 15142, 15253, 15330, 15347, 15353,
-    15362, 15370, 15385, 15391, 15400, 15409, 15417, 15425, 15435, 15443,
-    15452, 15460, 15467, 15476, 15483, 15492, 15498, 15506, 15515, 15524,
-    15535, 15544, 15551, 15559, 15567, 15577, 15585, 15595, 15604, 15612,
-    15621, 15630, 15712, 15720, 15729, 15737, 15746, 15765, 15772, 15380,
-    15638, 15646, 15680, 15689, 15696, 15706, 15654, 15670, 15675, 15663,
-    15758, 15781, 15827, 15833, 15841, 15849, 15859, 15867, 15878, 15886,
-    15899, 15909, 15918, 15942, 15960, 15970, 16043, 16048, 16060, 16069,
-    16077, 16303, 16312, 16318, 15790, 15806, 15814, 15821, 15797, 15894,
-    15925, 15937, 15954, 15978, 15987, 15993, 16001, 16008, 16015, 16021,
-    16027, 16035, 16085, 16091, 16098, 16106, 16190, 16206, 16213, 16221,
-    16230, 16237, 16248, 16259, 16270, 16286, 16294, 16114, 16122, 16133,
-    16145, 16152, 16164, 16173, 16182, 16200, 16279, 16328, 16336, 16344,
-    16353, 16363, 16372, 16387, 16398, 16414, 16407, 16420, 16429, 16437,
-    16447, 16456, 16464, 16474, 16483, 16492, 16504, 16533, 16541, 16628,
-    16638, 16658, 16667, 16676, 16684, 16692, 16701, 16712, 16723, 16732,
-    16741, 16750, 16756, 16762, 16770, 16781, 16798, 16806, 16839, 16847,
-    16853, 16863, 16873, 16881, 16890, 16907, 16920, 16945, 16965, 16983,
-    17002, 17023, 17043, 17062, 17081, 17088, 17104, 17113, 17122, 17129,
-    17150, 17159, 17168, 17177, 17186, 17195, 17204, 17214, 17225, 17240,
-    17252, 17261, 17271, 17280, 17287, 17293, 17310, 17320, 17330, 17361,
-    17372, 16514, 16520, 16526, 16551, 16558, 16573, 16579, 16586, 16593,
-    16600, 16607, 16615, 16622, 16566, 16649, 16792, 16816, 16824, 16833,
-    16901, 16915, 16936, 17141, 17233, 17304, 17340, 17346, 17352, 17378,
-    17387, 17396, 17503, 17525, 17534, 17544, 17562, 17569, 17575, 17585,
-    17597, 17606, 17614, 17632, 17641, 17650, 17657, 17669, 17686, 17692,
-    17712, 17796, 17805, 17822, 17832, 17844, 17852, 17861, 17887, 17896,
-    17918, 17927, 17947, 17955, 17975, 17995, 18029, 18063, 18094, 18103,
-    18112, 18122, 18132, 18142, 18158, 18176, 18190, 18198, 18343, 18421,
-    18428, 18436, 18623, 18632, 18642, 18660, 18670, 17404, 17410, 17417,
-    17425, 17433, 17448, 17455, 17462, 17470, 17479, 17490, 17498, 17441,
-    17513, 17519, 17555, 17624, 17702, 17707, 17721, 17729, 17743, 17757,
-    17771, 17778, 17787, 17737, 17751, 17765, 17870, 17878, 17903, 17911,
-    17939, 17966, 17986, 18006, 18012, 18022, 18040, 18046, 18056, 18072,
-    18080, 18088, 18152, 18207, 18213, 18221, 18237, 18246, 18253, 18260,
-    18269, 18278, 18319, 18327, 18335, 18229, 18288, 18303, 18297, 18313,
-    18353, 18364, 18376, 18383, 18395, 18404, 18413, 18445, 18450, 18455,
-    18460, 18466, 18474, 18483, 18499, 18508, 18517, 18526, 18535, 18542,
-    18549, 18558, 18599, 18607, 18615, 18491, 18568, 18583, 18577, 18593,
-    18653, 18678, 18688, 18694, 18702, 18711, 18720, 18726, 18734, 18744,
-    18752, 18762, 18775, 18797, 18812, 18824, 18834, 18843, 18853, 18861,
-    18869, 18900, 18908, 18916, 18958, 18966, 18976, 18985, 19051, 19061,
-    19069, 19081, 19092, 19101, 19112, 19124, 19133, 19140, 19148, 19157,
-    19166, 19186, 18785, 18792, 18879, 18894, 18887, 18925, 18933, 18941,
-    18950, 18999, 19008, 19026, 19032, 19019, 19044, 19207, 19215, 19223,
-    19232, 19240, 19248, 19257, 19265, 19271, 19280, 19289, 19298, 19308,
-    19316, 19325, 19334, 19343, 19352, 19371, 19381, 19390, 19398, 19404,
-    19412, 19421, 19432, 19447, 19464, 19482, 19491, 19512, 19526, 19545,
-    19555, 19563, 19572, 19581, 19590, 19599, 19615, 19624, 19631, 19364,
-    19500, 19505, 19538, 19609, 19642, 19650, 19666, 19675, 19685, 19698,
-    19709, 19723, 19732, 19740, 19753, 19769, 19780, 19810, 19840, 19851,
-    19870, 19890, 19896, 19905, 19929, 19939, 19947, 19953, 19961, 19970,
-    19982, 19994, 20003, 20012, 20021, 20030, 20043, 20056, 20069, 20082,
-    19660, 19763, 19801, 19831, 19914, 19922, 20093, 20101, 20111, 20128,
-    20138, 20146, 20155, 20161, 20178, 20122, 20169, 20187, 20195, 20204,
-    20212, 20221, 20229, 20238, 20247, 20252, 20261, 20270, 20278, 20286,
-    20295, 20304, 20314, 20324, 20333, 20342, 20351, 20361, 20371, 20380,
-    20388, 20398, 20407, 20414, 20422, 20428, 20434, 20442, 20449, 20458,
-    20467, 20474, 20481, 20490, 20499, 20505, 20512, 20522, 20529, 20537,
-    20544, 20555, 20564, 20573, 20580
-};
-
-static const unsigned char htmlEntStrings[20588] = {
-    132, 'E', 'l', 'i', 'g',   2, 195, 134, 130, 'M', 'P',   1, '&', 133, 'a',
-    'c', 'u', 't', 'e',   2, 195, 129,   5, 'b', 'r', 'e', 'v', 'e',   2, 196,
-    130, 132, 'c', 'i', 'r', 'c',   2, 195, 130,   2, 'c', 'y',   2, 208, 144,
-      2, 'f', 'r',   4, 240, 157, 148, 132, 133, 'g', 'r', 'a', 'v', 'e',   2,
-    195, 128,   4, 'l', 'p', 'h', 'a',   2, 206, 145,   4, 'm', 'a', 'c', 'r',
-      2, 196, 128,   2, 'n', 'd',   3, 226, 169, 147,   4, 'o', 'g', 'o', 'n',
-      2, 196, 132,   3, 'o', 'p', 'f',   4, 240, 157, 148, 184,  12, 'p', 'p',
-    'l', 'y', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n',   3, 226, 129, 161, 132,
-    'r', 'i', 'n', 'g',   2, 195, 133,   3, 's', 'c', 'r',   4, 240, 157, 146,
-    156,   5, 's', 's', 'i', 'g', 'n',   3, 226, 137, 148, 133, 't', 'i', 'l',
-    'd', 'e',   2, 195, 131, 131, 'u', 'm', 'l',   2, 195, 132,   8, 'a', 'c',
-    'k', 's', 'l', 'a', 's', 'h',   3, 226, 136, 150,   3, 'a', 'r', 'v',   3,
-    226, 171, 167,   5, 'a', 'r', 'w', 'e', 'd',   3, 226, 140, 134,   2, 'c',
-    'y',   2, 208, 145,   6, 'e', 'c', 'a', 'u', 's', 'e',   3, 226, 136, 181,
-      9, 'e', 'r', 'n', 'o', 'u', 'l', 'l', 'i', 's',   3, 226, 132, 172,   3,
-    'e', 't', 'a',   2, 206, 146,   2, 'f', 'r',   4, 240, 157, 148, 133,   3,
-    'o', 'p', 'f',   4, 240, 157, 148, 185,   4, 'r', 'e', 'v', 'e',   2, 203,
-    152,   3, 's', 'c', 'r',   3, 226, 132, 172,   5, 'u', 'm', 'p', 'e', 'q',
-      3, 226, 137, 142,   3, 'H', 'c', 'y',   2, 208, 167, 131, 'O', 'P', 'Y',
-      2, 194, 169,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 134,  66, 'a', 'p',
-     28,   1,   3, 226, 139, 146,  17, 'i', 't', 'a', 'l', 'D', 'i', 'f', 'f',
-    'e', 'r', 'e', 'n', 't', 'i', 'a', 'l', 'D',   3, 226, 133, 133,   6, 'a',
-    'y', 'l', 'e', 'y', 's',   3, 226, 132, 173,   5, 'c', 'a', 'r', 'o', 'n',
-      2, 196, 140, 133, 'c', 'e', 'd', 'i', 'l',   2, 195, 135,   4, 'c', 'i',
-    'r', 'c',   2, 196, 136,   6, 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136,
-    176,   3, 'd', 'o', 't',   2, 196, 138,   6, 'e', 'd', 'i', 'l', 'l', 'a',
-      2, 194, 184,   8, 'e', 'n', 't', 'e', 'r', 'D', 'o', 't',   2, 194, 183,
-      2, 'f', 'r',   3, 226, 132, 173,   2, 'h', 'i',   2, 206, 167,   8, 'i',
-    'r', 'c', 'l', 'e', 'D', 'o', 't',   3, 226, 138, 153,  10, 'i', 'r', 'c',
-    'l', 'e', 'M', 'i', 'n', 'u', 's',   3, 226, 138, 150,   9, 'i', 'r', 'c',
-    'l', 'e', 'P', 'l', 'u', 's',   3, 226, 138, 149,  10, 'i', 'r', 'c', 'l',
-    'e', 'T', 'i', 'm', 'e', 's',   3, 226, 138, 151,  23, 'l', 'o', 'c', 'k',
-    'w', 'i', 's', 'e', 'C', 'o', 'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e',
-    'g', 'r', 'a', 'l',   3, 226, 136, 178,  20, 'l', 'o', 's', 'e', 'C', 'u',
-    'r', 'l', 'y', 'D', 'o', 'u', 'b', 'l', 'e', 'Q', 'u', 'o', 't', 'e',   3,
-    226, 128, 157,  14, 'l', 'o', 's', 'e', 'C', 'u', 'r', 'l', 'y', 'Q', 'u',
-    'o', 't', 'e',   3, 226, 128, 153,  68, 'o', 'l', 'o', 'n',  11,   1,   3,
-    226, 136, 183,   1, 'e',   3, 226, 169, 180,   8, 'o', 'n', 'g', 'r', 'u',
-    'e', 'n', 't',   3, 226, 137, 161,   5, 'o', 'n', 'i', 'n', 't',   3, 226,
-    136, 175,  14, 'o', 'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e', 'g', 'r',
-    'a', 'l',   3, 226, 136, 174,   3, 'o', 'p', 'f',   3, 226, 132, 130,   8,
-    'o', 'p', 'r', 'o', 'd', 'u', 'c', 't',   3, 226, 136, 144,  30, 'o', 'u',
-    'n', 't', 'e', 'r', 'C', 'l', 'o', 'c', 'k', 'w', 'i', 's', 'e', 'C', 'o',
-    'n', 't', 'o', 'u', 'r', 'I', 'n', 't', 'e', 'g', 'r', 'a', 'l',   3, 226,
-    136, 179,   4, 'r', 'o', 's', 's',   3, 226, 168, 175,   3, 's', 'c', 'r',
-      4, 240, 157, 146, 158,  66, 'u', 'p',   3,   1,   3, 226, 139, 147,   3,
-    'C', 'a', 'p',   3, 226, 137, 141,  65, 'D',  45,   1,   3, 226, 133, 133,
-      6, 'o', 't', 'r', 'a', 'h', 'd',   3, 226, 164, 145,   3, 'J', 'c', 'y',
-      2, 208, 130,   3, 'S', 'c', 'y',   2, 208, 133,   3, 'Z', 'c', 'y',   2,
-    208, 143,   5, 'a', 'g', 'g', 'e', 'r',   3, 226, 128, 161,   3, 'a', 'r',
-    'r',   3, 226, 134, 161,   4, 'a', 's', 'h', 'v',   3, 226, 171, 164,   5,
-    'c', 'a', 'r', 'o', 'n',   2, 196, 142,   2, 'c', 'y',   2, 208, 148,  66,
-    'e', 'l',  37,   1,   3, 226, 136, 135,   2, 't', 'a',   2, 206, 148,   2,
-    'f', 'r',   4, 240, 157, 148, 135,  15, 'i', 'a', 'c', 'r', 'i', 't', 'i',
-    'c', 'a', 'l', 'A', 'c', 'u', 't', 'e',   2, 194, 180,  13, 'i', 'a', 'c',
-    'r', 'i', 't', 'i', 'c', 'a', 'l', 'D', 'o', 't',   2, 203, 153,  21, 'i',
-    'a', 'c', 'r', 'i', 't', 'i', 'c', 'a', 'l', 'D', 'o', 'u', 'b', 'l', 'e',
-    'A', 'c', 'u', 't', 'e',   2, 203, 157,  15, 'i', 'a', 'c', 'r', 'i', 't',
-    'i', 'c', 'a', 'l', 'G', 'r', 'a', 'v', 'e',   1, '`',  15, 'i', 'a', 'c',
-    'r', 'i', 't', 'i', 'c', 'a', 'l', 'T', 'i', 'l', 'd', 'e',   2, 203, 156,
-      6, 'i', 'a', 'm', 'o', 'n', 'd',   3, 226, 139, 132,  12, 'i', 'f', 'f',
-    'e', 'r', 'e', 'n', 't', 'i', 'a', 'l', 'D',   3, 226, 133, 134,   3, 'o',
-    'p', 'f',   4, 240, 157, 148, 187,  66, 'o', 't',  28,   2,   2, 194, 168,
-      3, 'D', 'o', 't',   3, 226, 131, 156,   5, 'E', 'q', 'u', 'a', 'l',   3,
-    226, 137, 144,  20, 'o', 'u', 'b', 'l', 'e', 'C', 'o', 'n', 't', 'o', 'u',
-    'r', 'I', 'n', 't', 'e', 'g', 'r', 'a', 'l',   3, 226, 136, 175,   8, 'o',
-    'u', 'b', 'l', 'e', 'D', 'o', 't',   2, 194, 168,  14, 'o', 'u', 'b', 'l',
-    'e', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 147,  14,
-    'o', 'u', 'b', 'l', 'e', 'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3,
-    226, 135, 144,  19, 'o', 'u', 'b', 'l', 'e', 'L', 'e', 'f', 't', 'R', 'i',
-    'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 148,  12, 'o', 'u',
-    'b', 'l', 'e', 'L', 'e', 'f', 't', 'T', 'e', 'e',   3, 226, 171, 164,  18,
-    'o', 'u', 'b', 'l', 'e', 'L', 'o', 'n', 'g', 'L', 'e', 'f', 't', 'A', 'r',
-    'r', 'o', 'w',   3, 226, 159, 184,  23, 'o', 'u', 'b', 'l', 'e', 'L', 'o',
-    'n', 'g', 'L', 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o',
-    'w',   3, 226, 159, 186,  19, 'o', 'u', 'b', 'l', 'e', 'L', 'o', 'n', 'g',
-    'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 159, 185,  15,
-    'o', 'u', 'b', 'l', 'e', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',
-      3, 226, 135, 146,  13, 'o', 'u', 'b', 'l', 'e', 'R', 'i', 'g', 'h', 't',
-    'T', 'e', 'e',   3, 226, 138, 168,  12, 'o', 'u', 'b', 'l', 'e', 'U', 'p',
-    'A', 'r', 'r', 'o', 'w',   3, 226, 135, 145,  16, 'o', 'u', 'b', 'l', 'e',
-    'U', 'p', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 149,
-     16, 'o', 'u', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'i', 'c', 'a', 'l', 'B',
-    'a', 'r',   3, 226, 136, 165,  72, 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',
-     15,   2,   3, 226, 134, 147,   3, 'B', 'a', 'r',   3, 226, 164, 147,   7,
-    'U', 'p', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 181,   8, 'o', 'w', 'n',
-    'B', 'r', 'e', 'v', 'e',   2, 204, 145,  18, 'o', 'w', 'n', 'L', 'e', 'f',
-    't', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165,
-    144,  16, 'o', 'w', 'n', 'L', 'e', 'f', 't', 'T', 'e', 'e', 'V', 'e', 'c',
-    't', 'o', 'r',   3, 226, 165, 158,  77, 'o', 'w', 'n', 'L', 'e', 'f', 't',
-    'V', 'e', 'c', 't', 'o', 'r',  13,   1,   3, 226, 134, 189,   3, 'B', 'a',
-    'r',   3, 226, 165, 150,  17, 'o', 'w', 'n', 'R', 'i', 'g', 'h', 't', 'T',
-    'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 159,  78, 'o', 'w',
-    'n', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',  12,   1,   3,
-    226, 135, 129,   3, 'B', 'a', 'r',   3, 226, 165, 151,  70, 'o', 'w', 'n',
-    'T', 'e', 'e',  12,   1,   3, 226, 138, 164,   5, 'A', 'r', 'r', 'o', 'w',
-      3, 226, 134, 167,   8, 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3, 226,
-    135, 147,   3, 's', 'c', 'r',   4, 240, 157, 146, 159,   5, 's', 't', 'r',
-    'o', 'k',   2, 196, 144,   2, 'N', 'G',   2, 197, 138, 130, 'T', 'H',   2,
-    195, 144, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 137,   5, 'c', 'a', 'r',
-    'o', 'n',   2, 196, 154, 132, 'c', 'i', 'r', 'c',   2, 195, 138,   2, 'c',
-    'y',   2, 208, 173,   3, 'd', 'o', 't',   2, 196, 150,   2, 'f', 'r',   4,
-    240, 157, 148, 136, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 136,   6, 'l',
-    'e', 'm', 'e', 'n', 't',   3, 226, 136, 136,   4, 'm', 'a', 'c', 'r',   2,
-    196, 146,  15, 'm', 'p', 't', 'y', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u',
-    'a', 'r', 'e',   3, 226, 151, 187,  19, 'm', 'p', 't', 'y', 'V', 'e', 'r',
-    'y', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',   3, 226, 150,
-    171,   4, 'o', 'g', 'o', 'n',   2, 196, 152,   3, 'o', 'p', 'f',   4, 240,
-    157, 148, 188,   6, 'p', 's', 'i', 'l', 'o', 'n',   2, 206, 149,  68, 'q',
-    'u', 'a', 'l',   8,   1,   3, 226, 169, 181,   5, 'T', 'i', 'l', 'd', 'e',
-      3, 226, 137, 130,  10, 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',
-      3, 226, 135, 140,   3, 's', 'c', 'r',   3, 226, 132, 176,   3, 's', 'i',
-    'm',   3, 226, 169, 179,   2, 't', 'a',   2, 206, 151, 131, 'u', 'm', 'l',
-      2, 195, 139,   5, 'x', 'i', 's', 't', 's',   3, 226, 136, 131,  11, 'x',
-    'p', 'o', 'n', 'e', 'n', 't', 'i', 'a', 'l', 'E',   3, 226, 133, 135,   2,
-    'c', 'y',   2, 208, 164,   2, 'f', 'r',   4, 240, 157, 148, 137,  16, 'i',
-    'l', 'l', 'e', 'd', 'S', 'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',
-      3, 226, 151, 188,  20, 'i', 'l', 'l', 'e', 'd', 'V', 'e', 'r', 'y', 'S',
-    'm', 'a', 'l', 'l', 'S', 'q', 'u', 'a', 'r', 'e',   3, 226, 150, 170,   3,
-    'o', 'p', 'f',   4, 240, 157, 148, 189,   5, 'o', 'r', 'A', 'l', 'l',   3,
-    226, 136, 128,   9, 'o', 'u', 'r', 'i', 'e', 'r', 't', 'r', 'f',   3, 226,
-    132, 177,   3, 's', 'c', 'r',   3, 226, 132, 177,   3, 'J', 'c', 'y',   2,
-    208, 131, 129, 'T',   1, '>',  68, 'a', 'm', 'm', 'a',  17,   1,   2, 206,
-    147,   1, 'd',   2, 207, 156,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 158,
-      5, 'c', 'e', 'd', 'i', 'l',   2, 196, 162,   4, 'c', 'i', 'r', 'c',   2,
-    196, 156,   2, 'c', 'y',   2, 208, 147,   3, 'd', 'o', 't',   2, 196, 160,
-      2, 'f', 'r',   4, 240, 157, 148, 138,   1, 'g',   3, 226, 139, 153,   3,
-    'o', 'p', 'f',   4, 240, 157, 148, 190,  75, 'r', 'e', 'a', 't', 'e', 'r',
-    'E', 'q', 'u', 'a', 'l',   9,   1,   3, 226, 137, 165,   4, 'L', 'e', 's',
-    's',   3, 226, 139, 155,  15, 'r', 'e', 'a', 't', 'e', 'r', 'F', 'u', 'l',
-    'l', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 167,  13, 'r', 'e', 'a', 't',
-    'e', 'r', 'G', 'r', 'e', 'a', 't', 'e', 'r',   3, 226, 170, 162,  10, 'r',
-    'e', 'a', 't', 'e', 'r', 'L', 'e', 's', 's',   3, 226, 137, 183,  16, 'r',
-    'e', 'a', 't', 'e', 'r', 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',
-      3, 226, 169, 190,  11, 'r', 'e', 'a', 't', 'e', 'r', 'T', 'i', 'l', 'd',
-    'e',   3, 226, 137, 179,   3, 's', 'c', 'r',   4, 240, 157, 146, 162,   1,
-    't',   3, 226, 137, 171,   5, 'A', 'R', 'D', 'c', 'y',   2, 208, 170,   4,
-    'a', 'c', 'e', 'k',   2, 203, 135,   2, 'a', 't',   1, '^',   4, 'c', 'i',
-    'r', 'c',   2, 196, 164,   2, 'f', 'r',   3, 226, 132, 140,  11, 'i', 'l',
-    'b', 'e', 'r', 't', 'S', 'p', 'a', 'c', 'e',   3, 226, 132, 139,   3, 'o',
-    'p', 'f',   3, 226, 132, 141,  13, 'o', 'r', 'i', 'z', 'o', 'n', 't', 'a',
-    'l', 'L', 'i', 'n', 'e',   3, 226, 148, 128,   3, 's', 'c', 'r',   3, 226,
-    132, 139,   5, 's', 't', 'r', 'o', 'k',   2, 196, 166,  11, 'u', 'm', 'p',
-    'D', 'o', 'w', 'n', 'H', 'u', 'm', 'p',   3, 226, 137, 142,   8, 'u', 'm',
-    'p', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 143,   3, 'E', 'c', 'y',   2,
-    208, 149,   4, 'J', 'l', 'i', 'g',   2, 196, 178,   3, 'O', 'c', 'y',   2,
-    208, 129, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 141, 132, 'c', 'i', 'r',
-    'c',   2, 195, 142,   2, 'c', 'y',   2, 208, 152,   3, 'd', 'o', 't',   2,
-    196, 176,   2, 'f', 'r',   3, 226, 132, 145, 133, 'g', 'r', 'a', 'v', 'e',
-      2, 195, 140,  65, 'm',  11,   3,   3, 226, 132, 145,   3, 'a', 'c', 'r',
-      2, 196, 170,   8, 'a', 'g', 'i', 'n', 'a', 'r', 'y', 'I',   3, 226, 133,
-    136,   5, 'p', 'l', 'i', 'e', 's',   3, 226, 135, 146,  66, 'n', 't',  13,
-      2,   3, 226, 136, 172,   5, 'e', 'g', 'r', 'a', 'l',   3, 226, 136, 171,
-      9, 'e', 'r', 's', 'e', 'c', 't', 'i', 'o', 'n',   3, 226, 139, 130,  13,
-    'n', 'v', 'i', 's', 'i', 'b', 'l', 'e', 'C', 'o', 'm', 'm', 'a',   3, 226,
-    129, 163,  13, 'n', 'v', 'i', 's', 'i', 'b', 'l', 'e', 'T', 'i', 'm', 'e',
-    's',   3, 226, 129, 162,   4, 'o', 'g', 'o', 'n',   2, 196, 174,   3, 'o',
-    'p', 'f',   4, 240, 157, 149, 128,   3, 'o', 't', 'a',   2, 206, 153,   3,
-    's', 'c', 'r',   3, 226, 132, 144,   5, 't', 'i', 'l', 'd', 'e',   2, 196,
-    168,   4, 'u', 'k', 'c', 'y',   2, 208, 134, 131, 'u', 'm', 'l',   2, 195,
-    143,   4, 'c', 'i', 'r', 'c',   2, 196, 180,   2, 'c', 'y',   2, 208, 153,
-      2, 'f', 'r',   4, 240, 157, 148, 141,   3, 'o', 'p', 'f',   4, 240, 157,
-    149, 129,   3, 's', 'c', 'r',   4, 240, 157, 146, 165,   5, 's', 'e', 'r',
-    'c', 'y',   2, 208, 136,   4, 'u', 'k', 'c', 'y',   2, 208, 132,   3, 'H',
-    'c', 'y',   2, 208, 165,   3, 'J', 'c', 'y',   2, 208, 140,   4, 'a', 'p',
-    'p', 'a',   2, 206, 154,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 182,   2,
-    'c', 'y',   2, 208, 154,   2, 'f', 'r',   4, 240, 157, 148, 142,   3, 'o',
-    'p', 'f',   4, 240, 157, 149, 130,   3, 's', 'c', 'r',   4, 240, 157, 146,
-    166,   3, 'J', 'c', 'y',   2, 208, 137, 129, 'T',   1, '<',   5, 'a', 'c',
-    'u', 't', 'e',   2, 196, 185,   5, 'a', 'm', 'b', 'd', 'a',   2, 206, 155,
-      3, 'a', 'n', 'g',   3, 226, 159, 170,   9, 'a', 'p', 'l', 'a', 'c', 'e',
-    't', 'r', 'f',   3, 226, 132, 146,   3, 'a', 'r', 'r',   3, 226, 134, 158,
-      5, 'c', 'a', 'r', 'o', 'n',   2, 196, 189,   5, 'c', 'e', 'd', 'i', 'l',
-      2, 196, 187,   2, 'c', 'y',   2, 208, 155,  15, 'e', 'f', 't', 'A', 'n',
-    'g', 'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 159, 168,  72,
-    'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',  38,   2,   3, 226, 134, 144,   3,
-    'B', 'a', 'r',   3, 226, 135, 164,  10, 'R', 'i', 'g', 'h', 't', 'A', 'r',
-    'r', 'o', 'w',   3, 226, 135, 134,  10, 'e', 'f', 't', 'C', 'e', 'i', 'l',
-    'i', 'n', 'g',   3, 226, 140, 136,  16, 'e', 'f', 't', 'D', 'o', 'u', 'b',
-    'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 159, 166,  16, 'e',
-    'f', 't', 'D', 'o', 'w', 'n', 'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',
-      3, 226, 165, 161,  77, 'e', 'f', 't', 'D', 'o', 'w', 'n', 'V', 'e', 'c',
-    't', 'o', 'r',  36,   1,   3, 226, 135, 131,   3, 'B', 'a', 'r',   3, 226,
-    165, 153,   8, 'e', 'f', 't', 'F', 'l', 'o', 'o', 'r',   3, 226, 140, 138,
-     13, 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3,
-    226, 134, 148,  14, 'e', 'f', 't', 'R', 'i', 'g', 'h', 't', 'V', 'e', 'c',
-    't', 'o', 'r',   3, 226, 165, 142,  70, 'e', 'f', 't', 'T', 'e', 'e',  33,
-      2,   3, 226, 138, 163,   5, 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 164,
-      6, 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 154,  75, 'e', 'f', 't',
-    'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  34,   2,   3, 226, 138, 178,   3,
-    'B', 'a', 'r',   3, 226, 167, 143,   5, 'E', 'q', 'u', 'a', 'l',   3, 226,
-    138, 180,  15, 'e', 'f', 't', 'U', 'p', 'D', 'o', 'w', 'n', 'V', 'e', 'c',
-    't', 'o', 'r',   3, 226, 165, 145,  14, 'e', 'f', 't', 'U', 'p', 'T', 'e',
-    'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 160,  75, 'e', 'f', 't',
-    'U', 'p', 'V', 'e', 'c', 't', 'o', 'r',  33,   1,   3, 226, 134, 191,   3,
-    'B', 'a', 'r',   3, 226, 165, 152,  73, 'e', 'f', 't', 'V', 'e', 'c', 't',
-    'o', 'r',  33,   1,   3, 226, 134, 188,   3, 'B', 'a', 'r',   3, 226, 165,
-    146,   8, 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 144,  13,
-    'e', 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226,
-    135, 148,  15, 'e', 's', 's', 'E', 'q', 'u', 'a', 'l', 'G', 'r', 'e', 'a',
-    't', 'e', 'r',   3, 226, 139, 154,  12, 'e', 's', 's', 'F', 'u', 'l', 'l',
-    'E', 'q', 'u', 'a', 'l',   3, 226, 137, 166,  10, 'e', 's', 's', 'G', 'r',
-    'e', 'a', 't', 'e', 'r',   3, 226, 137, 182,   7, 'e', 's', 's', 'L', 'e',
-    's', 's',   3, 226, 170, 161,  13, 'e', 's', 's', 'S', 'l', 'a', 'n', 't',
-    'E', 'q', 'u', 'a', 'l',   3, 226, 169, 189,   8, 'e', 's', 's', 'T', 'i',
-    'l', 'd', 'e',   3, 226, 137, 178,   2, 'f', 'r',   4, 240, 157, 148, 143,
-     65, 'l',  24,   1,   3, 226, 139, 152,   8, 'e', 'f', 't', 'a', 'r', 'r',
-    'o', 'w',   3, 226, 135, 154,   5, 'm', 'i', 'd', 'o', 't',   2, 196, 191,
-     12, 'o', 'n', 'g', 'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226,
-    159, 181,  17, 'o', 'n', 'g', 'L', 'e', 'f', 't', 'R', 'i', 'g', 'h', 't',
-    'A', 'r', 'r', 'o', 'w',   3, 226, 159, 183,  13, 'o', 'n', 'g', 'R', 'i',
-    'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 159, 182,  12, 'o', 'n',
-    'g', 'l', 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 184,  17,
-    'o', 'n', 'g', 'l', 'e', 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r',
-    'o', 'w',   3, 226, 159, 186,  13, 'o', 'n', 'g', 'r', 'i', 'g', 'h', 't',
-    'a', 'r', 'r', 'o', 'w',   3, 226, 159, 185,   3, 'o', 'p', 'f',   4, 240,
-    157, 149, 131,  13, 'o', 'w', 'e', 'r', 'L', 'e', 'f', 't', 'A', 'r', 'r',
-    'o', 'w',   3, 226, 134, 153,  14, 'o', 'w', 'e', 'r', 'R', 'i', 'g', 'h',
-    't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 152,   3, 's', 'c', 'r',   3,
-    226, 132, 146,   2, 's', 'h',   3, 226, 134, 176,   5, 's', 't', 'r', 'o',
-    'k',   2, 197, 129,   1, 't',   3, 226, 137, 170,   2, 'a', 'p',   3, 226,
-    164, 133,   2, 'c', 'y',   2, 208, 156,  10, 'e', 'd', 'i', 'u', 'm', 'S',
-    'p', 'a', 'c', 'e',   3, 226, 129, 159,   8, 'e', 'l', 'l', 'i', 'n', 't',
-    'r', 'f',   3, 226, 132, 179,   2, 'f', 'r',   4, 240, 157, 148, 144,   8,
-    'i', 'n', 'u', 's', 'P', 'l', 'u', 's',   3, 226, 136, 147,   3, 'o', 'p',
-    'f',   4, 240, 157, 149, 132,   3, 's', 'c', 'r',   3, 226, 132, 179,   1,
-    'u',   2, 206, 156,   3, 'J', 'c', 'y',   2, 208, 138,   5, 'a', 'c', 'u',
-    't', 'e',   2, 197, 131,   5, 'c', 'a', 'r', 'o', 'n',   2, 197, 135,   5,
-    'c', 'e', 'd', 'i', 'l',   2, 197, 133,   2, 'c', 'y',   2, 208, 157,  18,
-    'e', 'g', 'a', 't', 'i', 'v', 'e', 'M', 'e', 'd', 'i', 'u', 'm', 'S', 'p',
-    'a', 'c', 'e',   3, 226, 128, 139,  17, 'e', 'g', 'a', 't', 'i', 'v', 'e',
-    'T', 'h', 'i', 'c', 'k', 'S', 'p', 'a', 'c', 'e',   3, 226, 128, 139,  16,
-    'e', 'g', 'a', 't', 'i', 'v', 'e', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c',
-    'e',   3, 226, 128, 139,  20, 'e', 'g', 'a', 't', 'i', 'v', 'e', 'V', 'e',
-    'r', 'y', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',   3, 226, 128, 139,
-     19, 'e', 's', 't', 'e', 'd', 'G', 'r', 'e', 'a', 't', 'e', 'r', 'G', 'r',
-    'e', 'a', 't', 'e', 'r',   3, 226, 137, 171,  13, 'e', 's', 't', 'e', 'd',
-    'L', 'e', 's', 's', 'L', 'e', 's', 's',   3, 226, 137, 170,   6, 'e', 'w',
-    'L', 'i', 'n', 'e',   1,  10,   2, 'f', 'r',   4, 240, 157, 148, 145,   6,
-    'o', 'B', 'r', 'e', 'a', 'k',   3, 226, 129, 160,  15, 'o', 'n', 'B', 'r',
-    'e', 'a', 'k', 'i', 'n', 'g', 'S', 'p', 'a', 'c', 'e',   2, 194, 160,   3,
-    'o', 'p', 'f',   3, 226, 132, 149,  66, 'o', 't',   4,  23,   3, 226, 171,
-    172,   9, 'C', 'o', 'n', 'g', 'r', 'u', 'e', 'n', 't',   3, 226, 137, 162,
-      6, 'C', 'u', 'p', 'C', 'a', 'p',   3, 226, 137, 173,  17, 'D', 'o', 'u',
-    'b', 'l', 'e', 'V', 'e', 'r', 't', 'i', 'c', 'a', 'l', 'B', 'a', 'r',   3,
-    226, 136, 166,   7, 'E', 'l', 'e', 'm', 'e', 'n', 't',   3, 226, 136, 137,
-     69, 'E', 'q', 'u', 'a', 'l',  19,   1,   3, 226, 137, 160,   5, 'T', 'i',
-    'l', 'd', 'e',   5, 226, 137, 130, 204, 184,   6, 'E', 'x', 'i', 's', 't',
-    's',   3, 226, 136, 132,  71, 'G', 'r', 'e', 'a', 't', 'e', 'r',  18,   6,
-      3, 226, 137, 175,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 177,   9,
-    'F', 'u', 'l', 'l', 'E', 'q', 'u', 'a', 'l',   5, 226, 137, 167, 204, 184,
-      7, 'G', 'r', 'e', 'a', 't', 'e', 'r',   5, 226, 137, 171, 204, 184,   4,
-    'L', 'e', 's', 's',   3, 226, 137, 185,  10, 'S', 'l', 'a', 'n', 't', 'E',
-    'q', 'u', 'a', 'l',   5, 226, 169, 190, 204, 184,   5, 'T', 'i', 'l', 'd',
-    'e',   3, 226, 137, 181,  12, 'H', 'u', 'm', 'p', 'D', 'o', 'w', 'n', 'H',
-    'u', 'm', 'p',   5, 226, 137, 142, 204, 184,   9, 'H', 'u', 'm', 'p', 'E',
-    'q', 'u', 'a', 'l',   5, 226, 137, 143, 204, 184,  76, 'L', 'e', 'f', 't',
-    'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  21,   2,   3, 226, 139, 170,   3,
-    'B', 'a', 'r',   5, 226, 167, 143, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',
-      3, 226, 139, 172,  68, 'L', 'e', 's', 's',  22,   5,   3, 226, 137, 174,
-      5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 176,   7, 'G', 'r', 'e', 'a',
-    't', 'e', 'r',   3, 226, 137, 184,   4, 'L', 'e', 's', 's',   5, 226, 137,
-    170, 204, 184,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   5,
-    226, 169, 189, 204, 184,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 180,
-     20, 'N', 'e', 's', 't', 'e', 'd', 'G', 'r', 'e', 'a', 't', 'e', 'r', 'G',
-    'r', 'e', 'a', 't', 'e', 'r',   5, 226, 170, 162, 204, 184,  14, 'N', 'e',
-    's', 't', 'e', 'd', 'L', 'e', 's', 's', 'L', 'e', 's', 's',   5, 226, 170,
-    161, 204, 184,  72, 'P', 'r', 'e', 'c', 'e', 'd', 'e', 's',  24,   2,   3,
-    226, 138, 128,   5, 'E', 'q', 'u', 'a', 'l',   5, 226, 170, 175, 204, 184,
-     10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 160,
-     14, 'R', 'e', 'v', 'e', 'r', 's', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't',
-      3, 226, 136, 140,  77, 'R', 'i', 'g', 'h', 't', 'T', 'r', 'i', 'a', 'n',
-    'g', 'l', 'e',  24,   2,   3, 226, 139, 171,   3, 'B', 'a', 'r',   5, 226,
-    167, 144, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 173,  76,
-    'S', 'q', 'u', 'a', 'r', 'e', 'S', 'u', 'b', 's', 'e', 't',  25,   1,   5,
-    226, 138, 143, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 162,
-     78, 'S', 'q', 'u', 'a', 'r', 'e', 'S', 'u', 'p', 'e', 'r', 's', 'e', 't',
-     25,   1,   5, 226, 138, 144, 204, 184,   5, 'E', 'q', 'u', 'a', 'l',   3,
-    226, 139, 163,  70, 'S', 'u', 'b', 's', 'e', 't',  25,   1,   6, 226, 138,
-    130, 226, 131, 146,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 136,  72,
-    'S', 'u', 'c', 'c', 'e', 'e', 'd', 's',  25,   3,   3, 226, 138, 129,   5,
-    'E', 'q', 'u', 'a', 'l',   5, 226, 170, 176, 204, 184,  10, 'S', 'l', 'a',
-    'n', 't', 'E', 'q', 'u', 'a', 'l',   3, 226, 139, 161,   5, 'T', 'i', 'l',
-    'd', 'e',   5, 226, 137, 191, 204, 184,  72, 'S', 'u', 'p', 'e', 'r', 's',
-    'e', 't',  27,   1,   6, 226, 138, 131, 226, 131, 146,   5, 'E', 'q', 'u',
-    'a', 'l',   3, 226, 138, 137,  69, 'T', 'i', 'l', 'd', 'e',  27,   3,   3,
-    226, 137, 129,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 132,   9, 'F',
-    'u', 'l', 'l', 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 135,   5, 'T', 'i',
-    'l', 'd', 'e',   3, 226, 137, 137,  11, 'V', 'e', 'r', 't', 'i', 'c', 'a',
-    'l', 'B', 'a', 'r',   3, 226, 136, 164,   3, 's', 'c', 'r',   4, 240, 157,
-    146, 169, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 145,   1, 'u',   2, 206,
-    157,   4, 'E', 'l', 'i', 'g',   2, 197, 146, 133, 'a', 'c', 'u', 't', 'e',
-      2, 195, 147, 132, 'c', 'i', 'r', 'c',   2, 195, 148,   2, 'c', 'y',   2,
-    208, 158,   5, 'd', 'b', 'l', 'a', 'c',   2, 197, 144,   2, 'f', 'r',   4,
-    240, 157, 148, 146, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 146,   4, 'm',
-    'a', 'c', 'r',   2, 197, 140,   4, 'm', 'e', 'g', 'a',   2, 206, 169,   6,
-    'm', 'i', 'c', 'r', 'o', 'n',   2, 206, 159,   3, 'o', 'p', 'f',   4, 240,
-    157, 149, 134,  19, 'p', 'e', 'n', 'C', 'u', 'r', 'l', 'y', 'D', 'o', 'u',
-    'b', 'l', 'e', 'Q', 'u', 'o', 't', 'e',   3, 226, 128, 156,  13, 'p', 'e',
-    'n', 'C', 'u', 'r', 'l', 'y', 'Q', 'u', 'o', 't', 'e',   3, 226, 128, 152,
-      1, 'r',   3, 226, 169, 148,   3, 's', 'c', 'r',   4, 240, 157, 146, 170,
-    133, 's', 'l', 'a', 's', 'h',   2, 195, 152, 133, 't', 'i', 'l', 'd', 'e',
-      2, 195, 149,   5, 't', 'i', 'm', 'e', 's',   3, 226, 168, 183, 131, 'u',
-    'm', 'l',   2, 195, 150,   6, 'v', 'e', 'r', 'B', 'a', 'r',   3, 226, 128,
-    190,   8, 'v', 'e', 'r', 'B', 'r', 'a', 'c', 'e',   3, 226, 143, 158,  10,
-    'v', 'e', 'r', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 142, 180,  14,
-    'v', 'e', 'r', 'P', 'a', 'r', 'e', 'n', 't', 'h', 'e', 's', 'i', 's',   3,
-    226, 143, 156,   7, 'a', 'r', 't', 'i', 'a', 'l', 'D',   3, 226, 136, 130,
-      2, 'c', 'y',   2, 208, 159,   2, 'f', 'r',   4, 240, 157, 148, 147,   2,
-    'h', 'i',   2, 206, 166,   1, 'i',   2, 206, 160,   8, 'l', 'u', 's', 'M',
-    'i', 'n', 'u', 's',   2, 194, 177,  12, 'o', 'i', 'n', 'c', 'a', 'r', 'e',
-    'p', 'l', 'a', 'n', 'e',   3, 226, 132, 140,   3, 'o', 'p', 'f',   3, 226,
-    132, 153,  65, 'r',   3,   4,   3, 226, 170, 187,  70, 'e', 'c', 'e', 'd',
-    'e', 's',   4,   3,   3, 226, 137, 186,   5, 'E', 'q', 'u', 'a', 'l',   3,
-    226, 170, 175,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a', 'l',   3,
-    226, 137, 188,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 190,   3, 'i',
-    'm', 'e',   3, 226, 128, 179,   5, 'o', 'd', 'u', 'c', 't',   3, 226, 136,
-    143,  72, 'o', 'p', 'o', 'r', 't', 'i', 'o', 'n',   4,   1,   3, 226, 136,
-    183,   2, 'a', 'l',   3, 226, 136, 157,   3, 's', 'c', 'r',   4, 240, 157,
-    146, 171,   2, 's', 'i',   2, 206, 168, 131, 'U', 'O', 'T',   1, '"',   2,
-    'f', 'r',   4, 240, 157, 148, 148,   3, 'o', 'p', 'f',   3, 226, 132, 154,
-      3, 's', 'c', 'r',   4, 240, 157, 146, 172,   4, 'B', 'a', 'r', 'r',   3,
-    226, 164, 144, 130, 'E', 'G',   2, 194, 174,   5, 'a', 'c', 'u', 't', 'e',
-      2, 197, 148,   3, 'a', 'n', 'g',   3, 226, 159, 171,  67, 'a', 'r', 'r',
-     27,   1,   3, 226, 134, 160,   2, 't', 'l',   3, 226, 164, 150,   5, 'c',
-    'a', 'r', 'o', 'n',   2, 197, 152,   5, 'c', 'e', 'd', 'i', 'l',   2, 197,
-    150,   2, 'c', 'y',   2, 208, 160,  65, 'e',  24,   3,   3, 226, 132, 156,
-     12, 'v', 'e', 'r', 's', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't',   3, 226,
-    136, 139,  16, 'v', 'e', 'r', 's', 'e', 'E', 'q', 'u', 'i', 'l', 'i', 'b',
-    'r', 'i', 'u', 'm',   3, 226, 135, 139,  18, 'v', 'e', 'r', 's', 'e', 'U',
-    'p', 'E', 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',   3, 226, 165,
-    175,   2, 'f', 'r',   3, 226, 132, 156,   2, 'h', 'o',   2, 206, 161,  16,
-    'i', 'g', 'h', 't', 'A', 'n', 'g', 'l', 'e', 'B', 'r', 'a', 'c', 'k', 'e',
-    't',   3, 226, 159, 169,  73, 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',
-     23,   2,   3, 226, 134, 146,   3, 'B', 'a', 'r',   3, 226, 135, 165,   9,
-    'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 132,  11, 'i',
-    'g', 'h', 't', 'C', 'e', 'i', 'l', 'i', 'n', 'g',   3, 226, 140, 137,  17,
-    'i', 'g', 'h', 't', 'D', 'o', 'u', 'b', 'l', 'e', 'B', 'r', 'a', 'c', 'k',
-    'e', 't',   3, 226, 159, 167,  17, 'i', 'g', 'h', 't', 'D', 'o', 'w', 'n',
-    'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 157,  78, 'i',
-    'g', 'h', 't', 'D', 'o', 'w', 'n', 'V', 'e', 'c', 't', 'o', 'r',  21,   1,
-      3, 226, 135, 130,   3, 'B', 'a', 'r',   3, 226, 165, 149,   9, 'i', 'g',
-    'h', 't', 'F', 'l', 'o', 'o', 'r',   3, 226, 140, 139,  71, 'i', 'g', 'h',
-    't', 'T', 'e', 'e',  20,   2,   3, 226, 138, 162,   5, 'A', 'r', 'r', 'o',
-    'w',   3, 226, 134, 166,   6, 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165,
-    155,  76, 'i', 'g', 'h', 't', 'T', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  21,
-      2,   3, 226, 138, 179,   3, 'B', 'a', 'r',   3, 226, 167, 144,   5, 'E',
-    'q', 'u', 'a', 'l',   3, 226, 138, 181,  16, 'i', 'g', 'h', 't', 'U', 'p',
-    'D', 'o', 'w', 'n', 'V', 'e', 'c', 't', 'o', 'r',   3, 226, 165, 143,  15,
-    'i', 'g', 'h', 't', 'U', 'p', 'T', 'e', 'e', 'V', 'e', 'c', 't', 'o', 'r',
-      3, 226, 165, 156,  76, 'i', 'g', 'h', 't', 'U', 'p', 'V', 'e', 'c', 't',
-    'o', 'r',  20,   1,   3, 226, 134, 190,   3, 'B', 'a', 'r',   3, 226, 165,
-    148,  74, 'i', 'g', 'h', 't', 'V', 'e', 'c', 't', 'o', 'r',  20,   1,   3,
-    226, 135, 128,   3, 'B', 'a', 'r',   3, 226, 165, 147,   9, 'i', 'g', 'h',
-    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 146,   3, 'o', 'p', 'f',   3,
-    226, 132, 157,  11, 'o', 'u', 'n', 'd', 'I', 'm', 'p', 'l', 'i', 'e', 's',
-      3, 226, 165, 176,  10, 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',
-      3, 226, 135, 155,   3, 's', 'c', 'r',   3, 226, 132, 155,   2, 's', 'h',
-      3, 226, 134, 177,  10, 'u', 'l', 'e', 'D', 'e', 'l', 'a', 'y', 'e', 'd',
-      3, 226, 167, 180,   5, 'H', 'C', 'H', 'c', 'y',   2, 208, 169,   3, 'H',
-    'c', 'y',   2, 208, 168,   5, 'O', 'F', 'T', 'c', 'y',   2, 208, 172,   5,
-    'a', 'c', 'u', 't', 'e',   2, 197, 154,  65, 'c',  18,   4,   3, 226, 170,
-    188,   4, 'a', 'r', 'o', 'n',   2, 197, 160,   4, 'e', 'd', 'i', 'l',   2,
-    197, 158,   3, 'i', 'r', 'c',   2, 197, 156,   1, 'y',   2, 208, 161,   2,
-    'f', 'r',   4, 240, 157, 148, 150,  13, 'h', 'o', 'r', 't', 'D', 'o', 'w',
-    'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 147,  13, 'h', 'o', 'r', 't',
-    'L', 'e', 'f', 't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 144,  14, 'h',
-    'o', 'r', 't', 'R', 'i', 'g', 'h', 't', 'A', 'r', 'r', 'o', 'w',   3, 226,
-    134, 146,  11, 'h', 'o', 'r', 't', 'U', 'p', 'A', 'r', 'r', 'o', 'w',   3,
-    226, 134, 145,   4, 'i', 'g', 'm', 'a',   2, 206, 163,  10, 'm', 'a', 'l',
-    'l', 'C', 'i', 'r', 'c', 'l', 'e',   3, 226, 136, 152,   3, 'o', 'p', 'f',
-      4, 240, 157, 149, 138,   3, 'q', 'r', 't',   3, 226, 136, 154,  69, 'q',
-    'u', 'a', 'r', 'e',  12,   4,   3, 226, 150, 161,  12, 'I', 'n', 't', 'e',
-    'r', 's', 'e', 'c', 't', 'i', 'o', 'n',   3, 226, 138, 147,  70, 'S', 'u',
-    'b', 's', 'e', 't',   3,   1,   3, 226, 138, 143,   5, 'E', 'q', 'u', 'a',
-    'l',   3, 226, 138, 145,  72, 'S', 'u', 'p', 'e', 'r', 's', 'e', 't',   3,
-      1,   3, 226, 138, 144,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 146,
-      5, 'U', 'n', 'i', 'o', 'n',   3, 226, 138, 148,   3, 's', 'c', 'r',   4,
-    240, 157, 146, 174,   3, 't', 'a', 'r',   3, 226, 139, 134,  66, 'u', 'b',
-     15,   1,   3, 226, 139, 144,  67, 's', 'e', 't',   1,   1,   3, 226, 139,
-    144,   5, 'E', 'q', 'u', 'a', 'l',   3, 226, 138, 134,  71, 'u', 'c', 'c',
-    'e', 'e', 'd', 's',  16,   3,   3, 226, 137, 187,   5, 'E', 'q', 'u', 'a',
-    'l',   3, 226, 170, 176,  10, 'S', 'l', 'a', 'n', 't', 'E', 'q', 'u', 'a',
-    'l',   3, 226, 137, 189,   5, 'T', 'i', 'l', 'd', 'e',   3, 226, 137, 191,
-      7, 'u', 'c', 'h', 'T', 'h', 'a', 't',   3, 226, 136, 139,   2, 'u', 'm',
-      3, 226, 136, 145,  66, 'u', 'p',  16,   2,   3, 226, 139, 145,  69, 'e',
-    'r', 's', 'e', 't',   2,   1,   3, 226, 138, 131,   5, 'E', 'q', 'u', 'a',
-    'l',   3, 226, 138, 135,   3, 's', 'e', 't',   3, 226, 139, 145, 132, 'H',
-    'O', 'R', 'N',   2, 195, 158,   4, 'R', 'A', 'D', 'E',   3, 226, 132, 162,
-      4, 'S', 'H', 'c', 'y',   2, 208, 139,   3, 'S', 'c', 'y',   2, 208, 166,
-      2, 'a', 'b',   1,   9,   2, 'a', 'u',   2, 206, 164,   5, 'c', 'a', 'r',
-    'o', 'n',   2, 197, 164,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 162,   2,
-    'c', 'y',   2, 208, 162,   2, 'f', 'r',   4, 240, 157, 148, 151,   8, 'h',
-    'e', 'r', 'e', 'f', 'o', 'r', 'e',   3, 226, 136, 180,   4, 'h', 'e', 't',
-    'a',   2, 206, 152,   9, 'h', 'i', 'c', 'k', 'S', 'p', 'a', 'c', 'e',   6,
-    226, 129, 159, 226, 128, 138,   8, 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',
-      3, 226, 128, 137,  68, 'i', 'l', 'd', 'e',   5,   3,   3, 226, 136, 188,
-      5, 'E', 'q', 'u', 'a', 'l',   3, 226, 137, 131,   9, 'F', 'u', 'l', 'l',
-    'E', 'q', 'u', 'a', 'l',   3, 226, 137, 133,   5, 'T', 'i', 'l', 'd', 'e',
-      3, 226, 137, 136,   3, 'o', 'p', 'f',   4, 240, 157, 149, 139,   8, 'r',
-    'i', 'p', 'l', 'e', 'D', 'o', 't',   3, 226, 131, 155,   3, 's', 'c', 'r',
-      4, 240, 157, 146, 175,   5, 's', 't', 'r', 'o', 'k',   2, 197, 166, 133,
-    'a', 'c', 'u', 't', 'e',   2, 195, 154,  67, 'a', 'r', 'r',  29,   1,   3,
-    226, 134, 159,   4, 'o', 'c', 'i', 'r',   3, 226, 165, 137,   4, 'b', 'r',
-    'c', 'y',   2, 208, 142,   5, 'b', 'r', 'e', 'v', 'e',   2, 197, 172, 132,
-    'c', 'i', 'r', 'c',   2, 195, 155,   2, 'c', 'y',   2, 208, 163,   5, 'd',
-    'b', 'l', 'a', 'c',   2, 197, 176,   2, 'f', 'r',   4, 240, 157, 148, 152,
-    133, 'g', 'r', 'a', 'v', 'e',   2, 195, 153,   4, 'm', 'a', 'c', 'r',   2,
-    197, 170,   7, 'n', 'd', 'e', 'r', 'B', 'a', 'r',   1, '_',   9, 'n', 'd',
-    'e', 'r', 'B', 'r', 'a', 'c', 'e',   3, 226, 143, 159,  11, 'n', 'd', 'e',
-    'r', 'B', 'r', 'a', 'c', 'k', 'e', 't',   3, 226, 142, 181,  15, 'n', 'd',
-    'e', 'r', 'P', 'a', 'r', 'e', 'n', 't', 'h', 'e', 's', 'i', 's',   3, 226,
-    143, 157,  68, 'n', 'i', 'o', 'n',  17,   1,   3, 226, 139, 131,   4, 'P',
-    'l', 'u', 's',   3, 226, 138, 142,   4, 'o', 'g', 'o', 'n',   2, 197, 178,
-      3, 'o', 'p', 'f',   4, 240, 157, 149, 140,  70, 'p', 'A', 'r', 'r', 'o',
-    'w',  15,   2,   3, 226, 134, 145,   3, 'B', 'a', 'r',   3, 226, 164, 146,
-      9, 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 135, 133,  10,
-    'p', 'D', 'o', 'w', 'n', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 149,  12,
-    'p', 'E', 'q', 'u', 'i', 'l', 'i', 'b', 'r', 'i', 'u', 'm',   3, 226, 165,
-    174,  68, 'p', 'T', 'e', 'e',  14,   1,   3, 226, 138, 165,   5, 'A', 'r',
-    'r', 'o', 'w',   3, 226, 134, 165,   6, 'p', 'a', 'r', 'r', 'o', 'w',   3,
-    226, 135, 145,  10, 'p', 'd', 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3,
-    226, 135, 149,  13, 'p', 'p', 'e', 'r', 'L', 'e', 'f', 't', 'A', 'r', 'r',
-    'o', 'w',   3, 226, 134, 150,  14, 'p', 'p', 'e', 'r', 'R', 'i', 'g', 'h',
-    't', 'A', 'r', 'r', 'o', 'w',   3, 226, 134, 151,  67, 'p', 's', 'i',  10,
-      1,   2, 207, 146,   3, 'l', 'o', 'n',   2, 206, 165,   4, 'r', 'i', 'n',
-    'g',   2, 197, 174,   3, 's', 'c', 'r',   4, 240, 157, 146, 176,   5, 't',
-    'i', 'l', 'd', 'e',   2, 197, 168, 131, 'u', 'm', 'l',   2, 195, 156,   4,
-    'D', 'a', 's', 'h',   3, 226, 138, 171,   3, 'b', 'a', 'r',   3, 226, 171,
-    171,   2, 'c', 'y',   2, 208, 146,  68, 'd', 'a', 's', 'h',   9,   1,   3,
-    226, 138, 169,   1, 'l',   3, 226, 171, 166,   2, 'e', 'e',   3, 226, 139,
-    129,   5, 'e', 'r', 'b', 'a', 'r',   3, 226, 128, 150,  67, 'e', 'r', 't',
-      7,   4,   3, 226, 128, 150,   7, 'i', 'c', 'a', 'l', 'B', 'a', 'r',   3,
-    226, 136, 163,   8, 'i', 'c', 'a', 'l', 'L', 'i', 'n', 'e',   1, '|',  13,
-    'i', 'c', 'a', 'l', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',   3, 226,
-    157, 152,   9, 'i', 'c', 'a', 'l', 'T', 'i', 'l', 'd', 'e',   3, 226, 137,
-    128,  12, 'e', 'r', 'y', 'T', 'h', 'i', 'n', 'S', 'p', 'a', 'c', 'e',   3,
-    226, 128, 138,   2, 'f', 'r',   4, 240, 157, 148, 153,   3, 'o', 'p', 'f',
-      4, 240, 157, 149, 141,   3, 's', 'c', 'r',   4, 240, 157, 146, 177,   5,
-    'v', 'd', 'a', 's', 'h',   3, 226, 138, 170,   4, 'c', 'i', 'r', 'c',   2,
-    197, 180,   4, 'e', 'd', 'g', 'e',   3, 226, 139, 128,   2, 'f', 'r',   4,
-    240, 157, 148, 154,   3, 'o', 'p', 'f',   4, 240, 157, 149, 142,   3, 's',
-    'c', 'r',   4, 240, 157, 146, 178,   2, 'f', 'r',   4, 240, 157, 148, 155,
-      1, 'i',   2, 206, 158,   3, 'o', 'p', 'f',   4, 240, 157, 149, 143,   3,
-    's', 'c', 'r',   4, 240, 157, 146, 179,   3, 'A', 'c', 'y',   2, 208, 175,
-      3, 'I', 'c', 'y',   2, 208, 135,   3, 'U', 'c', 'y',   2, 208, 174, 133,
-    'a', 'c', 'u', 't', 'e',   2, 195, 157,   4, 'c', 'i', 'r', 'c',   2, 197,
-    182,   2, 'c', 'y',   2, 208, 171,   2, 'f', 'r',   4, 240, 157, 148, 156,
-      3, 'o', 'p', 'f',   4, 240, 157, 149, 144,   3, 's', 'c', 'r',   4, 240,
-    157, 146, 180,   3, 'u', 'm', 'l',   2, 197, 184,   3, 'H', 'c', 'y',   2,
-    208, 150,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 185,   5, 'c', 'a', 'r',
-    'o', 'n',   2, 197, 189,   2, 'c', 'y',   2, 208, 151,   3, 'd', 'o', 't',
-      2, 197, 187,  13, 'e', 'r', 'o', 'W', 'i', 'd', 't', 'h', 'S', 'p', 'a',
-    'c', 'e',   3, 226, 128, 139,   3, 'e', 't', 'a',   2, 206, 150,   2, 'f',
-    'r',   3, 226, 132, 168,   3, 'o', 'p', 'f',   3, 226, 132, 164,   3, 's',
-    'c', 'r',   4, 240, 157, 146, 181, 133, 'a', 'c', 'u', 't', 'e',   2, 195,
-    161,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 131,  65, 'c',  23,   5,   3,
-    226, 136, 190,   1, 'E',   5, 226, 136, 190, 204, 179,   1, 'd',   3, 226,
-    136, 191, 131, 'i', 'r', 'c',   2, 195, 162, 131, 'u', 't', 'e',   2, 194,
-    180,   1, 'y',   2, 208, 176, 132, 'e', 'l', 'i', 'g',   2, 195, 166,  65,
-    'f',  26,   1,   3, 226, 129, 161,   1, 'r',   4, 240, 157, 148, 158, 133,
-    'g', 'r', 'a', 'v', 'e',   2, 195, 160,   6, 'l', 'e', 'f', 's', 'y', 'm',
-      3, 226, 132, 181,   4, 'l', 'e', 'p', 'h',   3, 226, 132, 181,   4, 'l',
-    'p', 'h', 'a',   2, 206, 177,   4, 'm', 'a', 'c', 'r',   2, 196, 129,   4,
-    'm', 'a', 'l', 'g',   3, 226, 168, 191, 130, 'm', 'p',   1, '&',  66, 'n',
-    'd',  19,   4,   3, 226, 136, 167,   3, 'a', 'n', 'd',   3, 226, 169, 149,
-      1, 'd',   3, 226, 169, 156,   5, 's', 'l', 'o', 'p', 'e',   3, 226, 169,
-    152,   1, 'v',   3, 226, 169, 154,  66, 'n', 'g',  22,   7,   3, 226, 136,
-    160,   1, 'e',   3, 226, 166, 164,   2, 'l', 'e',   3, 226, 136, 160,  67,
-    'm', 's', 'd',   5,   8,   3, 226, 136, 161,   2, 'a', 'a',   3, 226, 166,
-    168,   2, 'a', 'b',   3, 226, 166, 169,   2, 'a', 'c',   3, 226, 166, 170,
-      2, 'a', 'd',   3, 226, 166, 171,   2, 'a', 'e',   3, 226, 166, 172,   2,
-    'a', 'f',   3, 226, 166, 173,   2, 'a', 'g',   3, 226, 166, 174,   2, 'a',
-    'h',   3, 226, 166, 175,  66, 'r', 't',  12,   1,   3, 226, 136, 159,  66,
-    'v', 'b',   1,   1,   3, 226, 138, 190,   1, 'd',   3, 226, 166, 157,   3,
-    's', 'p', 'h',   3, 226, 136, 162,   2, 's', 't',   2, 195, 133,   4, 'z',
-    'a', 'r', 'r',   3, 226, 141, 188,   4, 'o', 'g', 'o', 'n',   2, 196, 133,
-      3, 'o', 'p', 'f',   4, 240, 157, 149, 146,  65, 'p',  36,   6,   3, 226,
-    137, 136,   1, 'E',   3, 226, 169, 176,   4, 'a', 'c', 'i', 'r',   3, 226,
-    169, 175,   1, 'e',   3, 226, 137, 138,   2, 'i', 'd',   3, 226, 137, 139,
-      2, 'o', 's',   1,  39,  68, 'p', 'r', 'o', 'x',   1,   1,   3, 226, 137,
-    136,   2, 'e', 'q',   3, 226, 137, 138, 132, 'r', 'i', 'n', 'g',   2, 195,
-    165,   3, 's', 'c', 'r',   4, 240, 157, 146, 182,   2, 's', 't',   1, '*',
-     68, 's', 'y', 'm', 'p',  39,   1,   3, 226, 137, 136,   2, 'e', 'q',   3,
-    226, 137, 141, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 163, 131, 'u', 'm',
-    'l',   2, 195, 164,   7, 'w', 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136,
-    179,   4, 'w', 'i', 'n', 't',   3, 226, 168, 145,   3, 'N', 'o', 't',   3,
-    226, 171, 173,   7, 'a', 'c', 'k', 'c', 'o', 'n', 'g',   3, 226, 137, 140,
-     10, 'a', 'c', 'k', 'e', 'p', 's', 'i', 'l', 'o', 'n',   2, 207, 182,   8,
-    'a', 'c', 'k', 'p', 'r', 'i', 'm', 'e',   3, 226, 128, 181,  70, 'a', 'c',
-    'k', 's', 'i', 'm',  75,   1,   3, 226, 136, 189,   2, 'e', 'q',   3, 226,
-    139, 141,   5, 'a', 'r', 'v', 'e', 'e',   3, 226, 138, 189,  69, 'a', 'r',
-    'w', 'e', 'd',  74,   1,   3, 226, 140, 133,   2, 'g', 'e',   3, 226, 140,
-    133,  67, 'b', 'r', 'k',  74,   1,   3, 226, 142, 181,   4, 't', 'b', 'r',
-    'k',   3, 226, 142, 182,   4, 'c', 'o', 'n', 'g',   3, 226, 137, 140,   2,
-    'c', 'y',   2, 208, 177,   4, 'd', 'q', 'u', 'o',   3, 226, 128, 158,  69,
-    'e', 'c', 'a', 'u', 's',  71,   1,   3, 226, 136, 181,   1, 'e',   3, 226,
-    136, 181,   6, 'e', 'm', 'p', 't', 'y', 'v',   3, 226, 166, 176,   4, 'e',
-    'p', 's', 'i',   2, 207, 182,   5, 'e', 'r', 'n', 'o', 'u',   3, 226, 132,
-    172,   3, 'e', 't', 'a',   2, 206, 178,   3, 'e', 't', 'h',   3, 226, 132,
-    182,   6, 'e', 't', 'w', 'e', 'e', 'n',   3, 226, 137, 172,   2, 'f', 'r',
-      4, 240, 157, 148, 159,   5, 'i', 'g', 'c', 'a', 'p',   3, 226, 139, 130,
-      6, 'i', 'g', 'c', 'i', 'r', 'c',   3, 226, 151, 175,   5, 'i', 'g', 'c',
-    'u', 'p',   3, 226, 139, 131,   6, 'i', 'g', 'o', 'd', 'o', 't',   3, 226,
-    168, 128,   7, 'i', 'g', 'o', 'p', 'l', 'u', 's',   3, 226, 168, 129,   8,
-    'i', 'g', 'o', 't', 'i', 'm', 'e', 's',   3, 226, 168, 130,   7, 'i', 'g',
-    's', 'q', 'c', 'u', 'p',   3, 226, 168, 134,   6, 'i', 'g', 's', 't', 'a',
-    'r',   3, 226, 152, 133,  14, 'i', 'g', 't', 'r', 'i', 'a', 'n', 'g', 'l',
-    'e', 'd', 'o', 'w', 'n',   3, 226, 150, 189,  12, 'i', 'g', 't', 'r', 'i',
-    'a', 'n', 'g', 'l', 'e', 'u', 'p',   3, 226, 150, 179,   7, 'i', 'g', 'u',
-    'p', 'l', 'u', 's',   3, 226, 168, 132,   5, 'i', 'g', 'v', 'e', 'e',   3,
-    226, 139, 129,   7, 'i', 'g', 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 128,
-      5, 'k', 'a', 'r', 'o', 'w',   3, 226, 164, 141,  11, 'l', 'a', 'c', 'k',
-    'l', 'o', 'z', 'e', 'n', 'g', 'e',   3, 226, 167, 171,  10, 'l', 'a', 'c',
-    'k', 's', 'q', 'u', 'a', 'r', 'e',   3, 226, 150, 170,  76, 'l', 'a', 'c',
-    'k', 't', 'r', 'i', 'a', 'n', 'g', 'l', 'e',  48,   3,   3, 226, 150, 180,
-      4, 'd', 'o', 'w', 'n',   3, 226, 150, 190,   4, 'l', 'e', 'f', 't',   3,
-    226, 151, 130,   5, 'r', 'i', 'g', 'h', 't',   3, 226, 150, 184,   4, 'l',
-    'a', 'n', 'k',   3, 226, 144, 163,   4, 'l', 'k', '1', '2',   3, 226, 150,
-    146,   4, 'l', 'k', '1', '4',   3, 226, 150, 145,   4, 'l', 'k', '3', '4',
-      3, 226, 150, 147,   4, 'l', 'o', 'c', 'k',   3, 226, 150, 136,  66, 'n',
-    'e',  45,   1,   4, '=', 226, 131, 165,   4, 'q', 'u', 'i', 'v',   6, 226,
-    137, 161, 226, 131, 165,   3, 'n', 'o', 't',   3, 226, 140, 144,   3, 'o',
-    'p', 'f',   4, 240, 157, 149, 147,  66, 'o', 't',  43,   1,   3, 226, 138,
-    165,   3, 't', 'o', 'm',   3, 226, 138, 165,   5, 'o', 'w', 't', 'i', 'e',
-      3, 226, 139, 136,   4, 'o', 'x', 'D', 'L',   3, 226, 149, 151,   4, 'o',
-    'x', 'D', 'R',   3, 226, 149, 148,   4, 'o', 'x', 'D', 'l',   3, 226, 149,
-    150,   4, 'o', 'x', 'D', 'r',   3, 226, 149, 147,  67, 'o', 'x', 'H',  38,
-      4,   3, 226, 149, 144,   1, 'D',   3, 226, 149, 166,   1, 'U',   3, 226,
-    149, 169,   1, 'd',   3, 226, 149, 164,   1, 'u',   3, 226, 149, 167,   4,
-    'o', 'x', 'U', 'L',   3, 226, 149, 157,   4, 'o', 'x', 'U', 'R',   3, 226,
-    149, 154,   4, 'o', 'x', 'U', 'l',   3, 226, 149, 156,   4, 'o', 'x', 'U',
-    'r',   3, 226, 149, 153,  67, 'o', 'x', 'V',  37,   6,   3, 226, 149, 145,
-      1, 'H',   3, 226, 149, 172,   1, 'L',   3, 226, 149, 163,   1, 'R',   3,
-    226, 149, 160,   1, 'h',   3, 226, 149, 171,   1, 'l',   3, 226, 149, 162,
-      1, 'r',   3, 226, 149, 159,   5, 'o', 'x', 'b', 'o', 'x',   3, 226, 167,
-    137,   4, 'o', 'x', 'd', 'L',   3, 226, 149, 149,   4, 'o', 'x', 'd', 'R',
-      3, 226, 149, 146,   4, 'o', 'x', 'd', 'l',   3, 226, 148, 144,   4, 'o',
-    'x', 'd', 'r',   3, 226, 148, 140,  67, 'o', 'x', 'h',  37,   4,   3, 226,
-    148, 128,   1, 'D',   3, 226, 149, 165,   1, 'U',   3, 226, 149, 168,   1,
-    'd',   3, 226, 148, 172,   1, 'u',   3, 226, 148, 180,   7, 'o', 'x', 'm',
-    'i', 'n', 'u', 's',   3, 226, 138, 159,   6, 'o', 'x', 'p', 'l', 'u', 's',
-      3, 226, 138, 158,   7, 'o', 'x', 't', 'i', 'm', 'e', 's',   3, 226, 138,
-    160,   4, 'o', 'x', 'u', 'L',   3, 226, 149, 155,   4, 'o', 'x', 'u', 'R',
-      3, 226, 149, 152,   4, 'o', 'x', 'u', 'l',   3, 226, 148, 152,   4, 'o',
-    'x', 'u', 'r',   3, 226, 148, 148,  67, 'o', 'x', 'v',  33,   6,   3, 226,
-    148, 130,   1, 'H',   3, 226, 149, 170,   1, 'L',   3, 226, 149, 161,   1,
-    'R',   3, 226, 149, 158,   1, 'h',   3, 226, 148, 188,   1, 'l',   3, 226,
-    148, 164,   1, 'r',   3, 226, 148, 156,   5, 'p', 'r', 'i', 'm', 'e',   3,
-    226, 128, 181,   4, 'r', 'e', 'v', 'e',   2, 203, 152, 133, 'r', 'v', 'b',
-    'a', 'r',   2, 194, 166,   3, 's', 'c', 'r',   4, 240, 157, 146, 183,   4,
-    's', 'e', 'm', 'i',   3, 226, 129, 143,  67, 's', 'i', 'm',  33,   1,   3,
-    226, 136, 189,   1, 'e',   3, 226, 139, 141,  67, 's', 'o', 'l',  33,   2,
-      1,  92,   1, 'b',   3, 226, 167, 133,   4, 'h', 's', 'u', 'b',   3, 226,
-    159, 136,  67, 'u', 'l', 'l',  34,   1,   3, 226, 128, 162,   2, 'e', 't',
-      3, 226, 128, 162,  67, 'u', 'm', 'p',  34,   2,   3, 226, 137, 142,   1,
-    'E',   3, 226, 170, 174,  65, 'e',   1,   1,   3, 226, 137, 143,   1, 'q',
-      3, 226, 137, 143,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 135,  66, 'a',
-    'p',  51,   6,   3, 226, 136, 169,   3, 'a', 'n', 'd',   3, 226, 169, 132,
-      5, 'b', 'r', 'c', 'u', 'p',   3, 226, 169, 137,   3, 'c', 'a', 'p',   3,
-    226, 169, 139,   3, 'c', 'u', 'p',   3, 226, 169, 135,   3, 'd', 'o', 't',
-      3, 226, 169, 128,   1, 's',   6, 226, 136, 169, 239, 184, 128,   4, 'a',
-    'r', 'e', 't',   3, 226, 129, 129,   4, 'a', 'r', 'o', 'n',   2, 203, 135,
-      4, 'c', 'a', 'p', 's',   3, 226, 169, 141,   5, 'c', 'a', 'r', 'o', 'n',
-      2, 196, 141, 133, 'c', 'e', 'd', 'i', 'l',   2, 195, 167,   4, 'c', 'i',
-    'r', 'c',   2, 196, 137,  68, 'c', 'u', 'p', 's',  50,   1,   3, 226, 169,
-    140,   2, 's', 'm',   3, 226, 169, 144,   3, 'd', 'o', 't',   2, 196, 139,
-    132, 'e', 'd', 'i', 'l',   2, 194, 184,   6, 'e', 'm', 'p', 't', 'y', 'v',
-      3, 226, 166, 178, 195, 'e', 'n', 't',  47,   1,   2, 194, 162,   5, 'e',
-    'r', 'd', 'o', 't',   2, 194, 183,   2, 'f', 'r',   4, 240, 157, 148, 160,
-      3, 'h', 'c', 'y',   2, 209, 135,  68, 'h', 'e', 'c', 'k',  45,   1,   3,
-    226, 156, 147,   4, 'm', 'a', 'r', 'k',   3, 226, 156, 147,   2, 'h', 'i',
-      2, 207, 135,  66, 'i', 'r',  44,   6,   3, 226, 151, 139,   1, 'E',   3,
-    226, 167, 131,  65, 'c',   5,   8,   2, 203, 134,   2, 'e', 'q',   3, 226,
-    137, 151,  11, 'l', 'e', 'a', 'r', 'r', 'o', 'w', 'l', 'e', 'f', 't',   3,
-    226, 134, 186,  12, 'l', 'e', 'a', 'r', 'r', 'o', 'w', 'r', 'i', 'g', 'h',
-    't',   3, 226, 134, 187,   4, 'l', 'e', 'd', 'R',   2, 194, 174,   4, 'l',
-    'e', 'd', 'S',   3, 226, 147, 136,   6, 'l', 'e', 'd', 'a', 's', 't',   3,
-    226, 138, 155,   7, 'l', 'e', 'd', 'c', 'i', 'r', 'c',   3, 226, 138, 154,
-      7, 'l', 'e', 'd', 'd', 'a', 's', 'h',   3, 226, 138, 157,   1, 'e',   3,
-    226, 137, 151,   5, 'f', 'n', 'i', 'n', 't',   3, 226, 168, 144,   3, 'm',
-    'i', 'd',   3, 226, 171, 175,   4, 's', 'c', 'i', 'r',   3, 226, 167, 130,
-     68, 'l', 'u', 'b', 's',  57,   1,   3, 226, 153, 163,   3, 'u', 'i', 't',
-      3, 226, 153, 163,  68, 'o', 'l', 'o', 'n',  57,   1,   1, ':',  65, 'e',
-      1,   1,   3, 226, 137, 148,   1, 'q',   3, 226, 137, 148,  68, 'o', 'm',
-    'm', 'a',  58,   1,   1, ',',   1, 't',   1, '@',  67, 'o', 'm', 'p',  58,
-      3,   3, 226, 136, 129,   2, 'f', 'n',   3, 226, 136, 152,   6, 'l', 'e',
-    'm', 'e', 'n', 't',   3, 226, 136, 129,   5, 'l', 'e', 'x', 'e', 's',   3,
-    226, 132, 130,  67, 'o', 'n', 'g',  60,   1,   3, 226, 137, 133,   3, 'd',
-    'o', 't',   3, 226, 169, 173,   5, 'o', 'n', 'i', 'n', 't',   3, 226, 136,
-    174,   3, 'o', 'p', 'f',   4, 240, 157, 149, 148,   5, 'o', 'p', 'r', 'o',
-    'd',   3, 226, 136, 144, 195, 'o', 'p', 'y',  57,   1,   2, 194, 169,   2,
-    's', 'r',   3, 226, 132, 151,   4, 'r', 'a', 'r', 'r',   3, 226, 134, 181,
-      4, 'r', 'o', 's', 's',   3, 226, 156, 151,   3, 's', 'c', 'r',   4, 240,
-    157, 146, 184,  67, 's', 'u', 'b',  54,   1,   3, 226, 171, 143,   1, 'e',
-      3, 226, 171, 145,  67, 's', 'u', 'p',  54,   1,   3, 226, 171, 144,   1,
-    'e',   3, 226, 171, 146,   4, 't', 'd', 'o', 't',   3, 226, 139, 175,   6,
-    'u', 'd', 'a', 'r', 'r', 'l',   3, 226, 164, 184,   6, 'u', 'd', 'a', 'r',
-    'r', 'r',   3, 226, 164, 181,   4, 'u', 'e', 'p', 'r',   3, 226, 139, 158,
-      4, 'u', 'e', 's', 'c',   3, 226, 139, 159,  69, 'u', 'l', 'a', 'r', 'r',
-     49,   1,   3, 226, 134, 182,   1, 'p',   3, 226, 164, 189,  66, 'u', 'p',
-     49,   6,   3, 226, 136, 170,   5, 'b', 'r', 'c', 'a', 'p',   3, 226, 169,
-    136,   3, 'c', 'a', 'p',   3, 226, 169, 134,   3, 'c', 'u', 'p',   3, 226,
-    169, 138,   3, 'd', 'o', 't',   3, 226, 138, 141,   2, 'o', 'r',   3, 226,
-    169, 133,   1, 's',   6, 226, 136, 170, 239, 184, 128,  69, 'u', 'r', 'a',
-    'r', 'r',  54,   1,   3, 226, 134, 183,   1, 'm',   3, 226, 164, 188,  10,
-    'u', 'r', 'l', 'y', 'e', 'q', 'p', 'r', 'e', 'c',   3, 226, 139, 158,  10,
-    'u', 'r', 'l', 'y', 'e', 'q', 's', 'u', 'c', 'c',   3, 226, 139, 159,   7,
-    'u', 'r', 'l', 'y', 'v', 'e', 'e',   3, 226, 139, 142,   9, 'u', 'r', 'l',
-    'y', 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 143, 133, 'u', 'r', 'r', 'e',
-    'n',   2, 194, 164,  13, 'u', 'r', 'v', 'e', 'a', 'r', 'r', 'o', 'w', 'l',
-    'e', 'f', 't',   3, 226, 134, 182,  14, 'u', 'r', 'v', 'e', 'a', 'r', 'r',
-    'o', 'w', 'r', 'i', 'g', 'h', 't',   3, 226, 134, 183,   4, 'u', 'v', 'e',
-    'e',   3, 226, 139, 142,   4, 'u', 'w', 'e', 'd',   3, 226, 139, 143,   7,
-    'w', 'c', 'o', 'n', 'i', 'n', 't',   3, 226, 136, 178,   4, 'w', 'i', 'n',
-    't',   3, 226, 136, 177,   5, 'y', 'l', 'c', 't', 'y',   3, 226, 140, 173,
-      3, 'A', 'r', 'r',   3, 226, 135, 147,   3, 'H', 'a', 'r',   3, 226, 165,
-    165,   5, 'a', 'g', 'g', 'e', 'r',   3, 226, 128, 160,   5, 'a', 'l', 'e',
-    't', 'h',   3, 226, 132, 184,   3, 'a', 'r', 'r',   3, 226, 134, 147,  67,
-    'a', 's', 'h',  43,   1,   3, 226, 128, 144,   1, 'v',   3, 226, 138, 163,
-      6, 'b', 'k', 'a', 'r', 'o', 'w',   3, 226, 164, 143,   4, 'b', 'l', 'a',
-    'c',   2, 203, 157,   5, 'c', 'a', 'r', 'o', 'n',   2, 196, 143,   2, 'c',
-    'y',   2, 208, 180,  65, 'd',  39,   3,   3, 226, 133, 134,   5, 'a', 'g',
-    'g', 'e', 'r',   3, 226, 128, 161,   3, 'a', 'r', 'r',   3, 226, 135, 138,
-      5, 'o', 't', 's', 'e', 'q',   3, 226, 169, 183, 130, 'e', 'g',   2, 194,
-    176,   4, 'e', 'l', 't', 'a',   2, 206, 180,   6, 'e', 'm', 'p', 't', 'y',
-    'v',   3, 226, 166, 177,   5, 'f', 'i', 's', 'h', 't',   3, 226, 165, 191,
-      2, 'f', 'r',   4, 240, 157, 148, 161,   4, 'h', 'a', 'r', 'l',   3, 226,
-    135, 131,   4, 'h', 'a', 'r', 'r',   3, 226, 135, 130,  67, 'i', 'a', 'm',
-     34,   2,   3, 226, 139, 132,  67, 'o', 'n', 'd',   2,   1,   3, 226, 139,
-    132,   4, 's', 'u', 'i', 't',   3, 226, 153, 166,   1, 's',   3, 226, 153,
-    166,   2, 'i', 'e',   2, 194, 168,   6, 'i', 'g', 'a', 'm', 'm', 'a',   2,
-    207, 157,   4, 'i', 's', 'i', 'n',   3, 226, 139, 178,  66, 'i', 'v',  33,
-      2,   2, 195, 183, 195, 'i', 'd', 'e',   2,   1,   2, 195, 183,   7, 'o',
-    'n', 't', 'i', 'm', 'e', 's',   3, 226, 139, 135,   3, 'o', 'n', 'x',   3,
-    226, 139, 135,   3, 'j', 'c', 'y',   2, 209, 146,   5, 'l', 'c', 'o', 'r',
-    'n',   3, 226, 140, 158,   5, 'l', 'c', 'r', 'o', 'p',   3, 226, 140, 141,
-      5, 'o', 'l', 'l', 'a', 'r',   1, '$',   3, 'o', 'p', 'f',   4, 240, 157,
-    149, 149,  66, 'o', 't',  30,   4,   2, 203, 153,  66, 'e', 'q',   4,   1,
-      3, 226, 137, 144,   3, 'd', 'o', 't',   3, 226, 137, 145,   5, 'm', 'i',
-    'n', 'u', 's',   3, 226, 136, 184,   4, 'p', 'l', 'u', 's',   3, 226, 136,
-    148,   6, 's', 'q', 'u', 'a', 'r', 'e',   3, 226, 138, 161,  13, 'o', 'u',
-    'b', 'l', 'e', 'b', 'a', 'r', 'w', 'e', 'd', 'g', 'e',   3, 226, 140, 134,
-      8, 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 147,  13, 'o',
-    'w', 'n', 'd', 'o', 'w', 'n', 'a', 'r', 'r', 'o', 'w', 's',   3, 226, 135,
-    138,  14, 'o', 'w', 'n', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'l', 'e', 'f',
-    't',   3, 226, 135, 131,  15, 'o', 'w', 'n', 'h', 'a', 'r', 'p', 'o', 'o',
-    'n', 'r', 'i', 'g', 'h', 't',   3, 226, 135, 130,   7, 'r', 'b', 'k', 'a',
-    'r', 'o', 'w',   3, 226, 164, 144,   5, 'r', 'c', 'o', 'r', 'n',   3, 226,
-    140, 159,   5, 'r', 'c', 'r', 'o', 'p',   3, 226, 140, 140,   3, 's', 'c',
-    'r',   4, 240, 157, 146, 185,   3, 's', 'c', 'y',   2, 209, 149,   3, 's',
-    'o', 'l',   3, 226, 167, 182,   5, 's', 't', 'r', 'o', 'k',   2, 196, 145,
-      4, 't', 'd', 'o', 't',   3, 226, 139, 177,  67, 't', 'r', 'i',  21,   1,
-      3, 226, 150, 191,   1, 'f',   3, 226, 150, 190,   4, 'u', 'a', 'r', 'r',
-      3, 226, 135, 181,   4, 'u', 'h', 'a', 'r',   3, 226, 165, 175,   6, 'w',
-    'a', 'n', 'g', 'l', 'e',   3, 226, 166, 166,   3, 'z', 'c', 'y',   2, 209,
-    159,   7, 'z', 'i', 'g', 'r', 'a', 'r', 'r',   3, 226, 159, 191,   4, 'D',
-    'D', 'o', 't',   3, 226, 169, 183,   3, 'D', 'o', 't',   3, 226, 137, 145,
-    133, 'a', 'c', 'u', 't', 'e',   2, 195, 169,   5, 'a', 's', 't', 'e', 'r',
-      3, 226, 169, 174,   5, 'c', 'a', 'r', 'o', 'n',   2, 196, 155,  67, 'c',
-    'i', 'r',  41,   1,   3, 226, 137, 150, 129, 'c',   2, 195, 170,   5, 'c',
-    'o', 'l', 'o', 'n',   3, 226, 137, 149,   2, 'c', 'y',   2, 209, 141,   3,
-    'd', 'o', 't',   2, 196, 151,   1, 'e',   3, 226, 133, 135,   4, 'f', 'D',
-    'o', 't',   3, 226, 137, 146,   2, 'f', 'r',   4, 240, 157, 148, 162,  65,
-    'g',  35,   2,   3, 226, 170, 154, 132, 'r', 'a', 'v', 'e',   2, 195, 168,
-     65, 's',   1,   1,   3, 226, 170, 150,   3, 'd', 'o', 't',   3, 226, 170,
-    152,  65, 'l',  37,   3,   3, 226, 170, 153,   6, 'i', 'n', 't', 'e', 'r',
-    's',   3, 226, 143, 167,   1, 'l',   3, 226, 132, 147,  65, 's',   1,   1,
-      3, 226, 170, 149,   3, 'd', 'o', 't',   3, 226, 170, 151,   4, 'm', 'a',
-    'c', 'r',   2, 196, 147,  68, 'm', 'p', 't', 'y',  39,   2,   3, 226, 136,
-    133,   3, 's', 'e', 't',   3, 226, 136, 133,   1, 'v',   3, 226, 136, 133,
-     67, 'm', 's', 'p',  40,   2,   3, 226, 128, 131,   2, '1', '3',   3, 226,
-    128, 132,   2, '1', '4',   3, 226, 128, 133,   2, 'n', 'g',   2, 197, 139,
-      3, 'n', 's', 'p',   3, 226, 128, 130,   4, 'o', 'g', 'o', 'n',   2, 196,
-    153,   3, 'o', 'p', 'f',   4, 240, 157, 149, 150,  67, 'p', 'a', 'r',  37,
-      1,   3, 226, 139, 149,   2, 's', 'l',   3, 226, 167, 163,   4, 'p', 'l',
-    'u', 's',   3, 226, 169, 177,  67, 'p', 's', 'i',  36,   2,   2, 206, 181,
-      3, 'l', 'o', 'n',   2, 206, 181,   1, 'v',   2, 207, 181,   5, 'q', 'c',
-    'i', 'r', 'c',   3, 226, 137, 150,   6, 'q', 'c', 'o', 'l', 'o', 'n',   3,
-    226, 137, 149,   4, 'q', 's', 'i', 'm',   3, 226, 137, 130,   9, 'q', 's',
-    'l', 'a', 'n', 't', 'g', 't', 'r',   3, 226, 170, 150,  10, 'q', 's', 'l',
-    'a', 'n', 't', 'l', 'e', 's', 's',   3, 226, 170, 149,   5, 'q', 'u', 'a',
-    'l', 's',   1, '=',   5, 'q', 'u', 'e', 's', 't',   3, 226, 137, 159,  68,
-    'q', 'u', 'i', 'v',  30,   1,   3, 226, 137, 161,   2, 'D', 'D',   3, 226,
-    169, 184,   7, 'q', 'v', 'p', 'a', 'r', 's', 'l',   3, 226, 167, 165,   4,
-    'r', 'D', 'o', 't',   3, 226, 137, 147,   4, 'r', 'a', 'r', 'r',   3, 226,
-    165, 177,   3, 's', 'c', 'r',   3, 226, 132, 175,   4, 's', 'd', 'o', 't',
-      3, 226, 137, 144,   3, 's', 'i', 'm',   3, 226, 137, 130,   2, 't', 'a',
-      2, 206, 183, 130, 't', 'h',   2, 195, 176, 131, 'u', 'm', 'l',   2, 195,
-    171,   3, 'u', 'r', 'o',   3, 226, 130, 172,   3, 'x', 'c', 'l',   1, '!',
-      4, 'x', 'i', 's', 't',   3, 226, 136, 131,  10, 'x', 'p', 'e', 'c', 't',
-    'a', 't', 'i', 'o', 'n',   3, 226, 132, 176,  11, 'x', 'p', 'o', 'n', 'e',
-    'n', 't', 'i', 'a', 'l', 'e',   3, 226, 133, 135,  12, 'a', 'l', 'l', 'i',
-    'n', 'g', 'd', 'o', 't', 's', 'e', 'q',   3, 226, 137, 146,   2, 'c', 'y',
-      2, 209, 132,   5, 'e', 'm', 'a', 'l', 'e',   3, 226, 153, 128,   5, 'f',
-    'i', 'l', 'i', 'g',   3, 239, 172, 131,   4, 'f', 'l', 'i', 'g',   3, 239,
-    172, 128,   5, 'f', 'l', 'l', 'i', 'g',   3, 239, 172, 132,   2, 'f', 'r',
-      4, 240, 157, 148, 163,   4, 'i', 'l', 'i', 'g',   3, 239, 172, 129,   4,
-    'j', 'l', 'i', 'g',   2, 'f', 'j',   3, 'l', 'a', 't',   3, 226, 153, 173,
-      4, 'l', 'l', 'i', 'g',   3, 239, 172, 130,   4, 'l', 't', 'n', 's',   3,
-    226, 150, 177,   3, 'n', 'o', 'f',   2, 198, 146,   3, 'o', 'p', 'f',   4,
-    240, 157, 149, 151,   5, 'o', 'r', 'a', 'l', 'l',   3, 226, 136, 128,  67,
-    'o', 'r', 'k',  20,   1,   3, 226, 139, 148,   1, 'v',   3, 226, 171, 153,
-      7, 'p', 'a', 'r', 't', 'i', 'n', 't',   3, 226, 168, 141, 133, 'r', 'a',
-    'c', '1', '2',   2, 194, 189,   5, 'r', 'a', 'c', '1', '3',   3, 226, 133,
-    147, 133, 'r', 'a', 'c', '1', '4',   2, 194, 188,   5, 'r', 'a', 'c', '1',
-    '5',   3, 226, 133, 149,   5, 'r', 'a', 'c', '1', '6',   3, 226, 133, 153,
-      5, 'r', 'a', 'c', '1', '8',   3, 226, 133, 155,   5, 'r', 'a', 'c', '2',
-    '3',   3, 226, 133, 148,   5, 'r', 'a', 'c', '2', '5',   3, 226, 133, 150,
-    133, 'r', 'a', 'c', '3', '4',   2, 194, 190,   5, 'r', 'a', 'c', '3', '5',
-      3, 226, 133, 151,   5, 'r', 'a', 'c', '3', '8',   3, 226, 133, 156,   5,
-    'r', 'a', 'c', '4', '5',   3, 226, 133, 152,   5, 'r', 'a', 'c', '5', '6',
-      3, 226, 133, 154,   5, 'r', 'a', 'c', '5', '8',   3, 226, 133, 157,   5,
-    'r', 'a', 'c', '7', '8',   3, 226, 133, 158,   4, 'r', 'a', 's', 'l',   3,
-    226, 129, 132,   4, 'r', 'o', 'w', 'n',   3, 226, 140, 162,   3, 's', 'c',
-    'r',   4, 240, 157, 146, 187,  65, 'E',  25,   1,   3, 226, 137, 167,   1,
-    'l',   3, 226, 170, 140,   5, 'a', 'c', 'u', 't', 'e',   2, 199, 181,  68,
-    'a', 'm', 'm', 'a',  24,   1,   2, 206, 179,   1, 'd',   2, 207, 157,   2,
-    'a', 'p',   3, 226, 170, 134,   5, 'b', 'r', 'e', 'v', 'e',   2, 196, 159,
-      4, 'c', 'i', 'r', 'c',   2, 196, 157,   2, 'c', 'y',   2, 208, 179,   3,
-    'd', 'o', 't',   2, 196, 161,  65, 'e',  19,   3,   3, 226, 137, 165,   1,
-    'l',   3, 226, 139, 155,  65, 'q',   2,   2,   3, 226, 137, 165,   1, 'q',
-      3, 226, 137, 167,   5, 's', 'l', 'a', 'n', 't',   3, 226, 169, 190,  65,
-    's',   3,   3,   3, 226, 169, 190,   2, 'c', 'c',   3, 226, 170, 169,  67,
-    'd', 'o', 't',   2,   1,   3, 226, 170, 128,  65, 'o',   1,   1,   3, 226,
-    170, 130,   1, 'l',   3, 226, 170, 132,  65, 'l',   3,   1,   6, 226, 139,
-    155, 239, 184, 128,   2, 'e', 's',   3, 226, 170, 148,   2, 'f', 'r',   4,
-    240, 157, 148, 164,  65, 'g',  28,   1,   3, 226, 137, 171,   1, 'g',   3,
-    226, 139, 153,   4, 'i', 'm', 'e', 'l',   3, 226, 132, 183,   3, 'j', 'c',
-    'y',   2, 209, 147,  65, 'l',  26,   3,   3, 226, 137, 183,   1, 'E',   3,
-    226, 170, 146,   1, 'a',   3, 226, 170, 165,   1, 'j',   3, 226, 170, 164,
-      2, 'n', 'E',   3, 226, 137, 169,  67, 'n', 'a', 'p',  27,   1,   3, 226,
-    170, 138,   4, 'p', 'r', 'o', 'x',   3, 226, 170, 138,  66, 'n', 'e',  27,
-      1,   3, 226, 170, 136,  65, 'q',   1,   1,   3, 226, 170, 136,   1, 'q',
-      3, 226, 137, 169,   4, 'n', 's', 'i', 'm',   3, 226, 139, 167,   3, 'o',
-    'p', 'f',   4, 240, 157, 149, 152,   4, 'r', 'a', 'v', 'e',   1, '`',   3,
-    's', 'c', 'r',   3, 226, 132, 138,  67, 's', 'i', 'm',  24,   2,   3, 226,
-    137, 179,   1, 'e',   3, 226, 170, 142,   1, 'l',   3, 226, 170, 144, 193,
-    't',  25,  12,   1, '>',   2, 'c', 'c',   3, 226, 170, 167,   3, 'c', 'i',
-    'r',   3, 226, 169, 186,   3, 'd', 'o', 't',   3, 226, 139, 151,   4, 'l',
-    'P', 'a', 'r',   3, 226, 166, 149,   5, 'q', 'u', 'e', 's', 't',   3, 226,
-    169, 188,   7, 'r', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226, 170, 134,   4,
-    'r', 'a', 'r', 'r',   3, 226, 165, 184,   4, 'r', 'd', 'o', 't',   3, 226,
-    139, 151,   7, 'r', 'e', 'q', 'l', 'e', 's', 's',   3, 226, 139, 155,   8,
-    'r', 'e', 'q', 'q', 'l', 'e', 's', 's',   3, 226, 170, 140,   5, 'r', 'l',
-    'e', 's', 's',   3, 226, 137, 183,   4, 'r', 's', 'i', 'm',   3, 226, 137,
-    179,   8, 'v', 'e', 'r', 't', 'n', 'e', 'q', 'q',   6, 226, 137, 169, 239,
-    184, 128,   3, 'v', 'n', 'E',   6, 226, 137, 169, 239, 184, 128,   3, 'A',
-    'r', 'r',   3, 226, 135, 148,   5, 'a', 'i', 'r', 's', 'p',   3, 226, 128,
-    138,   3, 'a', 'l', 'f',   2, 194, 189,   5, 'a', 'm', 'i', 'l', 't',   3,
-    226, 132, 139,   5, 'a', 'r', 'd', 'c', 'y',   2, 209, 138,  67, 'a', 'r',
-    'r',  20,   2,   3, 226, 134, 148,   3, 'c', 'i', 'r',   3, 226, 165, 136,
-      1, 'w',   3, 226, 134, 173,   3, 'b', 'a', 'r',   3, 226, 132, 143,   4,
-    'c', 'i', 'r', 'c',   2, 196, 165,  69, 'e', 'a', 'r', 't', 's',  19,   1,
-      3, 226, 153, 165,   3, 'u', 'i', 't',   3, 226, 153, 165,   5, 'e', 'l',
-    'l', 'i', 'p',   3, 226, 128, 166,   5, 'e', 'r', 'c', 'o', 'n',   3, 226,
-    138, 185,   2, 'f', 'r',   4, 240, 157, 148, 165,   7, 'k', 's', 'e', 'a',
-    'r', 'o', 'w',   3, 226, 164, 165,   7, 'k', 's', 'w', 'a', 'r', 'o', 'w',
-      3, 226, 164, 166,   4, 'o', 'a', 'r', 'r',   3, 226, 135, 191,   5, 'o',
-    'm', 't', 'h', 't',   3, 226, 136, 187,  12, 'o', 'o', 'k', 'l', 'e', 'f',
-    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 169,  13, 'o', 'o', 'k', 'r',
-    'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 170,   3, 'o',
-    'p', 'f',   4, 240, 157, 149, 153,   5, 'o', 'r', 'b', 'a', 'r',   3, 226,
-    128, 149,   3, 's', 'c', 'r',   4, 240, 157, 146, 189,   5, 's', 'l', 'a',
-    's', 'h',   3, 226, 132, 143,   5, 's', 't', 'r', 'o', 'k',   2, 196, 167,
-      5, 'y', 'b', 'u', 'l', 'l',   3, 226, 129, 131,   5, 'y', 'p', 'h', 'e',
-    'n',   3, 226, 128, 144, 133, 'a', 'c', 'u', 't', 'e',   2, 195, 173,  65,
-    'c',  27,   2,   3, 226, 129, 163, 131, 'i', 'r', 'c',   2, 195, 174,   1,
-    'y',   2, 208, 184,   3, 'e', 'c', 'y',   2, 208, 181, 132, 'e', 'x', 'c',
-    'l',   2, 194, 161,   2, 'f', 'f',   3, 226, 135, 148,   2, 'f', 'r',   4,
-    240, 157, 148, 166, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 172,  65, 'i',
-     23,   4,   3, 226, 133, 136,   4, 'i', 'i', 'n', 't',   3, 226, 168, 140,
-      3, 'i', 'n', 't',   3, 226, 136, 173,   4, 'n', 'f', 'i', 'n',   3, 226,
-    167, 156,   3, 'o', 't', 'a',   3, 226, 132, 169,   4, 'j', 'l', 'i', 'g',
-      2, 196, 179,   4, 'm', 'a', 'c', 'r',   2, 196, 171,   4, 'm', 'a', 'g',
-    'e',   3, 226, 132, 145,   7, 'm', 'a', 'g', 'l', 'i', 'n', 'e',   3, 226,
-    132, 144,   7, 'm', 'a', 'g', 'p', 'a', 'r', 't',   3, 226, 132, 145,   4,
-    'm', 'a', 't', 'h',   2, 196, 177,   3, 'm', 'o', 'f',   3, 226, 138, 183,
-      4, 'm', 'p', 'e', 'd',   2, 198, 181,  65, 'n',  18,   4,   3, 226, 136,
-    136,   4, 'c', 'a', 'r', 'e',   3, 226, 132, 133,  67, 'f', 'i', 'n',   3,
-      1,   3, 226, 136, 158,   3, 't', 'i', 'e',   3, 226, 167, 157,   4, 'o',
-    'd', 'o', 't',   2, 196, 177,  65, 't',   2,   5,   3, 226, 136, 171,   3,
-    'c', 'a', 'l',   3, 226, 138, 186,   5, 'e', 'g', 'e', 'r', 's',   3, 226,
-    132, 164,   5, 'e', 'r', 'c', 'a', 'l',   3, 226, 138, 186,   5, 'l', 'a',
-    'r', 'h', 'k',   3, 226, 168, 151,   4, 'p', 'r', 'o', 'd',   3, 226, 168,
-    188,   3, 'o', 'c', 'y',   2, 209, 145,   4, 'o', 'g', 'o', 'n',   2, 196,
-    175,   3, 'o', 'p', 'f',   4, 240, 157, 149, 154,   3, 'o', 't', 'a',   2,
-    206, 185,   4, 'p', 'r', 'o', 'd',   3, 226, 168, 188, 133, 'q', 'u', 'e',
-    's', 't',   2, 194, 191,   3, 's', 'c', 'r',   4, 240, 157, 146, 190,  67,
-    's', 'i', 'n',  20,   4,   3, 226, 136, 136,   1, 'E',   3, 226, 139, 185,
-      3, 'd', 'o', 't',   3, 226, 139, 181,  65, 's',   2,   1,   3, 226, 139,
-    180,   1, 'v',   3, 226, 139, 179,   1, 'v',   3, 226, 136, 136,  65, 't',
-     24,   1,   3, 226, 129, 162,   4, 'i', 'l', 'd', 'e',   2, 196, 169,   4,
-    'u', 'k', 'c', 'y',   2, 209, 150, 131, 'u', 'm', 'l',   2, 195, 175,   4,
-    'c', 'i', 'r', 'c',   2, 196, 181,   2, 'c', 'y',   2, 208, 185,   2, 'f',
-    'r',   4, 240, 157, 148, 167,   4, 'm', 'a', 't', 'h',   2, 200, 183,   3,
-    'o', 'p', 'f',   4, 240, 157, 149, 155,   3, 's', 'c', 'r',   4, 240, 157,
-    146, 191,   5, 's', 'e', 'r', 'c', 'y',   2, 209, 152,   4, 'u', 'k', 'c',
-    'y',   2, 209, 148,  68, 'a', 'p', 'p', 'a',   9,   1,   2, 206, 186,   1,
-    'v',   2, 207, 176,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 183,   2, 'c',
-    'y',   2, 208, 186,   2, 'f', 'r',   4, 240, 157, 148, 168,   5, 'g', 'r',
-    'e', 'e', 'n',   2, 196, 184,   3, 'h', 'c', 'y',   2, 209, 133,   3, 'j',
-    'c', 'y',   2, 209, 156,   3, 'o', 'p', 'f',   4, 240, 157, 149, 156,   3,
-    's', 'c', 'r',   4, 240, 157, 147, 128,   4, 'A', 'a', 'r', 'r',   3, 226,
-    135, 154,   3, 'A', 'r', 'r',   3, 226, 135, 144,   5, 'A', 't', 'a', 'i',
-    'l',   3, 226, 164, 155,   4, 'B', 'a', 'r', 'r',   3, 226, 164, 142,  65,
-    'E',  78,   1,   3, 226, 137, 166,   1, 'g',   3, 226, 170, 139,   3, 'H',
-    'a', 'r',   3, 226, 165, 162,   5, 'a', 'c', 'u', 't', 'e',   2, 196, 186,
-      7, 'a', 'e', 'm', 'p', 't', 'y', 'v',   3, 226, 166, 180,   5, 'a', 'g',
-    'r', 'a', 'n',   3, 226, 132, 146,   5, 'a', 'm', 'b', 'd', 'a',   2, 206,
-    187,  67, 'a', 'n', 'g',  73,   2,   3, 226, 159, 168,   1, 'd',   3, 226,
-    166, 145,   2, 'l', 'e',   3, 226, 159, 168,   2, 'a', 'p',   3, 226, 170,
-    133, 132, 'a', 'q', 'u', 'o',   2, 194, 171,  67, 'a', 'r', 'r',  72,   7,
-      3, 226, 134, 144,  65, 'b',   7,   1,   3, 226, 135, 164,   2, 'f', 's',
-      3, 226, 164, 159,   2, 'f', 's',   3, 226, 164, 157,   2, 'h', 'k',   3,
-    226, 134, 169,   2, 'l', 'p',   3, 226, 134, 171,   2, 'p', 'l',   3, 226,
-    164, 185,   3, 's', 'i', 'm',   3, 226, 165, 179,   2, 't', 'l',   3, 226,
-    134, 162,  66, 'a', 't',  79,   2,   3, 226, 170, 171,   3, 'a', 'i', 'l',
-      3, 226, 164, 153,  65, 'e',   1,   1,   3, 226, 170, 173,   1, 's',   6,
-    226, 170, 173, 239, 184, 128,   4, 'b', 'a', 'r', 'r',   3, 226, 164, 140,
-      4, 'b', 'b', 'r', 'k',   3, 226, 157, 178,   5, 'b', 'r', 'a', 'c', 'e',
-      1, '{',   5, 'b', 'r', 'a', 'c', 'k',   1, '[',   4, 'b', 'r', 'k', 'e',
-      3, 226, 166, 139,   6, 'b', 'r', 'k', 's', 'l', 'd',   3, 226, 166, 143,
-      6, 'b', 'r', 'k', 's', 'l', 'u',   3, 226, 166, 141,   5, 'c', 'a', 'r',
-    'o', 'n',   2, 196, 190,   5, 'c', 'e', 'd', 'i', 'l',   2, 196, 188,   4,
-    'c', 'e', 'i', 'l',   3, 226, 140, 136,   3, 'c', 'u', 'b',   1, '{',   2,
-    'c', 'y',   2, 208, 187,   3, 'd', 'c', 'a',   3, 226, 164, 182,  68, 'd',
-    'q', 'u', 'o',  68,   1,   3, 226, 128, 156,   1, 'r',   3, 226, 128, 158,
-      6, 'd', 'r', 'd', 'h', 'a', 'r',   3, 226, 165, 167,   7, 'd', 'r', 'u',
-    's', 'h', 'a', 'r',   3, 226, 165, 139,   3, 'd', 's', 'h',   3, 226, 134,
-    178,  65, 'e',  65,  11,   3, 226, 137, 164,  71, 'f', 't', 'a', 'r', 'r',
-    'o', 'w',  11,   1,   3, 226, 134, 144,   4, 't', 'a', 'i', 'l',   3, 226,
-    134, 162,  13, 'f', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'd', 'o', 'w',
-    'n',   3, 226, 134, 189,  11, 'f', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n',
-    'u', 'p',   3, 226, 134, 188,  12, 'f', 't', 'l', 'e', 'f', 't', 'a', 'r',
-    'r', 'o', 'w', 's',   3, 226, 135, 135,  76, 'f', 't', 'r', 'i', 'g', 'h',
-    't', 'a', 'r', 'r', 'o', 'w',   8,   1,   3, 226, 134, 148,   1, 's',   3,
-    226, 135, 134,  15, 'f', 't', 'r', 'i', 'g', 'h', 't', 'h', 'a', 'r', 'p',
-    'o', 'o', 'n', 's',   3, 226, 135, 139,  17, 'f', 't', 'r', 'i', 'g', 'h',
-    't', 's', 'q', 'u', 'i', 'g', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 173,
-     12, 'f', 't', 't', 'h', 'r', 'e', 'e', 't', 'i', 'm', 'e', 's',   3, 226,
-    139, 139,   1, 'g',   3, 226, 139, 154,  65, 'q',   4,   2,   3, 226, 137,
-    164,   1, 'q',   3, 226, 137, 166,   5, 's', 'l', 'a', 'n', 't',   3, 226,
-    169, 189,  65, 's',   5,   9,   3, 226, 169, 189,   2, 'c', 'c',   3, 226,
-    170, 168,  67, 'd', 'o', 't',   8,   1,   3, 226, 169, 191,  65, 'o',   1,
-      1,   3, 226, 170, 129,   1, 'r',   3, 226, 170, 131,  65, 'g',   9,   1,
-      6, 226, 139, 154, 239, 184, 128,   2, 'e', 's',   3, 226, 170, 147,   7,
-    's', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226, 170, 133,   4, 's', 'd', 'o',
-    't',   3, 226, 139, 150,   6, 's', 'e', 'q', 'g', 't', 'r',   3, 226, 139,
-    154,   7, 's', 'e', 'q', 'q', 'g', 't', 'r',   3, 226, 170, 139,   4, 's',
-    'g', 't', 'r',   3, 226, 137, 182,   4, 's', 's', 'i', 'm',   3, 226, 137,
-    178,   5, 'f', 'i', 's', 'h', 't',   3, 226, 165, 188,   5, 'f', 'l', 'o',
-    'o', 'r',   3, 226, 140, 138,   2, 'f', 'r',   4, 240, 157, 148, 169,  65,
-    'g',  88,   1,   3, 226, 137, 182,   1, 'E',   3, 226, 170, 145,   4, 'h',
-    'a', 'r', 'd',   3, 226, 134, 189,  68, 'h', 'a', 'r', 'u',  87,   1,   3,
-    226, 134, 188,   1, 'l',   3, 226, 165, 170,   4, 'h', 'b', 'l', 'k',   3,
-    226, 150, 132,   3, 'j', 'c', 'y',   2, 209, 153,  65, 'l',  85,   4,   3,
-    226, 137, 170,   3, 'a', 'r', 'r',   3, 226, 135, 135,   6, 'c', 'o', 'r',
-    'n', 'e', 'r',   3, 226, 140, 158,   4, 'h', 'a', 'r', 'd',   3, 226, 165,
-    171,   3, 't', 'r', 'i',   3, 226, 151, 186,   5, 'm', 'i', 'd', 'o', 't',
-      2, 197, 128,  69, 'm', 'o', 'u', 's', 't',  87,   1,   3, 226, 142, 176,
-      4, 'a', 'c', 'h', 'e',   3, 226, 142, 176,   2, 'n', 'E',   3, 226, 137,
-    168,  67, 'n', 'a', 'p',  86,   1,   3, 226, 170, 137,   4, 'p', 'r', 'o',
-    'x',   3, 226, 170, 137,  66, 'n', 'e',  86,   1,   3, 226, 170, 135,  65,
-    'q',   1,   1,   3, 226, 170, 135,   1, 'q',   3, 226, 137, 168,   4, 'n',
-    's', 'i', 'm',   3, 226, 139, 166,   4, 'o', 'a', 'n', 'g',   3, 226, 159,
-    172,   4, 'o', 'a', 'r', 'r',   3, 226, 135, 189,   4, 'o', 'b', 'r', 'k',
-      3, 226, 159, 166,  12, 'o', 'n', 'g', 'l', 'e', 'f', 't', 'a', 'r', 'r',
-    'o', 'w',   3, 226, 159, 181,  17, 'o', 'n', 'g', 'l', 'e', 'f', 't', 'r',
-    'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 183,   9, 'o',
-    'n', 'g', 'm', 'a', 'p', 's', 't', 'o',   3, 226, 159, 188,  13, 'o', 'n',
-    'g', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 159, 182,
-     12, 'o', 'o', 'p', 'a', 'r', 'r', 'o', 'w', 'l', 'e', 'f', 't',   3, 226,
-    134, 171,  13, 'o', 'o', 'p', 'a', 'r', 'r', 'o', 'w', 'r', 'i', 'g', 'h',
-    't',   3, 226, 134, 172,   4, 'o', 'p', 'a', 'r',   3, 226, 166, 133,   3,
-    'o', 'p', 'f',   4, 240, 157, 149, 157,   5, 'o', 'p', 'l', 'u', 's',   3,
-    226, 168, 173,   6, 'o', 't', 'i', 'm', 'e', 's',   3, 226, 168, 180,   5,
-    'o', 'w', 'a', 's', 't',   3, 226, 136, 151,   5, 'o', 'w', 'b', 'a', 'r',
-      1, '_',  66, 'o', 'z',  71,   2,   3, 226, 151, 138,   4, 'e', 'n', 'g',
-    'e',   3, 226, 151, 138,   1, 'f',   3, 226, 167, 171,  67, 'p', 'a', 'r',
-     72,   1,   1, '(',   2, 'l', 't',   3, 226, 166, 147,   4, 'r', 'a', 'r',
-    'r',   3, 226, 135, 134,   7, 'r', 'c', 'o', 'r', 'n', 'e', 'r',   3, 226,
-    140, 159,  68, 'r', 'h', 'a', 'r',  70,   1,   3, 226, 135, 139,   1, 'd',
-      3, 226, 165, 173,   2, 'r', 'm',   3, 226, 128, 142,   4, 'r', 't', 'r',
-    'i',   3, 226, 138, 191,   5, 's', 'a', 'q', 'u', 'o',   3, 226, 128, 185,
-      3, 's', 'c', 'r',   4, 240, 157, 147, 129,   2, 's', 'h',   3, 226, 134,
-    176,  67, 's', 'i', 'm',  65,   2,   3, 226, 137, 178,   1, 'e',   3, 226,
-    170, 141,   1, 'g',   3, 226, 170, 143,   3, 's', 'q', 'b',   1, '[',  68,
-    's', 'q', 'u', 'o',  65,   1,   3, 226, 128, 152,   1, 'r',   3, 226, 128,
-    154,   5, 's', 't', 'r', 'o', 'k',   2, 197, 130, 193, 't',  64,   9,   1,
-    '<',   2, 'c', 'c',   3, 226, 170, 166,   3, 'c', 'i', 'r',   3, 226, 169,
-    185,   3, 'd', 'o', 't',   3, 226, 139, 150,   4, 'h', 'r', 'e', 'e',   3,
-    226, 139, 139,   4, 'i', 'm', 'e', 's',   3, 226, 139, 137,   4, 'l', 'a',
-    'r', 'r',   3, 226, 165, 182,   5, 'q', 'u', 'e', 's', 't',   3, 226, 169,
-    187,   4, 'r', 'P', 'a', 'r',   3, 226, 166, 150,  66, 'r', 'i',   1,   2,
-      3, 226, 151, 131,   1, 'e',   3, 226, 138, 180,   1, 'f',   3, 226, 151,
-    130,   7, 'u', 'r', 'd', 's', 'h', 'a', 'r',   3, 226, 165, 138,   6, 'u',
-    'r', 'u', 'h', 'a', 'r',   3, 226, 165, 166,   8, 'v', 'e', 'r', 't', 'n',
-    'e', 'q', 'q',   6, 226, 137, 168, 239, 184, 128,   3, 'v', 'n', 'E',   6,
-    226, 137, 168, 239, 184, 128,   4, 'D', 'D', 'o', 't',   3, 226, 136, 186,
-    131, 'a', 'c', 'r',   2, 194, 175,   3, 'a', 'l', 'e',   3, 226, 153, 130,
-     67, 'a', 'l', 't',  21,   1,   3, 226, 156, 160,   3, 'e', 's', 'e',   3,
-    226, 156, 160,  66, 'a', 'p',  21,   1,   3, 226, 134, 166,  67, 's', 't',
-    'o',   1,   3,   3, 226, 134, 166,   4, 'd', 'o', 'w', 'n',   3, 226, 134,
-    167,   4, 'l', 'e', 'f', 't',   3, 226, 134, 164,   2, 'u', 'p',   3, 226,
-    134, 165,   5, 'a', 'r', 'k', 'e', 'r',   3, 226, 150, 174,   5, 'c', 'o',
-    'm', 'm', 'a',   3, 226, 168, 169,   2, 'c', 'y',   2, 208, 188,   4, 'd',
-    'a', 's', 'h',   3, 226, 128, 148,  12, 'e', 'a', 's', 'u', 'r', 'e', 'd',
-    'a', 'n', 'g', 'l', 'e',   3, 226, 136, 161,   2, 'f', 'r',   4, 240, 157,
-    148, 170,   2, 'h', 'o',   3, 226, 132, 167, 132, 'i', 'c', 'r', 'o',   2,
-    194, 181,  66, 'i', 'd',  16,   3,   3, 226, 136, 163,   3, 'a', 's', 't',
-      1, '*',   3, 'c', 'i', 'r',   3, 226, 171, 176, 131, 'd', 'o', 't',   2,
-    194, 183,  68, 'i', 'n', 'u', 's',  18,   2,   3, 226, 136, 146,   1, 'b',
-      3, 226, 138, 159,  65, 'd',   1,   1,   3, 226, 136, 184,   1, 'u',   3,
-    226, 168, 170,   3, 'l', 'c', 'p',   3, 226, 171, 155,   3, 'l', 'd', 'r',
-      3, 226, 128, 166,   5, 'n', 'p', 'l', 'u', 's',   3, 226, 136, 147,   5,
-    'o', 'd', 'e', 'l', 's',   3, 226, 138, 167,   3, 'o', 'p', 'f',   4, 240,
-    157, 149, 158,   1, 'p',   3, 226, 136, 147,   3, 's', 'c', 'r',   4, 240,
-    157, 147, 130,   5, 's', 't', 'p', 'o', 's',   3, 226, 136, 190,  65, 'u',
-     12,   2,   2, 206, 188,   6, 'l', 't', 'i', 'm', 'a', 'p',   3, 226, 138,
-    184,   3, 'm', 'a', 'p',   3, 226, 138, 184,   2, 'G', 'g',   5, 226, 139,
-    153, 204, 184,  66, 'G', 't',  84,   1,   6, 226, 137, 171, 226, 131, 146,
-      1, 'v',   5, 226, 137, 171, 204, 184,   9, 'L', 'e', 'f', 't', 'a', 'r',
-    'r', 'o', 'w',   3, 226, 135, 141,  14, 'L', 'e', 'f', 't', 'r', 'i', 'g',
-    'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 142,   2, 'L', 'l',   5,
-    226, 139, 152, 204, 184,  66, 'L', 't',  81,   1,   6, 226, 137, 170, 226,
-    131, 146,   1, 'v',   5, 226, 137, 170, 204, 184,  10, 'R', 'i', 'g', 'h',
-    't', 'a', 'r', 'r', 'o', 'w',   3, 226, 135, 143,   5, 'V', 'D', 'a', 's',
-    'h',   3, 226, 138, 175,   5, 'V', 'd', 'a', 's', 'h',   3, 226, 138, 174,
-      4, 'a', 'b', 'l', 'a',   3, 226, 136, 135,   5, 'a', 'c', 'u', 't', 'e',
-      2, 197, 132,   3, 'a', 'n', 'g',   6, 226, 136, 160, 226, 131, 146,  66,
-    'a', 'p',  75,   4,   3, 226, 137, 137,   1, 'E',   5, 226, 169, 176, 204,
-    184,   2, 'i', 'd',   5, 226, 137, 139, 204, 184,   2, 'o', 's',   2, 197,
-    137,   4, 'p', 'r', 'o', 'x',   3, 226, 137, 137,  68, 'a', 't', 'u', 'r',
-     78,   1,   3, 226, 153, 174,  66, 'a', 'l',   1,   1,   3, 226, 153, 174,
-      1, 's',   3, 226, 132, 149, 131, 'b', 's', 'p',   2, 194, 160,  68, 'b',
-    'u', 'm', 'p',  78,   1,   5, 226, 137, 142, 204, 184,   1, 'e',   5, 226,
-    137, 143, 204, 184,   3, 'c', 'a', 'p',   3, 226, 169, 131,   5, 'c', 'a',
-    'r', 'o', 'n',   2, 197, 136,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 134,
-     68, 'c', 'o', 'n', 'g',  75,   1,   3, 226, 137, 135,   3, 'd', 'o', 't',
-      5, 226, 169, 173, 204, 184,   3, 'c', 'u', 'p',   3, 226, 169, 130,   2,
-    'c', 'y',   2, 208, 189,   4, 'd', 'a', 's', 'h',   3, 226, 128, 147,  65,
-    'e',  72,   8,   3, 226, 137, 160,   3, 'A', 'r', 'r',   3, 226, 135, 151,
-      4, 'a', 'r', 'h', 'k',   3, 226, 164, 164,  67, 'a', 'r', 'r',   6,   1,
-      3, 226, 134, 151,   2, 'o', 'w',   3, 226, 134, 151,   3, 'd', 'o', 't',
-      5, 226, 137, 144, 204, 184,   4, 'q', 'u', 'i', 'v',   3, 226, 137, 162,
-      4, 's', 'e', 'a', 'r',   3, 226, 164, 168,   3, 's', 'i', 'm',   5, 226,
-    137, 130, 204, 184,  68, 'x', 'i', 's', 't',   2,   1,   3, 226, 136, 132,
-      1, 's',   3, 226, 136, 132,   2, 'f', 'r',   4, 240, 157, 148, 171,   2,
-    'g', 'E',   5, 226, 137, 167, 204, 184,  66, 'g', 'e',  79,   2,   3, 226,
-    137, 177,  65, 'q',   2,   2,   3, 226, 137, 177,   1, 'q',   5, 226, 137,
-    167, 204, 184,   5, 's', 'l', 'a', 'n', 't',   5, 226, 169, 190, 204, 184,
-      1, 's',   5, 226, 169, 190, 204, 184,   4, 'g', 's', 'i', 'm',   3, 226,
-    137, 181,  66, 'g', 't',  81,   1,   3, 226, 137, 175,   1, 'r',   3, 226,
-    137, 175,   4, 'h', 'A', 'r', 'r',   3, 226, 135, 142,   4, 'h', 'a', 'r',
-    'r',   3, 226, 134, 174,   4, 'h', 'p', 'a', 'r',   3, 226, 171, 178,  65,
-    'i',  78,   2,   3, 226, 136, 139,  65, 's',   2,   1,   3, 226, 139, 188,
-      1, 'd',   3, 226, 139, 186,   1, 'v',   3, 226, 136, 139,   3, 'j', 'c',
-    'y',   2, 209, 154,   4, 'l', 'A', 'r', 'r',   3, 226, 135, 141,   2, 'l',
-    'E',   5, 226, 137, 166, 204, 184,   4, 'l', 'a', 'r', 'r',   3, 226, 134,
-    154,   3, 'l', 'd', 'r',   3, 226, 128, 165,  66, 'l', 'e',  75,   4,   3,
-    226, 137, 176,   7, 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 154,
-     12, 'f', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226,
-    134, 174,  65, 'q',   2,   2,   3, 226, 137, 176,   1, 'q',   5, 226, 137,
-    166, 204, 184,   5, 's', 'l', 'a', 'n', 't',   5, 226, 169, 189, 204, 184,
-     65, 's',   3,   1,   5, 226, 169, 189, 204, 184,   1, 's',   3, 226, 137,
-    174,   4, 'l', 's', 'i', 'm',   3, 226, 137, 180,  66, 'l', 't',  80,   1,
-      3, 226, 137, 174,  66, 'r', 'i',   1,   1,   3, 226, 139, 170,   1, 'e',
-      3, 226, 139, 172,   3, 'm', 'i', 'd',   3, 226, 136, 164,   3, 'o', 'p',
-    'f',   4, 240, 157, 149, 159, 194, 'o', 't',  79,   2,   2, 194, 172,  66,
-    'i', 'n',   2,   5,   3, 226, 136, 137,   1, 'E',   5, 226, 139, 185, 204,
-    184,   3, 'd', 'o', 't',   5, 226, 139, 181, 204, 184,   2, 'v', 'a',   3,
-    226, 136, 137,   2, 'v', 'b',   3, 226, 139, 183,   2, 'v', 'c',   3, 226,
-    139, 182,  66, 'n', 'i',   6,   3,   3, 226, 136, 140,   2, 'v', 'a',   3,
-    226, 136, 140,   2, 'v', 'b',   3, 226, 139, 190,   2, 'v', 'c',   3, 226,
-    139, 189,  67, 'p', 'a', 'r',  88,   3,   3, 226, 136, 166,   5, 'a', 'l',
-    'l', 'e', 'l',   3, 226, 136, 166,   2, 's', 'l',   6, 226, 171, 189, 226,
-    131, 165,   1, 't',   5, 226, 136, 130, 204, 184,   6, 'p', 'o', 'l', 'i',
-    'n', 't',   3, 226, 168, 148,  66, 'p', 'r',  89,   2,   3, 226, 138, 128,
-      3, 'c', 'u', 'e',   3, 226, 139, 160,  65, 'e',   1,   1,   5, 226, 170,
-    175, 204, 184,  65, 'c',   1,   1,   3, 226, 138, 128,   2, 'e', 'q',   5,
-    226, 170, 175, 204, 184,   4, 'r', 'A', 'r', 'r',   3, 226, 135, 143,  68,
-    'r', 'a', 'r', 'r',  91,   2,   3, 226, 134, 155,   1, 'c',   5, 226, 164,
-    179, 204, 184,   1, 'w',   5, 226, 134, 157, 204, 184,  10, 'r', 'i', 'g',
-    'h', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134, 155,  68, 'r', 't', 'r',
-    'i',  91,   1,   3, 226, 139, 171,   1, 'e',   3, 226, 139, 173,  66, 's',
-    'c',  91,   3,   3, 226, 138, 129,   3, 'c', 'u', 'e',   3, 226, 139, 161,
-      1, 'e',   5, 226, 170, 176, 204, 184,   1, 'r',   4, 240, 157, 147, 131,
-      8, 's', 'h', 'o', 'r', 't', 'm', 'i', 'd',   3, 226, 136, 164,  13, 's',
-    'h', 'o', 'r', 't', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l',   3, 226, 136,
-    166,  67, 's', 'i', 'm',  91,   1,   3, 226, 137, 129,  65, 'e',   1,   1,
-      3, 226, 137, 132,   1, 'q',   3, 226, 137, 132,   4, 's', 'm', 'i', 'd',
-      3, 226, 136, 164,   4, 's', 'p', 'a', 'r',   3, 226, 136, 166,   6, 's',
-    'q', 's', 'u', 'b', 'e',   3, 226, 139, 162,   6, 's', 'q', 's', 'u', 'p',
-    'e',   3, 226, 139, 163,  67, 's', 'u', 'b',  88,   3,   3, 226, 138, 132,
-      1, 'E',   5, 226, 171, 133, 204, 184,   1, 'e',   3, 226, 138, 136,  67,
-    's', 'e', 't',   1,   1,   6, 226, 138, 130, 226, 131, 146,  66, 'e', 'q',
-      1,   1,   3, 226, 138, 136,   1, 'q',   5, 226, 171, 133, 204, 184,  68,
-    's', 'u', 'c', 'c',  92,   1,   3, 226, 138, 129,   2, 'e', 'q',   5, 226,
-    170, 176, 204, 184,  67, 's', 'u', 'p',  92,   3,   3, 226, 138, 133,   1,
-    'E',   5, 226, 171, 134, 204, 184,   1, 'e',   3, 226, 138, 137,  67, 's',
-    'e', 't',   1,   1,   6, 226, 138, 131, 226, 131, 146,  66, 'e', 'q',   1,
-      1,   3, 226, 138, 137,   1, 'q',   5, 226, 171, 134, 204, 184,   3, 't',
-    'g', 'l',   3, 226, 137, 185, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 177,
-      3, 't', 'l', 'g',   3, 226, 137, 184,  76, 't', 'r', 'i', 'a', 'n', 'g',
-    'l', 'e', 'l', 'e', 'f', 't',  93,   1,   3, 226, 139, 170,   2, 'e', 'q',
-      3, 226, 139, 172,  77, 't', 'r', 'i', 'a', 'n', 'g', 'l', 'e', 'r', 'i',
-    'g', 'h', 't',  93,   1,   3, 226, 139, 171,   2, 'e', 'q',   3, 226, 139,
-    173,  65, 'u',  93,   1,   2, 206, 189,  65, 'm',   1,   2,   1, '#',   3,
-    'e', 'r', 'o',   3, 226, 132, 150,   2, 's', 'p',   3, 226, 128, 135,   5,
-    'v', 'D', 'a', 's', 'h',   3, 226, 138, 173,   5, 'v', 'H', 'a', 'r', 'r',
-      3, 226, 164, 132,   3, 'v', 'a', 'p',   6, 226, 137, 141, 226, 131, 146,
-      5, 'v', 'd', 'a', 's', 'h',   3, 226, 138, 172,   3, 'v', 'g', 'e',   6,
-    226, 137, 165, 226, 131, 146,   3, 'v', 'g', 't',   4, '>', 226, 131, 146,
-      6, 'v', 'i', 'n', 'f', 'i', 'n',   3, 226, 167, 158,   5, 'v', 'l', 'A',
-    'r', 'r',   3, 226, 164, 130,   3, 'v', 'l', 'e',   6, 226, 137, 164, 226,
-    131, 146,  67, 'v', 'l', 't',  86,   1,   4, '<', 226, 131, 146,   3, 'r',
-    'i', 'e',   6, 226, 138, 180, 226, 131, 146,   5, 'v', 'r', 'A', 'r', 'r',
-      3, 226, 164, 131,   6, 'v', 'r', 't', 'r', 'i', 'e',   6, 226, 138, 181,
-    226, 131, 146,   4, 'v', 's', 'i', 'm',   6, 226, 136, 188, 226, 131, 146,
-      4, 'w', 'A', 'r', 'r',   3, 226, 135, 150,   5, 'w', 'a', 'r', 'h', 'k',
-      3, 226, 164, 163,  68, 'w', 'a', 'r', 'r',  81,   1,   3, 226, 134, 150,
-      2, 'o', 'w',   3, 226, 134, 150,   5, 'w', 'n', 'e', 'a', 'r',   3, 226,
-    164, 167,   1, 'S',   3, 226, 147, 136, 133, 'a', 'c', 'u', 't', 'e',   2,
-    195, 179,   3, 'a', 's', 't',   3, 226, 138, 155,  67, 'c', 'i', 'r',  38,
-      1,   3, 226, 138, 154, 129, 'c',   2, 195, 180,   2, 'c', 'y',   2, 208,
-    190,   4, 'd', 'a', 's', 'h',   3, 226, 138, 157,   5, 'd', 'b', 'l', 'a',
-    'c',   2, 197, 145,   3, 'd', 'i', 'v',   3, 226, 168, 184,   3, 'd', 'o',
-    't',   3, 226, 138, 153,   5, 'd', 's', 'o', 'l', 'd',   3, 226, 166, 188,
-      4, 'e', 'l', 'i', 'g',   2, 197, 147,   4, 'f', 'c', 'i', 'r',   3, 226,
-    166, 191,   2, 'f', 'r',   4, 240, 157, 148, 172,   3, 'g', 'o', 'n',   2,
-    203, 155, 133, 'g', 'r', 'a', 'v', 'e',   2, 195, 178,   2, 'g', 't',   3,
-    226, 167, 129,   4, 'h', 'b', 'a', 'r',   3, 226, 166, 181,   2, 'h', 'm',
-      2, 206, 169,   3, 'i', 'n', 't',   3, 226, 136, 174,   4, 'l', 'a', 'r',
-    'r',   3, 226, 134, 186,   4, 'l', 'c', 'i', 'r',   3, 226, 166, 190,   6,
-    'l', 'c', 'r', 'o', 's', 's',   3, 226, 166, 187,   4, 'l', 'i', 'n', 'e',
-      3, 226, 128, 190,   2, 'l', 't',   3, 226, 167, 128,   4, 'm', 'a', 'c',
-    'r',   2, 197, 141,   4, 'm', 'e', 'g', 'a',   2, 207, 137,   6, 'm', 'i',
-    'c', 'r', 'o', 'n',   2, 206, 191,   3, 'm', 'i', 'd',   3, 226, 166, 182,
-      5, 'm', 'i', 'n', 'u', 's',   3, 226, 138, 150,   3, 'o', 'p', 'f',   4,
-    240, 157, 149, 160,   3, 'p', 'a', 'r',   3, 226, 166, 183,   4, 'p', 'e',
-    'r', 'p',   3, 226, 166, 185,   4, 'p', 'l', 'u', 's',   3, 226, 138, 149,
-     65, 'r',   9,   6,   3, 226, 136, 168,   3, 'a', 'r', 'r',   3, 226, 134,
-    187,  65, 'd',   5,   3,   3, 226, 169, 157,  66, 'e', 'r',   3,   1,   3,
-    226, 132, 180,   2, 'o', 'f',   3, 226, 132, 180, 129, 'f',   2, 194, 170,
-    129, 'm',   2, 194, 186,   4, 'i', 'g', 'o', 'f',   3, 226, 138, 182,   2,
-    'o', 'r',   3, 226, 169, 150,   5, 's', 'l', 'o', 'p', 'e',   3, 226, 169,
-    151,   1, 'v',   3, 226, 169, 155,   3, 's', 'c', 'r',   3, 226, 132, 180,
-    133, 's', 'l', 'a', 's', 'h',   2, 195, 184,   3, 's', 'o', 'l',   3, 226,
-    138, 152, 133, 't', 'i', 'l', 'd', 'e',   2, 195, 181,  69, 't', 'i', 'm',
-    'e', 's',  14,   1,   3, 226, 138, 151,   2, 'a', 's',   3, 226, 168, 182,
-    131, 'u', 'm', 'l',   2, 195, 182,   4, 'v', 'b', 'a', 'r',   3, 226, 140,
-    189,  66, 'a', 'r',  23,   4,   3, 226, 136, 165, 193, 'a',   4,   1,   2,
-    194, 182,   4, 'l', 'l', 'e', 'l',   3, 226, 136, 165,   3, 's', 'i', 'm',
-      3, 226, 171, 179,   2, 's', 'l',   3, 226, 171, 189,   1, 't',   3, 226,
-    136, 130,   2, 'c', 'y',   2, 208, 191,   5, 'e', 'r', 'c', 'n', 't',   1,
-    '%',   5, 'e', 'r', 'i', 'o', 'd',   1, '.',   5, 'e', 'r', 'm', 'i', 'l',
-      3, 226, 128, 176,   3, 'e', 'r', 'p',   3, 226, 138, 165,   6, 'e', 'r',
-    't', 'e', 'n', 'k',   3, 226, 128, 177,   2, 'f', 'r',   4, 240, 157, 148,
-    173,  66, 'h', 'i',  20,   1,   2, 207, 134,   1, 'v',   2, 207, 149,   5,
-    'h', 'm', 'm', 'a', 't',   3, 226, 132, 179,   4, 'h', 'o', 'n', 'e',   3,
-    226, 152, 142,  65, 'i',  18,   2,   2, 207, 128,   7, 't', 'c', 'h', 'f',
-    'o', 'r', 'k',   3, 226, 139, 148,   1, 'v',   2, 207, 150,  69, 'l', 'a',
-    'n', 'c', 'k',  19,   1,   3, 226, 132, 143,   1, 'h',   3, 226, 132, 142,
-      5, 'l', 'a', 'n', 'k', 'v',   3, 226, 132, 143,  67, 'l', 'u', 's',  18,
-      9,   1, '+',   4, 'a', 'c', 'i', 'r',   3, 226, 168, 163,   1, 'b',   3,
-    226, 138, 158,   3, 'c', 'i', 'r',   3, 226, 168, 162,   2, 'd', 'o',   3,
-    226, 136, 148,   2, 'd', 'u',   3, 226, 168, 165,   1, 'e',   3, 226, 169,
-    178, 130, 'm', 'n',   2, 194, 177,   3, 's', 'i', 'm',   3, 226, 168, 166,
-      3, 't', 'w', 'o',   3, 226, 168, 167,   1, 'm',   2, 194, 177,   7, 'o',
-    'i', 'n', 't', 'i', 'n', 't',   3, 226, 168, 149,   3, 'o', 'p', 'f',   4,
-    240, 157, 149, 161, 132, 'o', 'u', 'n', 'd',   2, 194, 163,  65, 'r',  22,
-     15,   3, 226, 137, 186,   1, 'E',   3, 226, 170, 179,   2, 'a', 'p',   3,
-    226, 170, 183,   3, 'c', 'u', 'e',   3, 226, 137, 188,  65, 'e',  12,   1,
-      3, 226, 170, 175,  65, 'c',   1,   7,   3, 226, 137, 186,   6, 'a', 'p',
-    'p', 'r', 'o', 'x',   3, 226, 170, 183,   7, 'c', 'u', 'r', 'l', 'y', 'e',
-    'q',   3, 226, 137, 188,   2, 'e', 'q',   3, 226, 170, 175,   7, 'n', 'a',
-    'p', 'p', 'r', 'o', 'x',   3, 226, 170, 185,   4, 'n', 'e', 'q', 'q',   3,
-    226, 170, 181,   4, 'n', 's', 'i', 'm',   3, 226, 139, 168,   3, 's', 'i',
-    'm',   3, 226, 137, 190,  67, 'i', 'm', 'e',  19,   1,   3, 226, 128, 178,
-      1, 's',   3, 226, 132, 153,   2, 'n', 'E',   3, 226, 170, 181,   3, 'n',
-    'a', 'p',   3, 226, 170, 185,   4, 'n', 's', 'i', 'm',   3, 226, 139, 168,
-      2, 'o', 'd',   3, 226, 136, 143,   6, 'o', 'f', 'a', 'l', 'a', 'r',   3,
-    226, 140, 174,   6, 'o', 'f', 'l', 'i', 'n', 'e',   3, 226, 140, 146,   6,
-    'o', 'f', 's', 'u', 'r', 'f',   3, 226, 140, 147,  66, 'o', 'p',  12,   1,
-      3, 226, 136, 157,   2, 't', 'o',   3, 226, 136, 157,   3, 's', 'i', 'm',
-      3, 226, 137, 190,   4, 'u', 'r', 'e', 'l',   3, 226, 138, 176,   3, 's',
-    'c', 'r',   4, 240, 157, 147, 133,   2, 's', 'i',   2, 207, 136,   5, 'u',
-    'n', 'c', 's', 'p',   3, 226, 128, 136,   2, 'f', 'r',   4, 240, 157, 148,
-    174,   3, 'i', 'n', 't',   3, 226, 168, 140,   3, 'o', 'p', 'f',   4, 240,
-    157, 149, 162,   5, 'p', 'r', 'i', 'm', 'e',   3, 226, 129, 151,   3, 's',
-    'c', 'r',   4, 240, 157, 147, 134,  10, 'u', 'a', 't', 'e', 'r', 'n', 'i',
-    'o', 'n', 's',   3, 226, 132, 141,   6, 'u', 'a', 't', 'i', 'n', 't',   3,
-    226, 168, 150,  68, 'u', 'e', 's', 't',   2,   1,   1, '?',   2, 'e', 'q',
-      3, 226, 137, 159, 131, 'u', 'o', 't',   1, '"',   4, 'A', 'a', 'r', 'r',
-      3, 226, 135, 155,   3, 'A', 'r', 'r',   3, 226, 135, 146,   5, 'A', 't',
-    'a', 'i', 'l',   3, 226, 164, 156,   4, 'B', 'a', 'r', 'r',   3, 226, 164,
-    143,   3, 'H', 'a', 'r',   3, 226, 165, 164,   3, 'a', 'c', 'e',   5, 226,
-    136, 189, 204, 177,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 149,   4, 'a',
-    'd', 'i', 'c',   3, 226, 136, 154,   7, 'a', 'e', 'm', 'p', 't', 'y', 'v',
-      3, 226, 166, 179,  67, 'a', 'n', 'g',  65,   3,   3, 226, 159, 169,   1,
-    'd',   3, 226, 166, 146,   1, 'e',   3, 226, 166, 165,   2, 'l', 'e',   3,
-    226, 159, 169, 132, 'a', 'q', 'u', 'o',   2, 194, 187,  67, 'a', 'r', 'r',
-     66,  10,   3, 226, 134, 146,   2, 'a', 'p',   3, 226, 165, 181,  65, 'b',
-      9,   1,   3, 226, 135, 165,   2, 'f', 's',   3, 226, 164, 160,   1, 'c',
-      3, 226, 164, 179,   2, 'f', 's',   3, 226, 164, 158,   2, 'h', 'k',   3,
-    226, 134, 170,   2, 'l', 'p',   3, 226, 134, 172,   2, 'p', 'l',   3, 226,
-    165, 133,   3, 's', 'i', 'm',   3, 226, 165, 180,   2, 't', 'l',   3, 226,
-    134, 163,   1, 'w',   3, 226, 134, 157,   5, 'a', 't', 'a', 'i', 'l',   3,
-    226, 164, 154,  68, 'a', 't', 'i', 'o',  75,   1,   3, 226, 136, 182,   4,
-    'n', 'a', 'l', 's',   3, 226, 132, 154,   4, 'b', 'a', 'r', 'r',   3, 226,
-    164, 141,   4, 'b', 'b', 'r', 'k',   3, 226, 157, 179,   5, 'b', 'r', 'a',
-    'c', 'e',   1, '}',   5, 'b', 'r', 'a', 'c', 'k',   1, ']',   4, 'b', 'r',
-    'k', 'e',   3, 226, 166, 140,   6, 'b', 'r', 'k', 's', 'l', 'd',   3, 226,
-    166, 142,   6, 'b', 'r', 'k', 's', 'l', 'u',   3, 226, 166, 144,   5, 'c',
-    'a', 'r', 'o', 'n',   2, 197, 153,   5, 'c', 'e', 'd', 'i', 'l',   2, 197,
-    151,   4, 'c', 'e', 'i', 'l',   3, 226, 140, 137,   3, 'c', 'u', 'b',   1,
-    '}',   2, 'c', 'y',   2, 209, 128,   3, 'd', 'c', 'a',   3, 226, 164, 183,
-      6, 'd', 'l', 'd', 'h', 'a', 'r',   3, 226, 165, 169,  68, 'd', 'q', 'u',
-    'o',  61,   1,   3, 226, 128, 157,   1, 'r',   3, 226, 128, 157,   3, 'd',
-    's', 'h',   3, 226, 134, 179,  67, 'e', 'a', 'l',  60,   3,   3, 226, 132,
-    156,   3, 'i', 'n', 'e',   3, 226, 132, 155,   4, 'p', 'a', 'r', 't',   3,
-    226, 132, 156,   1, 's',   3, 226, 132, 157,   3, 'e', 'c', 't',   3, 226,
-    150, 173, 130, 'e', 'g',   2, 194, 174,   5, 'f', 'i', 's', 'h', 't',   3,
-    226, 165, 189,   5, 'f', 'l', 'o', 'o', 'r',   3, 226, 140, 139,   2, 'f',
-    'r',   4, 240, 157, 148, 175,   4, 'h', 'a', 'r', 'd',   3, 226, 135, 129,
-     68, 'h', 'a', 'r', 'u',  56,   1,   3, 226, 135, 128,   1, 'l',   3, 226,
-    165, 172,  66, 'h', 'o',  56,   1,   2, 207, 129,   1, 'v',   2, 207, 177,
-     73, 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w',  56,   1,   3, 226, 134,
-    146,   4, 't', 'a', 'i', 'l',   3, 226, 134, 163,  15, 'i', 'g', 'h', 't',
-    'h', 'a', 'r', 'p', 'o', 'o', 'n', 'd', 'o', 'w', 'n',   3, 226, 135, 129,
-     13, 'i', 'g', 'h', 't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 'u', 'p',   3,
-    226, 135, 128,  14, 'i', 'g', 'h', 't', 'l', 'e', 'f', 't', 'a', 'r', 'r',
-    'o', 'w', 's',   3, 226, 135, 132,  16, 'i', 'g', 'h', 't', 'l', 'e', 'f',
-    't', 'h', 'a', 'r', 'p', 'o', 'o', 'n', 's',   3, 226, 135, 140,  15, 'i',
-    'g', 'h', 't', 'r', 'i', 'g', 'h', 't', 'a', 'r', 'r', 'o', 'w', 's',   3,
-    226, 135, 137,  14, 'i', 'g', 'h', 't', 's', 'q', 'u', 'i', 'g', 'a', 'r',
-    'r', 'o', 'w',   3, 226, 134, 157,  14, 'i', 'g', 'h', 't', 't', 'h', 'r',
-    'e', 'e', 't', 'i', 'm', 'e', 's',   3, 226, 139, 140,   3, 'i', 'n', 'g',
-      2, 203, 154,  11, 'i', 's', 'i', 'n', 'g', 'd', 'o', 't', 's', 'e', 'q',
-      3, 226, 137, 147,   4, 'l', 'a', 'r', 'r',   3, 226, 135, 132,   4, 'l',
-    'h', 'a', 'r',   3, 226, 135, 140,   2, 'l', 'm',   3, 226, 128, 143,  69,
-    'm', 'o', 'u', 's', 't',  44,   1,   3, 226, 142, 177,   4, 'a', 'c', 'h',
-    'e',   3, 226, 142, 177,   4, 'n', 'm', 'i', 'd',   3, 226, 171, 174,   4,
-    'o', 'a', 'n', 'g',   3, 226, 159, 173,   4, 'o', 'a', 'r', 'r',   3, 226,
-    135, 190,   4, 'o', 'b', 'r', 'k',   3, 226, 159, 167,   4, 'o', 'p', 'a',
-    'r',   3, 226, 166, 134,   3, 'o', 'p', 'f',   4, 240, 157, 149, 163,   5,
-    'o', 'p', 'l', 'u', 's',   3, 226, 168, 174,   6, 'o', 't', 'i', 'm', 'e',
-    's',   3, 226, 168, 181,  67, 'p', 'a', 'r',  36,   1,   1, ')',   2, 'g',
-    't',   3, 226, 166, 148,   7, 'p', 'p', 'o', 'l', 'i', 'n', 't',   3, 226,
-    168, 146,   4, 'r', 'a', 'r', 'r',   3, 226, 135, 137,   5, 's', 'a', 'q',
-    'u', 'o',   3, 226, 128, 186,   3, 's', 'c', 'r',   4, 240, 157, 147, 135,
-      2, 's', 'h',   3, 226, 134, 177,   3, 's', 'q', 'b',   1, ']',  68, 's',
-    'q', 'u', 'o',  30,   1,   3, 226, 128, 153,   1, 'r',   3, 226, 128, 153,
-      5, 't', 'h', 'r', 'e', 'e',   3, 226, 139, 140,   5, 't', 'i', 'm', 'e',
-    's',   3, 226, 139, 138,  67, 't', 'r', 'i',  28,   3,   3, 226, 150, 185,
-      1, 'e',   3, 226, 138, 181,   1, 'f',   3, 226, 150, 184,   4, 'l', 't',
-    'r', 'i',   3, 226, 167, 142,   6, 'u', 'l', 'u', 'h', 'a', 'r',   3, 226,
-    165, 168,   1, 'x',   3, 226, 132, 158,   5, 'a', 'c', 'u', 't', 'e',   2,
-    197, 155,   4, 'b', 'q', 'u', 'o',   3, 226, 128, 154,  65, 'c',  56,  12,
-      3, 226, 137, 187,   1, 'E',   3, 226, 170, 180,   2, 'a', 'p',   3, 226,
-    170, 184,   4, 'a', 'r', 'o', 'n',   2, 197, 161,   3, 'c', 'u', 'e',   3,
-    226, 137, 189,  65, 'e',   8,   1,   3, 226, 170, 176,   3, 'd', 'i', 'l',
-      2, 197, 159,   3, 'i', 'r', 'c',   2, 197, 157,   2, 'n', 'E',   3, 226,
-    170, 182,   3, 'n', 'a', 'p',   3, 226, 170, 186,   4, 'n', 's', 'i', 'm',
-      3, 226, 139, 169,   6, 'p', 'o', 'l', 'i', 'n', 't',   3, 226, 168, 147,
-      3, 's', 'i', 'm',   3, 226, 137, 191,   1, 'y',   2, 209, 129,  67, 'd',
-    'o', 't',  68,   2,   3, 226, 139, 133,   1, 'b',   3, 226, 138, 161,   1,
-    'e',   3, 226, 169, 166,   4, 'e', 'A', 'r', 'r',   3, 226, 135, 152,   5,
-    'e', 'a', 'r', 'h', 'k',   3, 226, 164, 165,  68, 'e', 'a', 'r', 'r',  67,
-      1,   3, 226, 134, 152,   2, 'o', 'w',   3, 226, 134, 152, 131, 'e', 'c',
-    't',   2, 194, 167,   3, 'e', 'm', 'i',   1, ';',   5, 'e', 's', 'w', 'a',
-    'r',   3, 226, 164, 169,   7, 'e', 't', 'm', 'i', 'n', 'u', 's',   3, 226,
-    136, 150,   4, 'e', 't', 'm', 'n',   3, 226, 136, 150,   3, 'e', 'x', 't',
-      3, 226, 156, 182,  66, 'f', 'r',  61,   1,   4, 240, 157, 148, 176,   3,
-    'o', 'w', 'n',   3, 226, 140, 162,   4, 'h', 'a', 'r', 'p',   3, 226, 153,
-    175,   5, 'h', 'c', 'h', 'c', 'y',   2, 209, 137,   3, 'h', 'c', 'y',   2,
-    209, 136,   7, 'h', 'o', 'r', 't', 'm', 'i', 'd',   3, 226, 136, 163,  12,
-    'h', 'o', 'r', 't', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l',   3, 226, 136,
-    165, 130, 'h', 'y',   2, 194, 173,  68, 'i', 'g', 'm', 'a',  55,   2,   2,
-    207, 131,   1, 'f',   2, 207, 130,   1, 'v',   2, 207, 130,  66, 'i', 'm',
-     56,   7,   3, 226, 136, 188,   3, 'd', 'o', 't',   3, 226, 169, 170,  65,
-    'e',   6,   1,   3, 226, 137, 131,   1, 'q',   3, 226, 137, 131,  65, 'g',
-      6,   1,   3, 226, 170, 158,   1, 'E',   3, 226, 170, 160,  65, 'l',   6,
-      1,   3, 226, 170, 157,   1, 'E',   3, 226, 170, 159,   2, 'n', 'e',   3,
-    226, 137, 134,   4, 'p', 'l', 'u', 's',   3, 226, 168, 164,   4, 'r', 'a',
-    'r', 'r',   3, 226, 165, 178,   4, 'l', 'a', 'r', 'r',   3, 226, 134, 144,
-     12, 'm', 'a', 'l', 'l', 's', 'e', 't', 'm', 'i', 'n', 'u', 's',   3, 226,
-    136, 150,   5, 'm', 'a', 's', 'h', 'p',   3, 226, 168, 179,   7, 'm', 'e',
-    'p', 'a', 'r', 's', 'l',   3, 226, 167, 164,   3, 'm', 'i', 'd',   3, 226,
-    136, 163,   4, 'm', 'i', 'l', 'e',   3, 226, 140, 163,  66, 'm', 't',  59,
-      1,   3, 226, 170, 170,  65, 'e',   1,   1,   3, 226, 170, 172,   1, 's',
-      6, 226, 170, 172, 239, 184, 128,   5, 'o', 'f', 't', 'c', 'y',   2, 209,
-    140,  66, 'o', 'l',  59,   1,   1, '/',  65, 'b',   1,   1,   3, 226, 167,
-    132,   2, 'a', 'r',   3, 226, 140, 191,   3, 'o', 'p', 'f',   4, 240, 157,
-    149, 164,  69, 'p', 'a', 'd', 'e', 's',  59,   1,   3, 226, 153, 160,   3,
-    'u', 'i', 't',   3, 226, 153, 160,   3, 'p', 'a', 'r',   3, 226, 136, 165,
-     68, 'q', 'c', 'a', 'p',  58,   1,   3, 226, 138, 147,   1, 's',   6, 226,
-    138, 147, 239, 184, 128,  68, 'q', 'c', 'u', 'p',  58,   1,   3, 226, 138,
-    148,   1, 's',   6, 226, 138, 148, 239, 184, 128,  68, 'q', 's', 'u', 'b',
-     58,   2,   3, 226, 138, 143,   1, 'e',   3, 226, 138, 145,  67, 's', 'e',
-    't',   1,   1,   3, 226, 138, 143,   2, 'e', 'q',   3, 226, 138, 145,  68,
-    'q', 's', 'u', 'p',  60,   2,   3, 226, 138, 144,   1, 'e',   3, 226, 138,
-    146,  67, 's', 'e', 't',   1,   1,   3, 226, 138, 144,   2, 'e', 'q',   3,
-    226, 138, 146,  66, 'q', 'u',  62,   3,   3, 226, 150, 161,   3, 'a', 'r',
-    'e',   3, 226, 150, 161,   3, 'a', 'r', 'f',   3, 226, 150, 170,   1, 'f',
-      3, 226, 150, 170,   4, 'r', 'a', 'r', 'r',   3, 226, 134, 146,   3, 's',
-    'c', 'r',   4, 240, 157, 147, 136,   5, 's', 'e', 't', 'm', 'n',   3, 226,
-    136, 150,   5, 's', 'm', 'i', 'l', 'e',   3, 226, 140, 163,   5, 's', 't',
-    'a', 'r', 'f',   3, 226, 139, 134,  67, 't', 'a', 'r',  59,   1,   3, 226,
-    152, 134,   1, 'f',   3, 226, 152, 133,  14, 't', 'r', 'a', 'i', 'g', 'h',
-    't', 'e', 'p', 's', 'i', 'l', 'o', 'n',   2, 207, 181,  10, 't', 'r', 'a',
-    'i', 'g', 'h', 't', 'p', 'h', 'i',   2, 207, 149,   4, 't', 'r', 'n', 's',
-      2, 194, 175,  66, 'u', 'b',  56,  12,   3, 226, 138, 130,   1, 'E',   3,
-    226, 171, 133,   3, 'd', 'o', 't',   3, 226, 170, 189,  65, 'e',  10,   1,
-      3, 226, 138, 134,   3, 'd', 'o', 't',   3, 226, 171, 131,   4, 'm', 'u',
-    'l', 't',   3, 226, 171, 129,   2, 'n', 'E',   3, 226, 171, 139,   2, 'n',
-    'e',   3, 226, 138, 138,   4, 'p', 'l', 'u', 's',   3, 226, 170, 191,   4,
-    'r', 'a', 'r', 'r',   3, 226, 165, 185,  67, 's', 'e', 't',   5,   2,   3,
-    226, 138, 130,  66, 'e', 'q',   2,   1,   3, 226, 138, 134,   1, 'q',   3,
-    226, 171, 133,  67, 'n', 'e', 'q',   2,   1,   3, 226, 138, 138,   1, 'q',
-      3, 226, 171, 139,   3, 's', 'i', 'm',   3, 226, 171, 135,   3, 's', 'u',
-    'b',   3, 226, 171, 149,   3, 's', 'u', 'p',   3, 226, 171, 147,  67, 'u',
-    'c', 'c',  72,   7,   3, 226, 137, 187,   6, 'a', 'p', 'p', 'r', 'o', 'x',
-      3, 226, 170, 184,   7, 'c', 'u', 'r', 'l', 'y', 'e', 'q',   3, 226, 137,
-    189,   2, 'e', 'q',   3, 226, 170, 176,   7, 'n', 'a', 'p', 'p', 'r', 'o',
-    'x',   3, 226, 170, 186,   4, 'n', 'e', 'q', 'q',   3, 226, 170, 182,   4,
-    'n', 's', 'i', 'm',   3, 226, 139, 169,   3, 's', 'i', 'm',   3, 226, 137,
-    191,   2, 'u', 'm',   3, 226, 136, 145,   3, 'u', 'n', 'g',   3, 226, 153,
-    170,  66, 'u', 'p',  76,  18,   3, 226, 138, 131, 129, '1',   2, 194, 185,
-    129, '2',   2, 194, 178, 129, '3',   2, 194, 179,   1, 'E',   3, 226, 171,
-    134,   3, 'd', 'o', 't',   3, 226, 170, 190,   4, 'd', 's', 'u', 'b',   3,
-    226, 171, 152,  65, 'e',  12,   1,   3, 226, 138, 135,   3, 'd', 'o', 't',
-      3, 226, 171, 132,   4, 'h', 's', 'o', 'l',   3, 226, 159, 137,   4, 'h',
-    's', 'u', 'b',   3, 226, 171, 151,   4, 'l', 'a', 'r', 'r',   3, 226, 165,
-    187,   4, 'm', 'u', 'l', 't',   3, 226, 171, 130,   2, 'n', 'E',   3, 226,
-    171, 140,   2, 'n', 'e',   3, 226, 138, 139,   4, 'p', 'l', 'u', 's',   3,
-    226, 171, 128,  67, 's', 'e', 't',   5,   2,   3, 226, 138, 131,  66, 'e',
-    'q',   2,   1,   3, 226, 138, 135,   1, 'q',   3, 226, 171, 134,  67, 'n',
-    'e', 'q',   2,   1,   3, 226, 138, 139,   1, 'q',   3, 226, 171, 140,   3,
-    's', 'i', 'm',   3, 226, 171, 136,   3, 's', 'u', 'b',   3, 226, 171, 148,
-      3, 's', 'u', 'p',   3, 226, 171, 150,   4, 'w', 'A', 'r', 'r',   3, 226,
-    135, 153,   5, 'w', 'a', 'r', 'h', 'k',   3, 226, 164, 166,  68, 'w', 'a',
-    'r', 'r',  96,   1,   3, 226, 134, 153,   2, 'o', 'w',   3, 226, 134, 153,
-      5, 'w', 'n', 'w', 'a', 'r',   3, 226, 164, 170, 132, 'z', 'l', 'i', 'g',
-      2, 195, 159,   5, 'a', 'r', 'g', 'e', 't',   3, 226, 140, 150,   2, 'a',
-    'u',   2, 207, 132,   3, 'b', 'r', 'k',   3, 226, 142, 180,   5, 'c', 'a',
-    'r', 'o', 'n',   2, 197, 165,   5, 'c', 'e', 'd', 'i', 'l',   2, 197, 163,
-      2, 'c', 'y',   2, 209, 130,   3, 'd', 'o', 't',   3, 226, 131, 155,   5,
-    'e', 'l', 'r', 'e', 'c',   3, 226, 140, 149,   2, 'f', 'r',   4, 240, 157,
-    148, 177,   5, 'h', 'e', 'r', 'e', '4',   3, 226, 136, 180,   8, 'h', 'e',
-    'r', 'e', 'f', 'o', 'r', 'e',   3, 226, 136, 180,  68, 'h', 'e', 't', 'a',
-     30,   2,   2, 206, 184,   3, 's', 'y', 'm',   2, 207, 145,   1, 'v',   2,
-    207, 145,  10, 'h', 'i', 'c', 'k', 'a', 'p', 'p', 'r', 'o', 'x',   3, 226,
-    137, 136,   7, 'h', 'i', 'c', 'k', 's', 'i', 'm',   3, 226, 136, 188,   5,
-    'h', 'i', 'n', 's', 'p',   3, 226, 128, 137,   4, 'h', 'k', 'a', 'p',   3,
-    226, 137, 136,   5, 'h', 'k', 's', 'i', 'm',   3, 226, 136, 188, 132, 'h',
-    'o', 'r', 'n',   2, 195, 190,   4, 'i', 'l', 'd', 'e',   2, 203, 156, 196,
-    'i', 'm', 'e', 's',  24,   2,   2, 195, 151,  65, 'b',   2,   1,   3, 226,
-    138, 160,   2, 'a', 'r',   3, 226, 168, 177,   1, 'd',   3, 226, 168, 176,
-      3, 'i', 'n', 't',   3, 226, 136, 173,   3, 'o', 'e', 'a',   3, 226, 164,
-    168,  66, 'o', 'p',  24,   3,   3, 226, 138, 164,   3, 'b', 'o', 't',   3,
-    226, 140, 182,   3, 'c', 'i', 'r',   3, 226, 171, 177,  65, 'f',   1,   1,
-      4, 240, 157, 149, 165,   3, 'o', 'r', 'k',   3, 226, 171, 154,   3, 'o',
-    's', 'a',   3, 226, 164, 169,   5, 'p', 'r', 'i', 'm', 'e',   3, 226, 128,
-    180,   4, 'r', 'a', 'd', 'e',   3, 226, 132, 162,  71, 'r', 'i', 'a', 'n',
-    'g', 'l', 'e',  24,   4,   3, 226, 150, 181,   4, 'd', 'o', 'w', 'n',   3,
-    226, 150, 191,  68, 'l', 'e', 'f', 't',   3,   1,   3, 226, 151, 131,   2,
-    'e', 'q',   3, 226, 138, 180,   1, 'q',   3, 226, 137, 156,  69, 'r', 'i',
-    'g', 'h', 't',   2,   1,   3, 226, 150, 185,   2, 'e', 'q',   3, 226, 138,
-    181,   5, 'r', 'i', 'd', 'o', 't',   3, 226, 151, 172,   3, 'r', 'i', 'e',
-      3, 226, 137, 156,   7, 'r', 'i', 'm', 'i', 'n', 'u', 's',   3, 226, 168,
-    186,   6, 'r', 'i', 'p', 'l', 'u', 's',   3, 226, 168, 185,   4, 'r', 'i',
-    's', 'b',   3, 226, 167, 141,   6, 'r', 'i', 't', 'i', 'm', 'e',   3, 226,
-    168, 187,   7, 'r', 'p', 'e', 'z', 'i', 'u', 'm',   3, 226, 143, 162,   3,
-    's', 'c', 'r',   4, 240, 157, 147, 137,   3, 's', 'c', 'y',   2, 209, 134,
-      4, 's', 'h', 'c', 'y',   2, 209, 155,   5, 's', 't', 'r', 'o', 'k',   2,
-    197, 167,   4, 'w', 'i', 'x', 't',   3, 226, 137, 172,  15, 'w', 'o', 'h',
-    'e', 'a', 'd', 'l', 'e', 'f', 't', 'a', 'r', 'r', 'o', 'w',   3, 226, 134,
-    158,  16, 'w', 'o', 'h', 'e', 'a', 'd', 'r', 'i', 'g', 'h', 't', 'a', 'r',
-    'r', 'o', 'w',   3, 226, 134, 160,   3, 'A', 'r', 'r',   3, 226, 135, 145,
-      3, 'H', 'a', 'r',   3, 226, 165, 163, 133, 'a', 'c', 'u', 't', 'e',   2,
-    195, 186,   3, 'a', 'r', 'r',   3, 226, 134, 145,   4, 'b', 'r', 'c', 'y',
-      2, 209, 158,   5, 'b', 'r', 'e', 'v', 'e',   2, 197, 173, 132, 'c', 'i',
-    'r', 'c',   2, 195, 187,   2, 'c', 'y',   2, 209, 131,   4, 'd', 'a', 'r',
-    'r',   3, 226, 135, 133,   5, 'd', 'b', 'l', 'a', 'c',   2, 197, 177,   4,
-    'd', 'h', 'a', 'r',   3, 226, 165, 174,   5, 'f', 'i', 's', 'h', 't',   3,
-    226, 165, 190,   2, 'f', 'r',   4, 240, 157, 148, 178, 133, 'g', 'r', 'a',
-    'v', 'e',   2, 195, 185,   4, 'h', 'a', 'r', 'l',   3, 226, 134, 191,   4,
-    'h', 'a', 'r', 'r',   3, 226, 134, 190,   4, 'h', 'b', 'l', 'k',   3, 226,
-    150, 128,  69, 'l', 'c', 'o', 'r', 'n',  25,   1,   3, 226, 140, 156,   2,
-    'e', 'r',   3, 226, 140, 156,   5, 'l', 'c', 'r', 'o', 'p',   3, 226, 140,
-    143,   4, 'l', 't', 'r', 'i',   3, 226, 151, 184,   4, 'm', 'a', 'c', 'r',
-      2, 197, 171, 130, 'm', 'l',   2, 194, 168,   4, 'o', 'g', 'o', 'n',   2,
-    197, 179,   3, 'o', 'p', 'f',   4, 240, 157, 149, 166,   6, 'p', 'a', 'r',
-    'r', 'o', 'w',   3, 226, 134, 145,  10, 'p', 'd', 'o', 'w', 'n', 'a', 'r',
-    'r', 'o', 'w',   3, 226, 134, 149,  12, 'p', 'h', 'a', 'r', 'p', 'o', 'o',
-    'n', 'l', 'e', 'f', 't',   3, 226, 134, 191,  13, 'p', 'h', 'a', 'r', 'p',
-    'o', 'o', 'n', 'r', 'i', 'g', 'h', 't',   3, 226, 134, 190,   4, 'p', 'l',
-    'u', 's',   3, 226, 138, 142,  67, 'p', 's', 'i',  14,   2,   2, 207, 133,
-      1, 'h',   2, 207, 146,   3, 'l', 'o', 'n',   2, 207, 133,   9, 'p', 'u',
-    'p', 'a', 'r', 'r', 'o', 'w', 's',   3, 226, 135, 136,  69, 'r', 'c', 'o',
-    'r', 'n',  14,   1,   3, 226, 140, 157,   2, 'e', 'r',   3, 226, 140, 157,
-      5, 'r', 'c', 'r', 'o', 'p',   3, 226, 140, 142,   4, 'r', 'i', 'n', 'g',
-      2, 197, 175,   4, 'r', 't', 'r', 'i',   3, 226, 151, 185,   3, 's', 'c',
-    'r',   4, 240, 157, 147, 138,   4, 't', 'd', 'o', 't',   3, 226, 139, 176,
-      5, 't', 'i', 'l', 'd', 'e',   2, 197, 169,  67, 't', 'r', 'i',   8,   1,
-      3, 226, 150, 181,   1, 'f',   3, 226, 150, 180,   4, 'u', 'a', 'r', 'r',
-      3, 226, 135, 136, 131, 'u', 'm', 'l',   2, 195, 188,   6, 'w', 'a', 'n',
-    'g', 'l', 'e',   3, 226, 166, 167,   3, 'A', 'r', 'r',   3, 226, 135, 149,
-     67, 'B', 'a', 'r',  35,   1,   3, 226, 171, 168,   1, 'v',   3, 226, 171,
-    169,   4, 'D', 'a', 's', 'h',   3, 226, 138, 168,   5, 'a', 'n', 'g', 'r',
-    't',   3, 226, 166, 156,   9, 'a', 'r', 'e', 'p', 's', 'i', 'l', 'o', 'n',
-      2, 207, 181,   7, 'a', 'r', 'k', 'a', 'p', 'p', 'a',   2, 207, 176,   9,
-    'a', 'r', 'n', 'o', 't', 'h', 'i', 'n', 'g',   3, 226, 136, 133,   5, 'a',
-    'r', 'p', 'h', 'i',   2, 207, 149,   4, 'a', 'r', 'p', 'i',   2, 207, 150,
-      8, 'a', 'r', 'p', 'r', 'o', 'p', 't', 'o',   3, 226, 136, 157,  67, 'a',
-    'r', 'r',  27,   1,   3, 226, 134, 149,   2, 'h', 'o',   2, 207, 177,   7,
-    'a', 'r', 's', 'i', 'g', 'm', 'a',   2, 207, 130,  75, 'a', 'r', 's', 'u',
-    'b', 's', 'e', 't', 'n', 'e', 'q',  26,   1,   6, 226, 138, 138, 239, 184,
-    128,   1, 'q',   6, 226, 171, 139, 239, 184, 128,  75, 'a', 'r', 's', 'u',
-    'p', 's', 'e', 't', 'n', 'e', 'q',  26,   1,   6, 226, 138, 139, 239, 184,
-    128,   1, 'q',   6, 226, 171, 140, 239, 184, 128,   7, 'a', 'r', 't', 'h',
-    'e', 't', 'a',   2, 207, 145,  14, 'a', 'r', 't', 'r', 'i', 'a', 'n', 'g',
-    'l', 'e', 'l', 'e', 'f', 't',   3, 226, 138, 178,  15, 'a', 'r', 't', 'r',
-    'i', 'a', 'n', 'g', 'l', 'e', 'r', 'i', 'g', 'h', 't',   3, 226, 138, 179,
-      2, 'c', 'y',   2, 208, 178,   4, 'd', 'a', 's', 'h',   3, 226, 138, 162,
-     66, 'e', 'e',  21,   2,   3, 226, 136, 168,   3, 'b', 'a', 'r',   3, 226,
-    138, 187,   2, 'e', 'q',   3, 226, 137, 154,   5, 'e', 'l', 'l', 'i', 'p',
-      3, 226, 139, 174,   5, 'e', 'r', 'b', 'a', 'r',   1, '|',   3, 'e', 'r',
-    't',   1, '|',   2, 'f', 'r',   4, 240, 157, 148, 179,   4, 'l', 't', 'r',
-    'i',   3, 226, 138, 178,   4, 'n', 's', 'u', 'b',   6, 226, 138, 130, 226,
-    131, 146,   4, 'n', 's', 'u', 'p',   6, 226, 138, 131, 226, 131, 146,   3,
-    'o', 'p', 'f',   4, 240, 157, 149, 167,   4, 'p', 'r', 'o', 'p',   3, 226,
-    136, 157,   4, 'r', 't', 'r', 'i',   3, 226, 138, 179,   3, 's', 'c', 'r',
-      4, 240, 157, 147, 139,   5, 's', 'u', 'b', 'n', 'E',   6, 226, 171, 139,
-    239, 184, 128,   5, 's', 'u', 'b', 'n', 'e',   6, 226, 138, 138, 239, 184,
-    128,   5, 's', 'u', 'p', 'n', 'E',   6, 226, 171, 140, 239, 184, 128,   5,
-    's', 'u', 'p', 'n', 'e',   6, 226, 138, 139, 239, 184, 128,   6, 'z', 'i',
-    'g', 'z', 'a', 'g',   3, 226, 166, 154,   4, 'c', 'i', 'r', 'c',   2, 197,
-    181,   5, 'e', 'd', 'b', 'a', 'r',   3, 226, 169, 159,  68, 'e', 'd', 'g',
-    'e',   7,   1,   3, 226, 136, 167,   1, 'q',   3, 226, 137, 153,   5, 'e',
-    'i', 'e', 'r', 'p',   3, 226, 132, 152,   2, 'f', 'r',   4, 240, 157, 148,
-    180,   3, 'o', 'p', 'f',   4, 240, 157, 149, 168,   1, 'p',   3, 226, 132,
-    152,  65, 'r',   3,   1,   3, 226, 137, 128,   4, 'e', 'a', 't', 'h',   3,
-    226, 137, 128,   3, 's', 'c', 'r',   4, 240, 157, 147, 140,   3, 'c', 'a',
-    'p',   3, 226, 139, 130,   4, 'c', 'i', 'r', 'c',   3, 226, 151, 175,   3,
-    'c', 'u', 'p',   3, 226, 139, 131,   4, 'd', 't', 'r', 'i',   3, 226, 150,
-    189,   2, 'f', 'r',   4, 240, 157, 148, 181,   4, 'h', 'A', 'r', 'r',   3,
-    226, 159, 186,   4, 'h', 'a', 'r', 'r',   3, 226, 159, 183,   1, 'i',   2,
-    206, 190,   4, 'l', 'A', 'r', 'r',   3, 226, 159, 184,   4, 'l', 'a', 'r',
-    'r',   3, 226, 159, 181,   3, 'm', 'a', 'p',   3, 226, 159, 188,   3, 'n',
-    'i', 's',   3, 226, 139, 187,   4, 'o', 'd', 'o', 't',   3, 226, 168, 128,
-      3, 'o', 'p', 'f',   4, 240, 157, 149, 169,   5, 'o', 'p', 'l', 'u', 's',
-      3, 226, 168, 129,   5, 'o', 't', 'i', 'm', 'e',   3, 226, 168, 130,   4,
-    'r', 'A', 'r', 'r',   3, 226, 159, 185,   4, 'r', 'a', 'r', 'r',   3, 226,
-    159, 182,   3, 's', 'c', 'r',   4, 240, 157, 147, 141,   5, 's', 'q', 'c',
-    'u', 'p',   3, 226, 168, 134,   5, 'u', 'p', 'l', 'u', 's',   3, 226, 168,
-    132,   4, 'u', 't', 'r', 'i',   3, 226, 150, 179,   3, 'v', 'e', 'e',   3,
-    226, 139, 129,   5, 'w', 'e', 'd', 'g', 'e',   3, 226, 139, 128, 133, 'a',
-    'c', 'u', 't', 'e',   2, 195, 189,   3, 'a', 'c', 'y',   2, 209, 143,   4,
-    'c', 'i', 'r', 'c',   2, 197, 183,   2, 'c', 'y',   2, 209, 139, 130, 'e',
-    'n',   2, 194, 165,   2, 'f', 'r',   4, 240, 157, 148, 182,   3, 'i', 'c',
-    'y',   2, 209, 151,   3, 'o', 'p', 'f',   4, 240, 157, 149, 170,   3, 's',
-    'c', 'r',   4, 240, 157, 147, 142,   3, 'u', 'c', 'y',   2, 209, 142, 131,
-    'u', 'm', 'l',   2, 195, 191,   5, 'a', 'c', 'u', 't', 'e',   2, 197, 186,
-      5, 'c', 'a', 'r', 'o', 'n',   2, 197, 190,   2, 'c', 'y',   2, 208, 183,
-      3, 'd', 'o', 't',   2, 197, 188,   5, 'e', 'e', 't', 'r', 'f',   3, 226,
-    132, 168,   3, 'e', 't', 'a',   2, 206, 182,   2, 'f', 'r',   4, 240, 157,
-    148, 183,   3, 'h', 'c', 'y',   2, 208, 182,   6, 'i', 'g', 'r', 'a', 'r',
-    'r',   3, 226, 135, 157,   3, 'o', 'p', 'f',   4, 240, 157, 149, 171,   3,
-    's', 'c', 'r',   4, 240, 157, 147, 143,   2, 'w', 'j',   3, 226, 128, 141,
-      3, 'w', 'n', 'j',   3, 226, 128, 140
-};
-
diff -pruN 2.14.6+dfsg-0.1/include/Makefile.am 2.15.0+dfsg-0.3/include/Makefile.am
--- 2.14.6+dfsg-0.1/include/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in
 SUBDIRS=libxml private
 
-EXTRA_DIST = wsockcompat.h meson.build
+EXTRA_DIST = meson.build
 
diff -pruN 2.14.6+dfsg-0.1/include/Makefile.in 2.15.0+dfsg-0.3/include/Makefile.in
--- 2.14.6+dfsg-0.1/include/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -202,6 +202,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -241,8 +242,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -280,10 +279,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -292,7 +289,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -379,7 +375,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = libxml private
-EXTRA_DIST = wsockcompat.h meson.build
+EXTRA_DIST = meson.build
 all: all-recursive
 
 .SUFFIXES:
diff -pruN 2.14.6+dfsg-0.1/include/libxml/HTMLparser.h 2.15.0+dfsg-0.3/include/libxml/HTMLparser.h
--- 2.14.6+dfsg-0.1/include/libxml/HTMLparser.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/HTMLparser.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,13 +1,19 @@
-/*
- * Summary: interface for an HTML 4.0 non-verifying parser
- * Description: this module implements an HTML 4.0 non-verifying parser
- *              with API compatible with the XML parser ones. It should
- *              be able to parse "real world" HTML, even if severely
- *              broken from a specification point of view.
+/**
+ * @file
+ * 
+ * @brief HTML parser, doesn't support HTML5
+ * 
+ * This module orginally implemented an HTML parser based on the
+ * (underspecified) HTML 4.0 spec. As of 2.14, the tokenizer
+ * conforms to HTML5. Tree construction still follows a custom,
+ * unspecified algorithm with many differences to HTML5.
+ *
+ * The parser defaults to ISO-8859-1, the default encoding of
+ * HTTP/1.0.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __HTML_PARSER_H__
@@ -25,20 +31,29 @@ extern "C" {
  * Backward compatibility
  */
 #define UTF8ToHtml htmlUTF8ToHtml
+#define htmlDefaultSubelement(elt) elt->defaultsubelt
+#define htmlElementAllowedHereDesc(parent,elt) \
+	htmlElementAllowedHere((parent), (elt)->name)
+#define htmlRequiredAttrs(elt) (elt)->attrs_req
 
 /*
  * Most of the back-end structures from XML and HTML are shared.
  */
+/** Same as xmlParserCtxt */
 typedef xmlParserCtxt htmlParserCtxt;
 typedef xmlParserCtxtPtr htmlParserCtxtPtr;
 typedef xmlParserNodeInfo htmlParserNodeInfo;
+/** Same as xmlSAXHandler */
 typedef xmlSAXHandler htmlSAXHandler;
 typedef xmlSAXHandlerPtr htmlSAXHandlerPtr;
+/** Same as xmlParserInput */
 typedef xmlParserInput htmlParserInput;
 typedef xmlParserInputPtr htmlParserInputPtr;
 typedef xmlDocPtr htmlDocPtr;
 typedef xmlNodePtr htmlNodePtr;
 
+/** @cond ignore */
+
 /*
  * Internal description of an HTML element, representing HTML 4.01
  * and XHTML 1.0 (which share the same structure).
@@ -49,7 +64,7 @@ struct _htmlElemDesc {
     const char *name;	/* The tag name */
     char startTag;      /* unused */
     char endTag;        /* Whether the end tag can be implied */
-    char saveEndTag;    /* Whether the end tag should be saved */
+    char saveEndTag;    /* unused */
     char empty;         /* Is this an empty element ? */
     char depr;          /* unused */
     char dtd;           /* unused */
@@ -77,88 +92,97 @@ struct _htmlEntityDesc {
 };
 
 #ifdef LIBXML_SAX1_ENABLED
-
+/**
+ * @deprecated Use #xmlSAX2InitHtmlDefaultSAXHandler
+ */
 XML_DEPRECATED
 XMLPUBVAR const xmlSAXHandlerV1 htmlDefaultSAXHandler;
-
 #endif /* LIBXML_SAX1_ENABLED */
 
+/** @endcond */
+
 /*
  * There is only few public functions.
  */
 XML_DEPRECATED
 XMLPUBFUN void
 			htmlInitAutoClose	(void);
+XML_DEPRECATED
 XMLPUBFUN const htmlElemDesc *
 			htmlTagLookup	(const xmlChar *tag);
+XML_DEPRECATED
 XMLPUBFUN const htmlEntityDesc *
 			htmlEntityLookup(const xmlChar *name);
+XML_DEPRECATED
 XMLPUBFUN const htmlEntityDesc *
 			htmlEntityValueLookup(unsigned int value);
 
 XML_DEPRECATED
 XMLPUBFUN int
-			htmlIsAutoClosed(htmlDocPtr doc,
-					 htmlNodePtr elem);
+			htmlIsAutoClosed(xmlDoc *doc,
+					 xmlNode *elem);
 XML_DEPRECATED
 XMLPUBFUN int
-			htmlAutoCloseTag(htmlDocPtr doc,
+			htmlAutoCloseTag(xmlDoc *doc,
 					 const xmlChar *name,
-					 htmlNodePtr elem);
+					 xmlNode *elem);
 XML_DEPRECATED
 XMLPUBFUN const htmlEntityDesc *
-			htmlParseEntityRef(htmlParserCtxtPtr ctxt,
+			htmlParseEntityRef(htmlParserCtxt *ctxt,
 					 const xmlChar **str);
 XML_DEPRECATED
 XMLPUBFUN int
-			htmlParseCharRef(htmlParserCtxtPtr ctxt);
+			htmlParseCharRef(htmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			htmlParseElement(htmlParserCtxtPtr ctxt);
+			htmlParseElement(htmlParserCtxt *ctxt);
 
-XMLPUBFUN htmlParserCtxtPtr
+XMLPUBFUN htmlParserCtxt *
 			htmlNewParserCtxt(void);
-XMLPUBFUN htmlParserCtxtPtr
+XMLPUBFUN htmlParserCtxt *
 			htmlNewSAXParserCtxt(const htmlSAXHandler *sax,
 					     void *userData);
 
-XMLPUBFUN htmlParserCtxtPtr
+XMLPUBFUN htmlParserCtxt *
 			htmlCreateMemoryParserCtxt(const char *buffer,
 						   int size);
 
 XMLPUBFUN int
-			htmlParseDocument(htmlParserCtxtPtr ctxt);
+			htmlParseDocument(htmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 			htmlSAXParseDoc	(const xmlChar *cur,
 					 const char *encoding,
-					 htmlSAXHandlerPtr sax,
+					 htmlSAXHandler *sax,
 					 void *userData);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 			htmlParseDoc	(const xmlChar *cur,
 					 const char *encoding);
-XMLPUBFUN htmlParserCtxtPtr
+XMLPUBFUN htmlParserCtxt *
 			htmlCreateFileParserCtxt(const char *filename,
 	                                         const char *encoding);
 XML_DEPRECATED
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 			htmlSAXParseFile(const char *filename,
 					 const char *encoding,
-					 htmlSAXHandlerPtr sax,
+					 htmlSAXHandler *sax,
 					 void *userData);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 			htmlParseFile	(const char *filename,
 					 const char *encoding);
+XML_DEPRECATED
 XMLPUBFUN int
 			htmlUTF8ToHtml	(unsigned char *out,
 					 int *outlen,
 					 const unsigned char *in,
 					 int *inlen);
+XML_DEPRECATED
 XMLPUBFUN int
 			htmlEncodeEntities(unsigned char *out,
 					 int *outlen,
 					 const unsigned char *in,
 					 int *inlen, int quoteChar);
+XML_DEPRECATED
 XMLPUBFUN int
 			htmlIsScriptAttribute(const xmlChar *name);
 XML_DEPRECATED
@@ -166,115 +190,175 @@ XMLPUBFUN int
 			htmlHandleOmittedElem(int val);
 
 #ifdef LIBXML_PUSH_ENABLED
-/**
+/*
  * Interfaces for the Push mode.
  */
-XMLPUBFUN htmlParserCtxtPtr
-			htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax,
+XMLPUBFUN htmlParserCtxt *
+			htmlCreatePushParserCtxt(htmlSAXHandler *sax,
 						 void *user_data,
 						 const char *chunk,
 						 int size,
 						 const char *filename,
 						 xmlCharEncoding enc);
 XMLPUBFUN int
-			htmlParseChunk		(htmlParserCtxtPtr ctxt,
+			htmlParseChunk		(htmlParserCtxt *ctxt,
 						 const char *chunk,
 						 int size,
 						 int terminate);
 #endif /* LIBXML_PUSH_ENABLED */
 
 XMLPUBFUN void
-			htmlFreeParserCtxt	(htmlParserCtxtPtr ctxt);
+			htmlFreeParserCtxt	(htmlParserCtxt *ctxt);
 
 /*
  * New set of simpler/more flexible APIs
  */
+
 /**
- * xmlParserOption:
- *
- * This is the set of XML parser options that can be passed down
- * to the xmlReadDoc() and similar calls.
+ * This is the set of HTML parser options that can be passed to
+ * #htmlReadDoc, #htmlCtxtSetOptions and other functions.
  */
 typedef enum {
-    HTML_PARSE_RECOVER  = 1<<0, /* No effect */
-    HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */
-    HTML_PARSE_NOERROR	= 1<<5,	/* suppress error reports */
-    HTML_PARSE_NOWARNING= 1<<6,	/* suppress warning reports */
-    HTML_PARSE_PEDANTIC	= 1<<7,	/* No effect */
-    HTML_PARSE_NOBLANKS	= 1<<8,	/* remove blank nodes */
-    HTML_PARSE_NONET	= 1<<11,/* No effect */
-    HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */
-    HTML_PARSE_COMPACT  = 1<<16,/* compact small text nodes */
-    HTML_PARSE_HUGE     = 1<<19,/* relax any hardcoded limit from the parser */
-    HTML_PARSE_IGNORE_ENC=1<<21,/* ignore internal document encoding hint */
-    HTML_PARSE_BIG_LINES= 1<<22,/* Store big lines numbers in text PSVI field */
-    HTML_PARSE_HTML5    = 1<<26 /* HTML5 support */
+    /**
+     * No effect as of 2.14.0.
+     */
+    HTML_PARSE_RECOVER = 1<<0,
+    /**
+     * Do not default to a doctype if none was found.
+     */
+    HTML_PARSE_NODEFDTD = 1<<2,
+    /**
+     * Disable error and warning reports to the error handlers.
+     * Errors are still accessible with xmlCtxtGetLastError().
+     */
+    HTML_PARSE_NOERROR = 1<<5,
+    /**
+     * Disable warning reports.
+     */
+    HTML_PARSE_NOWARNING = 1<<6,
+    /**
+     * No effect.
+     */
+    HTML_PARSE_PEDANTIC = 1<<7,
+    /**
+     * Remove some text nodes containing only whitespace from the
+     * result document. Which nodes are removed depends on a conservative
+     * heuristic. The reindenting feature of the serialization code relies
+     * on this option to be set when parsing. Use of this option is
+     * DISCOURAGED.
+     */
+    HTML_PARSE_NOBLANKS = 1<<8,
+    /**
+     * No effect.
+     */
+    HTML_PARSE_NONET = 1<<11,
+    /**
+     * Do not add implied html, head or body elements.
+     */
+    HTML_PARSE_NOIMPLIED = 1<<13,
+    /**
+     * Store small strings directly in the node struct to save
+     * memory.
+    */
+    HTML_PARSE_COMPACT = 1<<16,
+    /**
+     * Relax some internal limits. See XML_PARSE_HUGE in xmlParserOption.
+     *
+     * @since 2.14.0
+     *
+     * Use XML_PARSE_HUGE with older versions.
+     */
+    HTML_PARSE_HUGE = 1<<19,
+    /**
+     * Ignore the encoding in the HTML declaration. This option is
+     * mostly unneeded these days. The only effect is to enforce
+     * ISO-8859-1 decoding of ASCII-like data.
+     */
+    HTML_PARSE_IGNORE_ENC =1<<21,
+    /**
+     * Enable reporting of line numbers larger than 65535.
+     *
+     * @since 2.14.0
+     *
+     * Use XML_PARSE_BIG_LINES with older versions.
+     */
+    HTML_PARSE_BIG_LINES = 1<<22,
+    /**
+     * Make the tokenizer emit a SAX callback for each token. This results
+     * in unbalanced invocations of startElement and endElement.
+     *
+     * For now, this is only usable to tokenize HTML5 with custom SAX
+     * callbacks. A tree builder isn't implemented yet.
+     *
+     * @since 2.14.0
+    */
+    HTML_PARSE_HTML5 = 1<<26
 } htmlParserOption;
 
 XMLPUBFUN void
-		htmlCtxtReset		(htmlParserCtxtPtr ctxt);
+		htmlCtxtReset		(htmlParserCtxt *ctxt);
 XMLPUBFUN int
-		htmlCtxtSetOptions	(htmlParserCtxtPtr ctxt,
+		htmlCtxtSetOptions	(htmlParserCtxt *ctxt,
 					 int options);
 XMLPUBFUN int
-		htmlCtxtUseOptions	(htmlParserCtxtPtr ctxt,
+		htmlCtxtUseOptions	(htmlParserCtxt *ctxt,
 					 int options);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlReadDoc		(const xmlChar *cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlReadFile		(const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlReadMemory		(const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlReadFd		(int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlReadIO		(xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtParseDocument	(htmlParserCtxtPtr ctxt,
-					 xmlParserInputPtr input);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtReadDoc		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		htmlCtxtParseDocument	(htmlParserCtxt *ctxt,
+					 xmlParserInput *input);
+XMLPUBFUN xmlDoc *
+		htmlCtxtReadDoc		(xmlParserCtxt *ctxt,
 					 const xmlChar *cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtReadFile		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		htmlCtxtReadFile		(xmlParserCtxt *ctxt,
 					 const char *filename,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtReadMemory		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		htmlCtxtReadMemory		(xmlParserCtxt *ctxt,
 					 const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtReadFd		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		htmlCtxtReadFd		(xmlParserCtxt *ctxt,
 					 int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN htmlDocPtr
-		htmlCtxtReadIO		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		htmlCtxtReadIO		(xmlParserCtxt *ctxt,
 					 xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
@@ -282,7 +366,8 @@ XMLPUBFUN htmlDocPtr
 					 const char *encoding,
 					 int options);
 
-/* deprecated content model
+/**
+ * deprecated content model
  */
 typedef enum {
   HTML_NA = 0 ,		/* something we don't check at all */
@@ -302,34 +387,7 @@ XMLPUBFUN int htmlElementAllowedHere(con
 XML_DEPRECATED
 XMLPUBFUN htmlStatus htmlElementStatusHere(const htmlElemDesc*, const htmlElemDesc*) ;
 XML_DEPRECATED
-XMLPUBFUN htmlStatus htmlNodeStatus(htmlNodePtr, int) ;
-/**
- * htmlDefaultSubelement:
- * @elt: HTML element
- *
- * Returns the default subelement for this element
- */
-#define htmlDefaultSubelement(elt) elt->defaultsubelt
-/**
- * htmlElementAllowedHereDesc:
- * @parent: HTML parent element
- * @elt: HTML element
- *
- * Checks whether an HTML element description may be a
- * direct child of the specified element.
- *
- * Returns 1 if allowed; 0 otherwise.
- */
-#define htmlElementAllowedHereDesc(parent,elt) \
-	htmlElementAllowedHere((parent), (elt)->name)
-/**
- * htmlRequiredAttrs:
- * @elt: HTML element
- *
- * Returns the attributes required for the specified element.
- */
-#define htmlRequiredAttrs(elt) (elt)->attrs_req
-
+XMLPUBFUN htmlStatus htmlNodeStatus(xmlNode *, int) ;
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/HTMLtree.h 2.15.0+dfsg-0.3/include/libxml/HTMLtree.h
--- 2.14.6+dfsg-0.1/include/libxml/HTMLtree.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/HTMLtree.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: specific APIs to process HTML tree, especially serialization
- * Description: this module implements a few function needed to process
- *              tree in an HTML specific way.
+/**
+ * @file
+ * 
+ * @brief HTML documents
+ * 
+ * This modules implements functions to work with HTML documents,
+ * most of them related to serialization.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __HTML_TREE_H__
@@ -22,114 +25,86 @@
 extern "C" {
 #endif
 
-
-/**
- * HTML_TEXT_NODE:
- *
- * Macro. A text node in a HTML document is really implemented
- * the same way as a text node in an XML document.
- */
+/* Deprecated */
+/** @cond ignore */
 #define HTML_TEXT_NODE		XML_TEXT_NODE
-/**
- * HTML_ENTITY_REF_NODE:
- *
- * Macro. An entity reference in a HTML document is really implemented
- * the same way as an entity reference in an XML document.
- */
 #define HTML_ENTITY_REF_NODE	XML_ENTITY_REF_NODE
-/**
- * HTML_COMMENT_NODE:
- *
- * Macro. A comment in a HTML document is really implemented
- * the same way as a comment in an XML document.
- */
 #define HTML_COMMENT_NODE	XML_COMMENT_NODE
-/**
- * HTML_PRESERVE_NODE:
- *
- * Macro. A preserved node in a HTML document is really implemented
- * the same way as a CDATA section in an XML document.
- */
 #define HTML_PRESERVE_NODE	XML_CDATA_SECTION_NODE
-/**
- * HTML_PI_NODE:
- *
- * Macro. A processing instruction in a HTML document is really implemented
- * the same way as a processing instruction in an XML document.
- */
 #define HTML_PI_NODE		XML_PI_NODE
+/** @endcond */
 
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlNewDoc		(const xmlChar *URI,
 					 const xmlChar *ExternalID);
-XMLPUBFUN htmlDocPtr
+XMLPUBFUN xmlDoc *
 		htmlNewDocNoDtD		(const xmlChar *URI,
 					 const xmlChar *ExternalID);
 XMLPUBFUN const xmlChar *
-		htmlGetMetaEncoding	(htmlDocPtr doc);
+		htmlGetMetaEncoding	(xmlDoc *doc);
 XMLPUBFUN int
-		htmlSetMetaEncoding	(htmlDocPtr doc,
+		htmlSetMetaEncoding	(xmlDoc *doc,
 					 const xmlChar *encoding);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void
-		htmlDocDumpMemory	(xmlDocPtr cur,
+		htmlDocDumpMemory	(xmlDoc *cur,
 					 xmlChar **mem,
 					 int *size);
 XMLPUBFUN void
-		htmlDocDumpMemoryFormat	(xmlDocPtr cur,
+		htmlDocDumpMemoryFormat	(xmlDoc *cur,
 					 xmlChar **mem,
 					 int *size,
 					 int format);
 XMLPUBFUN int
-		htmlDocDump		(FILE *f,
-					 xmlDocPtr cur);
-XMLPUBFUN int
 		htmlSaveFile		(const char *filename,
-					 xmlDocPtr cur);
-XMLPUBFUN int
-		htmlNodeDump		(xmlBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur);
-XMLPUBFUN void
-		htmlNodeDumpFile	(FILE *out,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur);
-XMLPUBFUN int
-		htmlNodeDumpFileFormat	(FILE *out,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
-					 const char *encoding,
-					 int format);
+					 xmlDoc *cur);
 XMLPUBFUN int
 		htmlSaveFileEnc		(const char *filename,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 const char *encoding);
 XMLPUBFUN int
 		htmlSaveFileFormat	(const char *filename,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 const char *encoding,
 					 int format);
-
+XMLPUBFUN int
+		htmlNodeDump		(xmlBuffer *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur);
+XMLPUBFUN int
+		htmlDocDump		(FILE *f,
+					 xmlDoc *cur);
 XMLPUBFUN void
-		htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
+		htmlNodeDumpFile	(FILE *out,
+					 xmlDoc *doc,
+					 xmlNode *cur);
+XMLPUBFUN int
+		htmlNodeDumpFileFormat	(FILE *out,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 const char *encoding,
 					 int format);
+
 XMLPUBFUN void
-		htmlDocContentDumpOutput(xmlOutputBufferPtr buf,
-					 xmlDocPtr cur,
+		htmlNodeDumpOutput	(xmlOutputBuffer *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 const char *encoding);
 XMLPUBFUN void
-		htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf,
-					 xmlDocPtr cur,
+		htmlNodeDumpFormatOutput(xmlOutputBuffer *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 const char *encoding,
 					 int format);
 XMLPUBFUN void
-		htmlNodeDumpOutput	(xmlOutputBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
+		htmlDocContentDumpOutput(xmlOutputBuffer *buf,
+					 xmlDoc *cur,
 					 const char *encoding);
+XMLPUBFUN void
+		htmlDocContentDumpFormatOutput(xmlOutputBuffer *buf,
+					 xmlDoc *cur,
+					 const char *encoding,
+					 int format);
 
 #endif /* LIBXML_OUTPUT_ENABLED */
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/Makefile.in 2.15.0+dfsg-0.3/include/libxml/Makefile.in
--- 2.14.6+dfsg-0.1/include/libxml/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -191,6 +191,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -230,8 +231,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -269,10 +268,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -281,7 +278,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
diff -pruN 2.14.6+dfsg-0.1/include/libxml/SAX.h 2.15.0+dfsg-0.3/include/libxml/SAX.h
--- 2.14.6+dfsg-0.1/include/libxml/SAX.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/SAX.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: Old SAX version 1 handler, deprecated
- * Description: DEPRECATED set of SAX version 1 interfaces used to
+/**
+ * @file
+ * 
+ * @brief Old SAX version 1 handler, deprecated
+ * 
+ * @deprecated set of SAX version 1 interfaces used to
  *              build the DOM tree.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_SAX_H__
diff -pruN 2.14.6+dfsg-0.1/include/libxml/SAX2.h 2.15.0+dfsg-0.3/include/libxml/SAX2.h
--- 2.14.6+dfsg-0.1/include/libxml/SAX2.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/SAX2.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: SAX2 parser interface used to build the DOM tree
- * Description: those are the default SAX2 interfaces used by
+/**
+ * @file
+ * 
+ * @brief SAX2 parser interface used to build the DOM tree
+ * 
+ * those are the default SAX2 interfaces used by
  *              the library when building DOM tree.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -24,7 +27,7 @@ XMLPUBFUN const xmlChar *
 		xmlSAX2GetSystemId		(void *ctx);
 XMLPUBFUN void
 		xmlSAX2SetDocumentLocator	(void *ctx,
-						 xmlSAXLocatorPtr loc);
+						 xmlSAXLocator *loc);
 
 XMLPUBFUN int
 		xmlSAX2GetLineNumber		(void *ctx);
@@ -41,20 +44,20 @@ XMLPUBFUN int
 XMLPUBFUN void
 		xmlSAX2InternalSubset		(void *ctx,
 						 const xmlChar *name,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID);
+						 const xmlChar *publicId,
+						 const xmlChar *systemId);
 XMLPUBFUN void
 		xmlSAX2ExternalSubset		(void *ctx,
 						 const xmlChar *name,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID);
-XMLPUBFUN xmlEntityPtr
+						 const xmlChar *publicId,
+						 const xmlChar *systemId);
+XMLPUBFUN xmlEntity *
 		xmlSAX2GetEntity		(void *ctx,
 						 const xmlChar *name);
-XMLPUBFUN xmlEntityPtr
+XMLPUBFUN xmlEntity *
 		xmlSAX2GetParameterEntity	(void *ctx,
 						 const xmlChar *name);
-XMLPUBFUN xmlParserInputPtr
+XMLPUBFUN xmlParserInput *
 		xmlSAX2ResolveEntity		(void *ctx,
 						 const xmlChar *publicId,
 						 const xmlChar *systemId);
@@ -73,12 +76,12 @@ XMLPUBFUN void
 						 int type,
 						 int def,
 						 const xmlChar *defaultValue,
-						 xmlEnumerationPtr tree);
+						 xmlEnumeration *tree);
 XMLPUBFUN void
 		xmlSAX2ElementDecl		(void *ctx,
 						 const xmlChar *name,
 						 int type,
-						 xmlElementContentPtr content);
+						 xmlElementContent *content);
 XMLPUBFUN void
 		xmlSAX2NotationDecl		(void *ctx,
 						 const xmlChar *name,
diff -pruN 2.14.6+dfsg-0.1/include/libxml/c14n.h 2.15.0+dfsg-0.3/include/libxml/c14n.h
--- 2.14.6+dfsg-0.1/include/libxml/c14n.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/c14n.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,9 @@
-/*
- * Summary: Provide Canonical XML and Exclusive XML Canonicalization
- * Description: the c14n modules provides a
+/**
+ * @file
+ * 
+ * @brief Provide Canonical XML and Exclusive XML Canonicalization
+ * 
+ * the c14n modules provides a
  *
  * "Canonical XML" implementation
  * http://www.w3.org/TR/xml-c14n
@@ -10,9 +13,9 @@
  * "Exclusive XML Canonicalization" implementation
  * http://www.w3.org/TR/xml-exc-c14n
 
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Aleksey Sanin <aleksey@aleksey.com>
+ * @author Aleksey Sanin
  */
 #ifndef __XML_C14N_H__
 #define __XML_C14N_H__
@@ -42,37 +45,37 @@ extern "C" {
  * following options: XML_PARSE_DTDATTR | XML_PARSE_NOENT
  */
 
-/*
- * xmlC14NMode:
- *
+/**
  * Predefined values for C14N modes
- *
  */
 typedef enum {
-    XML_C14N_1_0            = 0,    /* Original C14N 1.0 spec */
-    XML_C14N_EXCLUSIVE_1_0  = 1,    /* Exclusive C14N 1.0 spec */
-    XML_C14N_1_1            = 2     /* C14N 1.1 spec */
+    /** Original C14N 1.0 spec */
+    XML_C14N_1_0            = 0,
+    /** Exclusive C14N 1.0 spec */
+    XML_C14N_EXCLUSIVE_1_0  = 1,
+    /** C14N 1.1 spec */
+    XML_C14N_1_1            = 2
 } xmlC14NMode;
 
 XMLPUBFUN int
-		xmlC14NDocSaveTo	(xmlDocPtr doc,
-					 xmlNodeSetPtr nodes,
+		xmlC14NDocSaveTo	(xmlDoc *doc,
+					 xmlNodeSet *nodes,
 					 int mode, /* a xmlC14NMode */
 					 xmlChar **inclusive_ns_prefixes,
 					 int with_comments,
-					 xmlOutputBufferPtr buf);
+					 xmlOutputBuffer *buf);
 
 XMLPUBFUN int
-		xmlC14NDocDumpMemory	(xmlDocPtr doc,
-					 xmlNodeSetPtr nodes,
+		xmlC14NDocDumpMemory	(xmlDoc *doc,
+					 xmlNodeSet *nodes,
 					 int mode, /* a xmlC14NMode */
 					 xmlChar **inclusive_ns_prefixes,
 					 int with_comments,
 					 xmlChar **doc_txt_ptr);
 
 XMLPUBFUN int
-		xmlC14NDocSave		(xmlDocPtr doc,
-					 xmlNodeSetPtr nodes,
+		xmlC14NDocSave		(xmlDoc *doc,
+					 xmlNodeSet *nodes,
 					 int mode, /* a xmlC14NMode */
 					 xmlChar **inclusive_ns_prefixes,
 					 int with_comments,
@@ -84,27 +87,25 @@ XMLPUBFUN int
  * This is the core C14N function
  */
 /**
- * xmlC14NIsVisibleCallback:
- * @user_data: user data
- * @node: the current node
- * @parent: the parent node
- *
  * Signature for a C14N callback on visible nodes
  *
- * Returns 1 if the node should be included
+ * @param user_data  user data
+ * @param node  the current node
+ * @param parent  the parent node
+ * @returns 1 if the node should be included
  */
 typedef int (*xmlC14NIsVisibleCallback)	(void* user_data,
-					 xmlNodePtr node,
-					 xmlNodePtr parent);
+					 xmlNode *node,
+					 xmlNode *parent);
 
 XMLPUBFUN int
-		xmlC14NExecute		(xmlDocPtr doc,
+		xmlC14NExecute		(xmlDoc *doc,
 					 xmlC14NIsVisibleCallback is_visible_callback,
 					 void* user_data,
 					 int mode, /* a xmlC14NMode */
 					 xmlChar **inclusive_ns_prefixes,
 					 int with_comments,
-					 xmlOutputBufferPtr buf);
+					 xmlOutputBuffer *buf);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/catalog.h 2.15.0+dfsg-0.3/include/libxml/catalog.h
--- 2.14.6+dfsg-0.1/include/libxml/catalog.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/catalog.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,9 @@
 /**
- * Summary: interfaces to the Catalog handling system
- * Description: the catalog module implements the support for
+ * @file
+ *
+ * @brief interfaces to the Catalog handling system
+ * 
+ * the catalog module implements the support for
  * XML Catalogs and SGML catalogs
  *
  * SGML Open Technical Resolution TR9401:1997.
@@ -9,9 +12,9 @@
  * XML Catalogs Working Draft 06 August 2001
  * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_CATALOG_H__
@@ -30,20 +33,18 @@ extern "C" {
 #endif
 
 /**
- * XML_CATALOGS_NAMESPACE:
- *
  * The namespace for the XML Catalogs elements.
  */
 #define XML_CATALOGS_NAMESPACE					\
     (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog"
 /**
- * XML_CATALOG_PI:
- *
  * The specific XML Catalog Processing Instruction name.
  */
 #define XML_CATALOG_PI						\
     (const xmlChar *) "oasis-xml-catalog"
 
+/** @cond ignore */
+
 /*
  * The API is voluntarily limited to general cataloging.
  */
@@ -60,50 +61,68 @@ typedef enum {
     XML_CATA_ALLOW_ALL = 3
 } xmlCatalogAllow;
 
+/** @endcond */
+
+/** XML catalog */
 typedef struct _xmlCatalog xmlCatalog;
 typedef xmlCatalog *xmlCatalogPtr;
 
 /*
  * Operations on a given catalog.
  */
-XMLPUBFUN xmlCatalogPtr
+XML_DEPRECATED
+XMLPUBFUN xmlCatalog *
 		xmlNewCatalog		(int sgml);
-XMLPUBFUN xmlCatalogPtr
+XML_DEPRECATED
+XMLPUBFUN xmlCatalog *
 		xmlLoadACatalog		(const char *filename);
-XMLPUBFUN xmlCatalogPtr
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+XML_DEPRECATED
+XMLPUBFUN xmlCatalog *
 		xmlLoadSGMLSuperCatalog	(const char *filename);
+XML_DEPRECATED
 XMLPUBFUN int
-		xmlConvertSGMLCatalog	(xmlCatalogPtr catal);
+		xmlConvertSGMLCatalog	(xmlCatalog *catal);
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+XML_DEPRECATED
 XMLPUBFUN int
-		xmlACatalogAdd		(xmlCatalogPtr catal,
+		xmlACatalogAdd		(xmlCatalog *catal,
 					 const xmlChar *type,
 					 const xmlChar *orig,
 					 const xmlChar *replace);
+XML_DEPRECATED
 XMLPUBFUN int
-		xmlACatalogRemove	(xmlCatalogPtr catal,
+		xmlACatalogRemove	(xmlCatalog *catal,
 					 const xmlChar *value);
+XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlACatalogResolve	(xmlCatalogPtr catal,
+		xmlACatalogResolve	(xmlCatalog *catal,
 					 const xmlChar *pubID,
 	                                 const xmlChar *sysID);
+XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlACatalogResolveSystem(xmlCatalogPtr catal,
+		xmlACatalogResolveSystem(xmlCatalog *catal,
 					 const xmlChar *sysID);
+XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlACatalogResolvePublic(xmlCatalogPtr catal,
+		xmlACatalogResolvePublic(xmlCatalog *catal,
 					 const xmlChar *pubID);
+XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlACatalogResolveURI	(xmlCatalogPtr catal,
+		xmlACatalogResolveURI	(xmlCatalog *catal,
 					 const xmlChar *URI);
 #ifdef LIBXML_OUTPUT_ENABLED
+XML_DEPRECATED
 XMLPUBFUN void
-		xmlACatalogDump		(xmlCatalogPtr catal,
+		xmlACatalogDump		(xmlCatalog *catal,
 					 FILE *out);
 #endif /* LIBXML_OUTPUT_ENABLED */
+XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeCatalog		(xmlCatalogPtr catal);
+		xmlFreeCatalog		(xmlCatalog *catal);
+XML_DEPRECATED
 XMLPUBFUN int
-		xmlCatalogIsEmpty	(xmlCatalogPtr catal);
+		xmlCatalogIsEmpty	(xmlCatalog *catal);
 
 /*
  * Global operations.
@@ -135,10 +154,14 @@ XMLPUBFUN int
 					 const xmlChar *replace);
 XMLPUBFUN int
 		xmlCatalogRemove	(const xmlChar *value);
-XMLPUBFUN xmlDocPtr
+XML_DEPRECATED
+XMLPUBFUN xmlDoc *
 		xmlParseCatalogFile	(const char *filename);
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlCatalogConvert	(void);
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
 
 /*
  * Strictly minimal interfaces for per-document catalogs used
@@ -171,8 +194,10 @@ XMLPUBFUN xmlCatalogAllow
 
 
 /* DEPRECATED interfaces */
+XML_DEPRECATED
 XMLPUBFUN const xmlChar *
 		xmlCatalogGetSystem	(const xmlChar *sysID);
+XML_DEPRECATED
 XMLPUBFUN const xmlChar *
 		xmlCatalogGetPublic	(const xmlChar *pubID);
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/chvalid.h 2.15.0+dfsg-0.3/include/libxml/chvalid.h
--- 2.14.6+dfsg-0.1/include/libxml/chvalid.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/chvalid.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,14 +1,10 @@
-/*
- * Summary: Unicode character range checking
- * Description: this module exports interfaces for the character
- *               range validation APIs
+/**
+ * @file
  *
- * This file is automatically generated from the cvs source
- * definition files using the genChRanges.py Python script
+ * @brief Unicode character range checking
  *
- * Generation date: Mon Mar 27 11:09:48 2006
- * Sources: chvalid.def
- * Author: William Brack <wbrack@mmm.com.hk>
+ * this module exports interfaces for the character
+ *               range validation APIs
  */
 
 #ifndef __XML_CHVALID_H__
@@ -21,6 +17,8 @@
 extern "C" {
 #endif
 
+/** @cond ignore */
+
 /*
  * Define our typedefs and structures
  *
@@ -48,18 +46,26 @@ struct _xmlChRangeGroup {
     const xmlChLRange	*longRange;
 };
 
+XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup;
+XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup;
+XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup;
+XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup;
+XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup;
+XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup;
+XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
+
 /**
  * Range checking routine
  */
 XMLPUBFUN int
 		xmlCharInRange(unsigned int val, const xmlChRangeGroup *group);
 
+/** @endcond */
 
 /**
- * xmlIsBaseChar_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsBaseChar_ch(c)	(((0x41 <= (c)) && ((c) <= 0x5a)) || \
 				 ((0x61 <= (c)) && ((c) <= 0x7a)) || \
@@ -68,52 +74,45 @@ XMLPUBFUN int
 				  (0xf8 <= (c)))
 
 /**
- * xmlIsBaseCharQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsBaseCharQ(c)	(((c) < 0x100) ? \
 				 xmlIsBaseChar_ch((c)) : \
 				 xmlCharInRange((c), &xmlIsBaseCharGroup))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup;
-
 /**
- * xmlIsBlank_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsBlank_ch(c)	(((c) == 0x20) || \
 				 ((0x9 <= (c)) && ((c) <= 0xa)) || \
 				 ((c) == 0xd))
 
 /**
- * xmlIsBlankQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsBlankQ(c)		(((c) < 0x100) ? \
 				 xmlIsBlank_ch((c)) : 0)
 
 
 /**
- * xmlIsChar_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsChar_ch(c)		(((0x9 <= (c)) && ((c) <= 0xa)) || \
 				 ((c) == 0xd) || \
 				  (0x20 <= (c)))
 
 /**
- * xmlIsCharQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsCharQ(c)		(((c) < 0x100) ? \
 				 xmlIsChar_ch((c)) :\
@@ -121,65 +120,51 @@ XMLPUBVAR const xmlChRangeGroup xmlIsBas
 				 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \
 				 ((0x10000 <= (c)) && ((c) <= 0x10ffff))))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup;
-
 /**
- * xmlIsCombiningQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsCombiningQ(c)	(((c) < 0x100) ? \
 				 0 : \
 				 xmlCharInRange((c), &xmlIsCombiningGroup))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup;
-
 /**
- * xmlIsDigit_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsDigit_ch(c)	(((0x30 <= (c)) && ((c) <= 0x39)))
 
 /**
- * xmlIsDigitQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsDigitQ(c)		(((c) < 0x100) ? \
 				 xmlIsDigit_ch((c)) : \
 				 xmlCharInRange((c), &xmlIsDigitGroup))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup;
-
 /**
- * xmlIsExtender_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsExtender_ch(c)	(((c) == 0xb7))
 
 /**
- * xmlIsExtenderQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsExtenderQ(c)	(((c) < 0x100) ? \
 				 xmlIsExtender_ch((c)) : \
 				 xmlCharInRange((c), &xmlIsExtenderGroup))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup;
-
 /**
- * xmlIsIdeographicQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsIdeographicQ(c)	(((c) < 0x100) ? \
 				 0 :\
@@ -187,40 +172,43 @@ XMLPUBVAR const xmlChRangeGroup xmlIsExt
 				 ((c) == 0x3007) || \
 				 ((0x3021 <= (c)) && ((c) <= 0x3029))))
 
-XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup;
-XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
-
 /**
- * xmlIsPubidChar_ch:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsPubidChar_ch(c)	(xmlIsPubidChar_tab[(c)])
 
 /**
- * xmlIsPubidCharQ:
- * @c: char to validate
- *
  * Automatically generated by genChRanges.py
+ *
+ * @param c  char to validate
  */
 #define xmlIsPubidCharQ(c)	(((c) < 0x100) ? \
 				 xmlIsPubidChar_ch((c)) : 0)
 
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsBaseChar(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsBlank(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsChar(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsCombining(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsDigit(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsExtender(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsIdeographic(unsigned int ch);
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlIsPubidChar(unsigned int ch);
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/debugXML.h 2.15.0+dfsg-0.3/include/libxml/debugXML.h
--- 2.14.6+dfsg-0.1/include/libxml/debugXML.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/debugXML.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: Tree debugging APIs
- * Description: Interfaces to a set of routines used for debugging the tree
+/**
+ * @file
+ * 
+ * @brief Tree debugging APIs
+ * 
+ * Interfaces to a set of routines used for debugging the tree
  *              produced by the XML parser.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __DEBUG_XML__
@@ -30,36 +33,36 @@ XMLPUBFUN void
 				 const xmlChar *str);
 XMLPUBFUN void
 	xmlDebugDumpAttr	(FILE *output,
-				 xmlAttrPtr attr,
+				 xmlAttr *attr,
 				 int depth);
 XMLPUBFUN void
 	xmlDebugDumpAttrList	(FILE *output,
-				 xmlAttrPtr attr,
+				 xmlAttr *attr,
 				 int depth);
 XMLPUBFUN void
 	xmlDebugDumpOneNode	(FILE *output,
-				 xmlNodePtr node,
+				 xmlNode *node,
 				 int depth);
 XMLPUBFUN void
 	xmlDebugDumpNode	(FILE *output,
-				 xmlNodePtr node,
+				 xmlNode *node,
 				 int depth);
 XMLPUBFUN void
 	xmlDebugDumpNodeList	(FILE *output,
-				 xmlNodePtr node,
+				 xmlNode *node,
 				 int depth);
 XMLPUBFUN void
 	xmlDebugDumpDocumentHead(FILE *output,
-				 xmlDocPtr doc);
+				 xmlDoc *doc);
 XMLPUBFUN void
 	xmlDebugDumpDocument	(FILE *output,
-				 xmlDocPtr doc);
+				 xmlDoc *doc);
 XMLPUBFUN void
 	xmlDebugDumpDTD		(FILE *output,
-				 xmlDtdPtr dtd);
+				 xmlDtd *dtd);
 XMLPUBFUN void
 	xmlDebugDumpEntities	(FILE *output,
-				 xmlDocPtr doc);
+				 xmlDoc *doc);
 
 /****************************************************************
  *								*
@@ -69,7 +72,7 @@ XMLPUBFUN void
 
 XMLPUBFUN int
 	xmlDebugCheckDocument	(FILE * output,
-				 xmlDocPtr doc);
+				 xmlDoc *doc);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/dict.h 2.15.0+dfsg-0.3/include/libxml/dict.h
--- 2.14.6+dfsg-0.1/include/libxml/dict.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/dict.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: string dictionary
- * Description: dictionary of reusable strings, just used to avoid allocation
+/**
+ * @file
+ * 
+ * @brief string dictionary
+ * 
+ * dictionary of reusable strings, just used to avoid allocation
  *         and freeing operations.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_DICT_H__
@@ -19,8 +22,8 @@
 extern "C" {
 #endif
 
-/*
- * The dictionary.
+/**
+ * Dictionary (pool for interned strings)
  */
 typedef struct _xmlDict xmlDict;
 typedef xmlDict *xmlDictPtr;
@@ -34,40 +37,40 @@ XMLPUBFUN int  xmlInitializeDict(void);
 /*
  * Constructor and destructor.
  */
-XMLPUBFUN xmlDictPtr
+XMLPUBFUN xmlDict *
 			xmlDictCreate	(void);
 XMLPUBFUN size_t
-			xmlDictSetLimit	(xmlDictPtr dict,
+			xmlDictSetLimit	(xmlDict *dict,
                                          size_t limit);
 XMLPUBFUN size_t
-			xmlDictGetUsage (xmlDictPtr dict);
-XMLPUBFUN xmlDictPtr
-			xmlDictCreateSub(xmlDictPtr sub);
+			xmlDictGetUsage (xmlDict *dict);
+XMLPUBFUN xmlDict *
+			xmlDictCreateSub(xmlDict *sub);
 XMLPUBFUN int
-			xmlDictReference(xmlDictPtr dict);
+			xmlDictReference(xmlDict *dict);
 XMLPUBFUN void
-			xmlDictFree	(xmlDictPtr dict);
+			xmlDictFree	(xmlDict *dict);
 
 /*
  * Lookup of entry in the dictionary.
  */
 XMLPUBFUN const xmlChar *
-			xmlDictLookup	(xmlDictPtr dict,
+			xmlDictLookup	(xmlDict *dict,
 		                         const xmlChar *name,
 		                         int len);
 XMLPUBFUN const xmlChar *
-			xmlDictExists	(xmlDictPtr dict,
+			xmlDictExists	(xmlDict *dict,
 		                         const xmlChar *name,
 		                         int len);
 XMLPUBFUN const xmlChar *
-			xmlDictQLookup	(xmlDictPtr dict,
+			xmlDictQLookup	(xmlDict *dict,
 		                         const xmlChar *prefix,
 		                         const xmlChar *name);
 XMLPUBFUN int
-			xmlDictOwns	(xmlDictPtr dict,
+			xmlDictOwns	(xmlDict *dict,
 					 const xmlChar *str);
 XMLPUBFUN int
-			xmlDictSize	(xmlDictPtr dict);
+			xmlDictSize	(xmlDict *dict);
 
 /*
  * Cleanup function
diff -pruN 2.14.6+dfsg-0.1/include/libxml/encoding.h 2.15.0+dfsg-0.3/include/libxml/encoding.h
--- 2.14.6+dfsg-0.1/include/libxml/encoding.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/encoding.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,22 +1,11 @@
-/*
- * Summary: interface for the encoding conversion functions
- * Description: interface for the encoding conversion functions needed for
- *              XML basic encoding and iconv() support.
- *
- * Related specs are
- * rfc2044        (UTF-8 and UTF-16) F. Yergeau Alis Technologies
- * [ISO-10646]    UTF-8 and UTF-16 in Annexes
- * [ISO-8859-1]   ISO Latin-1 characters codes.
- * [UNICODE]      The Unicode Consortium, "The Unicode Standard --
- *                Worldwide Character Encoding -- Version 1.0", Addison-
- *                Wesley, Volume 1, 1991, Volume 2, 1992.  UTF-8 is
- *                described in Unicode Technical Report #4.
- * [US-ASCII]     Coded Character Set--7-bit American Standard Code for
- *                Information Interchange, ANSI X3.4-1986.
- *
- * Copy: See Copyright for the status of this software.
+/**
+ * @file
+ * 
+ * @brief Character encoding conversion functions
+ * 
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_CHAR_ENCODING_H__
@@ -32,139 +21,181 @@ extern "C" {
 /*
  * Backward compatibility
  */
+/** @cond ignore */
 #define UTF8Toisolat1 xmlUTF8ToIsolat1
 #define isolat1ToUTF8 xmlIsolat1ToUTF8
+/** @endcond */
 
+/**
+ * Encoding conversion errors
+ */
 typedef enum {
+    /** Success */
     XML_ENC_ERR_SUCCESS     =  0,
+    /** Internal or unclassified error */
     XML_ENC_ERR_INTERNAL    = -1,
+    /** Invalid or untranslatable input sequence */
     XML_ENC_ERR_INPUT       = -2,
+    /** Not enough space in output buffer */
     XML_ENC_ERR_SPACE       = -3,
+    /** Out-of-memory error */
     XML_ENC_ERR_MEMORY      = -4
 } xmlCharEncError;
 
-/*
- * xmlCharEncoding:
- *
+/**
  * Predefined values for some standard encodings.
  */
 typedef enum {
-    XML_CHAR_ENCODING_ERROR=   -1, /* No char encoding detected */
-    XML_CHAR_ENCODING_NONE=	0, /* No char encoding detected */
-    XML_CHAR_ENCODING_UTF8=	1, /* UTF-8 */
-    XML_CHAR_ENCODING_UTF16LE=	2, /* UTF-16 little endian */
-    XML_CHAR_ENCODING_UTF16BE=	3, /* UTF-16 big endian */
-    XML_CHAR_ENCODING_UCS4LE=	4, /* UCS-4 little endian */
-    XML_CHAR_ENCODING_UCS4BE=	5, /* UCS-4 big endian */
-    XML_CHAR_ENCODING_EBCDIC=	6, /* EBCDIC uh! */
-    XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */
-    XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */
-    XML_CHAR_ENCODING_UCS2=	9, /* UCS-2 */
-    XML_CHAR_ENCODING_8859_1=	10,/* ISO-8859-1 ISO Latin 1 */
-    XML_CHAR_ENCODING_8859_2=	11,/* ISO-8859-2 ISO Latin 2 */
-    XML_CHAR_ENCODING_8859_3=	12,/* ISO-8859-3 */
-    XML_CHAR_ENCODING_8859_4=	13,/* ISO-8859-4 */
-    XML_CHAR_ENCODING_8859_5=	14,/* ISO-8859-5 */
-    XML_CHAR_ENCODING_8859_6=	15,/* ISO-8859-6 */
-    XML_CHAR_ENCODING_8859_7=	16,/* ISO-8859-7 */
-    XML_CHAR_ENCODING_8859_8=	17,/* ISO-8859-8 */
-    XML_CHAR_ENCODING_8859_9=	18,/* ISO-8859-9 */
-    XML_CHAR_ENCODING_2022_JP=  19,/* ISO-2022-JP */
-    XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */
-    XML_CHAR_ENCODING_EUC_JP=   21,/* EUC-JP */
-    XML_CHAR_ENCODING_ASCII=    22,/* pure ASCII */
-    /* Available since 2.14.0 */
-    XML_CHAR_ENCODING_UTF16=	23,/* UTF-16 native */
-    XML_CHAR_ENCODING_HTML=	24,/* HTML (output only) */
-    XML_CHAR_ENCODING_8859_10=	25,/* ISO-8859-10 */
-    XML_CHAR_ENCODING_8859_11=	26,/* ISO-8859-11 */
-    XML_CHAR_ENCODING_8859_13=	27,/* ISO-8859-13 */
-    XML_CHAR_ENCODING_8859_14=	28,/* ISO-8859-14 */
-    XML_CHAR_ENCODING_8859_15=	29,/* ISO-8859-15 */
-    XML_CHAR_ENCODING_8859_16=	30 /* ISO-8859-16 */
+    /** No char encoding detected */
+    XML_CHAR_ENCODING_ERROR=   -1,
+    /** No char encoding detected */
+    XML_CHAR_ENCODING_NONE=	0,
+    /** UTF-8 */
+    XML_CHAR_ENCODING_UTF8=	1,
+    /** UTF-16 little endian */
+    XML_CHAR_ENCODING_UTF16LE=	2,
+    /** UTF-16 big endian */
+    XML_CHAR_ENCODING_UTF16BE=	3,
+    /** UCS-4 little endian */
+    XML_CHAR_ENCODING_UCS4LE=	4,
+    /** UCS-4 big endian */
+    XML_CHAR_ENCODING_UCS4BE=	5,
+    /** EBCDIC uh! */
+    XML_CHAR_ENCODING_EBCDIC=	6,
+    /** UCS-4 unusual ordering */
+    XML_CHAR_ENCODING_UCS4_2143=7,
+    /** UCS-4 unusual ordering */
+    XML_CHAR_ENCODING_UCS4_3412=8,
+    /** UCS-2 */
+    XML_CHAR_ENCODING_UCS2=	9,
+    /** ISO-8859-1 ISO Latin 1 */
+    XML_CHAR_ENCODING_8859_1=	10,
+    /** ISO-8859-2 ISO Latin 2 */
+    XML_CHAR_ENCODING_8859_2=	11,
+    /** ISO-8859-3 */
+    XML_CHAR_ENCODING_8859_3=	12,
+    /** ISO-8859-4 */
+    XML_CHAR_ENCODING_8859_4=	13,
+    /** ISO-8859-5 */
+    XML_CHAR_ENCODING_8859_5=	14,
+    /** ISO-8859-6 */
+    XML_CHAR_ENCODING_8859_6=	15,
+    /** ISO-8859-7 */
+    XML_CHAR_ENCODING_8859_7=	16,
+    /** ISO-8859-8 */
+    XML_CHAR_ENCODING_8859_8=	17,
+    /** ISO-8859-9 */
+    XML_CHAR_ENCODING_8859_9=	18,
+    /** ISO-2022-JP */
+    XML_CHAR_ENCODING_2022_JP=  19,
+    /** Shift_JIS */
+    XML_CHAR_ENCODING_SHIFT_JIS=20,
+    /** EUC-JP */
+    XML_CHAR_ENCODING_EUC_JP=   21,
+    /** pure ASCII */
+    XML_CHAR_ENCODING_ASCII=    22,
+    /** UTF-16 native, available since 2.14 */
+    XML_CHAR_ENCODING_UTF16=	23,
+    /** HTML (output only), available since 2.14 */
+    XML_CHAR_ENCODING_HTML=	24,
+    /** ISO-8859-10, available since 2.14 */
+    XML_CHAR_ENCODING_8859_10=	25,
+    /** ISO-8859-11, available since 2.14 */
+    XML_CHAR_ENCODING_8859_11=	26,
+    /** ISO-8859-13, available since 2.14 */
+    XML_CHAR_ENCODING_8859_13=	27,
+    /** ISO-8859-14, available since 2.14 */
+    XML_CHAR_ENCODING_8859_14=	28,
+    /** ISO-8859-15, available since 2.14 */
+    XML_CHAR_ENCODING_8859_15=	29,
+    /** ISO-8859-16, available since 2.14 */
+    XML_CHAR_ENCODING_8859_16=	30,
+    /** windows-1252, available since 2.15 */
+    XML_CHAR_ENCODING_WINDOWS_1252 = 31
 } xmlCharEncoding;
 
+/**
+ * Encoding conversion flags
+ */
 typedef enum {
+    /** Create converter for input (conversion to UTF-8) */
     XML_ENC_INPUT = (1 << 0),
-    XML_ENC_OUTPUT = (1 << 1)
+    /** Create converter for output (conversion from UTF-8) */
+    XML_ENC_OUTPUT = (1 << 1),
+    /** Use HTML5 mappings */
+    XML_ENC_HTML = (1 << 2)
 } xmlCharEncFlags;
 
 /**
- * xmlCharEncodingInputFunc:
- * @out:  a pointer to an array of bytes to store the UTF-8 result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of chars in the original encoding
- * @inlen:  the length of @in
- *
  * Convert characters to UTF-8.
  *
- * On success, the value of @inlen after return is the number of
- * bytes consumed and @outlen is the number of bytes produced.
+ * On success, the value of `inlen` after return is the number of
+ * bytes consumed and `outlen` is the number of bytes produced.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * @param out  a pointer to an array of bytes to store the UTF-8 result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of chars in the original encoding
+ * @param inlen  the length of `in`
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 typedef int (*xmlCharEncodingInputFunc)(unsigned char *out, int *outlen,
                                         const unsigned char *in, int *inlen);
 
 
 /**
- * xmlCharEncodingOutputFunc:
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of UTF-8 chars
- * @inlen:  the length of @in
- *
  * Convert characters from UTF-8.
  *
- * On success, the value of @inlen after return is the number of
- * bytes consumed and @outlen is the number of bytes produced.
+ * On success, the value of `inlen` after return is the number of
+ * bytes consumed and `outlen` is the number of bytes produced.
  *
- * Returns the number of bytes written or an XML_ENC_ERR code.
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of UTF-8 chars
+ * @param inlen  the length of `in`
+ * @returns the number of bytes written or an xmlCharEncError code.
  */
 typedef int (*xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
                                          const unsigned char *in, int *inlen);
 
 
 /**
- * xmlCharEncConvFunc:
- * @vctxt:  conversion context
- * @out:  a pointer to an array of bytes to store the result
- * @outlen:  the length of @out
- * @in:  a pointer to an array of input bytes
- * @inlen:  the length of @in
- * @flush:  end of input
- *
  * Convert between character encodings.
  *
- * The value of @inlen after return is the number of bytes consumed
- * and @outlen is the number of bytes produced.
+ * The value of `inlen` after return is the number of bytes consumed
+ * and `outlen` is the number of bytes produced.
  *
  * If the converter can consume partial multi-byte sequences, the
- * @flush flag can be used to detect truncated sequences at EOF.
+ * `flush` flag can be used to detect truncated sequences at EOF.
  * Otherwise, the flag can be ignored.
  *
- * Returns an XML_ENC_ERR code.
+ * @param vctxt  conversion context
+ * @param out  a pointer to an array of bytes to store the result
+ * @param outlen  the length of `out`
+ * @param in  a pointer to an array of input bytes
+ * @param inlen  the length of `in`
+ * @param flush  end of input
+ * @returns an xmlCharEncError code.
  */
 typedef xmlCharEncError
 (*xmlCharEncConvFunc)(void *vctxt, unsigned char *out, int *outlen,
                       const unsigned char *in, int *inlen, int flush);
 
 /**
- * xmlCharEncConvCtxtDtor:
- * @vctxt:  conversion context
- *
  * Free a conversion context.
+ *
+ * @param vctxt  conversion context
  */
 typedef void
 (*xmlCharEncConvCtxtDtor)(void *vctxt);
 
-/*
- * Block defining the handlers for non UTF-8 encodings.
+/** Character encoding converter */
+typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
+typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
+/**
+ * A character encoding conversion handler for non UTF-8 encodings.
  *
  * This structure will be made private.
  */
-typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
-typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
 struct _xmlCharEncodingHandler {
     char *name XML_DEPRECATED_MEMBER;
     union {
@@ -182,19 +213,17 @@ struct _xmlCharEncodingHandler {
 };
 
 /**
- * xmlCharEncConvImpl:
- * @vctxt:  user data
- * @name:  encoding name
- * @flags:  bit mask of flags
- * @out:  pointer to resulting handler
- *
- * If this function returns XML_ERR_OK, it must fill the @out
+ * If this function returns XML_ERR_OK, it must fill the `out`
  * pointer with an encoding handler. The handler can be obtained
- * from xmlCharEncNewCustomHandler.
+ * from #xmlCharEncNewCustomHandler.
  *
- * @flags can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.
+ * `flags` can contain XML_ENC_INPUT, XML_ENC_OUTPUT or both.
  *
- * Returns an xmlParserErrors code.
+ * @param vctxt  user data
+ * @param name  encoding name
+ * @param flags  bit mask of flags
+ * @param out  pointer to resulting handler
+ * @returns an xmlParserErrors code.
  */
 typedef xmlParserErrors
 (*xmlCharEncConvImpl)(void *vctxt, const char *name, xmlCharEncFlags flags,
@@ -209,26 +238,28 @@ XMLPUBFUN void
 XML_DEPRECATED
 XMLPUBFUN void
 	xmlCleanupCharEncodingHandlers	(void);
+XML_DEPRECATED
 XMLPUBFUN void
-	xmlRegisterCharEncodingHandler	(xmlCharEncodingHandlerPtr handler);
+	xmlRegisterCharEncodingHandler	(xmlCharEncodingHandler *handler);
 XMLPUBFUN xmlParserErrors
 	xmlLookupCharEncodingHandler	(xmlCharEncoding enc,
-					 xmlCharEncodingHandlerPtr *out);
+					 xmlCharEncodingHandler **out);
 XMLPUBFUN xmlParserErrors
 	xmlOpenCharEncodingHandler	(const char *name,
 					 int output,
-					 xmlCharEncodingHandlerPtr *out);
+					 xmlCharEncodingHandler **out);
 XMLPUBFUN xmlParserErrors
 	xmlCreateCharEncodingHandler	(const char *name,
 					 xmlCharEncFlags flags,
 					 xmlCharEncConvImpl impl,
 					 void *implCtxt,
-					 xmlCharEncodingHandlerPtr *out);
-XMLPUBFUN xmlCharEncodingHandlerPtr
+					 xmlCharEncodingHandler **out);
+XMLPUBFUN xmlCharEncodingHandler *
 	xmlGetCharEncodingHandler	(xmlCharEncoding enc);
-XMLPUBFUN xmlCharEncodingHandlerPtr
+XMLPUBFUN xmlCharEncodingHandler *
 	xmlFindCharEncodingHandler	(const char *name);
-XMLPUBFUN xmlCharEncodingHandlerPtr
+XML_DEPRECATED
+XMLPUBFUN xmlCharEncodingHandler *
 	xmlNewCharEncodingHandler	(const char *name,
 					 xmlCharEncodingInputFunc input,
 					 xmlCharEncodingOutputFunc output);
@@ -244,13 +275,17 @@ XMLPUBFUN xmlParserErrors
 /*
  * Interfaces for encoding names and aliases.
  */
+XML_DEPRECATED
 XMLPUBFUN int
 	xmlAddEncodingAlias		(const char *name,
 					 const char *alias);
+XML_DEPRECATED
 XMLPUBFUN int
 	xmlDelEncodingAlias		(const char *alias);
+XML_DEPRECATED
 XMLPUBFUN const char *
 	xmlGetEncodingAlias		(const char *alias);
+XML_DEPRECATED
 XMLPUBFUN void
 	xmlCleanupEncodingAliases	(void);
 XMLPUBFUN xmlCharEncoding
@@ -265,9 +300,7 @@ XMLPUBFUN xmlCharEncoding
 	xmlDetectCharEncoding		(const unsigned char *in,
 					 int len);
 
-/** DOC_DISABLE */
 struct _xmlBuffer;
-/** DOC_ENABLE */
 XMLPUBFUN int
 	xmlCharEncOutFunc		(xmlCharEncodingHandler *handler,
 					 struct _xmlBuffer *out,
diff -pruN 2.14.6+dfsg-0.1/include/libxml/entities.h 2.15.0+dfsg-0.3/include/libxml/entities.h
--- 2.14.6+dfsg-0.1/include/libxml/entities.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/entities.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,143 +1,163 @@
-/*
- * Summary: interface for the XML entities handling
- * Description: this module provides some of the entity API needed
- *              for the parser and applications.
+/**
+ * @file
+ * 
+ * @brief XML entities
+ * 
+ * This module provides an API to work with XML entities.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_ENTITIES_H__
 #define __XML_ENTITIES_H__
 
-/** DOC_DISABLE */
 #include <libxml/xmlversion.h>
 #define XML_TREE_INTERNALS
 #include <libxml/tree.h>
 #undef XML_TREE_INTERNALS
-/** DOC_ENABLE */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * The different valid entity types.
+/**
+ * The different entity types.
  */
 typedef enum {
+    /** internal general entity */
     XML_INTERNAL_GENERAL_ENTITY = 1,
+    /** external general parsed entity */
     XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
+    /** external general unparsed entity */
     XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
+    /** internal parameter entity */
     XML_INTERNAL_PARAMETER_ENTITY = 4,
+    /** external parameter entity */
     XML_EXTERNAL_PARAMETER_ENTITY = 5,
+    /** internal predefined entity */
     XML_INTERNAL_PREDEFINED_ENTITY = 6
 } xmlEntityType;
 
-/*
- * An unit of storage for an entity, contains the string, the value
- * and the linkind data needed for the linking in the hash table.
+/**
+ * An entity declaration
  */
-
 struct _xmlEntity {
-    void           *_private;	        /* application data */
-    xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
-    const xmlChar          *name;	/* Entity name */
-    struct _xmlNode    *children;	/* First child link */
-    struct _xmlNode        *last;	/* Last child link */
-    struct _xmlDtd       *parent;	/* -> DTD */
-    struct _xmlNode        *next;	/* next sibling link  */
-    struct _xmlNode        *prev;	/* previous sibling link  */
-    struct _xmlDoc          *doc;       /* the containing document */
-
-    xmlChar                *orig;	/* content without ref substitution */
-    xmlChar             *content;	/* content or ndata if unparsed */
-    int                   length;	/* the content length */
-    xmlEntityType          etype;	/* The entity type */
-    const xmlChar    *ExternalID;	/* External identifier for PUBLIC */
-    const xmlChar      *SystemID;	/* URI for a SYSTEM or PUBLIC Entity */
-
-    struct _xmlEntity     *nexte;	/* unused */
-    const xmlChar           *URI;	/* the full URI as computed */
-    int                    owner;	/* unused */
-    int                    flags;       /* various flags */
-    unsigned long   expandedSize;       /* expanded size */
+    /** application data */
+    void           *_private;
+    /** XML_ENTITY_DECL, must be second ! */
+    xmlElementType          type;
+    /** Entity name */
+    const xmlChar          *name;
+    /** First child link */
+    struct _xmlNode    *children;
+    /** Last child link */
+    struct _xmlNode        *last;
+    /** -> DTD */
+    struct _xmlDtd       *parent;
+    /** next sibling link  */
+    struct _xmlNode        *next;
+    /** previous sibling link  */
+    struct _xmlNode        *prev;
+    /** the containing document */
+    struct _xmlDoc          *doc;
+
+    /** content without ref substitution */
+    xmlChar                *orig;
+    /** content or ndata if unparsed */
+    xmlChar             *content;
+    /** the content length */
+    int                   length;
+    /** The entity type */
+    xmlEntityType          etype;
+    /** External identifier for PUBLIC */
+    const xmlChar    *ExternalID;
+    /** URI for a SYSTEM or PUBLIC Entity */
+    const xmlChar      *SystemID;
+
+    /** unused */
+    struct _xmlEntity     *nexte;
+    /** the full URI as computed */
+    const xmlChar           *URI;
+    /** unused */
+    int                    owner;
+    /** various flags */
+    int                    flags;
+    /** expanded size */
+    unsigned long   expandedSize;
 };
 
-/*
- * All entities are stored in an hash table.
- * There is 2 separate hash tables for global and parameter entities.
- */
-
 typedef struct _xmlHashTable xmlEntitiesTable;
 typedef xmlEntitiesTable *xmlEntitiesTablePtr;
 
-/*
- * External functions:
- */
-
-XMLPUBFUN xmlEntityPtr
-			xmlNewEntity		(xmlDocPtr doc,
+XMLPUBFUN xmlEntity *
+			xmlNewEntity		(xmlDoc *doc,
 						 const xmlChar *name,
 						 int type,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID,
+						 const xmlChar *publicId,
+						 const xmlChar *systemId,
 						 const xmlChar *content);
 XMLPUBFUN void
-			xmlFreeEntity		(xmlEntityPtr entity);
+			xmlFreeEntity		(xmlEntity *entity);
 XMLPUBFUN int
-			xmlAddEntity		(xmlDocPtr doc,
+			xmlAddEntity		(xmlDoc *doc,
 						 int extSubset,
 						 const xmlChar *name,
 						 int type,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID,
+						 const xmlChar *publicId,
+						 const xmlChar *systemId,
 						 const xmlChar *content,
-						 xmlEntityPtr *out);
-XMLPUBFUN xmlEntityPtr
-			xmlAddDocEntity		(xmlDocPtr doc,
+						 xmlEntity **out);
+XMLPUBFUN xmlEntity *
+			xmlAddDocEntity		(xmlDoc *doc,
 						 const xmlChar *name,
 						 int type,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID,
+						 const xmlChar *publicId,
+						 const xmlChar *systemId,
 						 const xmlChar *content);
-XMLPUBFUN xmlEntityPtr
-			xmlAddDtdEntity		(xmlDocPtr doc,
+XMLPUBFUN xmlEntity *
+			xmlAddDtdEntity		(xmlDoc *doc,
 						 const xmlChar *name,
 						 int type,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID,
+						 const xmlChar *publicId,
+						 const xmlChar *systemId,
 						 const xmlChar *content);
-XMLPUBFUN xmlEntityPtr
+XMLPUBFUN xmlEntity *
 			xmlGetPredefinedEntity	(const xmlChar *name);
-XMLPUBFUN xmlEntityPtr
+XMLPUBFUN xmlEntity *
 			xmlGetDocEntity		(const xmlDoc *doc,
 						 const xmlChar *name);
-XMLPUBFUN xmlEntityPtr
-			xmlGetDtdEntity		(xmlDocPtr doc,
+XMLPUBFUN xmlEntity *
+			xmlGetDtdEntity		(xmlDoc *doc,
 						 const xmlChar *name);
-XMLPUBFUN xmlEntityPtr
-			xmlGetParameterEntity	(xmlDocPtr doc,
+XMLPUBFUN xmlEntity *
+			xmlGetParameterEntity	(xmlDoc *doc,
 						 const xmlChar *name);
 XMLPUBFUN xmlChar *
-			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
+			xmlEncodeEntitiesReentrant(xmlDoc *doc,
 						 const xmlChar *input);
 XMLPUBFUN xmlChar *
 			xmlEncodeSpecialChars	(const xmlDoc *doc,
 						 const xmlChar *input);
-XMLPUBFUN xmlEntitiesTablePtr
+XML_DEPRECATED
+XMLPUBFUN xmlEntitiesTable *
 			xmlCreateEntitiesTable	(void);
-XMLPUBFUN xmlEntitiesTablePtr
-			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
+XML_DEPRECATED
+XMLPUBFUN xmlEntitiesTable *
+			xmlCopyEntitiesTable	(xmlEntitiesTable *table);
+XML_DEPRECATED
 XMLPUBFUN void
-			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
+			xmlFreeEntitiesTable	(xmlEntitiesTable *table);
 #ifdef LIBXML_OUTPUT_ENABLED
+XML_DEPRECATED
 XMLPUBFUN void
-			xmlDumpEntitiesTable	(xmlBufferPtr buf,
-						 xmlEntitiesTablePtr table);
+			xmlDumpEntitiesTable	(xmlBuffer *buf,
+						 xmlEntitiesTable *table);
+XML_DEPRECATED
 XMLPUBFUN void
-			xmlDumpEntityDecl	(xmlBufferPtr buf,
-						 xmlEntityPtr ent);
+			xmlDumpEntityDecl	(xmlBuffer *buf,
+						 xmlEntity *ent);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 #ifdef __cplusplus
diff -pruN 2.14.6+dfsg-0.1/include/libxml/globals.h 2.15.0+dfsg-0.3/include/libxml/globals.h
--- 2.14.6+dfsg-0.1/include/libxml/globals.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/globals.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,8 +1,11 @@
-/*
- * Summary: interface for all global variables of the library
- * Description: Deprecated, don't use
+/**
+ * @file
+ * 
+ * @brief interface for all global variables of the library
+ * 
+ * Deprecated, don't use
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  */
 
 #ifndef __XML_GLOBALS_H
diff -pruN 2.14.6+dfsg-0.1/include/libxml/hash.h 2.15.0+dfsg-0.3/include/libxml/hash.h
--- 2.14.6+dfsg-0.1/include/libxml/hash.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/hash.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,12 @@
-/*
- * Summary: Chained hash tables
- * Description: This module implements the hash table support used in
+/**
+ * @file
+ * 
+ * @brief Chained hash tables
+ * 
+ * This module implements the hash table support used in
  *		various places in the library.
  *
- * Copy: See Copyright for the status of this software.
- *
- * Author: Bjorn Reese <bjorn.reese@systematic.dk>
+ * @copyright See Copyright for the status of this software.
  */
 
 #ifndef __XML_HASH_H__
@@ -19,8 +20,10 @@
 extern "C" {
 #endif
 
-/*
- * The hash table.
+/**
+ * Hash table mapping strings to pointers
+ *
+ * Also supports lookup using two or three strings as key.
  */
 typedef struct _xmlHashTable xmlHashTable;
 typedef xmlHashTable *xmlHashTablePtr;
@@ -33,16 +36,15 @@ typedef xmlHashTable *xmlHashTablePtr;
  * serious trouble within the library.
  */
 /**
- * XML_CAST_FPTR:
- * @fptr:  pointer to a function
- *
  * Macro to do a casting from an object pointer to a
  * function pointer without encountering a warning from
  * gcc
  *
- * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
+ * \#define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
  * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
  * so it is disabled now
+ *
+ * @param fptr  pointer to a function
  */
 
 #define XML_CAST_FPTR(fptr) fptr
@@ -51,41 +53,36 @@ typedef xmlHashTable *xmlHashTablePtr;
  * function types:
  */
 /**
- * xmlHashDeallocator:
- * @payload:  the data in the hash
- * @name:  the name associated
- *
  * Callback to free data from a hash.
+ *
+ * @param payload  the data in the hash
+ * @param name  the name associated
  */
 typedef void (*xmlHashDeallocator)(void *payload, const xmlChar *name);
 /**
- * xmlHashCopier:
- * @payload:  the data in the hash
- * @name:  the name associated
- *
  * Callback to copy data from a hash.
  *
- * Returns a copy of the data or NULL in case of error.
+ * @param payload  the data in the hash
+ * @param name  the name associated
+ * @returns a copy of the data or NULL in case of error.
  */
 typedef void *(*xmlHashCopier)(void *payload, const xmlChar *name);
 /**
- * xmlHashScanner:
- * @payload:  the data in the hash
- * @data:  extra scanner data
- * @name:  the name associated
- *
  * Callback when scanning data in a hash with the simple scanner.
+ *
+ * @param payload  the data in the hash
+ * @param data  extra scanner data
+ * @param name  the name associated
  */
 typedef void (*xmlHashScanner)(void *payload, void *data, const xmlChar *name);
 /**
- * xmlHashScannerFull:
- * @payload:  the data in the hash
- * @data:  extra scanner data
- * @name:  the name associated
- * @name2:  the second name associated
- * @name3:  the third name associated
- *
  * Callback when scanning data in a hash with the full scanner.
+ *
+ * @param payload  the data in the hash
+ * @param data  extra scanner data
+ * @param name  the name associated
+ * @param name2  the second name associated
+ * @param name3  the third name associated
  */
 typedef void (*xmlHashScannerFull)(void *payload, void *data,
 				   const xmlChar *name, const xmlChar *name2,
@@ -94,13 +91,13 @@ typedef void (*xmlHashScannerFull)(void
 /*
  * Constructor and destructor.
  */
-XMLPUBFUN xmlHashTablePtr
+XMLPUBFUN xmlHashTable *
 		xmlHashCreate		(int size);
-XMLPUBFUN xmlHashTablePtr
+XMLPUBFUN xmlHashTable *
 		xmlHashCreateDict	(int size,
-					 xmlDictPtr dict);
+					 xmlDict *dict);
 XMLPUBFUN void
-		xmlHashFree		(xmlHashTablePtr hash,
+		xmlHashFree		(xmlHashTable *hash,
 					 xmlHashDeallocator dealloc);
 XMLPUBFUN void
 		xmlHashDefaultDeallocator(void *entry,
@@ -110,48 +107,48 @@ XMLPUBFUN void
  * Add a new entry to the hash table.
  */
 XMLPUBFUN int
-		xmlHashAdd		(xmlHashTablePtr hash,
+		xmlHashAdd		(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashAddEntry		(xmlHashTablePtr hash,
+		xmlHashAddEntry		(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashUpdateEntry	(xmlHashTablePtr hash,
+		xmlHashUpdateEntry	(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         void *userdata,
 					 xmlHashDeallocator dealloc);
 XMLPUBFUN int
-		xmlHashAdd2		(xmlHashTablePtr hash,
+		xmlHashAdd2		(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashAddEntry2	(xmlHashTablePtr hash,
+		xmlHashAddEntry2	(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashUpdateEntry2	(xmlHashTablePtr hash,
+		xmlHashUpdateEntry2	(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         void *userdata,
 					 xmlHashDeallocator dealloc);
 XMLPUBFUN int
-		xmlHashAdd3		(xmlHashTablePtr hash,
+		xmlHashAdd3		(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         const xmlChar *name3,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashAddEntry3	(xmlHashTablePtr hash,
+		xmlHashAddEntry3	(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         const xmlChar *name3,
 		                         void *userdata);
 XMLPUBFUN int
-		xmlHashUpdateEntry3	(xmlHashTablePtr hash,
+		xmlHashUpdateEntry3	(xmlHashTable *hash,
 		                         const xmlChar *name,
 		                         const xmlChar *name2,
 		                         const xmlChar *name3,
@@ -162,16 +159,16 @@ XMLPUBFUN int
  * Remove an entry from the hash table.
  */
 XMLPUBFUN int
-		xmlHashRemoveEntry	(xmlHashTablePtr hash,
+		xmlHashRemoveEntry	(xmlHashTable *hash,
 					 const xmlChar *name,
 					 xmlHashDeallocator dealloc);
 XMLPUBFUN int
-		xmlHashRemoveEntry2	(xmlHashTablePtr hash,
+		xmlHashRemoveEntry2	(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2,
 					 xmlHashDeallocator dealloc);
 XMLPUBFUN int 
-		xmlHashRemoveEntry3	(xmlHashTablePtr hash,
+		xmlHashRemoveEntry3	(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2,
 					 const xmlChar *name3,
@@ -181,29 +178,29 @@ XMLPUBFUN int
  * Retrieve the payload.
  */
 XMLPUBFUN void *
-		xmlHashLookup		(xmlHashTablePtr hash,
+		xmlHashLookup		(xmlHashTable *hash,
 					 const xmlChar *name);
 XMLPUBFUN void *
-		xmlHashLookup2		(xmlHashTablePtr hash,
+		xmlHashLookup2		(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2);
 XMLPUBFUN void *
-		xmlHashLookup3		(xmlHashTablePtr hash,
+		xmlHashLookup3		(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2,
 					 const xmlChar *name3);
 XMLPUBFUN void *
-		xmlHashQLookup		(xmlHashTablePtr hash,
+		xmlHashQLookup		(xmlHashTable *hash,
 					 const xmlChar *prefix,
 					 const xmlChar *name);
 XMLPUBFUN void *
-		xmlHashQLookup2		(xmlHashTablePtr hash,
+		xmlHashQLookup2		(xmlHashTable *hash,
 					 const xmlChar *prefix,
 					 const xmlChar *name,
 					 const xmlChar *prefix2,
 					 const xmlChar *name2);
 XMLPUBFUN void *
-		xmlHashQLookup3		(xmlHashTablePtr hash,
+		xmlHashQLookup3		(xmlHashTable *hash,
 					 const xmlChar *prefix,
 					 const xmlChar *name,
 					 const xmlChar *prefix2,
@@ -214,32 +211,32 @@ XMLPUBFUN void *
 /*
  * Helpers.
  */
-XMLPUBFUN xmlHashTablePtr
-		xmlHashCopySafe		(xmlHashTablePtr hash,
+XMLPUBFUN xmlHashTable *
+		xmlHashCopySafe		(xmlHashTable *hash,
 					 xmlHashCopier copy,
 					 xmlHashDeallocator dealloc);
-XMLPUBFUN xmlHashTablePtr
-		xmlHashCopy		(xmlHashTablePtr hash,
+XMLPUBFUN xmlHashTable *
+		xmlHashCopy		(xmlHashTable *hash,
 					 xmlHashCopier copy);
 XMLPUBFUN int
-		xmlHashSize		(xmlHashTablePtr hash);
+		xmlHashSize		(xmlHashTable *hash);
 XMLPUBFUN void
-		xmlHashScan		(xmlHashTablePtr hash,
+		xmlHashScan		(xmlHashTable *hash,
 					 xmlHashScanner scan,
 					 void *data);
 XMLPUBFUN void
-		xmlHashScan3		(xmlHashTablePtr hash,
+		xmlHashScan3		(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2,
 					 const xmlChar *name3,
 					 xmlHashScanner scan,
 					 void *data);
 XMLPUBFUN void
-		xmlHashScanFull		(xmlHashTablePtr hash,
+		xmlHashScanFull		(xmlHashTable *hash,
 					 xmlHashScannerFull scan,
 					 void *data);
 XMLPUBFUN void
-		xmlHashScanFull3	(xmlHashTablePtr hash,
+		xmlHashScanFull3	(xmlHashTable *hash,
 					 const xmlChar *name,
 					 const xmlChar *name2,
 					 const xmlChar *name3,
diff -pruN 2.14.6+dfsg-0.1/include/libxml/list.h 2.15.0+dfsg-0.3/include/libxml/list.h
--- 2.14.6+dfsg-0.1/include/libxml/list.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/list.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: lists interfaces
- * Description: this module implement the list support used in
+/**
+ * @file
+ * 
+ * @brief lists interfaces
+ * 
+ * this module implement the list support used in
  * various place in the library.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
+ * @author Gary Pennington
  */
 
 #ifndef __XML_LINK_INCLUDE__
@@ -17,115 +20,120 @@
 extern "C" {
 #endif
 
+/**
+ * Linked list item
+ *
+ * @deprecated Don't use in new code.
+ */
 typedef struct _xmlLink xmlLink;
 typedef xmlLink *xmlLinkPtr;
 
+/**
+ * Linked list
+ *
+ * @deprecated Don't use in new code.
+ */
 typedef struct _xmlList xmlList;
 typedef xmlList *xmlListPtr;
 
 /**
- * xmlListDeallocator:
- * @lk:  the data to deallocate
- *
  * Callback function used to free data from a list.
+ *
+ * @param lk  the data to deallocate
  */
-typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
+typedef void (*xmlListDeallocator) (xmlLink *lk);
 /**
- * xmlListDataCompare:
- * @data0: the first data
- * @data1: the second data
- *
  * Callback function used to compare 2 data.
  *
- * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
+ * @param data0  the first data
+ * @param data1  the second data
+ * @returns 0 is equality, -1 or 1 otherwise depending on the ordering.
  */
 typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
 /**
- * xmlListWalker:
- * @data: the data found in the list
- * @user: extra user provided data to the walker
- *
- * Callback function used when walking a list with xmlListWalk().
+ * Callback function used when walking a list with #xmlListWalk.
  *
- * Returns 0 to stop walking the list, 1 otherwise.
+ * @param data  the data found in the list
+ * @param user  extra user provided data to the walker
+ * @returns 0 to stop walking the list, 1 otherwise.
  */
 typedef int (*xmlListWalker) (const void *data, void *user);
 
 /* Creation/Deletion */
-XMLPUBFUN xmlListPtr
+XMLPUBFUN xmlList *
 		xmlListCreate		(xmlListDeallocator deallocator,
 	                                 xmlListDataCompare compare);
 XMLPUBFUN void
-		xmlListDelete		(xmlListPtr l);
+		xmlListDelete		(xmlList *l);
 
 /* Basic Operators */
 XMLPUBFUN void *
-		xmlListSearch		(xmlListPtr l,
+		xmlListSearch		(xmlList *l,
 					 void *data);
 XMLPUBFUN void *
-		xmlListReverseSearch	(xmlListPtr l,
+		xmlListReverseSearch	(xmlList *l,
 					 void *data);
 XMLPUBFUN int
-		xmlListInsert		(xmlListPtr l,
+		xmlListInsert		(xmlList *l,
 					 void *data) ;
 XMLPUBFUN int
-		xmlListAppend		(xmlListPtr l,
+		xmlListAppend		(xmlList *l,
 					 void *data) ;
 XMLPUBFUN int
-		xmlListRemoveFirst	(xmlListPtr l,
+		xmlListRemoveFirst	(xmlList *l,
 					 void *data);
 XMLPUBFUN int
-		xmlListRemoveLast	(xmlListPtr l,
+		xmlListRemoveLast	(xmlList *l,
 					 void *data);
 XMLPUBFUN int
-		xmlListRemoveAll	(xmlListPtr l,
+		xmlListRemoveAll	(xmlList *l,
 					 void *data);
 XMLPUBFUN void
-		xmlListClear		(xmlListPtr l);
+		xmlListClear		(xmlList *l);
 XMLPUBFUN int
-		xmlListEmpty		(xmlListPtr l);
-XMLPUBFUN xmlLinkPtr
-		xmlListFront		(xmlListPtr l);
-XMLPUBFUN xmlLinkPtr
-		xmlListEnd		(xmlListPtr l);
+		xmlListEmpty		(xmlList *l);
+XMLPUBFUN xmlLink *
+		xmlListFront		(xmlList *l);
+XMLPUBFUN xmlLink *
+		xmlListEnd		(xmlList *l);
 XMLPUBFUN int
-		xmlListSize		(xmlListPtr l);
+		xmlListSize		(xmlList *l);
 
 XMLPUBFUN void
-		xmlListPopFront		(xmlListPtr l);
+		xmlListPopFront		(xmlList *l);
 XMLPUBFUN void
-		xmlListPopBack		(xmlListPtr l);
+		xmlListPopBack		(xmlList *l);
 XMLPUBFUN int
-		xmlListPushFront	(xmlListPtr l,
+		xmlListPushFront	(xmlList *l,
 					 void *data);
 XMLPUBFUN int
-		xmlListPushBack		(xmlListPtr l,
+		xmlListPushBack		(xmlList *l,
 					 void *data);
 
 /* Advanced Operators */
 XMLPUBFUN void
-		xmlListReverse		(xmlListPtr l);
+		xmlListReverse		(xmlList *l);
 XMLPUBFUN void
-		xmlListSort		(xmlListPtr l);
+		xmlListSort		(xmlList *l);
 XMLPUBFUN void
-		xmlListWalk		(xmlListPtr l,
+		xmlListWalk		(xmlList *l,
 					 xmlListWalker walker,
 					 void *user);
 XMLPUBFUN void
-		xmlListReverseWalk	(xmlListPtr l,
+		xmlListReverseWalk	(xmlList *l,
 					 xmlListWalker walker,
 					 void *user);
 XMLPUBFUN void
-		xmlListMerge		(xmlListPtr l1,
-					 xmlListPtr l2);
-XMLPUBFUN xmlListPtr
-		xmlListDup		(xmlListPtr old);
+		xmlListMerge		(xmlList *l1,
+					 xmlList *l2);
+XMLPUBFUN xmlList *
+		xmlListDup		(xmlList *old);
 XMLPUBFUN int
-		xmlListCopy		(xmlListPtr cur,
-					 xmlListPtr old);
+		xmlListCopy		(xmlList *cur,
+					 xmlList *old);
 /* Link operators */
 XMLPUBFUN void *
-		xmlLinkGetData          (xmlLinkPtr lk);
+		xmlLinkGetData          (xmlLink *lk);
 
 /* xmlListUnique() */
 /* xmlListSwap */
diff -pruN 2.14.6+dfsg-0.1/include/libxml/meson.build 2.15.0+dfsg-0.3/include/libxml/meson.build
--- 2.14.6+dfsg-0.1/include/libxml/meson.build	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/meson.build	2025-09-15 11:55:59.000000000 +0000
@@ -13,7 +13,6 @@ xmlversion_h.set10('WITH_ICONV', want_ic
 xmlversion_h.set10('WITH_ICU', want_icu)
 xmlversion_h.set10('WITH_ISO8859X', want_iso8859x)
 xmlversion_h.set10('WITH_LEGACY', want_legacy)
-xmlversion_h.set10('WITH_LZMA', want_lzma)
 xmlversion_h.set10('WITH_MODULES', want_modules)
 xmlversion_h.set('MODULE_EXTENSION', module_extension)
 xmlversion_h.set10('WITH_OUTPUT', want_output)
diff -pruN 2.14.6+dfsg-0.1/include/libxml/nanoftp.h 2.15.0+dfsg-0.3/include/libxml/nanoftp.h
--- 2.14.6+dfsg-0.1/include/libxml/nanoftp.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/nanoftp.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,9 +1,12 @@
-/*
- * Summary: Removed legacy symbols for an outdated FTP client
+/**
+ * @file
+ * 
+ * @brief Removed legacy symbols for an outdated FTP client
+ * 
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __NANO_FTP_H__
diff -pruN 2.14.6+dfsg-0.1/include/libxml/nanohttp.h 2.15.0+dfsg-0.3/include/libxml/nanohttp.h
--- 2.14.6+dfsg-0.1/include/libxml/nanohttp.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/nanohttp.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: minimal HTTP implementation
- * Description: minimal HTTP implementation allowing to fetch resources
+/**
+ * @file
+ * 
+ * @brief minimal HTTP implementation
+ * 
+ * minimal HTTP implementation allowing to fetch resources
  *              like external subset.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __NANO_HTTP_H__
@@ -13,7 +16,7 @@
 
 #include <libxml/xmlversion.h>
 
-#ifdef LIBXML_HTTP_ENABLED
+#ifdef LIBXML_HTTP_STUBS_ENABLED
 
 #ifdef __cplusplus
 extern "C" {
@@ -94,5 +97,5 @@ XMLPUBFUN void
 }
 #endif
 
-#endif /* LIBXML_HTTP_ENABLED */
+#endif /* LIBXML_HTTP_STUBS_ENABLED */
 #endif /* __NANO_HTTP_H__ */
diff -pruN 2.14.6+dfsg-0.1/include/libxml/parser.h 2.15.0+dfsg-0.3/include/libxml/parser.h
--- 2.14.6+dfsg-0.1/include/libxml/parser.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/parser.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,18 +1,22 @@
-/*
- * Summary: the core parser module
- * Description: Interfaces, constants and types related to the XML parser
+/**
+ * @file
+ * 
+ * @brief Validating XML 1.0 parser
+ * 
+ * Interfaces, constants and types related to the XML parser.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_PARSER_H__
 #define __XML_PARSER_H__
 
-/** DOC_DISABLE */
 #include <libxml/xmlversion.h>
+/** @cond ignore */
 #define XML_TREE_INTERNALS
+/** @endcond */
 #include <libxml/tree.h>
 #undef XML_TREE_INTERNALS
 #include <libxml/dict.h>
@@ -27,82 +31,113 @@
 /* for compatibility */
 #include <libxml/SAX2.h>
 #include <libxml/threads.h>
-/** DOC_ENABLE */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /**
- * XML_DEFAULT_VERSION:
- *
  * The default version of XML used: 1.0
  */
 #define XML_DEFAULT_VERSION	"1.0"
 
+/**
+ * Status after parsing a document
+ */
 typedef enum {
+    /** not well-formed */
     XML_STATUS_NOT_WELL_FORMED          = (1 << 0),
+    /** not namespace-well-formed */
     XML_STATUS_NOT_NS_WELL_FORMED       = (1 << 1),
+    /** DTD validation failed */
     XML_STATUS_DTD_VALIDATION_FAILED    = (1 << 2),
+    /** catastrophic failure like OOM or I/O error */
     XML_STATUS_CATASTROPHIC_ERROR       = (1 << 3)
 } xmlParserStatus;
 
+/**
+ * Resource type for resource loaders
+ */
 typedef enum {
+    /** unknown */
     XML_RESOURCE_UNKNOWN = 0,
+    /** main document */
     XML_RESOURCE_MAIN_DOCUMENT,
+    /** external DTD */
     XML_RESOURCE_DTD,
+    /** external general entity */
     XML_RESOURCE_GENERAL_ENTITY,
+    /** external parameter entity */
     XML_RESOURCE_PARAMETER_ENTITY,
+    /** XIncluded document */
     XML_RESOURCE_XINCLUDE,
+    /** XIncluded text */
     XML_RESOURCE_XINCLUDE_TEXT
 } xmlResourceType;
 
+/**
+ * Flags for parser input
+ */
 typedef enum {
+    /** The input buffer won't be changed during parsing. */
     XML_INPUT_BUF_STATIC            = (1 << 1),
+    /** The input buffer is zero-terminated. (Note that the zero
+        byte shouldn't be included in buffer size.) */
     XML_INPUT_BUF_ZERO_TERMINATED   = (1 << 2),
+    /** Uncompress gzipped file input */
     XML_INPUT_UNZIP                 = (1 << 3),
-    XML_INPUT_NETWORK               = (1 << 4)
+    /** Allow network access. Unused internally. */
+    XML_INPUT_NETWORK               = (1 << 4),
+    /** Allow system catalog to resolve URIs. */
+    XML_INPUT_USE_SYS_CATALOG       = (1 << 5)
 } xmlParserInputFlags;
 
-/**
- * xmlParserInput:
- *
- * An xmlParserInput is an input flow for the XML processor.
- * Each entity parsed is associated an xmlParserInput (except the
- * few predefined ones). This is the case both for internal entities
- * - in which case the flow is already completely in memory - or
- * external entities - in which case we use the buf structure for
- * progressive reading and I18N conversions to the internal UTF-8 format.
- */
+/* Deprecated */
+typedef void (* xmlParserInputDeallocate)(xmlChar *str);
 
 /**
- * xmlParserInputDeallocate:
- * @str:  the string to deallocate
- *
- * Callback for freeing some parser input allocations.
+ * Parser input
  */
-typedef void (* xmlParserInputDeallocate)(xmlChar *str);
-
 struct _xmlParserInput {
     /* Input buffer */
-    xmlParserInputBufferPtr buf;
-    /* The file analyzed, if any */
+    xmlParserInputBuffer *buf XML_DEPRECATED_MEMBER;
+    /**
+     * @deprecated Use #xmlCtxtGetInputPosition
+     *
+     * The filename or URI, if any
+     */
     const char *filename;
     /* unused */
     const char *directory XML_DEPRECATED_MEMBER;
     /* Base of the array to parse */
     const xmlChar *base;
-    /* Current char being parsed */
+    /**
+     * @deprecated Use #xmlCtxtGetInputWindow
+     *
+     * Current char being parsed
+     */
     const xmlChar *cur;
     /* end of the array to parse */
     const xmlChar *end;
     /* unused */
     int length XML_DEPRECATED_MEMBER;
-    /* Current line */
+    /**
+     * @deprecated Use #xmlCtxtGetInputPosition
+     *
+     * Current line
+     */
     int line;
-    /* Current column */
+    /**
+     * @deprecated Use #xmlCtxtGetInputPosition
+     *
+     * Current column
+     */
     int col;
-    /* How many xmlChars already consumed */
+    /**
+     * @deprecated Use #xmlCtxtGetInputPosition
+     *
+     * How many xmlChars already consumed
+     */
     unsigned long consumed;
     /* function to deallocate the base */
     xmlParserInputDeallocate free XML_DEPRECATED_MEMBER;
@@ -112,21 +147,16 @@ struct _xmlParserInput {
     const xmlChar *version XML_DEPRECATED_MEMBER;
     /* Flags */
     int flags XML_DEPRECATED_MEMBER;
-    /* an unique identifier for the entity */
+    /* an unique identifier for the entity, unused internally */
     int id XML_DEPRECATED_MEMBER;
     /* unused */
     unsigned long parentConsumed XML_DEPRECATED_MEMBER;
     /* entity, if any */
-    xmlEntityPtr entity XML_DEPRECATED_MEMBER;
+    xmlEntity *entity XML_DEPRECATED_MEMBER;
 };
 
-/**
- * xmlParserNodeInfo:
- *
- * The parser can be asked to collect Node information, i.e. at what
- * place in the file they were detected.
- * NOTE: This is off by default and not very well tested.
- */
+/** @cond ignore */
+
 typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
 typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
 
@@ -147,11 +177,8 @@ struct _xmlParserNodeInfoSeq {
   xmlParserNodeInfo* buffer;
 };
 
-/**
- * xmlParserInputState:
- *
- * The parser is now working also as a state based parser.
- * The recursive one use the state info for entities processing.
+/*
+ * Internal type
  */
 typedef enum {
     XML_PARSER_EOF = -1,	/* nothing is to be parsed */
@@ -175,19 +202,15 @@ typedef enum {
     XML_PARSER_XML_DECL         /* before XML decl (but after BOM) */
 } xmlParserInputState;
 
-/** DOC_DISABLE */
 /*
  * Internal bits in the 'loadsubset' context member
  */
 #define XML_DETECT_IDS		2
 #define XML_COMPLETE_ATTRS	4
 #define XML_SKIP_IDS		8
-/** DOC_ENABLE */
 
-/**
- * xmlParserMode:
- *
- * A parser can operate in various modes
+/*
+ * Internal type. Only XML_PARSE_READER is used.
  */
 typedef enum {
     XML_PARSE_UNKNOWN = 0,
@@ -202,93 +225,132 @@ typedef struct _xmlStartTag xmlStartTag;
 typedef struct _xmlParserNsData xmlParserNsData;
 typedef struct _xmlAttrHashBucket xmlAttrHashBucket;
 
+/** @endcond */
+
 /**
- * xmlResourceLoader:
- * @ctxt:  parser context
- * @url:  URL to load
- * @publicId:  publid ID from DTD (optional)
- * @type:  resource type
- * @flags:  flags
- * @out:  result pointer
- *
  * Callback for custom resource loaders.
  *
- * @flags can contain XML_INPUT_UNZIP and XML_INPUT_NETWORK.
+ * `flags` can contain XML_INPUT_UNZIP and XML_INPUT_NETWORK.
  *
- * On success, @out should be set to a new parser input object and
+ * The URL is resolved using XML catalogs before being passed to
+ * the callback.
+ *
+ * On success, `out` should be set to a new parser input object and
  * XML_ERR_OK should be returned.
  *
- * Returns an xmlParserErrors code.
+ * @param ctxt  parser context
+ * @param url  URL or system ID to load
+ * @param publicId  publid ID from DTD (optional)
+ * @param type  resource type
+ * @param flags  flags
+ * @param out  result pointer
+ * @returns an xmlParserErrors code.
  */
 typedef xmlParserErrors
 (*xmlResourceLoader)(void *ctxt, const char *url, const char *publicId,
                      xmlResourceType type, xmlParserInputFlags flags,
-                     xmlParserInputPtr *out);
+                     xmlParserInput **out);
 
 /**
- * xmlParserCtxt:
- *
- * The parser context.
- * NOTE This doesn't completely define the parser state, the (current ?)
- *      design of the parser uses recursive function calls since this allow
- *      and easy mapping from the production rules of the specification
- *      to the actual code. The drawback is that the actual function call
- *      also reflect the parser state. However most of the parsing routines
- *      takes as the only argument the parser context pointer, so migrating
- *      to a state based parser for progressive parsing shouldn't be too hard.
+ * Parser context
  */
 struct _xmlParserCtxt {
-    /* The SAX handler */
+    /**
+     * @deprecated Use xmlCtxtGetSaxHandler() and
+     * xmlCtxtSetSaxHandler().
+     *
+     * the SAX handler
+     */
     struct _xmlSAXHandler *sax;
-    /* For SAX interface only, used by DOM build */
+    /**
+     * @deprecated Use #xmlCtxtGetUserData
+     *
+     * user data for SAX interface, defaults to the context itself
+     */
     void *userData;
-    /* the document being built */
-    xmlDocPtr myDoc;
-    /* is the document well formed */
+    /**
+     * @deprecated Use xmlCtxtGetDocument()
+     *
+     * the document being built
+     */
+    xmlDoc *myDoc;
+    /**
+     * @deprecated Use xmlCtxtGetStatus()
+     *
+     * is the document well formed?
+     */
     int wellFormed;
-    /* shall we replace entities ? */
+    /**
+     * @deprecated Use xmlParserOption XML_PARSE_NOENT
+     *
+     * shall we replace entities?
+     */
     int replaceEntities XML_DEPRECATED_MEMBER;
-    /* the XML version string */
-    const xmlChar *version;
-    /* the declared encoding, if any */
-    const xmlChar *encoding;
-    /* standalone document */
+    /**
+     * @deprecated Use xmlCtxtGetVersion()
+     *
+     * the XML version string
+     */
+    xmlChar *version;
+    /**
+     * @deprecated Use xmlCtxtGetDeclaredEncoding()
+     *
+     * the declared encoding, if any
+     */
+    xmlChar *encoding;
+    /**
+     * @deprecated Use xmlCtxtGetStandalone()
+     *
+     * standalone document
+     */
     int standalone;
 
-    /* an HTML(1) document
-     * 3 is HTML after <head>
-     * 10 is HTML after <body>
+    /**
+     * @deprecated Use xmlCtxtIsHtml()
+     *
+     * non-zero for HTML documents, actually an htmlInsertMode
      */
     int html;
 
     /* Input stream stack */
 
-    /* Current input stream */
-    xmlParserInputPtr input;
+    /**
+     * Current input stream
+     */
+    /* TODO: Add accessors, see issue #762 */
+    xmlParserInput *input;
     /* Number of current input streams */
     int inputNr;
     /* Max number of input streams */
     int inputMax XML_DEPRECATED_MEMBER;
     /* stack of inputs */
-    xmlParserInputPtr *inputTab;
+    xmlParserInput **inputTab;
 
     /* Node analysis stack only used for DOM building */
 
-    /* Current parsed Node */
-    xmlNodePtr node;
+    /**
+     * @deprecated Use #xmlCtxtGetNode
+     *
+     * The current element.
+     */
+    xmlNode *node;
     /* Depth of the parsing stack */
     int nodeNr XML_DEPRECATED_MEMBER;
     /* Max depth of the parsing stack */
     int nodeMax XML_DEPRECATED_MEMBER;
     /* array of nodes */
-    xmlNodePtr *nodeTab XML_DEPRECATED_MEMBER;
+    xmlNode **nodeTab XML_DEPRECATED_MEMBER;
 
     /* Whether node info should be kept */
     int record_info;
     /* info about each node parsed */
     xmlParserNodeInfoSeq node_seq XML_DEPRECATED_MEMBER;
 
-    /* error code */
+    /**
+     * @deprecated Use xmlCtxtGetLastError()
+     *
+     * error code
+     */
     int errNo;
 
     /* reference and external subset */
@@ -298,11 +360,23 @@ struct _xmlParserCtxt {
     /* unused */
     int external XML_DEPRECATED_MEMBER;
 
-    /* is the document valid */
+    /**
+     * @deprecated Use xmlCtxtGetStatus()
+     *
+     * is the document valid
+     */
     int valid;
-    /* shall we try to validate ? */
+    /**
+     * @deprecated Use xmlParserOption XML_PARSE_DTDVALID
+     *
+     * shall we try to validate?
+     */
     int validate XML_DEPRECATED_MEMBER;
-    /* The validity context */
+    /**
+     * @deprecated Use xmlCtxtGetValidCtxt()
+     *
+     * The validity context
+     */
     xmlValidCtxt vctxt;
 
     /* push parser state */
@@ -310,7 +384,12 @@ struct _xmlParserCtxt {
     /* unused */
     int token XML_DEPRECATED_MEMBER;
 
-    /* unused internally, still used downstream */
+    /**
+     * @deprecated Don't use
+     *
+     * The main document URI, if available, with its last
+     * component stripped.
+     */
     char *directory;
 
     /* Node name stack */
@@ -328,17 +407,49 @@ struct _xmlParserCtxt {
     long nbChars XML_DEPRECATED_MEMBER;
     /* used by progressive parsing lookup */
     long checkIndex XML_DEPRECATED_MEMBER;
-    /* ugly but ... */
+    /**
+     * @deprecated Use inverted xmlParserOption XML_PARSE_NOBLANKS
+     *
+     * ugly but ...
+     */
     int keepBlanks XML_DEPRECATED_MEMBER;
-    /* SAX callbacks are disabled */
-    int disableSAX;
-    /* Parsing is in int 1/ext 2 subset */
+    /**
+     * @deprecated Use xmlCtxtIsStopped()
+     *
+     * SAX callbacks are disabled
+     */
+    int disableSAX XML_DEPRECATED_MEMBER;
+    /**
+     * @deprecated Use xmlCtxtIsInSubset
+     *
+     * Set if DTD content is parsed.
+     *
+     * - 0: not in DTD
+     * - 1: in internal DTD subset
+     * - 2: in external DTD subset
+     */
     int inSubset;
-    /* name of subset */
+    /**
+     * @deprecated Use the `name` argument of the
+     * `internalSubset` SAX callback or #xmlCtxtGetDocTypeDecl
+     *
+     * Name of the internal subset (root element type).
+     */
     const xmlChar *intSubName;
-    /* URI of external subset */
+    /**
+     * @deprecated Use the `systemId` argument of the
+     * `internalSubset` SAX callback or #xmlCtxtGetDocTypeDecl
+     *
+     * System identifier (URI) of external the subset.
+     */
     xmlChar *extSubURI;
-    /* SYSTEM ID of external subset */
+    /**
+     * @deprecated Use the `publicId` argument of the
+     * `internalSubset` SAX callback or #xmlCtxtGetDocTypeDecl
+     *
+     * This member is MISNAMED. It contains the *public* identifier
+     * of the external subset.
+     */
     xmlChar *extSubSystem;
 
     /* xml:space values */
@@ -355,30 +466,61 @@ struct _xmlParserCtxt {
     /* to prevent entity substitution loops */
     int depth XML_DEPRECATED_MEMBER;
     /* unused */
-    xmlParserInputPtr entity XML_DEPRECATED_MEMBER;
+    xmlParserInput *entity XML_DEPRECATED_MEMBER;
     /* unused */
     int charset XML_DEPRECATED_MEMBER;
-    /* Those two fields are there to */
+    /* Those two fields are there to speed up large node parsing */
     int nodelen XML_DEPRECATED_MEMBER;
-    /* Speed up large node parsing */
     int nodemem XML_DEPRECATED_MEMBER;
-    /* signal pedantic warnings */
+    /**
+     * @deprecated Use xmlParserOption XML_PARSE_PEDANTIC
+     *
+     * signal pedantic warnings
+     */
     int pedantic XML_DEPRECATED_MEMBER;
-    /* For user data, libxml won't touch it */
+    /**
+     * @deprecated Use xmlCtxtGetPrivate() and xmlCtxtSetPrivate()
+     *
+     * For user data, libxml won't touch it
+     */
     void *_private;
-
-    /* should the external subset be loaded */
-    int loadsubset;
-    /* set line number in element content */
+    /**
+     * @deprecated Use xmlParserOption XML_PARSE_DTDLOAD,
+     * XML_PARSE_DTDATTR or XML_PARSE_SKIP_IDS.
+     *
+     * Control loading of the external subset and handling of IDs.
+     * Other options like `validate` can override this value.
+     *
+     * - 0: The default behavior is to process IDs and to ignore
+     *   the external subset.
+     * - XML_DETECT_IDS: Load external subset. This flag is
+     *   misnamed. ID handling is only controlled by XML_SKIP_IDS.
+     * - XML_COMPLETE_ATTRS: Load external subset and process
+     *   default attributes.
+     * - XML_SKIP_IDS: Ignore IDs.
+     */
+    int loadsubset XML_DEPRECATED_MEMBER;
+    /* unused */
     int linenumbers XML_DEPRECATED_MEMBER;
-    /* document's own catalog */
+    /**
+     * @deprecated Use xmlCtxtGetCatalogs() and xmlCtxtSetCatalogs()
+     *
+     * document's own catalog
+     */
     void *catalogs XML_DEPRECATED_MEMBER;
-    /* run in recovery mode */
+    /**
+     * @deprecated Use xmlParserOption XML_PARSE_RECOVER
+     * run in recovery mode
+     */
     int recovery XML_DEPRECATED_MEMBER;
     /* unused */
     int progressive XML_DEPRECATED_MEMBER;
-    /* dictionary for the parser */
-    xmlDictPtr dict;
+    /**
+     * @deprecated Use xmlCtxtGetDict() and xmlCtxtSetDict()
+     *
+     * dictionary for the parser
+     */
+    xmlDict *dict;
     /* array for the attributes callbacks */
     const xmlChar **atts XML_DEPRECATED_MEMBER;
     /* the size of the array */
@@ -410,30 +552,46 @@ struct _xmlParserCtxt {
     /* array of data for push */
     xmlStartTag *pushTab XML_DEPRECATED_MEMBER;
     /* defaulted attributes if any */
-    xmlHashTablePtr attsDefault XML_DEPRECATED_MEMBER;
+    xmlHashTable *attsDefault XML_DEPRECATED_MEMBER;
     /* non-CDATA attributes if any */
-    xmlHashTablePtr attsSpecial XML_DEPRECATED_MEMBER;
-    /* is the document XML Namespace okay */
+    xmlHashTable *attsSpecial XML_DEPRECATED_MEMBER;
+
+    /**
+     * @deprecated Use xmlCtxtGetStatus()
+     *
+     * is the document XML Namespace okay
+     */
     int nsWellFormed;
-    /* Extra options */
+    /**
+     * @deprecated Use xmlCtxtGetOptions()
+     *
+     * Extra options
+     */
     int options;
 
+    /**
+     * @deprecated Use inverted xmlParserOption XML_PARSE_NODICT
+     *
+     * Use dictionary names for the tree
+     */
+    int dictNames XML_DEPRECATED_MEMBER;
+
     /*
      * Those fields are needed only for streaming parsing so far
      */
 
-    /* Use dictionary names for the tree */
-    int dictNames XML_DEPRECATED_MEMBER;
     /* number of freed element nodes */
     int freeElemsNr XML_DEPRECATED_MEMBER;
     /* List of freed element nodes */
-    xmlNodePtr freeElems XML_DEPRECATED_MEMBER;
+    xmlNode *freeElems XML_DEPRECATED_MEMBER;
     /* number of freed attributes nodes */
     int freeAttrsNr XML_DEPRECATED_MEMBER;
     /* List of freed attributes nodes */
-    xmlAttrPtr freeAttrs XML_DEPRECATED_MEMBER;
+    xmlAttr *freeAttrs XML_DEPRECATED_MEMBER;
 
-    /*
+    /**
+     * @deprecated Use xmlCtxtGetLastError()
+     *
      * the complete error information for the last error.
      */
     xmlError lastError XML_DEPRECATED_MEMBER;
@@ -486,8 +644,6 @@ struct _xmlParserCtxt {
 };
 
 /**
- * xmlSAXLocator:
- *
  * A SAX Locator.
  */
 struct _xmlSAXLocator {
@@ -498,88 +654,70 @@ struct _xmlSAXLocator {
 };
 
 /**
- * xmlSAXHandler:
+ * SAX callback to resolve external entities.
  *
- * A SAX handler is bunch of callbacks called by the parser when processing
- * of the input generate data or structure information.
- */
-
-/**
- * resolveEntitySAXFunc:
- * @ctx:  the user data (XML parser context)
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
- * 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's own entity resolution routine
+ * This is only used to load DTDs. The preferred way to install
+ * custom resolvers is #xmlCtxtSetResourceLoader.
  *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ * @param ctx  the user data (XML parser context)
+ * @param publicId  The public identifier of the entity
+ * @param systemId  The system identifier of the entity (URL)
+ * @returns the xmlParserInput if inlined or NULL for DOM behaviour.
  */
-typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
+typedef xmlParserInput *(*resolveEntitySAXFunc) (void *ctx,
 				const xmlChar *publicId,
 				const xmlChar *systemId);
 /**
- * internalSubsetSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  the root element name
- * @ExternalID:  the external ID
- * @SystemID:  the SYSTEM ID (e.g. filename or URL)
+ * SAX callback for the internal subset.
  *
- * Callback on internal subset declaration.
+ * @param ctx  the user data (XML parser context)
+ * @param name  the root element name
+ * @param publicId  the public identifier
+ * @param systemId  the system identifier (e.g. filename or URL)
  */
 typedef void (*internalSubsetSAXFunc) (void *ctx,
 				const xmlChar *name,
-				const xmlChar *ExternalID,
-				const xmlChar *SystemID);
+				const xmlChar *publicId,
+				const xmlChar *systemId);
 /**
- * externalSubsetSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  the root element name
- * @ExternalID:  the external ID
- * @SystemID:  the SYSTEM ID (e.g. filename or URL)
+ * SAX callback for the external subset.
  *
- * Callback on external subset declaration.
+ * @param ctx  the user data (XML parser context)
+ * @param name  the root element name
+ * @param publicId  the public identifier
+ * @param systemId  the system identifier (e.g. filename or URL)
  */
 typedef void (*externalSubsetSAXFunc) (void *ctx,
 				const xmlChar *name,
-				const xmlChar *ExternalID,
-				const xmlChar *SystemID);
+				const xmlChar *publicId,
+				const xmlChar *systemId);
 /**
- * getEntitySAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name: The entity name
- *
- * Get an entity by name.
+ * SAX callback to look up a general entity by name.
  *
- * Returns the xmlEntityPtr if found.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
+ * @returns the xmlEntity if found.
  */
-typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
+typedef xmlEntity *(*getEntitySAXFunc) (void *ctx,
 				const xmlChar *name);
 /**
- * getParameterEntitySAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name: The entity name
- *
- * Get a parameter entity by name.
+ * SAX callback to look up a parameter entity by name.
  *
- * Returns the xmlEntityPtr if found.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
+ * @returns the xmlEntity if found.
  */
-typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
+typedef xmlEntity *(*getParameterEntitySAXFunc) (void *ctx,
 				const xmlChar *name);
 /**
- * entityDeclSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  the entity name
- * @type:  the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
+ * SAX callback for entity declarations.
  *
- * An entity definition has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param name  the entity name
+ * @param type  the entity type
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param content  the entity value (without processing).
  */
 typedef void (*entityDeclSAXFunc) (void *ctx,
 				const xmlChar *name,
@@ -588,29 +726,27 @@ typedef void (*entityDeclSAXFunc) (void
 				const xmlChar *systemId,
 				xmlChar *content);
 /**
- * notationDeclSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
+ * SAX callback for notation declarations.
  *
- * What to do when a notation declaration has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The name of the notation
+ * @param publicId  The public ID of the notation
+ * @param systemId  The system ID of the notation
  */
 typedef void (*notationDeclSAXFunc)(void *ctx,
 				const xmlChar *name,
 				const xmlChar *publicId,
 				const xmlChar *systemId);
 /**
- * attributeDeclSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @elem:  the name of the element
- * @fullname:  the attribute name
- * @type:  the attribute type
- * @def:  the type of default value
- * @defaultValue: the attribute default value
- * @tree:  the tree of enumerated value set
+ * SAX callback for attribute declarations.
  *
- * An attribute definition has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param elem  the name of the element
+ * @param fullname  the attribute name
+ * @param type  the attribute type
+ * @param def  the type of default value
+ * @param defaultValue  the attribute default value
+ * @param tree  the tree of enumerated value set
  */
 typedef void (*attributeDeclSAXFunc)(void *ctx,
 				const xmlChar *elem,
@@ -618,29 +754,27 @@ typedef void (*attributeDeclSAXFunc)(voi
 				int type,
 				int def,
 				const xmlChar *defaultValue,
-				xmlEnumerationPtr tree);
+				xmlEnumeration *tree);
 /**
- * elementDeclSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  the element name
- * @type:  the element type
- * @content: the element value tree
+ * SAX callback for element declarations.
  *
- * An element definition has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param name  the element name
+ * @param type  the element type
+ * @param content  the element value tree
  */
 typedef void (*elementDeclSAXFunc)(void *ctx,
 				const xmlChar *name,
 				int type,
-				xmlElementContentPtr content);
+				xmlElementContent *content);
 /**
- * unparsedEntityDeclSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
+ * SAX callback for unparsed entity declarations.
  *
- * What to do when an unparsed entity declaration is parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The name of the entity
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param notationName  the name of the notation
  */
 typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
 				const xmlChar *name,
@@ -648,185 +782,163 @@ typedef void (*unparsedEntityDeclSAXFunc
 				const xmlChar *systemId,
 				const xmlChar *notationName);
 /**
- * setDocumentLocatorSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @loc: A SAX Locator
+ * This callback receives the "document locator" at startup,
+ * which is always the global xmlDefaultSAXLocator.
  *
- * Receive the document locator at startup, actually xmlDefaultSAXLocator.
- * Everything is available on the context, so this is useless in our case.
+ * Everything is available on the context, so this is useless in
+ * our case.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param loc  A SAX Locator
  */
 typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
-				xmlSAXLocatorPtr loc);
+				xmlSAXLocator *loc);
 /**
- * startDocumentSAXFunc:
- * @ctx:  the user data (XML parser context)
+ * SAX callback for start of document.
  *
- * Called when the document start being processed.
+ * @param ctx  the user data (XML parser context)
  */
 typedef void (*startDocumentSAXFunc) (void *ctx);
 /**
- * endDocumentSAXFunc:
- * @ctx:  the user data (XML parser context)
+ * SAX callback for end of document.
  *
- * Called when the document end has been detected.
+ * @param ctx  the user data (XML parser context)
  */
 typedef void (*endDocumentSAXFunc) (void *ctx);
 /**
- * startElementSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  The element name, including namespace prefix
- * @atts:  An array of name/value attributes pairs, NULL terminated
+ * SAX callback for start tags.
  *
- * Called when an opening tag has been processed.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The element name, including namespace prefix
+ * @param atts  An array of name/value attributes pairs, NULL terminated
  */
 typedef void (*startElementSAXFunc) (void *ctx,
 				const xmlChar *name,
 				const xmlChar **atts);
 /**
- * endElementSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  The element name
+ * SAX callback for end tags.
  *
- * Called when the end of an element has been detected.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The element name
  */
 typedef void (*endElementSAXFunc) (void *ctx,
 				const xmlChar *name);
 /**
- * attributeSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  The attribute name, including namespace prefix
- * @value:  The attribute value
- *
- * 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.
+ * Callback for attributes.
+ *
+ * @deprecated This typedef is unused.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param name  The attribute name, including namespace prefix
+ * @param value  The attribute value
  */
 typedef void (*attributeSAXFunc) (void *ctx,
 				const xmlChar *name,
 				const xmlChar *value);
 /**
- * referenceSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @name:  The entity name
+ * SAX callback for entity references.
  *
- * Called when an entity reference is detected.
+ * @param ctx  the user data (XML parser context)
+ * @param name  The entity name
  */
 typedef void (*referenceSAXFunc) (void *ctx,
 				const xmlChar *name);
 /**
- * charactersSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
+ * SAX callback for character data.
  *
- * Receiving some chars from the parser.
+ * @param ctx  the user data (XML parser context)
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 typedef void (*charactersSAXFunc) (void *ctx,
 				const xmlChar *ch,
 				int len);
 /**
- * ignorableWhitespaceSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
+ * SAX callback for "ignorable" whitespace.
  *
- * Receiving some ignorable whitespaces from the parser.
- * UNUSED: by default the DOM building will use characters.
+ * @param ctx  the user data (XML parser context)
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
 				const xmlChar *ch,
 				int len);
 /**
- * processingInstructionSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @target:  the target name
- * @data: the PI data's
+ * SAX callback for processing instructions.
  *
- * A processing instruction has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param target  the target name
+ * @param data  the PI data's
  */
 typedef void (*processingInstructionSAXFunc) (void *ctx,
 				const xmlChar *target,
 				const xmlChar *data);
 /**
- * commentSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @value:  the comment content
+ * SAX callback for comments.
  *
- * A comment has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param value  the comment content
  */
 typedef void (*commentSAXFunc) (void *ctx,
 				const xmlChar *value);
 /**
- * cdataBlockSAXFunc:
- * @ctx:  the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
+ * SAX callback for CDATA sections.
  *
- * Called when a pcdata block has been parsed.
+ * @param ctx  the user data (XML parser context)
+ * @param value  The pcdata content
+ * @param len  the block length
  */
 typedef void (*cdataBlockSAXFunc) (
 	                        void *ctx,
 				const xmlChar *value,
 				int len);
 /**
- * warningSAXFunc:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
+ * SAX callback for warning messages.
  *
- * Display and format a warning messages, callback.
+ * @param ctx  an XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 typedef void (*warningSAXFunc) (void *ctx,
 				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 /**
- * errorSAXFunc:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
+ * SAX callback for error messages.
  *
- * Display and format an error messages, callback.
+ * @param ctx  an XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 typedef void (*errorSAXFunc) (void *ctx,
 				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 /**
- * fatalErrorSAXFunc:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format fatal error messages, callback.
- * Note: so far fatalError() SAX callbacks are not used, error()
- *       get all the callbacks for errors.
+ * SAX callback for fatal error messages.
+ *
+ * @param ctx  an XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 typedef void (*fatalErrorSAXFunc) (void *ctx,
 				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 /**
- * isStandaloneSAXFunc:
- * @ctx:  the user data (XML parser context)
- *
- * Is this document tagged standalone?
+ * SAX callback to get standalone status.
  *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 typedef int (*isStandaloneSAXFunc) (void *ctx);
 /**
- * hasInternalSubsetSAXFunc:
- * @ctx:  the user data (XML parser context)
+ * SAX callback to get internal subset status.
  *
- * Does this document has an internal subset.
- *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
 
 /**
- * hasExternalSubsetSAXFunc:
- * @ctx:  the user data (XML parser context)
- *
- * Does this document has an external subset?
+ * SAX callback to get external subset status.
  *
- * Returns 1 if true
+ * @param ctx  the user data (XML parser context)
+ * @returns 1 if true
  */
 typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
 
@@ -836,29 +948,27 @@ typedef int (*hasExternalSubsetSAXFunc)
  *									*
  ************************************************************************/
 /**
- * XML_SAX2_MAGIC:
- *
- * Special constant found in SAX2 blocks initialized fields
+ * Special constant required for SAX2 handlers.
  */
 #define XML_SAX2_MAGIC 0xDEEDBEAF
 
 /**
- * startElementNsSAX2Func:
- * @ctx:  the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
- * @nb_namespaces:  number of namespace definitions on that node
- * @namespaces:  pointer to the array of prefix/URI pairs namespace definitions
- * @nb_attributes:  the number of attributes on that node
- * @nb_defaulted:  the number of defaulted attributes. The defaulted
- *                  ones are at the end of the array
- * @attributes:  pointer to the array of (localname/prefix/URI/value/end)
- *               attribute values.
+ * SAX2 callback for start tags.
  *
- * SAX2 callback when an element start has been detected by the parser.
  * It provides the namespace information for the element, as well as
  * the new namespace declarations on the element.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
+ * @param nb_namespaces  number of namespace definitions on that node
+ * @param namespaces  pointer to the array of prefix/URI pairs namespace definitions
+ * @param nb_attributes  the number of attributes on that node
+ * @param nb_defaulted  the number of defaulted attributes. The defaulted
+ *                  ones are at the end of the array
+ * @param attributes  pointer to the array of (localname/prefix/URI/value/end)
+ *               attribute values.
  */
 
 typedef void (*startElementNsSAX2Func) (void *ctx,
@@ -872,14 +982,14 @@ typedef void (*startElementNsSAX2Func) (
 					const xmlChar **attributes);
 
 /**
- * endElementNsSAX2Func:
- * @ctx:  the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
+ * SAX2 callback for end tags.
  *
- * SAX2 callback when an element end has been detected by the parser.
  * It provides the namespace information for the element.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
  */
 
 typedef void (*endElementNsSAX2Func)   (void *ctx,
@@ -887,28 +997,101 @@ typedef void (*endElementNsSAX2Func)   (
 					const xmlChar *prefix,
 					const xmlChar *URI);
 
-
+/**
+ * Callbacks for SAX parser
+ *
+ * For DTD-related handlers, it's recommended to either use the
+ * original libxml2 handler or set them to NULL if DTDs can be
+ * ignored.
+ */
 struct _xmlSAXHandler {
-    /*
-     * For DTD-related handlers, it's recommended to either use the
-     * original libxml2 handler or set them to NULL if DTDs can be
-     * ignored.
-     */
-    internalSubsetSAXFunc internalSubset; /* DTD */
-    isStandaloneSAXFunc isStandalone; /* unused */
-    hasInternalSubsetSAXFunc hasInternalSubset; /* DTD */
-    hasExternalSubsetSAXFunc hasExternalSubset; /* DTD */
-    resolveEntitySAXFunc resolveEntity; /* DTD */
-    getEntitySAXFunc getEntity; /* DTD */
-    entityDeclSAXFunc entityDecl; /* DTD */
-    notationDeclSAXFunc notationDecl; /* DTD */
-    attributeDeclSAXFunc attributeDecl; /* DTD */
-    elementDeclSAXFunc elementDecl; /* DTD */
-    unparsedEntityDeclSAXFunc unparsedEntityDecl; /* DTD */
-    setDocumentLocatorSAXFunc setDocumentLocator; /* deprecated */
+    /**
+     * Called after the start of the document type declaration
+     * was parsed.
+     *
+     * Should typically not be modified.
+     */
+    internalSubsetSAXFunc internalSubset;
+    /**
+     * Standalone status. Not invoked by the parser. Not supposed
+     * to be changed by applications.
+     */
+    isStandaloneSAXFunc isStandalone;
+    /**
+     * Internal subset availability. Not invoked by the parser.
+     * Not supposed to be changed by applications.
+     */
+    hasInternalSubsetSAXFunc hasInternalSubset;
+    /**
+     * External subset availability. Not invoked by the parser.
+     * Not supposed to be changed by applications.
+     */
+    hasExternalSubsetSAXFunc hasExternalSubset;
+    /**
+     * Only called when loading external DTDs. Not called to load
+     * external entities.
+     *
+     * Should typically not be modified.
+     */
+    resolveEntitySAXFunc resolveEntity;
+    /**
+     * Called when looking up general entities.
+     *
+     * Should typically not be modified.
+     */
+    getEntitySAXFunc getEntity;
+    /**
+     * Called after an entity declaration was parsed.
+     *
+     * Should typically not be modified.
+     */
+    entityDeclSAXFunc entityDecl;
+    /**
+     * Called after a notation declaration was parsed.
+     *
+     * Should typically not be modified.
+     */
+    notationDeclSAXFunc notationDecl;
+    /**
+     * Called after an attribute declaration was parsed.
+     *
+     * Should typically not be modified.
+     */
+    attributeDeclSAXFunc attributeDecl;
+    /**
+     * Called after an element declaration was parsed.
+     *
+     * Should typically not be modified.
+     */
+    elementDeclSAXFunc elementDecl;
+    /**
+     * Called after an unparsed entity declaration was parsed.
+     *
+     * Should typically not be modified.
+     */
+    unparsedEntityDeclSAXFunc unparsedEntityDecl;
+    /**
+     * This callback receives the "document locator" at startup,
+     * which is always the global xmlDefaultSAXLocator.
+     *
+     * Everything is available on the context, so this is useless in
+     * our case.
+     */
+    setDocumentLocatorSAXFunc setDocumentLocator;
+    /**
+     * Called after the XML declaration was parsed.
+     *
+     * Use xmlCtxtGetVersion(), xmlCtxtGetDeclaredEncoding() and
+     * xmlCtxtGetStandalone() to get data from the XML declaration.
+     */
     startDocumentSAXFunc startDocument;
+    /**
+     * Called at the end of the document.
+     */
     endDocumentSAXFunc endDocument;
-    /*
+    /**
+     * Legacy start tag handler
+     *
      * `startElement` and `endElement` are only used by the legacy SAX1
      * interface and should not be used in new software. If you really
      * have to enable SAX1, the preferred way is set the `initialized`
@@ -922,46 +1105,102 @@ struct _xmlSAXHandler {
      * together with custom SAX callbacks.
      */
     startElementSAXFunc startElement;
+    /**
+     * See _xmlSAXHandler.startElement
+     */
     endElementSAXFunc endElement;
+    /**
+     * Called after an entity reference was parsed.
+     */
     referenceSAXFunc reference;
+    /**
+     * Called after a character data was parsed.
+     */
     charactersSAXFunc characters;
-    /*
+    /**
+     * Called after "ignorable" whitespace was parsed.
+     *
      * `ignorableWhitespace` should always be set to the same value
      * as `characters`. Otherwise, the parser will try to detect
      * whitespace which is unreliable.
      */
     ignorableWhitespaceSAXFunc ignorableWhitespace;
+    /**
+     * Called after a processing instruction was parsed.
+     */
     processingInstructionSAXFunc processingInstruction;
+    /**
+     * Called after a comment was parsed.
+     */
     commentSAXFunc comment;
+    /**
+     * Callback for warning messages.
+     */
     warningSAXFunc warning;
+    /**
+     * Callback for error messages.
+     */
     errorSAXFunc error;
-    fatalErrorSAXFunc fatalError; /* unused, `error` gets all the errors */
-    getParameterEntitySAXFunc getParameterEntity; /* DTD */
+    /**
+     * Unused, all errors go to `error`.
+     */
+    fatalErrorSAXFunc fatalError;
+    /**
+     * Called when looking up parameter entities.
+     *
+     * Should typically not be modified.
+     */
+    getParameterEntitySAXFunc getParameterEntity;
+    /**
+     * Called after a CDATA section was parsed.
+     */
     cdataBlockSAXFunc cdataBlock;
-    externalSubsetSAXFunc externalSubset; /* DTD */
-    /*
-     * `initialized` should always be set to XML_SAX2_MAGIC to enable the
-     * modern SAX2 interface.
+    /**
+     * Called to parse the external subset.
+     *
+     * Should typically not be modified.
+     */
+    externalSubsetSAXFunc externalSubset;
+    /**
+     * Legacy magic value
+     *
+     * `initialized` should always be set to XML_SAX2_MAGIC to
+     * enable the modern SAX2 interface.
      */
     unsigned int initialized;
-    /*
-     * The following members are only used by the SAX2 interface.
+    /**
+     * Application data
      */
     void *_private;
+    /**
+     * Called after a start tag was parsed.
+     */
     startElementNsSAX2Func startElementNs;
+    /**
+     * Called after an end tag was parsed.
+     */
     endElementNsSAX2Func endElementNs;
-    /*
+    /**
+     * Structured error handler.
+     *
      * Takes precedence over `error` or `warning`, but modern code
-     * should use xmlCtxtSetErrorHandler.
+     * should use xmlCtxtSetErrorHandler().
      */
     xmlStructuredErrorFunc serror;
 };
 
-/*
- * SAX Version 1
+/**
+ * SAX handler, version 1.
+ *
+ * @deprecated Use version 2 handlers.
  */
 typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
 typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
+/**
+ * SAX handler, version 1.
+ *
+ * @deprecated Use version 2 handlers.
+ */
 struct _xmlSAXHandlerV1 {
     internalSubsetSAXFunc internalSubset;
     isStandaloneSAXFunc isStandalone;
@@ -995,18 +1234,19 @@ struct _xmlSAXHandlerV1 {
 
 
 /**
- * xmlExternalEntityLoader:
- * @URL: The System ID of the resource requested
- * @ID: The Public ID of the resource requested
- * @context: the XML parser context
+ * Callback for external entity loader.
  *
- * External entity loaders types.
+ * The URL is not resolved using XML catalogs before being passed
+ * to the callback.
  *
- * Returns the entity input parser.
- */
-typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
-					 const char *ID,
-					 xmlParserCtxtPtr context);
+ * @param URL  The URL or system ID of the resource requested
+ * @param publicId  The public ID of the resource requested (optional)
+ * @param context  the XML parser context
+ * @returns the entity input parser or NULL on error.
+ */
+typedef xmlParserInput *(*xmlExternalEntityLoader) (const char *URL,
+					 const char *publicId,
+					 xmlParserCtxt *context);
 
 /*
  * Variables
@@ -1014,10 +1254,14 @@ typedef xmlParserInputPtr (*xmlExternalE
 
 XMLPUBVAR const char *const xmlParserVersion;
 
-/** DOC_DISABLE */
+/** @cond ignore */
+
 XML_DEPRECATED
 XMLPUBVAR const xmlSAXLocator xmlDefaultSAXLocator;
 #ifdef LIBXML_SAX1_ENABLED
+/**
+ * @deprecated Use #xmlSAXVersion or #xmlSAX2InitDefaultSAXHandler
+ */
 XML_DEPRECATED
 XMLPUBVAR const xmlSAXHandlerV1 xmlDefaultSAXHandler;
 #endif
@@ -1038,31 +1282,96 @@ XML_DEPRECATED
 XMLPUBFUN int *__xmlSubstituteEntitiesDefaultValue(void);
 
 #ifdef LIBXML_OUTPUT_ENABLED
+XML_DEPRECATED
 XMLPUBFUN int *__xmlIndentTreeOutput(void);
+XML_DEPRECATED
 XMLPUBFUN const char **__xmlTreeIndentString(void);
+XML_DEPRECATED
 XMLPUBFUN int *__xmlSaveNoEmptyTags(void);
 #endif
 
+/** @endcond */
+
 #ifndef XML_GLOBALS_NO_REDEFINITION
+  /**
+   * Thread-local setting to enable validation. Defaults to 0.
+   *
+   * @deprecated Use the parser option XML_PARSE_DTDVALID.
+   */
   #define xmlDoValidityCheckingDefaultValue \
     (*__xmlDoValidityCheckingDefaultValue())
+  /**
+   * Thread-local setting to disable warnings. Defaults to 1.
+   *
+   * @deprecated Use the parser option XML_PARSE_NOWARNING.
+   */
   #define xmlGetWarningsDefaultValue \
     (*__xmlGetWarningsDefaultValue())
+  /**
+   * Thread-local setting to ignore some whitespace. Defaults
+   * to 1.
+   *
+   * @deprecated Use the parser option XML_PARSE_NOBLANKS.
+   */
   #define xmlKeepBlanksDefaultValue (*__xmlKeepBlanksDefaultValue())
+  /**
+   * Thread-local setting to store line numbers. Defaults
+   * to 0, but is always enabled after setting parser options.
+   *
+   * @deprecated Shouldn't be needed when using parser options.
+   */
   #define xmlLineNumbersDefaultValue \
     (*__xmlLineNumbersDefaultValue())
+  /**
+   * Thread-local setting to enable loading of external DTDs.
+   * Defaults to 0.
+   *
+   * @deprecated Use the parser option XML_PARSE_DTDLOAD.
+   */
   #define xmlLoadExtDtdDefaultValue (*__xmlLoadExtDtdDefaultValue())
+  /**
+   * Thread-local setting to enable pedantic warnings.
+   * Defaults to 0.
+   *
+   * @deprecated Use the parser option XML_PARSE_PEDANTIC.
+   */
   #define xmlPedanticParserDefaultValue \
     (*__xmlPedanticParserDefaultValue())
+  /**
+   * Thread-local setting to enable entity substitution.
+   * Defaults to 0.
+   *
+   * @deprecated Use the parser option XML_PARSE_NOENT.
+   */
   #define xmlSubstituteEntitiesDefaultValue \
     (*__xmlSubstituteEntitiesDefaultValue())
   #ifdef LIBXML_OUTPUT_ENABLED
+    /**
+     * Thread-local setting to disable indenting when
+     * formatting output. Defaults to 1.
+     *
+     * @deprecated Use the xmlsave.h API with option
+     * XML_SAVE_NO_INDENT.
+     */
     #define xmlIndentTreeOutput (*__xmlIndentTreeOutput())
+    /**
+     * Thread-local setting to change the indent string.
+     * Defaults to two spaces.
+     *
+     * @deprecated Use the xmlsave.h API and
+     * xmlSaveSetIndentString().
+     */
     #define xmlTreeIndentString (*__xmlTreeIndentString())
+    /**
+     * Thread-local setting to disable empty tags when
+     * serializing. Defaults to 0.
+     *
+     * @deprecated Use the xmlsave.h API with option
+     * XML_SAVE_NO_EMPTY.
+     */
     #define xmlSaveNoEmptyTags (*__xmlSaveNoEmptyTags())
   #endif
 #endif
-/** DOC_ENABLE */
 
 /*
  * Init/Cleanup
@@ -1083,46 +1392,47 @@ XMLPUBFUN void
  */
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlParserInputRead	(xmlParserInputPtr in,
+		xmlParserInputRead	(xmlParserInput *in,
 					 int len);
 XMLPUBFUN int
-		xmlParserInputGrow	(xmlParserInputPtr in,
+		xmlParserInputGrow	(xmlParserInput *in,
 					 int len);
 
 /*
  * Basic parsing Interfaces
  */
 #ifdef LIBXML_SAX1_ENABLED
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlParseDoc		(const xmlChar *cur);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlParseFile		(const char *filename);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlParseMemory		(const char *buffer,
 					 int size);
 #endif /* LIBXML_SAX1_ENABLED */
 XML_DEPRECATED
 XMLPUBFUN int
 		xmlSubstituteEntitiesDefault(int val);
-XML_DEPRECATED
-XMLPUBFUN int
-                xmlThrDefSubstituteEntitiesDefaultValue(int v);
 XMLPUBFUN int
 		xmlKeepBlanksDefault	(int val);
-XML_DEPRECATED
-XMLPUBFUN int
-		xmlThrDefKeepBlanksDefaultValue(int v);
 XMLPUBFUN void
-		xmlStopParser		(xmlParserCtxtPtr ctxt);
+		xmlStopParser		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
 		xmlPedanticParserDefault(int val);
 XML_DEPRECATED
 XMLPUBFUN int
-                xmlThrDefPedanticParserDefaultValue(int v);
+		xmlLineNumbersDefault	(int val);
+
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlLineNumbersDefault	(int val);
+                xmlThrDefSubstituteEntitiesDefaultValue(int v);
+XML_DEPRECATED
+XMLPUBFUN int
+		xmlThrDefKeepBlanksDefaultValue(int v);
+XML_DEPRECATED
+XMLPUBFUN int
+                xmlThrDefPedanticParserDefaultValue(int v);
 XML_DEPRECATED
 XMLPUBFUN int
                 xmlThrDefLineNumbersDefaultValue(int v);
@@ -1141,14 +1451,14 @@ XMLPUBFUN int
  * Recovery mode
  */
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlRecoverDoc		(const xmlChar *cur);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlRecoverMemory	(const char *buffer,
 					 int size);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlRecoverFile		(const char *filename);
 #endif /* LIBXML_SAX1_ENABLED */
 
@@ -1156,162 +1466,163 @@ XMLPUBFUN xmlDocPtr
  * Less common routines and SAX interfaces
  */
 XMLPUBFUN int
-		xmlParseDocument	(xmlParserCtxtPtr ctxt);
+		xmlParseDocument	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlParseExtParsedEnt	(xmlParserCtxtPtr ctxt);
+		xmlParseExtParsedEnt	(xmlParserCtxt *ctxt);
 #ifdef LIBXML_SAX1_ENABLED
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlSAXUserParseFile	(xmlSAXHandlerPtr sax,
+		xmlSAXUserParseFile	(xmlSAXHandler *sax,
 					 void *user_data,
 					 const char *filename);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlSAXUserParseMemory	(xmlSAXHandlerPtr sax,
+		xmlSAXUserParseMemory	(xmlSAXHandler *sax,
 					 void *user_data,
 					 const char *buffer,
 					 int size);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseDoc		(xmlSAXHandler *sax,
 					 const xmlChar *cur,
 					 int recovery);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseMemory	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseMemory	(xmlSAXHandler *sax,
 					 const char *buffer,
 					 int size,
 					 int recovery);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseMemoryWithData (xmlSAXHandler *sax,
 					 const char *buffer,
 					 int size,
 					 int recovery,
 					 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseFile		(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseFile		(xmlSAXHandler *sax,
 					 const char *filename,
 					 int recovery);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseFileWithData	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseFileWithData	(xmlSAXHandler *sax,
 					 const char *filename,
 					 int recovery,
 					 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
-		xmlSAXParseEntity	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlDoc *
+		xmlSAXParseEntity	(xmlSAXHandler *sax,
 					 const char *filename);
 XML_DEPRECATED
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlParseEntity		(const char *filename);
 #endif /* LIBXML_SAX1_ENABLED */
 
 #ifdef LIBXML_VALID_ENABLED
-XMLPUBFUN xmlDtdPtr
-		xmlCtxtParseDtd		(xmlParserCtxtPtr ctxt,
-					 xmlParserInputPtr input,
-					 const xmlChar *ExternalID,
-					 const xmlChar *SystemID);
-XMLPUBFUN int
-		xmlCtxtValidateDocument	(xmlParserCtxtPtr ctxt,
-					 xmlDocPtr doc);
-XMLPUBFUN int
-		xmlCtxtValidateDtd	(xmlParserCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlDtdPtr dtd);
-XML_DEPRECATED
-XMLPUBFUN xmlDtdPtr
-		xmlSAXParseDTD		(xmlSAXHandlerPtr sax,
-					 const xmlChar *ExternalID,
-					 const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr
-		xmlParseDTD		(const xmlChar *ExternalID,
-					 const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr
-		xmlIOParseDTD		(xmlSAXHandlerPtr sax,
-					 xmlParserInputBufferPtr input,
+XMLPUBFUN xmlDtd *
+		xmlCtxtParseDtd		(xmlParserCtxt *ctxt,
+					 xmlParserInput *input,
+					 const xmlChar *publicId,
+					 const xmlChar *systemId);
+XMLPUBFUN int
+		xmlCtxtValidateDocument	(xmlParserCtxt *ctxt,
+					 xmlDoc *doc);
+XMLPUBFUN int
+		xmlCtxtValidateDtd	(xmlParserCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlDtd *dtd);
+XML_DEPRECATED
+XMLPUBFUN xmlDtd *
+		xmlSAXParseDTD		(xmlSAXHandler *sax,
+					 const xmlChar *publicId,
+					 const xmlChar *systemId);
+XMLPUBFUN xmlDtd *
+		xmlParseDTD		(const xmlChar *publicId,
+					 const xmlChar *systemId);
+XMLPUBFUN xmlDtd *
+		xmlIOParseDTD		(xmlSAXHandler *sax,
+					 xmlParserInputBuffer *input,
 					 xmlCharEncoding enc);
 #endif /* LIBXML_VALID_ENABLE */
 #ifdef LIBXML_SAX1_ENABLED
 XMLPUBFUN int
-		xmlParseBalancedChunkMemory(xmlDocPtr doc,
-					 xmlSAXHandlerPtr sax,
+		xmlParseBalancedChunkMemory(xmlDoc *doc,
+					 xmlSAXHandler *sax,
 					 void *user_data,
 					 int depth,
 					 const xmlChar *string,
-					 xmlNodePtr *lst);
+					 xmlNode **lst);
 #endif /* LIBXML_SAX1_ENABLED */
 XMLPUBFUN xmlParserErrors
-		xmlParseInNodeContext	(xmlNodePtr node,
+		xmlParseInNodeContext	(xmlNode *node,
 					 const char *data,
 					 int datalen,
 					 int options,
-					 xmlNodePtr *lst);
+					 xmlNode **lst);
 #ifdef LIBXML_SAX1_ENABLED
 XMLPUBFUN int
-		xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
-                     xmlSAXHandlerPtr sax,
+		xmlParseBalancedChunkMemoryRecover(xmlDoc *doc,
+                     xmlSAXHandler *sax,
                      void *user_data,
                      int depth,
                      const xmlChar *string,
-                     xmlNodePtr *lst,
+                     xmlNode **lst,
                      int recover);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlParseExternalEntity	(xmlDocPtr doc,
-					 xmlSAXHandlerPtr sax,
+		xmlParseExternalEntity	(xmlDoc *doc,
+					 xmlSAXHandler *sax,
 					 void *user_data,
 					 int depth,
 					 const xmlChar *URL,
 					 const xmlChar *ID,
-					 xmlNodePtr *lst);
+					 xmlNode **lst);
 #endif /* LIBXML_SAX1_ENABLED */
 XMLPUBFUN int
-		xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
+		xmlParseCtxtExternalEntity(xmlParserCtxt *ctx,
 					 const xmlChar *URL,
 					 const xmlChar *ID,
-					 xmlNodePtr *lst);
+					 xmlNode **lst);
 
 /*
  * Parser contexts handling.
  */
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 		xmlNewParserCtxt	(void);
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 		xmlNewSAXParserCtxt	(const xmlSAXHandler *sax,
 					 void *userData);
 XMLPUBFUN int
-		xmlInitParserCtxt	(xmlParserCtxtPtr ctxt);
+		xmlInitParserCtxt	(xmlParserCtxt *ctxt);
+XML_DEPRECATED
 XMLPUBFUN void
-		xmlClearParserCtxt	(xmlParserCtxtPtr ctxt);
+		xmlClearParserCtxt	(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-		xmlFreeParserCtxt	(xmlParserCtxtPtr ctxt);
+		xmlFreeParserCtxt	(xmlParserCtxt *ctxt);
 #ifdef LIBXML_SAX1_ENABLED
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlSetupParserForBuffer	(xmlParserCtxtPtr ctxt,
+		xmlSetupParserForBuffer	(xmlParserCtxt *ctxt,
 					 const xmlChar* buffer,
 					 const char *filename);
 #endif /* LIBXML_SAX1_ENABLED */
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 		xmlCreateDocParserCtxt	(const xmlChar *cur);
 
 #ifdef LIBXML_PUSH_ENABLED
 /*
  * Interfaces for the Push mode.
  */
-XMLPUBFUN xmlParserCtxtPtr
-		xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlParserCtxt *
+		xmlCreatePushParserCtxt(xmlSAXHandler *sax,
 					 void *user_data,
 					 const char *chunk,
 					 int size,
 					 const char *filename);
 XMLPUBFUN int
-		xmlParseChunk		(xmlParserCtxtPtr ctxt,
+		xmlParseChunk		(xmlParserCtxt *ctxt,
 					 const char *chunk,
 					 int size,
 					 int terminate);
@@ -1321,17 +1632,17 @@ XMLPUBFUN int
  * Special I/O mode.
  */
 
-XMLPUBFUN xmlParserCtxtPtr
-		xmlCreateIOParserCtxt	(xmlSAXHandlerPtr sax,
+XMLPUBFUN xmlParserCtxt *
+		xmlCreateIOParserCtxt	(xmlSAXHandler *sax,
 					 void *user_data,
 					 xmlInputReadCallback   ioread,
 					 xmlInputCloseCallback  ioclose,
 					 void *ioctx,
 					 xmlCharEncoding enc);
 
-XMLPUBFUN xmlParserInputPtr
-		xmlNewIOInputStream	(xmlParserCtxtPtr ctxt,
-					 xmlParserInputBufferPtr input,
+XMLPUBFUN xmlParserInput *
+		xmlNewIOInputStream	(xmlParserCtxt *ctxt,
+					 xmlParserInputBuffer *input,
 					 xmlCharEncoding enc);
 
 /*
@@ -1339,22 +1650,22 @@ XMLPUBFUN xmlParserInputPtr
  */
 XML_DEPRECATED
 XMLPUBFUN const xmlParserNodeInfo*
-		xmlParserFindNodeInfo	(xmlParserCtxtPtr ctxt,
-				         xmlNodePtr node);
+		xmlParserFindNodeInfo	(xmlParserCtxt *ctxt,
+				         xmlNode *node);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
+		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeq *seq);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
+		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeq *seq);
 XML_DEPRECATED
 XMLPUBFUN unsigned long
-		xmlParserFindNodeInfoIndex(xmlParserNodeInfoSeqPtr seq,
-                                         xmlNodePtr node);
+		xmlParserFindNodeInfoIndex(xmlParserNodeInfoSeq *seq,
+                                         xmlNode *node);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlParserAddNodeInfo	(xmlParserCtxtPtr ctxt,
-					 xmlParserNodeInfoPtr info);
+		xmlParserAddNodeInfo	(xmlParserCtxt *ctxt,
+					 xmlParserNodeInfo *info);
 
 /*
  * External entities handling actually implemented in xmlIO.
@@ -1364,188 +1675,372 @@ XMLPUBFUN void
 		xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
 XMLPUBFUN xmlExternalEntityLoader
 		xmlGetExternalEntityLoader(void);
-XMLPUBFUN xmlParserInputPtr
+XMLPUBFUN xmlParserInput *
 		xmlLoadExternalEntity	(const char *URL,
 					 const char *ID,
-					 xmlParserCtxtPtr ctxt);
+					 xmlParserCtxt *ctxt);
 
 XML_DEPRECATED
 XMLPUBFUN long
-		xmlByteConsumed		(xmlParserCtxtPtr ctxt);
+		xmlByteConsumed		(xmlParserCtxt *ctxt);
 
 /*
  * New set of simpler/more flexible APIs
  */
+
 /**
- * xmlParserOption:
- *
- * This is the set of XML parser options that can be passed down
- * to the xmlReadDoc() and similar calls.
+ * This is the set of XML parser options that can be passed to
+ * #xmlReadDoc, #xmlCtxtSetOptions and other functions.
  */
 typedef enum {
-    XML_PARSE_RECOVER	= 1<<0,	/* recover on errors */
-    XML_PARSE_NOENT	= 1<<1,	/* substitute entities */
-    XML_PARSE_DTDLOAD	= 1<<2,	/* load the external subset */
-    XML_PARSE_DTDATTR	= 1<<3,	/* default DTD attributes */
-    XML_PARSE_DTDVALID	= 1<<4,	/* validate with the DTD */
-    XML_PARSE_NOERROR	= 1<<5,	/* suppress error reports */
-    XML_PARSE_NOWARNING	= 1<<6,	/* suppress warning reports */
-    XML_PARSE_PEDANTIC	= 1<<7,	/* pedantic error reporting */
-    XML_PARSE_NOBLANKS	= 1<<8,	/* remove blank nodes */
-    XML_PARSE_SAX1	= 1<<9,	/* use the SAX1 interface internally */
-    XML_PARSE_XINCLUDE	= 1<<10,/* Implement XInclude substitution  */
-    XML_PARSE_NONET	= 1<<11,/* Forbid network access */
-    XML_PARSE_NODICT	= 1<<12,/* Do not reuse the context dictionary */
-    XML_PARSE_NSCLEAN	= 1<<13,/* remove redundant namespaces declarations */
-    XML_PARSE_NOCDATA	= 1<<14,/* merge CDATA as text nodes */
-    XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
-    XML_PARSE_COMPACT   = 1<<16,/* compact small text nodes; no modification of
-                                   the tree allowed afterwards (will possibly
-				   crash if you try to modify the tree) */
-    XML_PARSE_OLD10	= 1<<17,/* parse using XML-1.0 before update 5 */
-    XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
-    XML_PARSE_HUGE      = 1<<19,/* relax any hardcoded limit from the parser */
-    XML_PARSE_OLDSAX    = 1<<20,/* parse using SAX2 interface before 2.7.0 */
-    XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */
-    XML_PARSE_BIG_LINES = 1<<22,/* Store big lines numbers in text PSVI field */
-    /* since 2.13.0 */
-    XML_PARSE_NO_XXE    = 1<<23,/* disable loading of external content */
-    /* since 2.14.0 */
-    XML_PARSE_UNZIP          = 1<<24,/* allow compressed content */
-    XML_PARSE_NO_SYS_CATALOG = 1<<25,/* disable global system catalog */
-    XML_PARSE_CATALOG_PI     = 1<<26 /* allow catalog PIs */
+    /**
+     * Enable "recovery" mode which allows non-wellformed documents.
+     * How this mode behaves exactly is unspecified and may change
+     * without further notice. Use of this feature is DISCOURAGED.
+     *
+     * Not supported by the push parser.
+     */
+    XML_PARSE_RECOVER = 1<<0,
+    /**
+     * Despite the confusing name, this option enables substitution
+     * of entities. The resulting tree won't contain any entity
+     * reference nodes.
+     *
+     * This option also enables loading of external entities (both
+     * general and parameter entities) which is dangerous. If you
+     * process untrusted data, it's recommended to set the
+     * XML_PARSE_NO_XXE option to disable loading of external
+     * entities.
+     */
+    XML_PARSE_NOENT = 1<<1,
+    /**
+     * Enables loading of an external DTD and the loading and
+     * substitution of external parameter entities. Has no effect
+     * if XML_PARSE_NO_XXE is set.
+     */
+    XML_PARSE_DTDLOAD = 1<<2,
+    /**
+     * Adds default attributes from the DTD to the result document.
+     *
+     * Implies XML_PARSE_DTDLOAD, but loading of external content
+     * can be disabled with XML_PARSE_NO_XXE.
+     */
+    XML_PARSE_DTDATTR = 1<<3,
+    /**
+     * This option enables DTD validation which requires to load
+     * external DTDs and external entities (both general and
+     * parameter entities) unless XML_PARSE_NO_XXE was set.
+     *
+     * DTD validation is vulnerable to algorithmic complexity
+     * attacks and should never be enabled with untrusted input.
+     */
+    XML_PARSE_DTDVALID = 1<<4,
+    /**
+     * Disable error and warning reports to the error handlers.
+     * Errors are still accessible with xmlCtxtGetLastError().
+     */
+    XML_PARSE_NOERROR = 1<<5,
+    /**
+     * Disable warning reports.
+     */
+    XML_PARSE_NOWARNING = 1<<6,
+    /**
+     * Enable some pedantic warnings.
+     */
+    XML_PARSE_PEDANTIC = 1<<7,
+    /**
+     * Remove some whitespace from the result document. Where to
+     * remove whitespace depends on DTD element declarations or a
+     * broken heuristic with unfixable bugs. Use of this option is
+     * DISCOURAGED.
+     *
+     * Not supported by the push parser.
+     */
+    XML_PARSE_NOBLANKS = 1<<8,
+    /**
+     * Always invoke the deprecated SAX1 startElement and endElement
+     * handlers.
+     *
+     * @deprecated This option will be removed in a future version.
+     */
+    XML_PARSE_SAX1 = 1<<9,
+    /**
+     * Enable XInclude processing. This option only affects the
+     * xmlTextReader and XInclude interfaces.
+     */
+    XML_PARSE_XINCLUDE = 1<<10,
+    /**
+     * Disable network access with the built-in HTTP or FTP clients.
+     *
+     * After the last built-in network client was removed in 2.15,
+     * this option has no effect expect for being passed on to custom
+     * resource loaders.
+     */
+    XML_PARSE_NONET = 1<<11,
+    /**
+     * Create a document without interned strings, making all
+     * strings separate memory allocations.
+     */
+    XML_PARSE_NODICT = 1<<12,
+    /**
+     * Remove redundant namespace declarations from the result
+     * document.
+     */
+    XML_PARSE_NSCLEAN = 1<<13,
+    /**
+     * Output normal text nodes instead of CDATA nodes.
+     */
+    XML_PARSE_NOCDATA = 1<<14,
+    /**
+     * Don't generate XInclude start/end nodes when expanding
+     * inclusions. This option only affects the xmlTextReader
+     * and XInclude interfaces.
+     */
+    XML_PARSE_NOXINCNODE = 1<<15,
+    /**
+     * Store small strings directly in the node struct to save
+     * memory.
+     */
+    XML_PARSE_COMPACT = 1<<16,
+    /**
+     * Use old Name productions from before XML 1.0 Fifth Edition.
+     *
+     * @deprecated This option will be removed in a future version.
+     */
+    XML_PARSE_OLD10 = 1<<17,
+    /**
+     * Don't fix up XInclude xml:base URIs. This option only affects
+     * the xmlTextReader and XInclude interfaces.
+     */
+    XML_PARSE_NOBASEFIX = 1<<18,
+    /**
+     * Relax some internal limits.
+     *
+     * Maximum size of text nodes, tags, comments, processing instructions,
+     * CDATA sections, entity values
+     *
+     * normal: 10M
+     * huge:    1B
+     *
+     * Maximum size of names, system literals, pubid literals
+     *
+     * normal: 50K
+     * huge:   10M
+     *
+     * Maximum nesting depth of elements
+     *
+     * normal:  256
+     * huge:   2048
+     *
+     * Maximum nesting depth of entities
+     *
+     * normal: 20
+     * huge:   40
+     */
+    XML_PARSE_HUGE = 1<<19,
+    /**
+     * Enable an unspecified legacy mode for SAX parsers.
+     *
+     * @deprecated This option will be removed in a future version.
+     */
+    XML_PARSE_OLDSAX = 1<<20,
+    /**
+     * Ignore the encoding in the XML declaration. This option is
+     * mostly unneeded these days. The only effect is to enforce
+     * UTF-8 decoding of ASCII-like data.
+     */
+    XML_PARSE_IGNORE_ENC = 1<<21,
+    /**
+     * Enable reporting of line numbers larger than 65535.
+     */
+    XML_PARSE_BIG_LINES = 1<<22,
+    /**
+     * Disables loading of external DTDs or entities.
+     *
+     * @since 2.13.0
+     */
+    XML_PARSE_NO_XXE = 1<<23,
+    /**
+     * Enable input decompression. Setting this option is discouraged
+     * to avoid zip bombs.
+     *
+     * @since 2.14.0
+     */
+    XML_PARSE_UNZIP = 1<<24,
+    /**
+     * Disables the global system XML catalog.
+     *
+     * @since 2.14.0
+     */
+    XML_PARSE_NO_SYS_CATALOG = 1<<25,
+    /**
+     * Enable XML catalog processing instructions.
+     *
+     * @since 2.14.0
+     */
+    XML_PARSE_CATALOG_PI = 1<<26,
+    /**
+     * Force the parser to ignore IDs.
+     *
+     * @since 2.15.0
+     */
+    XML_PARSE_SKIP_IDS = 1<<27
 } xmlParserOption;
 
 XMLPUBFUN void
-		xmlCtxtReset		(xmlParserCtxtPtr ctxt);
+		xmlCtxtReset		(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtResetPush	(xmlParserCtxtPtr ctxt,
+		xmlCtxtResetPush	(xmlParserCtxt *ctxt,
 					 const char *chunk,
 					 int size,
 					 const char *filename,
 					 const char *encoding);
 XMLPUBFUN int
-		xmlCtxtGetOptions	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetOptions	(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtSetOptions	(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetOptions	(xmlParserCtxt *ctxt,
 					 int options);
 XMLPUBFUN int
-		xmlCtxtUseOptions	(xmlParserCtxtPtr ctxt,
+		xmlCtxtUseOptions	(xmlParserCtxt *ctxt,
 					 int options);
 XMLPUBFUN void *
-		xmlCtxtGetPrivate	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetPrivate	(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-		xmlCtxtSetPrivate	(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetPrivate	(xmlParserCtxt *ctxt,
 					 void *priv);
 XMLPUBFUN void *
-		xmlCtxtGetCatalogs	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetCatalogs	(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-		xmlCtxtSetCatalogs	(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetCatalogs	(xmlParserCtxt *ctxt,
 					 void *catalogs);
-XMLPUBFUN xmlDictPtr
-		xmlCtxtGetDict		(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlDict *
+		xmlCtxtGetDict		(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-		xmlCtxtSetDict		(xmlParserCtxtPtr ctxt,
-					 xmlDictPtr);
+		xmlCtxtSetDict		(xmlParserCtxt *ctxt,
+					 xmlDict *);
 XMLPUBFUN xmlSAXHandler *
-		xmlCtxtGetSaxHandler	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetSaxHandler	(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtSetSaxHandler	(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetSaxHandler	(xmlParserCtxt *ctxt,
 					 const xmlSAXHandler *sax);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtGetDocument	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlDoc *
+		xmlCtxtGetDocument	(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtIsHtml		(xmlParserCtxtPtr ctxt);
+		xmlCtxtIsHtml		(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtIsStopped	(xmlParserCtxtPtr ctxt);
+		xmlCtxtIsStopped	(xmlParserCtxt *ctxt);
+XMLPUBFUN int
+		xmlCtxtIsInSubset	(xmlParserCtxt *ctxt);
 #ifdef LIBXML_VALID_ENABLED
-XMLPUBFUN xmlValidCtxtPtr
-		xmlCtxtGetValidCtxt	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlValidCtxt *
+		xmlCtxtGetValidCtxt	(xmlParserCtxt *ctxt);
 #endif
 XMLPUBFUN const xmlChar *
-		xmlCtxtGetVersion	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetVersion	(xmlParserCtxt *ctxt);
 XMLPUBFUN const xmlChar *
-		xmlCtxtGetDeclaredEncoding(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetDeclaredEncoding(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-		xmlCtxtGetStandalone	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetStandalone	(xmlParserCtxt *ctxt);
 XMLPUBFUN xmlParserStatus
-		xmlCtxtGetStatus	(xmlParserCtxtPtr ctxt);
+		xmlCtxtGetStatus	(xmlParserCtxt *ctxt);
+XMLPUBFUN void *
+		xmlCtxtGetUserData	(xmlParserCtxt *ctxt);
+XMLPUBFUN xmlNode *
+		xmlCtxtGetNode		(xmlParserCtxt *ctxt);
+XMLPUBFUN int
+		xmlCtxtGetDocTypeDecl	(xmlParserCtxt *ctxt,
+					 const xmlChar **name,
+					 const xmlChar **systemId,
+					 const xmlChar **publicId);
+XMLPUBFUN int
+		xmlCtxtGetInputPosition	(xmlParserCtxt *ctxt,
+					 int inputIndex,
+					 const char **filname,
+					 int *line,
+					 int *col,
+					 unsigned long *bytePos);
+XMLPUBFUN int
+		xmlCtxtGetInputWindow	(xmlParserCtxt *ctxt,
+					 int inputIndex,
+					 const xmlChar **startOut,
+					 int *sizeInOut,
+					 int *offsetOut);
 XMLPUBFUN void
-		xmlCtxtSetErrorHandler	(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetErrorHandler	(xmlParserCtxt *ctxt,
 					 xmlStructuredErrorFunc handler,
 					 void *data);
 XMLPUBFUN void
-		xmlCtxtSetResourceLoader(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetResourceLoader(xmlParserCtxt *ctxt,
 					 xmlResourceLoader loader,
 					 void *vctxt);
 XMLPUBFUN void
-		xmlCtxtSetCharEncConvImpl(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetCharEncConvImpl(xmlParserCtxt *ctxt,
 					 xmlCharEncConvImpl impl,
 					 void *vctxt);
 XMLPUBFUN void
-		xmlCtxtSetMaxAmplification(xmlParserCtxtPtr ctxt,
+		xmlCtxtSetMaxAmplification(xmlParserCtxt *ctxt,
 					 unsigned maxAmpl);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlReadDoc		(const xmlChar *cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlReadFile		(const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlReadMemory		(const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlReadFd		(int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
+XMLPUBFUN xmlDoc *
 		xmlReadIO		(xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtParseDocument	(xmlParserCtxtPtr ctxt,
-					 xmlParserInputPtr input);
-XMLPUBFUN xmlNodePtr
-		xmlCtxtParseContent	(xmlParserCtxtPtr ctxt,
-					 xmlParserInputPtr input,
-					 xmlNodePtr node,
+XMLPUBFUN xmlDoc *
+		xmlCtxtParseDocument	(xmlParserCtxt *ctxt,
+					 xmlParserInput *input);
+XMLPUBFUN xmlNode *
+		xmlCtxtParseContent	(xmlParserCtxt *ctxt,
+					 xmlParserInput *input,
+					 xmlNode *node,
 					 int hasTextDecl);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtReadDoc		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		xmlCtxtReadDoc		(xmlParserCtxt *ctxt,
 					 const xmlChar *cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtReadFile		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		xmlCtxtReadFile		(xmlParserCtxt *ctxt,
 					 const char *filename,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtReadMemory		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		xmlCtxtReadMemory		(xmlParserCtxt *ctxt,
 					 const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtReadFd		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		xmlCtxtReadFd		(xmlParserCtxt *ctxt,
 					 int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlDocPtr
-		xmlCtxtReadIO		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlDoc *
+		xmlCtxtReadIO		(xmlParserCtxt *ctxt,
 					 xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
@@ -1553,74 +2048,107 @@ XMLPUBFUN xmlDocPtr
 					 const char *encoding,
 					 int options);
 
-/**
+/*
  * New input API
  */
 
 XMLPUBFUN xmlParserErrors
 xmlNewInputFromUrl(const char *url, xmlParserInputFlags flags,
-                   xmlParserInputPtr *out);
-XMLPUBFUN xmlParserInputPtr
+                   xmlParserInput **out);
+XMLPUBFUN xmlParserInput *
 xmlNewInputFromMemory(const char *url, const void *mem, size_t size,
                       xmlParserInputFlags flags);
-XMLPUBFUN xmlParserInputPtr
+XMLPUBFUN xmlParserInput *
 xmlNewInputFromString(const char *url, const char *str,
                       xmlParserInputFlags flags);
-XMLPUBFUN xmlParserInputPtr
+XMLPUBFUN xmlParserInput *
 xmlNewInputFromFd(const char *url, int fd, xmlParserInputFlags flags);
-XMLPUBFUN xmlParserInputPtr
+XMLPUBFUN xmlParserInput *
 xmlNewInputFromIO(const char *url, xmlInputReadCallback ioRead,
                   xmlInputCloseCallback ioClose, void *ioCtxt,
                   xmlParserInputFlags flags);
 XMLPUBFUN xmlParserErrors
-xmlInputSetEncodingHandler(xmlParserInputPtr input,
-                           xmlCharEncodingHandlerPtr handler);
+xmlInputSetEncodingHandler(xmlParserInput *input,
+                           xmlCharEncodingHandler *handler);
 
 /*
  * Library wide options
  */
+
 /**
- * xmlFeature:
- *
  * Used to examine the existence of features that can be enabled
  * or disabled at compile-time.
  * They used to be called XML_FEATURE_xxx but this clashed with Expat
  */
 typedef enum {
+    /** Multithreading support */
     XML_WITH_THREAD = 1,
+    /** @deprecated Always available */
     XML_WITH_TREE = 2,
+    /** Serialization support */
     XML_WITH_OUTPUT = 3,
+    /** Push parser */
     XML_WITH_PUSH = 4,
+    /** XML Reader */
     XML_WITH_READER = 5,
+    /** Streaming patterns */
     XML_WITH_PATTERN = 6,
+    /** XML Writer */
     XML_WITH_WRITER = 7,
+    /** Legacy SAX1 API */
     XML_WITH_SAX1 = 8,
+    /** @deprecated FTP support was removed */
     XML_WITH_FTP = 9,
+    /** @deprecated HTTP support was removed */
     XML_WITH_HTTP = 10,
+    /** DTD validation */
     XML_WITH_VALID = 11,
+    /** HTML parser */
     XML_WITH_HTML = 12,
+    /** Legacy symbols */
     XML_WITH_LEGACY = 13,
+    /** Canonical XML */
     XML_WITH_C14N = 14,
+    /** XML Catalogs */
     XML_WITH_CATALOG = 15,
+    /** XPath */
     XML_WITH_XPATH = 16,
+    /** XPointer */
     XML_WITH_XPTR = 17,
+    /** XInclude */
     XML_WITH_XINCLUDE = 18,
+    /** iconv */
     XML_WITH_ICONV = 19,
+    /** Built-in ISO-8859-X */
     XML_WITH_ISO8859X = 20,
+    /** @deprecated Removed */
     XML_WITH_UNICODE = 21,
+    /** Regular expressions */
     XML_WITH_REGEXP = 22,
+    /** @deprecated Same as XML_WITH_REGEXP */
     XML_WITH_AUTOMATA = 23,
+    /** @deprecated Removed */
     XML_WITH_EXPR = 24,
+    /** XML Schemas */
     XML_WITH_SCHEMAS = 25,
+    /** Schematron */
     XML_WITH_SCHEMATRON = 26,
+    /** Loadable modules */
     XML_WITH_MODULES = 27,
+    /** Debugging API */
     XML_WITH_DEBUG = 28,
+    /** @deprecated Removed */
     XML_WITH_DEBUG_MEM = 29,
-    XML_WITH_DEBUG_RUN = 30, /* unused */
+    /** @deprecated Removed */
+    XML_WITH_DEBUG_RUN = 30,
+    /** GZIP compression */
     XML_WITH_ZLIB = 31,
+    /** ICU */
     XML_WITH_ICU = 32,
+    /** @deprecated LZMA support was removed */
     XML_WITH_LZMA = 33,
-    XML_WITH_RELAXNG = 34, /* since 2.14.0 */
+    /** RELAXNG, since 2.14 */
+    XML_WITH_RELAXNG = 34,
     XML_WITH_NONE = 99999 /* just to be sure of allocation size */
 } xmlFeature;
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/parserInternals.h 2.15.0+dfsg-0.3/include/libxml/parserInternals.h
--- 2.14.6+dfsg-0.1/include/libxml/parserInternals.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/parserInternals.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,12 +1,14 @@
-/*
- * Summary: internals routines and limits exported by the parser.
- * Description: this module exports a number of internal parsing routines
- *              they are not really all intended for applications but
- *              can prove useful doing low level processing.
+/**
+ * @file
+ * 
+ * @brief Internals routines and limits exported by the parser.
+ * 
+ * Except for some I/O-related functions, most of these macros and
+ * functions are deprecated.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_PARSER_INTERNALS_H__
@@ -22,16 +24,24 @@
 extern "C" {
 #endif
 
-/*
- * Backward compatibility
+/**
+ * Push an input on the stack.
+ *
+ * @deprecated Use #xmlCtxtPushInput
  */
 #define inputPush xmlCtxtPushInput
+/**
+ * Pop an input from the stack.
+ *
+ * @deprecated Use #xmlCtxtPushInput
+ */
 #define inputPop xmlCtxtPopInput
+/**
+ * Maximum element nesting depth (without XML_PARSE_HUGE).
+ */
 #define xmlParserMaxDepth 256
 
 /**
- * XML_MAX_TEXT_LENGTH:
- *
  * Maximum size allowed for a single text node when building a tree.
  * This is not a limitation of the parser but a safety boundary feature,
  * use XML_PARSE_HUGE option to override it.
@@ -40,15 +50,11 @@ extern "C" {
 #define XML_MAX_TEXT_LENGTH 10000000
 
 /**
- * XML_MAX_HUGE_LENGTH:
- *
  * Maximum size allowed when XML_PARSE_HUGE is set.
  */
 #define XML_MAX_HUGE_LENGTH 1000000000
 
 /**
- * XML_MAX_NAME_LENGTH:
- *
  * Maximum size allowed for a markup identifier.
  * This is not a limitation of the parser but a safety boundary feature,
  * use XML_PARSE_HUGE option to override it.
@@ -59,8 +65,6 @@ extern "C" {
 #define XML_MAX_NAME_LENGTH 50000
 
 /**
- * XML_MAX_DICTIONARY_LIMIT:
- *
  * Maximum size allowed by the parser for a dictionary by default
  * This is not a limitation of the parser but a safety boundary feature,
  * use XML_PARSE_HUGE option to override it.
@@ -69,8 +73,6 @@ extern "C" {
 #define XML_MAX_DICTIONARY_LIMIT 100000000
 
 /**
- * XML_MAX_LOOKUP_LIMIT:
- *
  * Maximum size allowed by the parser for ahead lookup
  * This is an upper boundary enforced by the parser to avoid bad
  * behaviour on "unfriendly' content
@@ -79,8 +81,6 @@ extern "C" {
 #define XML_MAX_LOOKUP_LIMIT 10000000
 
 /**
- * XML_MAX_NAMELEN:
- *
  * Identifiers can be longer, but this will be more costly
  * at runtime.
  */
@@ -92,452 +92,405 @@ extern "C" {
  *									*
  ************************************************************************/
 /**
- * IS_BYTE_CHAR:
- * @c:  an byte value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [2] Char ::= #x9 | #xA | #xD | [#x20...]
+ *     [2] Char ::= #x9 | #xA | #xD | [#x20...]
+ *
  * any byte character in the accepted range
+ *
+ * @param c  an byte value (int)
  */
 #define IS_BYTE_CHAR(c)	 xmlIsChar_ch(c)
 
 /**
- * IS_CHAR:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
- *                  | [#x10000-#x10FFFF]
+ *     [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
+ *                      | [#x10000-#x10FFFF]
+ *
  * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
+ *
+ * @param c  an UNICODE value (int)
  */
 #define IS_CHAR(c)   xmlIsCharQ(c)
 
 /**
- * IS_CHAR_CH:
- * @c: an xmlChar (usually an unsigned char)
- *
  * Behaves like IS_CHAR on single-byte value
+ *
+ * @param c  an xmlChar (usually an unsigned char)
  */
 #define IS_CHAR_CH(c)  xmlIsChar_ch(c)
 
 /**
- * IS_BLANK:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [3] S ::= (#x20 | #x9 | #xD | #xA)+
+ *     [3] S ::= (#x20 | #x9 | #xD | #xA)+
+ * @param c  an UNICODE value (int)
  */
 #define IS_BLANK(c)  xmlIsBlankQ(c)
 
 /**
- * IS_BLANK_CH:
- * @c:  an xmlChar value (normally unsigned char)
- *
  * Behaviour same as IS_BLANK
+ *
+ * @param c  an xmlChar value (normally unsigned char)
  */
 #define IS_BLANK_CH(c)  xmlIsBlank_ch(c)
 
 /**
- * IS_BASECHAR:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [85] BaseChar ::= ... long list see REC ...
+ *     [85] BaseChar ::= ... long list see REC ...
+ * @param c  an UNICODE value (int)
  */
 #define IS_BASECHAR(c) xmlIsBaseCharQ(c)
 
 /**
- * IS_DIGIT:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [88] Digit ::= ... long list see REC ...
+ *     [88] Digit ::= ... long list see REC ...
+ * @param c  an UNICODE value (int)
  */
 #define IS_DIGIT(c) xmlIsDigitQ(c)
 
 /**
- * IS_DIGIT_CH:
- * @c:  an xmlChar value (usually an unsigned char)
- *
  * Behaves like IS_DIGIT but with a single byte argument
+ *
+ * @param c  an xmlChar value (usually an unsigned char)
  */
 #define IS_DIGIT_CH(c)  xmlIsDigit_ch(c)
 
 /**
- * IS_COMBINING:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- * [87] CombiningChar ::= ... long list see REC ...
+ *     [87] CombiningChar ::= ... long list see REC ...
+ * @param c  an UNICODE value (int)
  */
 #define IS_COMBINING(c) xmlIsCombiningQ(c)
 
 /**
- * IS_COMBINING_CH:
- * @c:  an xmlChar (usually an unsigned char)
- *
  * Always false (all combining chars > 0xff)
+ *
+ * @param c  an xmlChar (usually an unsigned char)
  */
 #define IS_COMBINING_CH(c) 0
 
 /**
- * IS_EXTENDER:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- *
- * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
- *                   #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
- *                   [#x309D-#x309E] | [#x30FC-#x30FE]
+ *     [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
+ *                       #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
+ *                       [#x309D-#x309E] | [#x30FC-#x30FE]
+ * @param c  an UNICODE value (int)
  */
 #define IS_EXTENDER(c) xmlIsExtenderQ(c)
 
 /**
- * IS_EXTENDER_CH:
- * @c:  an xmlChar value (usually an unsigned char)
- *
  * Behaves like IS_EXTENDER but with a single-byte argument
+ *
+ * @param c  an xmlChar value (usually an unsigned char)
  */
 #define IS_EXTENDER_CH(c)  xmlIsExtender_ch(c)
 
 /**
- * IS_IDEOGRAPHIC:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- *
- * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
+ *     [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
+ * @param c  an UNICODE value (int)
  */
 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
 
 /**
- * IS_LETTER:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- *
- * [84] Letter ::= BaseChar | Ideographic
+ *     [84] Letter ::= BaseChar | Ideographic
+ * @param c  an UNICODE value (int)
  */
 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
 
 /**
- * IS_LETTER_CH:
- * @c:  an xmlChar value (normally unsigned char)
- *
  * Macro behaves like IS_LETTER, but only check base chars
  *
+ * @param c  an xmlChar value (normally unsigned char)
  */
 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
 
 /**
- * IS_ASCII_LETTER:
- * @c: an xmlChar value
- *
  * Macro to check [a-zA-Z]
  *
+ * @param c  an xmlChar value
  */
 #define IS_ASCII_LETTER(c)	((0x61 <= ((c) | 0x20)) && \
                                  (((c) | 0x20) <= 0x7a))
 
 /**
- * IS_ASCII_DIGIT:
- * @c: an xmlChar value
- *
  * Macro to check [0-9]
  *
+ * @param c  an xmlChar value
  */
 #define IS_ASCII_DIGIT(c)	((0x30 <= (c)) && ((c) <= 0x39))
 
 /**
- * IS_PUBIDCHAR:
- * @c:  an UNICODE value (int)
- *
  * Macro to check the following production in the XML spec:
  *
- *
- * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
+ *     [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] |
+ *                        [-'()+,./:=?;!*#@$_%]
+ * @param c  an UNICODE value (int)
  */
 #define IS_PUBIDCHAR(c)	xmlIsPubidCharQ(c)
 
 /**
- * IS_PUBIDCHAR_CH:
- * @c:  an xmlChar value (normally unsigned char)
- *
  * Same as IS_PUBIDCHAR but for single-byte value
+ *
+ * @param c  an xmlChar value (normally unsigned char)
  */
 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
 
-/**
+/*
  * Global variables used for predefined strings.
  */
+/** @cond ignore */
 XMLPUBVAR const xmlChar xmlStringText[];
 XMLPUBVAR const xmlChar xmlStringTextNoenc[];
 XML_DEPRECATED
 XMLPUBVAR const xmlChar xmlStringComment[];
+/** @endcond */
 
 XML_DEPRECATED
 XMLPUBFUN int                   xmlIsLetter     (int c);
 
-/**
+/*
  * Parser context.
  */
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 			xmlCreateFileParserCtxt	(const char *filename);
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 			xmlCreateURLParserCtxt	(const char *filename,
 						 int options);
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 			xmlCreateMemoryParserCtxt(const char *buffer,
 						 int size);
 XML_DEPRECATED
-XMLPUBFUN xmlParserCtxtPtr
+XMLPUBFUN xmlParserCtxt *
 			xmlCreateEntityParserCtxt(const xmlChar *URL,
 						 const xmlChar *ID,
 						 const xmlChar *base);
 XMLPUBFUN void
-			xmlCtxtErrMemory	(xmlParserCtxtPtr ctxt);
+			xmlCtxtErrMemory	(xmlParserCtxt *ctxt);
 XMLPUBFUN int
-			xmlSwitchEncoding	(xmlParserCtxtPtr ctxt,
+			xmlSwitchEncoding	(xmlParserCtxt *ctxt,
 						 xmlCharEncoding enc);
 XMLPUBFUN int
-			xmlSwitchEncodingName	(xmlParserCtxtPtr ctxt,
+			xmlSwitchEncodingName	(xmlParserCtxt *ctxt,
 						 const char *encoding);
 XMLPUBFUN int
-			xmlSwitchToEncoding	(xmlParserCtxtPtr ctxt,
-					 xmlCharEncodingHandlerPtr handler);
+			xmlSwitchToEncoding	(xmlParserCtxt *ctxt,
+					 xmlCharEncodingHandler *handler);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlSwitchInputEncoding	(xmlParserCtxtPtr ctxt,
-						 xmlParserInputPtr input,
-					 xmlCharEncodingHandlerPtr handler);
+			xmlSwitchInputEncoding	(xmlParserCtxt *ctxt,
+						 xmlParserInput *input,
+					 xmlCharEncodingHandler *handler);
 
-/**
+/*
  * Input Streams.
  */
-XMLPUBFUN xmlParserInputPtr
-			xmlNewStringInputStream	(xmlParserCtxtPtr ctxt,
+XMLPUBFUN xmlParserInput *
+			xmlNewStringInputStream	(xmlParserCtxt *ctxt,
 						 const xmlChar *buffer);
 XML_DEPRECATED
-XMLPUBFUN xmlParserInputPtr
-			xmlNewEntityInputStream	(xmlParserCtxtPtr ctxt,
-						 xmlEntityPtr entity);
-XMLPUBFUN int
-			xmlCtxtPushInput	(xmlParserCtxtPtr ctxt,
-						 xmlParserInputPtr input);
-XMLPUBFUN xmlParserInputPtr
-			xmlCtxtPopInput		(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlParserInput *
+			xmlNewEntityInputStream	(xmlParserCtxt *ctxt,
+						 xmlEntity *entity);
+XMLPUBFUN int
+			xmlCtxtPushInput	(xmlParserCtxt *ctxt,
+						 xmlParserInput *input);
+XMLPUBFUN xmlParserInput *
+			xmlCtxtPopInput		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlPushInput		(xmlParserCtxtPtr ctxt,
-						 xmlParserInputPtr input);
+			xmlPushInput		(xmlParserCtxt *ctxt,
+						 xmlParserInput *input);
 XML_DEPRECATED
 XMLPUBFUN xmlChar
-			xmlPopInput		(xmlParserCtxtPtr ctxt);
+			xmlPopInput		(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-			xmlFreeInputStream	(xmlParserInputPtr input);
-XMLPUBFUN xmlParserInputPtr
-			xmlNewInputFromFile	(xmlParserCtxtPtr ctxt,
+			xmlFreeInputStream	(xmlParserInput *input);
+XMLPUBFUN xmlParserInput *
+			xmlNewInputFromFile	(xmlParserCtxt *ctxt,
 						 const char *filename);
-XMLPUBFUN xmlParserInputPtr
-			xmlNewInputStream	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlParserInput *
+			xmlNewInputStream	(xmlParserCtxt *ctxt);
 
-/**
+/*
  * Namespaces.
  */
 XMLPUBFUN xmlChar *
-			xmlSplitQName		(xmlParserCtxtPtr ctxt,
+			xmlSplitQName		(xmlParserCtxt *ctxt,
 						 const xmlChar *name,
 						 xmlChar **prefix);
 
-/**
+/*
  * Generic production rules.
  */
 XML_DEPRECATED
 XMLPUBFUN const xmlChar *
-			xmlParseName		(xmlParserCtxtPtr ctxt);
+			xmlParseName		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseNmtoken		(xmlParserCtxtPtr ctxt);
+			xmlParseNmtoken		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseEntityValue	(xmlParserCtxtPtr ctxt,
+			xmlParseEntityValue	(xmlParserCtxt *ctxt,
 						 xmlChar **orig);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseAttValue	(xmlParserCtxtPtr ctxt);
+			xmlParseAttValue	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseSystemLiteral	(xmlParserCtxtPtr ctxt);
+			xmlParseSystemLiteral	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParsePubidLiteral	(xmlParserCtxtPtr ctxt);
+			xmlParsePubidLiteral	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseCharData	(xmlParserCtxtPtr ctxt,
+			xmlParseCharData	(xmlParserCtxt *ctxt,
 						 int cdata);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseExternalID	(xmlParserCtxtPtr ctxt,
-						 xmlChar **publicID,
+			xmlParseExternalID	(xmlParserCtxt *ctxt,
+						 xmlChar **publicId,
 						 int strict);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseComment		(xmlParserCtxtPtr ctxt);
+			xmlParseComment		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN const xmlChar *
-			xmlParsePITarget	(xmlParserCtxtPtr ctxt);
+			xmlParsePITarget	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParsePI		(xmlParserCtxtPtr ctxt);
+			xmlParsePI		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseNotationDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseNotationDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseEntityDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseEntityDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseDefaultDecl	(xmlParserCtxtPtr ctxt,
+			xmlParseDefaultDecl	(xmlParserCtxt *ctxt,
 						 xmlChar **value);
 XML_DEPRECATED
-XMLPUBFUN xmlEnumerationPtr
-			xmlParseNotationType	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlEnumeration *
+			xmlParseNotationType	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN xmlEnumerationPtr
-			xmlParseEnumerationType	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlEnumeration *
+			xmlParseEnumerationType	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseEnumeratedType	(xmlParserCtxtPtr ctxt,
-						 xmlEnumerationPtr *tree);
+			xmlParseEnumeratedType	(xmlParserCtxt *ctxt,
+						 xmlEnumeration **tree);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseAttributeType	(xmlParserCtxtPtr ctxt,
-						 xmlEnumerationPtr *tree);
+			xmlParseAttributeType	(xmlParserCtxt *ctxt,
+						 xmlEnumeration **tree);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
+			xmlParseAttributeListDecl(xmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
+XMLPUBFUN xmlElementContent *
 			xmlParseElementMixedContentDecl
-						(xmlParserCtxtPtr ctxt,
+						(xmlParserCtxt *ctxt,
 						 int inputchk);
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
+XMLPUBFUN xmlElementContent *
 			xmlParseElementChildrenContentDecl
-						(xmlParserCtxtPtr ctxt,
+						(xmlParserCtxt *ctxt,
 						 int inputchk);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
+			xmlParseElementContentDecl(xmlParserCtxt *ctxt,
 						 const xmlChar *name,
-						 xmlElementContentPtr *result);
+						 xmlElementContent **result);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseElementDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseElementDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseMarkupDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseMarkupDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseCharRef		(xmlParserCtxtPtr ctxt);
+			xmlParseCharRef		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN xmlEntityPtr
-			xmlParseEntityRef	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN xmlEntity *
+			xmlParseEntityRef	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseReference	(xmlParserCtxtPtr ctxt);
+			xmlParseReference	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParsePEReference	(xmlParserCtxtPtr ctxt);
+			xmlParsePEReference	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseDocTypeDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseDocTypeDecl	(xmlParserCtxt *ctxt);
 #ifdef LIBXML_SAX1_ENABLED
 XML_DEPRECATED
 XMLPUBFUN const xmlChar *
-			xmlParseAttribute	(xmlParserCtxtPtr ctxt,
+			xmlParseAttribute	(xmlParserCtxt *ctxt,
 						 xmlChar **value);
 XML_DEPRECATED
 XMLPUBFUN const xmlChar *
-			xmlParseStartTag	(xmlParserCtxtPtr ctxt);
+			xmlParseStartTag	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseEndTag		(xmlParserCtxtPtr ctxt);
+			xmlParseEndTag		(xmlParserCtxt *ctxt);
 #endif /* LIBXML_SAX1_ENABLED */
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseCDSect		(xmlParserCtxtPtr ctxt);
+			xmlParseCDSect		(xmlParserCtxt *ctxt);
 XMLPUBFUN void
-			xmlParseContent		(xmlParserCtxtPtr ctxt);
+			xmlParseContent		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseElement		(xmlParserCtxtPtr ctxt);
+			xmlParseElement		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseVersionNum	(xmlParserCtxtPtr ctxt);
+			xmlParseVersionNum	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseVersionInfo	(xmlParserCtxtPtr ctxt);
+			xmlParseVersionInfo	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-			xmlParseEncName		(xmlParserCtxtPtr ctxt);
+			xmlParseEncName		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN const xmlChar *
-			xmlParseEncodingDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseEncodingDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int
-			xmlParseSDDecl		(xmlParserCtxtPtr ctxt);
+			xmlParseSDDecl		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseXMLDecl		(xmlParserCtxtPtr ctxt);
+			xmlParseXMLDecl		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseTextDecl	(xmlParserCtxtPtr ctxt);
+			xmlParseTextDecl	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseMisc		(xmlParserCtxtPtr ctxt);
+			xmlParseMisc		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-			xmlParseExternalSubset	(xmlParserCtxtPtr ctxt,
-						 const xmlChar *ExternalID,
-						 const xmlChar *SystemID);
-/**
- * XML_SUBSTITUTE_NONE:
- *
- * If no entities need to be substituted.
- */
+			xmlParseExternalSubset	(xmlParserCtxt *ctxt,
+						 const xmlChar *publicId,
+						 const xmlChar *systemId);
+
+/** @cond ignore */
 #define XML_SUBSTITUTE_NONE	0
-/**
- * XML_SUBSTITUTE_REF:
- *
- * Whether general entities need to be substituted.
- */
 #define XML_SUBSTITUTE_REF	1
-/**
- * XML_SUBSTITUTE_PEREF:
- *
- * Whether parameter entities need to be substituted.
- */
 #define XML_SUBSTITUTE_PEREF	2
-/**
- * XML_SUBSTITUTE_BOTH:
- *
- * Both general and parameter entities need to be substituted.
- */
 #define XML_SUBSTITUTE_BOTH	3
-
+/** @endcond */
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlStringDecodeEntities		(xmlParserCtxtPtr ctxt,
+		xmlStringDecodeEntities		(xmlParserCtxt *ctxt,
 						 const xmlChar *str,
 						 int what,
 						 xmlChar end,
@@ -545,7 +498,7 @@ XMLPUBFUN xmlChar *
 						 xmlChar end3);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlStringLenDecodeEntities	(xmlParserCtxtPtr ctxt,
+		xmlStringLenDecodeEntities	(xmlParserCtxt *ctxt,
 						 const xmlChar *str,
 						 int len,
 						 int what,
@@ -557,13 +510,13 @@ XMLPUBFUN xmlChar *
  * other commodities shared between parser.c and parserInternals.
  */
 XML_DEPRECATED
-XMLPUBFUN int			xmlSkipBlankChars	(xmlParserCtxtPtr ctxt);
+XMLPUBFUN int			xmlSkipBlankChars	(xmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN int			xmlStringCurrentChar	(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int			xmlStringCurrentChar	(xmlParserCtxt *ctxt,
 						 const xmlChar *cur,
 						 int *len);
 XML_DEPRECATED
-XMLPUBFUN void			xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void			xmlParserHandlePEReference(xmlParserCtxt *ctxt);
 XML_DEPRECATED
 XMLPUBFUN int			xmlCheckLanguageID	(const xmlChar *lang);
 
@@ -571,7 +524,7 @@ XMLPUBFUN int			xmlCheckLanguageID	(cons
  * Really core function shared with HTML parser.
  */
 XML_DEPRECATED
-XMLPUBFUN int			xmlCurrentChar		(xmlParserCtxtPtr ctxt,
+XMLPUBFUN int			xmlCurrentChar		(xmlParserCtxt *ctxt,
 						 int *len);
 XML_DEPRECATED
 XMLPUBFUN int		xmlCopyCharMultiByte	(xmlChar *out,
@@ -581,9 +534,9 @@ XMLPUBFUN int			xmlCopyChar		(int len,
 						 xmlChar *out,
 						 int val);
 XML_DEPRECATED
-XMLPUBFUN void			xmlNextChar		(xmlParserCtxtPtr ctxt);
+XMLPUBFUN void			xmlNextChar		(xmlParserCtxt *ctxt);
 XML_DEPRECATED
-XMLPUBFUN void			xmlParserInputShrink	(xmlParserInputPtr in);
+XMLPUBFUN void			xmlParserInputShrink	(xmlParserInput *in);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/pattern.h 2.15.0+dfsg-0.3/include/libxml/pattern.h
--- 2.14.6+dfsg-0.1/include/libxml/pattern.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/pattern.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: pattern expression handling
- * Description: allows to compile and test pattern expressions for nodes
+/**
+ * @file
+ * 
+ * @brief pattern expression handling
+ * 
+ * allows to compile and test pattern expressions for nodes
  *              either in a tree or based on a parser state.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_PATTERN_H__
@@ -22,19 +25,14 @@ extern "C" {
 #endif
 
 /**
- * xmlPattern:
- *
  * A compiled (XPath based) pattern to select nodes
  */
 typedef struct _xmlPattern xmlPattern;
 typedef xmlPattern *xmlPatternPtr;
 
 /**
- * xmlPatternFlags:
- *
- * This is the set of options affecting the behaviour of pattern
- * matching with this module
- *
+ * Internal type. This is the set of options affecting the behaviour
+ * of pattern matching with this module.
  */
 typedef enum {
     XML_PATTERN_DEFAULT		= 0,	/* simple pattern match */
@@ -44,12 +42,12 @@ typedef enum {
 } xmlPatternFlags;
 
 XMLPUBFUN void
-			xmlFreePattern		(xmlPatternPtr comp);
+			xmlFreePattern		(xmlPattern *comp);
 
 XMLPUBFUN void
-			xmlFreePatternList	(xmlPatternPtr comp);
+			xmlFreePatternList	(xmlPattern *comp);
 
-XMLPUBFUN xmlPatternPtr
+XMLPUBFUN xmlPattern *
 			xmlPatterncompile	(const xmlChar *pattern,
 						 xmlDict *dict,
 						 int flags,
@@ -59,44 +57,44 @@ XMLPUBFUN int
 						 xmlDict *dict,
 						 int flags,
 						 const xmlChar **namespaces,
-						 xmlPatternPtr *patternOut);
+						 xmlPattern **patternOut);
 XMLPUBFUN int
-			xmlPatternMatch		(xmlPatternPtr comp,
-						 xmlNodePtr node);
+			xmlPatternMatch		(xmlPattern *comp,
+						 xmlNode *node);
 
-/* streaming interfaces */
+/** State object for streaming interface */
 typedef struct _xmlStreamCtxt xmlStreamCtxt;
 typedef xmlStreamCtxt *xmlStreamCtxtPtr;
 
 XMLPUBFUN int
-			xmlPatternStreamable	(xmlPatternPtr comp);
+			xmlPatternStreamable	(xmlPattern *comp);
 XMLPUBFUN int
-			xmlPatternMaxDepth	(xmlPatternPtr comp);
+			xmlPatternMaxDepth	(xmlPattern *comp);
 XMLPUBFUN int
-			xmlPatternMinDepth	(xmlPatternPtr comp);
+			xmlPatternMinDepth	(xmlPattern *comp);
 XMLPUBFUN int
-			xmlPatternFromRoot	(xmlPatternPtr comp);
-XMLPUBFUN xmlStreamCtxtPtr
-			xmlPatternGetStreamCtxt	(xmlPatternPtr comp);
+			xmlPatternFromRoot	(xmlPattern *comp);
+XMLPUBFUN xmlStreamCtxt *
+			xmlPatternGetStreamCtxt	(xmlPattern *comp);
 XMLPUBFUN void
-			xmlFreeStreamCtxt	(xmlStreamCtxtPtr stream);
+			xmlFreeStreamCtxt	(xmlStreamCtxt *stream);
 XMLPUBFUN int
-			xmlStreamPushNode	(xmlStreamCtxtPtr stream,
+			xmlStreamPushNode	(xmlStreamCtxt *stream,
 						 const xmlChar *name,
 						 const xmlChar *ns,
 						 int nodeType);
 XMLPUBFUN int
-			xmlStreamPush		(xmlStreamCtxtPtr stream,
+			xmlStreamPush		(xmlStreamCtxt *stream,
 						 const xmlChar *name,
 						 const xmlChar *ns);
 XMLPUBFUN int
-			xmlStreamPushAttr	(xmlStreamCtxtPtr stream,
+			xmlStreamPushAttr	(xmlStreamCtxt *stream,
 						 const xmlChar *name,
 						 const xmlChar *ns);
 XMLPUBFUN int
-			xmlStreamPop		(xmlStreamCtxtPtr stream);
+			xmlStreamPop		(xmlStreamCtxt *stream);
 XMLPUBFUN int
-			xmlStreamWantsAnyNode	(xmlStreamCtxtPtr stream);
+			xmlStreamWantsAnyNode	(xmlStreamCtxt *stream);
 #ifdef __cplusplus
 }
 #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/relaxng.h 2.15.0+dfsg-0.3/include/libxml/relaxng.h
--- 2.14.6+dfsg-0.1/include/libxml/relaxng.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/relaxng.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: implementation of the Relax-NG validation
- * Description: implementation of the Relax-NG validation
+/**
+ * @file
+ * 
+ * @brief implementation of the Relax-NG validation
+ * 
+ * implementation of the Relax-NG validation
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_RELAX_NG__
@@ -22,46 +25,42 @@
 extern "C" {
 #endif
 
+/** RelaxNG schema */
 typedef struct _xmlRelaxNG xmlRelaxNG;
 typedef xmlRelaxNG *xmlRelaxNGPtr;
 
 
 /**
- * xmlRelaxNGValidityErrorFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of an error callback from a Relax-NG validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlRelaxNGValidityErrorFunc) (void *ctx,
 						      const char *msg,
 						      ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
- * xmlRelaxNGValidityWarningFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of a warning callback from a Relax-NG validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlRelaxNGValidityWarningFunc) (void *ctx,
 							const char *msg,
 							...) LIBXML_ATTR_FORMAT(2,3);
 
-/**
- * A schemas validation context
- */
+/** RelaxNG parser context */
 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
 
+/** RelaxNG validation context */
 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
 
-/*
- * xmlRelaxNGValidErr:
- *
+/**
  * List of possible Relax NG validation errors
  */
 typedef enum {
@@ -107,9 +106,7 @@ typedef enum {
     XML_RELAXNG_ERR_TEXTWRONG
 } xmlRelaxNGValidErr;
 
-/*
- * xmlRelaxNGParserFlags:
- *
+/**
  * List of possible Relax NG Parser flags
  */
 typedef enum {
@@ -127,93 +124,97 @@ XMLPUBFUN void
 /*
  * Interfaces for parsing.
  */
-XMLPUBFUN xmlRelaxNGParserCtxtPtr
+XMLPUBFUN xmlRelaxNGParserCtxt *
 		    xmlRelaxNGNewParserCtxt	(const char *URL);
-XMLPUBFUN xmlRelaxNGParserCtxtPtr
+XMLPUBFUN xmlRelaxNGParserCtxt *
 		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
 						 int size);
-XMLPUBFUN xmlRelaxNGParserCtxtPtr
-		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
+XMLPUBFUN xmlRelaxNGParserCtxt *
+		    xmlRelaxNGNewDocParserCtxt	(xmlDoc *doc);
 
 XMLPUBFUN int
-		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
+		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxt *ctxt,
 						 int flag);
 
 XMLPUBFUN void
-		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
+		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxt *ctxt);
 XMLPUBFUN void
-		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
+		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxt *ctxt,
 					 xmlRelaxNGValidityErrorFunc err,
 					 xmlRelaxNGValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int
-		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
+		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxt *ctxt,
 					 xmlRelaxNGValidityErrorFunc *err,
 					 xmlRelaxNGValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN void
 		    xmlRelaxNGSetParserStructuredErrors(
-					 xmlRelaxNGParserCtxtPtr ctxt,
+					 xmlRelaxNGParserCtxt *ctxt,
 					 xmlStructuredErrorFunc serror,
 					 void *ctx);
 XMLPUBFUN void
-		    xmlRelaxNGSetResourceLoader	(xmlRelaxNGParserCtxtPtr ctxt,
+		    xmlRelaxNGSetResourceLoader	(xmlRelaxNGParserCtxt *ctxt,
 						 xmlResourceLoader loader,
 						 void *vctxt);
-XMLPUBFUN xmlRelaxNGPtr
-		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
+XMLPUBFUN xmlRelaxNG *
+		    xmlRelaxNGParse		(xmlRelaxNGParserCtxt *ctxt);
 XMLPUBFUN void
-		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
-#ifdef LIBXML_OUTPUT_ENABLED
+		    xmlRelaxNGFree		(xmlRelaxNG *schema);
+#ifdef LIBXML_DEBUG_ENABLED
 XMLPUBFUN void
 		    xmlRelaxNGDump		(FILE *output,
-					 xmlRelaxNGPtr schema);
+					 xmlRelaxNG *schema);
+#endif /* LIBXML_DEBUG_ENABLED */
+#ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void
 		    xmlRelaxNGDumpTree	(FILE * output,
-					 xmlRelaxNGPtr schema);
+					 xmlRelaxNG *schema);
 #endif /* LIBXML_OUTPUT_ENABLED */
 /*
  * Interfaces for validating
  */
 XMLPUBFUN void
-		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
+		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxt *ctxt,
 					 xmlRelaxNGValidityErrorFunc err,
 					 xmlRelaxNGValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int
-		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
+		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxt *ctxt,
 					 xmlRelaxNGValidityErrorFunc *err,
 					 xmlRelaxNGValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN void
-			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
+			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxt *ctxt,
 					  xmlStructuredErrorFunc serror, void *ctx);
-XMLPUBFUN xmlRelaxNGValidCtxtPtr
-		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
+XMLPUBFUN xmlRelaxNGValidCtxt *
+		    xmlRelaxNGNewValidCtxt	(xmlRelaxNG *schema);
 XMLPUBFUN void
-		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
+		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxt *ctxt);
 XMLPUBFUN int
-		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
-						 xmlDocPtr doc);
+		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxt *ctxt,
+						 xmlDoc *doc);
 /*
  * Interfaces for progressive validation when possible
  */
 XMLPUBFUN int
-		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem);
+		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem);
 XMLPUBFUN int
-		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
+		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxt *ctxt,
 					 const xmlChar *data,
 					 int len);
 XMLPUBFUN int
-		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem);
-XMLPUBFUN int
-		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem);
+		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem);
+XMLPUBFUN int
+		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem);
+XMLPUBFUN void
+                    xmlRelaxNGValidCtxtClearErrors(xmlRelaxNGValidCtxt* ctxt);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/schemasInternals.h 2.15.0+dfsg-0.3/include/libxml/schemasInternals.h
--- 2.14.6+dfsg-0.1/include/libxml/schemasInternals.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/schemasInternals.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,13 +1,16 @@
-/*
- * Summary: internal interfaces for XML Schemas
- * Description: internal interfaces for the XML Schemas handling
+/**
+ * @file
+ * 
+ * @brief internal interfaces for XML Schemas
+ * 
+ * internal interfaces for the XML Schemas handling
  *              and schema validity checking
  *		The Schemas development is a Work In Progress.
  *              Some of those interfaces are not guaranteed to be API or ABI stable !
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -27,6 +30,9 @@
 extern "C" {
 #endif
 
+/**
+ * Schema value type
+ */
 typedef enum {
     XML_SCHEMAS_UNKNOWN = 0,
     XML_SCHEMAS_STRING = 1,
@@ -77,7 +83,7 @@ typedef enum {
     XML_SCHEMAS_ANYSIMPLETYPE = 46
 } xmlSchemaValType;
 
-/*
+/**
  * XML Schemas defines multiple type of types.
  */
 typedef enum {
@@ -123,6 +129,9 @@ typedef enum {
     XML_SCHEMA_EXTRA_ATTR_USE_PROHIB
 } xmlSchemaTypeType;
 
+/**
+ * Schema content type
+ */
 typedef enum {
     XML_SCHEMA_CONTENT_UNKNOWN = 0,
     XML_SCHEMA_CONTENT_EMPTY = 1,
@@ -134,118 +143,95 @@ typedef enum {
     XML_SCHEMA_CONTENT_ANY
 } xmlSchemaContentType;
 
+/** Schema value */
 typedef struct _xmlSchemaVal xmlSchemaVal;
 typedef xmlSchemaVal *xmlSchemaValPtr;
 
+/** Schema type */
 typedef struct _xmlSchemaType xmlSchemaType;
 typedef xmlSchemaType *xmlSchemaTypePtr;
 
+/** Schema facet */
 typedef struct _xmlSchemaFacet xmlSchemaFacet;
 typedef xmlSchemaFacet *xmlSchemaFacetPtr;
 
+/** Schema annotation */
+typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
+typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
 /**
  * Annotation
  */
-typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
-typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
 struct _xmlSchemaAnnot {
     struct _xmlSchemaAnnot *next;
-    xmlNodePtr content;         /* the annotation */
+    xmlNode *content;         /* the annotation */
 };
 
 /**
- * XML_SCHEMAS_ANYATTR_SKIP:
- *
  * Skip unknown attribute from validation
  * Obsolete, not used anymore.
  */
 #define XML_SCHEMAS_ANYATTR_SKIP        1
 /**
- * XML_SCHEMAS_ANYATTR_LAX:
- *
  * Ignore validation non definition on attributes
  * Obsolete, not used anymore.
  */
 #define XML_SCHEMAS_ANYATTR_LAX                2
 /**
- * XML_SCHEMAS_ANYATTR_STRICT:
- *
  * Apply strict validation rules on attributes
  * Obsolete, not used anymore.
  */
 #define XML_SCHEMAS_ANYATTR_STRICT        3
 /**
- * XML_SCHEMAS_ANY_SKIP:
- *
  * Skip unknown attribute from validation
  */
 #define XML_SCHEMAS_ANY_SKIP        1
 /**
- * XML_SCHEMAS_ANY_LAX:
- *
  * Used by wildcards.
  * Validate if type found, don't worry if not found
  */
 #define XML_SCHEMAS_ANY_LAX                2
 /**
- * XML_SCHEMAS_ANY_STRICT:
- *
  * Used by wildcards.
  * Apply strict validation rules
  */
 #define XML_SCHEMAS_ANY_STRICT        3
 /**
- * XML_SCHEMAS_ATTR_USE_PROHIBITED:
- *
  * Used by wildcards.
  * The attribute is prohibited.
  */
 #define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
 /**
- * XML_SCHEMAS_ATTR_USE_REQUIRED:
- *
  * The attribute is required.
  */
 #define XML_SCHEMAS_ATTR_USE_REQUIRED 1
 /**
- * XML_SCHEMAS_ATTR_USE_OPTIONAL:
- *
  * The attribute is optional.
  */
 #define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
 /**
- * XML_SCHEMAS_ATTR_GLOBAL:
- *
  * allow elements in no namespace
  */
 #define XML_SCHEMAS_ATTR_GLOBAL        1 << 0
 /**
- * XML_SCHEMAS_ATTR_NSDEFAULT:
- *
  * allow elements in no namespace
  */
 #define XML_SCHEMAS_ATTR_NSDEFAULT        1 << 7
 /**
- * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
- *
  * this is set when the "type" and "ref" references
  * have been resolved.
  */
 #define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED        1 << 8
 /**
- * XML_SCHEMAS_ATTR_FIXED:
- *
  * the attribute has a fixed value
  */
 #define XML_SCHEMAS_ATTR_FIXED        1 << 9
 
+/** Schema attribute definition */
+typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
+typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
 /**
- * xmlSchemaAttribute:
  * An attribute definition.
  */
-
-typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
-typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
 struct _xmlSchemaAttribute {
     xmlSchemaTypeType type;
     struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */
@@ -255,110 +241,99 @@ struct _xmlSchemaAttribute {
     const xmlChar *refNs; /* Deprecated; not used */
     const xmlChar *typeName; /* the local name of the type definition */
     const xmlChar *typeNs; /* the ns URI of the type definition */
-    xmlSchemaAnnotPtr annot;
+    xmlSchemaAnnot *annot;
 
-    xmlSchemaTypePtr base; /* Deprecated; not used */
+    xmlSchemaType *base; /* Deprecated; not used */
     int occurs; /* Deprecated; not used */
     const xmlChar *defValue; /* The initial value of the value constraint */
-    xmlSchemaTypePtr subtypes; /* the type definition */
-    xmlNodePtr node;
+    xmlSchemaType *subtypes; /* the type definition */
+    xmlNode *node;
     const xmlChar *targetNamespace;
     int flags;
     const xmlChar *refPrefix; /* Deprecated; not used */
-    xmlSchemaValPtr defVal; /* The compiled value constraint */
-    xmlSchemaAttributePtr refDecl; /* Deprecated; not used */
+    xmlSchemaVal *defVal; /* The compiled value constraint */
+    xmlSchemaAttribute *refDecl; /* Deprecated; not used */
 };
 
+/** Linked list of schema attributes */
+typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
+typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
 /**
- * xmlSchemaAttributeLink:
  * Used to build a list of attribute uses on complexType definitions.
  * WARNING: Deprecated; not used.
  */
-typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
-typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
 struct _xmlSchemaAttributeLink {
     struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
     struct _xmlSchemaAttribute *attr;/* the linked attribute */
 };
 
 /**
- * XML_SCHEMAS_WILDCARD_COMPLETE:
- *
  * If the wildcard is complete.
  */
 #define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
 
+/** Namespace wildcard */
+typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
+typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
 /**
- * xmlSchemaCharValueLink:
  * Used to build a list of namespaces on wildcards.
  */
-typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
-typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
 struct _xmlSchemaWildcardNs {
     struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
     const xmlChar *value;/* the value */
 };
 
+/** Name wildcard */
+typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
+typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
 /**
- * xmlSchemaWildcard.
  * A wildcard.
  */
-typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
-typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
 struct _xmlSchemaWildcard {
     xmlSchemaTypeType type;        /* The kind of type */
     const xmlChar *id; /* Deprecated; not used */
-    xmlSchemaAnnotPtr annot;
-    xmlNodePtr node;
+    xmlSchemaAnnot *annot;
+    xmlNode *node;
     int minOccurs; /* Deprecated; not used */
     int maxOccurs; /* Deprecated; not used */
     int processContents;
     int any; /* Indicates if the ns constraint is of ##any */
-    xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
-    xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
+    xmlSchemaWildcardNs *nsSet; /* The list of allowed namespaces */
+    xmlSchemaWildcardNs *negNsSet; /* The negated namespace */
     int flags;
 };
 
 /**
- * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
- *
  * The attribute wildcard has been built.
  */
 #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
 /**
- * XML_SCHEMAS_ATTRGROUP_GLOBAL:
- *
  * The attribute group has been defined.
  */
 #define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
 /**
- * XML_SCHEMAS_ATTRGROUP_MARKED:
- *
  * Marks the attr group as marked; used for circular checks.
  */
 #define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
 
 /**
- * XML_SCHEMAS_ATTRGROUP_REDEFINED:
- *
  * The attr group was redefined.
  */
 #define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
 /**
- * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
- *
  * Whether this attr. group contains attr. group references.
  */
 #define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
 
+/** Attribute group */
+typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
+typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
 /**
  * An attribute group definition.
  *
  * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
  * must be kept similar
  */
-typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
-typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
 struct _xmlSchemaAttributeGroup {
     xmlSchemaTypeType type;        /* The kind of type */
     struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
@@ -366,75 +341,63 @@ struct _xmlSchemaAttributeGroup {
     const xmlChar *id;
     const xmlChar *ref; /* Deprecated; not used */
     const xmlChar *refNs; /* Deprecated; not used */
-    xmlSchemaAnnotPtr annot;
+    xmlSchemaAnnot *annot;
 
-    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
-    xmlNodePtr node;
+    xmlSchemaAttribute *attributes; /* Deprecated; not used */
+    xmlNode *node;
     int flags;
-    xmlSchemaWildcardPtr attributeWildcard;
+    xmlSchemaWildcard *attributeWildcard;
     const xmlChar *refPrefix; /* Deprecated; not used */
-    xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */
+    xmlSchemaAttributeGroup *refItem; /* Deprecated; not used */
     const xmlChar *targetNamespace;
     void *attrUses;
 };
 
+/** Linked list of schema types */
+typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
+typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
 /**
- * xmlSchemaTypeLink:
  * Used to build a list of types (e.g. member types of
  * simpleType with variety "union").
  */
-typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
-typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
 struct _xmlSchemaTypeLink {
     struct _xmlSchemaTypeLink *next;/* the next type link ... */
-    xmlSchemaTypePtr type;/* the linked type */
+    xmlSchemaType *type;/* the linked type */
 };
 
+/** Linked list of schema facets */
+typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
+typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
 /**
- * xmlSchemaFacetLink:
  * Used to build a list of facets.
  */
-typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
-typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
 struct _xmlSchemaFacetLink {
     struct _xmlSchemaFacetLink *next;/* the next facet link ... */
-    xmlSchemaFacetPtr facet;/* the linked facet */
+    xmlSchemaFacet *facet;/* the linked facet */
 };
 
 /**
- * XML_SCHEMAS_TYPE_MIXED:
- *
  * the element content type is mixed
  */
 #define XML_SCHEMAS_TYPE_MIXED                1 << 0
 /**
- * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
- *
  * the simple or complex type has a derivation method of "extension".
  */
 #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION                1 << 1
 /**
- * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
- *
  * the simple or complex type has a derivation method of "restriction".
  */
 #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION                1 << 2
 /**
- * XML_SCHEMAS_TYPE_GLOBAL:
- *
  * the type is global
  */
 #define XML_SCHEMAS_TYPE_GLOBAL                1 << 3
 /**
- * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
- *
  * the complexType owns an attribute wildcard, i.e.
  * it can be freed by the complexType
  */
 #define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
 /**
- * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
- *
  * the simpleType has a variety of "absent".
  * TODO: Actually not necessary :-/, since if
  * none of the variety flags occur then it's
@@ -442,162 +405,112 @@ struct _xmlSchemaFacetLink {
  */
 #define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
 /**
- * XML_SCHEMAS_TYPE_VARIETY_LIST:
- *
  * the simpleType has a variety of "list".
  */
 #define XML_SCHEMAS_TYPE_VARIETY_LIST    1 << 6
 /**
- * XML_SCHEMAS_TYPE_VARIETY_UNION:
- *
  * the simpleType has a variety of "union".
  */
 #define XML_SCHEMAS_TYPE_VARIETY_UNION    1 << 7
 /**
- * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
- *
  * the simpleType has a variety of "union".
  */
 #define XML_SCHEMAS_TYPE_VARIETY_ATOMIC    1 << 8
 /**
- * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
- *
  * the complexType has a final of "extension".
  */
 #define XML_SCHEMAS_TYPE_FINAL_EXTENSION    1 << 9
 /**
- * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
- *
  * the simpleType/complexType has a final of "restriction".
  */
 #define XML_SCHEMAS_TYPE_FINAL_RESTRICTION    1 << 10
 /**
- * XML_SCHEMAS_TYPE_FINAL_LIST:
- *
  * the simpleType has a final of "list".
  */
 #define XML_SCHEMAS_TYPE_FINAL_LIST    1 << 11
 /**
- * XML_SCHEMAS_TYPE_FINAL_UNION:
- *
  * the simpleType has a final of "union".
  */
 #define XML_SCHEMAS_TYPE_FINAL_UNION    1 << 12
 /**
- * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
- *
  * the simpleType has a final of "default".
  */
 #define XML_SCHEMAS_TYPE_FINAL_DEFAULT    1 << 13
 /**
- * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
- *
  * Marks the item as a builtin primitive.
  */
 #define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE    1 << 14
 /**
- * XML_SCHEMAS_TYPE_MARKED:
- *
  * Marks the item as marked; used for circular checks.
  */
 #define XML_SCHEMAS_TYPE_MARKED        1 << 16
 /**
- * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
- *
  * the complexType did not specify 'block' so use the default of the
- * <schema> item.
+ * `<schema>` item.
  */
 #define XML_SCHEMAS_TYPE_BLOCK_DEFAULT    1 << 17
 /**
- * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
- *
  * the complexType has a 'block' of "extension".
  */
 #define XML_SCHEMAS_TYPE_BLOCK_EXTENSION    1 << 18
 /**
- * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
- *
  * the complexType has a 'block' of "restriction".
  */
 #define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION    1 << 19
 /**
- * XML_SCHEMAS_TYPE_ABSTRACT:
- *
  * the simple/complexType is abstract.
  */
 #define XML_SCHEMAS_TYPE_ABSTRACT    1 << 20
 /**
- * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
- *
  * 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
 /**
- * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
- *
  * a whitespace-facet value of "preserve"
  */
 #define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE    1 << 24
 /**
- * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
- *
  * a whitespace-facet value of "replace"
  */
 #define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE    1 << 25
 /**
- * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
- *
  * a whitespace-facet value of "collapse"
  */
 #define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE    1 << 26
 /**
- * XML_SCHEMAS_TYPE_HAS_FACETS:
- *
  * has facets
  */
 #define XML_SCHEMAS_TYPE_HAS_FACETS    1 << 27
 /**
- * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
- *
  * indicates if the facets (pattern) need a normalized value
  */
 #define XML_SCHEMAS_TYPE_NORMVALUENEEDED    1 << 28
 
 /**
- * XML_SCHEMAS_TYPE_FIXUP_1:
- *
  * First stage of fixup was done.
  */
 #define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
 
 /**
- * XML_SCHEMAS_TYPE_REDEFINED:
- *
  * The type was redefined.
  */
 #define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
+#if 0
 /**
- * XML_SCHEMAS_TYPE_REDEFINING:
- *
  * The type redefines an other type.
  */
-/* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
+#define XML_SCHEMAS_TYPE_REDEFINING    1 << 31
+#endif
 
 /**
- * _xmlSchemaType:
- *
  * Schemas type definition.
  */
 struct _xmlSchemaType {
@@ -607,10 +520,10 @@ struct _xmlSchemaType {
     const xmlChar *id ; /* Deprecated; not used */
     const xmlChar *ref; /* Deprecated; not used */
     const xmlChar *refNs; /* Deprecated; not used */
-    xmlSchemaAnnotPtr annot;
-    xmlSchemaTypePtr subtypes;
-    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
-    xmlNodePtr node;
+    xmlSchemaAnnot *annot;
+    xmlSchemaType *subtypes;
+    xmlSchemaAttribute *attributes; /* Deprecated; not used */
+    xmlNode *node;
     int minOccurs; /* Deprecated; not used */
     int maxOccurs; /* Deprecated; not used */
 
@@ -618,151 +531,113 @@ struct _xmlSchemaType {
     xmlSchemaContentType contentType;
     const xmlChar *base; /* Base type's local name */
     const xmlChar *baseNs; /* Base type's target namespace */
-    xmlSchemaTypePtr baseType; /* The base type component */
-    xmlSchemaFacetPtr facets; /* Local facets */
+    xmlSchemaType *baseType; /* The base type component */
+    xmlSchemaFacet *facets; /* Local facets */
     struct _xmlSchemaType *redef; /* Deprecated; not used */
     int recurse; /* Obsolete */
-    xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */
-    xmlSchemaWildcardPtr attributeWildcard;
+    xmlSchemaAttributeLink **attributeUses; /* Deprecated; not used */
+    xmlSchemaWildcard *attributeWildcard;
     int builtInType; /* Type of built-in types. */
-    xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */
-    xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
+    xmlSchemaTypeLink *memberTypes; /* member-types if a union type. */
+    xmlSchemaFacetLink *facetSet; /* All facets (incl. inherited) */
     const xmlChar *refPrefix; /* Deprecated; not used */
-    xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types.
+    xmlSchemaType *contentTypeDef; /* Used for the simple content of complex types.
                                         Could we use @subtypes for this? */
-    xmlRegexpPtr contModel; /* Holds the automaton of the content model */
+    xmlRegexp *contModel; /* Holds the automaton of the content model */
     const xmlChar *targetNamespace;
     void *attrUses;
 };
 
-/*
- * xmlSchemaElement:
- * An element definition.
- *
- * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
- * structures must be kept similar
- */
 /**
- * XML_SCHEMAS_ELEM_NILLABLE:
- *
  * the element is nillable
  */
 #define XML_SCHEMAS_ELEM_NILLABLE        1 << 0
 /**
- * XML_SCHEMAS_ELEM_GLOBAL:
- *
  * the element is global
  */
 #define XML_SCHEMAS_ELEM_GLOBAL                1 << 1
 /**
- * XML_SCHEMAS_ELEM_DEFAULT:
- *
  * the element has a default value
  */
 #define XML_SCHEMAS_ELEM_DEFAULT        1 << 2
 /**
- * XML_SCHEMAS_ELEM_FIXED:
- *
  * the element has a fixed value
  */
 #define XML_SCHEMAS_ELEM_FIXED                1 << 3
 /**
- * XML_SCHEMAS_ELEM_ABSTRACT:
- *
  * the element is abstract
  */
 #define XML_SCHEMAS_ELEM_ABSTRACT        1 << 4
 /**
- * XML_SCHEMAS_ELEM_TOPLEVEL:
- *
  * the element is top level
  * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
  */
 #define XML_SCHEMAS_ELEM_TOPLEVEL        1 << 5
 /**
- * XML_SCHEMAS_ELEM_REF:
- *
  * the element is a reference to a type
  */
 #define XML_SCHEMAS_ELEM_REF                1 << 6
 /**
- * XML_SCHEMAS_ELEM_NSDEFAULT:
- *
  * allow elements in no namespace
  * Obsolete, not used anymore.
  */
 #define XML_SCHEMAS_ELEM_NSDEFAULT        1 << 7
 /**
- * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
- *
  * this is set when "type", "ref", "substitutionGroup"
  * references have been resolved.
  */
 #define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED        1 << 8
  /**
- * XML_SCHEMAS_ELEM_CIRCULAR:
- *
  * a helper flag for the search of circular references.
  */
 #define XML_SCHEMAS_ELEM_CIRCULAR        1 << 9
 /**
- * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
- *
  * the "block" attribute is absent
  */
 #define XML_SCHEMAS_ELEM_BLOCK_ABSENT        1 << 10
 /**
- * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
- *
  * disallowed substitutions are absent
  */
 #define XML_SCHEMAS_ELEM_BLOCK_EXTENSION        1 << 11
 /**
- * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
- *
  * disallowed substitutions: "restriction"
  */
 #define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION        1 << 12
 /**
- * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
- *
  * disallowed substitutions: "substitution"
  */
 #define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION        1 << 13
 /**
- * XML_SCHEMAS_ELEM_FINAL_ABSENT:
- *
  * substitution group exclusions are absent
  */
 #define XML_SCHEMAS_ELEM_FINAL_ABSENT        1 << 14
 /**
- * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
- *
  * substitution group exclusions: "extension"
  */
 #define XML_SCHEMAS_ELEM_FINAL_EXTENSION        1 << 15
 /**
- * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
- *
  * substitution group exclusions: "restriction"
  */
 #define XML_SCHEMAS_ELEM_FINAL_RESTRICTION        1 << 16
 /**
- * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
- *
  * the declaration is a substitution group head
  */
 #define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD        1 << 17
 /**
- * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
- *
  * this is set when the elem decl has been checked against
  * all constraints
  */
 #define XML_SCHEMAS_ELEM_INTERNAL_CHECKED        1 << 18
 
+/** Schema element definition */
 typedef struct _xmlSchemaElement xmlSchemaElement;
 typedef xmlSchemaElement *xmlSchemaElementPtr;
+/**
+ * An element definition.
+ *
+ * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
+ * structures must be kept similar
+ */
 struct _xmlSchemaElement {
     xmlSchemaTypeType type; /* The kind of type */
     struct _xmlSchemaType *next; /* Not used? */
@@ -770,10 +645,10 @@ struct _xmlSchemaElement {
     const xmlChar *id; /* Deprecated; not used */
     const xmlChar *ref; /* Deprecated; not used */
     const xmlChar *refNs; /* Deprecated; not used */
-    xmlSchemaAnnotPtr annot;
-    xmlSchemaTypePtr subtypes; /* the type definition */
-    xmlSchemaAttributePtr attributes;
-    xmlNodePtr node;
+    xmlSchemaAnnot *annot;
+    xmlSchemaType *subtypes; /* the type definition */
+    xmlSchemaAttribute *attributes;
+    xmlNode *node;
     int minOccurs; /* Deprecated; not used */
     int maxOccurs; /* Deprecated; not used */
 
@@ -787,34 +662,26 @@ struct _xmlSchemaElement {
     const xmlChar *value; /* The original value of the value constraint. */
     struct _xmlSchemaElement *refDecl; /* This will now be used for the
                                           substitution group affiliation */
-    xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
+    xmlRegexp *contModel; /* Obsolete for WXS, maybe used for RelaxNG */
     xmlSchemaContentType contentType;
     const xmlChar *refPrefix; /* Deprecated; not used */
-    xmlSchemaValPtr defVal; /* The compiled value constraint. */
+    xmlSchemaVal *defVal; /* The compiled value constraint. */
     void *idcs; /* The identity-constraint defs */
 };
 
-/*
- * XML_SCHEMAS_FACET_UNKNOWN:
- *
+/**
  * unknown facet handling
  */
 #define XML_SCHEMAS_FACET_UNKNOWN        0
-/*
- * XML_SCHEMAS_FACET_PRESERVE:
- *
+/**
  * preserve the type of the facet
  */
 #define XML_SCHEMAS_FACET_PRESERVE        1
-/*
- * XML_SCHEMAS_FACET_REPLACE:
- *
+/**
  * replace the type of the facet
  */
 #define XML_SCHEMAS_FACET_REPLACE        2
-/*
- * XML_SCHEMAS_FACET_COLLAPSE:
- *
+/**
  * collapse the types of the facet
  */
 #define XML_SCHEMAS_FACET_COLLAPSE        3
@@ -826,23 +693,24 @@ struct _xmlSchemaFacet {
     struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
     const xmlChar *value; /* The original value */
     const xmlChar *id; /* Obsolete */
-    xmlSchemaAnnotPtr annot;
-    xmlNodePtr node;
+    xmlSchemaAnnot *annot;
+    xmlNode *node;
     int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
     int whitespace;
-    xmlSchemaValPtr val; /* The compiled value */
-    xmlRegexpPtr    regexp; /* The regex for patterns */
+    xmlSchemaVal *val; /* The compiled value */
+    xmlRegexp      *regexp; /* The regex for patterns */
 };
 
+/** Schema notation */
+typedef struct _xmlSchemaNotation xmlSchemaNotation;
+typedef xmlSchemaNotation *xmlSchemaNotationPtr;
 /**
  * A notation definition.
  */
-typedef struct _xmlSchemaNotation xmlSchemaNotation;
-typedef xmlSchemaNotation *xmlSchemaNotationPtr;
 struct _xmlSchemaNotation {
     xmlSchemaTypeType type; /* The kind of type */
     const xmlChar *name;
-    xmlSchemaAnnotPtr annot;
+    xmlSchemaAnnot *annot;
     const xmlChar *identifier;
     const xmlChar *targetNamespace;
 };
@@ -854,71 +722,49 @@ struct _xmlSchemaNotation {
 * on the component level as per spec.
 */
 /**
- * XML_SCHEMAS_QUALIF_ELEM:
- *
  * Reflects elementFormDefault == qualified in
  * an XML schema document.
  */
 #define XML_SCHEMAS_QUALIF_ELEM                1 << 0
 /**
- * XML_SCHEMAS_QUALIF_ATTR:
- *
  * Reflects attributeFormDefault == qualified in
  * an XML schema document.
  */
 #define XML_SCHEMAS_QUALIF_ATTR            1 << 1
 /**
- * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
- *
  * the schema has "extension" in the set of finalDefault.
  */
 #define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION        1 << 2
 /**
- * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
- *
  * the schema has "restriction" in the set of finalDefault.
  */
 #define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION            1 << 3
 /**
- * XML_SCHEMAS_FINAL_DEFAULT_LIST:
- *
  * the schema has "list" in the set of finalDefault.
  */
 #define XML_SCHEMAS_FINAL_DEFAULT_LIST            1 << 4
 /**
- * XML_SCHEMAS_FINAL_DEFAULT_UNION:
- *
  * the schema has "union" in the set of finalDefault.
  */
 #define XML_SCHEMAS_FINAL_DEFAULT_UNION            1 << 5
 /**
- * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
- *
  * the schema has "extension" in the set of blockDefault.
  */
 #define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION            1 << 6
 /**
- * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
- *
  * the schema has "restriction" in the set of blockDefault.
  */
 #define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION            1 << 7
 /**
- * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
- *
  * the schema has "substitution" in the set of blockDefault.
  */
 #define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION            1 << 8
 /**
- * XML_SCHEMAS_INCLUDING_CONVERT_NS:
- *
  * the schema is currently including an other schema with
  * no target namespace.
  */
 #define XML_SCHEMAS_INCLUDING_CONVERT_NS            1 << 9
 /**
- * _xmlSchema:
- *
  * A Schemas definition
  */
 struct _xmlSchema {
@@ -926,30 +772,30 @@ struct _xmlSchema {
     const xmlChar *targetNamespace; /* the target namespace */
     const xmlChar *version;
     const xmlChar *id; /* Obsolete */
-    xmlDocPtr doc;
-    xmlSchemaAnnotPtr annot;
+    xmlDoc *doc;
+    xmlSchemaAnnot *annot;
     int flags;
 
-    xmlHashTablePtr typeDecl;
-    xmlHashTablePtr attrDecl;
-    xmlHashTablePtr attrgrpDecl;
-    xmlHashTablePtr elemDecl;
-    xmlHashTablePtr notaDecl;
+    xmlHashTable *typeDecl;
+    xmlHashTable *attrDecl;
+    xmlHashTable *attrgrpDecl;
+    xmlHashTable *elemDecl;
+    xmlHashTable *notaDecl;
 
-    xmlHashTablePtr schemasImports;
+    xmlHashTable *schemasImports;
 
     void *_private;        /* unused by the library for users or bindings */
-    xmlHashTablePtr groupDecl;
-    xmlDictPtr      dict;
+    xmlHashTable *groupDecl;
+    xmlDict        *dict;
     void *includes;     /* the includes, this is opaque for now */
     int preserve;        /* whether to free the document */
     int counter; /* used to give anonymous components unique names */
-    xmlHashTablePtr idcDef; /* All identity-constraint defs. */
+    xmlHashTable *idcDef; /* All identity-constraint defs. */
     void *volatiles; /* Obsolete */
 };
 
-XMLPUBFUN void         xmlSchemaFreeType        (xmlSchemaTypePtr type);
-XMLPUBFUN void         xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
+XMLPUBFUN void         xmlSchemaFreeType        (xmlSchemaType *type);
+XMLPUBFUN void         xmlSchemaFreeWildcard(xmlSchemaWildcard *wildcard);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/schematron.h 2.15.0+dfsg-0.3/include/libxml/schematron.h
--- 2.14.6+dfsg-0.1/include/libxml/schematron.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/schematron.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: XML Schematron implementation
- * Description: interface to the XML Schematron validity checking.
+/**
+ * @file
+ * 
+ * @brief XML Schematron implementation
+ * 
+ * interface to the XML Schematron validity checking.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -22,118 +25,123 @@
 extern "C" {
 #endif
 
+/**
+ * Schematron validation options
+ */
 typedef enum {
-    XML_SCHEMATRON_OUT_QUIET = 1 << 0,	/* quiet no report */
-    XML_SCHEMATRON_OUT_TEXT = 1 << 1,	/* build a textual report */
-    XML_SCHEMATRON_OUT_XML = 1 << 2,	/* output SVRL */
-    XML_SCHEMATRON_OUT_ERROR = 1 << 3,  /* output via xmlStructuredErrorFunc */
-    XML_SCHEMATRON_OUT_FILE = 1 << 8,	/* output to a file descriptor */
-    XML_SCHEMATRON_OUT_BUFFER = 1 << 9,	/* output to a buffer */
-    XML_SCHEMATRON_OUT_IO = 1 << 10	/* output to I/O mechanism */
+    /** quiet no report */
+    XML_SCHEMATRON_OUT_QUIET = 1 << 0,
+    /** build a textual report */
+    XML_SCHEMATRON_OUT_TEXT = 1 << 1,
+    /** output SVRL */
+    XML_SCHEMATRON_OUT_XML = 1 << 2,
+    /** output via xmlStructuredErrorFunc */
+    XML_SCHEMATRON_OUT_ERROR = 1 << 3,
+    /** output to a file descriptor */
+    XML_SCHEMATRON_OUT_FILE = 1 << 8,
+    /** output to a buffer */
+    XML_SCHEMATRON_OUT_BUFFER = 1 << 9,
+    /** output to I/O mechanism */
+    XML_SCHEMATRON_OUT_IO = 1 << 10
 } xmlSchematronValidOptions;
 
-/**
- * The schemas related types are kept internal
- */
+/** Schematron schema */
 typedef struct _xmlSchematron xmlSchematron;
 typedef xmlSchematron *xmlSchematronPtr;
 
 /**
- * xmlSchematronValidityErrorFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of an error callback from a Schematron validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...);
 
 /**
- * xmlSchematronValidityWarningFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of a warning callback from a Schematron validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...);
 
-/**
- * A schemas validation context
- */
+/** Schematron parser context */
 typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt;
 typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr;
 
+/** Schematron validation context */
 typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt;
 typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr;
 
 /*
  * Interfaces for parsing.
  */
-XMLPUBFUN xmlSchematronParserCtxtPtr
+XMLPUBFUN xmlSchematronParserCtxt *
 	    xmlSchematronNewParserCtxt	(const char *URL);
-XMLPUBFUN xmlSchematronParserCtxtPtr
+XMLPUBFUN xmlSchematronParserCtxt *
 	    xmlSchematronNewMemParserCtxt(const char *buffer,
 					 int size);
-XMLPUBFUN xmlSchematronParserCtxtPtr
-	    xmlSchematronNewDocParserCtxt(xmlDocPtr doc);
+XMLPUBFUN xmlSchematronParserCtxt *
+	    xmlSchematronNewDocParserCtxt(xmlDoc *doc);
 XMLPUBFUN void
-	    xmlSchematronFreeParserCtxt	(xmlSchematronParserCtxtPtr ctxt);
+	    xmlSchematronFreeParserCtxt	(xmlSchematronParserCtxt *ctxt);
 /*****
 XMLPUBFUN void
-	    xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt,
+	    xmlSchematronSetParserErrors(xmlSchematronParserCtxt *ctxt,
 					 xmlSchematronValidityErrorFunc err,
 					 xmlSchematronValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int
-		xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt,
+		xmlSchematronGetParserErrors(xmlSchematronParserCtxt *ctxt,
 					xmlSchematronValidityErrorFunc * err,
 					xmlSchematronValidityWarningFunc * warn,
 					void **ctx);
 XMLPUBFUN int
-		xmlSchematronIsValid	(xmlSchematronValidCtxtPtr ctxt);
+		xmlSchematronIsValid	(xmlSchematronValidCtxt *ctxt);
  *****/
-XMLPUBFUN xmlSchematronPtr
-	    xmlSchematronParse		(xmlSchematronParserCtxtPtr ctxt);
+XMLPUBFUN xmlSchematron *
+	    xmlSchematronParse		(xmlSchematronParserCtxt *ctxt);
 XMLPUBFUN void
-	    xmlSchematronFree		(xmlSchematronPtr schema);
+	    xmlSchematronFree		(xmlSchematron *schema);
 /*
  * Interfaces for validating
  */
 XMLPUBFUN void
 	    xmlSchematronSetValidStructuredErrors(
-	                                  xmlSchematronValidCtxtPtr ctxt,
+	                                  xmlSchematronValidCtxt *ctxt,
 					  xmlStructuredErrorFunc serror,
 					  void *ctx);
 /******
 XMLPUBFUN void
-	    xmlSchematronSetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
+	    xmlSchematronSetValidErrors	(xmlSchematronValidCtxt *ctxt,
 					 xmlSchematronValidityErrorFunc err,
 					 xmlSchematronValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int
-	    xmlSchematronGetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
+	    xmlSchematronGetValidErrors	(xmlSchematronValidCtxt *ctxt,
 					 xmlSchematronValidityErrorFunc *err,
 					 xmlSchematronValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN int
-	    xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt,
+	    xmlSchematronSetValidOptions(xmlSchematronValidCtxt *ctxt,
 					 int options);
 XMLPUBFUN int
-	    xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt);
+	    xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxt *ctxt);
 XMLPUBFUN int
-            xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt,
-			                 xmlNodePtr elem);
+            xmlSchematronValidateOneElement (xmlSchematronValidCtxt *ctxt,
+			                 xmlNode *elem);
  *******/
 
-XMLPUBFUN xmlSchematronValidCtxtPtr
-	    xmlSchematronNewValidCtxt	(xmlSchematronPtr schema,
+XMLPUBFUN xmlSchematronValidCtxt *
+	    xmlSchematronNewValidCtxt	(xmlSchematron *schema,
 					 int options);
 XMLPUBFUN void
-	    xmlSchematronFreeValidCtxt	(xmlSchematronValidCtxtPtr ctxt);
+	    xmlSchematronFreeValidCtxt	(xmlSchematronValidCtxt *ctxt);
 XMLPUBFUN int
-	    xmlSchematronValidateDoc	(xmlSchematronValidCtxtPtr ctxt,
-					 xmlDocPtr instance);
+	    xmlSchematronValidateDoc	(xmlSchematronValidCtxt *ctxt,
+					 xmlDoc *instance);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/threads.h 2.15.0+dfsg-0.3/include/libxml/threads.h
--- 2.14.6+dfsg-0.1/include/libxml/threads.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/threads.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
 /**
- * Summary: interfaces for thread handling
- * Description: set of generic threading related routines
+ * @file
+ *
+ * @brief interfaces for thread handling
+ * 
+ * set of generic threading related routines
  *              should work with pthreads, Windows native or TLS threads
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_THREADS_H__
@@ -17,38 +20,34 @@
 extern "C" {
 #endif
 
-/*
- * xmlMutex are a simple mutual exception locks.
- */
+/** Mutual exclusion object */
 typedef struct _xmlMutex xmlMutex;
 typedef xmlMutex *xmlMutexPtr;
 
-/*
- * xmlRMutex are reentrant mutual exception locks.
- */
+/** Reentrant mutual exclusion object */
 typedef struct _xmlRMutex xmlRMutex;
 typedef xmlRMutex *xmlRMutexPtr;
 
 XMLPUBFUN int
 			xmlCheckThreadLocalStorage(void);
 
-XMLPUBFUN xmlMutexPtr
+XMLPUBFUN xmlMutex *
 			xmlNewMutex	(void);
 XMLPUBFUN void
-			xmlMutexLock	(xmlMutexPtr tok);
+			xmlMutexLock	(xmlMutex *tok);
 XMLPUBFUN void
-			xmlMutexUnlock	(xmlMutexPtr tok);
+			xmlMutexUnlock	(xmlMutex *tok);
 XMLPUBFUN void
-			xmlFreeMutex	(xmlMutexPtr tok);
+			xmlFreeMutex	(xmlMutex *tok);
 
-XMLPUBFUN xmlRMutexPtr
+XMLPUBFUN xmlRMutex *
 			xmlNewRMutex	(void);
 XMLPUBFUN void
-			xmlRMutexLock	(xmlRMutexPtr tok);
+			xmlRMutexLock	(xmlRMutex *tok);
 XMLPUBFUN void
-			xmlRMutexUnlock	(xmlRMutexPtr tok);
+			xmlRMutexUnlock	(xmlRMutex *tok);
 XMLPUBFUN void
-			xmlFreeRMutex	(xmlRMutexPtr tok);
+			xmlFreeRMutex	(xmlRMutex *tok);
 
 /*
  * Library wide APIs.
@@ -64,14 +63,14 @@ XML_DEPRECATED
 XMLPUBFUN void
 			xmlCleanupThreads(void);
 
-/** DOC_DISABLE */
+/** @cond IGNORE */
 #if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \
     defined(LIBXML_STATIC_FOR_DLL)
 int
 xmlDllMain(void *hinstDLL, unsigned long fdwReason,
            void *lpvReserved);
 #endif
-/** DOC_ENABLE */
+/** @endcond */
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/tree.h 2.15.0+dfsg-0.3/include/libxml/tree.h
--- 2.14.6+dfsg-0.1/include/libxml/tree.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/tree.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,12 +1,15 @@
-/*
- * Summary: interfaces for tree manipulation
- * Description: this module describes the structures found in an tree resulting
- *              from an XML or HTML parsing, as well as the API provided for
- *              various processing on that tree
+/**
+ * @file
+ *
+ * @brief Document tree API
  *
- * Copy: See Copyright for the status of this software.
+ * Data structures and functions to build, modify, query and
+ * serialize XML and HTML document trees. Also contains the
+ * buffer API.
  *
- * Author: Daniel Veillard
+ * @copyright See Copyright for the status of this software.
+ *
+ * @author Daniel Veillard
  */
 
 #ifndef XML_TREE_INTERNALS
@@ -19,7 +22,9 @@
 #else /* XML_TREE_INTERNALS */
 
 #ifndef __XML_TREE_H__
+/** @cond ignore */
 #define __XML_TREE_H__
+/** @endcond */
 
 #include <stdio.h>
 #include <limits.h>
@@ -35,52 +40,56 @@ extern "C" {
 /*
  * Backward compatibility
  */
+/** @cond ignore */
 #define xmlBufferAllocScheme XML_BUFFER_ALLOC_EXACT
 #define xmlDefaultBufferSize 4096
+#define XML_GET_CONTENT(n) \
+    ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
+#define XML_GET_LINE(n)	xmlGetLineNo(n)
+/** @endcond */
 
 /*
  * Some of the basic types pointer to structures:
  */
 /* xmlIO.h */
+/**
+ * Parser input buffer
+ *
+ * This struct and all related functions should ultimately
+ * be removed from the public interface.
+ */
 typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
 typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
 
+/** Output buffer */
 typedef struct _xmlOutputBuffer xmlOutputBuffer;
 typedef xmlOutputBuffer *xmlOutputBufferPtr;
 
 /* parser.h */
+/** Parser input */
 typedef struct _xmlParserInput xmlParserInput;
 typedef xmlParserInput *xmlParserInputPtr;
 
+/** Parser context */
 typedef struct _xmlParserCtxt xmlParserCtxt;
 typedef xmlParserCtxt *xmlParserCtxtPtr;
 
+/** SAX locator */
 typedef struct _xmlSAXLocator xmlSAXLocator;
 typedef xmlSAXLocator *xmlSAXLocatorPtr;
 
+/** SAX handler */
 typedef struct _xmlSAXHandler xmlSAXHandler;
 typedef xmlSAXHandler *xmlSAXHandlerPtr;
 
 /* entities.h */
+/** Entity declaration */
 typedef struct _xmlEntity xmlEntity;
 typedef xmlEntity *xmlEntityPtr;
 
 /**
- * LIBXML_NAMESPACE_DICT:
- *
- * Defines experimental behaviour:
- * 1) xmlNs gets an additional field @context (a xmlDoc)
- * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
+ * Removed, buffers always use XML_BUFFER_ALLOC_IO now.
  */
-/* #define LIBXML_NAMESPACE_DICT */
-
-/**
- * xmlBufferAllocationScheme:
- *
- * A buffer allocation scheme can be defined to either match exactly the
- * need or double it's allocated size each time it is found too small.
- */
-
 typedef enum {
     XML_BUFFER_ALLOC_DOUBLEIT,	/* double each time one need to grow */
     XML_BUFFER_ALLOC_EXACT,	/* grow only to the minimal size */
@@ -90,18 +99,25 @@ typedef enum {
     XML_BUFFER_ALLOC_BOUNDED	/* limit the upper size of the buffer */
 } xmlBufferAllocationScheme;
 
+/** Buffer type */
+typedef struct _xmlBuffer xmlBuffer;
+typedef xmlBuffer *xmlBufferPtr;
 /**
- * xmlBuffer:
- *
  * A buffer structure, this old construct is limited to 2GB and
- * is being deprecated, use API with xmlBuf instead
+ * is being deprecated, use API with xmlBuf instead.
  */
-typedef struct _xmlBuffer xmlBuffer;
-typedef xmlBuffer *xmlBufferPtr;
 struct _xmlBuffer {
-    /* The buffer content UTF8 */
+    /**
+     * @deprecated Use #xmlBufferContent
+     *
+     * The buffer content UTF8
+     */
     xmlChar *content XML_DEPRECATED_MEMBER;
-    /* The buffer size used */
+    /**
+     * @deprecated Use #xmlBufferLength
+     *
+     * The buffer size used
+     */
     unsigned int use XML_DEPRECATED_MEMBER;
     /* The buffer size */
     unsigned int size XML_DEPRECATED_MEMBER;
@@ -111,35 +127,11 @@ struct _xmlBuffer {
     xmlChar *contentIO XML_DEPRECATED_MEMBER;
 };
 
-/**
- * xmlBuf:
- *
- * A buffer structure, new one, the actual structure internals are not public
- */
-
+/** Buffer with 64-bit support */
 typedef struct _xmlBuf xmlBuf;
-
-/**
- * xmlBufPtr:
- *
- * A pointer to a buffer structure, the actual structure internals are not
- * public
- */
-
 typedef xmlBuf *xmlBufPtr;
 
-/*
- * A few public routines for xmlBuf. As those are expected to be used
- * mostly internally the bulk of the routines are internal in buf.h
- */
-XMLPUBFUN xmlChar*       xmlBufContent	(const xmlBuf* buf);
-XMLPUBFUN xmlChar*       xmlBufEnd      (xmlBufPtr buf);
-XMLPUBFUN size_t         xmlBufUse      (const xmlBufPtr buf);
-XMLPUBFUN size_t         xmlBufShrink	(xmlBufPtr buf, size_t len);
-
-/*
- * LIBXML2_NEW_BUFFER:
- *
+/**
  * Macro used to express that the API use the new buffers for
  * xmlParserInputBuffer and xmlOutputBuffer. The change was
  * introduced in 2.9.0.
@@ -147,8 +139,6 @@ XMLPUBFUN size_t         xmlBufShrink	(x
 #define LIBXML2_NEW_BUFFER
 
 /**
- * XML_XML_NAMESPACE:
- *
  * This is the namespace for the special xml: prefix predefined in the
  * XML Namespace specification.
  */
@@ -156,70 +146,166 @@ XMLPUBFUN size_t         xmlBufShrink	(x
     (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
 
 /**
- * XML_XML_ID:
- *
  * This is the name for the special xml:id attribute
  */
 #define XML_XML_ID (const xmlChar *) "xml:id"
 
-/*
+/**
  * The different element types carried by an XML tree.
  *
- * NOTE: This is synchronized with DOM Level1 values
+ * NOTE: This is synchronized with DOM Level 1 values.
  *       See http://www.w3.org/TR/REC-DOM-Level-1/
  *
- * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
- * be deprecated to use an XML_DTD_NODE.
+ * Actually this had diverged a bit, and XML_DTD_NODE is used instead
+ * of XML_DOCUMENT_TYPE_NODE.
  */
 typedef enum {
+    /**
+     * An element.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_ELEMENT_NODE=		1,
+    /**
+     * An attribute.
+     *
+     * Objects of this type are an xmlAttr.
+     */
     XML_ATTRIBUTE_NODE=		2,
+    /**
+     * A text node.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_TEXT_NODE=		3,
+    /**
+     * A CDATA section.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_CDATA_SECTION_NODE=	4,
+    /**
+     * An entity reference.
+     *
+     * Objects of this type are an xmlNode. The `children` member
+     * points to the entity declaration if available.
+     */
     XML_ENTITY_REF_NODE=	5,
-    XML_ENTITY_NODE=		6,  /* unused */
+    /** unused */
+    XML_ENTITY_NODE=		6,
+    /**
+     * A processing instruction.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_PI_NODE=		7,
+    /**
+     * A comment.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_COMMENT_NODE=		8,
+    /**
+     * A document.
+     *
+     * Objects of this type are an xmlDoc.
+     */
     XML_DOCUMENT_NODE=		9,
-    XML_DOCUMENT_TYPE_NODE=	10, /* unused */
+    /** unused */
+    XML_DOCUMENT_TYPE_NODE=	10,
+    /**
+     * A document fragment.
+     *
+     * Objects of this type are an xmlNode.
+     */
     XML_DOCUMENT_FRAG_NODE=	11,
-    XML_NOTATION_NODE=		12, /* unused */
+    /** A notation, unused */
+    XML_NOTATION_NODE=		12,
+    /**
+     * An HTML document.
+     *
+     * Objects of this type are an xmlDoc.
+     */
     XML_HTML_DOCUMENT_NODE=	13,
+    /**
+     * A document type definition.
+     *
+     * Objects of this type are an xmlDtd.
+     */
     XML_DTD_NODE=		14,
+    /**
+     * An element declaration.
+     *
+     * Objects of this type are an xmlElement.
+     */
     XML_ELEMENT_DECL=		15,
+    /**
+     * An attribute declaration.
+     *
+     * Objects of this type are an xmlAttribute.
+     */
     XML_ATTRIBUTE_DECL=		16,
+    /**
+     * An entity declaration.
+     *
+     * Objects of this type are an xmlEntity.
+     */
     XML_ENTITY_DECL=		17,
+    /**
+     * An XPath namespace node.
+     *
+     * Can only be returned by the XPath engine. Objects of this
+     * type are an xmlNs which has a completely different layout
+     * than xmlNode. The `next` member contains a pointer to the
+     * xmlNode element to which the namespace applies.
+     *
+     * Nodes of this type must be handled with extreme care to
+     * avoid type confusion bugs.
+     */
     XML_NAMESPACE_DECL=		18,
+    /**
+     * An XInclude start marker.
+     *
+     * Objects of this type are an xmlNode. Inserted as preceding
+     * sibling of XIncluded content.
+     */
     XML_XINCLUDE_START=		19,
+    /**
+     * An XInclude end marker.
+     *
+     * Objects of this type are an xmlNode. Inserted as following
+     * sibling of XIncluded content.
+     */
     XML_XINCLUDE_END=		20
     /* XML_DOCB_DOCUMENT_NODE=	21 */ /* removed */
 } xmlElementType;
 
-/** DOC_DISABLE */
+/** @cond IGNORE */
 /* For backward compatibility */
 #define XML_DOCB_DOCUMENT_NODE 21
-/** DOC_ENABLE */
+/** @endcond */
 
+/** Notation declaration */
+typedef struct _xmlNotation xmlNotation;
+typedef xmlNotation *xmlNotationPtr;
 /**
- * xmlNotation:
- *
  * A DTD Notation definition.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-
-typedef struct _xmlNotation xmlNotation;
-typedef xmlNotation *xmlNotationPtr;
 struct _xmlNotation {
-    const xmlChar               *name;	        /* Notation name */
-    const xmlChar               *PublicID;	/* Public identifier, if any */
-    const xmlChar               *SystemID;	/* System identifier, if any */
+    /** Notation name */
+    const xmlChar               *name XML_DEPRECATED_MEMBER;
+    /** Public identifier, if any */
+    const xmlChar               *PublicID XML_DEPRECATED_MEMBER;
+    /** System identifier, if any */
+    const xmlChar               *SystemID XML_DEPRECATED_MEMBER;
 };
 
 /**
- * xmlAttributeType:
- *
  * A DTD Attribute type definition.
  */
-
 typedef enum {
     XML_ATTRIBUTE_CDATA = 1,
     XML_ATTRIBUTE_ID,
@@ -234,11 +320,8 @@ typedef enum {
 } xmlAttributeType;
 
 /**
- * xmlAttributeDefault:
- *
  * A DTD Attribute default definition.
  */
-
 typedef enum {
     XML_ATTRIBUTE_NONE = 1,
     XML_ATTRIBUTE_REQUIRED,
@@ -246,50 +329,68 @@ typedef enum {
     XML_ATTRIBUTE_FIXED
 } xmlAttributeDefault;
 
+/** Enumeration in a DTD */
+typedef struct _xmlEnumeration xmlEnumeration;
+typedef xmlEnumeration *xmlEnumerationPtr;
 /**
- * xmlEnumeration:
- *
  * List structure used when there is an enumeration in DTDs.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-
-typedef struct _xmlEnumeration xmlEnumeration;
-typedef xmlEnumeration *xmlEnumerationPtr;
 struct _xmlEnumeration {
-    struct _xmlEnumeration    *next;	/* next one */
-    const xmlChar            *name;	/* Enumeration name */
+    /** next enumeration */
+    struct _xmlEnumeration    *next XML_DEPRECATED_MEMBER;
+    /** value */
+    const xmlChar            *name XML_DEPRECATED_MEMBER;
 };
 
+/** Attribute declaration */
+typedef struct _xmlAttribute xmlAttribute;
+typedef xmlAttribute *xmlAttributePtr;
 /**
- * xmlAttribute:
- *
  * An Attribute declaration in a DTD.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-
-typedef struct _xmlAttribute xmlAttribute;
-typedef xmlAttribute *xmlAttributePtr;
 struct _xmlAttribute {
-    void           *_private;	        /* application data */
-    xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
-    const xmlChar          *name;	/* Attribute name */
-    struct _xmlNode    *children;	/* NULL */
-    struct _xmlNode        *last;	/* NULL */
-    struct _xmlDtd       *parent;	/* -> DTD */
-    struct _xmlNode        *next;	/* next sibling link  */
-    struct _xmlNode        *prev;	/* previous sibling link  */
-    struct _xmlDoc          *doc;       /* the containing document */
-
-    struct _xmlAttribute  *nexth;	/* next in hash table */
-    xmlAttributeType       atype;	/* The attribute type */
-    xmlAttributeDefault      def;	/* the default */
-    const xmlChar  *defaultValue;	/* or the default value */
-    xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
-    const xmlChar        *prefix;	/* the namespace prefix if any */
-    const xmlChar          *elem;	/* Element holding the attribute */
+    /** application data */
+    void           *_private;
+    /** XML_ATTRIBUTE_DECL */
+    xmlElementType          type;
+    /** attribute name */
+    const xmlChar          *name;
+    /** NULL */
+    struct _xmlNode    *children;
+    /** NULL */
+    struct _xmlNode        *last;
+    /** DTD */
+    struct _xmlDtd       *parent;
+    /** next sibling */
+    struct _xmlNode        *next;
+    /** previous sibling */
+    struct _xmlNode        *prev;
+    /** containing document */
+    struct _xmlDoc          *doc;
+
+    /** next in hash table */
+    struct _xmlAttribute  *nexth XML_DEPRECATED_MEMBER;
+    /** attribute type */
+    xmlAttributeType       atype XML_DEPRECATED_MEMBER;
+    /** attribute default */
+    xmlAttributeDefault      def XML_DEPRECATED_MEMBER;
+    /** default value */
+    xmlChar *defaultValue;
+    /** enumeration tree if any */
+    xmlEnumeration         *tree XML_DEPRECATED_MEMBER;
+    /** namespace prefix if any */
+    const xmlChar        *prefix;
+    /** element name */
+    const xmlChar          *elem XML_DEPRECATED_MEMBER;
 };
 
 /**
- * xmlElementContentType:
- *
  * Possible definitions of element content types.
  */
 typedef enum {
@@ -300,8 +401,6 @@ typedef enum {
 } xmlElementContentType;
 
 /**
- * xmlElementContentOccur:
- *
  * Possible definitions of element content occurrences.
  */
 typedef enum {
@@ -311,31 +410,36 @@ typedef enum {
     XML_ELEMENT_CONTENT_PLUS
 } xmlElementContentOccur;
 
+/** Element content in element declarations */
+typedef struct _xmlElementContent xmlElementContent;
+typedef xmlElementContent *xmlElementContentPtr;
 /**
- * xmlElementContent:
- *
  * An XML Element content as stored after parsing an element definition
  * in a DTD.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-
-typedef struct _xmlElementContent xmlElementContent;
-typedef xmlElementContent *xmlElementContentPtr;
 struct _xmlElementContent {
-    xmlElementContentType     type;	/* PCDATA, ELEMENT, SEQ or OR */
-    xmlElementContentOccur    ocur;	/* ONCE, OPT, MULT or PLUS */
-    const xmlChar             *name;	/* Element name */
-    struct _xmlElementContent *c1;	/* first child */
-    struct _xmlElementContent *c2;	/* second child */
-    struct _xmlElementContent *parent;	/* parent */
-    const xmlChar             *prefix;	/* Namespace prefix */
+    /** PCDATA, ELEMENT, SEQ or OR */
+    xmlElementContentType     type XML_DEPRECATED_MEMBER;
+    /** ONCE, OPT, MULT or PLUS */
+    xmlElementContentOccur    ocur XML_DEPRECATED_MEMBER;
+    /** element name */
+    const xmlChar             *name XML_DEPRECATED_MEMBER;
+    /** first child */
+    struct _xmlElementContent *c1 XML_DEPRECATED_MEMBER;
+    /** second child */
+    struct _xmlElementContent *c2 XML_DEPRECATED_MEMBER;
+    /** parent */
+    struct _xmlElementContent *parent XML_DEPRECATED_MEMBER;
+    /** namespace prefix */
+    const xmlChar             *prefix XML_DEPRECATED_MEMBER;
 };
 
 /**
- * xmlElementTypeVal:
- *
  * The different possibilities for an element content type.
  */
-
 typedef enum {
     XML_ELEMENT_TYPE_UNDEFINED = 0,
     XML_ELEMENT_TYPE_EMPTY = 1,
@@ -344,279 +448,424 @@ typedef enum {
     XML_ELEMENT_TYPE_ELEMENT
 } xmlElementTypeVal;
 
+/** Element declaration */
+typedef struct _xmlElement xmlElement;
+typedef xmlElement *xmlElementPtr;
 /**
- * xmlElement:
- *
  * An XML Element declaration from a DTD.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-
-typedef struct _xmlElement xmlElement;
-typedef xmlElement *xmlElementPtr;
 struct _xmlElement {
-    void           *_private;	        /* application data */
-    xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
-    const xmlChar          *name;	/* Element name */
-    struct _xmlNode    *children;	/* NULL */
-    struct _xmlNode        *last;	/* NULL */
-    struct _xmlDtd       *parent;	/* -> DTD */
-    struct _xmlNode        *next;	/* next sibling link  */
-    struct _xmlNode        *prev;	/* previous sibling link  */
-    struct _xmlDoc          *doc;       /* the containing document */
-
-    xmlElementTypeVal      etype;	/* The type */
-    xmlElementContentPtr content;	/* the allowed element content */
-    xmlAttributePtr   attributes;	/* List of the declared attributes */
-    const xmlChar        *prefix;	/* the namespace prefix if any */
+    /** application data */
+    void           *_private;
+    /** XML_ELEMENT_DECL */
+    xmlElementType          type;
+    /** element name */
+    const xmlChar          *name;
+    /** NULL */
+    struct _xmlNode    *children;
+    /** NULL */
+    struct _xmlNode        *last;
+    /** -> DTD */
+    struct _xmlDtd       *parent;
+    /** next sibling */
+    struct _xmlNode        *next;
+    /** previous sibling */
+    struct _xmlNode        *prev;
+    /** containing document */
+    struct _xmlDoc          *doc;
+
+    /** element type */
+    xmlElementTypeVal      etype XML_DEPRECATED_MEMBER;
+    /** allowed element content */
+    xmlElementContent *content XML_DEPRECATED_MEMBER;
+    /** list of declared attributes */
+    xmlAttribute     *attributes XML_DEPRECATED_MEMBER;
+    /** namespace prefix if any */
+    const xmlChar        *prefix XML_DEPRECATED_MEMBER;
 #ifdef LIBXML_REGEXP_ENABLED
-    xmlRegexpPtr       contModel;	/* the validating regexp */
+    /** validating regexp */
+    xmlRegexp         *contModel XML_DEPRECATED_MEMBER;
 #else
-    void	      *contModel;
+    void	      *contModel XML_DEPRECATED_MEMBER;
 #endif
 };
 
 
 /**
- * XML_LOCAL_NAMESPACE:
- *
  * A namespace declaration node.
  */
 #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
 typedef xmlElementType xmlNsType;
 
+/** Namespace declaration */
+typedef struct _xmlNs xmlNs;
+typedef xmlNs *xmlNsPtr;
 /**
- * xmlNs:
- *
  * An XML namespace.
  * Note that prefix == NULL is valid, it defines the default namespace
  * within the subtree (until overridden).
  *
  * xmlNsType is unified with xmlElementType.
+ *
+ * Note that the XPath engine returns XPath namespace nodes as
+ * xmlNs cast to xmlNode. This is a terrible design decision that
+ * can easily cause type confusion errors. In this case, the `next`
+ * member points to the xmlNode element to which the namespace
+ * node belongs.
  */
-
-typedef struct _xmlNs xmlNs;
-typedef xmlNs *xmlNsPtr;
 struct _xmlNs {
-    struct _xmlNs  *next;	/* next Ns link for this node  */
-    xmlNsType      type;	/* global or local */
-    const xmlChar *href;	/* URL for the namespace */
-    const xmlChar *prefix;	/* prefix for the namespace */
-    void           *_private;   /* application data */
-    struct _xmlDoc *context;		/* normally an xmlDoc */
+    /** next namespace */
+    struct _xmlNs  *next;
+    /** XML_NAMESPACE_DECL */
+    xmlNsType      type;
+    /** namespace URI */
+    const xmlChar *href;
+    /** namespace prefix */
+    const xmlChar *prefix;
+    /** application data */
+    void           *_private;
+    /** normally an xmlDoc */
+    struct _xmlDoc *context XML_DEPRECATED_MEMBER;
 };
 
+/** Document type definition (DTD) */
+typedef struct _xmlDtd xmlDtd;
+typedef xmlDtd *xmlDtdPtr;
 /**
- * xmlDtd:
- *
  * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
  * the internal subset and for the external subset.
+ *
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
-typedef struct _xmlDtd xmlDtd;
-typedef xmlDtd *xmlDtdPtr;
 struct _xmlDtd {
-    void           *_private;	/* application data */
-    xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
-    const xmlChar *name;	/* Name of the DTD */
-    struct _xmlNode *children;	/* the value of the property link */
-    struct _xmlNode *last;	/* last child link */
-    struct _xmlDoc  *parent;	/* child->parent link */
-    struct _xmlNode *next;	/* next sibling link  */
-    struct _xmlNode *prev;	/* previous sibling link  */
-    struct _xmlDoc  *doc;	/* the containing document */
+    /** application data */
+    void           *_private;
+    /** XML_DTD_NODE */
+    xmlElementType  type;
+    /** name of the DTD */
+    const xmlChar *name;
+    /** first child */
+    struct _xmlNode *children;
+    /** last child */
+    struct _xmlNode *last;
+    /** parent node */
+    struct _xmlDoc  *parent;
+    /** next sibling */
+    struct _xmlNode *next;
+    /** previous sibling */
+    struct _xmlNode *prev;
+    /** containing document */
+    struct _xmlDoc  *doc;
 
     /* End of common part */
-    void          *notations;   /* Hash table for notations if any */
-    void          *elements;    /* Hash table for elements if any */
-    void          *attributes;  /* Hash table for attributes if any */
-    void          *entities;    /* Hash table for entities if any */
-    const xmlChar *ExternalID;	/* External identifier for PUBLIC DTD */
-    const xmlChar *SystemID;	/* URI for a SYSTEM or PUBLIC DTD */
-    void          *pentities;   /* Hash table for param entities if any */
+
+    /** hash table for notations if any */
+    void          *notations XML_DEPRECATED_MEMBER;
+    /** hash table for elements if any */
+    void          *elements XML_DEPRECATED_MEMBER;
+    /** hash table for attributes if any */
+    void          *attributes XML_DEPRECATED_MEMBER;
+    /** hash table for entities if any */
+    void          *entities XML_DEPRECATED_MEMBER;
+    /** public identifier */
+    xmlChar *ExternalID XML_DEPRECATED_MEMBER;
+    /** system identifier */
+    xmlChar *SystemID XML_DEPRECATED_MEMBER;
+    /** hash table for parameter entities if any */
+    void          *pentities XML_DEPRECATED_MEMBER;
 };
 
-/**
- * xmlAttr:
- *
- * An attribute on an XML node.
- */
+/** Attribute of an element */
 typedef struct _xmlAttr xmlAttr;
 typedef xmlAttr *xmlAttrPtr;
-struct _xmlAttr {
-    void           *_private;	/* application data */
-    xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
-    const xmlChar   *name;      /* the name of the property */
-    struct _xmlNode *children;	/* the value of the property */
-    struct _xmlNode *last;	/* NULL */
-    struct _xmlNode *parent;	/* child->parent link */
-    struct _xmlAttr *next;	/* next sibling link  */
-    struct _xmlAttr *prev;	/* previous sibling link  */
-    struct _xmlDoc  *doc;	/* the containing document */
-    xmlNs           *ns;        /* pointer to the associated namespace */
-    xmlAttributeType atype;     /* the attribute type if validating */
-    void            *psvi;	/* for type/PSVI information */
-    struct _xmlID   *id;        /* the ID struct */
-};
-
 /**
- * xmlID:
- *
- * An XML ID instance.
+ * An attribute of element.
  */
+struct _xmlAttr {
+    /** application data */
+    void           *_private;
+    /** XML_ATTRIBUTE_NODE */
+    xmlElementType   type;
+    /** local name */
+    const xmlChar   *name;
+    /** first child */
+    struct _xmlNode *children;
+    /** last child */
+    struct _xmlNode *last;
+    /** parent node */
+    struct _xmlNode *parent;
+    /** next sibling */
+    struct _xmlAttr *next;
+    /** previous sibling */
+    struct _xmlAttr *prev;
+    /** containing document */
+    struct _xmlDoc  *doc;
+    /** namespace if any */
+    xmlNs           *ns;
+    /** attribute type if validating */
+    xmlAttributeType atype;
+    /** for type/PSVI information */
+    void            *psvi;
+    /** ID struct if any */
+    struct _xmlID   *id XML_DEPRECATED_MEMBER;
+};
 
+/** Extra data for ID attributes */
 typedef struct _xmlID xmlID;
 typedef xmlID *xmlIDPtr;
-struct _xmlID {
-    struct _xmlID    *next;	/* next ID */
-    const xmlChar    *value;	/* The ID name */
-    xmlAttrPtr        attr;	/* The attribute holding it */
-    const xmlChar    *name;	/* The attribute if attr is not available */
-    int               lineno;	/* The line number if attr is not available */
-    struct _xmlDoc   *doc;	/* The document holding the ID */
-};
-
 /**
- * xmlRef:
+ * An XML ID instance.
  *
- * An XML IDREF instance.
+ * Should be treated as opaque. Accessing members directly
+ * is deprecated.
  */
+struct _xmlID {
+    /* next ID */
+    struct _xmlID    *next XML_DEPRECATED_MEMBER;
+    /* The ID name */
+    xmlChar *value XML_DEPRECATED_MEMBER;
+    /* The attribute holding it */
+    xmlAttr          *attr XML_DEPRECATED_MEMBER;
+    /* The attribute if attr is not available */
+    const xmlChar    *name XML_DEPRECATED_MEMBER;
+    /* The line number if attr is not available */
+    int               lineno XML_DEPRECATED_MEMBER;
+    /* The document holding the ID */
+    struct _xmlDoc   *doc XML_DEPRECATED_MEMBER;
+};
 
+/** @cond ignore */
 typedef struct _xmlRef xmlRef;
 typedef xmlRef *xmlRefPtr;
+/*
+ * An XML IDREF instance.
+ */
 struct _xmlRef {
-    struct _xmlRef    *next;	/* next Ref */
-    const xmlChar     *value;	/* The Ref name */
-    xmlAttrPtr        attr;	/* The attribute holding it */
-    const xmlChar    *name;	/* The attribute if attr is not available */
-    int               lineno;	/* The line number if attr is not available */
+    /* next Ref */
+    struct _xmlRef    *next XML_DEPRECATED_MEMBER;
+    /* The Ref name */
+    const xmlChar     *value XML_DEPRECATED_MEMBER;
+    /* The attribute holding it */
+    xmlAttr          *attr XML_DEPRECATED_MEMBER;
+    /* The attribute if attr is not available */
+    const xmlChar    *name XML_DEPRECATED_MEMBER;
+    /* The line number if attr is not available */
+    int               lineno XML_DEPRECATED_MEMBER;
 };
+/** @endcond */
 
+/** Generic node type in an XML or HTML tree */
+typedef struct _xmlNode xmlNode;
+typedef xmlNode *xmlNodePtr;
 /**
- * xmlNode:
+ * Generic node type in an XML or HTML tree.
+ *
+ * This is used for
  *
- * A node in an XML tree.
+ * - XML_ELEMENT_NODE
+ * - XML_TEXT_NODE
+ * - XML_CDATA_SECTION_NODE
+ * - XML_ENTITY_REF_NODE
+ * - XML_PI_NODE
+ * - XML_COMMENT_NODE
+ * - XML_DOCUMENT_FRAG_NODE
+ * - XML_XINCLUDE_START_NODE
+ * - XML_XINCLUDE_END_NODE
+ *
+ * Other node types have a different struct layout than xmlNode,
+ * see xmlElementType. Except for XML_NAMESPACE_DECL all nodes
+ * share the following members at the same offset:
+ *
+ * - `_private`
+ * - `type` (also for XML_NAMESPACE_DECL)
+ * - `name`
+ * - `children`
+ * - `last`
+ * - `parent`
+ * - `next`
+ * - `prev`
+ * - `doc`
+ *
+ * xmlNode and xmlAttr also share the `ns` member.
  */
-typedef struct _xmlNode xmlNode;
-typedef xmlNode *xmlNodePtr;
 struct _xmlNode {
-    void           *_private;	/* application data */
-    xmlElementType   type;	/* type number, must be second ! */
-    const xmlChar   *name;      /* the name of the node, or the entity */
-    struct _xmlNode *children;	/* parent->childs link */
-    struct _xmlNode *last;	/* last child link */
-    struct _xmlNode *parent;	/* child->parent link */
-    struct _xmlNode *next;	/* next sibling link  */
-    struct _xmlNode *prev;	/* previous sibling link  */
-    struct _xmlDoc  *doc;	/* the containing document */
+    /** Application data. Often used by language bindings. */
+    void           *_private;
+    /** Type enum, an xmlElementType value */
+    xmlElementType   type;
+    /**
+     * Name of the node.
+     *
+     * - Local name of elements or attributes. As a corner case,
+     *   this can also contain Names which are invalid QNames in
+     *   non-namespace-wellformed documents.
+     * - Name of entity references
+     * - Target of processing instructions
+     * - Fixed string for text and comments
+     * - Unused otherwise
+     */
+    const xmlChar   *name;
+    /** First child. Entity declaration of entity references. */
+    struct _xmlNode *children;
+    /** Last child */
+    struct _xmlNode *last;
+    /** Parent node. NULL for documents or unlinked root nodes. */
+    struct _xmlNode *parent;
+    /** Next sibling */
+    struct _xmlNode *next;
+    /** Previous sibling */
+    struct _xmlNode *prev;
+    /**
+     * Associated document.
+     *
+     * Used to access DTDs, entities, ID tables, dictionary or
+     * other document properties. All children of a node share the
+     * same document.
+     */
+    struct _xmlDoc  *doc;
 
     /* End of common part */
-    xmlNs           *ns;        /* pointer to the associated namespace */
-    xmlChar         *content;   /* the content */
-    struct _xmlAttr *properties;/* properties list */
-    xmlNs           *nsDef;     /* namespace definitions on this node */
-    void            *psvi;	/* for type/PSVI information */
-    unsigned short   line;	/* line number */
-    unsigned short   extra;	/* extra data for XPath/XSLT */
-};
-
-/**
- * XML_GET_CONTENT:
- *
- * Macro to extract the content pointer of a node.
- */
-#define XML_GET_CONTENT(n)					\
-    ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
 
-/**
- * XML_GET_LINE:
- *
- * Macro to extract the line number of an element node.
- */
-#define XML_GET_LINE(n)						\
-    (xmlGetLineNo(n))
+    /** Namespace of element if any */
+    xmlNs           *ns;
+    /**
+     * Content of text, comment, PI nodes.
+     *
+     * Sort index for elements after calling #xmlXPathOrderDocElems.
+     * Content of internal entities for entity references.
+     */
+    xmlChar         *content;
+    /**
+     * First attribute of element.
+     *
+     * Also used to store small strings with XML_PARSE_COMPACT.
+     */
+    struct _xmlAttr *properties;
+    /** First namespace definition of element */
+    xmlNs           *nsDef;
+    /** For type/PSVI information */
+    void            *psvi;
+    /** Line number */
+    unsigned short   line;
+    /** Extra data for XPath/XSLT */
+    unsigned short   extra;
+};
 
 /**
- * xmlDocProperty
- *
- * Set of properties of the document as found by the parser
- * Some of them are linked to similarly named xmlParserOption
+ * Set of properties of the document as found by the parser.
+ * Some of them are linked to similarly named xmlParserOption.
  */
 typedef enum {
-    XML_DOC_WELLFORMED		= 1<<0, /* document is XML well formed */
-    XML_DOC_NSVALID		= 1<<1, /* document is Namespace valid */
-    XML_DOC_OLD10		= 1<<2, /* parsed with old XML-1.0 parser */
-    XML_DOC_DTDVALID		= 1<<3, /* DTD validation was successful */
-    XML_DOC_XINCLUDE		= 1<<4, /* XInclude substitution was done */
-    XML_DOC_USERBUILT		= 1<<5, /* Document was built using the API
-                                           and not by parsing an instance */
-    XML_DOC_INTERNAL		= 1<<6, /* built for internal processing */
-    XML_DOC_HTML		= 1<<7  /* parsed or built HTML document */
+    /** document is XML well formed */
+    XML_DOC_WELLFORMED		= 1<<0,
+    /** document is Namespace valid */
+    XML_DOC_NSVALID		= 1<<1,
+    /** parsed with old XML-1.0 parser */
+    XML_DOC_OLD10		= 1<<2,
+    /** DTD validation was successful */
+    XML_DOC_DTDVALID		= 1<<3,
+    /** XInclude substitution was done */
+    XML_DOC_XINCLUDE		= 1<<4,
+    /** Document was built using the API and not by parsing an instance */
+    XML_DOC_USERBUILT		= 1<<5,
+    /** built for internal processing */
+    XML_DOC_INTERNAL		= 1<<6,
+    /** parsed or built HTML document */
+    XML_DOC_HTML		= 1<<7
 } xmlDocProperties;
 
-/**
- * xmlDoc:
- *
- * An XML document.
- */
+/** XML or HTML document */
 typedef struct _xmlDoc xmlDoc;
 typedef xmlDoc *xmlDocPtr;
+/**
+ * An XML or HTML document.
+ */
 struct _xmlDoc {
-    void           *_private;	/* application data */
-    xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
-    char           *name;	/* name/filename/URI of the document */
-    struct _xmlNode *children;	/* the document tree */
-    struct _xmlNode *last;	/* last child link */
-    struct _xmlNode *parent;	/* child->parent link */
-    struct _xmlNode *next;	/* next sibling link  */
-    struct _xmlNode *prev;	/* previous sibling link  */
-    struct _xmlDoc  *doc;	/* autoreference to itself */
+    /** application data */
+    void           *_private;
+    /** XML_DOCUMENT_NODE or XML_HTML_DOCUMENT_NODE */
+    xmlElementType  type;
+    /** NULL */
+    char           *name;
+    /** first child */
+    struct _xmlNode *children;
+    /** last child */
+    struct _xmlNode *last;
+    /** parent node */
+    struct _xmlNode *parent;
+    /** next sibling */
+    struct _xmlNode *next;
+    /** previous sibling */
+    struct _xmlNode *prev;
+    /** reference to itself */
+    struct _xmlDoc  *doc;
 
     /* End of common part */
-    int             compression;/* level of zlib compression */
-    int             standalone; /* standalone document (no external refs)
-				     1 if standalone="yes"
-				     0 if standalone="no"
-				    -1 if there is no XML declaration
-				    -2 if there is an XML declaration, but no
-					standalone attribute was specified */
-    struct _xmlDtd  *intSubset;	/* the document internal subset */
-    struct _xmlDtd  *extSubset;	/* the document external subset */
-    struct _xmlNs   *oldNs;	/* Global namespace, the old way */
-    const xmlChar  *version;	/* the XML version string */
-    const xmlChar  *encoding;   /* actual encoding, if any */
-    void           *ids;        /* Hash table for ID attributes if any */
-    void           *refs;       /* Hash table for IDREFs attributes if any */
-    const xmlChar  *URL;	/* The URI for that document */
-    int             charset;    /* unused */
-    struct _xmlDict *dict;      /* dict used to allocate names or NULL */
-    void           *psvi;	/* for type/PSVI information */
-    int             parseFlags;	/* set of xmlParserOption used to parse the
-				   document */
-    int             properties;	/* set of xmlDocProperties for this document
-				   set at the end of parsing */
+
+    /** level of zlib compression */
+    int             compression;
+    /**
+     * standalone document (no external refs)
+     *
+     * - 1 if standalone="yes",
+     * - 0 if standalone="no",
+     * - -1 if there is no XML declaration,
+     * - -2 if there is an XML declaration, but no
+     *   standalone attribute was specified
+     */
+    int             standalone;
+    /** internal subset */
+    struct _xmlDtd  *intSubset;
+    /** external subset */
+    struct _xmlDtd  *extSubset;
+    /** used to hold the XML namespace if needed */
+    struct _xmlNs   *oldNs XML_DEPRECATED_MEMBER;
+    /** version string from XML declaration */
+    xmlChar  *version;
+    /** actual encoding if any */
+    xmlChar  *encoding;
+    /** hash table for ID attributes if any */
+    void           *ids;
+    /** hash table for IDREFs attributes if any */
+    void           *refs XML_DEPRECATED_MEMBER;
+    /** URI of the document */
+    xmlChar  *URL;
+    /** unused */
+    int             charset;
+    /** dict used to allocate names if any */
+    struct _xmlDict *dict;
+    /** for type/PSVI information */
+    void           *psvi;
+    /** xmlParserOption enum used to parse the document */
+    int             parseFlags;
+    /** xmlDocProperties of the document */
+    int             properties;
 };
 
 
+/** Context for DOM wrapper operations */
 typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
 typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
 
 /**
- * xmlDOMWrapAcquireNsFunction:
- * @ctxt:  a DOM wrapper context
- * @node:  the context node (element or attribute)
- * @nsName:  the requested namespace name
- * @nsPrefix:  the requested namespace prefix
- *
  * A function called to acquire namespaces (xmlNs) from the wrapper.
  *
- * Returns an xmlNsPtr or NULL in case of an error.
+ * @param ctxt  a DOM wrapper context
+ * @param node  the context node (element or attribute)
+ * @param nsName  the requested namespace name
+ * @param nsPrefix  the requested namespace prefix
+ * @returns an xmlNs or NULL in case of an error.
  */
-typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
-						 xmlNodePtr node,
+typedef xmlNs *(*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxt *ctxt,
+						 xmlNode *node,
 						 const xmlChar *nsName,
 						 const xmlChar *nsPrefix);
 
 /**
- * xmlDOMWrapCtxt:
- *
  * Context for DOM wrapper-operations.
  */
 struct _xmlDOMWrapCtxt {
@@ -631,31 +880,27 @@ struct _xmlDOMWrapCtxt {
     */
     void * namespaceMap;
     /*
-    * Use this one to acquire an xmlNsPtr intended for node->ns.
+    * Use this one to acquire an xmlNs intended for node->ns.
     * (Note that this is not intended for elem->nsDef).
     */
     xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
 };
 
 /**
- * xmlRegisterNodeFunc:
- * @node: the current node
- *
  * Signature for the registration callback of a created node
+ *
+ * @param node  the current node
  */
-typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
+typedef void (*xmlRegisterNodeFunc) (xmlNode *node);
 
 /**
- * xmlDeregisterNodeFunc:
- * @node: the current node
- *
  * Signature for the deregistration callback of a discarded node
+ *
+ * @param node  the current node
  */
-typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
+typedef void (*xmlDeregisterNodeFunc) (xmlNode *node);
 
 /**
- * xmlChildrenNode:
- *
  * Macro for compatibility naming layer with libxml1. Maps
  * to "children."
  */
@@ -664,8 +909,6 @@ typedef void (*xmlDeregisterNodeFunc) (x
 #endif
 
 /**
- * xmlRootNode:
- *
  * Macro for compatibility naming layer with libxml1. Maps
  * to "children".
  */
@@ -677,7 +920,8 @@ typedef void (*xmlDeregisterNodeFunc) (x
  * Variables.
  */
 
-/** DOC_DISABLE */
+/** @cond ignore */
+
 XML_DEPRECATED
 XMLPUBFUN xmlRegisterNodeFunc *__xmlRegisterNodeDefaultValue(void);
 XML_DEPRECATED
@@ -689,7 +933,8 @@ XMLPUBFUN xmlDeregisterNodeFunc *__xmlDe
   #define xmlDeregisterNodeDefaultValue \
     (*__xmlDeregisterNodeDefaultValue())
 #endif
-/** DOC_ENABLE */
+
+/** @endcond */
 
 /*
  * Some helper functions
@@ -721,210 +966,149 @@ XMLPUBFUN const xmlChar *
 					 int *len);
 
 /*
- * Handling Buffers, the old ones see @xmlBuf for the new ones.
- */
-
-XML_DEPRECATED
-XMLPUBFUN void
-		xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
-XML_DEPRECATED
-XMLPUBFUN xmlBufferAllocationScheme
-		xmlGetBufferAllocationScheme(void);
-
-XMLPUBFUN xmlBufferPtr
-		xmlBufferCreate		(void);
-XMLPUBFUN xmlBufferPtr
-		xmlBufferCreateSize	(size_t size);
-XMLPUBFUN xmlBufferPtr
-		xmlBufferCreateStatic	(void *mem,
-					 size_t size);
-XML_DEPRECATED
-XMLPUBFUN int
-		xmlBufferResize		(xmlBufferPtr buf,
-					 unsigned int size);
-XMLPUBFUN void
-		xmlBufferFree		(xmlBufferPtr buf);
-XMLPUBFUN int
-		xmlBufferDump		(FILE *file,
-					 xmlBufferPtr buf);
-XMLPUBFUN int
-		xmlBufferAdd		(xmlBufferPtr buf,
-					 const xmlChar *str,
-					 int len);
-XMLPUBFUN int
-		xmlBufferAddHead	(xmlBufferPtr buf,
-					 const xmlChar *str,
-					 int len);
-XMLPUBFUN int
-		xmlBufferCat		(xmlBufferPtr buf,
-					 const xmlChar *str);
-XMLPUBFUN int
-		xmlBufferCCat		(xmlBufferPtr buf,
-					 const char *str);
-XML_DEPRECATED
-XMLPUBFUN int
-		xmlBufferShrink		(xmlBufferPtr buf,
-					 unsigned int len);
-XML_DEPRECATED
-XMLPUBFUN int
-		xmlBufferGrow		(xmlBufferPtr buf,
-					 unsigned int len);
-XMLPUBFUN void
-		xmlBufferEmpty		(xmlBufferPtr buf);
-XMLPUBFUN const xmlChar*
-		xmlBufferContent	(const xmlBuffer *buf);
-XMLPUBFUN xmlChar*
-		xmlBufferDetach         (xmlBufferPtr buf);
-XMLPUBFUN void
-		xmlBufferSetAllocationScheme(xmlBufferPtr buf,
-					 xmlBufferAllocationScheme scheme);
-XMLPUBFUN int
-		xmlBufferLength		(const xmlBuffer *buf);
-
-/*
  * Creating/freeing new structures.
  */
-XMLPUBFUN xmlDtdPtr
-		xmlCreateIntSubset	(xmlDocPtr doc,
+XMLPUBFUN xmlDtd *
+		xmlCreateIntSubset	(xmlDoc *doc,
 					 const xmlChar *name,
-					 const xmlChar *ExternalID,
-					 const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr
-		xmlNewDtd		(xmlDocPtr doc,
+					 const xmlChar *publicId,
+					 const xmlChar *systemId);
+XMLPUBFUN xmlDtd *
+		xmlNewDtd		(xmlDoc *doc,
 					 const xmlChar *name,
-					 const xmlChar *ExternalID,
-					 const xmlChar *SystemID);
-XMLPUBFUN xmlDtdPtr
+					 const xmlChar *publicId,
+					 const xmlChar *systemId);
+XMLPUBFUN xmlDtd *
 		xmlGetIntSubset		(const xmlDoc *doc);
 XMLPUBFUN void
-		xmlFreeDtd		(xmlDtdPtr cur);
-XMLPUBFUN xmlNsPtr
-		xmlNewNs		(xmlNodePtr node,
+		xmlFreeDtd		(xmlDtd *cur);
+XMLPUBFUN xmlNs *
+		xmlNewNs		(xmlNode *node,
 					 const xmlChar *href,
 					 const xmlChar *prefix);
 XMLPUBFUN void
-		xmlFreeNs		(xmlNsPtr cur);
+		xmlFreeNs		(xmlNs *cur);
 XMLPUBFUN void
-		xmlFreeNsList		(xmlNsPtr cur);
-XMLPUBFUN xmlDocPtr
+		xmlFreeNsList		(xmlNs *cur);
+XMLPUBFUN xmlDoc *
 		xmlNewDoc		(const xmlChar *version);
 XMLPUBFUN void
-		xmlFreeDoc		(xmlDocPtr cur);
-XMLPUBFUN xmlAttrPtr
-		xmlNewDocProp		(xmlDocPtr doc,
+		xmlFreeDoc		(xmlDoc *cur);
+XMLPUBFUN xmlAttr *
+		xmlNewDocProp		(xmlDoc *doc,
 					 const xmlChar *name,
 					 const xmlChar *value);
-XMLPUBFUN xmlAttrPtr
-		xmlNewProp		(xmlNodePtr node,
+XMLPUBFUN xmlAttr *
+		xmlNewProp		(xmlNode *node,
 					 const xmlChar *name,
 					 const xmlChar *value);
-XMLPUBFUN xmlAttrPtr
-		xmlNewNsProp		(xmlNodePtr node,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlAttr *
+		xmlNewNsProp		(xmlNode *node,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *value);
-XMLPUBFUN xmlAttrPtr
-		xmlNewNsPropEatName	(xmlNodePtr node,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlAttr *
+		xmlNewNsPropEatName	(xmlNode *node,
+					 xmlNs *ns,
 					 xmlChar *name,
 					 const xmlChar *value);
 XMLPUBFUN void
-		xmlFreePropList		(xmlAttrPtr cur);
+		xmlFreePropList		(xmlAttr *cur);
 XMLPUBFUN void
-		xmlFreeProp		(xmlAttrPtr cur);
-XMLPUBFUN xmlAttrPtr
-		xmlCopyProp		(xmlNodePtr target,
-					 xmlAttrPtr cur);
-XMLPUBFUN xmlAttrPtr
-		xmlCopyPropList		(xmlNodePtr target,
-					 xmlAttrPtr cur);
-XMLPUBFUN xmlDtdPtr
-		xmlCopyDtd		(xmlDtdPtr dtd);
-XMLPUBFUN xmlDocPtr
-		xmlCopyDoc		(xmlDocPtr doc,
+		xmlFreeProp		(xmlAttr *cur);
+XMLPUBFUN xmlAttr *
+		xmlCopyProp		(xmlNode *target,
+					 xmlAttr *cur);
+XMLPUBFUN xmlAttr *
+		xmlCopyPropList		(xmlNode *target,
+					 xmlAttr *cur);
+XMLPUBFUN xmlDtd *
+		xmlCopyDtd		(xmlDtd *dtd);
+XMLPUBFUN xmlDoc *
+		xmlCopyDoc		(xmlDoc *doc,
 					 int recursive);
 /*
  * Creating new nodes.
  */
-XMLPUBFUN xmlNodePtr
-		xmlNewDocNode		(xmlDocPtr doc,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewDocNode		(xmlDoc *doc,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocNodeEatName	(xmlDocPtr doc,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewDocNodeEatName	(xmlDoc *doc,
+					 xmlNs *ns,
 					 xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewNode		(xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewNode		(xmlNs *ns,
 					 const xmlChar *name);
-XMLPUBFUN xmlNodePtr
-		xmlNewNodeEatName	(xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewNodeEatName	(xmlNs *ns,
 					 xmlChar *name);
-XMLPUBFUN xmlNodePtr
-		xmlNewChild		(xmlNodePtr parent,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewChild		(xmlNode *parent,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewDocText		(const xmlDoc *doc,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewText		(const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocPI		(xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlNewDocPI		(xmlDoc *doc,
 					 const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewPI		(const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocTextLen	(xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlNewDocTextLen	(xmlDoc *doc,
 					 const xmlChar *content,
 					 int len);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewTextLen		(const xmlChar *content,
 					 int len);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocComment	(xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlNewDocComment	(xmlDoc *doc,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewComment		(const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewCDataBlock	(xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlNewCDataBlock	(xmlDoc *doc,
 					 const xmlChar *content,
 					 int len);
-XMLPUBFUN xmlNodePtr
-		xmlNewCharRef		(xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlNewCharRef		(xmlDoc *doc,
 					 const xmlChar *name);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlNewReference		(const xmlDoc *doc,
 					 const xmlChar *name);
-XMLPUBFUN xmlNodePtr
-		xmlCopyNode		(xmlNodePtr node,
+XMLPUBFUN xmlNode *
+		xmlCopyNode		(xmlNode *node,
 					 int recursive);
-XMLPUBFUN xmlNodePtr
-		xmlDocCopyNode		(xmlNodePtr node,
-					 xmlDocPtr doc,
+XMLPUBFUN xmlNode *
+		xmlDocCopyNode		(xmlNode *node,
+					 xmlDoc *doc,
 					 int recursive);
-XMLPUBFUN xmlNodePtr
-		xmlDocCopyNodeList	(xmlDocPtr doc,
-					 xmlNodePtr node);
-XMLPUBFUN xmlNodePtr
-		xmlCopyNodeList		(xmlNodePtr node);
-XMLPUBFUN xmlNodePtr
-		xmlNewTextChild		(xmlNodePtr parent,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlDocCopyNodeList	(xmlDoc *doc,
+					 xmlNode *node);
+XMLPUBFUN xmlNode *
+		xmlCopyNodeList		(xmlNode *node);
+XMLPUBFUN xmlNode *
+		xmlNewTextChild		(xmlNode *parent,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocRawNode	(xmlDocPtr doc,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlNode *
+		xmlNewDocRawNode	(xmlDoc *doc,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *content);
-XMLPUBFUN xmlNodePtr
-		xmlNewDocFragment	(xmlDocPtr doc);
+XMLPUBFUN xmlNode *
+		xmlNewDocFragment	(xmlDoc *doc);
 
 /*
  * Navigating.
@@ -933,9 +1117,9 @@ XMLPUBFUN long
 		xmlGetLineNo		(const xmlNode *node);
 XMLPUBFUN xmlChar *
 		xmlGetNodePath		(const xmlNode *node);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlDocGetRootElement	(const xmlDoc *doc);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlGetLastChild		(const xmlNode *parent);
 XMLPUBFUN int
 		xmlNodeIsText		(const xmlNode *node);
@@ -945,86 +1129,86 @@ XMLPUBFUN int
 /*
  * Changing the structure.
  */
-XMLPUBFUN xmlNodePtr
-		xmlDocSetRootElement	(xmlDocPtr doc,
-					 xmlNodePtr root);
+XMLPUBFUN xmlNode *
+		xmlDocSetRootElement	(xmlDoc *doc,
+					 xmlNode *root);
 XMLPUBFUN void
-		xmlNodeSetName		(xmlNodePtr cur,
+		xmlNodeSetName		(xmlNode *cur,
 					 const xmlChar *name);
-XMLPUBFUN xmlNodePtr
-		xmlAddChild		(xmlNodePtr parent,
-					 xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr
-		xmlAddChildList		(xmlNodePtr parent,
-					 xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr
-		xmlReplaceNode		(xmlNodePtr old,
-					 xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr
-		xmlAddPrevSibling	(xmlNodePtr cur,
-					 xmlNodePtr elem);
-XMLPUBFUN xmlNodePtr
-		xmlAddSibling		(xmlNodePtr cur,
-					 xmlNodePtr elem);
-XMLPUBFUN xmlNodePtr
-		xmlAddNextSibling	(xmlNodePtr cur,
-					 xmlNodePtr elem);
-XMLPUBFUN void
-		xmlUnlinkNode		(xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr
-		xmlTextMerge		(xmlNodePtr first,
-					 xmlNodePtr second);
+XMLPUBFUN xmlNode *
+		xmlAddChild		(xmlNode *parent,
+					 xmlNode *cur);
+XMLPUBFUN xmlNode *
+		xmlAddChildList		(xmlNode *parent,
+					 xmlNode *cur);
+XMLPUBFUN xmlNode *
+		xmlReplaceNode		(xmlNode *old,
+					 xmlNode *cur);
+XMLPUBFUN xmlNode *
+		xmlAddPrevSibling	(xmlNode *cur,
+					 xmlNode *elem);
+XMLPUBFUN xmlNode *
+		xmlAddSibling		(xmlNode *cur,
+					 xmlNode *elem);
+XMLPUBFUN xmlNode *
+		xmlAddNextSibling	(xmlNode *cur,
+					 xmlNode *elem);
+XMLPUBFUN void
+		xmlUnlinkNode		(xmlNode *cur);
+XMLPUBFUN xmlNode *
+		xmlTextMerge		(xmlNode *first,
+					 xmlNode *second);
 XMLPUBFUN int
-		xmlTextConcat		(xmlNodePtr node,
+		xmlTextConcat		(xmlNode *node,
 					 const xmlChar *content,
 					 int len);
 XMLPUBFUN void
-		xmlFreeNodeList		(xmlNodePtr cur);
+		xmlFreeNodeList		(xmlNode *cur);
 XMLPUBFUN void
-		xmlFreeNode		(xmlNodePtr cur);
+		xmlFreeNode		(xmlNode *cur);
 XMLPUBFUN int
-		xmlSetTreeDoc		(xmlNodePtr tree,
-					 xmlDocPtr doc);
+		xmlSetTreeDoc		(xmlNode *tree,
+					 xmlDoc *doc);
 XMLPUBFUN int
-		xmlSetListDoc		(xmlNodePtr list,
-					 xmlDocPtr doc);
+		xmlSetListDoc		(xmlNode *list,
+					 xmlDoc *doc);
 /*
  * Namespaces.
  */
-XMLPUBFUN xmlNsPtr
-		xmlSearchNs		(xmlDocPtr doc,
-					 xmlNodePtr node,
+XMLPUBFUN xmlNs *
+		xmlSearchNs		(xmlDoc *doc,
+					 xmlNode *node,
 					 const xmlChar *nameSpace);
-XMLPUBFUN xmlNsPtr
-		xmlSearchNsByHref	(xmlDocPtr doc,
-					 xmlNodePtr node,
+XMLPUBFUN xmlNs *
+		xmlSearchNsByHref	(xmlDoc *doc,
+					 xmlNode *node,
 					 const xmlChar *href);
 XMLPUBFUN int
 		xmlGetNsListSafe	(const xmlDoc *doc,
 					 const xmlNode *node,
-					 xmlNsPtr **out);
-XMLPUBFUN xmlNsPtr *
+					 xmlNs ***out);
+XMLPUBFUN xmlNs **
 		xmlGetNsList		(const xmlDoc *doc,
 					 const xmlNode *node);
 
 XMLPUBFUN void
-		xmlSetNs		(xmlNodePtr node,
-					 xmlNsPtr ns);
-XMLPUBFUN xmlNsPtr
-		xmlCopyNamespace	(xmlNsPtr cur);
-XMLPUBFUN xmlNsPtr
-		xmlCopyNamespaceList	(xmlNsPtr cur);
+		xmlSetNs		(xmlNode *node,
+					 xmlNs *ns);
+XMLPUBFUN xmlNs *
+		xmlCopyNamespace	(xmlNs *cur);
+XMLPUBFUN xmlNs *
+		xmlCopyNamespaceList	(xmlNs *cur);
 
 /*
  * Changing the content.
  */
-XMLPUBFUN xmlAttrPtr
-		xmlSetProp		(xmlNodePtr node,
+XMLPUBFUN xmlAttr *
+		xmlSetProp		(xmlNode *node,
 					 const xmlChar *name,
 					 const xmlChar *value);
-XMLPUBFUN xmlAttrPtr
-		xmlSetNsProp		(xmlNodePtr node,
-					 xmlNsPtr ns,
+XMLPUBFUN xmlAttr *
+		xmlSetNsProp		(xmlNode *node,
+					 xmlNs *ns,
 					 const xmlChar *name,
 					 const xmlChar *value);
 XMLPUBFUN int
@@ -1038,10 +1222,10 @@ XMLPUBFUN xmlChar *
 XMLPUBFUN xmlChar *
 		xmlGetProp		(const xmlNode *node,
 					 const xmlChar *name);
-XMLPUBFUN xmlAttrPtr
+XMLPUBFUN xmlAttr *
 		xmlHasProp		(const xmlNode *node,
 					 const xmlChar *name);
-XMLPUBFUN xmlAttrPtr
+XMLPUBFUN xmlAttr *
 		xmlHasNsProp		(const xmlNode *node,
 					 const xmlChar *name,
 					 const xmlChar *nameSpace);
@@ -1049,15 +1233,15 @@ XMLPUBFUN xmlChar *
 		xmlGetNsProp		(const xmlNode *node,
 					 const xmlChar *name,
 					 const xmlChar *nameSpace);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlStringGetNodeList	(const xmlDoc *doc,
 					 const xmlChar *value);
-XMLPUBFUN xmlNodePtr
+XMLPUBFUN xmlNode *
 		xmlStringLenGetNodeList	(const xmlDoc *doc,
 					 const xmlChar *value,
 					 int len);
 XMLPUBFUN xmlChar *
-		xmlNodeListGetString	(xmlDocPtr doc,
+		xmlNodeListGetString	(xmlDoc *doc,
 					 const xmlNode *list,
 					 int inLine);
 XMLPUBFUN xmlChar *
@@ -1065,27 +1249,27 @@ XMLPUBFUN xmlChar *
 					 const xmlNode *list,
 					 int inLine);
 XMLPUBFUN int
-		xmlNodeSetContent	(xmlNodePtr cur,
+		xmlNodeSetContent	(xmlNode *cur,
 					 const xmlChar *content);
 XMLPUBFUN int
-		xmlNodeSetContentLen	(xmlNodePtr cur,
+		xmlNodeSetContentLen	(xmlNode *cur,
 					 const xmlChar *content,
 					 int len);
 XMLPUBFUN int
-		xmlNodeAddContent	(xmlNodePtr cur,
+		xmlNodeAddContent	(xmlNode *cur,
 					 const xmlChar *content);
 XMLPUBFUN int
-		xmlNodeAddContentLen	(xmlNodePtr cur,
+		xmlNodeAddContentLen	(xmlNode *cur,
 					 const xmlChar *content,
 					 int len);
 XMLPUBFUN xmlChar *
 		xmlNodeGetContent	(const xmlNode *cur);
 
 XMLPUBFUN int
-		xmlNodeBufGetContent	(xmlBufferPtr buffer,
+		xmlNodeBufGetContent	(xmlBuffer *buffer,
 					 const xmlNode *cur);
 XMLPUBFUN int
-		xmlBufGetNodeContent	(xmlBufPtr buf,
+		xmlBufGetNodeContent	(xmlBuf *buf,
 					 const xmlNode *cur);
 
 XMLPUBFUN xmlChar *
@@ -1093,10 +1277,10 @@ XMLPUBFUN xmlChar *
 XMLPUBFUN int
 		xmlNodeGetSpacePreserve	(const xmlNode *cur);
 XMLPUBFUN int
-		xmlNodeSetLang		(xmlNodePtr cur,
+		xmlNodeSetLang		(xmlNode *cur,
 					 const xmlChar *lang);
 XMLPUBFUN int
-		xmlNodeSetSpacePreserve (xmlNodePtr cur,
+		xmlNodeSetSpacePreserve (xmlNode *cur,
 					 int val);
 XMLPUBFUN int
 		xmlNodeGetBaseSafe	(const xmlDoc *doc,
@@ -1106,39 +1290,26 @@ XMLPUBFUN xmlChar *
 		xmlNodeGetBase		(const xmlDoc *doc,
 					 const xmlNode *cur);
 XMLPUBFUN int
-		xmlNodeSetBase		(xmlNodePtr cur,
+		xmlNodeSetBase		(xmlNode *cur,
 					 const xmlChar *uri);
 
 /*
  * Removing content.
  */
 XMLPUBFUN int
-		xmlRemoveProp		(xmlAttrPtr cur);
+		xmlRemoveProp		(xmlAttr *cur);
 XMLPUBFUN int
-		xmlUnsetNsProp		(xmlNodePtr node,
-					 xmlNsPtr ns,
+		xmlUnsetNsProp		(xmlNode *node,
+					 xmlNs *ns,
 					 const xmlChar *name);
 XMLPUBFUN int
-		xmlUnsetProp		(xmlNodePtr node,
+		xmlUnsetProp		(xmlNode *node,
 					 const xmlChar *name);
 
-/*
- * Internal, don't use.
- */
-XMLPUBFUN void
-		xmlBufferWriteCHAR	(xmlBufferPtr buf,
-					 const xmlChar *string);
-XMLPUBFUN void
-		xmlBufferWriteChar	(xmlBufferPtr buf,
-					 const char *string);
-XMLPUBFUN void
-		xmlBufferWriteQuotedString(xmlBufferPtr buf,
-					 const xmlChar *string);
-
 #ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlAttrPtr attr,
+XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBuffer *buf,
+					 xmlDoc *doc,
+					 xmlAttr *attr,
 					 const xmlChar *string);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
@@ -1146,90 +1317,90 @@ XMLPUBFUN void xmlAttrSerializeTxtConten
  * Namespace handling.
  */
 XMLPUBFUN int
-		xmlReconciliateNs	(xmlDocPtr doc,
-					 xmlNodePtr tree);
+		xmlReconciliateNs	(xmlDoc *doc,
+					 xmlNode *tree);
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /*
  * Saving.
  */
 XMLPUBFUN void
-		xmlDocDumpFormatMemory	(xmlDocPtr cur,
+		xmlDocDumpFormatMemory	(xmlDoc *cur,
 					 xmlChar **mem,
 					 int *size,
 					 int format);
 XMLPUBFUN void
-		xmlDocDumpMemory	(xmlDocPtr cur,
+		xmlDocDumpMemory	(xmlDoc *cur,
 					 xmlChar **mem,
 					 int *size);
 XMLPUBFUN void
-		xmlDocDumpMemoryEnc	(xmlDocPtr out_doc,
+		xmlDocDumpMemoryEnc	(xmlDoc *out_doc,
 					 xmlChar **doc_txt_ptr,
 					 int * doc_txt_len,
 					 const char *txt_encoding);
 XMLPUBFUN void
-		xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
+		xmlDocDumpFormatMemoryEnc(xmlDoc *out_doc,
 					 xmlChar **doc_txt_ptr,
 					 int * doc_txt_len,
 					 const char *txt_encoding,
 					 int format);
 XMLPUBFUN int
 		xmlDocFormatDump	(FILE *f,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 int format);
 XMLPUBFUN int
 		xmlDocDump		(FILE *f,
-					 xmlDocPtr cur);
+					 xmlDoc *cur);
 XMLPUBFUN void
 		xmlElemDump		(FILE *f,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur);
+					 xmlDoc *doc,
+					 xmlNode *cur);
 XMLPUBFUN int
 		xmlSaveFile		(const char *filename,
-					 xmlDocPtr cur);
+					 xmlDoc *cur);
 XMLPUBFUN int
 		xmlSaveFormatFile	(const char *filename,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 int format);
 XMLPUBFUN size_t
-		xmlBufNodeDump		(xmlBufPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
+		xmlBufNodeDump		(xmlBuf *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 int level,
 					 int format);
 XMLPUBFUN int
-		xmlNodeDump		(xmlBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
+		xmlNodeDump		(xmlBuffer *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 int level,
 					 int format);
 
 XMLPUBFUN int
-		xmlSaveFileTo		(xmlOutputBufferPtr buf,
-					 xmlDocPtr cur,
+		xmlSaveFileTo		(xmlOutputBuffer *buf,
+					 xmlDoc *cur,
 					 const char *encoding);
 XMLPUBFUN int
-		xmlSaveFormatFileTo     (xmlOutputBufferPtr buf,
-					 xmlDocPtr cur,
+		xmlSaveFormatFileTo     (xmlOutputBuffer *buf,
+					 xmlDoc *cur,
 				         const char *encoding,
 				         int format);
 XMLPUBFUN void
-		xmlNodeDumpOutput	(xmlOutputBufferPtr buf,
-					 xmlDocPtr doc,
-					 xmlNodePtr cur,
+		xmlNodeDumpOutput	(xmlOutputBuffer *buf,
+					 xmlDoc *doc,
+					 xmlNode *cur,
 					 int level,
 					 int format,
 					 const char *encoding);
 
 XMLPUBFUN int
 		xmlSaveFormatFileEnc    (const char *filename,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 const char *encoding,
 					 int format);
 
 XMLPUBFUN int
 		xmlSaveFileEnc		(const char *filename,
-					 xmlDocPtr cur,
+					 xmlDoc *cur,
 					 const char *encoding);
 
 #endif /* LIBXML_OUTPUT_ENABLED */
@@ -1246,7 +1417,7 @@ XMLPUBFUN int
 XMLPUBFUN int
 		xmlGetDocCompressMode	(const xmlDoc *doc);
 XMLPUBFUN void
-		xmlSetDocCompressMode	(xmlDocPtr doc,
+		xmlSetDocCompressMode	(xmlDoc *doc,
 					 int mode);
 XML_DEPRECATED
 XMLPUBFUN int
@@ -1258,33 +1429,33 @@ XMLPUBFUN void
 /*
 * DOM-wrapper helper functions.
 */
-XMLPUBFUN xmlDOMWrapCtxtPtr
+XMLPUBFUN xmlDOMWrapCtxt *
 		xmlDOMWrapNewCtxt	(void);
 XMLPUBFUN void
-		xmlDOMWrapFreeCtxt	(xmlDOMWrapCtxtPtr ctxt);
+		xmlDOMWrapFreeCtxt	(xmlDOMWrapCtxt *ctxt);
 XMLPUBFUN int
-	    xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
-					 xmlNodePtr elem,
+	    xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxt *ctxt,
+					 xmlNode *elem,
 					 int options);
 XMLPUBFUN int
-	    xmlDOMWrapAdoptNode		(xmlDOMWrapCtxtPtr ctxt,
-					 xmlDocPtr sourceDoc,
-					 xmlNodePtr node,
-					 xmlDocPtr destDoc,
-					 xmlNodePtr destParent,
+	    xmlDOMWrapAdoptNode		(xmlDOMWrapCtxt *ctxt,
+					 xmlDoc *sourceDoc,
+					 xmlNode *node,
+					 xmlDoc *destDoc,
+					 xmlNode *destParent,
 					 int options);
 XMLPUBFUN int
-	    xmlDOMWrapRemoveNode	(xmlDOMWrapCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr node,
+	    xmlDOMWrapRemoveNode	(xmlDOMWrapCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *node,
 					 int options);
 XMLPUBFUN int
-	    xmlDOMWrapCloneNode		(xmlDOMWrapCtxtPtr ctxt,
-					 xmlDocPtr sourceDoc,
-					 xmlNodePtr node,
-					 xmlNodePtr *clonedNode,
-					 xmlDocPtr destDoc,
-					 xmlNodePtr destParent,
+	    xmlDOMWrapCloneNode		(xmlDOMWrapCtxt *ctxt,
+					 xmlDoc *sourceDoc,
+					 xmlNode *node,
+					 xmlNode **clonedNode,
+					 xmlDoc *destDoc,
+					 xmlNode *destParent,
 					 int deep,
 					 int options);
 
@@ -1293,15 +1464,15 @@ XMLPUBFUN int
  * traversal.
  */
 XMLPUBFUN unsigned long
-            xmlChildElementCount        (xmlNodePtr parent);
-XMLPUBFUN xmlNodePtr
-            xmlNextElementSibling       (xmlNodePtr node);
-XMLPUBFUN xmlNodePtr
-            xmlFirstElementChild        (xmlNodePtr parent);
-XMLPUBFUN xmlNodePtr
-            xmlLastElementChild         (xmlNodePtr parent);
-XMLPUBFUN xmlNodePtr
-            xmlPreviousElementSibling   (xmlNodePtr node);
+            xmlChildElementCount        (xmlNode *parent);
+XMLPUBFUN xmlNode *
+            xmlNextElementSibling       (xmlNode *node);
+XMLPUBFUN xmlNode *
+            xmlFirstElementChild        (xmlNode *parent);
+XMLPUBFUN xmlNode *
+            xmlLastElementChild         (xmlNode *parent);
+XMLPUBFUN xmlNode *
+            xmlPreviousElementSibling   (xmlNode *node);
 
 XML_DEPRECATED
 XMLPUBFUN xmlRegisterNodeFunc
@@ -1316,6 +1487,85 @@ XML_DEPRECATED
 XMLPUBFUN xmlDeregisterNodeFunc
             xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
 
+/*
+ * Handling Buffers, the old ones see `xmlBuf` for the new ones.
+ */
+
+XML_DEPRECATED
+XMLPUBFUN void
+		xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
+XML_DEPRECATED
+XMLPUBFUN xmlBufferAllocationScheme
+		xmlGetBufferAllocationScheme(void);
+
+XMLPUBFUN xmlBuffer *
+		xmlBufferCreate		(void);
+XMLPUBFUN xmlBuffer *
+		xmlBufferCreateSize	(size_t size);
+XMLPUBFUN xmlBuffer *
+		xmlBufferCreateStatic	(void *mem,
+					 size_t size);
+XML_DEPRECATED
+XMLPUBFUN int
+		xmlBufferResize		(xmlBuffer *buf,
+					 unsigned int size);
+XMLPUBFUN void
+		xmlBufferFree		(xmlBuffer *buf);
+XMLPUBFUN int
+		xmlBufferDump		(FILE *file,
+					 xmlBuffer *buf);
+XMLPUBFUN int
+		xmlBufferAdd		(xmlBuffer *buf,
+					 const xmlChar *str,
+					 int len);
+XMLPUBFUN int
+		xmlBufferAddHead	(xmlBuffer *buf,
+					 const xmlChar *str,
+					 int len);
+XMLPUBFUN int
+		xmlBufferCat		(xmlBuffer *buf,
+					 const xmlChar *str);
+XMLPUBFUN int
+		xmlBufferCCat		(xmlBuffer *buf,
+					 const char *str);
+XML_DEPRECATED
+XMLPUBFUN int
+		xmlBufferShrink		(xmlBuffer *buf,
+					 unsigned int len);
+XML_DEPRECATED
+XMLPUBFUN int
+		xmlBufferGrow		(xmlBuffer *buf,
+					 unsigned int len);
+XMLPUBFUN void
+		xmlBufferEmpty		(xmlBuffer *buf);
+XMLPUBFUN const xmlChar*
+		xmlBufferContent	(const xmlBuffer *buf);
+XMLPUBFUN xmlChar*
+		xmlBufferDetach         (xmlBuffer *buf);
+XMLPUBFUN void
+		xmlBufferSetAllocationScheme(xmlBuffer *buf,
+					 xmlBufferAllocationScheme scheme);
+XMLPUBFUN int
+		xmlBufferLength		(const xmlBuffer *buf);
+XMLPUBFUN void
+		xmlBufferWriteCHAR	(xmlBuffer *buf,
+					 const xmlChar *string);
+XMLPUBFUN void
+		xmlBufferWriteChar	(xmlBuffer *buf,
+					 const char *string);
+XMLPUBFUN void
+		xmlBufferWriteQuotedString(xmlBuffer *buf,
+					 const xmlChar *string);
+
+/*
+ * A few public routines for xmlBuf. As those are expected to be used
+ * mostly internally the bulk of the routines are internal in buf.h
+ */
+XMLPUBFUN xmlChar*       xmlBufContent	(const xmlBuf* buf);
+XMLPUBFUN xmlChar*       xmlBufEnd      (xmlBuf *buf);
+XMLPUBFUN size_t         xmlBufUse      (xmlBuf *buf);
+XMLPUBFUN size_t         xmlBufShrink	(xmlBuf *buf, size_t len);
+
 #ifdef __cplusplus
 }
 #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/uri.h 2.15.0+dfsg-0.3/include/libxml/uri.h
--- 2.14.6+dfsg-0.1/include/libxml/uri.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/uri.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
 /**
- * Summary: library of generic URI related routines
- * Description: library of generic URI related routines
+ * @file
+ *
+ * @brief library of generic URI related routines
+ * 
+ * library of generic URI related routines
  *              Implements RFC 2396
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_URI_H__
@@ -19,18 +22,19 @@
 extern "C" {
 #endif
 
+/** Parsed URI */
+typedef struct _xmlURI xmlURI;
+typedef xmlURI *xmlURIPtr;
 /**
- * xmlURI:
+ * A parsed URI reference.
  *
- * A parsed URI reference. This is a struct containing the various fields
+ * This is a struct containing the various fields
  * as described in RFC 2396 but separated for further processing.
  *
  * Note: query is a deprecated field which is incorrectly unescaped.
  * query_raw takes precedence over query if the former is set.
- * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
+ * See: http://mail.gnome.org/archives/xml/2007-April/thread.html\#00127
  */
-typedef struct _xmlURI xmlURI;
-typedef xmlURI *xmlURIPtr;
 struct _xmlURI {
     char *scheme;	/* the URI scheme */
     char *opaque;	/* opaque part */
@@ -45,12 +49,7 @@ struct _xmlURI {
     char *query_raw;	/* the query string (as it appears in the URI) */
 };
 
-/*
- * This function is in tree.h:
- * xmlChar *	xmlNodeGetBase	(xmlDocPtr doc,
- *                               xmlNodePtr cur);
- */
-XMLPUBFUN xmlURIPtr
+XMLPUBFUN xmlURI *
 		xmlCreateURI		(void);
 XMLPUBFUN int
 		xmlBuildURISafe		(const xmlChar *URI,
@@ -66,22 +65,22 @@ XMLPUBFUN int
 XMLPUBFUN xmlChar *
 		xmlBuildRelativeURI	(const xmlChar *URI,
 					 const xmlChar *base);
-XMLPUBFUN xmlURIPtr
+XMLPUBFUN xmlURI *
 		xmlParseURI		(const char *str);
 XMLPUBFUN int
 		xmlParseURISafe		(const char *str,
-					 xmlURIPtr *uri);
-XMLPUBFUN xmlURIPtr
+					 xmlURI **uri);
+XMLPUBFUN xmlURI *
 		xmlParseURIRaw		(const char *str,
 					 int raw);
 XMLPUBFUN int
-		xmlParseURIReference	(xmlURIPtr uri,
+		xmlParseURIReference	(xmlURI *uri,
 					 const char *str);
 XMLPUBFUN xmlChar *
-		xmlSaveUri		(xmlURIPtr uri);
+		xmlSaveUri		(xmlURI *uri);
 XMLPUBFUN void
 		xmlPrintURI		(FILE *stream,
-					 xmlURIPtr uri);
+					 xmlURI *uri);
 XMLPUBFUN xmlChar *
 		xmlURIEscapeStr         (const xmlChar *str,
 					 const xmlChar *list);
@@ -94,7 +93,7 @@ XMLPUBFUN int
 XMLPUBFUN xmlChar *
 		xmlURIEscape		(const xmlChar *str);
 XMLPUBFUN void
-		xmlFreeURI		(xmlURIPtr uri);
+		xmlFreeURI		(xmlURI *uri);
 XMLPUBFUN xmlChar*
 		xmlCanonicPath		(const xmlChar *path);
 XMLPUBFUN xmlChar*
diff -pruN 2.14.6+dfsg-0.1/include/libxml/valid.h 2.15.0+dfsg-0.3/include/libxml/valid.h
--- 2.14.6+dfsg-0.1/include/libxml/valid.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/valid.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,17 +1,20 @@
-/*
- * Summary: The DTD validation
- * Description: API for the DTD handling and the validity checking
+/**
+ * @file
+ * 
+ * @brief DTD validator
+ * 
+ * API to handle XML Document Type Definitions and validate
+ * documents.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
 #ifndef __XML_VALID_H__
 #define __XML_VALID_H__
 
-/** DOC_DISABLE */
 #include <libxml/xmlversion.h>
 #include <libxml/xmlerror.h>
 #define XML_TREE_INTERNALS
@@ -20,67 +23,57 @@
 #include <libxml/list.h>
 #include <libxml/xmlautomata.h>
 #include <libxml/xmlregexp.h>
-/** DOC_ENABLE */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /*
- * Validation state added for non-determinist content model.
+ * Validation state added for non-deterministic content model.
  */
 typedef struct _xmlValidState xmlValidState;
 typedef xmlValidState *xmlValidStatePtr;
 
 /**
- * xmlValidityErrorFunc:
- * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
- *        but comes from ctxt->userData (which normally contains such
- *        a pointer); ctxt->userData can be changed by the user.
- * @msg:  the string to format *printf like vararg
- * @...:  remaining arguments to the format
+ * Report a validity error.
  *
- * Callback called when a validity error is found. This is a message
- * oriented function similar to an *printf function.
+ * @param ctx  user data (usually an xmlValidCtxt)
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 typedef void (*xmlValidityErrorFunc) (void *ctx,
 			     const char *msg,
 			     ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
- * xmlValidityWarningFunc:
- * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
- *        but comes from ctxt->userData (which normally contains such
- *        a pointer); ctxt->userData can be changed by the user.
- * @msg:  the string to format *printf like vararg
- * @...:  remaining arguments to the format
+ * Report a validity warning.
  *
- * Callback called when a validity warning is found. This is a message
- * oriented function similar to an *printf function.
+ * @param ctx  user data (usually an xmlValidCtxt)
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 typedef void (*xmlValidityWarningFunc) (void *ctx,
 			       const char *msg,
 			       ...) LIBXML_ATTR_FORMAT(2,3);
 
-/*
- * xmlValidCtxt:
- * An xmlValidCtxt is used for error reporting when validating.
- */
 typedef struct _xmlValidCtxt xmlValidCtxt;
 typedef xmlValidCtxt *xmlValidCtxtPtr;
+/**
+ * An xmlValidCtxt is used for error reporting when validating.
+ */
 struct _xmlValidCtxt {
     void *userData;			/* user specific data block */
     xmlValidityErrorFunc error;		/* the callback in case of errors */
     xmlValidityWarningFunc warning;	/* the callback in case of warning */
 
     /* Node analysis stack used when validating within entities */
-    xmlNodePtr         node;          /* Current parsed Node */
+    xmlNode           *node;          /* Current parsed Node */
     int                nodeNr;        /* Depth of the parsing stack */
     int                nodeMax;       /* Max depth of the parsing stack */
-    xmlNodePtr        *nodeTab;       /* array of nodes */
+    xmlNode          **nodeTab;       /* array of nodes */
 
     unsigned int         flags;       /* internal flags */
-    xmlDocPtr              doc;       /* the document */
+    xmlDoc                *doc;       /* the document */
     int                  valid;       /* temporary validity check result */
 
     /* state state used for non-determinist content validation */
@@ -90,225 +83,198 @@ struct _xmlValidCtxt {
     xmlValidState     *vstateTab;     /* array of validation states */
 
 #ifdef LIBXML_REGEXP_ENABLED
-    xmlAutomataPtr            am;     /* the automata */
-    xmlAutomataStatePtr    state;     /* used to build the automata */
+    xmlAutomata              *am;     /* the automata */
+    xmlAutomataState      *state;     /* used to build the automata */
 #else
     void                     *am;
     void                  *state;
 #endif
 };
 
-/*
- * ALL notation declarations are stored in a table.
- * There is one table per DTD.
- */
-
 typedef struct _xmlHashTable xmlNotationTable;
 typedef xmlNotationTable *xmlNotationTablePtr;
 
-/*
- * ALL element declarations are stored in a table.
- * There is one table per DTD.
- */
-
 typedef struct _xmlHashTable xmlElementTable;
 typedef xmlElementTable *xmlElementTablePtr;
 
-/*
- * ALL attribute declarations are stored in a table.
- * There is one table per DTD.
- */
-
 typedef struct _xmlHashTable xmlAttributeTable;
 typedef xmlAttributeTable *xmlAttributeTablePtr;
 
-/*
- * ALL IDs attributes are stored in a table.
- * There is one table per document.
- */
-
 typedef struct _xmlHashTable xmlIDTable;
 typedef xmlIDTable *xmlIDTablePtr;
 
-/*
- * ALL Refs attributes are stored in a table.
- * There is one table per document.
- */
-
 typedef struct _xmlHashTable xmlRefTable;
 typedef xmlRefTable *xmlRefTablePtr;
 
 /* Notation */
-XMLPUBFUN xmlNotationPtr
-		xmlAddNotationDecl	(xmlValidCtxtPtr ctxt,
-					 xmlDtdPtr dtd,
+XMLPUBFUN xmlNotation *
+		xmlAddNotationDecl	(xmlValidCtxt *ctxt,
+					 xmlDtd *dtd,
 					 const xmlChar *name,
-					 const xmlChar *PublicID,
-					 const xmlChar *SystemID);
+					 const xmlChar *publicId,
+					 const xmlChar *systemId);
 XML_DEPRECATED
-XMLPUBFUN xmlNotationTablePtr
-		xmlCopyNotationTable	(xmlNotationTablePtr table);
+XMLPUBFUN xmlNotationTable *
+		xmlCopyNotationTable	(xmlNotationTable *table);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeNotationTable	(xmlNotationTablePtr table);
+		xmlFreeNotationTable	(xmlNotationTable *table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlDumpNotationDecl	(xmlBufferPtr buf,
-					 xmlNotationPtr nota);
+		xmlDumpNotationDecl	(xmlBuffer *buf,
+					 xmlNotation *nota);
 /* XML_DEPRECATED, still used in lxml */
 XMLPUBFUN void
-		xmlDumpNotationTable	(xmlBufferPtr buf,
-					 xmlNotationTablePtr table);
+		xmlDumpNotationTable	(xmlBuffer *buf,
+					 xmlNotationTable *table);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* Element Content */
-/* the non Doc version are being deprecated */
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
+XMLPUBFUN xmlElementContent *
 		xmlNewElementContent	(const xmlChar *name,
 					 xmlElementContentType type);
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
-		xmlCopyElementContent	(xmlElementContentPtr content);
+XMLPUBFUN xmlElementContent *
+		xmlCopyElementContent	(xmlElementContent *content);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeElementContent	(xmlElementContentPtr cur);
-/* the new versions with doc argument */
+		xmlFreeElementContent	(xmlElementContent *cur);
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
-		xmlNewDocElementContent	(xmlDocPtr doc,
+XMLPUBFUN xmlElementContent *
+		xmlNewDocElementContent	(xmlDoc *doc,
 					 const xmlChar *name,
 					 xmlElementContentType type);
 XML_DEPRECATED
-XMLPUBFUN xmlElementContentPtr
-		xmlCopyDocElementContent(xmlDocPtr doc,
-					 xmlElementContentPtr content);
+XMLPUBFUN xmlElementContent *
+		xmlCopyDocElementContent(xmlDoc *doc,
+					 xmlElementContent *content);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeDocElementContent(xmlDocPtr doc,
-					 xmlElementContentPtr cur);
+		xmlFreeDocElementContent(xmlDoc *doc,
+					 xmlElementContent *cur);
 XML_DEPRECATED
 XMLPUBFUN void
 		xmlSnprintfElementContent(char *buf,
 					 int size,
-	                                 xmlElementContentPtr content,
+	                                 xmlElementContent *content,
 					 int englob);
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_DEPRECATED
 XMLPUBFUN void
 		xmlSprintfElementContent(char *buf,
-	                                 xmlElementContentPtr content,
+	                                 xmlElementContent *content,
 					 int englob);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* Element */
-XMLPUBFUN xmlElementPtr
-		xmlAddElementDecl	(xmlValidCtxtPtr ctxt,
-					 xmlDtdPtr dtd,
+XMLPUBFUN xmlElement *
+		xmlAddElementDecl	(xmlValidCtxt *ctxt,
+					 xmlDtd *dtd,
 					 const xmlChar *name,
 					 xmlElementTypeVal type,
-					 xmlElementContentPtr content);
+					 xmlElementContent *content);
 XML_DEPRECATED
-XMLPUBFUN xmlElementTablePtr
-		xmlCopyElementTable	(xmlElementTablePtr table);
+XMLPUBFUN xmlElementTable *
+		xmlCopyElementTable	(xmlElementTable *table);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeElementTable	(xmlElementTablePtr table);
+		xmlFreeElementTable	(xmlElementTable *table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlDumpElementTable	(xmlBufferPtr buf,
-					 xmlElementTablePtr table);
+		xmlDumpElementTable	(xmlBuffer *buf,
+					 xmlElementTable *table);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlDumpElementDecl	(xmlBufferPtr buf,
-					 xmlElementPtr elem);
+		xmlDumpElementDecl	(xmlBuffer *buf,
+					 xmlElement *elem);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* Enumeration */
 XML_DEPRECATED
-XMLPUBFUN xmlEnumerationPtr
+XMLPUBFUN xmlEnumeration *
 		xmlCreateEnumeration	(const xmlChar *name);
 /* XML_DEPRECATED, needed for custom attributeDecl SAX handler */
 XMLPUBFUN void
-		xmlFreeEnumeration	(xmlEnumerationPtr cur);
+		xmlFreeEnumeration	(xmlEnumeration *cur);
 XML_DEPRECATED
-XMLPUBFUN xmlEnumerationPtr
-		xmlCopyEnumeration	(xmlEnumerationPtr cur);
+XMLPUBFUN xmlEnumeration *
+		xmlCopyEnumeration	(xmlEnumeration *cur);
 
 /* Attribute */
-XMLPUBFUN xmlAttributePtr
-		xmlAddAttributeDecl	(xmlValidCtxtPtr ctxt,
-					 xmlDtdPtr dtd,
+XMLPUBFUN xmlAttribute *
+		xmlAddAttributeDecl	(xmlValidCtxt *ctxt,
+					 xmlDtd *dtd,
 					 const xmlChar *elem,
 					 const xmlChar *name,
 					 const xmlChar *ns,
 					 xmlAttributeType type,
 					 xmlAttributeDefault def,
 					 const xmlChar *defaultValue,
-					 xmlEnumerationPtr tree);
+					 xmlEnumeration *tree);
 XML_DEPRECATED
-XMLPUBFUN xmlAttributeTablePtr
-		xmlCopyAttributeTable  (xmlAttributeTablePtr table);
+XMLPUBFUN xmlAttributeTable *
+		xmlCopyAttributeTable  (xmlAttributeTable *table);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeAttributeTable  (xmlAttributeTablePtr table);
+		xmlFreeAttributeTable  (xmlAttributeTable *table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlDumpAttributeTable  (xmlBufferPtr buf,
-					xmlAttributeTablePtr table);
+		xmlDumpAttributeTable  (xmlBuffer *buf,
+					xmlAttributeTable *table);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlDumpAttributeDecl   (xmlBufferPtr buf,
-					xmlAttributePtr attr);
+		xmlDumpAttributeDecl   (xmlBuffer *buf,
+					xmlAttribute *attr);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* IDs */
 XMLPUBFUN int
-		xmlAddIDSafe	       (xmlAttrPtr attr,
+		xmlAddIDSafe	       (xmlAttr *attr,
 					const xmlChar *value);
-XMLPUBFUN xmlIDPtr
-		xmlAddID	       (xmlValidCtxtPtr ctxt,
-					xmlDocPtr doc,
+XMLPUBFUN xmlID *
+		xmlAddID	       (xmlValidCtxt *ctxt,
+					xmlDoc *doc,
 					const xmlChar *value,
-					xmlAttrPtr attr);
+					xmlAttr *attr);
 XMLPUBFUN void
-		xmlFreeIDTable	       (xmlIDTablePtr table);
-XMLPUBFUN xmlAttrPtr
-		xmlGetID	       (xmlDocPtr doc,
+		xmlFreeIDTable	       (xmlIDTable *table);
+XMLPUBFUN xmlAttr *
+		xmlGetID	       (xmlDoc *doc,
 					const xmlChar *ID);
 XMLPUBFUN int
-		xmlIsID		       (xmlDocPtr doc,
-					xmlNodePtr elem,
-					xmlAttrPtr attr);
+		xmlIsID		       (xmlDoc *doc,
+					xmlNode *elem,
+					xmlAttr *attr);
 XMLPUBFUN int
-		xmlRemoveID	       (xmlDocPtr doc,
-					xmlAttrPtr attr);
+		xmlRemoveID	       (xmlDoc *doc,
+					xmlAttr *attr);
 
 /* IDREFs */
 XML_DEPRECATED
-XMLPUBFUN xmlRefPtr
-		xmlAddRef	       (xmlValidCtxtPtr ctxt,
-					xmlDocPtr doc,
+XMLPUBFUN xmlRef *
+		xmlAddRef	       (xmlValidCtxt *ctxt,
+					xmlDoc *doc,
 					const xmlChar *value,
-					xmlAttrPtr attr);
+					xmlAttr *attr);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlFreeRefTable	       (xmlRefTablePtr table);
+		xmlFreeRefTable	       (xmlRefTable *table);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlIsRef	       (xmlDocPtr doc,
-					xmlNodePtr elem,
-					xmlAttrPtr attr);
+		xmlIsRef	       (xmlDoc *doc,
+					xmlNode *elem,
+					xmlAttr *attr);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlRemoveRef	       (xmlDocPtr doc,
-					xmlAttrPtr attr);
+		xmlRemoveRef	       (xmlDoc *doc,
+					xmlAttr *attr);
 XML_DEPRECATED
-XMLPUBFUN xmlListPtr
-		xmlGetRefs	       (xmlDocPtr doc,
+XMLPUBFUN xmlList *
+		xmlGetRefs	       (xmlDoc *doc,
 					const xmlChar *ID);
 
 /**
@@ -316,124 +282,127 @@ XMLPUBFUN xmlListPtr
  */
 #ifdef LIBXML_VALID_ENABLED
 /* Allocate/Release Validation Contexts */
-XMLPUBFUN xmlValidCtxtPtr
+XMLPUBFUN xmlValidCtxt *
 		xmlNewValidCtxt(void);
 XMLPUBFUN void
-		xmlFreeValidCtxt(xmlValidCtxtPtr);
+		xmlFreeValidCtxt(xmlValidCtxt *);
 
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateRoot		(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc);
+		xmlValidateRoot		(xmlValidCtxt *ctxt,
+					 xmlDoc *doc);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateElementDecl	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-		                         xmlElementPtr elem);
+		xmlValidateElementDecl	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+		                         xmlElement *elem);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlValidNormalizeAttributeValue(xmlDocPtr doc,
-					 xmlNodePtr elem,
+		xmlValidNormalizeAttributeValue(xmlDoc *doc,
+					 xmlNode *elem,
 					 const xmlChar *name,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
-		xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem,
+		xmlValidCtxtNormalizeAttributeValue(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem,
 					 const xmlChar *name,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-		                         xmlAttributePtr attr);
+		xmlValidateAttributeDecl(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+		                         xmlAttribute *attr);
 XML_DEPRECATED
 XMLPUBFUN int
 		xmlValidateAttributeValue(xmlAttributeType type,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateNotationDecl	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-		                         xmlNotationPtr nota);
+		xmlValidateNotationDecl	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+		                         xmlNotation *nota);
 XMLPUBFUN int
-		xmlValidateDtd		(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlDtdPtr dtd);
+		xmlValidateDtd		(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlDtd *dtd);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateDtdFinal	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc);
+		xmlValidateDtdFinal	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc);
 XMLPUBFUN int
-		xmlValidateDocument	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc);
+		xmlValidateDocument	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc);
 XMLPUBFUN int
-		xmlValidateElement	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem);
+		xmlValidateElement	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateOneElement	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-		                         xmlNodePtr elem);
+		xmlValidateOneElement	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+		                         xmlNode *elem);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateOneAttribute	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr	elem,
-					 xmlAttrPtr attr,
+		xmlValidateOneAttribute	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode 	*elem,
+					 xmlAttr *attr,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateOneNamespace	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem,
+		xmlValidateOneNamespace	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem,
 					 const xmlChar *prefix,
-					 xmlNsPtr ns,
+					 xmlNs *ns,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc);
+		xmlValidateDocumentFinal(xmlValidCtxt *ctxt,
+					 xmlDoc *doc);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidateNotationUse	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
+		xmlValidateNotationUse	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
 					 const xmlChar *notationName);
 #endif /* LIBXML_VALID_ENABLED */
 
+XML_DEPRECATED
 XMLPUBFUN int
-		xmlIsMixedElement	(xmlDocPtr doc,
+		xmlIsMixedElement	(xmlDoc *doc,
 					 const xmlChar *name);
-XMLPUBFUN xmlAttributePtr
-		xmlGetDtdAttrDesc	(xmlDtdPtr dtd,
+XMLPUBFUN xmlAttribute *
+		xmlGetDtdAttrDesc	(xmlDtd *dtd,
 					 const xmlChar *elem,
 					 const xmlChar *name);
-XMLPUBFUN xmlAttributePtr
-		xmlGetDtdQAttrDesc	(xmlDtdPtr dtd,
+XMLPUBFUN xmlAttribute *
+		xmlGetDtdQAttrDesc	(xmlDtd *dtd,
 					 const xmlChar *elem,
 					 const xmlChar *name,
 					 const xmlChar *prefix);
-XMLPUBFUN xmlNotationPtr
-		xmlGetDtdNotationDesc	(xmlDtdPtr dtd,
+XMLPUBFUN xmlNotation *
+		xmlGetDtdNotationDesc	(xmlDtd *dtd,
 					 const xmlChar *name);
-XMLPUBFUN xmlElementPtr
-		xmlGetDtdQElementDesc	(xmlDtdPtr dtd,
+XMLPUBFUN xmlElement *
+		xmlGetDtdQElementDesc	(xmlDtd *dtd,
 					 const xmlChar *name,
 					 const xmlChar *prefix);
-XMLPUBFUN xmlElementPtr
-		xmlGetDtdElementDesc	(xmlDtdPtr dtd,
+XMLPUBFUN xmlElement *
+		xmlGetDtdElementDesc	(xmlDtd *dtd,
 					 const xmlChar *name);
 
 #ifdef LIBXML_VALID_ENABLED
 
+XML_DEPRECATED
 XMLPUBFUN int
 		xmlValidGetPotentialChildren(xmlElementContent *ctree,
 					 const xmlChar **names,
 					 int *len,
 					 int max);
 
+/* only needed for `xmllint --insert` */
 XMLPUBFUN int
 		xmlValidGetValidElements(xmlNode *prev,
 					 xmlNode *next,
@@ -454,28 +423,30 @@ XMLPUBFUN int
  */
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
-					 xmlElementPtr elem);
+		xmlValidBuildContentModel(xmlValidCtxt *ctxt,
+					 xmlElement *elem);
 
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidatePushElement	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem,
+		xmlValidatePushElement	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem,
 					 const xmlChar *qname);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidatePushCData	(xmlValidCtxtPtr ctxt,
+		xmlValidatePushCData	(xmlValidCtxt *ctxt,
 					 const xmlChar *data,
 					 int len);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlValidatePopElement	(xmlValidCtxtPtr ctxt,
-					 xmlDocPtr doc,
-					 xmlNodePtr elem,
+		xmlValidatePopElement	(xmlValidCtxt *ctxt,
+					 xmlDoc *doc,
+					 xmlNode *elem,
 					 const xmlChar *qname);
 #endif /* LIBXML_REGEXP_ENABLED */
+
 #endif /* LIBXML_VALID_ENABLED */
+
 #ifdef __cplusplus
 }
 #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xinclude.h 2.15.0+dfsg-0.3/include/libxml/xinclude.h
--- 2.14.6+dfsg-0.1/include/libxml/xinclude.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xinclude.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,13 +1,13 @@
-/*
- * Summary: implementation of XInclude
- * Description: API to handle XInclude processing,
- * implements the
- * World Wide Web Consortium Last Call Working Draft 10 November 2003
- * http://www.w3.org/TR/2003/WD-xinclude-20031110
+/**
+ * @file
+ *
+ * @brief Implementation of XInclude 1.0
+ *
+ * API to process XML Inclusions.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XINCLUDE_H__
@@ -25,66 +25,47 @@ extern "C" {
 #endif
 
 /**
- * XINCLUDE_NS:
- *
  * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude
  */
 #define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude"
 /**
- * XINCLUDE_OLD_NS:
- *
  * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude
  */
 #define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude"
 /**
- * XINCLUDE_NODE:
- *
  * Macro defining "include"
  */
 #define XINCLUDE_NODE (const xmlChar *) "include"
 /**
- * XINCLUDE_FALLBACK:
- *
  * Macro defining "fallback"
  */
 #define XINCLUDE_FALLBACK (const xmlChar *) "fallback"
 /**
- * XINCLUDE_HREF:
- *
  * Macro defining "href"
  */
 #define XINCLUDE_HREF (const xmlChar *) "href"
 /**
- * XINCLUDE_PARSE:
- *
  * Macro defining "parse"
  */
 #define XINCLUDE_PARSE (const xmlChar *) "parse"
 /**
- * XINCLUDE_PARSE_XML:
- *
  * Macro defining "xml"
  */
 #define XINCLUDE_PARSE_XML (const xmlChar *) "xml"
 /**
- * XINCLUDE_PARSE_TEXT:
- *
  * Macro defining "text"
  */
 #define XINCLUDE_PARSE_TEXT (const xmlChar *) "text"
 /**
- * XINCLUDE_PARSE_ENCODING:
- *
  * Macro defining "encoding"
  */
 #define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding"
 /**
- * XINCLUDE_PARSE_XPOINTER:
- *
  * Macro defining "xpointer"
  */
 #define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer"
 
+/** XInclude context */
 typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt;
 typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr;
 
@@ -92,46 +73,46 @@ typedef xmlXIncludeCtxt *xmlXIncludeCtxt
  * standalone processing
  */
 XMLPUBFUN int
-		xmlXIncludeProcess	(xmlDocPtr doc);
+		xmlXIncludeProcess	(xmlDoc *doc);
 XMLPUBFUN int
-		xmlXIncludeProcessFlags	(xmlDocPtr doc,
+		xmlXIncludeProcessFlags	(xmlDoc *doc,
 					 int flags);
 XMLPUBFUN int
-		xmlXIncludeProcessFlagsData(xmlDocPtr doc,
+		xmlXIncludeProcessFlagsData(xmlDoc *doc,
 					 int flags,
 					 void *data);
 XMLPUBFUN int
-                xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree,
+                xmlXIncludeProcessTreeFlagsData(xmlNode *tree,
                                          int flags,
                                          void *data);
 XMLPUBFUN int
-		xmlXIncludeProcessTree	(xmlNodePtr tree);
+		xmlXIncludeProcessTree	(xmlNode *tree);
 XMLPUBFUN int
-		xmlXIncludeProcessTreeFlags(xmlNodePtr tree,
+		xmlXIncludeProcessTreeFlags(xmlNode *tree,
 					 int flags);
 /*
  * contextual processing
  */
-XMLPUBFUN xmlXIncludeCtxtPtr
-		xmlXIncludeNewContext	(xmlDocPtr doc);
+XMLPUBFUN xmlXIncludeCtxt *
+		xmlXIncludeNewContext	(xmlDoc *doc);
 XMLPUBFUN int
-		xmlXIncludeSetFlags	(xmlXIncludeCtxtPtr ctxt,
+		xmlXIncludeSetFlags	(xmlXIncludeCtxt *ctxt,
 					 int flags);
 XMLPUBFUN void
-		xmlXIncludeSetErrorHandler(xmlXIncludeCtxtPtr ctxt,
+		xmlXIncludeSetErrorHandler(xmlXIncludeCtxt *ctxt,
 					 xmlStructuredErrorFunc handler,
 					 void *data);
 XMLPUBFUN void
-		xmlXIncludeSetResourceLoader(xmlXIncludeCtxtPtr ctxt,
+		xmlXIncludeSetResourceLoader(xmlXIncludeCtxt *ctxt,
 					 xmlResourceLoader loader,
 					 void *data);
 XMLPUBFUN int
-		xmlXIncludeGetLastError	(xmlXIncludeCtxtPtr ctxt);
+		xmlXIncludeGetLastError	(xmlXIncludeCtxt *ctxt);
 XMLPUBFUN void
-		xmlXIncludeFreeContext	(xmlXIncludeCtxtPtr ctxt);
+		xmlXIncludeFreeContext	(xmlXIncludeCtxt *ctxt);
 XMLPUBFUN int
-		xmlXIncludeProcessNode	(xmlXIncludeCtxtPtr ctxt,
-					 xmlNodePtr tree);
+		xmlXIncludeProcessNode	(xmlXIncludeCtxt *ctxt,
+					 xmlNode *tree);
 #ifdef __cplusplus
 }
 #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xlink.h 2.15.0+dfsg-0.3/include/libxml/xlink.h
--- 2.14.6+dfsg-0.1/include/libxml/xlink.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xlink.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: unfinished XLink detection module
- * Description: unfinished XLink detection module
+/**
+ * @file
+ * 
+ * @brief unfinished XLink detection module
+ * 
+ * This module is deprecated, don't use.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XLINK_H__
@@ -19,6 +22,8 @@
 extern "C" {
 #endif
 
+/** @cond ignore */
+
 /**
  * Various defines for the various Link properties.
  *
@@ -53,15 +58,16 @@ typedef enum {
     XLINK_ACTUATE_ONREQUEST
 } xlinkActuate;
 
+/** @endcond */
+
 /**
- * xlinkNodeDetectFunc:
- * @ctx:  user data pointer
- * @node:  the node to check
- *
  * This is the prototype for the link detection routine.
  * It calls the default link detection callbacks upon link detection.
+ *
+ * @param ctx  user data pointer
+ * @param node  the node to check
  */
-typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
+typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNode *node);
 
 /*
  * The link detection module interact with the upper layers using
@@ -69,43 +75,41 @@ typedef void (*xlinkNodeDetectFunc) (voi
  */
 
 /**
- * xlinkSimpleLinkFunk:
- * @ctx:  user data pointer
- * @node:  the node carrying the link
- * @href:  the target of the link
- * @role:  the role string
- * @title:  the link title
- *
  * This is the prototype for a simple link detection callback.
+ *
+ * @param ctx  user data pointer
+ * @param node  the node carrying the link
+ * @param href  the target of the link
+ * @param role  the role string
+ * @param title  the link title
  */
 typedef void
 (*xlinkSimpleLinkFunk)	(void *ctx,
-			 xmlNodePtr node,
+			 xmlNode *node,
 			 const xlinkHRef href,
 			 const xlinkRole role,
 			 const xlinkTitle title);
 
 /**
- * xlinkExtendedLinkFunk:
- * @ctx:  user data pointer
- * @node:  the node carrying the link
- * @nbLocators: the number of locators detected on the link
- * @hrefs:  pointer to the array of locator hrefs
- * @roles:  pointer to the array of locator roles
- * @nbArcs: the number of arcs detected on the link
- * @from:  pointer to the array of source roles found on the arcs
- * @to:  pointer to the array of target roles found on the arcs
- * @show:  array of values for the show attributes found on the arcs
- * @actuate:  array of values for the actuate attributes found on the arcs
- * @nbTitles: the number of titles detected on the link
- * @title:  array of titles detected on the link
- * @langs:  array of xml:lang values for the titles
- *
  * This is the prototype for a extended link detection callback.
+ *
+ * @param ctx  user data pointer
+ * @param node  the node carrying the link
+ * @param nbLocators  the number of locators detected on the link
+ * @param hrefs  pointer to the array of locator hrefs
+ * @param roles  pointer to the array of locator roles
+ * @param nbArcs  the number of arcs detected on the link
+ * @param from  pointer to the array of source roles found on the arcs
+ * @param to  pointer to the array of target roles found on the arcs
+ * @param show  array of values for the show attributes found on the arcs
+ * @param actuate  array of values for the actuate attributes found on the arcs
+ * @param nbTitles  the number of titles detected on the link
+ * @param titles  array of titles detected on the link
+ * @param langs  array of xml:lang values for the titles
  */
 typedef void
 (*xlinkExtendedLinkFunk)(void *ctx,
-			 xmlNodePtr node,
+			 xmlNode *node,
 			 int nbLocators,
 			 const xlinkHRef *hrefs,
 			 const xlinkRole *roles,
@@ -119,21 +123,20 @@ typedef void
 			 const xmlChar **langs);
 
 /**
- * xlinkExtendedLinkSetFunk:
- * @ctx:  user data pointer
- * @node:  the node carrying the link
- * @nbLocators: the number of locators detected on the link
- * @hrefs:  pointer to the array of locator hrefs
- * @roles:  pointer to the array of locator roles
- * @nbTitles: the number of titles detected on the link
- * @title:  array of titles detected on the link
- * @langs:  array of xml:lang values for the titles
- *
  * This is the prototype for a extended link set detection callback.
+ *
+ * @param ctx  user data pointer
+ * @param node  the node carrying the link
+ * @param nbLocators  the number of locators detected on the link
+ * @param hrefs  pointer to the array of locator hrefs
+ * @param roles  pointer to the array of locator roles
+ * @param nbTitles  the number of titles detected on the link
+ * @param titles  array of titles detected on the link
+ * @param langs  array of xml:lang values for the titles
  */
 typedef void
 (*xlinkExtendedLinkSetFunk)	(void *ctx,
-				 xmlNodePtr node,
+				 xmlNode *node,
 				 int nbLocators,
 				 const xlinkHRef *hrefs,
 				 const xlinkRole *roles,
@@ -141,14 +144,14 @@ typedef void
 				 const xlinkTitle *titles,
 				 const xmlChar **langs);
 
+typedef struct _xlinkHandler xlinkHandler;
+typedef xlinkHandler *xlinkHandlerPtr;
 /**
  * This is the structure containing a set of Links detection callbacks.
  *
  * There is no default xlink callbacks, if one want to get link
  * recognition activated, those call backs must be provided before parsing.
  */
-typedef struct _xlinkHandler xlinkHandler;
-typedef xlinkHandler *xlinkHandlerPtr;
 struct _xlinkHandler {
     xlinkSimpleLinkFunk simple;
     xlinkExtendedLinkFunk extended;
@@ -171,18 +174,19 @@ XMLPUBFUN void
  * Routines to set/get the default handlers.
  */
 XML_DEPRECATED
-XMLPUBFUN xlinkHandlerPtr
+XMLPUBFUN xlinkHandler *
 		xlinkGetDefaultHandler	(void);
 XML_DEPRECATED
 XMLPUBFUN void
-		xlinkSetDefaultHandler	(xlinkHandlerPtr handler);
+		xlinkSetDefaultHandler	(xlinkHandler *handler);
 
 /*
  * Link detection module itself.
  */
+XML_DEPRECATED
 XMLPUBFUN xlinkType
-		xlinkIsLink		(xmlDocPtr doc,
-					 xmlNodePtr node);
+		xlinkIsLink		(xmlDoc *doc,
+					 xmlNode *node);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlIO.h 2.15.0+dfsg-0.3/include/libxml/xmlIO.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlIO.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlIO.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,181 +1,172 @@
-/*
- * Summary: interface for the I/O interfaces used by the parser
- * Description: interface for the I/O interfaces used by the parser
+/**
+ * @file
+ * 
+ * @brief I/O interfaces used by the parser
+ * 
+ * Functions and datatypes for parser input and output.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_IO_H__
 #define __XML_IO_H__
 
-/** DOC_DISABLE */
 #include <stdio.h>
 #include <libxml/xmlversion.h>
 #include <libxml/encoding.h>
 #define XML_TREE_INTERNALS
 #include <libxml/tree.h>
 #undef XML_TREE_INTERNALS
-/** DOC_ENABLE */
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * Those are the functions and datatypes for the parser input
- * I/O structures.
- */
-
 /**
- * xmlInputMatchCallback:
- * @filename: the filename or URI
- *
  * Callback used in the I/O Input API to detect if the current handler
  * can provide input functionality for this resource.
  *
- * Returns 1 if yes and 0 if another Input module should be used
+ * @param filename  the filename or URI
+ * @returns 1 if yes and 0 if another Input module should be used
  */
-typedef int (*xmlInputMatchCallback) (char const *filename);
+typedef int (*xmlInputMatchCallback) (const char *filename);
 /**
- * xmlInputOpenCallback:
- * @filename: the filename or URI
- *
  * Callback used in the I/O Input API to open the resource
  *
- * Returns an Input context or NULL in case or error
+ * @param filename  the filename or URI
+ * @returns an Input context or NULL in case or error
  */
-typedef void * (*xmlInputOpenCallback) (char const *filename);
+typedef void * (*xmlInputOpenCallback) (const char *filename);
 /**
- * xmlInputReadCallback:
- * @context:  an Input context
- * @buffer:  the buffer to store data read
- * @len:  the length of the buffer in bytes
- *
  * Callback used in the I/O Input API to read the resource
  *
- * Returns the number of bytes read or -1 in case of error
+ * @param context  an Input context
+ * @param buffer  the buffer to store data read
+ * @param len  the length of the buffer in bytes
+ * @returns the number of bytes read or -1 in case of error
  */
 typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len);
 /**
- * xmlInputCloseCallback:
- * @context:  an Input context
- *
  * Callback used in the I/O Input API to close the resource
  *
- * Returns 0 or -1 in case of error
+ * @param context  an Input context
+ * @returns 0 or -1 in case of error
  */
 typedef int (*xmlInputCloseCallback) (void * context);
 
 #ifdef LIBXML_OUTPUT_ENABLED
-/*
- * Those are the functions and datatypes for the library output
- * I/O structures.
- */
-
 /**
- * xmlOutputMatchCallback:
- * @filename: the filename or URI
- *
  * Callback used in the I/O Output API to detect if the current handler
  * can provide output functionality for this resource.
  *
- * Returns 1 if yes and 0 if another Output module should be used
+ * @param filename  the filename or URI
+ * @returns 1 if yes and 0 if another Output module should be used
  */
-typedef int (*xmlOutputMatchCallback) (char const *filename);
+typedef int (*xmlOutputMatchCallback) (const char *filename);
 /**
- * xmlOutputOpenCallback:
- * @filename: the filename or URI
- *
  * Callback used in the I/O Output API to open the resource
  *
- * Returns an Output context or NULL in case or error
+ * @param filename  the filename or URI
+ * @returns an Output context or NULL in case or error
  */
-typedef void * (*xmlOutputOpenCallback) (char const *filename);
+typedef void * (*xmlOutputOpenCallback) (const char *filename);
 /**
- * xmlOutputWriteCallback:
- * @context:  an Output context
- * @buffer:  the buffer of data to write
- * @len:  the length of the buffer in bytes
- *
  * Callback used in the I/O Output API to write to the resource
  *
- * Returns the number of bytes written or -1 in case of error
+ * @param context  an Output context
+ * @param buffer  the buffer of data to write
+ * @param len  the length of the buffer in bytes
+ * @returns the number of bytes written or -1 in case of error
  */
 typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer,
                                        int len);
 /**
- * xmlOutputCloseCallback:
- * @context:  an Output context
- *
  * Callback used in the I/O Output API to close the resource
  *
- * Returns 0 or -1 in case of error
+ * @param context  an Output context
+ * @returns 0 or -1 in case of error
  */
 typedef int (*xmlOutputCloseCallback) (void * context);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateFilenameFunc:
- * @URI: the URI to read from
- * @enc: the requested source encoding
- *
  * Signature for the function doing the lookup for a suitable input method
  * corresponding to an URI.
  *
- * Returns the new xmlParserInputBufferPtr in case of success or NULL if no
+ * @param URI  the URI to read from
+ * @param enc  the requested source encoding
+ * @returns the new xmlParserInputBuffer in case of success or NULL if no
  *         method was found.
  */
-typedef xmlParserInputBufferPtr
+typedef xmlParserInputBuffer *
 (*xmlParserInputBufferCreateFilenameFunc)(const char *URI, xmlCharEncoding enc);
 
 /**
- * xmlOutputBufferCreateFilenameFunc:
- * @URI: the URI to write to
- * @enc: the requested target encoding
- *
  * Signature for the function doing the lookup for a suitable output method
  * corresponding to an URI.
  *
- * Returns the new xmlOutputBufferPtr in case of success or NULL if no
+ * @param URI  the URI to write to
+ * @param encoder  the requested target encoding
+ * @param compression  compression level
+ * @returns the new xmlOutputBuffer in case of success or NULL if no
  *         method was found.
  */
-typedef xmlOutputBufferPtr
+typedef xmlOutputBuffer *
 (*xmlOutputBufferCreateFilenameFunc)(const char *URI,
-        xmlCharEncodingHandlerPtr encoder, int compression);
+        xmlCharEncodingHandler *encoder, int compression);
 
+/**
+ * Parser input buffer
+ *
+ * This struct and all related functions should ultimately
+ * be removed from the public interface.
+ */
 struct _xmlParserInputBuffer {
-    void*                  context;
-    xmlInputReadCallback   readcallback;
-    xmlInputCloseCallback  closecallback;
-
-    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
-
-    xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 */
-    xmlBufPtr raw;       /* if encoder != NULL buffer for raw input */
-    int	compressed;	    /* -1=unknown, 0=not compressed, 1=compressed */
-    int error;
-    unsigned long rawconsumed;/* amount consumed from raw */
+    void*                  context XML_DEPRECATED_MEMBER;
+    xmlInputReadCallback   readcallback XML_DEPRECATED_MEMBER;
+    xmlInputCloseCallback  closecallback XML_DEPRECATED_MEMBER;
+
+    /* I18N conversions to UTF-8 */
+    xmlCharEncodingHandler *encoder XML_DEPRECATED_MEMBER;
+
+    /* Local buffer encoded in UTF-8 */
+    xmlBuf *buffer XML_DEPRECATED_MEMBER;
+    /* if encoder != NULL buffer for raw input */
+    xmlBuf *raw XML_DEPRECATED_MEMBER;
+    /* -1=unknown, 0=not compressed, 1=compressed */
+    int	compressed XML_DEPRECATED_MEMBER;
+    int error XML_DEPRECATED_MEMBER;
+    /* amount consumed from raw */
+    unsigned long rawconsumed XML_DEPRECATED_MEMBER;
 };
 
 
 #ifdef LIBXML_OUTPUT_ENABLED
+/**
+ * Output buffer
+ */
 struct _xmlOutputBuffer {
-    void*                   context;
-    xmlOutputWriteCallback  writecallback;
-    xmlOutputCloseCallback  closecallback;
-
-    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
-
-    xmlBufPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
-    xmlBufPtr conv;      /* if encoder != NULL buffer for output */
-    int written;            /* total number of byte written */
-    int error;
+    void*                   context XML_DEPRECATED_MEMBER;
+    xmlOutputWriteCallback  writecallback XML_DEPRECATED_MEMBER;
+    xmlOutputCloseCallback  closecallback XML_DEPRECATED_MEMBER;
+
+    /* I18N conversions to UTF-8 */
+    xmlCharEncodingHandler *encoder XML_DEPRECATED_MEMBER;
+
+    /* Local buffer encoded in UTF-8 or ISOLatin */
+    xmlBuf *buffer XML_DEPRECATED_MEMBER;
+    /* if encoder != NULL buffer for output */
+    xmlBuf *conv XML_DEPRECATED_MEMBER;
+    /* total number of byte written */
+    int written XML_DEPRECATED_MEMBER;
+    int error XML_DEPRECATED_MEMBER;
 };
 #endif /* LIBXML_OUTPUT_ENABLED */
 
-/** DOC_DISABLE */
+/** @cond ignore */
+
 XML_DEPRECATED
 XMLPUBFUN xmlParserInputBufferCreateFilenameFunc *
 __xmlParserInputBufferCreateFilenameValue(void);
@@ -189,7 +180,8 @@ __xmlOutputBufferCreateFilenameValue(voi
   #define xmlOutputBufferCreateFilenameValue \
     (*__xmlOutputBufferCreateFilenameValue())
 #endif
-/** DOC_ENABLE */
+
+/** @endcond */
 
 /*
  * Interfaces for input
@@ -202,45 +194,45 @@ XMLPUBFUN int
 
 XMLPUBFUN void
 	xmlRegisterDefaultInputCallbacks	(void);
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
 
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateFilename	(const char *URI,
                                                  xmlCharEncoding enc);
 XML_DEPRECATED
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateFile		(FILE *file,
                                                  xmlCharEncoding enc);
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateFd		(int fd,
 	                                         xmlCharEncoding enc);
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateMem		(const char *mem, int size,
 	                                         xmlCharEncoding enc);
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateStatic	(const char *mem, int size,
 	                                         xmlCharEncoding enc);
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
 						 xmlInputCloseCallback  ioclose,
 						 void *ioctx,
 	                                         xmlCharEncoding enc);
 XML_DEPRECATED
 XMLPUBFUN int
-	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
+	xmlParserInputBufferRead		(xmlParserInputBuffer *in,
 						 int len);
 XML_DEPRECATED
 XMLPUBFUN int
-	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
+	xmlParserInputBufferGrow		(xmlParserInputBuffer *in,
 						 int len);
 XML_DEPRECATED
 XMLPUBFUN int
-	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
+	xmlParserInputBufferPush		(xmlParserInputBuffer *in,
 						 int len,
 						 const char *buf);
 XMLPUBFUN void
-	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
+	xmlFreeParserInputBuffer		(xmlParserInputBuffer *in);
 XMLPUBFUN char *
 	xmlParserGetDirectory			(const char *filename);
 
@@ -250,7 +242,7 @@ XMLPUBFUN int
 						 xmlInputReadCallback readFunc,
 						 xmlInputCloseCallback closeFunc);
 
-XMLPUBFUN xmlParserInputBufferPtr
+XMLPUBFUN xmlParserInputBuffer *
 	__xmlParserInputBufferCreateFilename(const char *URI,
 						xmlCharEncoding enc);
 
@@ -264,54 +256,54 @@ XMLPUBFUN int
 	xmlPopOutputCallbacks			(void);
 XMLPUBFUN void
 	xmlRegisterDefaultOutputCallbacks(void);
-XMLPUBFUN xmlOutputBufferPtr
-	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
+XMLPUBFUN xmlOutputBuffer *
+	xmlAllocOutputBuffer		(xmlCharEncodingHandler *encoder);
 
-XMLPUBFUN xmlOutputBufferPtr
+XMLPUBFUN xmlOutputBuffer *
 	xmlOutputBufferCreateFilename	(const char *URI,
-					 xmlCharEncodingHandlerPtr encoder,
+					 xmlCharEncodingHandler *encoder,
 					 int compression);
 
-XMLPUBFUN xmlOutputBufferPtr
+XMLPUBFUN xmlOutputBuffer *
 	xmlOutputBufferCreateFile	(FILE *file,
-					 xmlCharEncodingHandlerPtr encoder);
+					 xmlCharEncodingHandler *encoder);
 
-XMLPUBFUN xmlOutputBufferPtr
-	xmlOutputBufferCreateBuffer	(xmlBufferPtr buffer,
-					 xmlCharEncodingHandlerPtr encoder);
+XMLPUBFUN xmlOutputBuffer *
+	xmlOutputBufferCreateBuffer	(xmlBuffer *buffer,
+					 xmlCharEncodingHandler *encoder);
 
-XMLPUBFUN xmlOutputBufferPtr
+XMLPUBFUN xmlOutputBuffer *
 	xmlOutputBufferCreateFd		(int fd,
-					 xmlCharEncodingHandlerPtr encoder);
+					 xmlCharEncodingHandler *encoder);
 
-XMLPUBFUN xmlOutputBufferPtr
+XMLPUBFUN xmlOutputBuffer *
 	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
 					 xmlOutputCloseCallback  ioclose,
 					 void *ioctx,
-					 xmlCharEncodingHandlerPtr encoder);
+					 xmlCharEncodingHandler *encoder);
 
 /* Couple of APIs to get the output without digging into the buffers */
 XMLPUBFUN const xmlChar *
-        xmlOutputBufferGetContent       (xmlOutputBufferPtr out);
+        xmlOutputBufferGetContent       (xmlOutputBuffer *out);
 XMLPUBFUN size_t
-        xmlOutputBufferGetSize          (xmlOutputBufferPtr out);
+        xmlOutputBufferGetSize          (xmlOutputBuffer *out);
 
 XMLPUBFUN int
-	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
+	xmlOutputBufferWrite		(xmlOutputBuffer *out,
 					 int len,
 					 const char *buf);
 XMLPUBFUN int
-	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
+	xmlOutputBufferWriteString	(xmlOutputBuffer *out,
 					 const char *str);
 XMLPUBFUN int
-	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
+	xmlOutputBufferWriteEscape	(xmlOutputBuffer *out,
 					 const xmlChar *str,
 					 xmlCharEncodingOutputFunc escaping);
 
 XMLPUBFUN int
-	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
+	xmlOutputBufferFlush		(xmlOutputBuffer *out);
 XMLPUBFUN int
-	xmlOutputBufferClose		(xmlOutputBufferPtr out);
+	xmlOutputBufferClose		(xmlOutputBuffer *out);
 
 XMLPUBFUN int
 	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
@@ -319,32 +311,22 @@ XMLPUBFUN int
 					 xmlOutputWriteCallback writeFunc,
 					 xmlOutputCloseCallback closeFunc);
 
-XMLPUBFUN xmlOutputBufferPtr
+XMLPUBFUN xmlOutputBuffer *
 	__xmlOutputBufferCreateFilename(const char *URI,
-                              xmlCharEncodingHandlerPtr encoder,
+                              xmlCharEncodingHandler *encoder,
                               int compression);
-
-#ifdef LIBXML_HTTP_ENABLED
-/*  This function only exists if HTTP support built into the library  */
-XML_DEPRECATED
-XMLPUBFUN void
-	xmlRegisterHTTPPostCallbacks	(void );
-#endif /* LIBXML_HTTP_ENABLED */
-
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 XML_DEPRECATED
-XMLPUBFUN xmlParserInputPtr
-	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
-					 xmlParserInputPtr ret);
+XMLPUBFUN xmlParserInput *
+	xmlCheckHTTPInput		(xmlParserCtxt *ctxt,
+					 xmlParserInput *ret);
 
-/*
- * A predefined entity loader disabling network accesses
- */
-XMLPUBFUN xmlParserInputPtr
+XML_DEPRECATED
+XMLPUBFUN xmlParserInput *
 	xmlNoNetExternalEntityLoader	(const char *URL,
 					 const char *ID,
-					 xmlParserCtxtPtr ctxt);
+					 xmlParserCtxt *ctxt);
 
 XML_DEPRECATED
 XMLPUBFUN xmlChar *
@@ -353,9 +335,7 @@ XMLPUBFUN xmlChar *
 XML_DEPRECATED
 XMLPUBFUN int
 	xmlCheckFilename		(const char *path);
-/**
- * Default 'file://' protocol callbacks
- */
+
 XML_DEPRECATED
 XMLPUBFUN int
 	xmlFileMatch			(const char *filename);
@@ -371,10 +351,8 @@ XML_DEPRECATED
 XMLPUBFUN int
 	xmlFileClose			(void * context);
 
-/**
- * Default 'http://' protocol callbacks
- */
-#ifdef LIBXML_HTTP_ENABLED
+#ifdef LIBXML_HTTP_STUBS_ENABLED
+/** @cond IGNORE */
 XML_DEPRECATED
 XMLPUBFUN int
 	xmlIOHTTPMatch			(const char *filename);
@@ -383,6 +361,9 @@ XMLPUBFUN void *
 	xmlIOHTTPOpen			(const char *filename);
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_DEPRECATED
+XMLPUBFUN void
+	xmlRegisterHTTPPostCallbacks	(void );
+XML_DEPRECATED
 XMLPUBFUN void *
 	xmlIOHTTPOpenW			(const char * post_uri,
 					 int   compression );
@@ -395,7 +376,8 @@ XMLPUBFUN int
 XML_DEPRECATED
 XMLPUBFUN int
 	xmlIOHTTPClose			(void * context);
-#endif /* LIBXML_HTTP_ENABLED */
+/** @endcond */
+#endif /* LIBXML_HTTP_STUBS_ENABLED */
 
 XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
 	xmlParserInputBufferCreateFilenameDefault(
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlautomata.h 2.15.0+dfsg-0.3/include/libxml/xmlautomata.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlautomata.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlautomata.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: API to build regexp automata
- * Description: the API to build regexp automata
+/**
+ * @file
+ * 
+ * @brief API to build regexp automata
+ * 
+ * These are internal functions and shouldn't be used.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_AUTOMATA_H__
@@ -21,17 +24,15 @@ extern "C" {
 #endif
 
 /**
- * xmlAutomataPtr:
+ * A libxml automata description
  *
- * A libxml automata description, It can be compiled into a regexp
+ * It can be compiled into a regexp
  */
 typedef struct _xmlAutomata xmlAutomata;
 typedef xmlAutomata *xmlAutomataPtr;
 
 /**
- * xmlAutomataStatePtr:
- *
- * A state int the automata description,
+ * A state in the automata description
  */
 typedef struct _xmlAutomataState xmlAutomataState;
 typedef xmlAutomataState *xmlAutomataStatePtr;
@@ -40,119 +41,119 @@ typedef xmlAutomataState *xmlAutomataSta
  * Building API
  */
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataPtr
+XMLPUBFUN xmlAutomata *
 		    xmlNewAutomata		(void);
 XML_DEPRECATED
 XMLPUBFUN void
-		    xmlFreeAutomata		(xmlAutomataPtr am);
+		    xmlFreeAutomata		(xmlAutomata *am);
 
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataGetInitState	(xmlAutomataPtr am);
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataGetInitState	(xmlAutomata *am);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlAutomataSetFinalState	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr state);
+		    xmlAutomataSetFinalState	(xmlAutomata *am,
+						 xmlAutomataState *state);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewState		(xmlAutomataPtr am);
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewState		(xmlAutomata *am);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewTransition	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewTransition	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewTransition2	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewTransition2	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 const xmlChar *token2,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-                    xmlAutomataNewNegTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+                    xmlAutomataNewNegTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 const xmlChar *token2,
 						 void *data);
 
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewCountTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewCountTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 int min,
 						 int max,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewCountTrans2	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewCountTrans2	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 const xmlChar *token2,
 						 int min,
 						 int max,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewOnceTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewOnceTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 int min,
 						 int max,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewOnceTrans2	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewOnceTrans2	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 const xmlChar *token,
 						 const xmlChar *token2,
 						 int min,
 						 int max,
 						 void *data);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewAllTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewAllTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 int lax);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewEpsilon	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to);
-XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewCountedTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewEpsilon	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to);
+XML_DEPRECATED
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewCountedTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 int counter);
 XML_DEPRECATED
-XMLPUBFUN xmlAutomataStatePtr
-		    xmlAutomataNewCounterTrans	(xmlAutomataPtr am,
-						 xmlAutomataStatePtr from,
-						 xmlAutomataStatePtr to,
+XMLPUBFUN xmlAutomataState *
+		    xmlAutomataNewCounterTrans	(xmlAutomata *am,
+						 xmlAutomataState *from,
+						 xmlAutomataState *to,
 						 int counter);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlAutomataNewCounter	(xmlAutomataPtr am,
+		    xmlAutomataNewCounter	(xmlAutomata *am,
 						 int min,
 						 int max);
 
 XML_DEPRECATED
 XMLPUBFUN struct _xmlRegexp *
-		    xmlAutomataCompile		(xmlAutomataPtr am);
+		    xmlAutomataCompile		(xmlAutomata *am);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlAutomataIsDeterminist	(xmlAutomataPtr am);
+		    xmlAutomataIsDeterminist	(xmlAutomata *am);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlerror.h 2.15.0+dfsg-0.3/include/libxml/xmlerror.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlerror.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlerror.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: error handling
- * Description: the API used to report errors
+/**
+ * @file
+ * 
+ * @brief Error handling
+ * 
+ * API for error reporting and callbacks.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_ERROR_H__
@@ -16,95 +19,169 @@
 extern "C" {
 #endif
 
-/*
- * Backward compatibility
+/**
+ * Set generic error callback.
+ *
+ * @deprecated Use #xmlSetGenericErrorFunc
  */
 #define initGenericErrorDefaultFunc(h) \
     xmlSetGenericErrorFunc(NULL, (h) ? *((xmlGenericErrorFunc *) (h)) : NULL)
 
 /**
- * xmlErrorLevel:
- *
  * Indicates the level of an error
  */
 typedef enum {
+    /** Success */
     XML_ERR_NONE = 0,
-    XML_ERR_WARNING = 1,	/* A simple warning */
-    XML_ERR_ERROR = 2,		/* A recoverable error */
-    XML_ERR_FATAL = 3		/* A fatal error */
+    /**
+     * A warning
+     *
+     * When parsing XML, warnings are only reported to error
+     * handlers.
+     */
+    XML_ERR_WARNING = 1,
+    /**
+     * An error
+     *
+     * When parsing XML, this is used for recoverable errors like
+     *
+     * - namespace errors
+     * - validity errors when validating
+     * - certain undeclared entities
+     * - ID uniqueness and xml:id errors
+     *
+     * Note that some recoverable errors in the sense of the XML
+     * spec are reported as warnings.
+     *
+     * In other contexts, this may be used for unrecoverable
+     * errors.
+     */
+    XML_ERR_ERROR = 2,
+    /**
+     * A fatal error
+     *
+     * When parsing XML, a "fatal error" according to the XML spec.
+     * This typically means that the document isn't well-formed.
+     *
+     * This also includes OOM and I/O errors, resource limit
+     * exhaustion, unexpected errors from other libraries and
+     * invalid argument errors.
+     */
+    XML_ERR_FATAL = 3
 } xmlErrorLevel;
 
 /**
- * xmlErrorDomain:
- *
  * Indicates where an error may have come from
  */
 typedef enum {
+    /** Unknown */
     XML_FROM_NONE = 0,
-    XML_FROM_PARSER,	/* The XML parser */
-    XML_FROM_TREE,	/* The tree module */
-    XML_FROM_NAMESPACE,	/* The XML Namespace module */
-    XML_FROM_DTD,	/* The XML DTD validation with parser context*/
-    XML_FROM_HTML,	/* The HTML parser */
-    XML_FROM_MEMORY,	/* The memory allocator */
-    XML_FROM_OUTPUT,	/* The serialization code */
-    XML_FROM_IO,	/* The Input/Output stack */
-    XML_FROM_FTP,	/* The FTP module */
-    XML_FROM_HTTP,	/* The HTTP module */
-    XML_FROM_XINCLUDE,	/* The XInclude processing */
-    XML_FROM_XPATH,	/* The XPath module */
-    XML_FROM_XPOINTER,	/* The XPointer module */
-    XML_FROM_REGEXP,	/* The regular expressions module */
-    XML_FROM_DATATYPE,	/* The W3C XML Schemas Datatype module */
-    XML_FROM_SCHEMASP,	/* The W3C XML Schemas parser module */
-    XML_FROM_SCHEMASV,	/* The W3C XML Schemas validation module */
-    XML_FROM_RELAXNGP,	/* The Relax-NG parser module */
-    XML_FROM_RELAXNGV,	/* The Relax-NG validator module */
-    XML_FROM_CATALOG,	/* The Catalog module */
-    XML_FROM_C14N,	/* The Canonicalization module */
-    XML_FROM_XSLT,	/* The XSLT engine from libxslt */
-    XML_FROM_VALID,	/* The XML DTD validation with valid context */
-    XML_FROM_CHECK,	/* The error checking module */
-    XML_FROM_WRITER,	/* The xmlwriter module */
-    XML_FROM_MODULE,	/* The dynamically loaded module module*/
-    XML_FROM_I18N,	/* The module handling character conversion */
-    XML_FROM_SCHEMATRONV,/* The Schematron validator module */
-    XML_FROM_BUFFER,    /* The buffers module */
-    XML_FROM_URI        /* The URI module */
+    /** The XML parser */
+    XML_FROM_PARSER,
+    /** The tree module (unused) */
+    XML_FROM_TREE,
+    /** The XML Namespace module */
+    XML_FROM_NAMESPACE,
+    /** The XML DTD validation with parser context */
+    XML_FROM_DTD,
+    /** The HTML parser */
+    XML_FROM_HTML,
+    /** The memory allocator (unused) */
+    XML_FROM_MEMORY,
+    /** The serialization code */
+    XML_FROM_OUTPUT,
+    /** The Input/Output stack */
+    XML_FROM_IO,
+    /** The FTP module (unused) */
+    XML_FROM_FTP,
+    /** The HTTP module (unused) */
+    XML_FROM_HTTP,
+    /** The XInclude processing */
+    XML_FROM_XINCLUDE,
+    /** The XPath module */
+    XML_FROM_XPATH,
+    /** The XPointer module */
+    XML_FROM_XPOINTER,
+    /** The regular expressions module */
+    XML_FROM_REGEXP,
+    /** The W3C XML Schemas Datatype module */
+    XML_FROM_DATATYPE,
+    /** The W3C XML Schemas parser module */
+    XML_FROM_SCHEMASP,
+    /** The W3C XML Schemas validation module */
+    XML_FROM_SCHEMASV,
+    /** The Relax-NG parser module */
+    XML_FROM_RELAXNGP,
+    /** The Relax-NG validator module */
+    XML_FROM_RELAXNGV,
+    /** The Catalog module */
+    XML_FROM_CATALOG,
+    /** The Canonicalization module */
+    XML_FROM_C14N,
+    /** The XSLT engine from libxslt (unused) */
+    XML_FROM_XSLT,
+    /** The XML DTD validation with valid context */
+    XML_FROM_VALID,
+    /** The error checking module (unused) */
+    XML_FROM_CHECK,
+    /** The xmlwriter module */
+    XML_FROM_WRITER,
+    /** The dynamically loaded module module (unused) */
+    XML_FROM_MODULE,
+    /** The module handling character conversion (unused) */
+    XML_FROM_I18N,
+    /** The Schematron validator module */
+    XML_FROM_SCHEMATRONV,
+    /** The buffers module (unused) */
+    XML_FROM_BUFFER,
+    /** The URI module (unused) */
+    XML_FROM_URI
 } xmlErrorDomain;
 
-/**
- * xmlError:
- *
- * An XML Error instance.
- */
-
+/** Structured error */
 typedef struct _xmlError xmlError;
 typedef xmlError *xmlErrorPtr;
+/**
+ * An object containing information about an error.
+ */
 struct _xmlError {
-    int		domain;	/* What part of the library raised this error */
-    int		code;	/* The error code, e.g. an xmlParserError */
-    char       *message;/* human-readable informative error message */
-    xmlErrorLevel level;/* how consequent is the error */
-    char       *file;	/* the filename */
-    int		line;	/* the line number if available */
-    char       *str1;	/* extra string information */
-    char       *str2;	/* extra string information */
-    char       *str3;	/* extra string information */
-    int		int1;	/* extra number information */
-    int		int2;	/* error column # or 0 if N/A (todo: rename field when we would brk ABI) */
-    void       *ctxt;   /* the parser context if available */
-    void       *node;   /* the node in the tree */
+    /** An xmlErrorDomain value. */
+    int		domain;
+    /** The error code, e.g. an xmlParserErrors. */
+    int		code;
+    /** Human-readable error message. */
+    char       *message;
+    /** Error level. */
+    xmlErrorLevel level;
+    /** Filename if available */
+    char       *file;
+    /** Line number if available */
+    int		line;
+    /** Extra string information. */
+    char       *str1;
+    /** Extra string information. */
+    char       *str2;
+    /** Extra string information. */
+    char       *str3;
+    /** Extra number information. */
+    int		int1;
+    /** Column number if available. */
+    int		int2;
+    /** Parser context if available */
+    void       *ctxt;
+    /** Node if available */
+    void       *node;
 };
 
 /**
- * xmlParserError:
- *
- * This is an error that the XML (or HTML) parser can generate
+ * Error codes. Note that only some codes are documented.
  */
 typedef enum {
+    /** Success. */
     XML_ERR_OK = 0,
+    /** Internal assertion failure. */
     XML_ERR_INTERNAL_ERROR, /* 1 */
+    /** Out of memory */
     XML_ERR_NO_MEMORY, /* 2 */
     XML_ERR_DOCUMENT_START, /* 3 */
     XML_ERR_DOCUMENT_EMPTY, /* 4 */
@@ -135,6 +212,7 @@ typedef enum {
     XML_ERR_ENTITY_IS_EXTERNAL, /* 29 */
     XML_ERR_ENTITY_IS_PARAMETER, /* 30 */
     XML_ERR_UNKNOWN_ENCODING, /* 31 */
+    /** Unsupported character encoding. */
     XML_ERR_UNSUPPORTED_ENCODING, /* 32 */
     XML_ERR_STRING_NOT_STARTED, /* 33 */
     XML_ERR_STRING_NOT_CLOSED, /* 34 */
@@ -217,8 +295,14 @@ typedef enum {
     XML_ERR_USER_STOP, /* 111 */
     XML_ERR_COMMENT_ABRUPTLY_ENDED, /* 112 */
     XML_WAR_ENCODING_MISMATCH, /* 113 */
+    /**
+     * Internal resource limit like maximum amplification
+     * factor exceeded.
+     */
     XML_ERR_RESOURCE_LIMIT, /* 114 */
+    /** Invalid argument. */
     XML_ERR_ARGUMENT, /* 115 */
+    /** Unexpected error from the OS or an external library. */
     XML_ERR_SYSTEM, /* 116 */
     XML_ERR_REDECL_PREDEF_ENTITY, /* 117 */
     XML_ERR_INT_SUBSET_NOT_FINISHED, /* 118 */
@@ -451,6 +535,7 @@ typedef enum {
     XML_IO_ENAMETOOLONG, /* 1521 */
     XML_IO_ENFILE, /* 1522 */
     XML_IO_ENODEV, /* 1523 */
+    /** File not found. */
     XML_IO_ENOENT, /* 1524 */
     XML_IO_ENOEXEC, /* 1525 */
     XML_IO_ENOLCK, /* 1526 */
@@ -849,67 +934,87 @@ typedef enum {
 } xmlParserErrors;
 
 /**
- * xmlGenericErrorFunc:
- * @ctx:  a parsing context
- * @msg:  the message
- * @...:  the extra arguments of the varargs to format the message
+ * Generic error callback.
  *
- * Signature of the function to use when there is an error and
- * no parsing or validity context available .
+ * @deprecated in favor of structured errors.
+ * @param ctx  user data
+ * @param msg  printf-like format string
+ * @param ...  arguments to format
  */
 typedef void (*xmlGenericErrorFunc) (void *ctx,
 				 const char *msg,
 				 ...) LIBXML_ATTR_FORMAT(2,3);
 /**
- * xmlStructuredErrorFunc:
- * @userData:  user provided data for the error callback
- * @error:  the error being raised.
+ * Structured error callback receiving an xmlError.
  *
- * Signature of the function to use when there is an error and
- * the module handles the new error reporting mechanism.
+ * @param userData  user provided data for the error callback
+ * @param error  the error being raised
  */
 typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);
 
-/** DOC_DISABLE */
+/** @cond ignore */
 XML_DEPRECATED
 XMLPUBFUN const xmlError *__xmlLastError(void);
-
 XMLPUBFUN xmlGenericErrorFunc *__xmlGenericError(void);
 XMLPUBFUN void **__xmlGenericErrorContext(void);
 XMLPUBFUN xmlStructuredErrorFunc *__xmlStructuredError(void);
 XMLPUBFUN void **__xmlStructuredErrorContext(void);
+/** @endcond */
 
 #ifndef XML_GLOBALS_NO_REDEFINITION
+  /**
+   * Thread-local variable containing the last reported error.
+   *
+   * @deprecated Use xmlGetLastError().
+   */
   #define xmlLastError (*__xmlLastError())
+  /**
+   * Thread-local variable containing the generic error callback.
+   *
+   * @deprecated See xmlSetStructuredErrorFunc().
+   */
   #define xmlGenericError (*__xmlGenericError())
+  /**
+   * Thread-local variable containing user data for the generic
+   * error handler.
+   *
+   * @deprecated See xmlSetStructuredErrorFunc().
+   */
   #define xmlGenericErrorContext (*__xmlGenericErrorContext())
+  /**
+   * Thread-local variable containing the structured error
+   * callback.
+   *
+   * @deprecated See xmlSetStructuredErrorFunc().
+   */
   #define xmlStructuredError (*__xmlStructuredError())
+  /**
+   * Thread-local variable containing user data for the
+   * structured error handler.
+   *
+   * @deprecated See xmlSetStructuredErrorFunc().
+   */
   #define xmlStructuredErrorContext (*__xmlStructuredErrorContext())
 #endif
-/** DOC_ENABLE */
 
-/*
- * Use the following function to reset the two global variables
- * xmlGenericError and xmlGenericErrorContext.
- */
 XMLPUBFUN void
     xmlSetGenericErrorFunc	(void *ctx,
 				 xmlGenericErrorFunc handler);
+XMLPUBFUN void
+    xmlSetStructuredErrorFunc	(void *ctx,
+				 xmlStructuredErrorFunc handler);
+
 XML_DEPRECATED
 XMLPUBFUN void
     xmlThrDefSetGenericErrorFunc(void *ctx,
                                  xmlGenericErrorFunc handler);
-
-XMLPUBFUN void
-    xmlSetStructuredErrorFunc	(void *ctx,
-				 xmlStructuredErrorFunc handler);
 XML_DEPRECATED
 XMLPUBFUN void
     xmlThrDefSetStructuredErrorFunc(void *ctx,
                                  xmlStructuredErrorFunc handler);
+
 /*
- * Default message routines used by SAX and Valid context for error
- * and warning reporting.
+ * Legacy error handlers.
  */
 XMLPUBFUN void
     xmlParserError		(void *ctx,
@@ -927,9 +1032,7 @@ XMLPUBFUN void
     xmlParserValidityWarning	(void *ctx,
 				 const char *msg,
 				 ...) LIBXML_ATTR_FORMAT(2,3);
-/** DOC_DISABLE */
 struct _xmlParserInput;
-/** DOC_ENABLE */
 XMLPUBFUN void
     xmlParserPrintFileInfo	(struct _xmlParserInput *input);
 XMLPUBFUN void
@@ -951,10 +1054,10 @@ XMLPUBFUN const xmlError *
 XMLPUBFUN void
     xmlCtxtResetLastError	(void *ctx);
 XMLPUBFUN void
-    xmlResetError		(xmlErrorPtr err);
+    xmlResetError		(xmlError *err);
 XMLPUBFUN int
     xmlCopyError		(const xmlError *from,
-				 xmlErrorPtr to);
+				 xmlError *to);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlexports.h 2.15.0+dfsg-0.3/include/libxml/xmlexports.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlexports.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlexports.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,35 +1,33 @@
-/*
- * Summary: macros for marking symbols as exportable/importable.
- * Description: macros for marking symbols as exportable/importable.
+/**
+ * @file
+ * 
+ * @brief macros for marking symbols as exportable/importable.
+ * 
+ * macros for marking symbols as exportable/importable.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  */
 
 #ifndef __XML_EXPORTS_H__
 #define __XML_EXPORTS_H__
 
-/** DOC_DISABLE */
-
 /*
  * Symbol visibility
  */
 
-#if defined(_WIN32) || defined(__CYGWIN__)
-  #ifdef LIBXML_STATIC
-    #define XMLPUBLIC
-  #elif defined(IN_LIBXML)
-    #define XMLPUBLIC __declspec(dllexport)
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(LIBXML_STATIC)
+  #if defined(IN_LIBXML)
+    #define XMLPUBFUN __declspec(dllexport)
+    #define XMLPUBVAR __declspec(dllexport) extern
   #else
-    #define XMLPUBLIC __declspec(dllimport)
+    #define XMLPUBFUN __declspec(dllimport)
+    #define XMLPUBVAR __declspec(dllimport) extern
   #endif
 #else /* not Windows */
-  #define XMLPUBLIC
+  #define XMLPUBFUN
+  #define XMLPUBVAR extern
 #endif /* platform switch */
 
-#define XMLPUBFUN XMLPUBLIC
-
-#define XMLPUBVAR XMLPUBLIC extern
-
 /* Compatibility */
 #define XMLCALL
 #define XMLCDECL
@@ -58,10 +56,10 @@
   #if defined(IN_LIBXML)
     #define XML_DEPRECATED
   #elif __GNUC__ * 100 + __GNUC_MINOR__ >= 301
-    #define XML_DEPRECATED __attribute__((deprecated))
+    #define XML_DEPRECATED __attribute__((deprecated("See https://gnome.pages.gitlab.gnome.org/libxml2/html/deprecated.html")))
   #elif defined(_MSC_VER) && _MSC_VER >= 1400
     /* Available since Visual Studio 2005 */
-    #define XML_DEPRECATED __declspec(deprecated)
+    #define XML_DEPRECATED __declspec(deprecated("See https://gnome.pages.gitlab.gnome.org/libxml2/html/deprecated.html"))
   #else
     #define XML_DEPRECATED
   #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlmemory.h 2.15.0+dfsg-0.3/include/libxml/xmlmemory.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlmemory.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlmemory.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: interface for the memory allocator
- * Description: provides interfaces for the memory allocator,
+/**
+ * @file
+ * 
+ * @brief interface for the memory allocator
+ * 
+ * provides interfaces for the memory allocator,
  *              including debugging capabilities.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -23,40 +26,33 @@ extern "C" {
  * The XML memory wrapper support 4 basic overloadable functions.
  */
 /**
- * xmlFreeFunc:
- * @mem: an already allocated block of memory
- *
  * Signature for a free() implementation.
+ *
+ * @param mem  an already allocated block of memory
  */
 typedef void (*xmlFreeFunc)(void *mem);
 /**
- * xmlMallocFunc:
- * @size:  the size requested in bytes
- *
  * Signature for a malloc() implementation.
  *
- * Returns a pointer to the newly allocated block or NULL in case of error.
+ * @param size  the size requested in bytes
+ * @returns a pointer to the newly allocated block or NULL in case of error.
  */
-typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) *xmlMallocFunc)(size_t size);
+typedef void *(*xmlMallocFunc)(size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
 
 /**
- * xmlReallocFunc:
- * @mem: an already allocated block of memory
- * @size:  the new size requested in bytes
- *
  * Signature for a realloc() implementation.
  *
- * Returns a pointer to the newly reallocated block or NULL in case of error.
+ * @param mem  an already allocated block of memory
+ * @param size  the new size requested in bytes
+ * @returns a pointer to the newly reallocated block or NULL in case of error.
  */
 typedef void *(*xmlReallocFunc)(void *mem, size_t size);
 
 /**
- * xmlStrdupFunc:
- * @str: a zero terminated string
- *
  * Signature for an strdup() implementation.
  *
- * Returns the copy of the string or NULL in case of error.
+ * @param str  a zero terminated string
+ * @returns the copy of the string or NULL in case of error.
  */
 typedef char *(*xmlStrdupFunc)(const char *str);
 
@@ -71,7 +67,6 @@ typedef char *(*xmlStrdupFunc)(const cha
  */
 #ifdef LIBXML_THREAD_ALLOC_ENABLED
 
-/** DOC_DISABLE */
 XMLPUBFUN xmlMallocFunc *__xmlMalloc(void);
 XMLPUBFUN xmlMallocFunc *__xmlMallocAtomic(void);
 XMLPUBFUN xmlReallocFunc *__xmlRealloc(void);
@@ -85,14 +80,34 @@ XMLPUBFUN xmlStrdupFunc *__xmlMemStrdup(
   #define xmlFree (*__xmlFree())
   #define xmlMemStrdup (*__xmlMemStrdup())
 #endif
-/** DOC_ENABLE */
 
 #else
-  XMLPUBVAR xmlMallocFunc xmlMalloc;
-  XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
-  XMLPUBVAR xmlReallocFunc xmlRealloc;
-  XMLPUBVAR xmlFreeFunc xmlFree;
-  XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
+
+/**
+ * The variable holding the libxml malloc() implementation
+ */
+XMLPUBVAR xmlMallocFunc xmlMalloc;
+/**
+ * The variable holding the libxml malloc() implementation for atomic
+ * data (i.e. blocks not containing pointers), useful when using a
+ * garbage collecting allocator.
+ *
+ * @deprecated Use #xmlMalloc
+ */
+XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
+/**
+ * The variable holding the libxml realloc() implementation
+ */
+XMLPUBVAR xmlReallocFunc xmlRealloc;
+/**
+ * The variable holding the libxml free() implementation
+ */
+XMLPUBVAR xmlFreeFunc xmlFree;
+/**
+ * The variable holding the libxml strdup() implementation
+ */
+XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
+
 #endif
 
 /*
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlmodule.h 2.15.0+dfsg-0.3/include/libxml/xmlmodule.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlmodule.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlmodule.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: dynamic module loading
- * Description: basic API for dynamic module loading, used by
- *              libexslt added in 2.6.17
+/**
+ * @file
+ *
+ * @brief Dynamic module loading
+ *
+ * API for dynamic module loading. Only used by old libxslt versions
+ * and subject to removal.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Joel W. Reed
+ * @author Joel W. Reed
  */
 
 #ifndef __XML_MODULE_H__
@@ -20,17 +23,13 @@ extern "C" {
 #endif
 
 /**
- * xmlModulePtr:
- *
  * A handle to a dynamically loaded module
  */
 typedef struct _xmlModule xmlModule;
 typedef xmlModule *xmlModulePtr;
 
 /**
- * xmlModuleOption:
- *
- * enumeration of options that can be passed down to xmlModuleOpen()
+ * enumeration of options that can be passed down to #xmlModuleOpen
  */
 typedef enum {
     XML_MODULE_LAZY = 1,	/* lazy binding */
@@ -38,19 +37,19 @@ typedef enum {
 } xmlModuleOption;
 
 XML_DEPRECATED
-XMLPUBFUN xmlModulePtr xmlModuleOpen	(const char *filename,
+XMLPUBFUN xmlModule *xmlModuleOpen	(const char *filename,
 						 int options);
 
 XML_DEPRECATED
-XMLPUBFUN int xmlModuleSymbol		(xmlModulePtr module,
+XMLPUBFUN int xmlModuleSymbol		(xmlModule *module,
 						 const char* name,
 						 void **result);
 
 XML_DEPRECATED
-XMLPUBFUN int xmlModuleClose		(xmlModulePtr module);
+XMLPUBFUN int xmlModuleClose		(xmlModule *module);
 
 XML_DEPRECATED
-XMLPUBFUN int xmlModuleFree		(xmlModulePtr module);
+XMLPUBFUN int xmlModuleFree		(xmlModule *module);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlreader.h 2.15.0+dfsg-0.3/include/libxml/xmlreader.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlreader.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlreader.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: the XMLReader implementation
- * Description: API of the XML streaming API based on C# interfaces.
+/**
+ * @file
+ * 
+ * @brief the XMLReader implementation
+ * 
+ * API of the XML streaming API based on C\# interfaces.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XMLREADER_H__
@@ -27,8 +30,6 @@ extern "C" {
 #endif
 
 /**
- * xmlParserSeverities:
- *
  * How severe an error callback is when the per-reader error callback API
  * is used.
  */
@@ -42,8 +43,6 @@ typedef enum {
 #ifdef LIBXML_READER_ENABLED
 
 /**
- * xmlTextReaderMode:
- *
  * Internal state values for the reader.
  */
 typedef enum {
@@ -56,302 +55,310 @@ typedef enum {
 } xmlTextReaderMode;
 
 /**
- * xmlParserProperties:
- *
- * Some common options to use with xmlTextReaderSetParserProp, but it
+ * Some common options to use with #xmlTextReaderSetParserProp, but it
  * is better to use xmlParserOption and the xmlReaderNewxxx and
  * xmlReaderForxxx APIs now.
  */
 typedef enum {
+    /* load external DTD */
     XML_PARSER_LOADDTD = 1,
+    /* use default attributes */
     XML_PARSER_DEFAULTATTRS = 2,
+    /* DTD validation */
     XML_PARSER_VALIDATE = 3,
+    /* substitute entities */
     XML_PARSER_SUBST_ENTITIES = 4
 } xmlParserProperties;
 
 /**
- * xmlReaderTypes:
- *
  * Predefined constants for the different types of nodes.
  */
 typedef enum {
+    /** unknown or error */
     XML_READER_TYPE_NONE = 0,
+    /** element */
     XML_READER_TYPE_ELEMENT = 1,
+    /** attribute */
     XML_READER_TYPE_ATTRIBUTE = 2,
+    /** text */
     XML_READER_TYPE_TEXT = 3,
+    /** CDATA section */
     XML_READER_TYPE_CDATA = 4,
+    /** entity reference */
     XML_READER_TYPE_ENTITY_REFERENCE = 5,
+    /** unused */
     XML_READER_TYPE_ENTITY = 6,
+    /** processing instruction */
     XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
+    /** comment */
     XML_READER_TYPE_COMMENT = 8,
+    /** document */
     XML_READER_TYPE_DOCUMENT = 9,
+    /** unused */
     XML_READER_TYPE_DOCUMENT_TYPE = 10,
+    /** document fragment */
     XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
+    /** notation, unused */
     XML_READER_TYPE_NOTATION = 12,
+    /** whitespace */
     XML_READER_TYPE_WHITESPACE = 13,
+    /** significant whitespace */
     XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
+    /** end of element */
     XML_READER_TYPE_END_ELEMENT = 15,
+    /** unused */
     XML_READER_TYPE_END_ENTITY = 16,
+    /** unused */
     XML_READER_TYPE_XML_DECLARATION = 17
 } xmlReaderTypes;
 
-/**
- * xmlTextReader:
- *
- * Structure for an xmlReader context.
- */
+/** xmlReader context */
 typedef struct _xmlTextReader xmlTextReader;
-
-/**
- * xmlTextReaderPtr:
- *
- * Pointer to an xmlReader context.
- */
 typedef xmlTextReader *xmlTextReaderPtr;
 
 /*
  * Constructors & Destructor
  */
-XMLPUBFUN xmlTextReaderPtr
-			xmlNewTextReader	(xmlParserInputBufferPtr input,
+XMLPUBFUN xmlTextReader *
+			xmlNewTextReader	(xmlParserInputBuffer *input,
 	                                         const char *URI);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
 			xmlNewTextReaderFilename(const char *URI);
 
 XMLPUBFUN void
-			xmlFreeTextReader	(xmlTextReaderPtr reader);
+			xmlFreeTextReader	(xmlTextReader *reader);
 
 XMLPUBFUN int
-            xmlTextReaderSetup(xmlTextReaderPtr reader,
-                   xmlParserInputBufferPtr input, const char *URL,
+            xmlTextReaderSetup(xmlTextReader *reader,
+                   xmlParserInputBuffer *input, const char *URL,
                    const char *encoding, int options);
 XMLPUBFUN void
-            xmlTextReaderSetMaxAmplification(xmlTextReaderPtr reader,
+            xmlTextReaderSetMaxAmplification(xmlTextReader *reader,
                    unsigned maxAmpl);
 XMLPUBFUN const xmlError *
-            xmlTextReaderGetLastError(xmlTextReaderPtr reader);
+            xmlTextReaderGetLastError(xmlTextReader *reader);
 
 /*
  * Iterators
  */
 XMLPUBFUN int
-			xmlTextReaderRead	(xmlTextReaderPtr reader);
+			xmlTextReaderRead	(xmlTextReader *reader);
 
 #ifdef LIBXML_WRITER_ENABLED
 XMLPUBFUN xmlChar *
-			xmlTextReaderReadInnerXml(xmlTextReaderPtr reader);
+			xmlTextReaderReadInnerXml(xmlTextReader *reader);
 
 XMLPUBFUN xmlChar *
-			xmlTextReaderReadOuterXml(xmlTextReaderPtr reader);
+			xmlTextReaderReadOuterXml(xmlTextReader *reader);
 #endif
 
 XMLPUBFUN xmlChar *
-			xmlTextReaderReadString	(xmlTextReaderPtr reader);
+			xmlTextReaderReadString	(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader);
+			xmlTextReaderReadAttributeValue(xmlTextReader *reader);
 
 /*
  * Attributes of the node
  */
 XMLPUBFUN int
-			xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
+			xmlTextReaderAttributeCount(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderDepth	(xmlTextReaderPtr reader);
+			xmlTextReaderDepth	(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
+			xmlTextReaderHasAttributes(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderHasValue(xmlTextReaderPtr reader);
+			xmlTextReaderHasValue(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
+			xmlTextReaderIsDefault	(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
+			xmlTextReaderIsEmptyElement(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderNodeType	(xmlTextReaderPtr reader);
+			xmlTextReaderNodeType	(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
+			xmlTextReaderQuoteChar	(xmlTextReader *reader);
 XMLPUBFUN int
-			xmlTextReaderReadState	(xmlTextReaderPtr reader);
+			xmlTextReaderReadState	(xmlTextReader *reader);
 XMLPUBFUN int
-                        xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
+                        xmlTextReaderIsNamespaceDecl(xmlTextReader *reader);
 
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstBaseUri	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstLocalName	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstName	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstName	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
+		    xmlTextReaderConstNamespaceUri(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstPrefix	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstXmlLang	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstString	(xmlTextReaderPtr reader,
+		    xmlTextReaderConstString	(xmlTextReader *reader,
 						 const xmlChar *str);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstValue	(xmlTextReaderPtr reader);
+		    xmlTextReaderConstValue	(xmlTextReader *reader);
 
 /*
  * use the Const version of the routine for
  * better performance and simpler code
  */
 XMLPUBFUN xmlChar *
-			xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
+			xmlTextReaderBaseUri	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderLocalName	(xmlTextReaderPtr reader);
+			xmlTextReaderLocalName	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderName	(xmlTextReaderPtr reader);
+			xmlTextReaderName	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
+			xmlTextReaderNamespaceUri(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderPrefix	(xmlTextReaderPtr reader);
+			xmlTextReaderPrefix	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
+			xmlTextReaderXmlLang	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-			xmlTextReaderValue	(xmlTextReaderPtr reader);
+			xmlTextReaderValue	(xmlTextReader *reader);
 
 /*
  * Methods of the XmlTextReader
  */
 XMLPUBFUN int
-		    xmlTextReaderClose		(xmlTextReaderPtr reader);
+		    xmlTextReaderClose		(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-		    xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
+		    xmlTextReaderGetAttributeNo	(xmlTextReader *reader,
 						 int no);
 XMLPUBFUN xmlChar *
-		    xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
+		    xmlTextReaderGetAttribute	(xmlTextReader *reader,
 						 const xmlChar *name);
 XMLPUBFUN xmlChar *
-		    xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
+		    xmlTextReaderGetAttributeNs	(xmlTextReader *reader,
 						 const xmlChar *localName,
 						 const xmlChar *namespaceURI);
-XMLPUBFUN xmlParserInputBufferPtr
-		    xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
+XMLPUBFUN xmlParserInputBuffer *
+		    xmlTextReaderGetRemainder	(xmlTextReader *reader);
 XMLPUBFUN xmlChar *
-		    xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
+		    xmlTextReaderLookupNamespace(xmlTextReader *reader,
 						 const xmlChar *prefix);
 XMLPUBFUN int
-		    xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
+		    xmlTextReaderMoveToAttributeNo(xmlTextReader *reader,
 						 int no);
 XMLPUBFUN int
-		    xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
+		    xmlTextReaderMoveToAttribute(xmlTextReader *reader,
 						 const xmlChar *name);
 XMLPUBFUN int
-		    xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
+		    xmlTextReaderMoveToAttributeNs(xmlTextReader *reader,
 						 const xmlChar *localName,
 						 const xmlChar *namespaceURI);
 XMLPUBFUN int
-		    xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
+		    xmlTextReaderMoveToFirstAttribute(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
+		    xmlTextReaderMoveToNextAttribute(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
+		    xmlTextReaderMoveToElement	(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderNormalization	(xmlTextReaderPtr reader);
+		    xmlTextReaderNormalization	(xmlTextReader *reader);
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
+		    xmlTextReaderConstEncoding  (xmlTextReader *reader);
 
 /*
  * Extensions
  */
 XMLPUBFUN int
-		    xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
+		    xmlTextReaderSetParserProp	(xmlTextReader *reader,
 						 int prop,
 						 int value);
 XMLPUBFUN int
-		    xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
+		    xmlTextReaderGetParserProp	(xmlTextReader *reader,
 						 int prop);
-XMLPUBFUN xmlNodePtr
-		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
+XMLPUBFUN xmlNode *
+		    xmlTextReaderCurrentNode	(xmlTextReader *reader);
 
 XMLPUBFUN int
-            xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
+            xmlTextReaderGetParserLineNumber(xmlTextReader *reader);
 
 XMLPUBFUN int
-            xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
+            xmlTextReaderGetParserColumnNumber(xmlTextReader *reader);
 
-XMLPUBFUN xmlNodePtr
-		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
+XMLPUBFUN xmlNode *
+		    xmlTextReaderPreserve	(xmlTextReader *reader);
 #ifdef LIBXML_PATTERN_ENABLED
 XMLPUBFUN int
-		    xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
+		    xmlTextReaderPreservePattern(xmlTextReader *reader,
 						 const xmlChar *pattern,
 						 const xmlChar **namespaces);
 #endif /* LIBXML_PATTERN_ENABLED */
-XMLPUBFUN xmlDocPtr
-		    xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
-XMLPUBFUN xmlNodePtr
-		    xmlTextReaderExpand		(xmlTextReaderPtr reader);
+XMLPUBFUN xmlDoc *
+		    xmlTextReaderCurrentDoc	(xmlTextReader *reader);
+XMLPUBFUN xmlNode *
+		    xmlTextReaderExpand		(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderNext		(xmlTextReaderPtr reader);
+		    xmlTextReaderNext		(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
+		    xmlTextReaderNextSibling	(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderIsValid	(xmlTextReaderPtr reader);
+		    xmlTextReaderIsValid	(xmlTextReader *reader);
 #ifdef LIBXML_RELAXNG_ENABLED
 XMLPUBFUN int
-		    xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
+		    xmlTextReaderRelaxNGValidate(xmlTextReader *reader,
 						 const char *rng);
 XMLPUBFUN int
-		    xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
-						 xmlRelaxNGValidCtxtPtr ctxt,
+		    xmlTextReaderRelaxNGValidateCtxt(xmlTextReader *reader,
+						 xmlRelaxNGValidCtxt *ctxt,
 						 int options);
 
 XMLPUBFUN int
-		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
-						 xmlRelaxNGPtr schema);
+		    xmlTextReaderRelaxNGSetSchema(xmlTextReader *reader,
+						 xmlRelaxNG *schema);
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
 XMLPUBFUN int
-		    xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
+		    xmlTextReaderSchemaValidate	(xmlTextReader *reader,
 						 const char *xsd);
 XMLPUBFUN int
-		    xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
-						 xmlSchemaValidCtxtPtr ctxt,
+		    xmlTextReaderSchemaValidateCtxt(xmlTextReader *reader,
+						 xmlSchemaValidCtxt *ctxt,
 						 int options);
 XMLPUBFUN int
-		    xmlTextReaderSetSchema	(xmlTextReaderPtr reader,
-						 xmlSchemaPtr schema);
+		    xmlTextReaderSetSchema	(xmlTextReader *reader,
+						 xmlSchema *schema);
 #endif
 XMLPUBFUN const xmlChar *
-		    xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
+		    xmlTextReaderConstXmlVersion(xmlTextReader *reader);
 XMLPUBFUN int
-		    xmlTextReaderStandalone     (xmlTextReaderPtr reader);
+		    xmlTextReaderStandalone     (xmlTextReader *reader);
 
 
 /*
  * Index lookup
  */
 XMLPUBFUN long
-		xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
+		xmlTextReaderByteConsumed	(xmlTextReader *reader);
 
 /*
  * New more complete APIs for simpler creation and reuse of readers
  */
-XMLPUBFUN xmlTextReaderPtr
-		xmlReaderWalker		(xmlDocPtr doc);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
+		xmlReaderWalker		(xmlDoc *doc);
+XMLPUBFUN xmlTextReader *
 		xmlReaderForDoc		(const xmlChar * cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
 		xmlReaderForFile	(const char *filename,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
 		xmlReaderForMemory	(const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
 		xmlReaderForFd		(int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlTextReaderPtr
+XMLPUBFUN xmlTextReader *
 		xmlReaderForIO		(xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
@@ -360,34 +367,34 @@ XMLPUBFUN xmlTextReaderPtr
 					 int options);
 
 XMLPUBFUN int
-		xmlReaderNewWalker	(xmlTextReaderPtr reader,
-					 xmlDocPtr doc);
+		xmlReaderNewWalker	(xmlTextReader *reader,
+					 xmlDoc *doc);
 XMLPUBFUN int
-		xmlReaderNewDoc		(xmlTextReaderPtr reader,
+		xmlReaderNewDoc		(xmlTextReader *reader,
 					 const xmlChar * cur,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
 XMLPUBFUN int
-		xmlReaderNewFile	(xmlTextReaderPtr reader,
+		xmlReaderNewFile	(xmlTextReader *reader,
 					 const char *filename,
 					 const char *encoding,
 					 int options);
 XMLPUBFUN int
-		xmlReaderNewMemory	(xmlTextReaderPtr reader,
+		xmlReaderNewMemory	(xmlTextReader *reader,
 					 const char *buffer,
 					 int size,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
 XMLPUBFUN int
-		xmlReaderNewFd		(xmlTextReaderPtr reader,
+		xmlReaderNewFd		(xmlTextReader *reader,
 					 int fd,
 					 const char *URL,
 					 const char *encoding,
 					 int options);
 XMLPUBFUN int
-		xmlReaderNewIO		(xmlTextReaderPtr reader,
+		xmlReaderNewIO		(xmlTextReader *reader,
 					 xmlInputReadCallback ioread,
 					 xmlInputCloseCallback ioclose,
 					 void *ioctx,
@@ -400,13 +407,12 @@ XMLPUBFUN int
 typedef void *  xmlTextReaderLocatorPtr;
 
 /**
- * xmlTextReaderErrorFunc:
- * @arg: the user argument
- * @msg: the message
- * @severity: the severity of the error
- * @locator: a locator indicating where the error occurred
- *
  * Signature of an error callback from a reader parser
+ *
+ * @param arg  the user argument
+ * @param msg  the message
+ * @param severity  the severity of the error
+ * @param locator  a locator indicating where the error occurred
  */
 typedef void (*xmlTextReaderErrorFunc)(void *arg,
 					       const char *msg,
@@ -417,20 +423,20 @@ XMLPUBFUN int
 XMLPUBFUN xmlChar *
 	    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
 XMLPUBFUN void
-	    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
+	    xmlTextReaderSetErrorHandler(xmlTextReader *reader,
 					 xmlTextReaderErrorFunc f,
 					 void *arg);
 XMLPUBFUN void
-	    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
+	    xmlTextReaderSetStructuredErrorHandler(xmlTextReader *reader,
 						   xmlStructuredErrorFunc f,
 						   void *arg);
 XMLPUBFUN void
-	    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
+	    xmlTextReaderGetErrorHandler(xmlTextReader *reader,
 					 xmlTextReaderErrorFunc *f,
 					 void **arg);
 
 XMLPUBFUN void
-	    xmlTextReaderSetResourceLoader(xmlTextReaderPtr reader,
+	    xmlTextReaderSetResourceLoader(xmlTextReader *reader,
 					   xmlResourceLoader loader,
 					   void *data);
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlregexp.h 2.15.0+dfsg-0.3/include/libxml/xmlregexp.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlregexp.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlregexp.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: regular expressions handling
- * Description: basic API for libxml regular expressions handling used
- *              for XML Schemas and validation.
+/**
+ * @file
+ * 
+ * @brief Regular expressions
+ * 
+ * A regular expression engine used for DTD and XML Schema
+ * validation.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_REGEXP_H__
@@ -22,17 +25,12 @@ extern "C" {
 #endif
 
 /**
- * xmlRegexpPtr:
- *
- * A libxml regular expression, they can actually be far more complex
- * thank the POSIX regex expressions.
+ * A libxml regular expression
  */
 typedef struct _xmlRegexp xmlRegexp;
 typedef xmlRegexp *xmlRegexpPtr;
 
 /**
- * xmlRegExecCtxtPtr:
- *
  * A libxml progressive regular expression evaluation context
  */
 typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
@@ -41,29 +39,28 @@ typedef xmlRegExecCtxt *xmlRegExecCtxtPt
 /*
  * The POSIX like API
  */
-XMLPUBFUN xmlRegexpPtr
+XMLPUBFUN xmlRegexp *
 		    xmlRegexpCompile	(const xmlChar *regexp);
-XMLPUBFUN void			 xmlRegFreeRegexp(xmlRegexpPtr regexp);
+XMLPUBFUN void			 xmlRegFreeRegexp(xmlRegexp *regexp);
 XMLPUBFUN int
-		    xmlRegexpExec	(xmlRegexpPtr comp,
+		    xmlRegexpExec	(xmlRegexp *comp,
 					 const xmlChar *value);
 XML_DEPRECATED
 XMLPUBFUN void
 		    xmlRegexpPrint	(FILE *output,
-					 xmlRegexpPtr regexp);
+					 xmlRegexp *regexp);
 XMLPUBFUN int
-		    xmlRegexpIsDeterminist(xmlRegexpPtr comp);
+		    xmlRegexpIsDeterminist(xmlRegexp *comp);
 
 /**
- * xmlRegExecCallbacks:
- * @exec: the regular expression context
- * @token: the current token string
- * @transdata: transition data
- * @inputdata: input data
- *
  * Callback function when doing a transition in the automata
+ *
+ * @param exec  the regular expression context
+ * @param token  the current token string
+ * @param transdata  transition data
+ * @param inputdata  input data
  */
-typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
+typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxt *exec,
 	                             const xmlChar *token,
 				     void *transdata,
 				     void *inputdata);
@@ -72,35 +69,35 @@ typedef void (*xmlRegExecCallbacks) (xml
  * The progressive API
  */
 XML_DEPRECATED
-XMLPUBFUN xmlRegExecCtxtPtr
-		    xmlRegNewExecCtxt	(xmlRegexpPtr comp,
+XMLPUBFUN xmlRegExecCtxt *
+		    xmlRegNewExecCtxt	(xmlRegexp *comp,
 					 xmlRegExecCallbacks callback,
 					 void *data);
 XML_DEPRECATED
 XMLPUBFUN void
-		    xmlRegFreeExecCtxt	(xmlRegExecCtxtPtr exec);
+		    xmlRegFreeExecCtxt	(xmlRegExecCtxt *exec);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlRegExecPushString(xmlRegExecCtxtPtr exec,
+		    xmlRegExecPushString(xmlRegExecCtxt *exec,
 					 const xmlChar *value,
 					 void *data);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
+		    xmlRegExecPushString2(xmlRegExecCtxt *exec,
 					 const xmlChar *value,
 					 const xmlChar *value2,
 					 void *data);
 
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
+		    xmlRegExecNextValues(xmlRegExecCtxt *exec,
 					 int *nbval,
 					 int *nbneg,
 					 xmlChar **values,
 					 int *terminal);
 XML_DEPRECATED
 XMLPUBFUN int
-		    xmlRegExecErrInfo	(xmlRegExecCtxtPtr exec,
+		    xmlRegExecErrInfo	(xmlRegExecCtxt *exec,
 					 const xmlChar **string,
 					 int *nbval,
 					 int *nbneg,
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlsave.h 2.15.0+dfsg-0.3/include/libxml/xmlsave.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlsave.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlsave.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: the XML document serializer
- * Description: API to save document or subtree of document
+/**
+ * @file
+ * 
+ * @brief XML/HTML serializer
+ * 
+ * API to save documents or subtrees of documents.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XMLSAVE_H__
@@ -21,45 +24,87 @@ extern "C" {
 #endif
 
 /**
- * xmlSaveOption:
- *
  * This is the set of XML save options that can be passed down
- * to the xmlSaveToFd() and similar calls.
+ * to the #xmlSaveToFd and similar calls.
  */
 typedef enum {
-    XML_SAVE_FORMAT     = 1<<0,	/* format save output */
-    XML_SAVE_NO_DECL    = 1<<1,	/* drop the xml declaration */
-    XML_SAVE_NO_EMPTY	= 1<<2, /* no empty tags */
-    XML_SAVE_NO_XHTML	= 1<<3, /* disable XHTML1 specific rules */
-    XML_SAVE_XHTML	= 1<<4, /* force XHTML1 specific rules */
-    XML_SAVE_AS_XML     = 1<<5, /* force XML serialization on HTML doc */
-    XML_SAVE_AS_HTML    = 1<<6, /* force HTML serialization on XML doc */
-    XML_SAVE_WSNONSIG   = 1<<7, /* format with non-significant whitespace */
-    /* Available since 2.14.0 */
-    XML_SAVE_EMPTY      = 1<<8, /* force empty tags, overriding global */
-    XML_SAVE_NO_INDENT  = 1<<9, /* disable indenting */
-    XML_SAVE_INDENT     = 1<<10 /* force indenting, overriding global */
+    /**
+     * Format output. This adds newlines and enables indenting
+     * by default.
+     */
+    XML_SAVE_FORMAT     = 1<<0,
+    /**
+     * Don't emit an XML declaration.
+     */
+    XML_SAVE_NO_DECL    = 1<<1,
+    /**
+     * Don't emit empty tags.
+     */
+    XML_SAVE_NO_EMPTY	= 1<<2,
+    /**
+     * Don't serialize as XHTML.
+     */
+    XML_SAVE_NO_XHTML	= 1<<3,
+    /**
+     * Always serialize as XHTML.
+     */
+    XML_SAVE_XHTML	= 1<<4,
+    /**
+     * Serialize HTML documents as XML.
+     */
+    XML_SAVE_AS_XML     = 1<<5,
+    /**
+     * Serialize XML documents as HTML.
+     */
+    XML_SAVE_AS_HTML    = 1<<6,
+    /**
+     * Format with non-significant whitespace.
+     * TODO: What does this mean?
+     */
+    XML_SAVE_WSNONSIG   = 1<<7,
+    /**
+     * Always emit empty tags. This is the default unless the
+     * deprecated thread-local setting xmlSaveNoEmptyTags is
+     * set to 1.
+     *
+     * @since 2.14
+     */
+    XML_SAVE_EMPTY      = 1<<8,
+    /**
+     * Don't indent output when formatting.
+     *
+     * @since 2.14
+     */
+    XML_SAVE_NO_INDENT  = 1<<9,
+    /**
+     * Always indent output when formatting. This is the default
+     * unless the deprecated thread-local setting
+     * xmlIndentTreeOutput is set to 0.
+     *
+     * @since 2.14
+     */
+    XML_SAVE_INDENT     = 1<<10
 } xmlSaveOption;
 
-
+/** XML and HTML serializer */
 typedef struct _xmlSaveCtxt xmlSaveCtxt;
 typedef xmlSaveCtxt *xmlSaveCtxtPtr;
 
-XMLPUBFUN xmlSaveCtxtPtr
+XMLPUBFUN xmlSaveCtxt *
 		xmlSaveToFd		(int fd,
 					 const char *encoding,
 					 int options);
-XMLPUBFUN xmlSaveCtxtPtr
+XMLPUBFUN xmlSaveCtxt *
 		xmlSaveToFilename	(const char *filename,
 					 const char *encoding,
 					 int options);
 
-XMLPUBFUN xmlSaveCtxtPtr
-		xmlSaveToBuffer		(xmlBufferPtr buffer,
+XMLPUBFUN xmlSaveCtxt *
+		xmlSaveToBuffer		(xmlBuffer *buffer,
 					 const char *encoding,
 					 int options);
 
-XMLPUBFUN xmlSaveCtxtPtr
+XMLPUBFUN xmlSaveCtxt *
 		xmlSaveToIO		(xmlOutputWriteCallback iowrite,
 					 xmlOutputCloseCallback ioclose,
 					 void *ioctx,
@@ -67,28 +112,28 @@ XMLPUBFUN xmlSaveCtxtPtr
 					 int options);
 
 XMLPUBFUN long
-		xmlSaveDoc		(xmlSaveCtxtPtr ctxt,
-					 xmlDocPtr doc);
+		xmlSaveDoc		(xmlSaveCtxt *ctxt,
+					 xmlDoc *doc);
 XMLPUBFUN long
-		xmlSaveTree		(xmlSaveCtxtPtr ctxt,
-					 xmlNodePtr node);
+		xmlSaveTree		(xmlSaveCtxt *ctxt,
+					 xmlNode *node);
 
 XMLPUBFUN int
-		xmlSaveFlush		(xmlSaveCtxtPtr ctxt);
+		xmlSaveFlush		(xmlSaveCtxt *ctxt);
 XMLPUBFUN int
-		xmlSaveClose		(xmlSaveCtxtPtr ctxt);
+		xmlSaveClose		(xmlSaveCtxt *ctxt);
 XMLPUBFUN xmlParserErrors
-		xmlSaveFinish		(xmlSaveCtxtPtr ctxt);
+		xmlSaveFinish		(xmlSaveCtxt *ctxt);
 XMLPUBFUN int
-		xmlSaveSetIndentString	(xmlSaveCtxtPtr ctxt,
+		xmlSaveSetIndentString	(xmlSaveCtxt *ctxt,
 					 const char *indent);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlSaveSetEscape	(xmlSaveCtxtPtr ctxt,
+		xmlSaveSetEscape	(xmlSaveCtxt *ctxt,
 					 xmlCharEncodingOutputFunc escape);
 XML_DEPRECATED
 XMLPUBFUN int
-		xmlSaveSetAttrEscape	(xmlSaveCtxtPtr ctxt,
+		xmlSaveSetAttrEscape	(xmlSaveCtxt *ctxt,
 					 xmlCharEncodingOutputFunc escape);
 
 XML_DEPRECATED
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlschemas.h 2.15.0+dfsg-0.3/include/libxml/xmlschemas.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlschemas.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlschemas.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: incomplete XML Schemas structure implementation
- * Description: interface to the XML Schemas handling and schema validity
+/**
+ * @file
+ * 
+ * @brief incomplete XML Schemas structure implementation
+ * 
+ * interface to the XML Schemas handling and schema validity
  *              checking, it is incomplete right now.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -64,8 +67,6 @@ typedef enum {
 * options below.
 */
 /**
- * xmlSchemaValidOption:
- *
  * This is the set of XML Schema validation options.
  */
 typedef enum {
@@ -82,54 +83,47 @@ typedef enum {
 	* xsi:noNamespaceSchemaLocation
 */
 
-/**
- * The schemas related types are kept internal
- */
+/** XML schema */
 typedef struct _xmlSchema xmlSchema;
 typedef xmlSchema *xmlSchemaPtr;
 
 /**
- * xmlSchemaValidityErrorFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of an error callback from an XSD validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlSchemaValidityErrorFunc)
                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
- * xmlSchemaValidityWarningFunc:
- * @ctx: the validation context
- * @msg: the message
- * @...: extra arguments
- *
  * Signature of a warning callback from an XSD validation
+ *
+ * @param ctx  the validation context
+ * @param msg  the message
+ * @param ... extra arguments
  */
 typedef void (*xmlSchemaValidityWarningFunc)
                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
-/**
- * A schemas validation context
- */
+/** Schema parser context */
 typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
 typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
 
+/** Schema validation context */
 typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
 typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
 
 /**
- * xmlSchemaValidityLocatorFunc:
- * @ctx: user provided context
- * @file: returned file information
- * @line: returned line information
- *
  * A schemas validation locator, a callback called by the validator.
  * This is used when file or node information are not available
  * to find out what file and line number are affected
  *
- * Returns: 0 in case of success and -1 in case of error
+ * @param ctx  user provided context
+ * @param file  returned file information
+ * @param line  returned line information
+ * @returns 0 in case of success and -1 in case of error
  */
 
 typedef int (*xmlSchemaValidityLocatorFunc) (void *ctx,
@@ -138,111 +132,111 @@ typedef int (*xmlSchemaValidityLocatorFu
 /*
  * Interfaces for parsing.
  */
-XMLPUBFUN xmlSchemaParserCtxtPtr
+XMLPUBFUN xmlSchemaParserCtxt *
 	    xmlSchemaNewParserCtxt	(const char *URL);
-XMLPUBFUN xmlSchemaParserCtxtPtr
+XMLPUBFUN xmlSchemaParserCtxt *
 	    xmlSchemaNewMemParserCtxt	(const char *buffer,
 					 int size);
-XMLPUBFUN xmlSchemaParserCtxtPtr
-	    xmlSchemaNewDocParserCtxt	(xmlDocPtr doc);
+XMLPUBFUN xmlSchemaParserCtxt *
+	    xmlSchemaNewDocParserCtxt	(xmlDoc *doc);
 XMLPUBFUN void
-	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxtPtr ctxt);
+	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxt *ctxt);
 XMLPUBFUN void
-	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
+	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxt *ctxt,
 					 xmlSchemaValidityErrorFunc err,
 					 xmlSchemaValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN void
-	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
+	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxt *ctxt,
 					 xmlStructuredErrorFunc serror,
 					 void *ctx);
 XMLPUBFUN int
-	    xmlSchemaGetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
+	    xmlSchemaGetParserErrors	(xmlSchemaParserCtxt *ctxt,
 					xmlSchemaValidityErrorFunc * err,
 					xmlSchemaValidityWarningFunc * warn,
 					void **ctx);
 XMLPUBFUN void
-	    xmlSchemaSetResourceLoader	(xmlSchemaParserCtxtPtr ctxt,
+	    xmlSchemaSetResourceLoader	(xmlSchemaParserCtxt *ctxt,
 					 xmlResourceLoader loader,
 					 void *data);
 XMLPUBFUN int
-	    xmlSchemaIsValid		(xmlSchemaValidCtxtPtr ctxt);
+	    xmlSchemaIsValid		(xmlSchemaValidCtxt *ctxt);
 
-XMLPUBFUN xmlSchemaPtr
-	    xmlSchemaParse		(xmlSchemaParserCtxtPtr ctxt);
+XMLPUBFUN xmlSchema *
+	    xmlSchemaParse		(xmlSchemaParserCtxt *ctxt);
 XMLPUBFUN void
-	    xmlSchemaFree		(xmlSchemaPtr schema);
+	    xmlSchemaFree		(xmlSchema *schema);
 #ifdef LIBXML_DEBUG_ENABLED
 XMLPUBFUN void
 	    xmlSchemaDump		(FILE *output,
-					 xmlSchemaPtr schema);
+					 xmlSchema *schema);
 #endif /* LIBXML_DEBUG_ENABLED */
 /*
  * Interfaces for validating
  */
 XMLPUBFUN void
-	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
+	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxt *ctxt,
 					 xmlSchemaValidityErrorFunc err,
 					 xmlSchemaValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN void
-	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
+	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxt *ctxt,
 					 xmlStructuredErrorFunc serror,
 					 void *ctx);
 XMLPUBFUN int
-	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
+	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxt *ctxt,
 					 xmlSchemaValidityErrorFunc *err,
 					 xmlSchemaValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN int
-	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxtPtr ctxt,
+	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxt *ctxt,
 					 int options);
 XMLPUBFUN void
-            xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt,
+            xmlSchemaValidateSetFilename(xmlSchemaValidCtxt *vctxt,
 	                                 const char *filename);
 XMLPUBFUN int
-	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
+	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxt *ctxt);
 
-XMLPUBFUN xmlSchemaValidCtxtPtr
-	    xmlSchemaNewValidCtxt	(xmlSchemaPtr schema);
+XMLPUBFUN xmlSchemaValidCtxt *
+	    xmlSchemaNewValidCtxt	(xmlSchema *schema);
 XMLPUBFUN void
-	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxtPtr ctxt);
+	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxt *ctxt);
 XMLPUBFUN int
-	    xmlSchemaValidateDoc	(xmlSchemaValidCtxtPtr ctxt,
-					 xmlDocPtr instance);
+	    xmlSchemaValidateDoc	(xmlSchemaValidCtxt *ctxt,
+					 xmlDoc *instance);
 XMLPUBFUN int
-            xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
-			                 xmlNodePtr elem);
+            xmlSchemaValidateOneElement (xmlSchemaValidCtxt *ctxt,
+			                 xmlNode *elem);
 XMLPUBFUN int
-	    xmlSchemaValidateStream	(xmlSchemaValidCtxtPtr ctxt,
-					 xmlParserInputBufferPtr input,
+	    xmlSchemaValidateStream	(xmlSchemaValidCtxt *ctxt,
+					 xmlParserInputBuffer *input,
 					 xmlCharEncoding enc,
 					 const xmlSAXHandler *sax,
 					 void *user_data);
 XMLPUBFUN int
-	    xmlSchemaValidateFile	(xmlSchemaValidCtxtPtr ctxt,
+	    xmlSchemaValidateFile	(xmlSchemaValidCtxt *ctxt,
 					 const char * filename,
 					 int options);
 
-XMLPUBFUN xmlParserCtxtPtr
-	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
+XMLPUBFUN xmlParserCtxt *
+	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxt *ctxt);
 
-/*
+/**
  * Interface to insert Schemas SAX validation in a SAX stream
  */
 typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
 typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
 
-XMLPUBFUN xmlSchemaSAXPlugPtr
-            xmlSchemaSAXPlug		(xmlSchemaValidCtxtPtr ctxt,
-					 xmlSAXHandlerPtr *sax,
+XMLPUBFUN xmlSchemaSAXPlugStruct *
+            xmlSchemaSAXPlug		(xmlSchemaValidCtxt *ctxt,
+					 xmlSAXHandler **sax,
 					 void **user_data);
 XMLPUBFUN int
-            xmlSchemaSAXUnplug		(xmlSchemaSAXPlugPtr plug);
+            xmlSchemaSAXUnplug		(xmlSchemaSAXPlugStruct *plug);
 
 
 XMLPUBFUN void
-            xmlSchemaValidateSetLocator	(xmlSchemaValidCtxtPtr vctxt,
+            xmlSchemaValidateSetLocator	(xmlSchemaValidCtxt *vctxt,
 					 xmlSchemaValidityLocatorFunc f,
 					 void *ctxt);
 
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlschemastypes.h 2.15.0+dfsg-0.3/include/libxml/xmlschemastypes.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlschemastypes.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlschemastypes.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: implementation of XML Schema Datatypes
- * Description: module providing the XML Schema Datatypes implementation
+/**
+ * @file
+ * 
+ * @brief implementation of XML Schema Datatypes
+ * 
+ * module providing the XML Schema Datatypes implementation
  *              both definition and validity checking
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 
@@ -23,6 +26,9 @@
 extern "C" {
 #endif
 
+/**
+ * Schema whitespace value type
+ */
 typedef enum {
     XML_SCHEMA_WHITESPACE_UNKNOWN = 0,
     XML_SCHEMA_WHITESPACE_PRESERVE = 1,
@@ -35,114 +41,114 @@ XMLPUBFUN int
 XML_DEPRECATED
 XMLPUBFUN void
 		xmlSchemaCleanupTypes		(void);
-XMLPUBFUN xmlSchemaTypePtr
+XMLPUBFUN xmlSchemaType *
 		xmlSchemaGetPredefinedType	(const xmlChar *name,
 						 const xmlChar *ns);
 XMLPUBFUN int
-		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
+		xmlSchemaValidatePredefinedType	(xmlSchemaType *type,
 						 const xmlChar *value,
-						 xmlSchemaValPtr *val);
+						 xmlSchemaVal **val);
 XMLPUBFUN int
-		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
+		xmlSchemaValPredefTypeNode	(xmlSchemaType *type,
 						 const xmlChar *value,
-						 xmlSchemaValPtr *val,
-						 xmlNodePtr node);
+						 xmlSchemaVal **val,
+						 xmlNode *node);
 XMLPUBFUN int
-		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
-						 xmlSchemaFacetPtr facet,
+		xmlSchemaValidateFacet		(xmlSchemaType *base,
+						 xmlSchemaFacet *facet,
 						 const xmlChar *value,
-						 xmlSchemaValPtr val);
+						 xmlSchemaVal *val);
 XMLPUBFUN int
-		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
+		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacet *facet,
 						 xmlSchemaWhitespaceValueType fws,
 						 xmlSchemaValType valType,
 						 const xmlChar *value,
-						 xmlSchemaValPtr val,
+						 xmlSchemaVal *val,
 						 xmlSchemaWhitespaceValueType ws);
 XMLPUBFUN void
-		xmlSchemaFreeValue		(xmlSchemaValPtr val);
-XMLPUBFUN xmlSchemaFacetPtr
+		xmlSchemaFreeValue		(xmlSchemaVal *val);
+XMLPUBFUN xmlSchemaFacet *
 		xmlSchemaNewFacet		(void);
 XMLPUBFUN int
-		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
-						 xmlSchemaTypePtr typeDecl,
-						 xmlSchemaParserCtxtPtr ctxt,
+		xmlSchemaCheckFacet		(xmlSchemaFacet *facet,
+						 xmlSchemaType *typeDecl,
+						 xmlSchemaParserCtxt *ctxt,
 						 const xmlChar *name);
 XMLPUBFUN void
-		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
+		xmlSchemaFreeFacet		(xmlSchemaFacet *facet);
 XMLPUBFUN int
-		xmlSchemaCompareValues		(xmlSchemaValPtr x,
-						 xmlSchemaValPtr y);
-XMLPUBFUN xmlSchemaTypePtr
-    xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
+		xmlSchemaCompareValues		(xmlSchemaVal *x,
+						 xmlSchemaVal *y);
+XMLPUBFUN xmlSchemaType *
+    xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaType *type);
 XMLPUBFUN int
-    xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
+    xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacet *facet,
 						 const xmlChar *value,
 						 unsigned long actualLen,
 						 unsigned long *expectedLen);
-XMLPUBFUN xmlSchemaTypePtr
+XMLPUBFUN xmlSchemaType *
 		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
 XMLPUBFUN int
-		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type,
+		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaType *type,
 						 int facetType);
 XMLPUBFUN xmlChar *
 		xmlSchemaCollapseString		(const xmlChar *value);
 XMLPUBFUN xmlChar *
 		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
 XMLPUBFUN unsigned long 
-		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
+		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacet *facet);
 XMLPUBFUN int
-		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type,
-						 xmlSchemaFacetPtr facet,
+		xmlSchemaValidateLengthFacet	(xmlSchemaType *type,
+						 xmlSchemaFacet *facet,
 						 const xmlChar *value,
-						 xmlSchemaValPtr val,
+						 xmlSchemaVal *val,
 						 unsigned long *length);
 XMLPUBFUN int
-		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
+		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacet *facet,
 						  xmlSchemaValType valType,
 						  const xmlChar *value,
-						  xmlSchemaValPtr val,
+						  xmlSchemaVal *val,
 						  unsigned long *length,
 						  xmlSchemaWhitespaceValueType ws);
 XMLPUBFUN int
-		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
+		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaType *type,
 						 const xmlChar *value,
-						 xmlSchemaValPtr *val,
-						 xmlNodePtr node);
+						 xmlSchemaVal **val,
+						 xmlNode *node);
 XMLPUBFUN int
-		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
+		xmlSchemaGetCanonValue		(xmlSchemaVal *val,
 						 const xmlChar **retValue);
 XMLPUBFUN int
-		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,
+		xmlSchemaGetCanonValueWhtsp	(xmlSchemaVal *val,
 						 const xmlChar **retValue,
 						 xmlSchemaWhitespaceValueType ws);
 XMLPUBFUN int
-		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
-						 xmlSchemaValPtr cur);
-XMLPUBFUN xmlSchemaValPtr
-		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
+		xmlSchemaValueAppend		(xmlSchemaVal *prev,
+						 xmlSchemaVal *cur);
+XMLPUBFUN xmlSchemaVal *
+		xmlSchemaValueGetNext		(xmlSchemaVal *cur);
 XMLPUBFUN const xmlChar *
-		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
+		xmlSchemaValueGetAsString	(xmlSchemaVal *val);
 XMLPUBFUN int
-		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
-XMLPUBFUN xmlSchemaValPtr
+		xmlSchemaValueGetAsBoolean	(xmlSchemaVal *val);
+XMLPUBFUN xmlSchemaVal *
 		xmlSchemaNewStringValue		(xmlSchemaValType type,
 						 const xmlChar *value);
-XMLPUBFUN xmlSchemaValPtr
+XMLPUBFUN xmlSchemaVal *
 		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
 						 const xmlChar *ns);
-XMLPUBFUN xmlSchemaValPtr
+XMLPUBFUN xmlSchemaVal *
 		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
 						 const xmlChar *localName);
 XMLPUBFUN int
-		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
+		xmlSchemaCompareValuesWhtsp	(xmlSchemaVal *x,
 						 xmlSchemaWhitespaceValueType xws,
-						 xmlSchemaValPtr y,
+						 xmlSchemaVal *y,
 						 xmlSchemaWhitespaceValueType yws);
-XMLPUBFUN xmlSchemaValPtr
-		xmlSchemaCopyValue		(xmlSchemaValPtr val);
+XMLPUBFUN xmlSchemaVal *
+		xmlSchemaCopyValue		(xmlSchemaVal *val);
 XMLPUBFUN xmlSchemaValType
-		xmlSchemaGetValType		(xmlSchemaValPtr val);
+		xmlSchemaGetValType		(xmlSchemaVal *val);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlstring.h 2.15.0+dfsg-0.3/include/libxml/xmlstring.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlstring.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlstring.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,11 +1,14 @@
-/*
- * Summary: set of routines to process strings
- * Description: type and interfaces needed for the internal string handling
+/**
+ * @file
+ * 
+ * @brief set of routines to process strings
+ * 
+ * type and interfaces needed for the internal string handling
  *              of the library, especially UTF8 processing.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_STRING_H__
@@ -19,8 +22,6 @@ extern "C" {
 #endif
 
 /**
- * xmlChar:
- *
  * This is a basic byte in an UTF-8 encoded string.
  * It's unsigned allowing to pinpoint case where char * are assigned
  * to xmlChar * (possibly making serialization back impossible).
@@ -28,8 +29,6 @@ extern "C" {
 typedef unsigned char xmlChar;
 
 /**
- * BAD_CAST:
- *
  * Macro to cast a string to an xmlChar * when one know its safe.
  */
 #define BAD_CAST (xmlChar *)
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlunicode.h 2.15.0+dfsg-0.3/include/libxml/xmlunicode.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlunicode.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlunicode.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,9 @@
-/*
- * Summary: Unicode character APIs
- * Description: API for the Unicode character APIs
+/**
+ * @file
+ * 
+ * @brief Unicode character APIs
+ * 
+ * API for the Unicode character APIs
  *
  * Deprecated, don't use.
  */
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlversion.h.in 2.15.0+dfsg-0.3/include/libxml/xmlversion.h.in
--- 2.14.6+dfsg-0.1/include/libxml/xmlversion.h.in	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlversion.h.in	2025-09-15 11:55:59.000000000 +0000
@@ -1,330 +1,253 @@
-/*
- * Summary: compile-time version information
- * Description: compile-time version information for the XML library
+/**
+ * @file
+ *
+ * @brief compile-time version information
+ *
+ * compile-time version information for the XML library
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_VERSION_H__
 #define __XML_VERSION_H__
 
 /**
- * LIBXML_DOTTED_VERSION:
- *
  * the version string like "1.2.3"
  */
 #define LIBXML_DOTTED_VERSION "@VERSION@"
 
 /**
- * LIBXML_VERSION:
- *
  * the version number: 1.2.3 value is 10203
  */
 #define LIBXML_VERSION @LIBXML_VERSION_NUMBER@
 
 /**
- * LIBXML_VERSION_STRING:
- *
  * the version number string, 1.2.3 value is "10203"
  */
 #define LIBXML_VERSION_STRING "@LIBXML_VERSION_NUMBER@"
 
 /**
- * LIBXML_VERSION_EXTRA:
- *
  * extra version information, used to show a git commit description
  */
 #define LIBXML_VERSION_EXTRA "@LIBXML_VERSION_EXTRA@"
 
 /**
- * LIBXML_TEST_VERSION:
- *
  * 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(@LIBXML_VERSION_NUMBER@);
 
+#if @WITH_THREADS@
 /**
- * LIBXML_THREAD_ENABLED:
- *
  * Whether the thread support is configured in
  */
-#if @WITH_THREADS@
 #define LIBXML_THREAD_ENABLED
 #endif
 
+#if @WITH_THREAD_ALLOC@
 /**
- * LIBXML_THREAD_ALLOC_ENABLED:
- *
  * Whether the allocation hooks are per-thread
  */
-#if @WITH_THREAD_ALLOC@
 #define LIBXML_THREAD_ALLOC_ENABLED
 #endif
 
 /**
- * LIBXML_TREE_ENABLED:
- *
  * Always enabled since 2.14.0
  */
 #define LIBXML_TREE_ENABLED
 
+#if @WITH_OUTPUT@
 /**
- * LIBXML_OUTPUT_ENABLED:
- *
  * Whether the serialization/saving support is configured in
  */
-#if @WITH_OUTPUT@
 #define LIBXML_OUTPUT_ENABLED
 #endif
 
+#if @WITH_PUSH@
 /**
- * LIBXML_PUSH_ENABLED:
- *
  * Whether the push parsing interfaces are configured in
  */
-#if @WITH_PUSH@
 #define LIBXML_PUSH_ENABLED
 #endif
 
+#if @WITH_READER@
 /**
- * LIBXML_READER_ENABLED:
- *
  * Whether the xmlReader parsing interface is configured in
  */
-#if @WITH_READER@
 #define LIBXML_READER_ENABLED
 #endif
 
+#if @WITH_PATTERN@
 /**
- * LIBXML_PATTERN_ENABLED:
- *
  * Whether the xmlPattern node selection interface is configured in
  */
-#if @WITH_PATTERN@
 #define LIBXML_PATTERN_ENABLED
 #endif
 
+#if @WITH_WRITER@
 /**
- * LIBXML_WRITER_ENABLED:
- *
  * Whether the xmlWriter saving interface is configured in
  */
-#if @WITH_WRITER@
 #define LIBXML_WRITER_ENABLED
 #endif
 
+#if @WITH_SAX1@
 /**
- * LIBXML_SAX1_ENABLED:
- *
  * Whether the older SAX1 interface is configured in
  */
-#if @WITH_SAX1@
 #define LIBXML_SAX1_ENABLED
 #endif
 
+#if @WITH_HTTP@
 /**
- * LIBXML_HTTP_ENABLED:
- *
- * Whether the HTTP support is configured in
+ * HTTP support was removed in 2.15
  */
-#if @WITH_HTTP@
-#define LIBXML_HTTP_ENABLED
+#define LIBXML_HTTP_STUBS_ENABLED
 #endif
 
+#if @WITH_VALID@
 /**
- * LIBXML_VALID_ENABLED:
- *
  * Whether the DTD validation support is configured in
  */
-#if @WITH_VALID@
 #define LIBXML_VALID_ENABLED
 #endif
 
+#if @WITH_HTML@
 /**
- * LIBXML_HTML_ENABLED:
- *
  * Whether the HTML support is configured in
  */
-#if @WITH_HTML@
 #define LIBXML_HTML_ENABLED
 #endif
 
-/**
- * LIBXML_LEGACY_ENABLED:
- *
+/*
  * Removed in 2.14
  */
 #undef LIBXML_LEGACY_ENABLED
 
+#if @WITH_C14N@
 /**
- * LIBXML_C14N_ENABLED:
- *
  * Whether the Canonicalization support is configured in
  */
-#if @WITH_C14N@
 #define LIBXML_C14N_ENABLED
 #endif
 
+#if @WITH_CATALOG@
 /**
- * LIBXML_CATALOG_ENABLED:
- *
  * Whether the Catalog support is configured in
  */
-#if @WITH_CATALOG@
 #define LIBXML_CATALOG_ENABLED
+#define LIBXML_SGML_CATALOG_ENABLED
 #endif
 
+#if @WITH_XPATH@
 /**
- * LIBXML_XPATH_ENABLED:
- *
  * Whether XPath is configured in
  */
-#if @WITH_XPATH@
 #define LIBXML_XPATH_ENABLED
 #endif
 
+#if @WITH_XPTR@
 /**
- * LIBXML_XPTR_ENABLED:
- *
  * Whether XPointer is configured in
  */
-#if @WITH_XPTR@
 #define LIBXML_XPTR_ENABLED
 #endif
 
+#if @WITH_XINCLUDE@
 /**
- * LIBXML_XINCLUDE_ENABLED:
- *
  * Whether XInclude is configured in
  */
-#if @WITH_XINCLUDE@
 #define LIBXML_XINCLUDE_ENABLED
 #endif
 
+#if @WITH_ICONV@
 /**
- * LIBXML_ICONV_ENABLED:
- *
  * Whether iconv support is available
  */
-#if @WITH_ICONV@
 #define LIBXML_ICONV_ENABLED
 #endif
 
+#if @WITH_ICU@
 /**
- * LIBXML_ICU_ENABLED:
- *
  * Whether icu support is available
  */
-#if @WITH_ICU@
 #define LIBXML_ICU_ENABLED
 #endif
 
+#if @WITH_ISO8859X@
 /**
- * LIBXML_ISO8859X_ENABLED:
- *
  * Whether ISO-8859-* support is made available in case iconv is not
  */
-#if @WITH_ISO8859X@
 #define LIBXML_ISO8859X_ENABLED
 #endif
 
+#if @WITH_DEBUG@
 /**
- * LIBXML_DEBUG_ENABLED:
- *
  * Whether Debugging module is configured in
  */
-#if @WITH_DEBUG@
 #define LIBXML_DEBUG_ENABLED
 #endif
 
-/**
- * LIBXML_UNICODE_ENABLED:
- *
+/*
  * Removed in 2.14
  */
 #undef LIBXML_UNICODE_ENABLED
 
+#if @WITH_REGEXPS@
 /**
- * LIBXML_REGEXP_ENABLED:
- *
  * Whether the regular expressions interfaces are compiled in
  */
-#if @WITH_REGEXPS@
 #define LIBXML_REGEXP_ENABLED
 #endif
 
+#if @WITH_REGEXPS@
 /**
- * LIBXML_AUTOMATA_ENABLED:
- *
  * Whether the automata interfaces are compiled in
  */
-#if @WITH_REGEXPS@
 #define LIBXML_AUTOMATA_ENABLED
 #endif
 
+#if @WITH_RELAXNG@
 /**
- * LIBXML_RELAXNG_ENABLED:
- *
  * Whether the RelaxNG validation interfaces are compiled in
  */
-#if @WITH_RELAXNG@
 #define LIBXML_RELAXNG_ENABLED
 #endif
 
+#if @WITH_SCHEMAS@
 /**
- * LIBXML_SCHEMAS_ENABLED:
- *
  * Whether the Schemas validation interfaces are compiled in
  */
-#if @WITH_SCHEMAS@
 #define LIBXML_SCHEMAS_ENABLED
 #endif
 
+#if @WITH_SCHEMATRON@
 /**
- * LIBXML_SCHEMATRON_ENABLED:
- *
  * Whether the Schematron validation interfaces are compiled in
  */
-#if @WITH_SCHEMATRON@
 #define LIBXML_SCHEMATRON_ENABLED
 #endif
 
+#if @WITH_MODULES@
 /**
- * LIBXML_MODULES_ENABLED:
- *
  * Whether the module interfaces are compiled in
  */
-#if @WITH_MODULES@
 #define LIBXML_MODULES_ENABLED
 /**
- * LIBXML_MODULE_EXTENSION:
- *
  * the string suffix used by dynamic modules (usually shared libraries)
  */
 #define LIBXML_MODULE_EXTENSION "@MODULE_EXTENSION@" 
 #endif
 
+#if @WITH_ZLIB@
 /**
- * LIBXML_ZLIB_ENABLED:
- *
  * Whether the Zlib support is compiled in
  */
-#if @WITH_ZLIB@
 #define LIBXML_ZLIB_ENABLED
 #endif
 
-/**
- * LIBXML_LZMA_ENABLED:
- *
- * Whether the Lzma support is compiled in
- */
-#if @WITH_LZMA@
-#define LIBXML_LZMA_ENABLED
-#endif
-
 #include <libxml/xmlexports.h>
 
 #endif
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xmlwriter.h 2.15.0+dfsg-0.3/include/libxml/xmlwriter.h
--- 2.14.6+dfsg-0.1/include/libxml/xmlwriter.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xmlwriter.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,10 +1,13 @@
-/*
- * Summary: text writing API for XML
- * Description: text writing API for XML
+/**
+ * @file
+ * 
+ * @brief text writing API for XML
+ * 
+ * text writing API for XML
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Alfred Mickautsch <alfred@mickautsch.de>
+ * @author Alfred Mickautsch
  */
 
 #ifndef __XML_XMLWRITER_H__
@@ -23,26 +26,27 @@
 extern "C" {
 #endif
 
+    /** Writer object */
     typedef struct _xmlTextWriter xmlTextWriter;
     typedef xmlTextWriter *xmlTextWriterPtr;
 
 /*
  * Constructors & Destructor
  */
-    XMLPUBFUN xmlTextWriterPtr
-        xmlNewTextWriter(xmlOutputBufferPtr out);
-    XMLPUBFUN xmlTextWriterPtr
+    XMLPUBFUN xmlTextWriter *
+        xmlNewTextWriter(xmlOutputBuffer *out);
+    XMLPUBFUN xmlTextWriter *
         xmlNewTextWriterFilename(const char *uri, int compression);
-    XMLPUBFUN xmlTextWriterPtr
-        xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
-    XMLPUBFUN xmlTextWriterPtr
-        xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
-    XMLPUBFUN xmlTextWriterPtr
-        xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
-    XMLPUBFUN xmlTextWriterPtr
-        xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node,
+    XMLPUBFUN xmlTextWriter *
+        xmlNewTextWriterMemory(xmlBuffer *buf, int compression);
+    XMLPUBFUN xmlTextWriter *
+        xmlNewTextWriterPushParser(xmlParserCtxt *ctxt, int compression);
+    XMLPUBFUN xmlTextWriter *
+        xmlNewTextWriterDoc(xmlDoc ** doc, int compression);
+    XMLPUBFUN xmlTextWriter *
+        xmlNewTextWriterTree(xmlDoc *doc, xmlNode *node,
                              int compression);
-    XMLPUBFUN void xmlFreeTextWriter(xmlTextWriterPtr writer);
+    XMLPUBFUN void xmlFreeTextWriter(xmlTextWriter *writer);
 
 /*
  * Functions
@@ -53,29 +57,29 @@ extern "C" {
  * Document
  */
     XMLPUBFUN int
-        xmlTextWriterStartDocument(xmlTextWriterPtr writer,
+        xmlTextWriterStartDocument(xmlTextWriter *writer,
                                    const char *version,
                                    const char *encoding,
                                    const char *standalone);
-    XMLPUBFUN int xmlTextWriterEndDocument(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndDocument(xmlTextWriter *
                                                    writer);
 
 /*
  * Comments
  */
-    XMLPUBFUN int xmlTextWriterStartComment(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterStartComment(xmlTextWriter *
                                                     writer);
-    XMLPUBFUN int xmlTextWriterEndComment(xmlTextWriterPtr writer);
+    XMLPUBFUN int xmlTextWriterEndComment(xmlTextWriter *writer);
     XMLPUBFUN int
-        xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatComment(xmlTextWriter *writer,
                                         const char *format, ...)
 					LIBXML_ATTR_FORMAT(2,3);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatComment(xmlTextWriter *writer,
                                          const char *format,
                                          va_list argptr)
 					 LIBXML_ATTR_FORMAT(2,0);
-    XMLPUBFUN int xmlTextWriterWriteComment(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteComment(xmlTextWriter *
                                                     writer,
                                                     const xmlChar *
                                                     content);
@@ -84,54 +88,54 @@ extern "C" {
  * Elements
  */
     XMLPUBFUN int
-        xmlTextWriterStartElement(xmlTextWriterPtr writer,
+        xmlTextWriterStartElement(xmlTextWriter *writer,
                                   const xmlChar * name);
-    XMLPUBFUN int xmlTextWriterStartElementNS(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterStartElementNS(xmlTextWriter *
                                                       writer,
                                                       const xmlChar *
                                                       prefix,
                                                       const xmlChar * name,
                                                       const xmlChar *
                                                       namespaceURI);
-    XMLPUBFUN int xmlTextWriterEndElement(xmlTextWriterPtr writer);
-    XMLPUBFUN int xmlTextWriterFullEndElement(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndElement(xmlTextWriter *writer);
+    XMLPUBFUN int xmlTextWriterFullEndElement(xmlTextWriter *
                                                       writer);
 
 /*
  * Elements conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatElement(xmlTextWriter *writer,
                                         const xmlChar * name,
                                         const char *format, ...)
 					LIBXML_ATTR_FORMAT(3,4);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatElement(xmlTextWriter *writer,
                                          const xmlChar * name,
                                          const char *format,
                                          va_list argptr)
 					 LIBXML_ATTR_FORMAT(3,0);
-    XMLPUBFUN int xmlTextWriterWriteElement(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteElement(xmlTextWriter *
                                                     writer,
                                                     const xmlChar * name,
                                                     const xmlChar *
                                                     content);
     XMLPUBFUN int
-        xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatElementNS(xmlTextWriter *writer,
                                           const xmlChar * prefix,
                                           const xmlChar * name,
                                           const xmlChar * namespaceURI,
                                           const char *format, ...)
 					  LIBXML_ATTR_FORMAT(5,6);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatElementNS(xmlTextWriter *writer,
                                            const xmlChar * prefix,
                                            const xmlChar * name,
                                            const xmlChar * namespaceURI,
                                            const char *format,
                                            va_list argptr)
 					   LIBXML_ATTR_FORMAT(5,0);
-    XMLPUBFUN int xmlTextWriterWriteElementNS(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteElementNS(xmlTextWriter *
                                                       writer,
                                                       const xmlChar *
                                                       prefix,
@@ -145,37 +149,37 @@ extern "C" {
  * Text
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatRaw(xmlTextWriter *writer,
                                     const char *format, ...)
 				    LIBXML_ATTR_FORMAT(2,3);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatRaw(xmlTextWriter *writer,
                                      const char *format, va_list argptr)
 				     LIBXML_ATTR_FORMAT(2,0);
     XMLPUBFUN int
-        xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
+        xmlTextWriterWriteRawLen(xmlTextWriter *writer,
                                  const xmlChar * content, int len);
     XMLPUBFUN int
-        xmlTextWriterWriteRaw(xmlTextWriterPtr writer,
+        xmlTextWriterWriteRaw(xmlTextWriter *writer,
                               const xmlChar * content);
-    XMLPUBFUN int xmlTextWriterWriteFormatString(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteFormatString(xmlTextWriter *
                                                          writer,
                                                          const char
                                                          *format, ...)
 							 LIBXML_ATTR_FORMAT(2,3);
-    XMLPUBFUN int xmlTextWriterWriteVFormatString(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteVFormatString(xmlTextWriter *
                                                           writer,
                                                           const char
                                                           *format,
                                                           va_list argptr)
 							  LIBXML_ATTR_FORMAT(2,0);
-    XMLPUBFUN int xmlTextWriterWriteString(xmlTextWriterPtr writer,
+    XMLPUBFUN int xmlTextWriterWriteString(xmlTextWriter *writer,
                                                    const xmlChar *
                                                    content);
-    XMLPUBFUN int xmlTextWriterWriteBase64(xmlTextWriterPtr writer,
+    XMLPUBFUN int xmlTextWriterWriteBase64(xmlTextWriter *writer,
                                                    const char *data,
                                                    int start, int len);
-    XMLPUBFUN int xmlTextWriterWriteBinHex(xmlTextWriterPtr writer,
+    XMLPUBFUN int xmlTextWriterWriteBinHex(xmlTextWriter *writer,
                                                    const char *data,
                                                    int start, int len);
 
@@ -183,9 +187,9 @@ extern "C" {
  * Attributes
  */
     XMLPUBFUN int
-        xmlTextWriterStartAttribute(xmlTextWriterPtr writer,
+        xmlTextWriterStartAttribute(xmlTextWriter *writer,
                                     const xmlChar * name);
-    XMLPUBFUN int xmlTextWriterStartAttributeNS(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterStartAttributeNS(xmlTextWriter *
                                                         writer,
                                                         const xmlChar *
                                                         prefix,
@@ -193,44 +197,44 @@ extern "C" {
                                                         name,
                                                         const xmlChar *
                                                         namespaceURI);
-    XMLPUBFUN int xmlTextWriterEndAttribute(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndAttribute(xmlTextWriter *
                                                     writer);
 
 /*
  * Attributes conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatAttribute(xmlTextWriter *writer,
                                           const xmlChar * name,
                                           const char *format, ...)
 					  LIBXML_ATTR_FORMAT(3,4);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatAttribute(xmlTextWriter *writer,
                                            const xmlChar * name,
                                            const char *format,
                                            va_list argptr)
 					   LIBXML_ATTR_FORMAT(3,0);
-    XMLPUBFUN int xmlTextWriterWriteAttribute(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteAttribute(xmlTextWriter *
                                                       writer,
                                                       const xmlChar * name,
                                                       const xmlChar *
                                                       content);
     XMLPUBFUN int
-        xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatAttributeNS(xmlTextWriter *writer,
                                             const xmlChar * prefix,
                                             const xmlChar * name,
                                             const xmlChar * namespaceURI,
                                             const char *format, ...)
 					    LIBXML_ATTR_FORMAT(5,6);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatAttributeNS(xmlTextWriter *writer,
                                              const xmlChar * prefix,
                                              const xmlChar * name,
                                              const xmlChar * namespaceURI,
                                              const char *format,
                                              va_list argptr)
 					     LIBXML_ATTR_FORMAT(5,0);
-    XMLPUBFUN int xmlTextWriterWriteAttributeNS(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteAttributeNS(xmlTextWriter *
                                                         writer,
                                                         const xmlChar *
                                                         prefix,
@@ -245,94 +249,90 @@ extern "C" {
  * PI's
  */
     XMLPUBFUN int
-        xmlTextWriterStartPI(xmlTextWriterPtr writer,
+        xmlTextWriterStartPI(xmlTextWriter *writer,
                              const xmlChar * target);
-    XMLPUBFUN int xmlTextWriterEndPI(xmlTextWriterPtr writer);
+    XMLPUBFUN int xmlTextWriterEndPI(xmlTextWriter *writer);
 
 /*
  * PI conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatPI(xmlTextWriter *writer,
                                    const xmlChar * target,
                                    const char *format, ...)
 				   LIBXML_ATTR_FORMAT(3,4);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatPI(xmlTextWriter *writer,
                                     const xmlChar * target,
                                     const char *format, va_list argptr)
 				    LIBXML_ATTR_FORMAT(3,0);
     XMLPUBFUN int
-        xmlTextWriterWritePI(xmlTextWriterPtr writer,
+        xmlTextWriterWritePI(xmlTextWriter *writer,
                              const xmlChar * target,
                              const xmlChar * content);
 
 /**
- * xmlTextWriterWriteProcessingInstruction:
- *
- * This macro maps to xmlTextWriterWritePI
+ * This macro maps to #xmlTextWriterWritePI
  */
 #define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
 
 /*
  * CDATA
  */
-    XMLPUBFUN int xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
-    XMLPUBFUN int xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
+    XMLPUBFUN int xmlTextWriterStartCDATA(xmlTextWriter *writer);
+    XMLPUBFUN int xmlTextWriterEndCDATA(xmlTextWriter *writer);
 
 /*
  * CDATA conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatCDATA(xmlTextWriter *writer,
                                       const char *format, ...)
 				      LIBXML_ATTR_FORMAT(2,3);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatCDATA(xmlTextWriter *writer,
                                        const char *format, va_list argptr)
 				       LIBXML_ATTR_FORMAT(2,0);
     XMLPUBFUN int
-        xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
+        xmlTextWriterWriteCDATA(xmlTextWriter *writer,
                                 const xmlChar * content);
 
 /*
  * DTD
  */
     XMLPUBFUN int
-        xmlTextWriterStartDTD(xmlTextWriterPtr writer,
+        xmlTextWriterStartDTD(xmlTextWriter *writer,
                               const xmlChar * name,
                               const xmlChar * pubid,
                               const xmlChar * sysid);
-    XMLPUBFUN int xmlTextWriterEndDTD(xmlTextWriterPtr writer);
+    XMLPUBFUN int xmlTextWriterEndDTD(xmlTextWriter *writer);
 
 /*
  * DTD conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatDTD(xmlTextWriter *writer,
                                     const xmlChar * name,
                                     const xmlChar * pubid,
                                     const xmlChar * sysid,
                                     const char *format, ...)
 				    LIBXML_ATTR_FORMAT(5,6);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatDTD(xmlTextWriter *writer,
                                      const xmlChar * name,
                                      const xmlChar * pubid,
                                      const xmlChar * sysid,
                                      const char *format, va_list argptr)
 				     LIBXML_ATTR_FORMAT(5,0);
     XMLPUBFUN int
-        xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
+        xmlTextWriterWriteDTD(xmlTextWriter *writer,
                               const xmlChar * name,
                               const xmlChar * pubid,
                               const xmlChar * sysid,
                               const xmlChar * subset);
 
 /**
- * xmlTextWriterWriteDocType:
- *
- * this macro maps to xmlTextWriterWriteDTD
+ * this macro maps to #xmlTextWriterWriteDTD
  */
 #define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
 
@@ -340,26 +340,26 @@ extern "C" {
  * DTD element definition
  */
     XMLPUBFUN int
-        xmlTextWriterStartDTDElement(xmlTextWriterPtr writer,
+        xmlTextWriterStartDTDElement(xmlTextWriter *writer,
                                      const xmlChar * name);
-    XMLPUBFUN int xmlTextWriterEndDTDElement(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndDTDElement(xmlTextWriter *
                                                      writer);
 
 /*
  * DTD element definition conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatDTDElement(xmlTextWriter *writer,
                                            const xmlChar * name,
                                            const char *format, ...)
 					   LIBXML_ATTR_FORMAT(3,4);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatDTDElement(xmlTextWriter *writer,
                                             const xmlChar * name,
                                             const char *format,
                                             va_list argptr)
 					    LIBXML_ATTR_FORMAT(3,0);
-    XMLPUBFUN int xmlTextWriterWriteDTDElement(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteDTDElement(xmlTextWriter *
                                                        writer,
                                                        const xmlChar *
                                                        name,
@@ -370,26 +370,26 @@ extern "C" {
  * DTD attribute list definition
  */
     XMLPUBFUN int
-        xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer,
+        xmlTextWriterStartDTDAttlist(xmlTextWriter *writer,
                                      const xmlChar * name);
-    XMLPUBFUN int xmlTextWriterEndDTDAttlist(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndDTDAttlist(xmlTextWriter *
                                                      writer);
 
 /*
  * DTD attribute list definition conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatDTDAttlist(xmlTextWriter *writer,
                                            const xmlChar * name,
                                            const char *format, ...)
 					   LIBXML_ATTR_FORMAT(3,4);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriter *writer,
                                             const xmlChar * name,
                                             const char *format,
                                             va_list argptr)
 					    LIBXML_ATTR_FORMAT(3,0);
-    XMLPUBFUN int xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteDTDAttlist(xmlTextWriter *
                                                        writer,
                                                        const xmlChar *
                                                        name,
@@ -400,47 +400,47 @@ extern "C" {
  * DTD entity definition
  */
     XMLPUBFUN int
-        xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
+        xmlTextWriterStartDTDEntity(xmlTextWriter *writer,
                                     int pe, const xmlChar * name);
-    XMLPUBFUN int xmlTextWriterEndDTDEntity(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterEndDTDEntity(xmlTextWriter *
                                                     writer);
 
 /*
  * DTD entity definition conveniency functions
  */
     XMLPUBFUN int
-        xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
+        xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriter *writer,
                                                   int pe,
                                                   const xmlChar * name,
                                                   const char *format, ...)
 						  LIBXML_ATTR_FORMAT(4,5);
     XMLPUBFUN int
-        xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
+        xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriter *writer,
                                                    int pe,
                                                    const xmlChar * name,
                                                    const char *format,
                                                    va_list argptr)
 						   LIBXML_ATTR_FORMAT(4,0);
     XMLPUBFUN int
-        xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
+        xmlTextWriterWriteDTDInternalEntity(xmlTextWriter *writer,
                                             int pe,
                                             const xmlChar * name,
                                             const xmlChar * content);
     XMLPUBFUN int
-        xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
+        xmlTextWriterWriteDTDExternalEntity(xmlTextWriter *writer,
                                             int pe,
                                             const xmlChar * name,
                                             const xmlChar * pubid,
                                             const xmlChar * sysid,
                                             const xmlChar * ndataid);
     XMLPUBFUN int
-        xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr
+        xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriter *
                                                     writer,
                                                     const xmlChar * pubid,
                                                     const xmlChar * sysid,
                                                     const xmlChar *
                                                     ndataid);
-    XMLPUBFUN int xmlTextWriterWriteDTDEntity(xmlTextWriterPtr
+    XMLPUBFUN int xmlTextWriterWriteDTDEntity(xmlTextWriter *
                                                       writer, int pe,
                                                       const xmlChar * name,
                                                       const xmlChar *
@@ -456,7 +456,7 @@ extern "C" {
  * DTD notation definition
  */
     XMLPUBFUN int
-        xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
+        xmlTextWriterWriteDTDNotation(xmlTextWriter *writer,
                                       const xmlChar * name,
                                       const xmlChar * pubid,
                                       const xmlChar * sysid);
@@ -465,20 +465,20 @@ extern "C" {
  * Indentation
  */
     XMLPUBFUN int
-        xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent);
+        xmlTextWriterSetIndent(xmlTextWriter *writer, int indent);
     XMLPUBFUN int
-        xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
+        xmlTextWriterSetIndentString(xmlTextWriter *writer,
                                      const xmlChar * str);
 
     XMLPUBFUN int
-        xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar);
+        xmlTextWriterSetQuoteChar(xmlTextWriter *writer, xmlChar quotechar);
 
 
 /*
  * misc
  */
-    XMLPUBFUN int xmlTextWriterFlush(xmlTextWriterPtr writer);
-    XMLPUBFUN int xmlTextWriterClose(xmlTextWriterPtr writer);
+    XMLPUBFUN int xmlTextWriterFlush(xmlTextWriter *writer);
+    XMLPUBFUN int xmlTextWriterClose(xmlTextWriter *writer);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xpath.h 2.15.0+dfsg-0.3/include/libxml/xpath.h
--- 2.14.6+dfsg-0.1/include/libxml/xpath.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xpath.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,9 @@
-/*
- * Summary: XML Path Language implementation
- * Description: API for the XML Path Language implementation
+/**
+ * @file
+ * 
+ * @brief XML Path Language implementation
+ * 
+ * API for the XML Path Language implementation
  *
  * XML Path Language implementation
  * XPath is a language for addressing parts of an XML document,
@@ -11,9 +14,9 @@
  * W3C Recommendation 16 November 1999
  *     http://www.w3.org/TR/1999/REC-xpath-19991116
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XPATH_H__
@@ -31,8 +34,10 @@
 extern "C" {
 #endif
 
+/** XPath context */
 typedef struct _xmlXPathContext xmlXPathContext;
 typedef xmlXPathContext *xmlXPathContextPtr;
+/** XPath parser and evaluation context */
 typedef struct _xmlXPathParserContext xmlXPathParserContext;
 typedef xmlXPathParserContext *xmlXPathParserContextPtr;
 
@@ -70,29 +75,30 @@ typedef enum {
     XPATH_RECURSION_LIMIT_EXCEEDED
 } xmlXPathError;
 
-/*
- * A node-set (an unordered collection of nodes without duplicates).
- */
+/** XPath node set */
 typedef struct _xmlNodeSet xmlNodeSet;
 typedef xmlNodeSet *xmlNodeSetPtr;
+/**
+ * A node-set (an unordered collection of nodes without duplicates).
+ */
 struct _xmlNodeSet {
-    int nodeNr;			/* number of nodes in the set */
-    int nodeMax;		/* size of the array as allocated */
-    xmlNodePtr *nodeTab;	/* array of nodes in no particular order */
-    /* @@ with_ns to check whether namespace nodes should be looked at @@ */
+    /** number of nodes in the set */
+    int nodeNr;
+    /** size of the array as allocated */
+    int nodeMax;
+    /** array of nodes in no particular order */
+    xmlNode **nodeTab;
 };
 
-/*
+/**
  * An expression is evaluated to yield an object, which
  * has one of the following four basic types:
+ *
  *   - node-set
  *   - boolean
  *   - number
  *   - string
- *
- * @@ XPointer will add more types !
  */
-
 typedef enum {
     XPATH_UNDEFINED = 0,
     XPATH_NODESET = 1,
@@ -103,19 +109,28 @@ typedef enum {
     XPATH_XSLT_TREE = 9  /* An XSLT value tree, non modifiable */
 } xmlXPathObjectType;
 
-/** DOC_DISABLE */
+/** @cond IGNORE */
 #define XPATH_POINT 5
 #define XPATH_RANGE 6
 #define XPATH_LOCATIONSET 7
-/** DOC_ENABLE */
+/** @endcond */
 
+/** XPath object */
 typedef struct _xmlXPathObject xmlXPathObject;
 typedef xmlXPathObject *xmlXPathObjectPtr;
+/**
+ * An XPath object
+ */
 struct _xmlXPathObject {
+    /** object type */
     xmlXPathObjectType type;
-    xmlNodeSetPtr nodesetval;
+    /** node set */
+    xmlNodeSet *nodesetval;
+    /** boolean */
     int boolval;
+    /** number */
     double floatval;
+    /** string */
     xmlChar *stringval;
     void *user;
     int index;
@@ -123,22 +138,12 @@ struct _xmlXPathObject {
     int index2;
 };
 
-/**
- * xmlXPathConvertFunc:
- * @obj:  an XPath object
- * @type:  the number of the target type
- *
- * A conversion function is associated to a type and used to cast
- * the new type to primitive values.
- *
- * Returns -1 in case of error, 0 otherwise
- */
-typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
+/** @cond ignore */
 
 /*
- * Extra type: a name and a conversion function.
+ * unused
  */
-
+typedef int (*xmlXPathConvertFunc) (xmlXPathObject *obj, int type);
 typedef struct _xmlXPathType xmlXPathType;
 typedef xmlXPathType *xmlXPathTypePtr;
 struct _xmlXPathType {
@@ -147,31 +152,20 @@ struct _xmlXPathType {
 };
 
 /*
- * Extra variable: a name and a value.
+ * unused
  */
-
 typedef struct _xmlXPathVariable xmlXPathVariable;
 typedef xmlXPathVariable *xmlXPathVariablePtr;
 struct _xmlXPathVariable {
     const xmlChar       *name;		/* the variable name */
-    xmlXPathObjectPtr value;		/* the value */
+    xmlXPathObject *value;		/* the value */
 };
 
-/**
- * xmlXPathEvalFunc:
- * @ctxt: an XPath parser context
- * @nargs: the number of arguments passed to the function
- *
- * An XPath evaluation function, the parameters are on the XPath context stack.
- */
-
-typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
-	                         int nargs);
-
 /*
- * Extra function: a name and a evaluation function.
+ * unused
  */
-
+typedef void (*xmlXPathEvalFunc)(xmlXPathParserContext *ctxt,
+	                         int nargs);
 typedef struct _xmlXPathFunct xmlXPathFunct;
 typedef xmlXPathFunct *xmlXPathFuncPtr;
 struct _xmlXPathFunct {
@@ -179,25 +173,11 @@ struct _xmlXPathFunct {
     xmlXPathEvalFunc func;		/* the evaluation function */
 };
 
-/**
- * xmlXPathAxisFunc:
- * @ctxt:  the XPath interpreter context
- * @cur:  the previous node being explored on that axis
- *
- * 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.
- *
- * Returns the next node in that axis or NULL if at the end of the axis.
- */
-
-typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
-				 xmlXPathObjectPtr cur);
-
 /*
- * Extra axis: a name and an axis function.
+ * unused
  */
-
+typedef xmlXPathObject *(*xmlXPathAxisFunc) (xmlXPathParserContext *ctxt,
+				 xmlXPathObject *cur);
 typedef struct _xmlXPathAxis xmlXPathAxis;
 typedef xmlXPathAxis *xmlXPathAxisPtr;
 struct _xmlXPathAxis {
@@ -205,72 +185,62 @@ struct _xmlXPathAxis {
     xmlXPathAxisFunc func;		/* the search function */
 };
 
+/** @endcond */
+
 /**
- * xmlXPathFunction:
- * @ctxt:  the XPath interprestation context
- * @nargs:  the number of arguments
- *
  * An XPath function.
  * The arguments (if any) are popped out from the context stack
  * and the result is pushed on the stack.
+ *
+ * @param ctxt  the XPath interprestation context
+ * @param nargs  the number of arguments
  */
 
-typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
+typedef void (*xmlXPathFunction) (xmlXPathParserContext *ctxt, int nargs);
 
 /*
  * Function and Variable Lookup.
  */
 
 /**
- * xmlXPathVariableLookupFunc:
- * @ctxt:  an XPath context
- * @name:  name of the variable
- * @ns_uri:  the namespace name hosting this variable
- *
  * Prototype for callbacks used to plug variable lookup in the XPath
  * engine.
  *
- * Returns the XPath object value or NULL if not found.
+ * @param ctxt  an XPath context
+ * @param name  name of the variable
+ * @param ns_uri  the namespace name hosting this variable
+ * @returns the XPath object value or NULL if not found.
  */
-typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
+typedef xmlXPathObject *(*xmlXPathVariableLookupFunc) (void *ctxt,
                                          const xmlChar *name,
                                          const xmlChar *ns_uri);
 
 /**
- * xmlXPathFuncLookupFunc:
- * @ctxt:  an XPath context
- * @name:  name of the function
- * @ns_uri:  the namespace name hosting this function
- *
  * Prototype for callbacks used to plug function lookup in the XPath
  * engine.
  *
- * Returns the XPath function or NULL if not found.
+ * @param ctxt  an XPath context
+ * @param name  name of the function
+ * @param ns_uri  the namespace name hosting this function
+ * @returns the XPath function or NULL if not found.
  */
 typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
 					 const xmlChar *name,
 					 const xmlChar *ns_uri);
 
 /**
- * xmlXPathFlags:
  * Flags for XPath engine compilation and runtime
  */
 /**
- * XML_XPATH_CHECKNS:
- *
  * check namespaces at compilation
  */
 #define XML_XPATH_CHECKNS (1<<0)
 /**
- * XML_XPATH_NOVAR:
- *
  * forbid variables in expression
  */
 #define XML_XPATH_NOVAR	  (1<<1)
 
 /**
- * xmlXPathContext:
- *
  * Expression evaluation occurs with respect to a context.
  * he context consists of:
  *    - a node (the context node)
@@ -284,71 +254,98 @@ typedef xmlXPathFunction (*xmlXPathFuncL
  * for an XPath evaluation so you may need to initialize it again
  * before the next call.
  */
-
 struct _xmlXPathContext {
-    xmlDocPtr doc;			/* The current document */
-    xmlNodePtr node;			/* The current node */
+    /** The current document */
+    xmlDoc *doc;
+    /** The current node */
+    xmlNode *node;
+
+    /* unused (hash table) */
+    int nb_variables_unused;
+    /* unused (hash table) */
+    int max_variables_unused;
+    /* Hash table of defined variables */
+    xmlHashTable *varHash;
+
+    /* number of defined types */
+    int nb_types;
+    /* max number of types */
+    int max_types;
+    /* Array of defined types */
+    xmlXPathType *types;
+
+    /* unused (hash table) */
+    int nb_funcs_unused;
+    /* unused (hash table) */
+    int max_funcs_unused;
+    /* Hash table of defined funcs */
+    xmlHashTable *funcHash;
+
+    /* number of defined axis */
+    int nb_axis;
+    /* max number of axis */
+    int max_axis;
+    /* Array of defined axis */
+    xmlXPathAxis *axis;
+
+    /* Array of namespaces */
+    xmlNs **namespaces;
+    /* number of namespace in scope */
+    int nsNr;
+    /* function to free */
+    void *user;
 
-    int nb_variables_unused;		/* unused (hash table) */
-    int max_variables_unused;		/* unused (hash table) */
-    xmlHashTablePtr varHash;		/* Hash table of defined variables */
-
-    int nb_types;			/* number of defined types */
-    int max_types;			/* max number of types */
-    xmlXPathTypePtr types;		/* Array of defined types */
-
-    int nb_funcs_unused;		/* unused (hash table) */
-    int max_funcs_unused;		/* unused (hash table) */
-    xmlHashTablePtr funcHash;		/* Hash table of defined funcs */
-
-    int nb_axis;			/* number of defined axis */
-    int max_axis;			/* max number of axis */
-    xmlXPathAxisPtr axis;		/* Array of defined axis */
-
-    /* the namespace nodes of the context node */
-    xmlNsPtr *namespaces;		/* Array of namespaces */
-    int nsNr;				/* number of namespace in scope */
-    void *user;				/* function to free */
-
-    /* extra variables */
-    int contextSize;			/* the context size */
-    int proximityPosition;		/* the proximity position */
-
-    /* extra stuff for XPointer */
-    int xptr;				/* is this an XPointer context? */
-    xmlNodePtr here;			/* for here() */
-    xmlNodePtr origin;			/* for origin() */
-
-    /* the set of namespace declarations in scope for the expression */
-    xmlHashTablePtr nsHash;		/* The namespaces hash table */
-    xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
-    void *varLookupData;		/* variable lookup data */
+    /** the context size */
+    int contextSize;
+    /** the proximity position */
+    int proximityPosition;
+
+    /* is this an XPointer context? */
+    int xptr;
+    /* for here() */
+    xmlNode *here;
+    /* for origin() */
+    xmlNode *origin;
+
+    /* The namespaces hash table */
+    xmlHashTable *nsHash;
+    /* variable lookup func */
+    xmlXPathVariableLookupFunc varLookupFunc;
+    /* variable lookup data */
+    void *varLookupData;
 
-    /* Possibility to link in an extra item */
-    void *extra;                        /* needed for XSLT */
+    /* needed for XSLT */
+    void *extra;
 
-    /* The function name and URI when calling a function */
+    /* The function name when calling a function */
     const xmlChar *function;
+    /* The namespace URI when calling a function */
     const xmlChar *functionURI;
 
-    /* function lookup function and data */
-    xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
-    void *funcLookupData;		/* function lookup data */
-
-    /* temporary namespace lists kept for walking the namespace axis */
-    xmlNsPtr *tmpNsList;		/* Array of namespaces */
-    int tmpNsNr;			/* number of namespaces in scope */
-
-    /* error reporting mechanism */
-    void *userData;                     /* user specific data block */
-    xmlStructuredErrorFunc error;       /* the callback in case of errors */
-    xmlError lastError;			/* the last error */
-    xmlNodePtr debugNode;		/* the source node XSLT */
+    /* function lookup func */
+    xmlXPathFuncLookupFunc funcLookupFunc;
+    /* function lookup data */
+    void *funcLookupData;
+
+    /* Array of temp namespaces */
+    xmlNs **tmpNsList;
+    /* number of namespaces in scope */
+    int tmpNsNr;
+
+    /* user specific data block */
+    void *userData;
+    /* the callback in case of errors */
+    xmlStructuredErrorFunc error;
+    /* the last error */
+    xmlError lastError;
+    /* the source node XSLT */
+    xmlNode *debugNode;
 
-    /* dictionary */
-    xmlDictPtr dict;			/* dictionary if any */
+    /* dictionary if any */
+    xmlDict *dict;
 
-    int flags;				/* flags to control compilation */
+    /** flags to control compilation */
+    int flags;
 
     /* Cache for reusal of XPath objects */
     void *cache;
@@ -359,36 +356,45 @@ struct _xmlXPathContext {
     int depth;
 };
 
-/*
- * The structure of a compiled expression form is not public.
- */
-
+/** Compiled XPath expression */
 typedef struct _xmlXPathCompExpr xmlXPathCompExpr;
 typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
 
 /**
- * xmlXPathParserContext:
- *
  * An XPath parser context. It contains pure parsing information,
  * an xmlXPathContext, and the stack of objects.
+ *
+ * This struct is used for evaluation as well and misnamed.
  */
 struct _xmlXPathParserContext {
-    const xmlChar *cur;			/* the current char being parsed */
-    const xmlChar *base;			/* the full expression */
-
-    int error;				/* error code */
+    /* the current char being parsed */
+    const xmlChar *cur;
+    /* the full expression */
+    const xmlChar *base;
+
+    /** error code */
+    int error;
+
+    /** the evaluation context */
+    xmlXPathContext    *context;
+    /** the current value */
+    xmlXPathObject       *value;
+    /* number of values stacked */
+    int                 valueNr;
+    /* max number of values stacked */
+    int                valueMax;
+    /* stack of values */
+    xmlXPathObject **valueTab;
+
+    /* the precompiled expression */
+    xmlXPathCompExpr *comp;
+    /* it this an XPointer expression */
+    int xptr;
+    /* used for walking preceding axis */
+    xmlNode           *ancestor;
 
-    xmlXPathContextPtr  context;	/* the evaluation context */
-    xmlXPathObjectPtr     value;	/* the current value */
-    int                 valueNr;	/* number of values stacked */
-    int                valueMax;	/* max number of values stacked */
-    xmlXPathObjectPtr *valueTab;	/* stack of values */
-
-    xmlXPathCompExprPtr comp;		/* the precompiled expression */
-    int xptr;				/* it this an XPointer expression */
-    xmlNodePtr         ancestor;	/* used for walking preceding axis */
-
-    int              valueFrame;        /* always zero for compatibility */
+    /* always zero for compatibility */
+    int              valueFrame;
 };
 
 /************************************************************************
@@ -401,6 +407,8 @@ struct _xmlXPathParserContext {
  * Objects and Nodesets handling
  */
 
+/** @cond ignore */
+
 XML_DEPRECATED
 XMLPUBVAR double xmlXPathNAN;
 XML_DEPRECATED
@@ -410,23 +418,19 @@ XMLPUBVAR double xmlXPathNINF;
 
 /* These macros may later turn into functions */
 /**
- * xmlXPathNodeSetGetLength:
- * @ns:  a node-set
- *
  * Implement a functionality similar to the DOM NodeList.length.
  *
- * Returns the number of nodes in the node-set.
+ * @param ns  a node-set
+ * @returns the number of nodes in the node-set.
  */
 #define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
 /**
- * xmlXPathNodeSetItem:
- * @ns:  a node-set
- * @index:  index of a node in the set
- *
  * Implements a functionality similar to the DOM NodeList.item().
  *
- * Returns the xmlNodePtr at the given @index in @ns or NULL if
- *         @index is out of range (0 to length-1)
+ * @param ns  a node-set
+ * @param index  index of a node in the set
+ * @returns the xmlNode at the given `index` in `ns` or NULL if
+ *         `index` is out of range (0 to length-1)
  */
 #define xmlXPathNodeSetItem(ns, index)				\
 		((((ns) != NULL) &&				\
@@ -434,30 +438,29 @@ XMLPUBVAR double xmlXPathNINF;
 		 (ns)->nodeTab[(index)]				\
 		 : NULL)
 /**
- * xmlXPathNodeSetIsEmpty:
- * @ns: a node-set
- *
- * Checks whether @ns is empty or not.
+ * Checks whether `ns` is empty or not.
  *
- * Returns %TRUE if @ns is an empty node-set.
+ * @param ns  a node-set
+ * @returns %TRUE if `ns` is an empty node-set.
  */
 #define xmlXPathNodeSetIsEmpty(ns)                                      \
     (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
 
+/** @endcond */
 
 XMLPUBFUN void
-		    xmlXPathFreeObject		(xmlXPathObjectPtr obj);
-XMLPUBFUN xmlNodeSetPtr
-		    xmlXPathNodeSetCreate	(xmlNodePtr val);
+		    xmlXPathFreeObject		(xmlXPathObject *obj);
+XMLPUBFUN xmlNodeSet *
+		    xmlXPathNodeSetCreate	(xmlNode *val);
 XMLPUBFUN void
-		    xmlXPathFreeNodeSetList	(xmlXPathObjectPtr obj);
+		    xmlXPathFreeNodeSetList	(xmlXPathObject *obj);
 XMLPUBFUN void
-		    xmlXPathFreeNodeSet		(xmlNodeSetPtr obj);
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathObjectCopy		(xmlXPathObjectPtr val);
+		    xmlXPathFreeNodeSet		(xmlNodeSet *obj);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathObjectCopy		(xmlXPathObject *val);
 XMLPUBFUN int
-		    xmlXPathCmpNodes		(xmlNodePtr node1,
-						 xmlNodePtr node2);
+		    xmlXPathCmpNodes		(xmlNode *node1,
+						 xmlNode *node2);
 /**
  * Conversion functions to basic types.
  */
@@ -466,52 +469,52 @@ XMLPUBFUN int
 XMLPUBFUN int
 		    xmlXPathCastStringToBoolean	(const xmlChar * val);
 XMLPUBFUN int
-		    xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
+		    xmlXPathCastNodeSetToBoolean(xmlNodeSet *ns);
 XMLPUBFUN int
-		    xmlXPathCastToBoolean	(xmlXPathObjectPtr val);
+		    xmlXPathCastToBoolean	(xmlXPathObject *val);
 
 XMLPUBFUN double
 		    xmlXPathCastBooleanToNumber	(int val);
 XMLPUBFUN double
 		    xmlXPathCastStringToNumber	(const xmlChar * val);
 XMLPUBFUN double
-		    xmlXPathCastNodeToNumber	(xmlNodePtr node);
+		    xmlXPathCastNodeToNumber	(xmlNode *node);
 XMLPUBFUN double
-		    xmlXPathCastNodeSetToNumber	(xmlNodeSetPtr ns);
+		    xmlXPathCastNodeSetToNumber	(xmlNodeSet *ns);
 XMLPUBFUN double
-		    xmlXPathCastToNumber	(xmlXPathObjectPtr val);
+		    xmlXPathCastToNumber	(xmlXPathObject *val);
 
 XMLPUBFUN xmlChar *
 		    xmlXPathCastBooleanToString	(int val);
 XMLPUBFUN xmlChar *
 		    xmlXPathCastNumberToString	(double val);
 XMLPUBFUN xmlChar *
-		    xmlXPathCastNodeToString	(xmlNodePtr node);
+		    xmlXPathCastNodeToString	(xmlNode *node);
 XMLPUBFUN xmlChar *
-		    xmlXPathCastNodeSetToString	(xmlNodeSetPtr ns);
+		    xmlXPathCastNodeSetToString	(xmlNodeSet *ns);
 XMLPUBFUN xmlChar *
-		    xmlXPathCastToString	(xmlXPathObjectPtr val);
+		    xmlXPathCastToString	(xmlXPathObject *val);
 
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathConvertBoolean	(xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathConvertNumber	(xmlXPathObjectPtr val);
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathConvertString	(xmlXPathObjectPtr val);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathConvertBoolean	(xmlXPathObject *val);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathConvertNumber	(xmlXPathObject *val);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathConvertString	(xmlXPathObject *val);
 
 /**
  * Context handling.
  */
-XMLPUBFUN xmlXPathContextPtr
-		    xmlXPathNewContext		(xmlDocPtr doc);
+XMLPUBFUN xmlXPathContext *
+		    xmlXPathNewContext		(xmlDoc *doc);
 XMLPUBFUN void
-		    xmlXPathFreeContext		(xmlXPathContextPtr ctxt);
+		    xmlXPathFreeContext		(xmlXPathContext *ctxt);
 XMLPUBFUN void
-		    xmlXPathSetErrorHandler(xmlXPathContextPtr ctxt,
+		    xmlXPathSetErrorHandler(xmlXPathContext *ctxt,
 					    xmlStructuredErrorFunc handler,
 					    void *context);
 XMLPUBFUN int
-		    xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
+		    xmlXPathContextSetCache(xmlXPathContext *ctxt,
 				            int active,
 					    int value,
 					    int options);
@@ -519,39 +522,39 @@ XMLPUBFUN int
  * Evaluation functions.
  */
 XMLPUBFUN long
-		    xmlXPathOrderDocElems	(xmlDocPtr doc);
+		    xmlXPathOrderDocElems	(xmlDoc *doc);
 XMLPUBFUN int
-		    xmlXPathSetContextNode	(xmlNodePtr node,
-						 xmlXPathContextPtr ctx);
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathNodeEval		(xmlNodePtr node,
+		    xmlXPathSetContextNode	(xmlNode *node,
+						 xmlXPathContext *ctx);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathNodeEval		(xmlNode *node,
 						 const xmlChar *str,
-						 xmlXPathContextPtr ctx);
-XMLPUBFUN xmlXPathObjectPtr
+						 xmlXPathContext *ctx);
+XMLPUBFUN xmlXPathObject *
 		    xmlXPathEval		(const xmlChar *str,
-						 xmlXPathContextPtr ctx);
-XMLPUBFUN xmlXPathObjectPtr
+						 xmlXPathContext *ctx);
+XMLPUBFUN xmlXPathObject *
 		    xmlXPathEvalExpression	(const xmlChar *str,
-						 xmlXPathContextPtr ctxt);
+						 xmlXPathContext *ctxt);
 XMLPUBFUN int
-		    xmlXPathEvalPredicate	(xmlXPathContextPtr ctxt,
-						 xmlXPathObjectPtr res);
+		    xmlXPathEvalPredicate	(xmlXPathContext *ctxt,
+						 xmlXPathObject *res);
 /**
  * Separate compilation/evaluation entry points.
  */
-XMLPUBFUN xmlXPathCompExprPtr
+XMLPUBFUN xmlXPathCompExpr *
 		    xmlXPathCompile		(const xmlChar *str);
-XMLPUBFUN xmlXPathCompExprPtr
-		    xmlXPathCtxtCompile		(xmlXPathContextPtr ctxt,
+XMLPUBFUN xmlXPathCompExpr *
+		    xmlXPathCtxtCompile		(xmlXPathContext *ctxt,
 						 const xmlChar *str);
-XMLPUBFUN xmlXPathObjectPtr
-		    xmlXPathCompiledEval	(xmlXPathCompExprPtr comp,
-						 xmlXPathContextPtr ctx);
+XMLPUBFUN xmlXPathObject *
+		    xmlXPathCompiledEval	(xmlXPathCompExpr *comp,
+						 xmlXPathContext *ctx);
 XMLPUBFUN int
-		    xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
-						 xmlXPathContextPtr ctxt);
+		    xmlXPathCompiledEvalToBoolean(xmlXPathCompExpr *comp,
+						 xmlXPathContext *ctxt);
 XMLPUBFUN void
-		    xmlXPathFreeCompExpr	(xmlXPathCompExprPtr comp);
+		    xmlXPathFreeCompExpr	(xmlXPathCompExpr *comp);
 
 XML_DEPRECATED
 XMLPUBFUN void
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xpathInternals.h 2.15.0+dfsg-0.3/include/libxml/xpathInternals.h
--- 2.14.6+dfsg-0.1/include/libxml/xpathInternals.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xpathInternals.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,12 +1,15 @@
-/*
- * Summary: internal interfaces for XML Path Language implementation
- * Description: internal interfaces for XML Path Language implementation
+/**
+ * @file
+ * 
+ * @brief internal interfaces for XML Path Language implementation
+ * 
+ * internal interfaces for XML Path Language implementation
  *              used to build new modules on top of XPath like XPointer and
  *              XSLT
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XPATH_INTERNALS_H__
@@ -22,10 +25,17 @@
 extern "C" {
 #endif
 
-/*
- * Backward compatibility
+/**
+ * Push a value on the stack
+ *
+ * @deprecated Use #xmlXPathValuePush
  */
 #define valuePush xmlXPathValuePush
+/**
+ * Pop a value from the stack
+ *
+ * @deprecated Use #xmlXPathValuePop
+ */
 #define valuePop xmlXPathValuePop
 
 /************************************************************************
@@ -36,180 +46,158 @@ extern "C" {
 
 /*
  * Many of these macros may later turn into functions. They
- * shouldn't be used in #ifdef's preprocessor instructions.
+ * shouldn't be used in \#ifdef's preprocessor instructions.
  */
 /**
- * xmlXPathSetError:
- * @ctxt:  an XPath parser context
- * @err:  an xmlXPathError code
- *
  * Raises an error.
+ *
+ * @param ctxt  an XPath parser context
+ * @param err  an xmlXPathError code
  */
 #define xmlXPathSetError(ctxt, err)					\
     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));			\
       if ((ctxt) != NULL) (ctxt)->error = (err); }
 
 /**
- * xmlXPathSetArityError:
- * @ctxt:  an XPath parser context
- *
  * Raises an XPATH_INVALID_ARITY error.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathSetArityError(ctxt)					\
     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
 
 /**
- * xmlXPathSetTypeError:
- * @ctxt:  an XPath parser context
- *
  * Raises an XPATH_INVALID_TYPE error.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathSetTypeError(ctxt)					\
     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
 
 /**
- * xmlXPathGetError:
- * @ctxt:  an XPath parser context
- *
  * Get the error code of an XPath context.
  *
- * Returns the context error.
+ * @param ctxt  an XPath parser context
+ * @returns the context error.
  */
 #define xmlXPathGetError(ctxt)	  ((ctxt)->error)
 
 /**
- * xmlXPathCheckError:
- * @ctxt:  an XPath parser context
- *
  * Check if an XPath error was raised.
  *
- * Returns true if an error has been raised, false otherwise.
+ * @param ctxt  an XPath parser context
+ * @returns true if an error has been raised, false otherwise.
  */
 #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
 
 /**
- * xmlXPathGetDocument:
- * @ctxt:  an XPath parser context
- *
  * Get the document of an XPath context.
  *
- * Returns the context document.
+ * @param ctxt  an XPath parser context
+ * @returns the context document.
  */
 #define xmlXPathGetDocument(ctxt)	((ctxt)->context->doc)
 
 /**
- * xmlXPathGetContextNode:
- * @ctxt: an XPath parser context
- *
  * Get the context node of an XPath context.
  *
- * Returns the context node.
+ * @param ctxt  an XPath parser context
+ * @returns the context node.
  */
 #define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)
 
 XMLPUBFUN int
-		xmlXPathPopBoolean	(xmlXPathParserContextPtr ctxt);
+		xmlXPathPopBoolean	(xmlXPathParserContext *ctxt);
 XMLPUBFUN double
-		xmlXPathPopNumber	(xmlXPathParserContextPtr ctxt);
+		xmlXPathPopNumber	(xmlXPathParserContext *ctxt);
 XMLPUBFUN xmlChar *
-		xmlXPathPopString	(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathPopNodeSet	(xmlXPathParserContextPtr ctxt);
+		xmlXPathPopString	(xmlXPathParserContext *ctxt);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathPopNodeSet	(xmlXPathParserContext *ctxt);
 XMLPUBFUN void *
-		xmlXPathPopExternal	(xmlXPathParserContextPtr ctxt);
+		xmlXPathPopExternal	(xmlXPathParserContext *ctxt);
 
 /**
- * xmlXPathReturnBoolean:
- * @ctxt:  an XPath parser context
- * @val:  a boolean
+ * Pushes the boolean `val` on the context stack.
  *
- * Pushes the boolean @val on the context stack.
+ * @param ctxt  an XPath parser context
+ * @param val  a boolean
  */
 #define xmlXPathReturnBoolean(ctxt, val)				\
     valuePush((ctxt), xmlXPathNewBoolean(val))
 
 /**
- * xmlXPathReturnTrue:
- * @ctxt:  an XPath parser context
- *
  * Pushes true on the context stack.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
 
 /**
- * xmlXPathReturnFalse:
- * @ctxt:  an XPath parser context
- *
  * Pushes false on the context stack.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
 
 /**
- * xmlXPathReturnNumber:
- * @ctxt:  an XPath parser context
- * @val:  a double
+ * Pushes the double `val` on the context stack.
  *
- * Pushes the double @val on the context stack.
+ * @param ctxt  an XPath parser context
+ * @param val  a double
  */
 #define xmlXPathReturnNumber(ctxt, val)					\
     valuePush((ctxt), xmlXPathNewFloat(val))
 
 /**
- * xmlXPathReturnString:
- * @ctxt:  an XPath parser context
- * @str:  a string
+ * Pushes the string `str` on the context stack.
  *
- * Pushes the string @str on the context stack.
+ * @param ctxt  an XPath parser context
+ * @param str  a string
  */
 #define xmlXPathReturnString(ctxt, str)					\
     valuePush((ctxt), xmlXPathWrapString(str))
 
 /**
- * xmlXPathReturnEmptyString:
- * @ctxt:  an XPath parser context
- *
  * Pushes an empty string on the stack.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathReturnEmptyString(ctxt)					\
     valuePush((ctxt), xmlXPathNewCString(""))
 
 /**
- * xmlXPathReturnNodeSet:
- * @ctxt:  an XPath parser context
- * @ns:  a node-set
+ * Pushes the node-set `ns` on the context stack.
  *
- * Pushes the node-set @ns on the context stack.
+ * @param ctxt  an XPath parser context
+ * @param ns  a node-set
  */
 #define xmlXPathReturnNodeSet(ctxt, ns)					\
     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
 
 /**
- * xmlXPathReturnEmptyNodeSet:
- * @ctxt:  an XPath parser context
- *
  * Pushes an empty node-set on the context stack.
+ *
+ * @param ctxt  an XPath parser context
  */
 #define xmlXPathReturnEmptyNodeSet(ctxt)				\
     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
 
 /**
- * xmlXPathReturnExternal:
- * @ctxt:  an XPath parser context
- * @val:  user data
- *
  * Pushes user data on the context stack.
+ *
+ * @param ctxt  an XPath parser context
+ * @param val  user data
  */
 #define xmlXPathReturnExternal(ctxt, val)				\
     valuePush((ctxt), xmlXPathWrapExternal(val))
 
 /**
- * xmlXPathStackIsNodeSet:
- * @ctxt: an XPath parser context
- *
  * Check if the current value on the XPath stack is a node set or
  * an XSLT value tree.
  *
- * Returns true if the current object on the stack is a node-set.
+ * @param ctxt  an XPath parser context
+ * @returns true if the current object on the stack is a node-set.
  */
 #define xmlXPathStackIsNodeSet(ctxt)					\
     (((ctxt)->value != NULL)						\
@@ -217,88 +205,76 @@ XMLPUBFUN void *
          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
 
 /**
- * xmlXPathStackIsExternal:
- * @ctxt: an XPath parser context
- *
  * Checks if the current value on the XPath stack is an external
  * object.
  *
- * Returns true if the current object on the stack is an external
+ * @param ctxt  an XPath parser context
+ * @returns true if the current object on the stack is an external
  * object.
  */
 #define xmlXPathStackIsExternal(ctxt)					\
 	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
 
 /**
- * xmlXPathEmptyNodeSet:
- * @ns:  a node-set
- *
  * Empties a node-set.
+ *
+ * @param ns  a node-set
  */
 #define xmlXPathEmptyNodeSet(ns)					\
     { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
 
 /**
- * CHECK_ERROR:
- *
  * Macro to return from the function if an XPath error was detected.
  */
 #define CHECK_ERROR							\
     if (ctxt->error != XPATH_EXPRESSION_OK) return
 
 /**
- * CHECK_ERROR0:
- *
  * Macro to return 0 from the function if an XPath error was detected.
  */
 #define CHECK_ERROR0							\
     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
 
 /**
- * XP_ERROR:
- * @X:  the error code
- *
  * Macro to raise an XPath error and return.
+ *
+ * @param X  the error code
  */
 #define XP_ERROR(X)							\
     { xmlXPathErr(ctxt, X); return; }
 
 /**
- * XP_ERROR0:
- * @X:  the error code
- *
  * Macro to raise an XPath error and return 0.
+ *
+ * @param X  the error code
  */
 #define XP_ERROR0(X)							\
     { xmlXPathErr(ctxt, X); return(0); }
 
 /**
- * CHECK_TYPE:
- * @typeval:  the XPath type
- *
  * Macro to check that the value on top of the XPath stack is of a given
  * type.
+ *
+ * @param typeval  the XPath type
  */
 #define CHECK_TYPE(typeval)						\
     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
         XP_ERROR(XPATH_INVALID_TYPE)
 
 /**
- * CHECK_TYPE0:
- * @typeval:  the XPath type
- *
  * Macro to check that the value on top of the XPath stack is of a given
  * type. Return(0) in case of failure
+ *
+ * @param typeval  the XPath type
  */
 #define CHECK_TYPE0(typeval)						\
     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
         XP_ERROR0(XPATH_INVALID_TYPE)
 
 /**
- * CHECK_ARITY:
- * @x:  the number of expected args
- *
  * Macro to check that the number of args passed to an XPath function matches.
+ *
+ * @param x  the number of expected args
  */
 #define CHECK_ARITY(x)							\
     if (ctxt == NULL) return;						\
@@ -308,8 +284,6 @@ XMLPUBFUN void *
         XP_ERROR(XPATH_STACK_ERROR);
 
 /**
- * CAST_TO_STRING:
- *
  * Macro to try to cast the value on the top of the XPath stack to a string.
  */
 #define CAST_TO_STRING							\
@@ -317,8 +291,6 @@ XMLPUBFUN void *
         xmlXPathStringFunction(ctxt, 1);
 
 /**
- * CAST_TO_NUMBER:
- *
  * Macro to try to cast the value on the top of the XPath stack to a number.
  */
 #define CAST_TO_NUMBER							\
@@ -326,8 +298,6 @@ XMLPUBFUN void *
         xmlXPathNumberFunction(ctxt, 1);
 
 /**
- * CAST_TO_BOOLEAN:
- *
  * Macro to try to cast the value on the top of the XPath stack to a boolean.
  */
 #define CAST_TO_BOOLEAN							\
@@ -339,7 +309,7 @@ XMLPUBFUN void *
  */
 
 XMLPUBFUN void
-	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,
+	xmlXPathRegisterVariableLookup	(xmlXPathContext *ctxt,
 					 xmlXPathVariableLookupFunc f,
 					 void *data);
 
@@ -348,7 +318,7 @@ XMLPUBFUN void
  */
 
 XMLPUBFUN void
-	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,
+	    xmlXPathRegisterFuncLookup	(xmlXPathContext *ctxt,
 					 xmlXPathFuncLookupFunc f,
 					 void *funcCtxt);
 
@@ -356,72 +326,72 @@ XMLPUBFUN void
  * Error reporting.
  */
 XMLPUBFUN void
-		xmlXPatherror	(xmlXPathParserContextPtr ctxt,
+		xmlXPatherror	(xmlXPathParserContext *ctxt,
 				 const char *file,
 				 int line,
 				 int no);
 
 XMLPUBFUN void
-		xmlXPathErr	(xmlXPathParserContextPtr ctxt,
+		xmlXPathErr	(xmlXPathParserContext *ctxt,
 				 int error);
 
 #ifdef LIBXML_DEBUG_ENABLED
 XMLPUBFUN void
 		xmlXPathDebugDumpObject	(FILE *output,
-					 xmlXPathObjectPtr cur,
+					 xmlXPathObject *cur,
 					 int depth);
 XMLPUBFUN void
 	    xmlXPathDebugDumpCompExpr(FILE *output,
-					 xmlXPathCompExprPtr comp,
+					 xmlXPathCompExpr *comp,
 					 int depth);
 #endif
 /**
  * NodeSet handling.
  */
 XMLPUBFUN int
-		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,
-						 xmlNodePtr val);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathDifference		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathIntersection		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathDistinct		(xmlNodeSetPtr nodes);
-
-XMLPUBFUN int
-		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,
-						 xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,
-						 xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathLeading			(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,
-						 xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,
-						 xmlNodePtr node);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathTrailing		(xmlNodeSetPtr nodes1,
-						 xmlNodeSetPtr nodes2);
+		xmlXPathNodeSetContains		(xmlNodeSet *cur,
+						 xmlNode *val);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathDifference		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathIntersection		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+
+XMLPUBFUN xmlNodeSet *
+		xmlXPathDistinctSorted		(xmlNodeSet *nodes);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathDistinct		(xmlNodeSet *nodes);
+
+XMLPUBFUN int
+		xmlXPathHasSameNodes		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+
+XMLPUBFUN xmlNodeSet *
+		xmlXPathNodeLeadingSorted	(xmlNodeSet *nodes,
+						 xmlNode *node);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathLeadingSorted		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathNodeLeading		(xmlNodeSet *nodes,
+						 xmlNode *node);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathLeading			(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+
+XMLPUBFUN xmlNodeSet *
+		xmlXPathNodeTrailingSorted	(xmlNodeSet *nodes,
+						 xmlNode *node);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathTrailingSorted		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathNodeTrailing		(xmlNodeSet *nodes,
+						 xmlNode *node);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathTrailing		(xmlNodeSet *nodes1,
+						 xmlNodeSet *nodes2);
 
 
 /**
@@ -429,105 +399,105 @@ XMLPUBFUN xmlNodeSetPtr
  */
 
 XMLPUBFUN int
-		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,
+		xmlXPathRegisterNs		(xmlXPathContext *ctxt,
 						 const xmlChar *prefix,
 						 const xmlChar *ns_uri);
 XMLPUBFUN const xmlChar *
-		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,
+		xmlXPathNsLookup		(xmlXPathContext *ctxt,
 						 const xmlChar *prefix);
 XMLPUBFUN void
-		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);
+		xmlXPathRegisteredNsCleanup	(xmlXPathContext *ctxt);
 
 XMLPUBFUN int
-		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,
+		xmlXPathRegisterFunc		(xmlXPathContext *ctxt,
 						 const xmlChar *name,
 						 xmlXPathFunction f);
 XMLPUBFUN int
-		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,
+		xmlXPathRegisterFuncNS		(xmlXPathContext *ctxt,
 						 const xmlChar *name,
 						 const xmlChar *ns_uri,
 						 xmlXPathFunction f);
 XMLPUBFUN int
-		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,
+		xmlXPathRegisterVariable	(xmlXPathContext *ctxt,
 						 const xmlChar *name,
-						 xmlXPathObjectPtr value);
+						 xmlXPathObject *value);
 XMLPUBFUN int
-		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,
+		xmlXPathRegisterVariableNS	(xmlXPathContext *ctxt,
 						 const xmlChar *name,
 						 const xmlChar *ns_uri,
-						 xmlXPathObjectPtr value);
+						 xmlXPathObject *value);
 XMLPUBFUN xmlXPathFunction
-		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,
+		xmlXPathFunctionLookup		(xmlXPathContext *ctxt,
 						 const xmlChar *name);
 XMLPUBFUN xmlXPathFunction
-		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,
+		xmlXPathFunctionLookupNS	(xmlXPathContext *ctxt,
 						 const xmlChar *name,
 						 const xmlChar *ns_uri);
 XMLPUBFUN void
-		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,
+		xmlXPathRegisteredFuncsCleanup	(xmlXPathContext *ctxt);
+XMLPUBFUN xmlXPathObject *
+		xmlXPathVariableLookup		(xmlXPathContext *ctxt,
 						 const xmlChar *name);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,
+XMLPUBFUN xmlXPathObject *
+		xmlXPathVariableLookupNS	(xmlXPathContext *ctxt,
 						 const xmlChar *name,
 						 const xmlChar *ns_uri);
 XMLPUBFUN void
-		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
+		xmlXPathRegisteredVariablesCleanup(xmlXPathContext *ctxt);
 
 /**
  * Utilities to extend XPath.
  */
-XMLPUBFUN xmlXPathParserContextPtr
+XMLPUBFUN xmlXPathParserContext *
 		  xmlXPathNewParserContext	(const xmlChar *str,
-						 xmlXPathContextPtr ctxt);
+						 xmlXPathContext *ctxt);
 XMLPUBFUN void
-		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);
+		xmlXPathFreeParserContext	(xmlXPathParserContext *ctxt);
 
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathValuePop		(xmlXPathParserContextPtr ctxt);
+XMLPUBFUN xmlXPathObject *
+		xmlXPathValuePop		(xmlXPathParserContext *ctxt);
 XMLPUBFUN int
-		xmlXPathValuePush		(xmlXPathParserContextPtr ctxt,
-						 xmlXPathObjectPtr value);
+		xmlXPathValuePush		(xmlXPathParserContext *ctxt,
+						 xmlXPathObject *value);
 
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathNewString		(const xmlChar *val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathNewCString		(const char *val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathWrapString		(xmlChar *val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathWrapCString		(char * val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathNewFloat		(double val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
 		xmlXPathNewBoolean		(int val);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathNewNodeSet		(xmlNodePtr val);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathNewValueTree		(xmlNodePtr val);
+XMLPUBFUN xmlXPathObject *
+		xmlXPathNewNodeSet		(xmlNode *val);
+XMLPUBFUN xmlXPathObject *
+		xmlXPathNewValueTree		(xmlNode *val);
 XMLPUBFUN int
-		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,
-						 xmlNodePtr val);
+		xmlXPathNodeSetAdd		(xmlNodeSet *cur,
+						 xmlNode *val);
 XMLPUBFUN int
-		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,
-						 xmlNodePtr val);
+		xmlXPathNodeSetAddUnique	(xmlNodeSet *cur,
+						 xmlNode *val);
 XMLPUBFUN int
-		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur,
-						 xmlNodePtr node,
-						 xmlNsPtr ns);
+		xmlXPathNodeSetAddNs		(xmlNodeSet *cur,
+						 xmlNode *node,
+						 xmlNs *ns);
 XMLPUBFUN void
-		xmlXPathNodeSetSort		(xmlNodeSetPtr set);
+		xmlXPathNodeSetSort		(xmlNodeSet *set);
 
 XMLPUBFUN void
-		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);
+		xmlXPathRoot			(xmlXPathParserContext *ctxt);
 XML_DEPRECATED
 XMLPUBFUN void
-		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);
+		xmlXPathEvalExpr		(xmlXPathParserContext *ctxt);
 XMLPUBFUN xmlChar *
-		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);
+		xmlXPathParseName		(xmlXPathParserContext *ctxt);
 XMLPUBFUN xmlChar *
-		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);
+		xmlXPathParseNCName		(xmlXPathParserContext *ctxt);
 
 /*
  * Existing functions.
@@ -535,101 +505,101 @@ XMLPUBFUN xmlChar *
 XMLPUBFUN double
 		xmlXPathStringEvalNumber	(const xmlChar *str);
 XMLPUBFUN int
-		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
-						 xmlXPathObjectPtr res);
+		xmlXPathEvaluatePredicateResult (xmlXPathParserContext *ctxt,
+						 xmlXPathObject *res);
 XMLPUBFUN void
-		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);
-XMLPUBFUN xmlNodeSetPtr
-		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1,
-						 xmlNodeSetPtr val2);
+		xmlXPathRegisterAllFunctions	(xmlXPathContext *ctxt);
+XMLPUBFUN xmlNodeSet *
+		xmlXPathNodeSetMerge		(xmlNodeSet *val1,
+						 xmlNodeSet *val2);
 XMLPUBFUN void
-		xmlXPathNodeSetDel		(xmlNodeSetPtr cur,
-						 xmlNodePtr val);
+		xmlXPathNodeSetDel		(xmlNodeSet *cur,
+						 xmlNode *val);
 XMLPUBFUN void
-		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur,
+		xmlXPathNodeSetRemove		(xmlNodeSet *cur,
 						 int val);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);
-XMLPUBFUN xmlXPathObjectPtr
-		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathObject *
+		xmlXPathNewNodeSetList		(xmlNodeSet *val);
+XMLPUBFUN xmlXPathObject *
+		xmlXPathWrapNodeSet		(xmlNodeSet *val);
+XMLPUBFUN xmlXPathObject *
 		xmlXPathWrapExternal		(void *val);
 
-XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
-XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
-XMLPUBFUN void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
+XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContext *ctxt, int inf, int strict);
+XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContext *ctxt);
+XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContext *ctxt);
+XMLPUBFUN void xmlXPathModValues(xmlXPathParserContext *ctxt);
 
 XMLPUBFUN int xmlXPathIsNodeType(const xmlChar *name);
 
 /*
  * Some of the axis navigation routines.
  */
-XMLPUBFUN xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
-XMLPUBFUN xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
-			xmlNodePtr cur);
+XMLPUBFUN xmlNode *xmlXPathNextSelf(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextChild(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextDescendant(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextDescendantOrSelf(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextParent(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextAncestorOrSelf(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextFollowingSibling(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextFollowing(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextNamespace(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextAttribute(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextPreceding(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextAncestor(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
+XMLPUBFUN xmlNode *xmlXPathNextPrecedingSibling(xmlXPathParserContext *ctxt,
+			xmlNode *cur);
 /*
  * The official core of XPath functions.
  */
-XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
-XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
+XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContext *ctxt, int nargs);
+XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContext *ctxt, int nargs);
 
 /**
  * Really internal functions
  */
-XMLPUBFUN void xmlXPathNodeSetFreeNs(xmlNsPtr ns);
+XMLPUBFUN void xmlXPathNodeSetFreeNs(xmlNs *ns);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/libxml/xpointer.h 2.15.0+dfsg-0.3/include/libxml/xpointer.h
--- 2.14.6+dfsg-0.1/include/libxml/xpointer.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/libxml/xpointer.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,17 +1,21 @@
-/*
- * Summary: API to handle XML Pointers
- * Description: API to handle XML Pointers
- * Base implementation was made accordingly to
- * W3C Candidate Recommendation 7 June 2000
- * http://www.w3.org/TR/2000/CR-xptr-20000607
- *
- * Added support for the element() scheme described in:
- * W3C Proposed Recommendation 13 November 2002
- * http://www.w3.org/TR/2002/PR-xptr-element-20021113/
+/**
+ * @file
+ *
+ * @brief XPointer framework and schemes
+ *
+ * API to evaluate XPointer expressions. The following schemes are
+ * supported:
+ *
+ * - element()
+ * - xmlns()
+ * - xpath1()
+ *
+ * xpointer() is an alias for the xpath1() scheme. The point and
+ * range extensions are not supported.
  *
- * Copy: See Copyright for the status of this software.
+ * @copyright See Copyright for the status of this software.
  *
- * Author: Daniel Veillard
+ * @author Daniel Veillard
  */
 
 #ifndef __XML_XPTR_H__
@@ -32,13 +36,13 @@ extern "C" {
  * Functions.
  */
 XML_DEPRECATED
-XMLPUBFUN xmlXPathContextPtr
-		    xmlXPtrNewContext		(xmlDocPtr doc,
-						 xmlNodePtr here,
-						 xmlNodePtr origin);
-XMLPUBFUN xmlXPathObjectPtr
+XMLPUBFUN xmlXPathContext *
+		    xmlXPtrNewContext		(xmlDoc *doc,
+						 xmlNode *here,
+						 xmlNode *origin);
+XMLPUBFUN xmlXPathObject *
 		    xmlXPtrEval			(const xmlChar *str,
-						 xmlXPathContextPtr ctx);
+						 xmlXPathContext *ctx);
 
 #ifdef __cplusplus
 }
diff -pruN 2.14.6+dfsg-0.1/include/private/Makefile.am 2.15.0+dfsg-0.3/include/private/Makefile.am
--- 2.14.6+dfsg-0.1/include/private/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -16,7 +16,5 @@ EXTRA_DIST = \
 	string.h \
 	threads.h \
 	tree.h \
-	unicode.h \
 	xinclude.h \
-	xpath.h \
-	xzlib.h
+	xpath.h
diff -pruN 2.14.6+dfsg-0.1/include/private/Makefile.in 2.15.0+dfsg-0.3/include/private/Makefile.in
--- 2.14.6+dfsg-0.1/include/private/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -144,6 +144,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -183,8 +184,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -222,10 +221,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -234,7 +231,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -338,10 +334,8 @@ EXTRA_DIST = \
 	string.h \
 	threads.h \
 	tree.h \
-	unicode.h \
 	xinclude.h \
-	xpath.h \
-	xzlib.h
+	xpath.h
 
 all: all-am
 
diff -pruN 2.14.6+dfsg-0.1/include/private/buf.h 2.15.0+dfsg-0.3/include/private/buf.h
--- 2.14.6+dfsg-0.1/include/private/buf.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/buf.h	2025-09-15 11:55:59.000000000 +0000
@@ -4,42 +4,42 @@
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 
-XML_HIDDEN xmlBufPtr
+XML_HIDDEN xmlBuf *
 xmlBufCreate(size_t size);
-XML_HIDDEN xmlBufPtr
+XML_HIDDEN xmlBuf *
 xmlBufCreateMem(const xmlChar *mem, size_t size, int isStatic);
 XML_HIDDEN void
-xmlBufFree(xmlBufPtr buf);
+xmlBufFree(xmlBuf *buf);
 
 XML_HIDDEN void
-xmlBufEmpty(xmlBufPtr buf);
+xmlBufEmpty(xmlBuf *buf);
 
 XML_HIDDEN int
-xmlBufGrow(xmlBufPtr buf, size_t len);
+xmlBufGrow(xmlBuf *buf, size_t len);
 
 XML_HIDDEN int
-xmlBufAdd(xmlBufPtr buf, const xmlChar *str, size_t len);
+xmlBufAdd(xmlBuf *buf, const xmlChar *str, size_t len);
 XML_HIDDEN int
-xmlBufCat(xmlBufPtr buf, const xmlChar *str);
+xmlBufCat(xmlBuf *buf, const xmlChar *str);
 
 XML_HIDDEN size_t
-xmlBufAvail(const xmlBufPtr buf);
+xmlBufAvail(xmlBuf *buf);
 XML_HIDDEN int
-xmlBufIsEmpty(const xmlBufPtr buf);
+xmlBufIsEmpty(xmlBuf *buf);
 XML_HIDDEN int
-xmlBufAddLen(xmlBufPtr buf, size_t len);
+xmlBufAddLen(xmlBuf *buf, size_t len);
 
 XML_HIDDEN xmlChar *
-xmlBufDetach(xmlBufPtr buf);
+xmlBufDetach(xmlBuf *buf);
 
-XML_HIDDEN xmlBufPtr
-xmlBufFromBuffer(xmlBufferPtr buffer);
+XML_HIDDEN xmlBuf *
+xmlBufFromBuffer(xmlBuffer *buffer);
 XML_HIDDEN int
-xmlBufBackToBuffer(xmlBufPtr buf, xmlBufferPtr ret);
+xmlBufBackToBuffer(xmlBuf *buf, xmlBuffer *ret);
 
 XML_HIDDEN int
-xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input);
+xmlBufResetInput(xmlBuf *buf, xmlParserInput *input);
 XML_HIDDEN int
-xmlBufUpdateInput(xmlBufPtr buf, xmlParserInputPtr input, size_t pos);
+xmlBufUpdateInput(xmlBuf *buf, xmlParserInput *input, size_t pos);
 
 #endif /* XML_BUF_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/dict.h 2.15.0+dfsg-0.3/include/private/dict.h
--- 2.14.6+dfsg-0.1/include/private/dict.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/dict.h	2025-09-15 11:55:59.000000000 +0000
@@ -60,7 +60,7 @@ xmlDictComputeHash(const xmlDict *dict,
 XML_HIDDEN unsigned
 xmlDictCombineHash(unsigned v1, unsigned v2);
 XML_HIDDEN xmlHashedString
-xmlDictLookupHashed(xmlDictPtr dict, const xmlChar *name, int len);
+xmlDictLookupHashed(xmlDict *dict, const xmlChar *name, int len);
 
 XML_HIDDEN void
 xmlInitRandom(void);
diff -pruN 2.14.6+dfsg-0.1/include/private/enc.h 2.15.0+dfsg-0.3/include/private/enc.h
--- 2.14.6+dfsg-0.1/include/private/enc.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/enc.h	2025-09-15 11:55:59.000000000 +0000
@@ -12,8 +12,8 @@ xmlEncInputChunk(xmlCharEncodingHandler
                  int *outlen, const unsigned char *in, int *inlen,
                  int flush);
 XML_HIDDEN xmlCharEncError
-xmlCharEncInput(xmlParserInputBufferPtr input, size_t *sizeOut, int flush);
+xmlCharEncInput(xmlParserInputBuffer *input, size_t *sizeOut, int flush);
 XML_HIDDEN int
-xmlCharEncOutput(xmlOutputBufferPtr output, int init);
+xmlCharEncOutput(xmlOutputBuffer *output, int init);
 
 #endif /* XML_ENC_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/entities.h 2.15.0+dfsg-0.3/include/private/entities.h
--- 2.14.6+dfsg-0.1/include/private/entities.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/entities.h	2025-09-15 11:55:59.000000000 +0000
@@ -21,22 +21,4 @@
 #define XML_ENT_VALIDATED   (1u << 2)
 #define XML_ENT_EXPANDING   (1u << 3)
 
-#define XML_ESCAPE_ATTR             (1u << 0)
-#define XML_ESCAPE_NON_ASCII        (1u << 1)
-#define XML_ESCAPE_HTML             (1u << 2)
-#define XML_ESCAPE_QUOT             (1u << 3)
-#define XML_ESCAPE_ALLOW_INVALID    (1u << 4)
-
-XML_HIDDEN int
-xmlSerializeHexCharRef(char *buf, int val);
-XML_HIDDEN int
-xmlSerializeDecCharRef(char *buf, int val);
-
-XML_HIDDEN xmlChar *
-xmlEscapeText(const xmlChar *text, int flags);
-
-XML_HIDDEN xmlChar *
-xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input,
-                          unsigned flags);
-
 #endif /* XML_ENTITIES_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/html.h 2.15.0+dfsg-0.3/include/private/html.h
--- 2.14.6+dfsg-0.1/include/private/html.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/html.h	2025-09-15 11:55:59.000000000 +0000
@@ -5,8 +5,32 @@
 
 #ifdef LIBXML_HTML_ENABLED
 
-XML_HIDDEN xmlNodePtr
-htmlCtxtParseContentInternal(xmlParserCtxtPtr ctxt, xmlParserInputPtr input);
+#define IS_WS_HTML(c) \
+    (((c) == 0x20) || \
+     (((c) >= 0x09) && ((c) <= 0x0D) && ((c) != 0x0B)))
+
+#define DATA_RCDATA         1
+#define DATA_RAWTEXT        2
+#define DATA_PLAINTEXT      3
+#define DATA_SCRIPT         4
+#define DATA_SCRIPT_ESC1    5
+#define DATA_SCRIPT_ESC2    6
+
+typedef struct {
+    size_t start;
+    size_t end;
+    size_t size;
+} htmlMetaEncodingOffsets;
+
+XML_HIDDEN xmlNode *
+htmlCtxtParseContentInternal(xmlParserCtxt *ctxt, xmlParserInput *input);
+
+XML_HIDDEN int
+htmlParseContentType(const xmlChar *val, htmlMetaEncodingOffsets *off);
+
+XML_HIDDEN void
+htmlNodeDumpInternal(xmlOutputBuffer *buf, xmlNode *cur,
+                     const char *encoding, int format);
 
 #endif /* LIBXML_HTML_ENABLED */
 
diff -pruN 2.14.6+dfsg-0.1/include/private/io.h 2.15.0+dfsg-0.3/include/private/io.h
--- 2.14.6+dfsg-0.1/include/private/io.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/io.h	2025-09-15 11:55:59.000000000 +0000
@@ -5,6 +5,10 @@
 #include <libxml/tree.h>
 #include <libxml/xmlversion.h>
 
+#ifndef SIZE_MAX
+  #define SIZE_MAX ((size_t)(-1))
+#endif
+
 /*
  * Initial buffer size should include
  *
@@ -15,6 +19,19 @@
  */
 #define XML_IO_BUFFER_SIZE 6000
 
+#define XML_ESCAPE_ATTR             (1u << 0)
+#define XML_ESCAPE_NON_ASCII        (1u << 1)
+#define XML_ESCAPE_HTML             (1u << 2)
+#define XML_ESCAPE_QUOT             (1u << 3)
+
+XML_HIDDEN xmlChar *
+xmlEscapeText(const xmlChar *text, int flags);
+#ifdef LIBXML_OUTPUT_ENABLED
+XML_HIDDEN void
+xmlSerializeText(xmlOutputBuffer *buf, const xmlChar *string, size_t maxSize,
+                 unsigned flags);
+#endif
+
 XML_HIDDEN void
 xmlInitIOCallbacks(void);
 
@@ -24,20 +41,20 @@ xmlNoNetExists(const char *filename);
 XML_HIDDEN xmlParserErrors
 xmlParserInputBufferCreateUrl(const char *URI, xmlCharEncoding enc,
                               xmlParserInputFlags flags,
-                              xmlParserInputBufferPtr *out);
+                              xmlParserInputBuffer **out);
 
-XML_HIDDEN xmlParserInputBufferPtr
+XML_HIDDEN xmlParserInputBuffer *
 xmlNewInputBufferString(const char *str, xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputBufferPtr
+XML_HIDDEN xmlParserInputBuffer *
 xmlNewInputBufferMemory(const void *mem, size_t size,
                         xmlParserInputFlags flags, xmlCharEncoding enc);
 
 XML_HIDDEN xmlParserErrors
-xmlInputFromFd(xmlParserInputBufferPtr buf, int fd, xmlParserInputFlags flags);
+xmlInputFromFd(xmlParserInputBuffer *buf, int fd, xmlParserInputFlags flags);
 
 #ifdef LIBXML_OUTPUT_ENABLED
 XML_HIDDEN void
-xmlOutputBufferWriteQuotedString(xmlOutputBufferPtr buf,
+xmlOutputBufferWriteQuotedString(xmlOutputBuffer *buf,
                                  const xmlChar *string);
 #endif
 
diff -pruN 2.14.6+dfsg-0.1/include/private/lint.h 2.15.0+dfsg-0.3/include/private/lint.h
--- 2.14.6+dfsg-0.1/include/private/lint.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/lint.h	2025-09-15 11:55:59.000000000 +0000
@@ -10,6 +10,6 @@ xmllintMain(int argc, const char **argv,
             xmlResourceLoader loader);
 
 void
-xmllintShell(xmlDocPtr doc, const char *filename, FILE *output);
+xmllintShell(xmlDoc *doc, const char *filename, FILE *output);
 
 #endif /* XML_LINT_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/memory.h 2.15.0+dfsg-0.3/include/private/memory.h
--- 2.14.6+dfsg-0.1/include/private/memory.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/memory.h	2025-09-15 11:55:59.000000000 +0000
@@ -18,7 +18,6 @@ XML_HIDDEN void
 xmlCleanupMemoryInternal(void);
 
 /**
- * xmlGrowCapacity:
  * @array:  pointer to array
  * @capacity:  pointer to capacity (in/out)
  * @elemSize:  size of an element in bytes
diff -pruN 2.14.6+dfsg-0.1/include/private/parser.h 2.15.0+dfsg-0.3/include/private/parser.h
--- 2.14.6+dfsg-0.1/include/private/parser.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/parser.h	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,8 @@
 #ifndef XML_PARSER_H_PRIVATE__
 #define XML_PARSER_H_PRIVATE__
 
+#include <limits.h>
+
 #include <libxml/parser.h>
 #include <libxml/xmlversion.h>
 
@@ -9,18 +11,18 @@
 #define XML_MAX_URI_LENGTH 2000
 
 /**
- * XML_VCTXT_DTD_VALIDATED:
- *
  * Set after xmlValidateDtdFinal was called.
  */
 #define XML_VCTXT_DTD_VALIDATED (1u << 0)
 /**
- * XML_VCTXT_USE_PCTXT:
- *
  * Set if the validation context is part of a parser context.
  */
 #define XML_VCTXT_USE_PCTXT (1u << 1)
 /**
+ * Set if the validation is enabled.
+ */
+#define XML_VCTXT_VALIDATE (1u << 2)
+/**
  * Set when parsing entities.
  */
 #define XML_VCTXT_IN_ENTITY (1u << 3)
@@ -37,6 +39,7 @@
 #define XML_INPUT_USES_ENC_DECL     (1u << 4)
 #define XML_INPUT_ENCODING_ERROR    (1u << 5)
 #define XML_INPUT_PROGRESSIVE       (1u << 6)
+#define XML_INPUT_MARKUP_DECL       (1u << 7)
 
 #define PARSER_STOPPED(ctxt) ((ctxt)->disableSAX > 1)
 
@@ -54,8 +57,6 @@
       ((ctxt)->input->entity->etype == XML_EXTERNAL_PARAMETER_ENTITY)))
 
 /**
- * INPUT_CHUNK:
- *
  * The parser tries to always have that amount of input ready.
  * One of the point is providing context when reporting errors.
  */
@@ -65,44 +66,49 @@ struct _xmlAttrHashBucket {
     int index;
 };
 
+#define XML_SCAN_NC         1
+#define XML_SCAN_NMTOKEN    2
+#define XML_SCAN_OLD10      4
+
+XML_HIDDEN const xmlChar *
+xmlScanName(const xmlChar *buf, size_t maxSize, int flags);
+
 XML_HIDDEN void
-xmlCtxtVErr(xmlParserCtxtPtr ctxt, xmlNodePtr node, xmlErrorDomain domain,
+xmlCtxtVErr(xmlParserCtxt *ctxt, xmlNode *node, xmlErrorDomain domain,
             xmlParserErrors code, xmlErrorLevel level,
             const xmlChar *str1, const xmlChar *str2, const xmlChar *str3,
             int int1, const char *msg, va_list ap);
 XML_HIDDEN void
-xmlCtxtErr(xmlParserCtxtPtr ctxt, xmlNodePtr node, xmlErrorDomain domain,
+xmlCtxtErr(xmlParserCtxt *ctxt, xmlNode *node, xmlErrorDomain domain,
            xmlParserErrors code, xmlErrorLevel level,
            const xmlChar *str1, const xmlChar *str2, const xmlChar *str3,
            int int1, const char *msg, ...);
 XML_HIDDEN void
-xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info);
+xmlFatalErr(xmlParserCtxt *ctxt, xmlParserErrors error, const char *info);
 XML_HIDDEN void LIBXML_ATTR_FORMAT(3,0)
 xmlWarningMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
               const char *msg, const xmlChar *str1, const xmlChar *str2);
 XML_HIDDEN void
-xmlCtxtErrIO(xmlParserCtxtPtr ctxt, int code, const char *uri);
+xmlCtxtErrIO(xmlParserCtxt *ctxt, int code, const char *uri);
 XML_HIDDEN int
-xmlCtxtIsCatastrophicError(xmlParserCtxtPtr ctxt);
+xmlCtxtIsCatastrophicError(xmlParserCtxt *ctxt);
 
-XML_HIDDEN void
-xmlHaltParser(xmlParserCtxtPtr ctxt);
 XML_HIDDEN int
-xmlParserGrow(xmlParserCtxtPtr ctxt);
+xmlParserGrow(xmlParserCtxt *ctxt);
 XML_HIDDEN void
-xmlParserShrink(xmlParserCtxtPtr ctxt);
+xmlParserShrink(xmlParserCtxt *ctxt);
 
 XML_HIDDEN void
-xmlDetectEncoding(xmlParserCtxtPtr ctxt);
+xmlDetectEncoding(xmlParserCtxt *ctxt);
 XML_HIDDEN void
-xmlSetDeclaredEncoding(xmlParserCtxtPtr ctxt, xmlChar *encoding);
+xmlSetDeclaredEncoding(xmlParserCtxt *ctxt, xmlChar *encoding);
 XML_HIDDEN const xmlChar *
-xmlGetActualEncoding(xmlParserCtxtPtr ctxt);
+xmlGetActualEncoding(xmlParserCtxt *ctxt);
 
 XML_HIDDEN int
-nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value);
-XML_HIDDEN xmlNodePtr
-nodePop(xmlParserCtxtPtr ctxt);
+nodePush(xmlParserCtxt *ctxt, xmlNode *value);
+XML_HIDDEN xmlNode *
+nodePop(xmlParserCtxt *ctxt);
 
 XML_HIDDEN xmlParserNsData *
 xmlParserNsCreate(void);
@@ -113,44 +119,64 @@ xmlParserNsFree(xmlParserNsData *nsdb);
  * efficiently and should be made public.
  */
 XML_HIDDEN int
-xmlParserNsUpdateSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
+xmlParserNsUpdateSax(xmlParserCtxt *ctxt, const xmlChar *prefix,
                      void *saxData);
 XML_HIDDEN void *
-xmlParserNsLookupSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix);
+xmlParserNsLookupSax(xmlParserCtxt *ctxt, const xmlChar *prefix);
 
-XML_HIDDEN xmlParserInputPtr
-xmlLoadResource(xmlParserCtxtPtr ctxt, const char *url, const char *publicId,
+XML_HIDDEN xmlParserInput *
+xmlLoadResource(xmlParserCtxt *ctxt, const char *url, const char *publicId,
                 xmlResourceType type);
-XML_HIDDEN xmlParserInputPtr
-xmlCtxtNewInputFromUrl(xmlParserCtxtPtr ctxt, const char *url,
+XML_HIDDEN xmlParserInput *
+xmlCtxtNewInputFromUrl(xmlParserCtxt *ctxt, const char *url,
                        const char *publicId, const char *encoding,
                        xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputPtr
-xmlCtxtNewInputFromMemory(xmlParserCtxtPtr ctxt, const char *url,
+XML_HIDDEN xmlParserInput *
+xmlCtxtNewInputFromMemory(xmlParserCtxt *ctxt, const char *url,
                           const void *mem, size_t size,
                           const char *encoding,
                           xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputPtr
-xmlCtxtNewInputFromString(xmlParserCtxtPtr ctxt, const char *url,
+XML_HIDDEN xmlParserInput *
+xmlCtxtNewInputFromString(xmlParserCtxt *ctxt, const char *url,
                           const char *str, const char *encoding,
                           xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputPtr
-xmlCtxtNewInputFromFd(xmlParserCtxtPtr ctxt, const char *filename, int fd,
+XML_HIDDEN xmlParserInput *
+xmlCtxtNewInputFromFd(xmlParserCtxt *ctxt, const char *filename, int fd,
                       const char *encoding, xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputPtr
-xmlCtxtNewInputFromIO(xmlParserCtxtPtr ctxt, const char *url,
+XML_HIDDEN xmlParserInput *
+xmlCtxtNewInputFromIO(xmlParserCtxt *ctxt, const char *url,
                       xmlInputReadCallback ioRead,
                       xmlInputCloseCallback ioClose,
                       void *ioCtxt,
                       const char *encoding, xmlParserInputFlags flags);
-XML_HIDDEN xmlParserInputPtr
+XML_HIDDEN xmlParserInput *
 xmlNewPushInput(const char *url, const char *chunk, int size);
 
 XML_HIDDEN xmlChar *
-xmlExpandEntitiesInAttValue(xmlParserCtxtPtr ctxt, const xmlChar *str,
+xmlExpandEntitiesInAttValue(xmlParserCtxt *ctxt, const xmlChar *str,
                             int normalize);
 
 XML_HIDDEN void
-xmlParserCheckEOF(xmlParserCtxtPtr ctxt, xmlParserErrors code);
+xmlParserCheckEOF(xmlParserCtxt *ctxt, xmlParserErrors code);
+
+XML_HIDDEN void
+xmlParserInputGetWindow(xmlParserInput *input, const xmlChar **startOut,
+                        int *sizeInOut, int *offsetOut);
+
+static XML_INLINE void
+xmlSaturatedAdd(unsigned long *dst, unsigned long val) {
+    if (val > ULONG_MAX - *dst)
+        *dst = ULONG_MAX;
+    else
+        *dst += val;
+}
+
+static XML_INLINE void
+xmlSaturatedAddSizeT(unsigned long *dst, size_t val) {
+    if (val > ULONG_MAX - *dst)
+        *dst = ULONG_MAX;
+    else
+        *dst += val;
+}
 
 #endif /* XML_PARSER_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/regexp.h 2.15.0+dfsg-0.3/include/private/regexp.h
--- 2.14.6+dfsg-0.1/include/private/regexp.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/regexp.h	2025-09-15 11:55:59.000000000 +0000
@@ -16,7 +16,10 @@
 #define XML_REGEXP_INVALID_UTF8     (-7)
 
 XML_HIDDEN void
-xmlAutomataSetFlags(xmlAutomataPtr am, int flags);
+xmlAutomataSetFlags(xmlAutomata *am, int flags);
+
+XML_HIDDEN void
+xmlRegExecClearErrors(xmlRegExecCtxt* exec);
 
 #endif /* LIBXML_REGEXP_ENABLED */
 
diff -pruN 2.14.6+dfsg-0.1/include/private/save.h 2.15.0+dfsg-0.3/include/private/save.h
--- 2.14.6+dfsg-0.1/include/private/save.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/save.h	2025-09-15 11:55:59.000000000 +0000
@@ -8,15 +8,15 @@
 #ifdef LIBXML_OUTPUT_ENABLED
 
 XML_HIDDEN int
-xmlSaveNotationDecl(xmlSaveCtxtPtr ctxt, xmlNotationPtr cur);
+xmlSaveNotationDecl(xmlSaveCtxt *ctxt, xmlNotation *cur);
 XML_HIDDEN int
-xmlSaveNotationTable(xmlSaveCtxtPtr ctxt, xmlNotationTablePtr cur);
+xmlSaveNotationTable(xmlSaveCtxt *ctxt, xmlNotationTable *cur);
 
 XML_HIDDEN void
-xmlBufAttrSerializeTxtContent(xmlOutputBufferPtr buf, xmlDocPtr doc,
+xmlBufAttrSerializeTxtContent(xmlOutputBuffer *buf, xmlDoc *doc,
                               const xmlChar *string);
 XML_HIDDEN void
-xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur);
+xmlNsListDumpOutput(xmlOutputBuffer *buf, xmlNs *cur);
 
 #endif /* LIBXML_OUTPUT_ENABLED */
 
diff -pruN 2.14.6+dfsg-0.1/include/private/threads.h 2.15.0+dfsg-0.3/include/private/threads.h
--- 2.14.6+dfsg-0.1/include/private/threads.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/threads.h	2025-09-15 11:55:59.000000000 +0000
@@ -49,13 +49,28 @@ struct _xmlRMutex {
 };
 
 XML_HIDDEN void
-xmlInitMutex(xmlMutexPtr mutex);
+xmlInitMutex(xmlMutex *mutex);
 XML_HIDDEN void
-xmlCleanupMutex(xmlMutexPtr mutex);
+xmlCleanupMutex(xmlMutex *mutex);
 
 XML_HIDDEN void
-xmlInitRMutex(xmlRMutexPtr mutex);
+xmlInitRMutex(xmlRMutex *mutex);
 XML_HIDDEN void
-xmlCleanupRMutex(xmlRMutexPtr mutex);
+xmlCleanupRMutex(xmlRMutex *mutex);
+
+#ifdef LIBXML_SCHEMAS_ENABLED
+XML_HIDDEN void
+xmlInitSchemasTypesInternal(void);
+XML_HIDDEN void
+xmlCleanupSchemasTypesInternal(void);
+#endif
+
+#ifdef LIBXML_RELAXNG_ENABLED
+XML_HIDDEN void
+xmlInitRelaxNGInternal(void);
+XML_HIDDEN void
+xmlCleanupRelaxNGInternal(void);
+#endif
+
 
 #endif /* XML_THREADS_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/tree.h 2.15.0+dfsg-0.3/include/private/tree.h
--- 2.14.6+dfsg-0.1/include/private/tree.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/tree.h	2025-09-15 11:55:59.000000000 +0000
@@ -5,18 +5,22 @@ XML_HIDDEN extern int
 xmlRegisterCallbacks;
 
 XML_HIDDEN int
-xmlSearchNsSafe(xmlNodePtr node, const xmlChar *href, xmlNsPtr *out);
+xmlSearchNsSafe(xmlNode *node, const xmlChar *href, xmlNs **out);
 XML_HIDDEN int
-xmlSearchNsByHrefSafe(xmlNodePtr node, const xmlChar *href, xmlNsPtr *out);
+xmlSearchNsByHrefSafe(xmlNode *node, const xmlChar *href, xmlNs **out);
 
 XML_HIDDEN int
-xmlNodeParseContent(xmlNodePtr node, const xmlChar *content, int len);
-XML_HIDDEN xmlNodePtr
-xmlStaticCopyNode(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
+xmlNodeParseAttValue(const xmlDoc *doc, xmlAttr *parent,
+                     const xmlChar *value, size_t len, xmlNode **listPtr);
+XML_HIDDEN xmlNode *
+xmlStaticCopyNode(xmlNode *node, xmlDoc *doc, xmlNode *parent,
                   int extended);
-XML_HIDDEN xmlNodePtr
-xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent);
+XML_HIDDEN xmlNode *
+xmlStaticCopyNodeList(xmlNode *node, xmlDoc *doc, xmlNode *parent);
 XML_HIDDEN const xmlChar *
 xmlSplitQName4(const xmlChar *name, xmlChar **prefixPtr);
 
+XML_HIDDEN xmlChar *
+xmlNodeListGetStringInternal(const xmlNode *node, int escape, int flags);
+
 #endif /* XML_TREE_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/unicode.h 2.15.0+dfsg-0.3/include/private/unicode.h
--- 2.14.6+dfsg-0.1/include/private/unicode.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/unicode.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,44 +0,0 @@
-#ifndef XML_UNICODE_H_PRIVATE__
-#define XML_UNICODE_H_PRIVATE__
-
-XML_HIDDEN int xmlUCSIsBlock	(int code, const char *block);
-XML_HIDDEN int xmlUCSIsCat	(int code, const char *cat);
-
-XML_HIDDEN int xmlUCSIsCatC	(int code);
-XML_HIDDEN int xmlUCSIsCatCc	(int code);
-XML_HIDDEN int xmlUCSIsCatCf	(int code);
-XML_HIDDEN int xmlUCSIsCatCo	(int code);
-XML_HIDDEN int xmlUCSIsCatCs	(int code);
-XML_HIDDEN int xmlUCSIsCatL	(int code);
-XML_HIDDEN int xmlUCSIsCatLl	(int code);
-XML_HIDDEN int xmlUCSIsCatLm	(int code);
-XML_HIDDEN int xmlUCSIsCatLo	(int code);
-XML_HIDDEN int xmlUCSIsCatLt	(int code);
-XML_HIDDEN int xmlUCSIsCatLu	(int code);
-XML_HIDDEN int xmlUCSIsCatM	(int code);
-XML_HIDDEN int xmlUCSIsCatMc	(int code);
-XML_HIDDEN int xmlUCSIsCatMe	(int code);
-XML_HIDDEN int xmlUCSIsCatMn	(int code);
-XML_HIDDEN int xmlUCSIsCatN	(int code);
-XML_HIDDEN int xmlUCSIsCatNd	(int code);
-XML_HIDDEN int xmlUCSIsCatNl	(int code);
-XML_HIDDEN int xmlUCSIsCatNo	(int code);
-XML_HIDDEN int xmlUCSIsCatP	(int code);
-XML_HIDDEN int xmlUCSIsCatPc	(int code);
-XML_HIDDEN int xmlUCSIsCatPd	(int code);
-XML_HIDDEN int xmlUCSIsCatPe	(int code);
-XML_HIDDEN int xmlUCSIsCatPf	(int code);
-XML_HIDDEN int xmlUCSIsCatPi	(int code);
-XML_HIDDEN int xmlUCSIsCatPo	(int code);
-XML_HIDDEN int xmlUCSIsCatPs	(int code);
-XML_HIDDEN int xmlUCSIsCatS	(int code);
-XML_HIDDEN int xmlUCSIsCatSc	(int code);
-XML_HIDDEN int xmlUCSIsCatSk	(int code);
-XML_HIDDEN int xmlUCSIsCatSm	(int code);
-XML_HIDDEN int xmlUCSIsCatSo	(int code);
-XML_HIDDEN int xmlUCSIsCatZ	(int code);
-XML_HIDDEN int xmlUCSIsCatZl	(int code);
-XML_HIDDEN int xmlUCSIsCatZp	(int code);
-XML_HIDDEN int xmlUCSIsCatZs	(int code);
-
-#endif /* XML_UNICODE_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/xinclude.h 2.15.0+dfsg-0.3/include/private/xinclude.h
--- 2.14.6+dfsg-0.1/include/private/xinclude.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/xinclude.h	2025-09-15 11:55:59.000000000 +0000
@@ -4,6 +4,6 @@
 #include <libxml/xinclude.h>
 
 XML_HIDDEN int
-xmlXIncludeSetStreamingMode(xmlXIncludeCtxtPtr ctxt, int mode);
+xmlXIncludeSetStreamingMode(xmlXIncludeCtxt *ctxt, int mode);
 
 #endif /* XML_INCLUDE_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/xpath.h 2.15.0+dfsg-0.3/include/private/xpath.h
--- 2.14.6+dfsg-0.1/include/private/xpath.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/xpath.h	2025-09-15 11:55:59.000000000 +0000
@@ -8,9 +8,9 @@ xmlInitXPathInternal(void);
 
 #ifdef LIBXML_XPATH_ENABLED
 XML_HIDDEN void
-xmlXPathErrMemory(xmlXPathContextPtr ctxt);
+xmlXPathErrMemory(xmlXPathContext *ctxt);
 XML_HIDDEN void
-xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt);
+xmlXPathPErrMemory(xmlXPathParserContext *ctxt);
 #endif
 
 #endif /* XML_XPATH_H_PRIVATE__ */
diff -pruN 2.14.6+dfsg-0.1/include/private/xzlib.h 2.15.0+dfsg-0.3/include/private/xzlib.h
--- 2.14.6+dfsg-0.1/include/private/xzlib.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/private/xzlib.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-/**
- * xzlib.h: header for the front end for the transparent support of lzma
- *          compression at the I/O layer
- *
- * See Copyright for the status of this software.
- *
- * Anders F Bjorklund <afb@users.sourceforge.net>
- */
-
-#ifndef LIBXML2_XZLIB_H
-#define LIBXML2_XZLIB_H
-
-#include <libxml/xmlversion.h>
-
-#ifdef LIBXML_LZMA_ENABLED
-
-typedef void *xzFile;           /* opaque lzma file descriptor */
-
-XML_HIDDEN xzFile
-__libxml2_xzopen(const char *path, const char *mode);
-XML_HIDDEN xzFile
-__libxml2_xzdopen(const char *path, int fd, const char *mode);
-XML_HIDDEN int
-__libxml2_xzread(xzFile file, void *buf, unsigned len);
-XML_HIDDEN int
-__libxml2_xzclose(xzFile file);
-XML_HIDDEN int
-__libxml2_xzcompressed(xzFile f);
-
-#endif /* LIBXML_LZMA_ENABLED */
-
-#endif /* LIBXML2_XZLIB_H */
diff -pruN 2.14.6+dfsg-0.1/include/wsockcompat.h 2.15.0+dfsg-0.3/include/wsockcompat.h
--- 2.14.6+dfsg-0.1/include/wsockcompat.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/include/wsockcompat.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,49 +0,0 @@
-/* include/wsockcompat.h
- * Windows -> Berkeley Sockets compatibility things.
- */
-
-#if !defined __XML_WSOCKCOMPAT_H__
-#define __XML_WSOCKCOMPAT_H__
-
-#include <errno.h>
-#include <winsock2.h>
-
-/* Fix for old MinGW. */
-#ifndef _WINSOCKAPI_
-#define _WINSOCKAPI_
-#endif
-
-/* the following is a workaround a problem for 'inline' keyword in said
-   header when compiled with Borland C++ 6 */
-#if defined(__BORLANDC__) && !defined(__cplusplus)
-#define inline __inline
-#define _inline __inline
-#endif
-
-#include <ws2tcpip.h>
-
-/* Check if ws2tcpip.h is a recent version which provides getaddrinfo() */
-#if defined(GetAddrInfo)
-#include <wspiapi.h>
-#ifndef SUPPORT_IP6
-  #define SUPPORT_IP6
-#endif
-#endif
-
-#ifndef ECONNRESET
-#define ECONNRESET WSAECONNRESET
-#endif
-#ifndef EINPROGRESS
-#define EINPROGRESS WSAEINPROGRESS
-#endif
-#ifndef EINTR
-#define EINTR WSAEINTR
-#endif
-#ifndef ESHUTDOWN
-#define ESHUTDOWN WSAESHUTDOWN
-#endif
-#ifndef EWOULDBLOCK
-#define EWOULDBLOCK WSAEWOULDBLOCK
-#endif
-
-#endif /* __XML_WSOCKCOMPAT_H__ */
diff -pruN 2.14.6+dfsg-0.1/iso8859x.inc 2.15.0+dfsg-0.3/iso8859x.inc
--- 2.14.6+dfsg-0.1/iso8859x.inc	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/iso8859x.inc	1970-01-01 00:00:00.000000000 +0000
@@ -1,730 +0,0 @@
-/************************************************************************
- * Lookup tables for ISO-8859-2..ISO-8859-16 transcoding                *
- ************************************************************************/
-
-static const unsigned short xmlunicodetable_ISO8859_2 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
-    0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
-    0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
-    0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
-    0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
-    0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
-    0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
-    0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
-    0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
-    0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
-    0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
-    0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_2 [48 + 6 * 64] = {
-    "\x00\x00\x01\x05\x02\x04\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\xa4\x00\x00\xa7\xa8\x00\x00\x00\x00\xad\x00\x00"
-    "\xb0\x00\x00\x00\xb4\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xc3\xe3\xa1\xb1\xc6\xe6\x00\x00\x00\x00\xc8\xe8\xcf\xef"
-    "\xd0\xf0\x00\x00\x00\x00\x00\x00\xca\xea\xcc\xec\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xe5\x00\x00\xa5\xb5\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\x00\xb2\x00\xbd\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\xa3\xb3\xd1\xf1\x00\x00\xd2\xf2\x00\x00\x00\x00\x00\x00\x00"
-    "\xd5\xf5\x00\x00\xc0\xe0\x00\x00\xd8\xf8\xa6\xb6\x00\x00\xaa\xba"
-    "\xa9\xb9\xde\xfe\xab\xbb\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xf9"
-    "\xdb\xfb\x00\x00\x00\x00\x00\x00\x00\xac\xbc\xaf\xbf\xae\xbe\x00"
-    "\x00\xc1\xc2\x00\xc4\x00\x00\xc7\x00\xc9\x00\xcb\x00\xcd\xce\x00"
-    "\x00\x00\x00\xd3\xd4\x00\xd6\xd7\x00\x00\xda\x00\xdc\xdd\x00\xdf"
-    "\x00\xe1\xe2\x00\xe4\x00\x00\xe7\x00\xe9\x00\xeb\x00\xed\xee\x00"
-    "\x00\x00\x00\xf3\xf4\x00\xf6\xf7\x00\x00\xfa\x00\xfc\xfd\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_3 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7,
-    0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b,
-    0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
-    0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c,
-    0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7,
-    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
-    0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
-    0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
-    0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7,
-    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
-    0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
-    0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_3 [48 + 7 * 64] = {
-    "\x04\x00\x01\x06\x02\x05\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\xa3\xa4\x00\x00\xa7\xa8\x00\x00\x00\x00\xad\x00\x00"
-    "\xb0\x00\xb2\xb3\xb4\xb5\x00\xb7\xb8\x00\x00\x00\x00\xbd\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xe6\xc5\xe5\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xf8\xab\xbb"
-    "\xd5\xf5\x00\x00\xa6\xb6\xa1\xb1\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xa9\xb9\x00\x00\xac\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xfe\xaa\xba"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xfd\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xbf\x00\x00\x00"
-    "\xc0\xc1\xc2\x00\xc4\x00\x00\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\x00\xd1\xd2\xd3\xd4\x00\xd6\xd7\x00\xd9\xda\xdb\xdc\x00\x00\xdf"
-    "\xe0\xe1\xe2\x00\xe4\x00\x00\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\x00\xf1\xf2\xf3\xf4\x00\xf6\xf7\x00\xf9\xfa\xfb\xfc\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_4 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
-    0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
-    0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
-    0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
-    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
-    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
-    0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
-    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
-    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
-    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
-    0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
-    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_4 [48 + 6 * 64] = {
-    "\x00\x00\x01\x05\x02\x03\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\xa4\x00\x00\xa7\xa8\x00\x00\x00\x00\xad\x00\xaf"
-    "\xb0\x00\x00\x00\xb4\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00"
-    "\xc0\xe0\x00\x00\xa1\xb1\x00\x00\x00\x00\x00\x00\xc8\xe8\x00\x00"
-    "\xd0\xf0\xaa\xba\x00\x00\xcc\xec\xca\xea\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xab\xbb\x00\x00\x00\x00\xa5\xb5\xcf\xef\x00\x00\xc7\xe7"
-    "\x00\x00\x00\x00\x00\x00\xd3\xf3\xa2\x00\x00\xa6\xb6\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\xd1\xf1\x00\x00\x00\xbd\xbf\xd2\xf2\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\xa3\xb3\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xa9\xb9\x00\x00\x00\x00\xac\xbc\xdd\xfd\xde\xfe\x00\x00\x00\x00"
-    "\x00\x00\xd9\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xbe\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\xb2\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\xc1\xc2\xc3\xc4\xc5\xc6\x00\x00\xc9\x00\xcb\x00\xcd\xce\x00"
-    "\x00\x00\x00\x00\xd4\xd5\xd6\xd7\xd8\x00\xda\xdb\xdc\x00\x00\xdf"
-    "\x00\xe1\xe2\xe3\xe4\xe5\xe6\x00\x00\xe9\x00\xeb\x00\xed\xee\x00"
-    "\x00\x00\x00\x00\xf4\xf5\xf6\xf7\xf8\x00\xfa\xfb\xfc\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_5 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
-    0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
-    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
-    0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
-    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
-    0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
-    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
-    0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
-    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
-    0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
-    0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
-    0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_5 [48 + 6 * 64] = {
-    "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x02\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\xad\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\x00\xae\xaf"
-    "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\x00\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\x00\xfe\xff"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_6 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f,
-    0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
-    0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
-    0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
-    0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
-    0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
-    0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_6 [48 + 5 * 64] = {
-    "\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\xbf"
-    "\x00\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\x00\x00\x00\x00\x00"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\xf0\xf1\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_7 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x2018, 0x2019, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7,
-    0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015,
-    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
-    0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
-    0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
-    0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
-    0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
-    0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
-    0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
-    0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
-    0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
-    0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_7 [48 + 7 * 64] = {
-    "\x04\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x06"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\xa3\x00\x00\xa6\xa7\xa8\xa9\x00\xab\xac\xad\x00\x00"
-    "\xb0\xb1\xb2\xb3\x00\x00\x00\xb7\x00\x00\x00\xbb\x00\xbd\x00\x00"
-    "\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\xaf\x00\x00\xa1\xa2\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\xb4\xb5\xb6\x00\xb8\xb9\xba\x00\xbc\x00\xbe\xbf"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\xd0\xd1\x00\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_8 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
-    0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
-    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
-    0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017,
-    0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
-    0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
-    0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
-    0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x200e, 0x200f, 0x0000,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_8 [48 + 7 * 64] = {
-    "\x02\x00\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\x00\xab\xac\xad\xae\xaf"
-    "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\x00\xbb\xbc\xbd\xbe\x00"
-    "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xfe"
-    "\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_9 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
-    0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
-    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
-    0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
-    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
-    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
-    0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
-    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
-    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
-    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
-    0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
-    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_9 [48 + 5 * 64] = {
-    "\x00\x00\x01\x02\x03\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
-    "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\x00\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\x00\x00\xdf"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\x00\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\x00\x00\xff"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xf0"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xdd\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xfe"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_10 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
-    0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
-    0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
-    0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
-    0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
-    0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
-    0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
-    0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
-    0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
-    0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
-    0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
-    0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_10 [48 + 7 * 64] = {
-    "\x00\x00\x01\x06\x02\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\xad\x00\x00"
-    "\xb0\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xc0\xe0\x00\x00\xa1\xb1\x00\x00\x00\x00\x00\x00\xc8\xe8\x00\x00"
-    "\xa9\xb9\xa2\xb2\x00\x00\xcc\xec\xca\xea\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xa3\xb3\x00\x00\x00\x00\xa5\xb5\xa4\xb4\x00\x00\xc7\xe7"
-    "\x00\x00\x00\x00\x00\x00\xa6\xb6\xff\x00\x00\xa8\xb8\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\xd1\xf1\x00\x00\x00\xaf\xbf\xd2\xf2\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xaa\xba\x00\x00\x00\x00\xab\xbb\xd7\xf7\xae\xbe\x00\x00\x00\x00"
-    "\x00\x00\xd9\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\xbc\x00"
-    "\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\xc1\xc2\xc3\xc4\xc5\xc6\x00\x00\xc9\x00\xcb\x00\xcd\xce\xcf"
-    "\xd0\x00\x00\xd3\xd4\xd5\xd6\x00\xd8\x00\xda\xdb\xdc\xdd\xde\xdf"
-    "\x00\xe1\xe2\xe3\xe4\xe5\xe6\x00\x00\xe9\x00\xeb\x00\xed\xee\xef"
-    "\xf0\x00\x00\xf3\xf4\xf5\xf6\x00\xf8\x00\xfa\xfb\xfc\xfd\xfe\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_11 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
-    0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
-    0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
-    0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
-    0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
-    0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
-    0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
-    0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f,
-    0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
-    0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
-    0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
-    0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_11 [48 + 6 * 64] = {
-    "\x04\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00"
-    "\x00\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
-    "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\x00\x00\x00\x00\xdf"
-    "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_13 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
-    0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
-    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
-    0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
-    0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
-    0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
-    0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
-    0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
-    0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
-    0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
-    0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
-    0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_13 [48 + 7 * 64] = {
-    "\x00\x00\x01\x04\x06\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\xa2\xa3\xa4\x00\xa6\xa7\x00\xa9\x00\xab\xac\xad\xae\x00"
-    "\xb0\xb1\xb2\xb3\x00\xb5\xb6\xb7\x00\xb9\x00\xbb\xbc\xbd\xbe\x00"
-    "\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\xb4\xa1\xa5\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\xc4\xc5\xaf\x00\x00\xc9\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\xd3\x00\xd5\xd6\xd7\xa8\x00\x00\x00\xdc\x00\x00\xdf"
-    "\x00\x00\x00\x00\xe4\xe5\xbf\x00\x00\xe9\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\xf3\x00\xf5\xf6\xf7\xb8\x00\x00\x00\xfc\x00\x00\x00"
-    "\x00\xd9\xf9\xd1\xf1\xd2\xf2\x00\x00\x00\x00\x00\xd4\xf4\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\xaa\xba\x00\x00\xda\xfa\x00\x00\x00\x00"
-    "\xd0\xf0\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xfb\x00\x00\x00\x00"
-    "\x00\x00\xd8\xf8\x00\x00\x00\x00\x00\xca\xea\xdd\xfd\xde\xfe\x00"
-    "\xc2\xe2\x00\x00\xc0\xe0\xc3\xe3\x00\x00\x00\x00\xc8\xe8\x00\x00"
-    "\x00\x00\xc7\xe7\x00\x00\xcb\xeb\xc6\xe6\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xcc\xec\x00\x00\x00\x00\x00\x00\xce\xee\x00\x00\xc1\xe1"
-    "\x00\x00\x00\x00\x00\x00\xcd\xed\x00\x00\x00\xcf\xef\x00\x00\x00"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_14 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
-    0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
-    0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
-    0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
-    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
-    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
-    0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
-    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
-    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
-    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
-    0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
-    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_14 [48 + 10 * 64] = {
-    "\x00\x00\x01\x09\x04\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\xa3\x00\x00\x00\xa7\x00\xa9\x00\x00\x00\xad\xae\x00"
-    "\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x03\x08\x05\x06\x00\x00\x00\x00"
-    "\x00\x00\xa1\xa2\x00\x00\x00\x00\x00\x00\xa6\xab\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xb1"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xa5\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xb2\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xa8\xb8\xaa\xba\xbd\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xac\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\xd0\xf0\xde\xfe\xaf\x00\x00\x00\x00\x00\x00\x00"
-    "\xb4\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\xb7\xb9\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xbb\xbf\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xf7\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\x00\xd1\xd2\xd3\xd4\xd5\xd6\x00\xd8\xd9\xda\xdb\xdc\xdd\x00\xdf"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\x00\xf1\xf2\xf3\xf4\xf5\xf6\x00\xf8\xf9\xfa\xfb\xfc\xfd\x00\xff"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_15 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
-    0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
-    0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
-    0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
-    0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
-    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
-    0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
-    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
-    0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
-    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
-    0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
-    0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_15 [48 + 6 * 64] = {
-    "\x00\x00\x01\x05\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\xa1\xa2\xa3\x00\xa5\x00\xa7\x00\xa9\xaa\xab\xac\xad\xae\xaf"
-    "\xb0\xb1\xb2\xb3\x00\xb5\xb6\xb7\x00\xb9\xba\xbb\x00\x00\x00\xbf"
-    "\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\xbc\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xa6\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\xb4\xb8\x00"
-    "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
-    "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
-};
-
-static const unsigned short xmlunicodetable_ISO8859_16 [128] = {
-    0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-    0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f,
-    0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-    0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f,
-    0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
-    0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
-    0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
-    0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
-    0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
-    0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
-    0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
-    0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
-    0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
-    0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
-    0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
-    0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
-};
-
-static const unsigned char xmltranscodetable_ISO8859_16 [48 + 9 * 64] = {
-    "\x00\x00\x01\x08\x02\x03\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
-    "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
-    "\xa0\x00\x00\x00\x00\x00\x00\xa7\x00\xa9\x00\xab\x00\xad\x00\x00"
-    "\xb0\xb1\x00\x00\x00\x00\xb6\xb7\x00\x00\x00\xbb\x00\x00\x00\x00"
-    "\x00\x00\xc3\xe3\xa1\xa2\xc5\xe5\x00\x00\x00\x00\xb2\xb9\x00\x00"
-    "\xd0\xf0\x00\x00\x00\x00\x00\x00\xdd\xfd\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\xa3\xb3\xd1\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xd5\xf5\xbc\xbd\x00\x00\x00\x00\x00\x00\xd7\xf7\x00\x00\x00\x00"
-    "\xa6\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xd8\xf8\x00\x00\x00\x00\x00\x00\xbe\xac\xae\xaf\xbf\xb4\xb8\x00"
-    "\x06\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xa5\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\xaa\xba\xde\xfe\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-    "\xc0\xc1\xc2\x00\xc4\x00\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
-    "\x00\x00\xd2\xd3\xd4\x00\xd6\x00\x00\xd9\xda\xdb\xdc\x00\x00\xdf"
-    "\xe0\xe1\xe2\x00\xe4\x00\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
-    "\x00\x00\xf2\xf3\xf4\x00\xf6\x00\x00\xf9\xfa\xfb\xfc\x00\x00\xff"
-};
-
diff -pruN 2.14.6+dfsg-0.1/libxml2-config.cmake.cmake.in 2.15.0+dfsg-0.3/libxml2-config.cmake.cmake.in
--- 2.14.6+dfsg-0.1/libxml2-config.cmake.cmake.in	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/libxml2-config.cmake.cmake.in	2025-09-15 11:55:59.000000000 +0000
@@ -95,9 +95,7 @@ set(LIBXML2_SHARED @BUILD_SHARED_LIBS@)
 set(LIBXML2_WITH_ICONV @LIBXML2_WITH_ICONV@)
 set(LIBXML2_WITH_THREADS @LIBXML2_WITH_THREADS@)
 set(LIBXML2_WITH_ICU @LIBXML2_WITH_ICU@)
-set(LIBXML2_WITH_LZMA @LIBXML2_WITH_LZMA@)
 set(LIBXML2_WITH_ZLIB @LIBXML2_WITH_ZLIB@)
-set(LIBXML2_WITH_HTTP @LIBXML2_WITH_HTTP@)
 
 if(NOT LIBXML2_SHARED)
     set(LIBXML2_DEFINITIONS -DLIBXML_STATIC)
@@ -132,16 +130,6 @@ if(NOT LIBXML2_SHARED)
         endif()
     endif()
 
-    if(LIBXML2_WITH_LZMA)
-        find_dependency(LibLZMA)
-        list(APPEND LIBXML2_LIBRARIES    ${LIBLZMA_LIBRARIES})
-        if(NOT LibLZMA_FOUND)
-            set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
-            set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "LibLZMA dependency was not found")
-            return()
-        endif()
-    endif()
-
     if(LIBXML2_WITH_ZLIB)
         find_dependency(ZLIB)
         list(APPEND LIBXML2_LIBRARIES    ${ZLIB_LIBRARIES})
@@ -158,9 +146,6 @@ if(NOT LIBXML2_SHARED)
 
     if(WIN32)
         list(APPEND LIBXML2_LIBRARIES Bcrypt)
-        if(LIBXML2_WITH_HTTP)
-            list(APPEND LIBXML2_LIBRARIES ws2_32)
-        endif()
     endif()
 endif()
 
diff -pruN 2.14.6+dfsg-0.1/libxml2-config.cmake.in 2.15.0+dfsg-0.3/libxml2-config.cmake.in
--- 2.14.6+dfsg-0.1/libxml2-config.cmake.in	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/libxml2-config.cmake.in	2025-09-15 11:55:59.000000000 +0000
@@ -46,9 +46,7 @@ set(LIBXML2_SHARED @BUILD_SHARED_LIBS@)
 set(LIBXML2_WITH_ICONV @WITH_ICONV@)
 set(LIBXML2_WITH_THREADS @WITH_THREADS@)
 set(LIBXML2_WITH_ICU @WITH_ICU@)
-set(LIBXML2_WITH_LZMA @WITH_LZMA@)
 set(LIBXML2_WITH_ZLIB @WITH_ZLIB@)
-set(LIBXML2_WITH_HTTP @WITH_HTTP@)
 
 if(NOT LIBXML2_SHARED)
     set(LIBXML2_DEFINITIONS -DLIBXML_STATIC)
@@ -86,17 +84,6 @@ if(NOT LIBXML2_SHARED)
         endif()
     endif()
 
-    if(LIBXML2_WITH_LZMA)
-        find_dependency(LibLZMA)
-        list(APPEND LIBXML2_LIBRARIES    ${LIBLZMA_LIBRARIES})
-        list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:LibLZMA::LibLZMA>")
-        if(NOT LibLZMA_FOUND)
-            set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
-            set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "LibLZMA dependency was not found")
-            return()
-        endif()
-    endif()
-
     if(LIBXML2_WITH_ZLIB)
         find_dependency(ZLIB)
         list(APPEND LIBXML2_LIBRARIES    ${ZLIB_LIBRARIES})
@@ -116,10 +103,6 @@ if(NOT LIBXML2_SHARED)
     if(WIN32)
         list(APPEND LIBXML2_LIBRARIES Bcrypt)
         list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:Bcrypt>")
-        if(LIBXML2_WITH_HTTP)
-            list(APPEND LIBXML2_LIBRARIES ws2_32)
-            list(APPEND LIBXML2_INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:ws2_32>")
-        endif()
     endif()
 endif()
 
diff -pruN 2.14.6+dfsg-0.1/list.c 2.15.0+dfsg-0.3/list.c
--- 2.14.6+dfsg-0.1/list.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/list.c	2025-09-15 11:55:59.000000000 +0000
@@ -12,7 +12,7 @@
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
  * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
  *
- * Author: Gary.Pennington@uk.sun.com
+ * Author: Gary Pennington
  */
 
 #define IN_LIBXML
@@ -49,11 +49,10 @@ struct _xmlList
  ************************************************************************/
 
 /**
- * xmlLinkDeallocator:
- * @l:  a list
- * @lk:  a link
+ * Unlink and deallocate `lk` from list `l`
  *
- * Unlink and deallocate @lk from list @l
+ * @param l  a list
+ * @param lk  a link
  */
 static void
 xmlLinkDeallocator(xmlListPtr l, xmlLinkPtr lk)
@@ -66,13 +65,11 @@ xmlLinkDeallocator(xmlListPtr l, xmlLink
 }
 
 /**
- * xmlLinkCompare:
- * @data0:  first data
- * @data1:  second data
- *
  * Compares two arbitrary data
  *
- * Returns -1, 0 or 1 depending on whether data1 is greater equal or smaller
+ * @param data0  first data
+ * @param data1  second data
+ * @returns -1, 0 or 1 depending on whether data1 is greater equal or smaller
  *          than data0
  */
 static int
@@ -86,13 +83,11 @@ xmlLinkCompare(const void *data0, const
 }
 
 /**
- * xmlListLowerSearch:
- * @l:  a list
- * @data:  a data
- *
  * Search data in the ordered list walking from the beginning
  *
- * Returns the link containing the data or NULL
+ * @param l  a list
+ * @param data  a data
+ * @returns the link containing the data or NULL
  */
 static xmlLinkPtr
 xmlListLowerSearch(xmlListPtr l, void *data)
@@ -106,13 +101,11 @@ xmlListLowerSearch(xmlListPtr l, void *d
 }
 
 /**
- * xmlListHigherSearch:
- * @l:  a list
- * @data:  a data
- *
  * Search data in the ordered list walking backward from the end
  *
- * Returns the link containing the data or NULL
+ * @param l  a list
+ * @param data  a data
+ * @returns the link containing the data or NULL
  */
 static xmlLinkPtr
 xmlListHigherSearch(xmlListPtr l, void *data)
@@ -126,13 +119,11 @@ xmlListHigherSearch(xmlListPtr l, void *
 }
 
 /**
- * xmlListSearch:
- * @l:  a list
- * @data:  a data
- *
  * Search data in the list
  *
- * Returns the link containing the data or NULL
+ * @param l  a list
+ * @param data  a data
+ * @returns the link containing the data or NULL
  */
 static xmlLinkPtr
 xmlListLinkSearch(xmlListPtr l, void *data)
@@ -151,13 +142,11 @@ xmlListLinkSearch(xmlListPtr l, void *da
 }
 
 /**
- * xmlListLinkReverseSearch:
- * @l:  a list
- * @data:  a data
- *
  * Search data in the list processing backward
  *
- * Returns the link containing the data or NULL
+ * @param l  a list
+ * @param data  a data
+ * @returns the link containing the data or NULL
  */
 static xmlLinkPtr
 xmlListLinkReverseSearch(xmlListPtr l, void *data)
@@ -176,15 +165,13 @@ xmlListLinkReverseSearch(xmlListPtr l, v
 }
 
 /**
- * xmlListCreate:
- * @deallocator:  an optional deallocator function
- * @compare:  an optional comparison function
- *
  * Create a new list
  *
- * Returns the new list or NULL in case of error
+ * @param deallocator  an optional deallocator function
+ * @param compare  an optional comparison function
+ * @returns the new list or NULL in case of error
  */
-xmlListPtr
+xmlList *
 xmlListCreate(xmlListDeallocator deallocator, xmlListDataCompare compare)
 {
     xmlListPtr l;
@@ -216,16 +203,14 @@ xmlListCreate(xmlListDeallocator dealloc
 }
 
 /**
- * xmlListSearch:
- * @l:  a list
- * @data:  a search value
- *
- * Search the list for an existing value of @data
+ * Search the list for an existing value of `data`
  *
- * Returns the value associated to @data or NULL in case of error
+ * @param l  a list
+ * @param data  a search value
+ * @returns the value associated to `data` or NULL in case of error
  */
 void *
-xmlListSearch(xmlListPtr l, void *data)
+xmlListSearch(xmlList *l, void *data)
 {
     xmlLinkPtr lk;
     if (l == NULL)
@@ -237,16 +222,14 @@ xmlListSearch(xmlListPtr l, void *data)
 }
 
 /**
- * xmlListReverseSearch:
- * @l:  a list
- * @data:  a search value
- *
- * Search the list in reverse order for an existing value of @data
+ * Search the list in reverse order for an existing value of `data`
  *
- * Returns the value associated to @data or NULL in case of error
+ * @param l  a list
+ * @param data  a search value
+ * @returns the value associated to `data` or NULL in case of error
  */
 void *
-xmlListReverseSearch(xmlListPtr l, void *data)
+xmlListReverseSearch(xmlList *l, void *data)
 {
     xmlLinkPtr lk;
     if (l == NULL)
@@ -258,16 +241,14 @@ xmlListReverseSearch(xmlListPtr l, void
 }
 
 /**
- * xmlListInsert:
- * @l:  a list
- * @data:  the data
- *
  * Insert data in the ordered list at the beginning for this value
  *
- * Returns 0 in case of success, 1 in case of failure
+ * @param l  a list
+ * @param data  the data
+ * @returns 0 in case of success, 1 in case of failure
  */
 int
-xmlListInsert(xmlListPtr l, void *data)
+xmlListInsert(xmlList *l, void *data)
 {
     xmlLinkPtr lkPlace, lkNew;
 
@@ -288,15 +269,13 @@ xmlListInsert(xmlListPtr l, void *data)
 }
 
 /**
- * xmlListAppend:
- * @l:  a list
- * @data:  the data
- *
  * Insert data in the ordered list at the end for this value
  *
- * Returns 0 in case of success, 1 in case of failure
+ * @param l  a list
+ * @param data  the data
+ * @returns 0 in case of success, 1 in case of failure
  */
-int xmlListAppend(xmlListPtr l, void *data)
+int xmlListAppend(xmlList *l, void *data)
 {
     xmlLinkPtr lkPlace, lkNew;
 
@@ -316,12 +295,11 @@ int xmlListAppend(xmlListPtr l, void *da
 }
 
 /**
- * xmlListDelete:
- * @l:  a list
- *
  * Deletes the list and its associated data
+ *
+ * @param l  a list
  */
-void xmlListDelete(xmlListPtr l)
+void xmlListDelete(xmlList *l)
 {
     if (l == NULL)
         return;
@@ -332,16 +310,14 @@ void xmlListDelete(xmlListPtr l)
 }
 
 /**
- * xmlListRemoveFirst:
- * @l:  a list
- * @data:  list data
- *
  * Remove the first instance associated to data in the list
  *
- * Returns 1 if a deallocation occurred, or 0 if not found
+ * @param l  a list
+ * @param data  list data
+ * @returns 1 if a deallocation occurred, or 0 if not found
  */
 int
-xmlListRemoveFirst(xmlListPtr l, void *data)
+xmlListRemoveFirst(xmlList *l, void *data)
 {
     xmlLinkPtr lk;
 
@@ -357,16 +333,14 @@ xmlListRemoveFirst(xmlListPtr l, void *d
 }
 
 /**
- * xmlListRemoveLast:
- * @l:  a list
- * @data:  list data
- *
  * Remove the last instance associated to data in the list
  *
- * Returns 1 if a deallocation occurred, or 0 if not found
+ * @param l  a list
+ * @param data  list data
+ * @returns 1 if a deallocation occurred, or 0 if not found
  */
 int
-xmlListRemoveLast(xmlListPtr l, void *data)
+xmlListRemoveLast(xmlList *l, void *data)
 {
     xmlLinkPtr lk;
 
@@ -382,16 +356,14 @@ xmlListRemoveLast(xmlListPtr l, void *da
 }
 
 /**
- * xmlListRemoveAll:
- * @l:  a list
- * @data:  list data
- *
  * Remove the all instance associated to data in the list
  *
- * Returns the number of deallocation, or 0 if not found
+ * @param l  a list
+ * @param data  list data
+ * @returns the number of deallocation, or 0 if not found
  */
 int
-xmlListRemoveAll(xmlListPtr l, void *data)
+xmlListRemoveAll(xmlList *l, void *data)
 {
     int count=0;
 
@@ -404,13 +376,12 @@ xmlListRemoveAll(xmlListPtr l, void *dat
 }
 
 /**
- * xmlListClear:
- * @l:  a list
- *
  * Remove the all data in the list
+ *
+ * @param l  a list
  */
 void
-xmlListClear(xmlListPtr l)
+xmlListClear(xmlList *l)
 {
     xmlLinkPtr  lk;
 
@@ -426,15 +397,13 @@ xmlListClear(xmlListPtr l)
 }
 
 /**
- * xmlListEmpty:
- * @l:  a list
- *
  * Is the list empty ?
  *
- * Returns 1 if the list is empty, 0 if not empty and -1 in case of error
+ * @param l  a list
+ * @returns 1 if the list is empty, 0 if not empty and -1 in case of error
  */
 int
-xmlListEmpty(xmlListPtr l)
+xmlListEmpty(xmlList *l)
 {
     if (l == NULL)
         return(-1);
@@ -442,15 +411,13 @@ xmlListEmpty(xmlListPtr l)
 }
 
 /**
- * xmlListFront:
- * @l:  a list
- *
  * Get the first element in the list
  *
- * Returns the first element in the list, or NULL
+ * @param l  a list
+ * @returns the first element in the list, or NULL
  */
-xmlLinkPtr
-xmlListFront(xmlListPtr l)
+xmlLink *
+xmlListFront(xmlList *l)
 {
     if (l == NULL)
         return(NULL);
@@ -458,15 +425,13 @@ xmlListFront(xmlListPtr l)
 }
 
 /**
- * xmlListEnd:
- * @l:  a list
- *
  * Get the last element in the list
  *
- * Returns the last element in the list, or NULL
+ * @param l  a list
+ * @returns the last element in the list, or NULL
  */
-xmlLinkPtr
-xmlListEnd(xmlListPtr l)
+xmlLink *
+xmlListEnd(xmlList *l)
 {
     if (l == NULL)
         return(NULL);
@@ -474,15 +439,13 @@ xmlListEnd(xmlListPtr l)
 }
 
 /**
- * xmlListSize:
- * @l:  a list
- *
  * Get the number of elements in the list
  *
- * Returns the number of elements in the list or -1 in case of error
+ * @param l  a list
+ * @returns the number of elements in the list or -1 in case of error
  */
 int
-xmlListSize(xmlListPtr l)
+xmlListSize(xmlList *l)
 {
     xmlLinkPtr lk;
     int count=0;
@@ -495,42 +458,38 @@ xmlListSize(xmlListPtr l)
 }
 
 /**
- * xmlListPopFront:
- * @l:  a list
- *
  * Removes the first element in the list
+ *
+ * @param l  a list
  */
 void
-xmlListPopFront(xmlListPtr l)
+xmlListPopFront(xmlList *l)
 {
     if(!xmlListEmpty(l))
         xmlLinkDeallocator(l, l->sentinel->next);
 }
 
 /**
- * xmlListPopBack:
- * @l:  a list
- *
  * Removes the last element in the list
+ *
+ * @param l  a list
  */
 void
-xmlListPopBack(xmlListPtr l)
+xmlListPopBack(xmlList *l)
 {
     if(!xmlListEmpty(l))
         xmlLinkDeallocator(l, l->sentinel->prev);
 }
 
 /**
- * xmlListPushFront:
- * @l:  a list
- * @data:  new data
- *
  * add the new data at the beginning of the list
  *
- * Returns 1 if successful, 0 otherwise
+ * @param l  a list
+ * @param data  new data
+ * @returns 1 if successful, 0 otherwise
  */
 int
-xmlListPushFront(xmlListPtr l, void *data)
+xmlListPushFront(xmlList *l, void *data)
 {
     xmlLinkPtr lkPlace, lkNew;
 
@@ -550,16 +509,14 @@ xmlListPushFront(xmlListPtr l, void *dat
 }
 
 /**
- * xmlListPushBack:
- * @l:  a list
- * @data:  new data
- *
  * add the new data at the end of the list
  *
- * Returns 1 if successful, 0 otherwise
+ * @param l  a list
+ * @param data  new data
+ * @returns 1 if successful, 0 otherwise
  */
 int
-xmlListPushBack(xmlListPtr l, void *data)
+xmlListPushBack(xmlList *l, void *data)
 {
     xmlLinkPtr lkPlace, lkNew;
 
@@ -579,15 +536,13 @@ xmlListPushBack(xmlListPtr l, void *data
 }
 
 /**
- * xmlLinkGetData:
- * @lk:  a link
- *
  * See Returns.
  *
- * Returns a pointer to the data referenced from this link
+ * @param lk  a link
+ * @returns a pointer to the data referenced from this link
  */
 void *
-xmlLinkGetData(xmlLinkPtr lk)
+xmlLinkGetData(xmlLink *lk)
 {
     if (lk == NULL)
         return(NULL);
@@ -595,13 +550,12 @@ xmlLinkGetData(xmlLinkPtr lk)
 }
 
 /**
- * xmlListReverse:
- * @l:  a list
- *
  * Reverse the order of the elements in the list
+ *
+ * @param l  a list
  */
 void
-xmlListReverse(xmlListPtr l)
+xmlListReverse(xmlList *l)
 {
     xmlLinkPtr lk;
     xmlLinkPtr lkPrev;
@@ -620,13 +574,12 @@ xmlListReverse(xmlListPtr l)
 }
 
 /**
- * xmlListSort:
- * @l:  a list
- *
  * Sort all the elements in the list
+ *
+ * @param l  a list
  */
 void
-xmlListSort(xmlListPtr l)
+xmlListSort(xmlList *l)
 {
     xmlListPtr lTemp;
 
@@ -650,16 +603,15 @@ xmlListSort(xmlListPtr l)
 }
 
 /**
- * xmlListWalk:
- * @l:  a list
- * @walker:  a processing function
- * @user:  a user parameter passed to the walker function
- *
  * Walk all the element of the first from first to last and
  * apply the walker function to it
+ *
+ * @param l  a list
+ * @param walker  a processing function
+ * @param user  a user parameter passed to the walker function
  */
 void
-xmlListWalk(xmlListPtr l, xmlListWalker walker, void *user) {
+xmlListWalk(xmlList *l, xmlListWalker walker, void *user) {
     xmlLinkPtr lk;
 
     if ((l == NULL) || (walker == NULL))
@@ -671,16 +623,15 @@ xmlListWalk(xmlListPtr l, xmlListWalker
 }
 
 /**
- * xmlListReverseWalk:
- * @l:  a list
- * @walker:  a processing function
- * @user:  a user parameter passed to the walker function
- *
  * Walk all the element of the list in reverse order and
  * apply the walker function to it
+ *
+ * @param l  a list
+ * @param walker  a processing function
+ * @param user  a user parameter passed to the walker function
  */
 void
-xmlListReverseWalk(xmlListPtr l, xmlListWalker walker, void *user) {
+xmlListReverseWalk(xmlList *l, xmlListWalker walker, void *user) {
     xmlLinkPtr lk;
 
     if ((l == NULL) || (walker == NULL))
@@ -692,30 +643,27 @@ xmlListReverseWalk(xmlListPtr l, xmlList
 }
 
 /**
- * xmlListMerge:
- * @l1:  the original list
- * @l2:  the new list
- *
  * include all the elements of the second list in the first one and
  * clear the second list
+ *
+ * @param l1  the original list
+ * @param l2  the new list
  */
 void
-xmlListMerge(xmlListPtr l1, xmlListPtr l2)
+xmlListMerge(xmlList *l1, xmlList *l2)
 {
     xmlListCopy(l1, l2);
     xmlListClear(l2);
 }
 
 /**
- * xmlListDup:
- * @old:  the list
- *
  * Duplicate the list
  *
- * Returns a new copy of the list or NULL in case of error
+ * @param old  the list
+ * @returns a new copy of the list or NULL in case of error
  */
-xmlListPtr
-xmlListDup(xmlListPtr old)
+xmlList *
+xmlListDup(xmlList *old)
 {
     xmlListPtr cur;
 
@@ -736,16 +684,14 @@ xmlListDup(xmlListPtr old)
 }
 
 /**
- * xmlListCopy:
- * @cur:  the new list
- * @old:  the old list
- *
  * Move all the element from the old list in the new list
  *
- * Returns 0 in case of success 1 in case of error
+ * @param cur  the new list
+ * @param old  the old list
+ * @returns 0 in case of success 1 in case of error
  */
 int
-xmlListCopy(xmlListPtr cur, xmlListPtr old)
+xmlListCopy(xmlList *cur, xmlList *old)
 {
     /* Walk the old tree and insert the data into the new one */
     xmlLinkPtr lk;
diff -pruN 2.14.6+dfsg-0.1/meson.build 2.15.0+dfsg-0.3/meson.build
--- 2.14.6+dfsg-0.1/meson.build	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/meson.build	2025-09-15 11:55:59.000000000 +0000
@@ -28,6 +28,7 @@ dir_bin = dir_prefix / get_option('bindi
 dir_include = dir_prefix / get_option('includedir')
 dir_pkginclude = dir_include / meson.project_name()
 dir_lib = dir_prefix / get_option('libdir')
+dir_man = dir_prefix / get_option('mandir')
 dir_data = dir_prefix / get_option('datadir')
 dir_doc = dir_data / 'doc' / meson.project_name()
 dir_locale = dir_prefix / get_option('localedir')
@@ -36,10 +37,8 @@ dir_locale = dir_prefix / get_option('lo
 
 host_os = host_machine.system()
 
-cygwin = 'cygwin'
-windows = 'windows'
-sys_cygwin = cygwin.contains(host_os)
-sys_windows = windows.contains(host_os)
+sys_cygwin = host_os == 'cygwin'
+sys_windows = host_os == 'windows'
 
 libxml2_cflags = []
 xml_cflags = ''
@@ -72,6 +71,7 @@ global_args = [
     '-Wwrite-strings',
     '-Wstrict-prototypes',
     '-Wmissing-prototypes',
+    '-Wmissing-variable-declarations',
     '-Wno-long-long',
     '-Wno-format-extra-args',
     '-Wno-array-bounds',
@@ -82,10 +82,11 @@ add_project_arguments(global_args, langu
 # options
 
 # disabled by default
+want_docs = get_option('docs').enabled()
 want_http = get_option('http').enabled()
 want_icu = get_option('icu').enabled()
 want_legacy = get_option('legacy').enabled()
-want_lzma = get_option('lzma').enabled()
+want_python = get_option('python').enabled()
 want_thread_alloc = get_option('thread-alloc').enabled()
 want_tls = get_option('tls').enabled()
 
@@ -108,9 +109,6 @@ want_iconv = want_minimum ? feature.enab
 feature = get_option('iso8859x')
 want_iso8859x = want_minimum ? feature.enabled() : feature.allowed()
 
-feature = get_option('python')
-want_python = want_minimum ? feature.enabled() : feature.allowed()
-
 feature = get_option('modules')
 want_modules = want_minimum ? feature.enabled() : feature.allowed()
 
@@ -196,7 +194,7 @@ want_relaxng = want_minimum ? feature.en
 feature = get_option('schematron') \
     .require(want_pattern, error_message: 'schematron requires pattern') \
     .require(want_xpath, error_message: 'schematron requires xpath')
-want_schematron = want_minimum ? feature.enabled() : feature.allowed()
+want_schematron = want_legacy ? feature.allowed() : feature.enabled()
 
 feature = get_option('writer') \
     .require(want_output, error_message: 'writer requires output') \
@@ -260,7 +258,6 @@ config_h.set_quoted('XML_SYSCONFDIR',
 # header files
 xml_check_headers = [
     [ 'stdint.h', true ],
-    [ 'poll.h', want_http ],
 ]
 
 foreach header : xml_check_headers
@@ -314,28 +311,30 @@ if cc.has_function_attribute('destructor
 endif
 
 ### DSO support
-if sys_cygwin == true
-    module_extension = '.dll'
-elif sys_windows == true
+if sys_cygwin or sys_windows
     module_extension = '.dll'
 else
     module_extension = '.so'
 endif
 
-if want_modules and host_machine.system() != 'windows'
+if want_modules and not sys_windows
     if meson.version().version_compare('>=0.62')
         dl_dep = dependency('dl', required: false)
     else
+        dl_dep = dependency('', required: false)
+    endif
+    if not dl_dep.found()
+        cc.has_header_symbol('dlfcn.h', 'dlopen', required: true)
         dl_dep = cc.find_library('dl', required: false)
     endif
     if dl_dep.found()
-        config_h.set10('HAVE_DLOPEN', true)
         xml_deps += dl_dep
     endif
+    config_h.set10('HAVE_DLOPEN', true)
 endif
 
 ### threads
-if want_threads and host_os != 'windows'
+if want_threads and not sys_windows
     threads_dep = dependency('threads')
     xml_deps += threads_dep
 else
@@ -363,40 +362,11 @@ if sys_windows == true
     xml_deps += bcrypt_dep
 endif
 
-### inet
-if want_http == true
-    if sys_windows == true
-        net_dep = cc.find_library('ws2_32', required: true)
-        xml_deps += net_dep
-    else
-        net_dep = dependency('', required: false)
-        has_in_libc = cc.has_function('gethostbyname')
-        if has_in_libc == false
-            net_dep = cc.find_library('nsl', required: true)
-            if net_dep.found()
-                has_in_nsl = cc.has_function(
-                    'gethostbyname',
-                    dependencies: net_dep,
-                    required: false,
-                )
-                if has_in_nsl == true
-                    xml_deps += net_dep
-                endif
-            endif
-        endif
-    endif
-endif
-
 ### zlib
 if want_zlib
     xml_deps += dependency('zlib')
 endif
 
-### lzma
-if want_lzma
-    xml_deps += dependency('liblzma')
-endif
-
 # icu
 if want_icu
     icu_dep = dependency('icu-uc')
@@ -448,12 +418,11 @@ xml_opt_src = [
     [want_debug, ['debugXML.c']],
     [want_html, ['HTMLparser.c', 'HTMLtree.c']],
     [want_http, ['nanohttp.c']],
-    [want_lzma, ['xzlib.c']],
     [want_modules, ['xmlmodule.c']],
     [want_output, ['xmlsave.c']],
     [want_pattern, ['pattern.c']],
     [want_reader, ['xmlreader.c']],
-    [want_regexps, ['xmlregexp.c', 'xmlunicode.c']],
+    [want_regexps, ['xmlregexp.c']],
     [want_relaxng, ['relaxng.c']],
     [want_schemas, ['xmlschemas.c', 'xmlschemastypes.c']],
     [want_schematron, ['schematron.c']],
@@ -477,13 +446,14 @@ foreach file : xml_opt_src
     endif
 endforeach
 
+xml_src_files = files(xml_src)
 v_min_compat = 14
 so_version = v_maj + v_min_compat
 age = v_min - v_min_compat
 darwin_compat = v_maj + v_min + 1
 xml_lib = library(
     'xml2',
-    files(xml_src),
+    xml_src_files,
     c_args: libxml2_cflags,
     dependencies: xml_deps,
     include_directories: config_dir,
@@ -558,23 +528,31 @@ foreach check, deps : checks
     endif
 endforeach
 
-sh = find_program('sh', required: false)
+if want_output
+    sh = find_program('sh', required: false)
 
-if sh.found()
-    if want_debug
-        test('xmllint shell', sh,
-             args: [ 'test/scripts/test.sh', xmllint.full_path() ],
-             workdir: meson.current_source_dir())
-    endif
-    if want_catalog and want_output
-        test('xmlcatalog shell', sh,
-             args: [ 'test/catalogs/test.sh', xmlcatalog.full_path() ],
-             workdir: meson.current_source_dir())
+    if sh.found()
+        if want_debug
+            test('xmllint shell', sh,
+                 args: [ 'test/scripts/test.sh', xmllint.full_path() ],
+                 workdir: meson.current_source_dir())
+        endif
+        if want_catalog
+            test('xmlcatalog shell', sh,
+                 args: [ 'test/catalogs/test.sh', xmlcatalog.full_path() ],
+                 workdir: meson.current_source_dir())
+            test('xmlcatalog shell SGML', sh,
+                 args: [ 'test/catalogs/test_sgml.sh', xmlcatalog.full_path() ],
+                 workdir: meson.current_source_dir())
+        endif
     endif
 endif
 
 subdir('example')
-subdir('doc')
+
+if want_docs or want_python
+    subdir('doc')
+endif
 
 if want_python == true
     subdir('python')
@@ -605,13 +583,11 @@ config_cmake.set('INSTALL_LIBDIR', dir_l
 config_cmake.set('VERSION', meson.project_version())
 config_cmake.set10('BUILD_SHARED_LIBS',
                    get_option('default_library') != 'static')
-config_cmake.set('WITH_HTTP', want_http.to_int().to_string())
-config_cmake.set('WITH_ICONV', want_iconv.to_int().to_string())
-config_cmake.set('WITH_ICU', want_icu.to_int().to_string())
-config_cmake.set('WITH_LZMA', want_lzma.to_int().to_string())
-config_cmake.set('WITH_MODULES', want_modules.to_int().to_string())
-config_cmake.set('WITH_THREADS', want_threads.to_int().to_string())
-config_cmake.set('WITH_ZLIB', want_zlib.to_int().to_string())
+config_cmake.set10('WITH_ICONV', want_iconv)
+config_cmake.set10('WITH_ICU', want_icu)
+config_cmake.set10('WITH_MODULES', want_modules)
+config_cmake.set10('WITH_THREADS', want_threads)
+config_cmake.set10('WITH_ZLIB', want_zlib)
 config_cmake.set('XML_CFLAGS', xml_cflags)
 configure_file(
     input: 'libxml2-config.cmake.in',
@@ -637,6 +613,7 @@ summary(
         'c14n': want_c14n,
         'catalog': want_catalog,
         'debug': want_debug,
+        'docs': want_docs,
         'history': want_history,
         'html': want_html,
         'http': want_http,
@@ -644,7 +621,6 @@ summary(
         'icu': want_icu,
         'iso8859x': want_iso8859x,
         'legacy': want_legacy,
-        'lzma': want_lzma,
         'modules': want_modules,
         'output': want_output,
         'pattern': want_pattern,
diff -pruN 2.14.6+dfsg-0.1/meson_options.txt 2.15.0+dfsg-0.3/meson_options.txt
--- 2.14.6+dfsg-0.1/meson_options.txt	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/meson_options.txt	2025-09-15 11:55:59.000000000 +0000
@@ -1,39 +1,3 @@
-
-# AC_ARG_WITH / AC_ARG_ENABLE in configure.ac
-# [X] c14n
-# [X] catalog
-# [X] debugging
-# [X] history
-# [X] html
-# [X] http
-# [X] iconv
-# [X] icu         - not minimum
-# [X] iso8859x
-# [X] legacy
-# [X] lzma
-# [X] modules
-# [X] output
-# [X] pattern
-# [X] push
-# [ ] python
-# [X] reader
-# [X] readline
-# [X] regexps
-# [X] sax1
-# [X] schemas
-# [X] schematron
-# [X] threads
-# [X] thread-alloc
-# [X] tls
-# [X] valid
-# [X] writer
-# [X] xinclude
-# [X] xpath
-# [X] xptr
-# [X] zlib
-
-# [X] minimum
-
 option('c14n',
   type: 'feature',
   description: 'Canonical XML 1.0 support'
@@ -49,6 +13,11 @@ option('debugging',
   description: 'Debugging module and shell'
 )
 
+option('docs',
+  type: 'feature',
+  description: 'Build documentation'
+)
+
 option('history',
   type: 'feature',
   description: 'History support for shell'
@@ -61,7 +30,7 @@ option('html',
 
 option('http',
   type: 'feature',
-  description: 'HTTP support'
+  description: 'ABI compatibility for removed HTTP support'
 )
 
 # TODO meson custom dependency
@@ -87,11 +56,6 @@ option('legacy',
   description: 'Maximum ABI compatibility'
 )
 
-option('lzma',
-  type: 'feature',
-  description: 'LZMA support'
-)
-
 option('modules',
   type: 'feature',
   description: 'Dynamic modules support'
diff -pruN 2.14.6+dfsg-0.1/nanohttp.c 2.15.0+dfsg-0.3/nanohttp.c
--- 2.14.6+dfsg-0.1/nanohttp.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/nanohttp.c	2025-09-15 11:55:59.000000000 +0000
@@ -1,1807 +1,305 @@
 /*
- * nanohttp.c: minimalist HTTP GET implementation to fetch external subsets.
- *             focuses on size, streamability, reentrancy and portability
- *
- * This is clearly not a general purpose HTTP implementation
- * If you look for one, check:
- *         http://www.w3.org/Library/
+ * nanohttp.c: ABI compatibility stubs for removed HTTP client
  *
  * See Copyright for the status of this software.
- *
- * daniel@veillard.com
  */
 
 #define IN_LIBXML
 #include "libxml.h"
 
-#ifdef LIBXML_HTTP_ENABLED
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#include <fcntl.h>
-
-#ifdef _WIN32
-
-#include <io.h>
-#include <wsockcompat.h>
-#define XML_SOCKLEN_T int
-
-#else /* _WIN32 */
-
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <unistd.h>
-
-#ifdef HAVE_POLL_H
-  #include <poll.h>
-#else
-  #include <sys/select.h>
-#endif
-
-/* This can be disabled if you don't have getaddrinfo */
-#define SUPPORT_IP6
-#define XML_SOCKLEN_T socklen_t
-
-#endif /* _WIN32 */
-
-#ifdef LIBXML_ZLIB_ENABLED
-#include <zlib.h>
-#endif
-
-#include <libxml/xmlerror.h>
-#include <libxml/xmlmemory.h>
-#include <libxml/parser.h> /* for xmlStr(n)casecmp() */
-#include <libxml/nanohttp.h>
-#include <libxml/uri.h>
-
-#include "private/error.h"
-#include "private/io.h"
-
-/**
- * A couple portability macros
- */
-#ifndef _WINSOCKAPI_
-#define closesocket(s) close(s)
-#define SOCKET int
-#define INVALID_SOCKET (-1)
-#endif
-
-#define GETHOSTBYNAME_ARG_CAST (char *)
-#define SEND_ARG2_CAST (char *)
-
-#define XML_NANO_HTTP_MAX_REDIR	10
-
-#define XML_NANO_HTTP_CHUNK	4096
-
-#define XML_NANO_HTTP_CLOSED	0
-#define XML_NANO_HTTP_WRITE	1
-#define XML_NANO_HTTP_READ	2
-#define XML_NANO_HTTP_NONE	4
-
-#define __xmlIOErr(domain, code, extra) ((void) 0)
-
-typedef struct xmlNanoHTTPCtxt {
-    char *protocol;	/* the protocol name */
-    char *hostname;	/* the host name */
-    int port;		/* the port */
-    char *path;		/* the path within the URL */
-    char *query;	/* the query string */
-    SOCKET fd;		/* the file descriptor for the socket */
-    int state;		/* WRITE / READ / CLOSED */
-    char *out;		/* buffer sent (zero terminated) */
-    char *outptr;	/* index within the buffer sent */
-    char *in;		/* the receiving buffer */
-    char *content;	/* the start of the content */
-    char *inptr;	/* the next byte to read from network */
-    char *inrptr;	/* the next byte to give back to the client */
-    int inlen;		/* len of the input buffer */
-    int last;		/* return code for last operation */
-    int returnValue;	/* the protocol return value */
-    int version;        /* the protocol version */
-    int ContentLength;  /* specified content length from HTTP header */
-    char *contentType;	/* the MIME type for the input */
-    char *location;	/* the new URL in case of redirect */
-    char *authHeader;	/* contents of {WWW,Proxy}-Authenticate header */
-    char *encoding;	/* encoding extracted from the contentType */
-    char *mimeType;	/* Mime-Type extracted from the contentType */
-#ifdef LIBXML_ZLIB_ENABLED
-    z_stream *strm;	/* Zlib stream object */
-    int usesGzip;	/* "Content-Encoding: gzip" was detected */
-#endif
-} xmlNanoHTTPCtxt, *xmlNanoHTTPCtxtPtr;
-
-static int initialized = 0;
-static char *proxy = NULL;	 /* the proxy name if any */
-static int proxyPort;	/* the proxy port if any */
-static unsigned int timeout = 60;/* the select() timeout in seconds */
+#ifdef LIBXML_HTTP_STUBS_ENABLED
 
-static int xmlNanoHTTPFetchContent( void * ctx, char ** ptr, int * len );
+#include <stddef.h>
 
-/**
- * xmlHTTPErrMemory:
- * @extra:  extra information
- *
- * Handle an out of memory condition
- */
-static void
-xmlHTTPErrMemory(void)
-{
-    xmlRaiseMemoryError(NULL, NULL, NULL, XML_FROM_HTTP, NULL);
-}
-
-/**
- * A portability function
- */
-static int socket_errno(void) {
-#ifdef _WINSOCKAPI_
-    int err = WSAGetLastError();
-    switch(err) {
-        case WSAECONNRESET:
-            return(ECONNRESET);
-        case WSAEINPROGRESS:
-            return(EINPROGRESS);
-        case WSAEINTR:
-            return(EINTR);
-        case WSAESHUTDOWN:
-            return(ESHUTDOWN);
-        case WSAEWOULDBLOCK:
-            return(EWOULDBLOCK);
-        default:
-            return(err);
-    }
-#else
-    return(errno);
-#endif
-}
+#include <libxml/nanohttp.h>
+#include <libxml/xmlIO.h>
 
 /**
- * xmlNanoHTTPInit:
- *
- * Initialize the HTTP protocol layer.
- * Currently it just checks for proxy information
+ * @deprecated HTTP support was removed in 2.15.
  */
-
 void
 xmlNanoHTTPInit(void) {
-    const char *env;
-#ifdef _WINSOCKAPI_
-    WSADATA wsaData;
-#endif
-
-    if (initialized)
-	return;
-
-#ifdef _WINSOCKAPI_
-    if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)
-	return;
-#endif
-
-    if (proxy == NULL) {
-	proxyPort = 80;
-	env = getenv("no_proxy");
-	if (env && ((env[0] == '*') && (env[1] == 0)))
-	    goto done;
-	env = getenv("http_proxy");
-	if (env != NULL) {
-	    xmlNanoHTTPScanProxy(env);
-	    goto done;
-	}
-	env = getenv("HTTP_PROXY");
-	if (env != NULL) {
-	    xmlNanoHTTPScanProxy(env);
-	    goto done;
-	}
-    }
-done:
-    initialized = 1;
 }
 
 /**
- * xmlNanoHTTPCleanup:
- *
- * Cleanup the HTTP protocol layer.
+ * @deprecated HTTP support was removed in 2.15.
  */
-
 void
 xmlNanoHTTPCleanup(void) {
-    if (proxy != NULL) {
-	xmlFree(proxy);
-	proxy = NULL;
-    }
-#ifdef _WINSOCKAPI_
-    if (initialized)
-	WSACleanup();
-#endif
-    initialized = 0;
-    return;
-}
-
-/**
- * xmlNanoHTTPScanURL:
- * @ctxt:  an HTTP context
- * @URL:  The URL used to initialize the context
- *
- * (Re)Initialize an HTTP context by parsing the URL and finding
- * the protocol host port and path it indicates.
- */
-
-static void
-xmlNanoHTTPScanURL(xmlNanoHTTPCtxtPtr ctxt, const char *URL) {
-    xmlURIPtr uri;
-    int len;
-
-    /*
-     * Clear any existing data from the context
-     */
-    if (ctxt->protocol != NULL) {
-        xmlFree(ctxt->protocol);
-	ctxt->protocol = NULL;
-    }
-    if (ctxt->hostname != NULL) {
-        xmlFree(ctxt->hostname);
-	ctxt->hostname = NULL;
-    }
-    if (ctxt->path != NULL) {
-        xmlFree(ctxt->path);
-	ctxt->path = NULL;
-    }
-    if (ctxt->query != NULL) {
-        xmlFree(ctxt->query);
-	ctxt->query = NULL;
-    }
-    if (URL == NULL) return;
-
-    uri = xmlParseURIRaw(URL, 1);
-    if (uri == NULL)
-	return;
-
-    if ((uri->scheme == NULL) || (uri->server == NULL)) {
-	xmlFreeURI(uri);
-	return;
-    }
-
-    ctxt->protocol = xmlMemStrdup(uri->scheme);
-    /* special case of IPv6 addresses, the [] need to be removed */
-    if ((uri->server != NULL) && (*uri->server == '[')) {
-        len = strlen(uri->server);
-	if ((len > 2) && (uri->server[len - 1] == ']')) {
-	    ctxt->hostname = (char *) xmlCharStrndup(uri->server + 1, len -2);
-	} else
-	    ctxt->hostname = xmlMemStrdup(uri->server);
-    } else
-	ctxt->hostname = xmlMemStrdup(uri->server);
-    if (uri->path != NULL)
-	ctxt->path = xmlMemStrdup(uri->path);
-    else
-	ctxt->path = xmlMemStrdup("/");
-    if (uri->query != NULL)
-	ctxt->query = xmlMemStrdup(uri->query);
-    if (uri->port != 0)
-	ctxt->port = uri->port;
-
-    xmlFreeURI(uri);
 }
 
 /**
- * xmlNanoHTTPScanProxy:
- * @URL:  The proxy URL used to initialize the proxy context
- *
- * (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 information.
+ * @deprecated HTTP support was removed in 2.15.
+ * @param URL  The proxy URL used to initialize the proxy context
  */
-
 void
-xmlNanoHTTPScanProxy(const char *URL) {
-    xmlURIPtr uri;
-
-    if (proxy != NULL) {
-        xmlFree(proxy);
-	proxy = NULL;
-    }
-    proxyPort = 0;
-
-    if (URL == NULL) return;
-
-    uri = xmlParseURIRaw(URL, 1);
-    if ((uri == NULL) || (uri->scheme == NULL) ||
-	(strcmp(uri->scheme, "http")) || (uri->server == NULL)) {
-	__xmlIOErr(XML_FROM_HTTP, XML_HTTP_URL_SYNTAX, "Syntax Error\n");
-	if (uri != NULL)
-	    xmlFreeURI(uri);
-	return;
-    }
-
-    proxy = xmlMemStrdup(uri->server);
-    if (uri->port != 0)
-	proxyPort = uri->port;
-
-    xmlFreeURI(uri);
-}
-
-/**
- * xmlNanoHTTPNewCtxt:
- * @URL:  The URL used to initialize the context
- *
- * Allocate and initialize a new HTTP context.
- *
- * Returns an HTTP context or NULL in case of error.
- */
-
-static xmlNanoHTTPCtxtPtr
-xmlNanoHTTPNewCtxt(const char *URL) {
-    xmlNanoHTTPCtxtPtr ret;
-
-    ret = (xmlNanoHTTPCtxtPtr) xmlMalloc(sizeof(xmlNanoHTTPCtxt));
-    if (ret == NULL) {
-        xmlHTTPErrMemory();
-        return(NULL);
-    }
-
-    memset(ret, 0, sizeof(xmlNanoHTTPCtxt));
-    ret->port = 80;
-    ret->returnValue = 0;
-    ret->fd = INVALID_SOCKET;
-    ret->ContentLength = -1;
-
-    xmlNanoHTTPScanURL(ret, URL);
-
-    return(ret);
+xmlNanoHTTPScanProxy(const char *URL ATTRIBUTE_UNUSED) {
 }
 
 /**
- * xmlNanoHTTPFreeCtxt:
- * @ctxt:  an HTTP context
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Frees the context after closing the connection.
+ * @param URL  The URL to load
+ * @param contentType  if available the Content-Type information will be
+ *                returned at that location
+ * @returns NULL.
  */
-
-static void
-xmlNanoHTTPFreeCtxt(xmlNanoHTTPCtxtPtr ctxt) {
-    if (ctxt == NULL) return;
-    if (ctxt->hostname != NULL) xmlFree(ctxt->hostname);
-    if (ctxt->protocol != NULL) xmlFree(ctxt->protocol);
-    if (ctxt->path != NULL) xmlFree(ctxt->path);
-    if (ctxt->query != NULL) xmlFree(ctxt->query);
-    if (ctxt->out != NULL) xmlFree(ctxt->out);
-    if (ctxt->in != NULL) xmlFree(ctxt->in);
-    if (ctxt->contentType != NULL) xmlFree(ctxt->contentType);
-    if (ctxt->encoding != NULL) xmlFree(ctxt->encoding);
-    if (ctxt->mimeType != NULL) xmlFree(ctxt->mimeType);
-    if (ctxt->location != NULL) xmlFree(ctxt->location);
-    if (ctxt->authHeader != NULL) xmlFree(ctxt->authHeader);
-#ifdef LIBXML_ZLIB_ENABLED
-    if (ctxt->strm != NULL) {
-	inflateEnd(ctxt->strm);
-	xmlFree(ctxt->strm);
-    }
-#endif
-
-    ctxt->state = XML_NANO_HTTP_NONE;
-    if (ctxt->fd != INVALID_SOCKET) closesocket(ctxt->fd);
-    ctxt->fd = INVALID_SOCKET;
-    xmlFree(ctxt);
+void*
+xmlNanoHTTPOpen(const char *URL ATTRIBUTE_UNUSED, char **contentType) {
+    if (contentType != NULL) *contentType = NULL;
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPSend:
- * @ctxt:  an HTTP context
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Send the input needed to initiate the processing on the server side
- * Returns number of bytes sent or -1 on error.
+ * @param URL  The URL to load
+ * @param contentType  if available the Content-Type information will be
+ *                returned at that location
+ * @param redir  if available the redirected URL will be returned
+ * @returns NULL.
  */
-
-static int
-xmlNanoHTTPSend(xmlNanoHTTPCtxtPtr ctxt, const char *xmt_ptr, int outlen)
-{
-    int total_sent = 0;
-#ifdef HAVE_POLL_H
-    struct pollfd p;
-#else
-    struct timeval tv;
-    fd_set wfd;
-#endif
-
-    if ((ctxt->state & XML_NANO_HTTP_WRITE) && (xmt_ptr != NULL)) {
-        while (total_sent < outlen) {
-            int nsent = send(ctxt->fd, SEND_ARG2_CAST (xmt_ptr + total_sent),
-                             outlen - total_sent, 0);
-
-            if (nsent > 0)
-                total_sent += nsent;
-            else if ((nsent == -1) &&
-#if defined(EAGAIN) && EAGAIN != EWOULDBLOCK
-                     (socket_errno() != EAGAIN) &&
-#endif
-                     (socket_errno() != EWOULDBLOCK)) {
-                __xmlIOErr(XML_FROM_HTTP, 0, "send failed\n");
-                if (total_sent == 0)
-                    total_sent = -1;
-                break;
-            } else {
-                /*
-                 * No data sent
-                 * Since non-blocking sockets are used, wait for
-                 * socket to be writable or default timeout prior
-                 * to retrying.
-                 */
-#ifndef HAVE_POLL_H
-#ifndef _WINSOCKAPI_
-                if (ctxt->fd > FD_SETSIZE)
-                    return -1;
-#endif
-
-                tv.tv_sec = timeout;
-                tv.tv_usec = 0;
-                FD_ZERO(&wfd);
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4018)
-#endif
-                FD_SET(ctxt->fd, &wfd);
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-                (void) select(ctxt->fd + 1, NULL, &wfd, NULL, &tv);
-#else
-                p.fd = ctxt->fd;
-                p.events = POLLOUT;
-                (void) poll(&p, 1, timeout * 1000);
-#endif /* !HAVE_POLL_H */
-            }
-        }
-    }
-
-    return total_sent;
+void*
+xmlNanoHTTPOpenRedir(const char *URL ATTRIBUTE_UNUSED, char **contentType,
+                     char **redir) {
+    if (contentType != NULL) *contentType = NULL;
+    if (redir != NULL) *redir = NULL;
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPRecv:
- * @ctxt:  an HTTP context
- *
- * Read information coming from the HTTP connection.
- * This is a blocking call (but it blocks in select(), not read()).
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns the number of byte read or -1 in case of error.
+ * @param ctx  the HTTP context
+ * @param dest  a buffer
+ * @param len  the buffer length
+ * @returns -1.
  */
-
-static int
-xmlNanoHTTPRecv(xmlNanoHTTPCtxtPtr ctxt)
-{
-#ifdef HAVE_POLL_H
-    struct pollfd p;
-#else
-    fd_set rfd;
-    struct timeval tv;
-#endif
-
-
-    while (ctxt->state & XML_NANO_HTTP_READ) {
-        if (ctxt->in == NULL) {
-            ctxt->in = xmlMalloc(65000);
-            if (ctxt->in == NULL) {
-                xmlHTTPErrMemory();
-                ctxt->last = -1;
-                return (-1);
-            }
-            ctxt->inlen = 65000;
-            ctxt->inptr = ctxt->content = ctxt->inrptr = ctxt->in;
-        }
-        if (ctxt->inrptr > ctxt->in + XML_NANO_HTTP_CHUNK) {
-            int delta = ctxt->inrptr - ctxt->in;
-            int len = ctxt->inptr - ctxt->inrptr;
-
-            memmove(ctxt->in, ctxt->inrptr, len);
-            ctxt->inrptr -= delta;
-            ctxt->content -= delta;
-            ctxt->inptr -= delta;
-        }
-        if ((ctxt->in + ctxt->inlen) < (ctxt->inptr + XML_NANO_HTTP_CHUNK)) {
-            int d_inptr = ctxt->inptr - ctxt->in;
-            int d_content = ctxt->content - ctxt->in;
-            int d_inrptr = ctxt->inrptr - ctxt->in;
-            char *tmp_ptr = ctxt->in;
-
-            ctxt->inlen *= 2;
-            ctxt->in = (char *) xmlRealloc(tmp_ptr, ctxt->inlen);
-            if (ctxt->in == NULL) {
-                xmlHTTPErrMemory();
-                xmlFree(tmp_ptr);
-                ctxt->last = -1;
-                return (-1);
-            }
-            ctxt->inptr = ctxt->in + d_inptr;
-            ctxt->content = ctxt->in + d_content;
-            ctxt->inrptr = ctxt->in + d_inrptr;
-        }
-        ctxt->last = recv(ctxt->fd, ctxt->inptr, XML_NANO_HTTP_CHUNK, 0);
-        if (ctxt->last > 0) {
-            ctxt->inptr += ctxt->last;
-            return (ctxt->last);
-        }
-        if (ctxt->last == 0) {
-            return (0);
-        }
-        if (ctxt->last == -1) {
-            switch (socket_errno()) {
-                case EINPROGRESS:
-                case EWOULDBLOCK:
-#if defined(EAGAIN) && EAGAIN != EWOULDBLOCK
-                case EAGAIN:
-#endif
-                    break;
-
-                case ECONNRESET:
-                case ESHUTDOWN:
-                    return (0);
-
-                default:
-                    __xmlIOErr(XML_FROM_HTTP, 0, "recv failed\n");
-                    return (-1);
-            }
-        }
-#ifdef HAVE_POLL_H
-        p.fd = ctxt->fd;
-        p.events = POLLIN;
-        if ((poll(&p, 1, timeout * 1000) < 1)
-#if defined(EINTR)
-            && (errno != EINTR)
-#endif
-            )
-            return (0);
-#else /* !HAVE_POLL_H */
-#ifndef _WINSOCKAPI_
-        if (ctxt->fd > FD_SETSIZE)
-            return 0;
-#endif
-
-        tv.tv_sec = timeout;
-        tv.tv_usec = 0;
-        FD_ZERO(&rfd);
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4018)
-#endif
-
-        FD_SET(ctxt->fd, &rfd);
-
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-        if ((select(ctxt->fd + 1, &rfd, NULL, NULL, &tv) < 1)
-#if defined(EINTR)
-            && (socket_errno() != EINTR)
-#endif
-            )
-            return (0);
-#endif /* !HAVE_POLL_H */
-    }
-    return (0);
+int
+xmlNanoHTTPRead(void *ctx ATTRIBUTE_UNUSED, void *dest ATTRIBUTE_UNUSED,
+                int len ATTRIBUTE_UNUSED) {
+    return(-1);
 }
 
 /**
- * xmlNanoHTTPReadLine:
- * @ctxt:  an HTTP context
- *
- * Read one line in the HTTP server output, usually for extracting
- * the HTTP protocol information from the answer header.
- *
- * Returns a newly allocated string with a copy of the line, or NULL
- *         which indicate the end of the input.
+ * @deprecated HTTP support was removed in 2.15.
+ * @param ctx  the HTTP context
  */
-
-static char *
-xmlNanoHTTPReadLine(xmlNanoHTTPCtxtPtr ctxt) {
-    char buf[4096];
-    char *bp = buf;
-    int	rc;
-
-    while (bp - buf < 4095) {
-	if (ctxt->inrptr == ctxt->inptr) {
-	    if ( (rc = xmlNanoHTTPRecv(ctxt)) == 0) {
-		if (bp == buf)
-		    return(NULL);
-		else
-		    *bp = 0;
-		return(xmlMemStrdup(buf));
-	    }
-	    else if ( rc == -1 ) {
-	        return ( NULL );
-	    }
-	}
-	*bp = *ctxt->inrptr++;
-	if (*bp == '\n') {
-	    *bp = 0;
-	    return(xmlMemStrdup(buf));
-	}
-	if (*bp != '\r')
-	    bp++;
-    }
-    buf[4095] = 0;
-    return(xmlMemStrdup(buf));
-}
-
-
-/**
- * xmlNanoHTTPScanAnswer:
- * @ctxt:  an HTTP context
- * @line:  an HTTP header line
- *
- * Try to extract useful information from the server answer.
- * We currently parse and process:
- *  - The HTTP revision/ return code
- *  - The Content-Type, Mime-Type and charset used
- *  - The Location for redirect processing.
- *
- * Returns -1 in case of failure, the file descriptor number otherwise
- */
-
-static void
-xmlNanoHTTPScanAnswer(xmlNanoHTTPCtxtPtr ctxt, const char *line) {
-    const char *cur = line;
-
-    if (line == NULL) return;
-
-    if (!strncmp(line, "HTTP/", 5)) {
-        int version = 0;
-	int ret = 0;
-
-	cur += 5;
-	while ((*cur >= '0') && (*cur <= '9')) {
-	    version *= 10;
-	    version += *cur - '0';
-	    cur++;
-	}
-	if (*cur == '.') {
-	    cur++;
-	    if ((*cur >= '0') && (*cur <= '9')) {
-		version *= 10;
-		version += *cur - '0';
-		cur++;
-	    }
-	    while ((*cur >= '0') && (*cur <= '9'))
-		cur++;
-	} else
-	    version *= 10;
-	if ((*cur != ' ') && (*cur != '\t')) return;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if ((*cur < '0') || (*cur > '9')) return;
-	while ((*cur >= '0') && (*cur <= '9')) {
-	    ret *= 10;
-	    ret += *cur - '0';
-	    cur++;
-	}
-	if ((*cur != 0) && (*cur != ' ') && (*cur != '\t')) return;
-	ctxt->returnValue = ret;
-        ctxt->version = version;
-    } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"Content-Type:", 13)) {
-        const xmlChar *charset, *last, *mime;
-        cur += 13;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if (ctxt->contentType != NULL)
-	    xmlFree(ctxt->contentType);
-	ctxt->contentType = xmlMemStrdup(cur);
-	mime = (const xmlChar *) cur;
-	last = mime;
-	while ((*last != 0) && (*last != ' ') && (*last != '\t') &&
-	       (*last != ';') && (*last != ','))
-	    last++;
-	if (ctxt->mimeType != NULL)
-	    xmlFree(ctxt->mimeType);
-	ctxt->mimeType = (char *) xmlStrndup(mime, last - mime);
-	charset = xmlStrstr(BAD_CAST ctxt->contentType, BAD_CAST "charset=");
-	if (charset != NULL) {
-	    charset += 8;
-	    last = charset;
-	    while ((*last != 0) && (*last != ' ') && (*last != '\t') &&
-	           (*last != ';') && (*last != ','))
-		last++;
-	    if (ctxt->encoding != NULL)
-	        xmlFree(ctxt->encoding);
-	    ctxt->encoding = (char *) xmlStrndup(charset, last - charset);
-	}
-    } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"ContentType:", 12)) {
-        const xmlChar *charset, *last, *mime;
-        cur += 12;
-	if (ctxt->contentType != NULL) return;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	ctxt->contentType = xmlMemStrdup(cur);
-	mime = (const xmlChar *) cur;
-	last = mime;
-	while ((*last != 0) && (*last != ' ') && (*last != '\t') &&
-	       (*last != ';') && (*last != ','))
-	    last++;
-	if (ctxt->mimeType != NULL)
-	    xmlFree(ctxt->mimeType);
-	ctxt->mimeType = (char *) xmlStrndup(mime, last - mime);
-	charset = xmlStrstr(BAD_CAST ctxt->contentType, BAD_CAST "charset=");
-	if (charset != NULL) {
-	    charset += 8;
-	    last = charset;
-	    while ((*last != 0) && (*last != ' ') && (*last != '\t') &&
-	           (*last != ';') && (*last != ','))
-		last++;
-	    if (ctxt->encoding != NULL)
-	        xmlFree(ctxt->encoding);
-	    ctxt->encoding = (char *) xmlStrndup(charset, last - charset);
-	}
-    } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"Location:", 9)) {
-        cur += 9;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if (ctxt->location != NULL)
-	    xmlFree(ctxt->location);
-	if (*cur == '/') {
-	    xmlChar *tmp_http = xmlStrdup(BAD_CAST "http://");
-	    xmlChar *tmp_loc =
-	        xmlStrcat(tmp_http, (const xmlChar *) ctxt->hostname);
-	    ctxt->location =
-	        (char *) xmlStrcat (tmp_loc, (const xmlChar *) cur);
-	} else {
-	    ctxt->location = xmlMemStrdup(cur);
-	}
-    } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"WWW-Authenticate:", 17)) {
-        cur += 17;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if (ctxt->authHeader != NULL)
-	    xmlFree(ctxt->authHeader);
-	ctxt->authHeader = xmlMemStrdup(cur);
-    } else if (!xmlStrncasecmp(BAD_CAST line, BAD_CAST"Proxy-Authenticate:", 19)) {
-        cur += 19;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if (ctxt->authHeader != NULL)
-	    xmlFree(ctxt->authHeader);
-	ctxt->authHeader = xmlMemStrdup(cur);
-#ifdef LIBXML_ZLIB_ENABLED
-    } else if ( !xmlStrncasecmp( BAD_CAST line, BAD_CAST"Content-Encoding:", 17) ) {
-	cur += 17;
-	while ((*cur == ' ') || (*cur == '\t')) cur++;
-	if ( !xmlStrncasecmp( BAD_CAST cur, BAD_CAST"gzip", 4) ) {
-	    ctxt->usesGzip = 1;
-
-	    ctxt->strm = xmlMalloc(sizeof(z_stream));
-
-	    if (ctxt->strm != NULL) {
-		ctxt->strm->zalloc = Z_NULL;
-		ctxt->strm->zfree = Z_NULL;
-		ctxt->strm->opaque = Z_NULL;
-		ctxt->strm->avail_in = 0;
-		ctxt->strm->next_in = Z_NULL;
-
-		inflateInit2( ctxt->strm, 31 );
-	    }
-	}
-#endif
-    } else if ( !xmlStrncasecmp( BAD_CAST line, BAD_CAST"Content-Length:", 15) ) {
-	cur += 15;
-	ctxt->ContentLength = strtol( cur, NULL, 10 );
-    }
+void
+xmlNanoHTTPClose(void *ctx ATTRIBUTE_UNUSED) {
 }
 
 /**
- * xmlNanoHTTPConnectAttempt:
- * @addr:  a socket address structure
- *
- * Attempt a connection to the given IP:port endpoint. It forces
- * non-blocking semantic on the socket, and allow 60 seconds for
- * the host to answer.
- *
- * Returns -1 in case of failure, the file descriptor number otherwise
- */
-
-static SOCKET
-xmlNanoHTTPConnectAttempt(struct sockaddr *addr)
-{
-#ifndef HAVE_POLL_H
-    fd_set wfd;
-#ifdef _WINSOCKAPI_
-    fd_set xfd;
-#endif
-    struct timeval tv;
-#else /* !HAVE_POLL_H */
-    struct pollfd p;
-#endif /* !HAVE_POLL_H */
-    int status;
-
-    int addrlen;
-
-    SOCKET s;
-
-#ifdef SUPPORT_IP6
-    if (addr->sa_family == AF_INET6) {
-        s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP);
-        addrlen = sizeof(struct sockaddr_in6);
-    } else
-#endif
-    {
-        s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
-        addrlen = sizeof(struct sockaddr_in);
-    }
-    if (s == INVALID_SOCKET) {
-        __xmlIOErr(XML_FROM_HTTP, 0, "socket failed\n");
-        return INVALID_SOCKET;
-    }
-#ifdef _WINSOCKAPI_
-    {
-        u_long one = 1;
-
-        status = ioctlsocket(s, FIONBIO, &one) == SOCKET_ERROR ? -1 : 0;
-    }
-#else /* _WINSOCKAPI_ */
-#if defined(VMS)
-    {
-        int enable = 1;
-
-        status = ioctl(s, FIONBIO, &enable);
-    }
-#else /* VMS */
-    if ((status = fcntl(s, F_GETFL, 0)) != -1) {
-#ifdef O_NONBLOCK
-        status |= O_NONBLOCK;
-#else /* O_NONBLOCK */
-#ifdef F_NDELAY
-        status |= F_NDELAY;
-#endif /* F_NDELAY */
-#endif /* !O_NONBLOCK */
-        status = fcntl(s, F_SETFL, status);
-    }
-    if (status < 0) {
-        __xmlIOErr(XML_FROM_HTTP, 0, "error setting non-blocking IO\n");
-        closesocket(s);
-        return INVALID_SOCKET;
-    }
-#endif /* !VMS */
-#endif /* !_WINSOCKAPI_ */
-
-    if (connect(s, addr, addrlen) == -1) {
-        switch (socket_errno()) {
-            case EINPROGRESS:
-            case EWOULDBLOCK:
-                break;
-            default:
-                __xmlIOErr(XML_FROM_HTTP, 0,
-                           "error connecting to HTTP server");
-                closesocket(s);
-                return INVALID_SOCKET;
-        }
-    }
-#ifndef HAVE_POLL_H
-    tv.tv_sec = timeout;
-    tv.tv_usec = 0;
-
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4018)
-#endif
-#ifndef _WINSOCKAPI_
-    if (s > FD_SETSIZE)
-        return INVALID_SOCKET;
-#endif
-    FD_ZERO(&wfd);
-    FD_SET(s, &wfd);
-
-#ifdef _WINSOCKAPI_
-    FD_ZERO(&xfd);
-    FD_SET(s, &xfd);
-
-    switch (select(s + 1, NULL, &wfd, &xfd, &tv))
-#else
-    switch (select(s + 1, NULL, &wfd, NULL, &tv))
-#endif
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#else /* !HAVE_POLL_H */
-    p.fd = s;
-    p.events = POLLOUT;
-    switch (poll(&p, 1, timeout * 1000))
-#endif /* !HAVE_POLL_H */
-
-    {
-        case 0:
-            /* Time out */
-            __xmlIOErr(XML_FROM_HTTP, 0, "Connect attempt timed out");
-            closesocket(s);
-            return INVALID_SOCKET;
-        case -1:
-            /* Ermm.. ?? */
-            __xmlIOErr(XML_FROM_HTTP, 0, "Connect failed");
-            closesocket(s);
-            return INVALID_SOCKET;
-    }
-
-#ifndef HAVE_POLL_H
-    if (FD_ISSET(s, &wfd)
-#ifdef _WINSOCKAPI_
-        || FD_ISSET(s, &xfd)
-#endif
-        )
-#else /* !HAVE_POLL_H */
-    if (p.revents == POLLOUT)
-#endif /* !HAVE_POLL_H */
-    {
-        XML_SOCKLEN_T len;
-
-        len = sizeof(status);
-#ifdef SO_ERROR
-        if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *) &status, &len) <
-            0) {
-            /* Solaris error code */
-            __xmlIOErr(XML_FROM_HTTP, 0, "getsockopt failed\n");
-            closesocket(s);
-            return INVALID_SOCKET;
-        }
-#endif
-        if (status) {
-            __xmlIOErr(XML_FROM_HTTP, 0,
-                       "Error connecting to remote host");
-            closesocket(s);
-            errno = status;
-            return INVALID_SOCKET;
-        }
-    } else {
-        /* pbm */
-        __xmlIOErr(XML_FROM_HTTP, 0, "select failed\n");
-        closesocket(s);
-        return INVALID_SOCKET;
-    }
-
-    return (s);
-}
-
-/**
- * xmlNanoHTTPConnectHost:
- * @host:  the host name
- * @port:  the port number
- *
- * Attempt a connection to the given host:port endpoint. It tries
- * the multiple IP provided by the DNS if available.
- *
- * Returns -1 in case of failure, the file descriptor number otherwise
- */
-
-static SOCKET
-xmlNanoHTTPConnectHost(const char *host, int port)
-{
-    struct sockaddr *addr = NULL;
-    struct sockaddr_in sockin;
-
-#ifdef SUPPORT_IP6
-    struct sockaddr_in6 sockin6;
-#endif
-    SOCKET s;
-
-    memset (&sockin, 0, sizeof(sockin));
-
-#if defined(SUPPORT_IP6)
-    {
-	int status;
-	struct addrinfo hints, *res, *result;
-
-        memset (&sockin6, 0, sizeof(sockin6));
-
-	result = NULL;
-	memset (&hints, 0,sizeof(hints));
-	hints.ai_socktype = SOCK_STREAM;
-
-	status = getaddrinfo (host, NULL, &hints, &result);
-	if (status) {
-	    __xmlIOErr(XML_FROM_HTTP, 0, "getaddrinfo failed\n");
-	    return INVALID_SOCKET;
-	}
-
-	for (res = result; res; res = res->ai_next) {
-	    if (res->ai_family == AF_INET) {
-		if ((size_t)res->ai_addrlen > sizeof(sockin)) {
-		    __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
-		    freeaddrinfo (result);
-		    return INVALID_SOCKET;
-		}
-		memcpy (&sockin, res->ai_addr, res->ai_addrlen);
-		sockin.sin_port = htons (port);
-		addr = (struct sockaddr *)&sockin;
-	    } else if (res->ai_family == AF_INET6) {
-		if ((size_t)res->ai_addrlen > sizeof(sockin6)) {
-		    __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
-		    freeaddrinfo (result);
-		    return INVALID_SOCKET;
-		}
-		memcpy (&sockin6, res->ai_addr, res->ai_addrlen);
-		sockin6.sin6_port = htons (port);
-		addr = (struct sockaddr *)&sockin6;
-	    } else
-		continue;              /* for */
-
-	    s = xmlNanoHTTPConnectAttempt (addr);
-	    if (s != INVALID_SOCKET) {
-		freeaddrinfo (result);
-		return (s);
-	    }
-	}
-
-	if (result)
-	    freeaddrinfo (result);
-    }
-#else
-    {
-        struct hostent *h;
-        struct in_addr ia;
-        int i;
-
-	h = gethostbyname (GETHOSTBYNAME_ARG_CAST host);
-	if (h == NULL) {
-
-/*
- * Okay, I got fed up by the non-portability of this error message
- * extraction code. it work on Linux, if it work on your platform
- * and one want to enable it, send me the defined(foobar) needed
- */
-#if defined(HOST_NOT_FOUND) && defined(__linux__)
-	    const char *h_err_txt = "";
-
-	    switch (h_errno) {
-		case HOST_NOT_FOUND:
-		    h_err_txt = "Authoritative host not found";
-		    break;
-
-		case TRY_AGAIN:
-		    h_err_txt =
-			"Non-authoritative host not found or server failure.";
-		    break;
-
-		case NO_RECOVERY:
-		    h_err_txt =
-			"Non-recoverable errors:  FORMERR, REFUSED, or NOTIMP.";
-		    break;
-
-#ifdef NO_ADDRESS
-		case NO_ADDRESS:
-		    h_err_txt =
-			"Valid name, no data record of requested type.";
-		    break;
-#endif
-
-		default:
-		    h_err_txt = "No error text defined.";
-		    break;
-	    }
-	    __xmlIOErr(XML_FROM_HTTP, 0, h_err_txt);
-#else
-	    __xmlIOErr(XML_FROM_HTTP, 0, "Failed to resolve host");
-#endif
-	    return INVALID_SOCKET;
-	}
-
-	for (i = 0; h->h_addr_list[i]; i++) {
-	    if (h->h_addrtype == AF_INET) {
-		/* A records (IPv4) */
-		if ((unsigned int) h->h_length > sizeof(ia)) {
-		    __xmlIOErr(XML_FROM_HTTP, 0, "address size mismatch\n");
-		    return INVALID_SOCKET;
-		}
-		memcpy (&ia, h->h_addr_list[i], h->h_length);
-		sockin.sin_family = h->h_addrtype;
-		sockin.sin_addr = ia;
-		sockin.sin_port = (unsigned short)htons ((unsigned short)port);
-		addr = (struct sockaddr *) &sockin;
-	    } else
-		break;              /* for */
-
-	    s = xmlNanoHTTPConnectAttempt (addr);
-	    if (s != INVALID_SOCKET)
-		return (s);
-	}
-    }
-#endif
-
-    return INVALID_SOCKET;
-}
-
-
-/**
- * xmlNanoHTTPOpen:
- * @URL:  The URL to load
- * @contentType:  if available the Content-Type information will be
- *                returned at that location
- *
- * This function try to open a connection to the indicated resource
- * via HTTP GET.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns NULL in case of failure, otherwise a request handler.
- *     The contentType, if provided must be freed by the caller
+ * @param URL  The URL to load
+ * @param method  the HTTP method to use
+ * @param input  the input string if any
+ * @param contentType  the Content-Type information IN and OUT
+ * @param redir  the redirected URL OUT
+ * @param headers  the extra headers
+ * @param ilen  input length
+ * @returns NULL.
  */
-
 void*
-xmlNanoHTTPOpen(const char *URL, char **contentType) {
+xmlNanoHTTPMethodRedir(const char *URL ATTRIBUTE_UNUSED,
+                       const char *method ATTRIBUTE_UNUSED,
+                       const char *input ATTRIBUTE_UNUSED,
+                       char **contentType, char **redir,
+                       const char *headers ATTRIBUTE_UNUSED,
+                       int ilen ATTRIBUTE_UNUSED) {
     if (contentType != NULL) *contentType = NULL;
-    return(xmlNanoHTTPMethod(URL, NULL, NULL, contentType, NULL, 0));
+    if (redir != NULL) *redir = NULL;
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPOpenRedir:
- * @URL:  The URL to load
- * @contentType:  if available the Content-Type information will be
- *                returned at that location
- * @redir: if available the redirected URL will be returned
- *
- * This function try to open a connection to the indicated resource
- * via HTTP GET.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns NULL in case of failure, otherwise a request handler.
- *     The contentType, if provided must be freed by the caller
+ * @param URL  The URL to load
+ * @param method  the HTTP method to use
+ * @param input  the input string if any
+ * @param contentType  the Content-Type information IN and OUT
+ * @param headers  the extra headers
+ * @param ilen  input length
+ * @returns NULL.
  */
-
 void*
-xmlNanoHTTPOpenRedir(const char *URL, char **contentType, char **redir) {
+xmlNanoHTTPMethod(const char *URL ATTRIBUTE_UNUSED,
+                  const char *method ATTRIBUTE_UNUSED,
+                  const char *input ATTRIBUTE_UNUSED,
+                  char **contentType, const char *headers ATTRIBUTE_UNUSED,
+                  int ilen ATTRIBUTE_UNUSED) {
     if (contentType != NULL) *contentType = NULL;
-    if (redir != NULL) *redir = NULL;
-    return(xmlNanoHTTPMethodRedir(URL, NULL, NULL, contentType, redir, NULL,0));
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPRead:
- * @ctx:  the HTTP context
- * @dest:  a buffer
- * @len:  the buffer length
- *
- * This function tries to read @len bytes from the existing HTTP connection
- * and saves them in @dest. This is a blocking call.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns the number of byte read. 0 is an indication of an end of connection.
- *         -1 indicates a parameter error.
+ * @param URL  The URL to load
+ * @param filename  the filename where the content should be saved
+ * @param contentType  if available the Content-Type information will be
+ *                returned at that location
+ * @returns -1.
  */
 int
-xmlNanoHTTPRead(void *ctx, void *dest, int len) {
-    xmlNanoHTTPCtxtPtr ctxt = (xmlNanoHTTPCtxtPtr) ctx;
-#ifdef LIBXML_ZLIB_ENABLED
-    int bytes_read = 0;
-    int orig_avail_in;
-    int z_ret;
-#endif
-
-    if (ctx == NULL) return(-1);
-    if (dest == NULL) return(-1);
-    if (len <= 0) return(0);
-
-#ifdef LIBXML_ZLIB_ENABLED
-    if (ctxt->usesGzip == 1) {
-        if (ctxt->strm == NULL) return(0);
-
-        ctxt->strm->next_out = dest;
-        ctxt->strm->avail_out = len;
-	ctxt->strm->avail_in = ctxt->inptr - ctxt->inrptr;
-
-        while (ctxt->strm->avail_out > 0 &&
-	       (ctxt->strm->avail_in > 0 || xmlNanoHTTPRecv(ctxt) > 0)) {
-            orig_avail_in = ctxt->strm->avail_in =
-			    ctxt->inptr - ctxt->inrptr - bytes_read;
-            ctxt->strm->next_in = BAD_CAST (ctxt->inrptr + bytes_read);
-
-            z_ret = inflate(ctxt->strm, Z_NO_FLUSH);
-            bytes_read += orig_avail_in - ctxt->strm->avail_in;
-
-            if (z_ret != Z_OK) break;
-	}
-
-        ctxt->inrptr += bytes_read;
-        return(len - ctxt->strm->avail_out);
-    }
-#endif
-
-    while (ctxt->inptr - ctxt->inrptr < len) {
-        if (xmlNanoHTTPRecv(ctxt) <= 0) break;
-    }
-    if (ctxt->inptr - ctxt->inrptr < len)
-        len = ctxt->inptr - ctxt->inrptr;
-    if (len > 0) {
-        memcpy(dest, ctxt->inrptr, len);
-        ctxt->inrptr += len;
-    }
-    return(len);
-}
-
-/**
- * xmlNanoHTTPClose:
- * @ctx:  the HTTP context
- *
- * This function closes an HTTP context, it ends up the connection and
- * free all data related to it.
- */
-void
-xmlNanoHTTPClose(void *ctx) {
-    xmlNanoHTTPCtxtPtr ctxt = (xmlNanoHTTPCtxtPtr) ctx;
-
-    if (ctx == NULL) return;
-
-    xmlNanoHTTPFreeCtxt(ctxt);
+xmlNanoHTTPFetch(const char *URL ATTRIBUTE_UNUSED,
+                 const char *filename ATTRIBUTE_UNUSED, char **contentType) {
+    if (contentType != NULL) *contentType = NULL;
+    return(-1);
 }
 
-
+#ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlNanoHTTPHostnameMatch:
- * @pattern: The pattern as it appears in no_proxy environment variable
- * @hostname: The hostname to test as it appears in the URL
- *
- * This function tests whether a given hostname matches a pattern. The pattern
- * usually is a token from the no_proxy environment variable. Wildcards in the
- * pattern are not supported.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns true, iff hostname matches the pattern.
+ * @param ctxt  the HTTP context
+ * @param filename  the filename where the content should be saved
+ * @returns -1.
  */
-
-static int 
-xmlNanoHTTPHostnameMatch(const char *pattern, const char *hostname) {
-    int idx_pattern, idx_hostname;
-    const char * pattern_start;
-
-    if (!pattern || *pattern == '\0' || !hostname)
-	return 0;
-
-    /* Ignore trailing '.' */
-    if (*pattern == '.') {
-        idx_pattern = strlen(pattern) -1;
-        pattern_start = pattern + 1;
-    }
-    else {
-        idx_pattern = strlen(pattern);
-        pattern_start = pattern;
-    }
-    idx_hostname = strlen(hostname);
-
-    for (; idx_pattern >= 0 && idx_hostname >= 0; 
-           --idx_pattern, --idx_hostname) {
-	if (tolower((unsigned char)pattern_start[idx_pattern]) !=
-            tolower((unsigned char)hostname[idx_hostname]))
-	    break;
-    }
-
-    return idx_pattern == -1 && (idx_hostname == -1|| hostname[idx_hostname] == '.');
+int
+xmlNanoHTTPSave(void *ctxt ATTRIBUTE_UNUSED,
+                const char *filename ATTRIBUTE_UNUSED) {
+    return(-1);
 }
-
+#endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlNanoHTTPBypassProxy:
- * @hostname: The hostname as it appears in the URL
+ * @deprecated HTTP support was removed in 2.15.
  *
- * This function evaluates the no_proxy environment variable and returns
- * whether the proxy server should be bypassed for a given host.
- *
- * Returns true, iff a proxy server should be bypassed for the given hostname.
+ * @param ctx  the HTTP context
+ * @returns -1.
  */
-
-static int
-xmlNanoHTTPBypassProxy(const char *hostname) {
-    size_t envlen;
-    char *env = getenv("no_proxy"), *cpy=NULL, *p=NULL;
-    if (!env)
-	return 0;
-
-    /* (Avoid strdup because it's not portable.) */
-    envlen = strlen(env) + 1;
-    cpy = xmlMalloc(envlen);
-    memcpy(cpy, env, envlen);
-    env = cpy;
-
-    /* The remainder of the function is basically a tokenizing: */
-    while (isspace((unsigned char)*env))
-    	++env;
-    if (*env == '\0') {
-    	xmlFree(cpy);
-	return 0;
-    }
-
-    p = env;
-    while (*env) {
-
-    	if (*env != ',') {
-	    ++env;
-	    continue;
-	}
-
-	*(env++) = '\0';
-	if (xmlNanoHTTPHostnameMatch(p, hostname)) {
-	    xmlFree(cpy);
-	    return 1;
-	}
-
-	while (isspace((unsigned char)*env))
-	    ++env;
-	p = env;
-    }
-    if (xmlNanoHTTPHostnameMatch(p, hostname)) {
-    	xmlFree(cpy);
-    	return 1;
-    }
-
-    xmlFree(cpy);
-    return 0;
+int
+xmlNanoHTTPReturnCode(void *ctx ATTRIBUTE_UNUSED) {
+    return(-1);
 }
 
-
 /**
- * xmlNanoHTTPMethodRedir:
- * @URL:  The URL to load
- * @method:  the HTTP method to use
- * @input:  the input string if any
- * @contentType:  the Content-Type information IN and OUT
- * @redir:  the redirected URL OUT
- * @headers:  the extra headers
- * @ilen:  input length
- *
- * 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.
- *
- * Returns NULL in case of failure, otherwise a request handler.
- *     The contentType, or redir, if provided must be freed by the caller
- */
-
-void*
-xmlNanoHTTPMethodRedir(const char *URL, const char *method, const char *input,
-                  char **contentType, char **redir,
-		  const char *headers, int ilen ) {
-    xmlNanoHTTPCtxtPtr ctxt;
-    char *bp, *p;
-    int blen;
-    SOCKET ret;
-    int nbRedirects = 0;
-    int use_proxy;
-    char *redirURL = NULL;
-
-    if (URL == NULL) return(NULL);
-    if (method == NULL) method = "GET";
-    xmlNanoHTTPInit();
-
-retry:
-    if (redirURL == NULL) {
-	ctxt = xmlNanoHTTPNewCtxt(URL);
-	if (ctxt == NULL)
-	    return(NULL);
-    } else {
-	ctxt = xmlNanoHTTPNewCtxt(redirURL);
-	if (ctxt == NULL)
-	    return(NULL);
-	ctxt->location = xmlMemStrdup(redirURL);
-    }
-
-    if ((ctxt->protocol == NULL) || (strcmp(ctxt->protocol, "http"))) {
-	__xmlIOErr(XML_FROM_IO, XML_IO_UNSUPPORTED_PROTOCOL, ctxt->protocol);
-        xmlNanoHTTPFreeCtxt(ctxt);
-	if (redirURL != NULL) xmlFree(redirURL);
-        return(NULL);
-    }
-    if (ctxt->hostname == NULL) {
-	__xmlIOErr(XML_FROM_HTTP, XML_HTTP_UNKNOWN_HOST,
-	           "Failed to identify host in URI");
-        xmlNanoHTTPFreeCtxt(ctxt);
-	if (redirURL != NULL) xmlFree(redirURL);
-        return(NULL);
-    }
-    use_proxy = proxy && !xmlNanoHTTPBypassProxy(ctxt->hostname);
-    if (use_proxy) {
-	blen = strlen(ctxt->hostname) * 2 + 16;
-	ret = xmlNanoHTTPConnectHost(proxy, proxyPort);
-    }
-    else {
-	blen = strlen(ctxt->hostname);
-	ret = xmlNanoHTTPConnectHost(ctxt->hostname, ctxt->port);
-    }
-    if (ret == INVALID_SOCKET) {
-        xmlNanoHTTPFreeCtxt(ctxt);
-	if (redirURL != NULL) xmlFree(redirURL);
-        return(NULL);
-    }
-    ctxt->fd = ret;
-
-    if (input == NULL)
-	ilen = 0;
-    else
-	blen += 36;
-
-    if (headers != NULL)
-	blen += strlen(headers) + 2;
-    if (contentType && *contentType)
-	/* reserve for string plus 'Content-Type: \r\n" */
-	blen += strlen(*contentType) + 16;
-    if (ctxt->query != NULL)
-	/* 1 for '?' */
-	blen += strlen(ctxt->query) + 1;
-    blen += strlen(method) + strlen(ctxt->path) + 24;
-#ifdef LIBXML_ZLIB_ENABLED
-    /* reserve for possible 'Accept-Encoding: gzip' string */
-    blen += 23;
-#endif
-    if (ctxt->port != 80) {
-	/* reserve space for ':xxxxx', incl. potential proxy */
-	if (use_proxy)
-	    blen += 17;
-	else
-	    blen += 11;
-    }
-    bp = xmlMalloc(blen);
-    if ( bp == NULL ) {
-        xmlNanoHTTPFreeCtxt( ctxt );
-	xmlHTTPErrMemory();
-	return ( NULL );
-    }
-
-    p = bp;
-
-    if (use_proxy) {
-	if (ctxt->port != 80) {
-	    p += snprintf( p, blen - (p - bp), "%s http://%s:%d%s",
-			method, ctxt->hostname,
-			ctxt->port, ctxt->path );
-	}
-	else
-	    p += snprintf( p, blen - (p - bp), "%s http://%s%s", method,
-			ctxt->hostname, ctxt->path);
-    }
-    else
-	p += snprintf( p, blen - (p - bp), "%s %s", method, ctxt->path);
-
-    if (ctxt->query != NULL)
-	p += snprintf( p, blen - (p - bp), "?%s", ctxt->query);
-
-    if (ctxt->port == 80) {
-        p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s\r\n",
-		    ctxt->hostname);
-    } else {
-        p += snprintf( p, blen - (p - bp), " HTTP/1.0\r\nHost: %s:%d\r\n",
-		    ctxt->hostname, ctxt->port);
-    }
-
-#ifdef LIBXML_ZLIB_ENABLED
-    p += snprintf(p, blen - (p - bp), "Accept-Encoding: gzip\r\n");
-#endif
-
-    if (contentType != NULL && *contentType)
-	p += snprintf(p, blen - (p - bp), "Content-Type: %s\r\n", *contentType);
-
-    if (headers != NULL)
-	p += snprintf( p, blen - (p - bp), "%s", headers );
-
-    if (input != NULL)
-	snprintf(p, blen - (p - bp), "Content-Length: %d\r\n\r\n", ilen );
-    else
-	snprintf(p, blen - (p - bp), "\r\n");
-
-    ctxt->outptr = ctxt->out = bp;
-    ctxt->state = XML_NANO_HTTP_WRITE;
-    blen = strlen( ctxt->out );
-    xmlNanoHTTPSend(ctxt, ctxt->out, blen );
-
-    if ( input != NULL ) {
-	xmlNanoHTTPSend( ctxt, input, ilen );
-    }
-
-    ctxt->state = XML_NANO_HTTP_READ;
-
-    while ((p = xmlNanoHTTPReadLine(ctxt)) != NULL) {
-        if (*p == 0) {
-	    ctxt->content = ctxt->inrptr;
-	    xmlFree(p);
-	    break;
-	}
-	xmlNanoHTTPScanAnswer(ctxt, p);
-
-        xmlFree(p);
-    }
-
-    if ((ctxt->location != NULL) && (ctxt->returnValue >= 300) &&
-        (ctxt->returnValue < 400)) {
-	while ( xmlNanoHTTPRecv(ctxt) > 0 )
-            ;
-        if (nbRedirects < XML_NANO_HTTP_MAX_REDIR) {
-	    nbRedirects++;
-	    if (redirURL != NULL)
-		xmlFree(redirURL);
-	    redirURL = xmlMemStrdup(ctxt->location);
-	    xmlNanoHTTPFreeCtxt(ctxt);
-	    goto retry;
-	}
-	xmlNanoHTTPFreeCtxt(ctxt);
-	if (redirURL != NULL) xmlFree(redirURL);
-	return(NULL);
-    }
-
-    if (contentType != NULL) {
-	if (ctxt->contentType != NULL)
-	    *contentType = xmlMemStrdup(ctxt->contentType);
-	else
-	    *contentType = NULL;
-    }
-
-    if ((redir != NULL) && (redirURL != NULL)) {
-	*redir = redirURL;
-    } else {
-	if (redirURL != NULL)
-	    xmlFree(redirURL);
-	if (redir != NULL)
-	    *redir = NULL;
-    }
-
-    return((void *) ctxt);
-}
-
-/**
- * xmlNanoHTTPMethod:
- * @URL:  The URL to load
- * @method:  the HTTP method to use
- * @input:  the input string if any
- * @contentType:  the Content-Type information IN and OUT
- * @headers:  the extra headers
- * @ilen:  input length
+ * @deprecated HTTP support was removed in 2.15.
  *
- * 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.
- *
- * Returns NULL in case of failure, otherwise a request handler.
- *     The contentType, if provided must be freed by the caller
+ * @param ctx  the HTTP context
+ * @returns NULL.
  */
-
-void*
-xmlNanoHTTPMethod(const char *URL, const char *method, const char *input,
-                  char **contentType, const char *headers, int ilen) {
-    return(xmlNanoHTTPMethodRedir(URL, method, input, contentType,
-		                  NULL, headers, ilen));
+const char *
+xmlNanoHTTPAuthHeader(void *ctx ATTRIBUTE_UNUSED) {
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPFetch:
- * @URL:  The URL to load
- * @filename:  the filename where the content should be saved
- * @contentType:  if available the Content-Type information will be
- *                returned at that location
- *
- * This function try to fetch the indicated resource via HTTP GET
- * and save it's content in the file.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns -1 in case of failure, 0 in case of success. The contentType,
- *     if provided must be freed by the caller
+ * @param ctx  the HTTP context
+ * @returns -1.
  */
 int
-xmlNanoHTTPFetch(const char *URL, const char *filename, char **contentType) {
-    void *ctxt = NULL;
-    char *buf = NULL;
-    int fd;
-    int len;
-    int ret = 0;
-
-    if (filename == NULL) return(-1);
-    ctxt = xmlNanoHTTPOpen(URL, contentType);
-    if (ctxt == NULL) return(-1);
-
-    if (!strcmp(filename, "-"))
-        fd = 1; /* STDOUT_FILENO */
-    else {
-        fd = open(filename, O_CREAT | O_WRONLY, 00644);
-	if (fd < 0) {
-	    xmlNanoHTTPClose(ctxt);
-	    if ((contentType != NULL) && (*contentType != NULL)) {
-	        xmlFree(*contentType);
-		*contentType = NULL;
-	    }
-	    return(-1);
-	}
-    }
-
-    xmlNanoHTTPFetchContent( ctxt, &buf, &len );
-    if ( len > 0 ) {
-	if (write(fd, buf, len) == -1) {
-	    ret = -1;
-	}
-    }
-
-    xmlNanoHTTPClose(ctxt);
-    close(fd);
-    return(ret);
+xmlNanoHTTPContentLength(void *ctx ATTRIBUTE_UNUSED) {
+    return(-1);
 }
 
-#ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlNanoHTTPSave:
- * @ctxt:  the HTTP context
- * @filename:  the filename where the content should be saved
- *
- * This function saves the output of the HTTP transaction to a file
- * It closes and free the context at the end
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns -1 in case of failure, 0 in case of success.
+ * @param ctx  the HTTP context
+ * @returns NULL.
  */
-int
-xmlNanoHTTPSave(void *ctxt, const char *filename) {
-    char *buf = NULL;
-    int fd;
-    int len;
-    int ret = 0;
-
-    if ((ctxt == NULL) || (filename == NULL)) return(-1);
-
-    if (!strcmp(filename, "-"))
-        fd = 1; /* STDOUT_FILENO */
-    else {
-        fd = open(filename, O_CREAT | O_WRONLY, 0666);
-	if (fd < 0) {
-	    xmlNanoHTTPClose(ctxt);
-	    return(-1);
-	}
-    }
-
-    xmlNanoHTTPFetchContent( ctxt, &buf, &len );
-    if ( len > 0 ) {
-	if (write(fd, buf, len) == -1) {
-	    ret = -1;
-	}
-    }
-
-    xmlNanoHTTPClose(ctxt);
-    close(fd);
-    return(ret);
+const char *
+xmlNanoHTTPRedir(void *ctx ATTRIBUTE_UNUSED) {
+    return(NULL);
 }
-#endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlNanoHTTPReturnCode:
- * @ctx:  the HTTP context
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Get the latest HTTP return code received
- *
- * Returns the HTTP return code for the request.
+ * @param ctx  the HTTP context
+ * @returns NULL.
  */
-int
-xmlNanoHTTPReturnCode(void *ctx) {
-    xmlNanoHTTPCtxtPtr ctxt = (xmlNanoHTTPCtxtPtr) ctx;
-
-    if (ctxt == NULL) return(-1);
-
-    return(ctxt->returnValue);
+const char *
+xmlNanoHTTPEncoding(void *ctx ATTRIBUTE_UNUSED) {
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPAuthHeader:
- * @ctx:  the HTTP context
- *
- * Get the authentication header of an HTTP context
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Returns the stashed value of the WWW-Authenticate or Proxy-Authenticate
- * header.
+ * @param ctx  the HTTP context
+ * @returns NULL.
  */
 const char *
-xmlNanoHTTPAuthHeader(void *ctx) {
-    xmlNanoHTTPCtxtPtr ctxt = (xmlNanoHTTPCtxtPtr) ctx;
-
-    if (ctxt == NULL) return(NULL);
-
-    return(ctxt->authHeader);
+xmlNanoHTTPMimeType(void *ctx ATTRIBUTE_UNUSED) {
+    return(NULL);
 }
 
 /**
- * xmlNanoHTTPContentLength:
- * @ctx:  the HTTP context
- *
- * Provides the specified content length from the HTTP header.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Return 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.
+ * @param filename  the URI for matching
+ * @returns 0.
  */
 int
-xmlNanoHTTPContentLength( void * ctx ) {
-    xmlNanoHTTPCtxtPtr	ctxt = (xmlNanoHTTPCtxtPtr)ctx;
-
-    return ( ( ctxt == NULL ) ? -1 : ctxt->ContentLength );
+xmlIOHTTPMatch(const char *filename ATTRIBUTE_UNUSED) {
+    return(0);
 }
 
 /**
- * xmlNanoHTTPRedir:
- * @ctx:  the HTTP context
- *
- * Provides the specified redirection URL if available from the HTTP header.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Return the specified redirection URL or NULL if not redirected.
+ * @param filename  the URI for matching
+ * @returns NULL.
  */
-const char *
-xmlNanoHTTPRedir( void * ctx ) {
-    xmlNanoHTTPCtxtPtr	ctxt = (xmlNanoHTTPCtxtPtr)ctx;
-
-    return ( ( ctxt == NULL ) ? NULL : ctxt->location );
+void *
+xmlIOHTTPOpen(const char *filename ATTRIBUTE_UNUSED) {
+    return(NULL);
 }
 
+#ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlNanoHTTPEncoding:
- * @ctx:  the HTTP context
- *
- * Provides the specified encoding if specified in the HTTP headers.
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Return the specified encoding or NULL if not available
- */
-const char *
-xmlNanoHTTPEncoding( void * ctx ) {
-    xmlNanoHTTPCtxtPtr	ctxt = (xmlNanoHTTPCtxtPtr)ctx;
-
-    return ( ( ctxt == NULL ) ? NULL : ctxt->encoding );
+ * @param post_uri  The destination URI for the document
+ * @param compression  The compression desired for the document.
+ * @returns NULL.
+ */
+void *
+xmlIOHTTPOpenW(const char *post_uri ATTRIBUTE_UNUSED,
+               int compression ATTRIBUTE_UNUSED)
+{
+    return(NULL);
 }
+#endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlNanoHTTPMimeType:
- * @ctx:  the HTTP context
+ * @deprecated HTTP support was removed in 2.15.
  *
- * Provides the specified Mime-Type if specified in the HTTP headers.
- *
- * Return the specified Mime-Type or NULL if not available
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to write
+ * @returns -1.
  */
-const char *
-xmlNanoHTTPMimeType( void * ctx ) {
-    xmlNanoHTTPCtxtPtr	ctxt = (xmlNanoHTTPCtxtPtr)ctx;
-
-    return ( ( ctxt == NULL ) ? NULL : ctxt->mimeType );
+int
+xmlIOHTTPRead(void *context ATTRIBUTE_UNUSED, char *buffer ATTRIBUTE_UNUSED,
+              int len ATTRIBUTE_UNUSED) {
+    return(-1);
 }
 
 /**
- * xmlNanoHTTPFetchContent:
- * @ctx:  the HTTP context
- * @ptr:  pointer to set to the content buffer.
- * @len:  integer pointer to hold the length of the content
- *
- * Check if all the content was read
+ * @deprecated Internal function, don't use.
  *
- * Returns 0 if all the content was read and available, returns
- * -1 if received content length was less than specified or an error
- * occurred.
+ * @param context  the I/O context
+ * @returns 0
  */
-static int
-xmlNanoHTTPFetchContent( void * ctx, char ** ptr, int * len ) {
-    xmlNanoHTTPCtxtPtr	ctxt = (xmlNanoHTTPCtxtPtr)ctx;
-
-    int			rc = 0;
-    int			cur_lgth;
-    int			rcvd_lgth;
-    int			dummy_int;
-    char *		dummy_ptr = NULL;
-
-    /*  Dummy up return input parameters if not provided  */
-
-    if ( len == NULL )
-        len = &dummy_int;
-
-    if ( ptr == NULL )
-        ptr = &dummy_ptr;
-
-    /*  But can't work without the context pointer  */
-
-    if ( ( ctxt == NULL ) || ( ctxt->content == NULL ) ) {
-        *len = 0;
-	*ptr = NULL;
-	return ( -1 );
-    }
-
-    rcvd_lgth = ctxt->inptr - ctxt->content;
-
-    while ( (cur_lgth = xmlNanoHTTPRecv( ctxt )) > 0 ) {
-
-	rcvd_lgth += cur_lgth;
-	if ( (ctxt->ContentLength > 0) && (rcvd_lgth >= ctxt->ContentLength) )
-	    break;
-    }
-
-    *ptr = ctxt->content;
-    *len = rcvd_lgth;
-
-    if ( ( ctxt->ContentLength > 0 ) && ( rcvd_lgth < ctxt->ContentLength ) )
-        rc = -1;
-    else if ( rcvd_lgth == 0 )
-	rc = -1;
+int
+xmlIOHTTPClose (void *context ATTRIBUTE_UNUSED) {
+    return 0;
+}
 
-    return ( rc );
+/**
+ * @deprecated HTTP support was removed in 2.15.
+ */
+void
+xmlRegisterHTTPPostCallbacks(void) {
+    xmlRegisterDefaultOutputCallbacks();
 }
 
-#endif /* LIBXML_HTTP_ENABLED */
+#endif /* LIBXML_HTTP_STUBS_ENABLED */
diff -pruN 2.14.6+dfsg-0.1/parser.c 2.15.0+dfsg-0.3/parser.c
--- 2.14.6+dfsg-0.1/parser.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/parser.c	2025-09-15 11:55:59.000000000 +0000
@@ -27,7 +27,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 /* To avoid EBCDIC trouble when parsing on zOS */
@@ -75,6 +75,7 @@
 #include "private/io.h"
 #include "private/memory.h"
 #include "private/parser.h"
+#include "private/tree.h"
 
 #define NS_INDEX_EMPTY  INT_MAX
 #define NS_INDEX_XML    (INT_MAX - 1)
@@ -91,6 +92,12 @@
 
 #define XML_MAX_ATTRS 100000000 /* 100 million */
 
+#define XML_SPECIAL_EXTERNAL    (1 << 20)
+#define XML_SPECIAL_TYPE_MASK   (XML_SPECIAL_EXTERNAL - 1)
+
+#define XML_ATTVAL_ALLOC        (1 << 0)
+#define XML_ATTVAL_NORM_CHANGE  (1 << 1)
+
 struct _xmlStartTag {
     const xmlChar *prefix;
     const xmlChar *URI;
@@ -177,9 +184,8 @@ xmlParseEntityRefInternal(xmlParserCtxtP
 #define XML_PARSER_CHUNK_SIZE 100
 
 /**
- * xmlParserVersion:
- *
- * Constant string describing the internal version of the library
+ * Constant string describing the version of the library used at
+ * run-time.
  */
 const char *const
 xmlParserVersion = LIBXML_VERSION_STRING LIBXML_VERSION_EXTRA;
@@ -205,6 +211,9 @@ xmlCtxtParseEntity(xmlParserCtxtPtr ctxt
 static int
 xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity);
 
+static void
+xmlParsePERefInternal(xmlParserCtxt *ctxt, int markupDecl);
+
 /************************************************************************
  *									*
  *		Some factorized error routines				*
@@ -217,12 +226,11 @@ xmlErrMemory(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlErrAttributeDup:
- * @ctxt:  an XML parser context
- * @prefix:  the attribute prefix
- * @localname:  the attribute localname
- *
  * Handle a redefinition of attribute error
+ *
+ * @param ctxt  an XML parser context
+ * @param prefix  the attribute prefix
+ * @param localname  the attribute localname
  */
 static void
 xmlErrAttributeDup(xmlParserCtxtPtr ctxt, const xmlChar * prefix,
@@ -239,12 +247,11 @@ xmlErrAttributeDup(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlFatalErrMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -255,14 +262,13 @@ xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xm
 }
 
 /**
- * xmlWarningMsg:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  extra data
- * @str2:  extra data
- *
  * Handle a warning.
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 void LIBXML_ATTR_FORMAT(3,0)
 xmlWarningMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -272,14 +278,15 @@ xmlWarningMsg(xmlParserCtxtPtr ctxt, xml
                str1, str2, NULL, 0, msg, str1, str2);
 }
 
+#ifdef LIBXML_VALID_ENABLED
 /**
- * xmlValidityError:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  extra data
- *
  * Handle a validity error.
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlValidityError(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -290,15 +297,15 @@ xmlValidityError(xmlParserCtxtPtr ctxt,
     xmlCtxtErr(ctxt, NULL, XML_FROM_DTD, error, XML_ERR_ERROR,
                str1, str2, NULL, 0, msg, str1, str2);
 }
+#endif
 
 /**
- * xmlFatalErrMsgInt:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @val:  an integer value
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param val  an integer value
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -309,15 +316,14 @@ xmlFatalErrMsgInt(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlFatalErrMsgStrIntStr:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @str1:  an string info
- * @val:  an integer value
- * @str2:  an string info
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  an string info
+ * @param val  an integer value
+ * @param str2  an string info
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -329,13 +335,12 @@ xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr
 }
 
 /**
- * xmlFatalErrMsgStr:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @val:  a string value
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param val  a string value
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -346,13 +351,12 @@ xmlFatalErrMsgStr(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlErrMsgStr:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the error message
- * @val:  a string value
- *
  * Handle a non fatal parser error
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param val  a string value
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -363,14 +367,14 @@ xmlErrMsgStr(xmlParserCtxtPtr ctxt, xmlP
 }
 
 /**
- * xmlNsErr:
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the message
- * @info1:  extra information string
- * @info2:  extra information string
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the message
+ * @param info1  extra information string
+ * @param info2  extra information string
+ * @param info3  extra information string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -385,14 +389,14 @@ xmlNsErr(xmlParserCtxtPtr ctxt, xmlParse
 }
 
 /**
- * xmlNsWarn
- * @ctxt:  an XML parser context
- * @error:  the error number
- * @msg:  the message
- * @info1:  extra information string
- * @info2:  extra information string
- *
  * Handle a namespace warning error
+ *
+ * @param ctxt  an XML parser context
+ * @param error  the error number
+ * @param msg  the message
+ * @param info1  extra information string
+ * @param info2  extra information string
+ * @param info3  extra information string
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsWarn(xmlParserCtxtPtr ctxt, xmlParserErrors error,
@@ -404,33 +408,13 @@ xmlNsWarn(xmlParserCtxtPtr ctxt, xmlPars
                info1, info2, info3, 0, msg, info1, info2, info3);
 }
 
-static void
-xmlSaturatedAdd(unsigned long *dst, unsigned long val) {
-    if (val > ULONG_MAX - *dst)
-        *dst = ULONG_MAX;
-    else
-        *dst += val;
-}
-
-static void
-xmlSaturatedAddSizeT(unsigned long *dst, size_t val) {
-    if (val > ULONG_MAX - *dst)
-        *dst = ULONG_MAX;
-    else
-        *dst += val;
-}
-
 /**
- * xmlParserEntityCheck:
- * @ctxt:  parser context
- * @extra:  sum of unexpanded entity sizes
- *
  * Check for non-linear entity expansion behaviour.
  *
  * In some cases like xmlExpandEntityInAttValue, this function is called
  * for each, possibly nested entity and its unexpanded content length.
  *
- * In other cases like xmlParseReference, it's only called for each
+ * In other cases like #xmlParseReference, it's only called for each
  * top-level entity with its unexpanded content length plus the sum of
  * the unexpanded content lengths (plus fixed cost) of all nested
  * entities.
@@ -442,7 +426,9 @@ xmlSaturatedAddSizeT(unsigned long *dst,
  * adds some fixed cost XML_ENT_FIXED_COST to discourage attacks with
  * short entities.
  *
- * Returns 1 on error, 0 on success.
+ * @param ctxt  parser context
+ * @param extra  sum of unexpanded entity sizes
+ * @returns 1 on error, 0 on success.
  */
 static int
 xmlParserEntityCheck(xmlParserCtxtPtr ctxt, unsigned long extra)
@@ -485,7 +471,6 @@ xmlParserEntityCheck(xmlParserCtxtPtr ct
         xmlFatalErrMsg(ctxt, XML_ERR_RESOURCE_LIMIT,
                        "Maximum entity amplification factor exceeded, see "
                        "xmlCtxtSetMaxAmplification.\n");
-        xmlHaltParser(ctxt);
         return(1);
     }
 
@@ -499,15 +484,12 @@ xmlParserEntityCheck(xmlParserCtxtPtr ct
  ************************************************************************/
 
 /**
-  * xmlHasFeature:
-  * @feature: the feature to be examined
-  *
-  * Examines if the library has been compiled with a given feature.
-  *
-  * Returns a non-zero value if the feature exist, otherwise zero.
-  * Returns zero (0) if the feature does not exist or an unknown
-  * unknown feature is requested, non-zero otherwise.
-  */
+ * Examines if the library has been compiled with a given feature.
+ *
+ * @param feature  the feature to be examined
+ * @returns zero (0) if the feature does not exist or an unknown
+ * feature is requested, non-zero otherwise.
+ */
 int
 xmlHasFeature(xmlFeature feature)
 {
@@ -557,11 +539,7 @@ xmlHasFeature(xmlFeature feature)
             return(0);
 #endif
         case XML_WITH_HTTP:
-#ifdef LIBXML_HTTP_ENABLED
-            return(1);
-#else
             return(0);
-#endif
         case XML_WITH_VALID:
 #ifdef LIBXML_VALID_ENABLED
             return(1);
@@ -633,11 +611,7 @@ xmlHasFeature(xmlFeature feature)
             return(0);
 #endif
         case XML_WITH_EXPR:
-#ifdef LIBXML_EXPR_ENABLED
-            return(1);
-#else
             return(0);
-#endif
         case XML_WITH_RELAXNG:
 #ifdef LIBXML_RELAXNG_ENABLED
             return(1);
@@ -677,11 +651,7 @@ xmlHasFeature(xmlFeature feature)
             return(0);
 #endif
         case XML_WITH_LZMA:
-#ifdef LIBXML_LZMA_ENABLED
-            return(1);
-#else
             return(0);
-#endif
         case XML_WITH_ICU:
 #ifdef LIBXML_ICU_ENABLED
             return(1);
@@ -915,13 +885,12 @@ encoding_error:
  ************************************************************************/
 
 /**
- * xmlCtxtInitializeLate:
- * @ctxt:  an XML parser context
- *
  * Final initialization of the parser context before starting to parse.
  *
  * This accounts for users modifying struct members of parser context
  * directly.
+ *
+ * @param ctxt  an XML parser context
  */
 static void
 xmlCtxtInitializeLate(xmlParserCtxtPtr ctxt) {
@@ -968,6 +937,13 @@ xmlCtxtInitializeLate(xmlParserCtxtPtr c
                     (ctxt->options & XML_PARSE_HUGE) ?
                         0 :
                         XML_MAX_DICTIONARY_LIMIT);
+
+#ifdef LIBXML_VALID_ENABLED
+    if (ctxt->validate)
+        ctxt->vctxt.flags |= XML_VCTXT_VALIDATE;
+    else
+        ctxt->vctxt.flags &= ~XML_VCTXT_VALIDATE;
+#endif /* LIBXML_VALID_ENABLED */
 }
 
 typedef struct {
@@ -993,20 +969,18 @@ struct _xmlDefAttrs {
 };
 
 /**
- * xmlAttrNormalizeSpace:
- * @src: the source string
- * @dst: the target string
- *
  * Normalize the space in non CDATA attribute values:
  * If the attribute type 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.
+ * trailing space (\#x20) characters, and by replacing sequences of space
+ * (\#x20) characters by a single space (\#x20) character.
  * Note that the size of dst need to be at least src, and if one doesn't need
  * to preserve dst (and it doesn't come from a dictionary or read-only) then
  * passing src as dst is just fine.
  *
- * Returns a pointer to the normalized value (dst) or NULL if no conversion
+ * @param src  the source string
+ * @param dst  the target string
+ * @returns a pointer to the normalized value (dst) or NULL if no conversion
  *         is needed.
  */
 static xmlChar *
@@ -1032,13 +1006,12 @@ xmlAttrNormalizeSpace(const xmlChar *src
 }
 
 /**
- * xmlAddDefAttrs:
- * @ctxt:  an XML parser context
- * @fullname:  the element fullname
- * @fullattr:  the attribute fullname
- * @value:  the attribute value
- *
  * Add a defaulted attribute for an element
+ *
+ * @param ctxt  an XML parser context
+ * @param fullname  the element fullname
+ * @param fullattr  the attribute fullname
+ * @param value  the attribute value
  */
 static void
 xmlAddDefAttrs(xmlParserCtxtPtr ctxt,
@@ -1164,13 +1137,12 @@ mem_error:
 }
 
 /**
- * xmlAddSpecialAttr:
- * @ctxt:  an XML parser context
- * @fullname:  the element fullname
- * @fullattr:  the attribute fullname
- * @type:  the attribute type
- *
  * Register this attribute type
+ *
+ * @param ctxt  an XML parser context
+ * @param fullname  the element fullname
+ * @param fullattr  the attribute fullname
+ * @param type  the attribute type
  */
 static void
 xmlAddSpecialAttr(xmlParserCtxtPtr ctxt,
@@ -1184,6 +1156,9 @@ xmlAddSpecialAttr(xmlParserCtxtPtr ctxt,
 	    goto mem_error;
     }
 
+    if (PARSER_EXTERNAL(ctxt))
+        type |= XML_SPECIAL_EXTERNAL;
+
     if (xmlHashAdd2(ctxt->attsSpecial, fullname, fullattr,
                     XML_INT_TO_PTR(type)) < 0)
         goto mem_error;
@@ -1194,8 +1169,6 @@ mem_error:
 }
 
 /**
- * xmlCleanSpecialAttrCallback:
- *
  * Removes CDATA attributes from the special attribute table
  */
 static void
@@ -1210,12 +1183,11 @@ xmlCleanSpecialAttrCallback(void *payloa
 }
 
 /**
- * xmlCleanSpecialAttr:
- * @ctxt:  an XML parser context
- *
  * Trim the list of attributes defined to remove all those of type
  * CDATA as they are not special. This call should be done when finishing
  * to parse the DTD and before starting to parse the document root.
+ *
+ * @param ctxt  an XML parser context
  */
 static void
 xmlCleanSpecialAttr(xmlParserCtxtPtr ctxt)
@@ -1232,64 +1204,63 @@ xmlCleanSpecialAttr(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlCheckLanguageID:
- * @lang:  pointer to the string value
- *
- * DEPRECATED: Internal function, do not use.
- *
  * Checks that the value conforms to the LanguageID production:
  *
+ * @deprecated Internal function, do not use.
+ *
  * NOTE: this is somewhat deprecated, those productions were removed from
- *       the XML Second edition.
+ * the XML Second edition.
  *
- * [33] LanguageID ::= Langcode ('-' Subcode)*
- * [34] Langcode ::= ISO639Code |  IanaCode |  UserCode
- * [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
- * [36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
- * [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
- * [38] Subcode ::= ([a-z] | [A-Z])+
+ *     [33] LanguageID ::= Langcode ('-' Subcode)*
+ *     [34] Langcode ::= ISO639Code |  IanaCode |  UserCode
+ *     [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
+ *     [36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
+ *     [37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
+ *     [38] Subcode ::= ([a-z] | [A-Z])+
  *
  * The current REC reference the successors of RFC 1766, currently 5646
  *
  * http://www.rfc-editor.org/rfc/rfc5646.txt
- * langtag       = language
- *                 ["-" script]
- *                 ["-" region]
- *                 *("-" variant)
- *                 *("-" extension)
- *                 ["-" privateuse]
- * language      = 2*3ALPHA            ; shortest ISO 639 code
- *                 ["-" extlang]       ; sometimes followed by
- *                                     ; extended language subtags
- *               / 4ALPHA              ; or reserved for future use
- *               / 5*8ALPHA            ; or registered language subtag
- *
- * extlang       = 3ALPHA              ; selected ISO 639 codes
- *                 *2("-" 3ALPHA)      ; permanently reserved
- *
- * script        = 4ALPHA              ; ISO 15924 code
- *
- * region        = 2ALPHA              ; ISO 3166-1 code
- *               / 3DIGIT              ; UN M.49 code
- *
- * variant       = 5*8alphanum         ; registered variants
- *               / (DIGIT 3alphanum)
- *
- * extension     = singleton 1*("-" (2*8alphanum))
- *
- *                                     ; Single alphanumerics
- *                                     ; "x" reserved for private use
- * singleton     = DIGIT               ; 0 - 9
- *               / %x41-57             ; A - W
- *               / %x59-5A             ; Y - Z
- *               / %x61-77             ; a - w
- *               / %x79-7A             ; y - z
+ *
+ *     langtag       = language
+ *                     ["-" script]
+ *                     ["-" region]
+ *                     *("-" variant)
+ *                     *("-" extension)
+ *                     ["-" privateuse]
+ *     language      = 2*3ALPHA            ; shortest ISO 639 code
+ *                     ["-" extlang]       ; sometimes followed by
+ *                                         ; extended language subtags
+ *                   / 4ALPHA              ; or reserved for future use
+ *                   / 5*8ALPHA            ; or registered language subtag
+ *
+ *     extlang       = 3ALPHA              ; selected ISO 639 codes
+ *                     *2("-" 3ALPHA)      ; permanently reserved
+ *
+ *     script        = 4ALPHA              ; ISO 15924 code
+ *
+ *     region        = 2ALPHA              ; ISO 3166-1 code
+ *                   / 3DIGIT              ; UN M.49 code
+ *
+ *     variant       = 5*8alphanum         ; registered variants
+ *                   / (DIGIT 3alphanum)
+ *
+ *     extension     = singleton 1*("-" (2*8alphanum))
+ *
+ *                                         ; Single alphanumerics
+ *                                         ; "x" reserved for private use
+ *     singleton     = DIGIT               ; 0 - 9
+ *                   / %x41-57             ; A - W
+ *                   / %x59-5A             ; Y - Z
+ *                   / %x61-77             ; a - w
+ *                   / %x79-7A             ; y - z
  *
  * it sounds right to still allow Irregular i-xxx IANA and user codes too
  * The parser below doesn't try to cope with extension or privateuse
  * that could be added but that's not interoperable anyway
  *
- * Returns 1 if correct 0 otherwise
+ * @param lang  pointer to the string value
+ * @returns 1 if correct 0 otherwise
  **/
 int
 xmlCheckLanguageID(const xmlChar * lang)
@@ -1437,11 +1408,9 @@ static xmlChar *
 xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar **str);
 
 /**
- * xmlParserNsCreate:
- *
  * Create a new namespace database.
  *
- * Returns the new obejct.
+ * @returns the new obejct.
  */
 xmlParserNsData *
 xmlParserNsCreate(void) {
@@ -1456,10 +1425,9 @@ xmlParserNsCreate(void) {
 }
 
 /**
- * xmlParserNsFree:
- * @nsdb: namespace database
- *
  * Free a namespace database.
+ *
+ * @param nsdb  namespace database
  */
 void
 xmlParserNsFree(xmlParserNsData *nsdb) {
@@ -1472,10 +1440,9 @@ xmlParserNsFree(xmlParserNsData *nsdb) {
 }
 
 /**
- * xmlParserNsReset:
- * @nsdb: namespace database
- *
  * Reset a namespace database.
+ *
+ * @param nsdb  namespace database
  */
 static void
 xmlParserNsReset(xmlParserNsData *nsdb) {
@@ -1491,12 +1458,10 @@ xmlParserNsReset(xmlParserNsData *nsdb)
 }
 
 /**
- * xmlParserStartElement:
- * @nsdb: namespace database
- *
  * Signal that a new element has started.
  *
- * Returns 0 on success, -1 if the element counter overflowed.
+ * @param nsdb  namespace database
+ * @returns 0 on success, -1 if the element counter overflowed.
  */
 static int
 xmlParserNsStartElement(xmlParserNsData *nsdb) {
@@ -1508,16 +1473,14 @@ xmlParserNsStartElement(xmlParserNsData
 }
 
 /**
- * xmlParserNsLookup:
- * @ctxt: parser context
- * @prefix: namespace prefix
- * @bucketPtr: optional bucket (return value)
- *
- * Lookup namespace with given prefix. If @bucketPtr is non-NULL, it will
+ * Lookup namespace with given prefix. If `bucketPtr` is non-NULL, it will
  * be set to the matching bucket, or the first empty bucket if no match
  * was found.
  *
- * Returns the namespace index on success, INT_MAX if no namespace was
+ * @param ctxt  parser context
+ * @param prefix  namespace prefix
+ * @param bucketPtr  optional bucket (return value)
+ * @returns the namespace index on success, INT_MAX if no namespace was
  * found.
  */
 static int
@@ -1563,13 +1526,11 @@ xmlParserNsLookup(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlParserNsLookupUri:
- * @ctxt: parser context
- * @prefix: namespace prefix
- *
  * Lookup namespace URI with given prefix.
  *
- * Returns the namespace URI on success, NULL if no namespace was found.
+ * @param ctxt  parser context
+ * @param prefix  namespace prefix
+ * @returns the namespace URI on success, NULL if no namespace was found.
  */
 static const xmlChar *
 xmlParserNsLookupUri(xmlParserCtxtPtr ctxt, const xmlHashedString *prefix) {
@@ -1594,17 +1555,15 @@ xmlParserNsLookupUri(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParserNsLookupSax:
- * @ctxt: parser context
- * @prefix: namespace prefix
- *
  * Lookup extra data for the given prefix. This returns data stored
  * with xmlParserNsUdpateSax.
  *
- * Returns the data on success, NULL if no namespace was found.
+ * @param ctxt  parser context
+ * @param prefix  namespace prefix
+ * @returns the data on success, NULL if no namespace was found.
  */
 void *
-xmlParserNsLookupSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix) {
+xmlParserNsLookupSax(xmlParserCtxt *ctxt, const xmlChar *prefix) {
     xmlHashedString hprefix;
     int nsIndex;
 
@@ -1624,19 +1583,17 @@ xmlParserNsLookupSax(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParserNsUpdateSax:
- * @ctxt: parser context
- * @prefix: namespace prefix
- * @saxData: extra data for SAX handler
- *
  * Sets or updates extra data for the given prefix. This value will be
  * returned by xmlParserNsLookupSax as long as the namespace with the
  * given prefix is in scope.
  *
- * Returns the data on success, NULL if no namespace was found.
+ * @param ctxt  parser context
+ * @param prefix  namespace prefix
+ * @param saxData  extra data for SAX handler
+ * @returns the data on success, NULL if no namespace was found.
  */
 int
-xmlParserNsUpdateSax(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
+xmlParserNsUpdateSax(xmlParserCtxt *ctxt, const xmlChar *prefix,
                      void *saxData) {
     xmlHashedString hprefix;
     int nsIndex;
@@ -1658,12 +1615,10 @@ xmlParserNsUpdateSax(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParserNsGrow:
- * @ctxt: parser context
- *
  * Grows the namespace tables.
  *
- * Returns 0 on success, -1 if a memory allocation failed.
+ * @param ctxt  parser context
+ * @returns 0 on success, -1 if a memory allocation failed.
  */
 static int
 xmlParserNsGrow(xmlParserCtxtPtr ctxt) {
@@ -1696,16 +1651,14 @@ error:
 }
 
 /**
- * xmlParserNsPush:
- * @ctxt: parser context
- * @prefix: prefix with hash value
- * @uri: uri with hash value
- * @saxData: extra data for SAX handler
- * @defAttr: whether the namespace comes from a default attribute
- *
  * Push a new namespace on the table.
  *
- * Returns 1 if the namespace was pushed, 0 if the namespace was ignored,
+ * @param ctxt  parser context
+ * @param prefix  prefix with hash value
+ * @param uri  uri with hash value
+ * @param saxData  extra data for SAX handler
+ * @param defAttr  whether the namespace comes from a default attribute
+ * @returns 1 if the namespace was pushed, 0 if the namespace was ignored,
  * -1 if a memory allocation failed.
  */
 static int
@@ -1857,13 +1810,11 @@ populate_entry:
 }
 
 /**
- * xmlParserNsPop:
- * @ctxt: an XML parser context
- * @nr:  the number to pop
- *
- * Pops the top @nr namespaces and restores the hash table.
+ * Pops the top `nr` namespaces and restores the hash table.
  *
- * Returns the number of namespaces popped.
+ * @param ctxt  an XML parser context
+ * @param nr  the number to pop
+ * @returns the number of namespaces popped.
  */
 static int
 xmlParserNsPop(xmlParserCtxtPtr ctxt, int nr)
@@ -1930,16 +1881,14 @@ mem_error:
 }
 
 /**
- * xmlCtxtPushInput:
- * @ctxt:  an XML parser context
- * @value:  the parser input
- *
  * Pushes a new parser input on top of the input stack
  *
- * Returns -1 in case of error, the index in the stack otherwise
+ * @param ctxt  an XML parser context
+ * @param value  the parser input
+ * @returns -1 in case of error, the index in the stack otherwise
  */
 int
-xmlCtxtPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr value)
+xmlCtxtPushInput(xmlParserCtxt *ctxt, xmlParserInput *value)
 {
     char *directory = NULL;
     int maxDepth;
@@ -1958,7 +1907,6 @@ xmlCtxtPushInput(xmlParserCtxtPtr ctxt,
         if (newSize < 0) {
             xmlFatalErrMsg(ctxt, XML_ERR_RESOURCE_LIMIT,
                            "Maximum entity nesting depth exceeded");
-            xmlHaltParser(ctxt);
             return(-1);
         }
         tmp = xmlRealloc(ctxt->inputTab, newSize * sizeof(tmp[0]));
@@ -1992,9 +1940,9 @@ xmlCtxtPushInput(xmlParserCtxtPtr ctxt,
     }
 
     /*
-     * Internally, the input ID is only used to detect parameter entity
-     * boundaries. But there are entity loaders in downstream code that
-     * detect the main document by checking for "input_id == 1".
+     * The input ID is unused internally, but there are entity
+     * loaders in downstream code that detect the main document
+     * by checking for "input_id == 1".
      */
     value->id = ctxt->input_id++;
 
@@ -2002,15 +1950,13 @@ xmlCtxtPushInput(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtPopInput:
- * @ctxt: an XML parser context
- *
  * Pops the top parser input from the input stack
  *
- * Returns the input just removed
+ * @param ctxt  an XML parser context
+ * @returns the input just removed
  */
-xmlParserInputPtr
-xmlCtxtPopInput(xmlParserCtxtPtr ctxt)
+xmlParserInput *
+xmlCtxtPopInput(xmlParserCtxt *ctxt)
 {
     xmlParserInputPtr ret;
 
@@ -2029,18 +1975,16 @@ xmlCtxtPopInput(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * nodePush:
- * @ctxt:  an XML parser context
- * @value:  the element node
- *
- * DEPRECATED: Internal function, do not use.
- *
  * Pushes a new element node on top of the node stack
  *
- * Returns -1 in case of error, the index in the stack otherwise
+ * @deprecated Internal function, do not use.
+ *
+ * @param ctxt  an XML parser context
+ * @param value  the element node
+ * @returns -1 in case of error, the index in the stack otherwise
  */
 int
-nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value)
+nodePush(xmlParserCtxt *ctxt, xmlNode *value)
 {
     if (ctxt == NULL)
         return(0);
@@ -2057,7 +2001,6 @@ nodePush(xmlParserCtxtPtr ctxt, xmlNodeP
                     "Excessive depth in document: %d,"
                     " use XML_PARSE_HUGE option\n",
                     ctxt->nodeNr);
-            xmlHaltParser(ctxt);
             return(-1);
         }
 
@@ -2076,17 +2019,15 @@ nodePush(xmlParserCtxtPtr ctxt, xmlNodeP
 }
 
 /**
- * nodePop:
- * @ctxt: an XML parser context
- *
- * DEPRECATED: Internal function, do not use.
- *
  * Pops the top element node from the node stack
  *
- * Returns the node just removed
+ * @deprecated Internal function, do not use.
+ *
+ * @param ctxt  an XML parser context
+ * @returns the node just removed
  */
-xmlNodePtr
-nodePop(xmlParserCtxtPtr ctxt)
+xmlNode *
+nodePop(xmlParserCtxt *ctxt)
 {
     xmlNodePtr ret;
 
@@ -2104,17 +2045,15 @@ nodePop(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * nameNsPush:
- * @ctxt:  an XML parser context
- * @value:  the element name
- * @prefix:  the element prefix
- * @URI:  the element namespace name
- * @line:  the current line number for error messages
- * @nsNr:  the number of namespaces pushed on the namespace table
- *
  * Pushes a new element name/prefix/URL on top of the name stack
  *
- * Returns -1 in case of error, the index in the stack otherwise
+ * @param ctxt  an XML parser context
+ * @param value  the element name
+ * @param prefix  the element prefix
+ * @param URI  the element namespace name
+ * @param line  the current line number for error messages
+ * @param nsNr  the number of namespaces pushed on the namespace table
+ * @returns -1 in case of error, the index in the stack otherwise
  */
 static int
 nameNsPush(xmlParserCtxtPtr ctxt, const xmlChar * value,
@@ -2163,12 +2102,10 @@ mem_error:
 }
 #ifdef LIBXML_PUSH_ENABLED
 /**
- * nameNsPop:
- * @ctxt: an XML parser context
- *
  * Pops the top element/prefix/URI name from the name stack
  *
- * Returns the name just removed
+ * @param ctxt  an XML parser context
+ * @returns the name just removed
  */
 static const xmlChar *
 nameNsPop(xmlParserCtxtPtr ctxt)
@@ -2189,14 +2126,12 @@ nameNsPop(xmlParserCtxtPtr ctxt)
 #endif /* LIBXML_PUSH_ENABLED */
 
 /**
- * namePop:
- * @ctxt: an XML parser context
- *
- * DEPRECATED: Internal function, do not use.
- *
  * Pops the top element name from the name stack
  *
- * Returns the name just removed
+ * @deprecated Internal function, do not use.
+ *
+ * @param ctxt  an XML parser context
+ * @returns the name just removed
  */
 static const xmlChar *
 namePop(xmlParserCtxtPtr ctxt)
@@ -2281,7 +2216,6 @@ static int spacePop(xmlParserCtxtPtr ctx
  *   NEXT    Skip to the next character, this does the proper decoding
  *           in UTF-8 mode. It also pop-up unfinished entities on the fly.
  *   NEXTL(l) Skip the current unicode character of l xmlChars long.
- *   CUR_SCHAR  same but operate on a string instead of the context
  *   COPY_BUF  copy the current unicode char to the target buffer, increment
  *            the index
  *   GROW, SHRINK  handling of input buffers
@@ -2358,8 +2292,6 @@ static int spacePop(xmlParserCtxtPtr ctx
     ctxt->input->cur += l;				\
   } while (0)
 
-#define CUR_SCHAR(s, l) xmlStringCurrentChar(ctxt, s, &l)
-
 #define COPY_BUF(b, i, v)						\
     if (v < 0x80) b[i++] = v;						\
     else i += xmlCopyCharMultiByte(&b[i],v)
@@ -2375,17 +2307,15 @@ xmlCurrentCharRecover(xmlParserCtxtPtr c
 }
 
 /**
- * xmlSkipBlankChars:
- * @ctxt:  the XML parser context
- *
- * DEPRECATED: Internal function, do not use.
- *
  * Skip whitespace in the input stream.
  *
- * Returns the number of space chars skipped
+ * @deprecated Internal function, do not use.
+ *
+ * @param ctxt  the XML parser context
+ * @returns the number of space chars skipped
  */
 int
-xmlSkipBlankChars(xmlParserCtxtPtr ctxt) {
+xmlSkipBlankChars(xmlParserCtxt *ctxt) {
     const xmlChar *cur;
     int res = 0;
 
@@ -2460,13 +2390,11 @@ xmlPopPE(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlSkipBlankCharsPE:
- * @ctxt:  the XML parser context
- *
  * Skip whitespace in the input stream, also handling parameter
  * entities.
  *
- * Returns the number of space chars skipped
+ * @param ctxt  the XML parser context
+ * @returns the number of space chars skipped
  */
 static int
 xmlSkipBlankCharsPE(xmlParserCtxtPtr ctxt) {
@@ -2498,7 +2426,7 @@ xmlSkipBlankCharsPE(xmlParserCtxtPtr ctx
              * even consume the whole entity and pop it. We might
              * even pop multiple PEs in this loop.
              */
-            xmlParsePEReference(ctxt);
+            xmlParsePERefInternal(ctxt, 0);
 
             inParam = PARSER_IN_PE(ctxt);
             expandParam = PARSER_EXTERNAL(ctxt);
@@ -2506,6 +2434,14 @@ xmlSkipBlankCharsPE(xmlParserCtxtPtr ctx
             if (inParam == 0)
                 break;
 
+            /*
+             * Don't pop parameter entities that start a markup
+             * declaration to detect Well-formedness constraint:
+             * PE Between Declarations.
+             */
+            if (ctxt->input->flags & XML_INPUT_MARKUP_DECL)
+                break;
+
             xmlPopPE(ctxt);
 
             inParam = PARSER_IN_PE(ctxt);
@@ -2535,15 +2471,13 @@ xmlSkipBlankCharsPE(xmlParserCtxtPtr ctx
  ************************************************************************/
 
 /**
- * xmlPopInput:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns the current xmlChar in the parser context
+ * @param ctxt  an XML parser context
+ * @returns the current xmlChar in the parser context
  */
 xmlChar
-xmlPopInput(xmlParserCtxtPtr ctxt) {
+xmlPopInput(xmlParserCtxt *ctxt) {
     xmlParserInputPtr input;
 
     if ((ctxt == NULL) || (ctxt->inputNr <= 1)) return(0);
@@ -2555,18 +2489,16 @@ xmlPopInput(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlPushInput:
- * @ctxt:  an XML parser context
- * @input:  an XML parser input fragment (entity, XML fragment ...).
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Push an input stream onto the stack.
  *
- * Returns -1 in case of error or the index in the input stack
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  an XML parser context
+ * @param input  an XML parser input fragment (entity, XML fragment ...).
+ * @returns -1 in case of error or the index in the input stack
  */
 int
-xmlPushInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr input) {
+xmlPushInput(xmlParserCtxt *ctxt, xmlParserInput *input) {
     int ret;
 
     if ((ctxt == NULL) || (input == NULL))
@@ -2579,24 +2511,22 @@ xmlPushInput(xmlParserCtxtPtr ctxt, xmlP
 }
 
 /**
- * xmlParseCharRef:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse a numeric character reference. Always consumes '&'.
  *
- * [66] CharRef ::= '&#' [0-9]+ ';' |
- *                  '&#x' [0-9a-fA-F]+ ';'
+ * @deprecated Internal function, don't use.
+ *
+ *     [66] CharRef ::= '&#' [0-9]+ ';' |
+ *                      '&#x' [0-9a-fA-F]+ ';'
  *
  * [ WFC: Legal Character ]
  * Characters referred to using character references must match the
  * production for Char.
  *
- * Returns the value parsed (as an int), 0 in case of error
+ * @param ctxt  an XML parser context
+ * @returns the value parsed (as an int), 0 in case of error
  */
 int
-xmlParseCharRef(xmlParserCtxtPtr ctxt) {
+xmlParseCharRef(xmlParserCtxt *ctxt) {
     int val = 0;
     int count = 0;
 
@@ -2685,21 +2615,19 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseStringCharRef:
- * @ctxt:  an XML parser context
- * @str:  a pointer to an index in the string
- *
- * parse Reference declarations, variant parsing from a string rather
+ * Parse Reference declarations, variant parsing from a string rather
  * than an an input flow.
  *
- * [66] CharRef ::= '&#' [0-9]+ ';' |
- *                  '&#x' [0-9a-fA-F]+ ';'
+ *     [66] CharRef ::= '&#' [0-9]+ ';' |
+ *                      '&#x' [0-9a-fA-F]+ ';'
  *
  * [ WFC: Legal Character ]
  * Characters referred to using character references must match the
  * production for Char.
  *
- * Returns the value parsed (as an int), 0 in case of error, str will be
+ * @param ctxt  an XML parser context
+ * @param str  a pointer to an index in the string
+ * @returns the value parsed (as an int), 0 in case of error, str will be
  *         updated to the current value of the index
  */
 static int
@@ -2779,12 +2707,9 @@ xmlParseStringCharRef(xmlParserCtxtPtr c
 }
 
 /**
- * xmlParserHandlePEReference:
- * @ctxt:  the parser context
+ *     [69] PEReference ::= '%' Name ';'
  *
- * DEPRECATED: Internal function, do not use.
- *
- * [69] PEReference ::= '%' Name ';'
+ * @deprecated Internal function, do not use.
  *
  * [ WFC: No Recursion ]
  * A parsed entity must not contain a recursive
@@ -2811,29 +2736,28 @@ xmlParseStringCharRef(xmlParserCtxtPtr c
  * i.e.
  *   - Included in literal in entity values
  *   - Included as Parameter Entity reference within DTDs
+ * @param ctxt  the parser context
  */
 void
-xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
-    xmlParsePEReference(ctxt);
+xmlParserHandlePEReference(xmlParserCtxt *ctxt) {
+    xmlParsePERefInternal(ctxt, 0);
 }
 
 /**
- * xmlStringLenDecodeEntities:
- * @ctxt:  the parser context
- * @str:  the input string
- * @len: the string length
- * @what:  combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF
- * @end:  an end marker xmlChar, 0 if none
- * @end2:  an end marker xmlChar, 0 if none
- * @end3:  an end marker xmlChar, 0 if none
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns A newly allocated string with the substitution done. The caller
+ * @param ctxt  the parser context
+ * @param str  the input string
+ * @param len  the string length
+ * @param what  combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF
+ * @param end  an end marker xmlChar, 0 if none
+ * @param end2  an end marker xmlChar, 0 if none
+ * @param end3  an end marker xmlChar, 0 if none
+ * @returns A newly allocated string with the substitution done. The caller
  *      must deallocate it !
  */
 xmlChar *
-xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
+xmlStringLenDecodeEntities(xmlParserCtxt *ctxt, const xmlChar *str, int len,
                            int what ATTRIBUTE_UNUSED,
                            xmlChar end, xmlChar end2, xmlChar end3) {
     if ((ctxt == NULL) || (str == NULL) || (len < 0))
@@ -2847,21 +2771,19 @@ xmlStringLenDecodeEntities(xmlParserCtxt
 }
 
 /**
- * xmlStringDecodeEntities:
- * @ctxt:  the parser context
- * @str:  the input string
- * @what:  combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF
- * @end:  an end marker xmlChar, 0 if none
- * @end2:  an end marker xmlChar, 0 if none
- * @end3:  an end marker xmlChar, 0 if none
+ * @deprecated Internal function, don't use.
  *
- * DEPRECATED: Internal function, don't use.
- *
- * Returns A newly allocated string with the substitution done. The caller
+ * @param ctxt  the parser context
+ * @param str  the input string
+ * @param what  combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF
+ * @param end  an end marker xmlChar, 0 if none
+ * @param end2  an end marker xmlChar, 0 if none
+ * @param end3  an end marker xmlChar, 0 if none
+ * @returns A newly allocated string with the substitution done. The caller
  *      must deallocate it !
  */
 xmlChar *
-xmlStringDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str,
+xmlStringDecodeEntities(xmlParserCtxt *ctxt, const xmlChar *str,
                         int what ATTRIBUTE_UNUSED,
 		        xmlChar end, xmlChar  end2, xmlChar end3) {
     if ((ctxt == NULL) || (str == NULL))
@@ -2880,15 +2802,13 @@ xmlStringDecodeEntities(xmlParserCtxtPtr
  ************************************************************************/
 
 /**
- * areBlanks:
- * @ctxt:  an XML parser context
- * @str:  a xmlChar *
- * @len:  the size of @str
- * @blank_chars: we know the chars are blanks
- *
  * Is this a sequence of blank chars that one can ignore ?
  *
- * Returns 1 if ignorable 0 otherwise.
+ * @param ctxt  an XML parser context
+ * @param str  a xmlChar *
+ * @param len  the size of `str`
+ * @param blank_chars  we know the chars are blanks
+ * @returns 1 if ignorable 0 otherwise.
  */
 
 static int areBlanks(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
@@ -2968,196 +2888,32 @@ static int areBlanks(xmlParserCtxtPtr ct
  ************************************************************************/
 
 /**
- * xmlSplitQName:
- * @ctxt:  an XML parser context
- * @name:  an XML parser context
- * @prefixOut:  a xmlChar **
- *
- * DEPRECATED: Don't use.
+ * Parse an UTF8 encoded XML qualified name string
  *
- * parse an UTF8 encoded XML qualified name string
+ * @deprecated Don't use.
  *
- * [NS 5] QName ::= (Prefix ':')? LocalPart
- *
- * [NS 6] Prefix ::= NCName
- *
- * [NS 7] LocalPart ::= NCName
- *
- * Returns the local part, and prefix is updated
+ * @param ctxt  an XML parser context
+ * @param name  an XML parser context
+ * @param prefixOut  a xmlChar **
+ * @returns the local part, and prefix is updated
  *   to get the Prefix if any.
  */
 
 xmlChar *
-xmlSplitQName(xmlParserCtxtPtr ctxt, const xmlChar *name, xmlChar **prefixOut) {
-    xmlChar buf[XML_MAX_NAMELEN + 5];
-    xmlChar *buffer = NULL;
-    int len = 0;
-    int max = XML_MAX_NAMELEN;
-    xmlChar *ret = NULL;
-    xmlChar *prefix;
-    const xmlChar *cur = name;
-    int c;
-
-    if (prefixOut == NULL) return(NULL);
-    *prefixOut = NULL;
-
-    if (cur == NULL) return(NULL);
-
-    /* nasty but well=formed */
-    if (cur[0] == ':')
-	return(xmlStrdup(name));
-
-    c = *cur++;
-    while ((c != 0) && (c != ':') && (len < max)) { /* tested bigname.xml */
-	buf[len++] = c;
-	c = *cur++;
-    }
-    if (len >= max) {
-	/*
-	 * Okay someone managed to make a huge name, so he's ready to pay
-	 * for the processing speed.
-	 */
-	max = len * 2;
-
-	buffer = xmlMalloc(max);
-	if (buffer == NULL) {
-	    xmlErrMemory(ctxt);
-	    return(NULL);
-	}
-	memcpy(buffer, buf, len);
-	while ((c != 0) && (c != ':')) { /* tested bigname.xml */
-	    if (len + 10 > max) {
-	        xmlChar *tmp;
-                int newSize;
-
-                newSize = xmlGrowCapacity(max, 1, 1, XML_MAX_ITEMS);
-                if (newSize < 0) {
-		    xmlErrMemory(ctxt);
-		    xmlFree(buffer);
-		    return(NULL);
-                }
-		tmp = xmlRealloc(buffer, newSize);
-		if (tmp == NULL) {
-		    xmlErrMemory(ctxt);
-		    xmlFree(buffer);
-		    return(NULL);
-		}
-		buffer = tmp;
-		max = newSize;
-	    }
-	    buffer[len++] = c;
-	    c = *cur++;
-	}
-	buffer[len] = 0;
-    }
-
-    if ((c == ':') && (*cur == 0)) {
-        if (buffer != NULL)
-	    xmlFree(buffer);
-	return(xmlStrdup(name));
-    }
+xmlSplitQName(xmlParserCtxt *ctxt, const xmlChar *name, xmlChar **prefixOut) {
+    xmlChar *ret;
+    const xmlChar *localname;
 
-    if (buffer == NULL) {
-	ret = xmlStrndup(buf, len);
-        if (ret == NULL) {
-	    xmlErrMemory(ctxt);
-	    return(NULL);
-        }
-    } else {
-	ret = buffer;
-	buffer = NULL;
-	max = XML_MAX_NAMELEN;
+    localname = xmlSplitQName4(name, prefixOut);
+    if (localname == NULL) {
+        xmlCtxtErrMemory(ctxt);
+        return(NULL);
     }
 
-
-    if (c == ':') {
-	c = *cur;
-        prefix = ret;
-	if (c == 0) {
-	    ret = xmlStrndup(BAD_CAST "", 0);
-            if (ret == NULL) {
-                xmlFree(prefix);
-                return(NULL);
-            }
-            *prefixOut = prefix;
-            return(ret);
-	}
-	len = 0;
-
-	/*
-	 * Check that the first character is proper to start
-	 * a new name
-	 */
-	if (!(((c >= 0x61) && (c <= 0x7A)) ||
-	      ((c >= 0x41) && (c <= 0x5A)) ||
-	      (c == '_') || (c == ':'))) {
-	    int l;
-	    int first = CUR_SCHAR(cur, l);
-
-	    if (!IS_LETTER(first) && (first != '_')) {
-		xmlFatalErrMsgStr(ctxt, XML_NS_ERR_QNAME,
-			    "Name %s is not XML Namespace compliant\n",
-				  name);
-	    }
-	}
-	cur++;
-
-	while ((c != 0) && (len < max)) { /* tested bigname2.xml */
-	    buf[len++] = c;
-	    c = *cur++;
-	}
-	if (len >= max) {
-	    /*
-	     * Okay someone managed to make a huge name, so he's ready to pay
-	     * for the processing speed.
-	     */
-	    max = len * 2;
-
-	    buffer = xmlMalloc(max);
-	    if (buffer == NULL) {
-	        xmlErrMemory(ctxt);
-                xmlFree(prefix);
-		return(NULL);
-	    }
-	    memcpy(buffer, buf, len);
-	    while (c != 0) { /* tested bigname2.xml */
-		if (len + 10 > max) {
-		    xmlChar *tmp;
-                    int newSize;
-
-                    newSize = xmlGrowCapacity(max, 1, 1, XML_MAX_ITEMS);
-                    if (newSize < 0) {
-                        xmlErrMemory(ctxt);
-                        xmlFree(buffer);
-                        return(NULL);
-                    }
-		    tmp = xmlRealloc(buffer, newSize);
-		    if (tmp == NULL) {
-			xmlErrMemory(ctxt);
-                        xmlFree(prefix);
-			xmlFree(buffer);
-			return(NULL);
-		    }
-		    buffer = tmp;
-                    max = newSize;
-		}
-		buffer[len++] = c;
-		c = *cur++;
-	    }
-	    buffer[len] = 0;
-	}
-
-	if (buffer == NULL) {
-	    ret = xmlStrndup(buf, len);
-            if (ret == NULL) {
-                xmlFree(prefix);
-                return(NULL);
-            }
-	} else {
-	    ret = buffer;
-	}
-
-        *prefixOut = prefix;
+    ret = xmlStrdup(localname);
+    if (ret == NULL) {
+        xmlCtxtErrMemory(ctxt);
+        xmlFree(*prefixOut);
     }
 
     return(ret);
@@ -3186,76 +2942,146 @@ xmlSplitQName(xmlParserCtxtPtr ctxt, con
  * We still keep compatibility to pre-revision5 parsing semantic if the
  * new XML_PARSE_OLD10 option is given to the parser.
  */
+
 static int
-xmlIsNameStartChar(xmlParserCtxtPtr ctxt, int c) {
-    if ((ctxt->options & XML_PARSE_OLD10) == 0) {
-        /*
-	 * Use the new checks of production [4] [4a] amd [5] of the
-	 * Update 5 of XML-1.0
-	 */
-	if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
-	    (((c >= 'a') && (c <= 'z')) ||
-	     ((c >= 'A') && (c <= 'Z')) ||
-	     (c == '_') || (c == ':') ||
-	     ((c >= 0xC0) && (c <= 0xD6)) ||
-	     ((c >= 0xD8) && (c <= 0xF6)) ||
-	     ((c >= 0xF8) && (c <= 0x2FF)) ||
-	     ((c >= 0x370) && (c <= 0x37D)) ||
-	     ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	     ((c >= 0x200C) && (c <= 0x200D)) ||
-	     ((c >= 0x2070) && (c <= 0x218F)) ||
-	     ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	     ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	     ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	     ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	     ((c >= 0x10000) && (c <= 0xEFFFF))))
-	    return(1);
-    } else {
-        if (IS_LETTER(c) || (c == '_') || (c == ':'))
-	    return(1);
-    }
+xmlIsNameStartCharNew(int c) {
+    /*
+     * Use the new checks of production [4] [4a] amd [5] of the
+     * Update 5 of XML-1.0
+     */
+    if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
+        (((c >= 'a') && (c <= 'z')) ||
+         ((c >= 'A') && (c <= 'Z')) ||
+         (c == '_') || (c == ':') ||
+         ((c >= 0xC0) && (c <= 0xD6)) ||
+         ((c >= 0xD8) && (c <= 0xF6)) ||
+         ((c >= 0xF8) && (c <= 0x2FF)) ||
+         ((c >= 0x370) && (c <= 0x37D)) ||
+         ((c >= 0x37F) && (c <= 0x1FFF)) ||
+         ((c >= 0x200C) && (c <= 0x200D)) ||
+         ((c >= 0x2070) && (c <= 0x218F)) ||
+         ((c >= 0x2C00) && (c <= 0x2FEF)) ||
+         ((c >= 0x3001) && (c <= 0xD7FF)) ||
+         ((c >= 0xF900) && (c <= 0xFDCF)) ||
+         ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
+         ((c >= 0x10000) && (c <= 0xEFFFF))))
+        return(1);
     return(0);
 }
 
 static int
-xmlIsNameChar(xmlParserCtxtPtr ctxt, int c) {
-    if ((ctxt->options & XML_PARSE_OLD10) == 0) {
-        /*
-	 * Use the new checks of production [4] [4a] amd [5] of the
-	 * Update 5 of XML-1.0
-	 */
-	if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
-	    (((c >= 'a') && (c <= 'z')) ||
-	     ((c >= 'A') && (c <= 'Z')) ||
-	     ((c >= '0') && (c <= '9')) || /* !start */
-	     (c == '_') || (c == ':') ||
-	     (c == '-') || (c == '.') || (c == 0xB7) || /* !start */
-	     ((c >= 0xC0) && (c <= 0xD6)) ||
-	     ((c >= 0xD8) && (c <= 0xF6)) ||
-	     ((c >= 0xF8) && (c <= 0x2FF)) ||
-	     ((c >= 0x300) && (c <= 0x36F)) || /* !start */
-	     ((c >= 0x370) && (c <= 0x37D)) ||
-	     ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	     ((c >= 0x200C) && (c <= 0x200D)) ||
-	     ((c >= 0x203F) && (c <= 0x2040)) || /* !start */
-	     ((c >= 0x2070) && (c <= 0x218F)) ||
-	     ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	     ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	     ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	     ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	     ((c >= 0x10000) && (c <= 0xEFFFF))))
-	     return(1);
-    } else {
-        if ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
-            (c == '.') || (c == '-') ||
-	    (c == '_') || (c == ':') ||
-	    (IS_COMBINING(c)) ||
-	    (IS_EXTENDER(c)))
-	    return(1);
-    }
+xmlIsNameCharNew(int c) {
+    /*
+     * Use the new checks of production [4] [4a] amd [5] of the
+     * Update 5 of XML-1.0
+     */
+    if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
+        (((c >= 'a') && (c <= 'z')) ||
+         ((c >= 'A') && (c <= 'Z')) ||
+         ((c >= '0') && (c <= '9')) || /* !start */
+         (c == '_') || (c == ':') ||
+         (c == '-') || (c == '.') || (c == 0xB7) || /* !start */
+         ((c >= 0xC0) && (c <= 0xD6)) ||
+         ((c >= 0xD8) && (c <= 0xF6)) ||
+         ((c >= 0xF8) && (c <= 0x2FF)) ||
+         ((c >= 0x300) && (c <= 0x36F)) || /* !start */
+         ((c >= 0x370) && (c <= 0x37D)) ||
+         ((c >= 0x37F) && (c <= 0x1FFF)) ||
+         ((c >= 0x200C) && (c <= 0x200D)) ||
+         ((c >= 0x203F) && (c <= 0x2040)) || /* !start */
+         ((c >= 0x2070) && (c <= 0x218F)) ||
+         ((c >= 0x2C00) && (c <= 0x2FEF)) ||
+         ((c >= 0x3001) && (c <= 0xD7FF)) ||
+         ((c >= 0xF900) && (c <= 0xFDCF)) ||
+         ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
+         ((c >= 0x10000) && (c <= 0xEFFFF))))
+         return(1);
     return(0);
 }
 
+static int
+xmlIsNameStartCharOld(int c) {
+    if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
+        ((IS_LETTER(c) || (c == '_') || (c == ':'))))
+        return(1);
+    return(0);
+}
+
+static int
+xmlIsNameCharOld(int c) {
+    if ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
+        ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
+         (c == '.') || (c == '-') ||
+         (c == '_') || (c == ':') ||
+         (IS_COMBINING(c)) ||
+         (IS_EXTENDER(c))))
+        return(1);
+    return(0);
+}
+
+static int
+xmlIsNameStartChar(int c, int old10) {
+    if (!old10)
+        return(xmlIsNameStartCharNew(c));
+    else
+        return(xmlIsNameStartCharOld(c));
+}
+
+static int
+xmlIsNameChar(int c, int old10) {
+    if (!old10)
+        return(xmlIsNameCharNew(c));
+    else
+        return(xmlIsNameCharOld(c));
+}
+
+/*
+ * Scan an XML Name, NCName or Nmtoken.
+ *
+ * Returns a pointer to the end of the name on success. If the
+ * name is invalid, returns `ptr`. If the name is longer than
+ * `maxSize` bytes, returns NULL.
+ *
+ * @param ptr  pointer to the start of the name
+ * @param maxSize  maximum size in bytes
+ * @param flags  XML_SCAN_* flags
+ * @returns a pointer to the end of the name or NULL
+ */
+const xmlChar *
+xmlScanName(const xmlChar *ptr, size_t maxSize, int flags) {
+    int stop = flags & XML_SCAN_NC ? ':' : 0;
+    int old10 = flags & XML_SCAN_OLD10 ? 1 : 0;
+
+    while (1) {
+        int c, len;
+
+        c = *ptr;
+        if (c < 0x80) {
+            if (c == stop)
+                break;
+            len = 1;
+        } else {
+            len = 4;
+            c = xmlGetUTF8Char(ptr, &len);
+            if (c < 0)
+                break;
+        }
+
+        if (flags & XML_SCAN_NMTOKEN ?
+                !xmlIsNameChar(c, old10) :
+                !xmlIsNameStartChar(c, old10))
+            break;
+
+        if ((size_t) len > maxSize)
+            return(NULL);
+        ptr += len;
+        maxSize -= len;
+        flags |= XML_SCAN_NMTOKEN;
+    }
+
+    return(ptr);
+}
+
 static const xmlChar *
 xmlParseNameComplex(xmlParserCtxtPtr ctxt) {
     const xmlChar *ret;
@@ -3264,84 +3090,22 @@ xmlParseNameComplex(xmlParserCtxtPtr ctx
     int maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                     XML_MAX_TEXT_LENGTH :
                     XML_MAX_NAME_LENGTH;
+    int old10 = (ctxt->options & XML_PARSE_OLD10) ? 1 : 0;
 
     /*
      * Handler for more complex cases
      */
     c = xmlCurrentChar(ctxt, &l);
-    if ((ctxt->options & XML_PARSE_OLD10) == 0) {
-        /*
-	 * Use the new checks of production [4] [4a] amd [5] of the
-	 * Update 5 of XML-1.0
-	 */
-	if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
-	    (!(((c >= 'a') && (c <= 'z')) ||
-	       ((c >= 'A') && (c <= 'Z')) ||
-	       (c == '_') || (c == ':') ||
-	       ((c >= 0xC0) && (c <= 0xD6)) ||
-	       ((c >= 0xD8) && (c <= 0xF6)) ||
-	       ((c >= 0xF8) && (c <= 0x2FF)) ||
-	       ((c >= 0x370) && (c <= 0x37D)) ||
-	       ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	       ((c >= 0x200C) && (c <= 0x200D)) ||
-	       ((c >= 0x2070) && (c <= 0x218F)) ||
-	       ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	       ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	       ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	       ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	       ((c >= 0x10000) && (c <= 0xEFFFF))))) {
-	    return(NULL);
-	}
-	len += l;
-	NEXTL(l);
-	c = xmlCurrentChar(ctxt, &l);
-	while ((c != ' ') && (c != '>') && (c != '/') && /* accelerators */
-	       (((c >= 'a') && (c <= 'z')) ||
-	        ((c >= 'A') && (c <= 'Z')) ||
-	        ((c >= '0') && (c <= '9')) || /* !start */
-	        (c == '_') || (c == ':') ||
-	        (c == '-') || (c == '.') || (c == 0xB7) || /* !start */
-	        ((c >= 0xC0) && (c <= 0xD6)) ||
-	        ((c >= 0xD8) && (c <= 0xF6)) ||
-	        ((c >= 0xF8) && (c <= 0x2FF)) ||
-	        ((c >= 0x300) && (c <= 0x36F)) || /* !start */
-	        ((c >= 0x370) && (c <= 0x37D)) ||
-	        ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	        ((c >= 0x200C) && (c <= 0x200D)) ||
-	        ((c >= 0x203F) && (c <= 0x2040)) || /* !start */
-	        ((c >= 0x2070) && (c <= 0x218F)) ||
-	        ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	        ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	        ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	        ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	        ((c >= 0x10000) && (c <= 0xEFFFF))
-		)) {
-            if (len <= INT_MAX - l)
-	        len += l;
-	    NEXTL(l);
-	    c = xmlCurrentChar(ctxt, &l);
-	}
-    } else {
-	if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
-	    (!IS_LETTER(c) && (c != '_') &&
-	     (c != ':'))) {
-	    return(NULL);
-	}
-	len += l;
-	NEXTL(l);
-	c = xmlCurrentChar(ctxt, &l);
-
-	while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
-	       ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
-		(c == '.') || (c == '-') ||
-		(c == '_') || (c == ':') ||
-		(IS_COMBINING(c)) ||
-		(IS_EXTENDER(c)))) {
-            if (len <= INT_MAX - l)
-	        len += l;
-	    NEXTL(l);
-	    c = xmlCurrentChar(ctxt, &l);
-	}
+    if (!xmlIsNameStartChar(c, old10))
+        return(NULL);
+    len += l;
+    NEXTL(l);
+    c = xmlCurrentChar(ctxt, &l);
+    while (xmlIsNameChar(c, old10)) {
+        if (len <= INT_MAX - l)
+            len += l;
+        NEXTL(l);
+        c = xmlCurrentChar(ctxt, &l);
     }
     if (len > maxLength) {
         xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "Name");
@@ -3367,25 +3131,23 @@ xmlParseNameComplex(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseName:
- * @ctxt:  an XML parser context
+ * Parse an XML name.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an XML name.
- *
- * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
- *                  CombiningChar | Extender
+ *     [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
+ *                      CombiningChar | Extender
  *
- * [5] Name ::= (Letter | '_' | ':') (NameChar)*
+ *     [5] Name ::= (Letter | '_' | ':') (NameChar)*
  *
- * [6] Names ::= Name (#x20 Name)*
+ *     [6] Names ::= Name (#x20 Name)*
  *
- * Returns the Name parsed or NULL
+ * @param ctxt  an XML parser context
+ * @returns the Name parsed or NULL
  */
 
 const xmlChar *
-xmlParseName(xmlParserCtxtPtr ctxt) {
+xmlParseName(xmlParserCtxt *ctxt) {
     const xmlChar *in;
     const xmlChar *ret;
     size_t count = 0;
@@ -3435,6 +3197,7 @@ xmlParseNCNameComplex(xmlParserCtxtPtr c
     int maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                     XML_MAX_TEXT_LENGTH :
                     XML_MAX_NAME_LENGTH;
+    int old10 = (ctxt->options & XML_PARSE_OLD10) ? 1 : 0;
     size_t startPosition = 0;
 
     ret.name = NULL;
@@ -3446,12 +3209,12 @@ xmlParseNCNameComplex(xmlParserCtxtPtr c
     startPosition = CUR_PTR - BASE_PTR;
     c = xmlCurrentChar(ctxt, &l);
     if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
-	(!xmlIsNameStartChar(ctxt, c) || (c == ':'))) {
+	(!xmlIsNameStartChar(c, old10) || (c == ':'))) {
 	return(ret);
     }
 
     while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
-	   (xmlIsNameChar(ctxt, c) && (c != ':'))) {
+	   (xmlIsNameChar(c, old10) && (c != ':'))) {
         if (len <= INT_MAX - l)
 	    len += l;
 	NEXTL(l);
@@ -3468,18 +3231,15 @@ xmlParseNCNameComplex(xmlParserCtxtPtr c
 }
 
 /**
- * xmlParseNCName:
- * @ctxt:  an XML parser context
- * @len:  length of the string parsed
- *
- * parse an XML name.
+ * Parse an XML name.
  *
- * [4NS] NCNameChar ::= Letter | Digit | '.' | '-' | '_' |
- *                      CombiningChar | Extender
+ *     [4NS] NCNameChar ::= Letter | Digit | '.' | '-' | '_' |
+ *                          CombiningChar | Extender
  *
- * [5NS] NCName ::= (Letter | '_') (NCNameChar)*
+ *     [5NS] NCName ::= (Letter | '_') (NCNameChar)*
  *
- * Returns the Name parsed or NULL
+ * @param ctxt  an XML parser context
+ * @returns the Name parsed or NULL
  */
 
 static xmlHashedString
@@ -3530,13 +3290,12 @@ complex:
 }
 
 /**
- * xmlParseNameAndCompare:
- * @ctxt:  an XML parser context
- *
- * parse an XML name and compares for match
+ * Parse an XML name and compares for match
  * (specialized for endtag parsing)
  *
- * Returns NULL for an illegal name, (xmlChar*) 1 for success
+ * @param ctxt  an XML parser context
+ * @param other  the name to compare with
+ * @returns NULL for an illegal name, (xmlChar*) 1 for success
  * and the name for mismatch
  */
 
@@ -3569,117 +3328,56 @@ xmlParseNameAndCompare(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseStringName:
- * @ctxt:  an XML parser context
- * @str:  a pointer to the string pointer (IN/OUT)
- *
- * parse an XML name.
- *
- * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
- *                  CombiningChar | Extender
+ * Parse an XML name.
  *
- * [5] Name ::= (Letter | '_' | ':') (NameChar)*
- *
- * [6] Names ::= Name (#x20 Name)*
- *
- * Returns the Name parsed or NULL. The @str pointer
+ * @param ctxt  an XML parser context
+ * @param str  a pointer to the string pointer (IN/OUT)
+ * @returns the Name parsed or NULL. The `str` pointer
  * is updated to the current location in the string.
  */
 
 static xmlChar *
 xmlParseStringName(xmlParserCtxtPtr ctxt, const xmlChar** str) {
-    xmlChar buf[XML_MAX_NAMELEN + 5];
     xmlChar *ret;
     const xmlChar *cur = *str;
-    int len = 0, l;
-    int c;
+    int flags = 0;
     int maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                     XML_MAX_TEXT_LENGTH :
                     XML_MAX_NAME_LENGTH;
 
-    c = CUR_SCHAR(cur, l);
-    if (!xmlIsNameStartChar(ctxt, c)) {
-	return(NULL);
-    }
+    if (ctxt->options & XML_PARSE_OLD10)
+        flags |= XML_SCAN_OLD10;
 
-    COPY_BUF(buf, len, c);
-    cur += l;
-    c = CUR_SCHAR(cur, l);
-    while (xmlIsNameChar(ctxt, c)) {
-	COPY_BUF(buf, len, c);
-	cur += l;
-	c = CUR_SCHAR(cur, l);
-	if (len >= XML_MAX_NAMELEN) { /* test bigentname.xml */
-	    /*
-	     * Okay someone managed to make a huge name, so he's ready to pay
-	     * for the processing speed.
-	     */
-	    xmlChar *buffer;
-	    int max = len * 2;
-
-	    buffer = xmlMalloc(max);
-	    if (buffer == NULL) {
-	        xmlErrMemory(ctxt);
-		return(NULL);
-	    }
-	    memcpy(buffer, buf, len);
-	    while (xmlIsNameChar(ctxt, c)) {
-		if (len + 10 > max) {
-		    xmlChar *tmp;
-                    int newSize;
-
-                    newSize = xmlGrowCapacity(max, 1, 1, maxLength);
-                    if (newSize < 0) {
-                        xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
-                        xmlFree(buffer);
-                        return(NULL);
-                    }
-		    tmp = xmlRealloc(buffer, newSize);
-		    if (tmp == NULL) {
-			xmlErrMemory(ctxt);
-			xmlFree(buffer);
-			return(NULL);
-		    }
-		    buffer = tmp;
-                    max = newSize;
-		}
-		COPY_BUF(buffer, len, c);
-		cur += l;
-		c = CUR_SCHAR(cur, l);
-	    }
-	    buffer[len] = 0;
-	    *str = cur;
-	    return(buffer);
-	}
-    }
-    if (len > maxLength) {
+    cur = xmlScanName(*str, maxLength, flags);
+    if (cur == NULL) {
         xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
         return(NULL);
     }
-    *str = cur;
-    ret = xmlStrndup(buf, len);
+    if (cur == *str)
+        return(NULL);
+
+    ret = xmlStrndup(*str, cur - *str);
     if (ret == NULL)
         xmlErrMemory(ctxt);
+    *str = cur;
     return(ret);
 }
 
 /**
- * xmlParseNmtoken:
- * @ctxt:  an XML parser context
+ * Parse an XML Nmtoken.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an XML Nmtoken.
+ *     [7] Nmtoken ::= (NameChar)+
  *
- * [7] Nmtoken ::= (NameChar)+
+ *     [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
  *
- * [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
- *
- * Returns the Nmtoken parsed or NULL
+ * @param ctxt  an XML parser context
+ * @returns the Nmtoken parsed or NULL
  */
 
 xmlChar *
-xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
+xmlParseNmtoken(xmlParserCtxt *ctxt) {
     xmlChar buf[XML_MAX_NAMELEN + 5];
     xmlChar *ret;
     int len = 0, l;
@@ -3687,10 +3385,11 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
     int maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                     XML_MAX_TEXT_LENGTH :
                     XML_MAX_NAME_LENGTH;
+    int old10 = (ctxt->options & XML_PARSE_OLD10) ? 1 : 0;
 
     c = xmlCurrentChar(ctxt, &l);
 
-    while (xmlIsNameChar(ctxt, c)) {
+    while (xmlIsNameChar(c, old10)) {
 	COPY_BUF(buf, len, c);
 	NEXTL(l);
 	c = xmlCurrentChar(ctxt, &l);
@@ -3708,7 +3407,7 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
 		return(NULL);
 	    }
 	    memcpy(buffer, buf, len);
-	    while (xmlIsNameChar(ctxt, c)) {
+	    while (xmlIsNameChar(c, old10)) {
 		if (len + 10 > max) {
 		    xmlChar *tmp;
                     int newSize;
@@ -3749,14 +3448,13 @@ xmlParseNmtoken(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlExpandPEsInEntityValue:
- * @ctxt:  parser context
- * @buf:  string buffer
- * @str:  entity value
- * @length:  size of entity value
- * @depth:  nesting depth
- *
  * Validate an entity value and expand parameter entities.
+ *
+ * @param ctxt  parser context
+ * @param buf  string buffer
+ * @param str  entity value
+ * @param length  size of entity value
+ * @param depth  nesting depth
  */
 static void
 xmlExpandPEsInEntityValue(xmlParserCtxtPtr ctxt, xmlSBuf *buf,
@@ -3867,7 +3565,6 @@ xmlExpandPEsInEntityValue(xmlParserCtxtP
 
             if (ent->flags & XML_ENT_EXPANDING) {
                 xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-                xmlHaltParser(ctxt);
                 return;
             }
 
@@ -3898,21 +3595,19 @@ xmlExpandPEsInEntityValue(xmlParserCtxtP
 }
 
 /**
- * xmlParseEntityValue:
- * @ctxt:  an XML parser context
- * @orig:  if non-NULL store a copy of the original entity value
+ * Parse a value for ENTITY declarations
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse a value for ENTITY declarations
+ *     [9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' |
+ *                         "'" ([^%&'] | PEReference | Reference)* "'"
  *
- * [9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' |
- *	               "'" ([^%&'] | PEReference | Reference)* "'"
- *
- * Returns the EntityValue parsed with reference substituted or NULL
+ * @param ctxt  an XML parser context
+ * @param orig  if non-NULL store a copy of the original entity value
+ * @returns the EntityValue parsed with reference substituted or NULL
  */
 xmlChar *
-xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) {
+xmlParseEntityValue(xmlParserCtxt *ctxt, xmlChar **orig) {
     unsigned maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                          XML_MAX_HUGE_LENGTH :
                          XML_MAX_TEXT_LENGTH;
@@ -3986,13 +3681,12 @@ error:
 }
 
 /**
- * xmlCheckEntityInAttValue:
- * @ctxt:  parser context
- * @pent:  entity
- * @depth:  nesting depth
- *
  * Check an entity reference in an attribute value for validity
  * without expanding it.
+ *
+ * @param ctxt  parser context
+ * @param pent  entity
+ * @param depth  nesting depth
  */
 static void
 xmlCheckEntityInAttValue(xmlParserCtxtPtr ctxt, xmlEntityPtr pent, int depth) {
@@ -4010,7 +3704,6 @@ xmlCheckEntityInAttValue(xmlParserCtxtPt
 
     if (pent->flags & XML_ENT_EXPANDING) {
         xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-        xmlHaltParser(ctxt);
         return;
     }
 
@@ -4090,46 +3783,46 @@ done:
 }
 
 /**
- * xmlExpandEntityInAttValue:
- * @ctxt:  parser context
- * @buf:  string buffer
- * @str:  entity or attribute value
- * @pent:  entity for entity value, NULL for attribute values
- * @normalize:  whether to collapse whitespace
- * @inSpace:  whitespace state
- * @depth:  nesting depth
- * @check:  whether to check for amplification
- *
  * Expand general entity references in an entity or attribute value.
  * Perform attribute value normalization.
+ *
+ * @param ctxt  parser context
+ * @param buf  string buffer
+ * @param str  entity or attribute value
+ * @param pent  entity for entity value, NULL for attribute values
+ * @param normalize  whether to collapse whitespace
+ * @param inSpace  whitespace state
+ * @param depth  nesting depth
+ * @param check  whether to check for amplification
+ * @returns  whether there was a normalization change
  */
-static void
+static int
 xmlExpandEntityInAttValue(xmlParserCtxtPtr ctxt, xmlSBuf *buf,
                           const xmlChar *str, xmlEntityPtr pent, int normalize,
                           int *inSpace, int depth, int check) {
     int maxDepth = (ctxt->options & XML_PARSE_HUGE) ? 40 : 20;
     int c, chunkSize;
+    int normChange = 0;
 
     if (str == NULL)
-        return;
+        return(0);
 
     depth += 1;
     if (depth > maxDepth) {
 	xmlFatalErrMsg(ctxt, XML_ERR_RESOURCE_LIMIT,
                        "Maximum entity nesting depth exceeded");
-	return;
+	return(0);
     }
 
     if (pent != NULL) {
         if (pent->flags & XML_ENT_EXPANDING) {
             xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-            xmlHaltParser(ctxt);
-            return;
+            return(0);
         }
 
         if (check) {
             if (xmlParserEntityCheck(ctxt, pent->length))
-                return;
+                return(0);
         }
     }
 
@@ -4165,6 +3858,7 @@ xmlExpandEntityInAttValue(xmlParserCtxtP
                         xmlSBufAddString(buf, str - chunkSize, chunkSize);
                         chunkSize = 0;
                     }
+                    normChange = 1;
                 } else if (c < 0x20) {
                     if (chunkSize > 0) {
                         xmlSBufAddString(buf, str - chunkSize, chunkSize);
@@ -4199,7 +3893,9 @@ xmlExpandEntityInAttValue(xmlParserCtxtP
             }
 
             if (val == ' ') {
-                if ((!normalize) || (!*inSpace))
+                if ((normalize) && (*inSpace))
+                    normChange = 1;
+                else
                     xmlSBufAddCString(buf, " ", 1);
                 *inSpace = 1;
             } else {
@@ -4239,8 +3935,8 @@ xmlExpandEntityInAttValue(xmlParserCtxtP
 	    } else if ((ent != NULL) && (ent->content != NULL)) {
                 if (pent != NULL)
                     pent->flags |= XML_ENT_EXPANDING;
-		xmlExpandEntityInAttValue(ctxt, buf, ent->content, ent,
-                                          normalize, inSpace, depth, check);
+		normChange |= xmlExpandEntityInAttValue(ctxt, buf,
+                        ent->content, ent, normalize, inSpace, depth, check);
                 if (pent != NULL)
                     pent->flags &= ~XML_ENT_EXPANDING;
 	    }
@@ -4249,21 +3945,21 @@ xmlExpandEntityInAttValue(xmlParserCtxtP
 
     if (chunkSize > 0)
         xmlSBufAddString(buf, str - chunkSize, chunkSize);
+
+    return(normChange);
 }
 
 /**
- * xmlExpandEntitiesInAttValue:
- * @ctxt:  parser context
- * @str:  entity or attribute value
- * @normalize:  whether to collapse whitespace
- *
  * Expand general entity references in an entity or attribute value.
  * Perform attribute value normalization.
  *
- * Returns the expanded attribtue value.
+ * @param ctxt  parser context
+ * @param str  entity or attribute value
+ * @param normalize  whether to collapse whitespace
+ * @returns the expanded attribtue value.
  */
 xmlChar *
-xmlExpandEntitiesInAttValue(xmlParserCtxtPtr ctxt, const xmlChar *str,
+xmlExpandEntitiesInAttValue(xmlParserCtxt *ctxt, const xmlChar *str,
                             int normalize) {
     unsigned maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                          XML_MAX_HUGE_LENGTH :
@@ -4283,49 +3979,54 @@ xmlExpandEntitiesInAttValue(xmlParserCtx
 }
 
 /**
- * xmlParseAttValueInternal:
- * @ctxt:  an XML parser context
- * @len:  attribute len result
- * @alloc:  whether the attribute was reallocated as a new string
- * @normalize:  if 1 then further non-CDATA normalization must be done
+ * Parse a value for an attribute.
  *
- * parse a value for an attribute.
  * NOTE: if no normalization is needed, the routine will return pointers
- *       directly from the data buffer.
+ * directly from the data buffer.
  *
  * 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 "#xD#xA" sequence that is part of an external
+ * - 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 "#xD#xA" 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.
+ * 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.
  *
- * Returns the AttValue parsed or NULL. The value has to be freed by the
+ * @param ctxt  an XML parser context
+ * @param attlen  attribute len result
+ * @param outFlags  resulting XML_ATTVAL_* flags
+ * @param special  value from attsSpecial
+ * @param isNamespace  whether this is a namespace declaration
+ * @returns the AttValue parsed or NULL. The value has to be freed by the
  *     caller if it was copied, this can be detected by val[*len] == 0.
  */
 static xmlChar *
-xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *attlen, int *alloc,
-                         int normalize, int isNamespace) {
+xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *attlen, int *outFlags,
+                         int special, int isNamespace) {
     unsigned maxLength = (ctxt->options & XML_PARSE_HUGE) ?
                          XML_MAX_HUGE_LENGTH :
                          XML_MAX_TEXT_LENGTH;
     xmlSBuf buf;
     xmlChar *ret;
-    int c, l, quote, flags, chunkSize;
+    int c, l, quote, entFlags, chunkSize;
     int inSpace = 1;
     int replaceEntities;
+    int normalize = (special & XML_SPECIAL_TYPE_MASK) != 0;
+    int attvalFlags = 0;
 
     /* Always expand namespace URIs */
     replaceEntities = (ctxt->replaceEntities) || (isNamespace);
@@ -4342,9 +4043,9 @@ xmlParseAttValueInternal(xmlParserCtxtPt
     NEXTL(1);
 
     if (ctxt->inSubset == 0)
-        flags = XML_ENT_CHECKED | XML_ENT_VALIDATED;
+        entFlags = XML_ENT_CHECKED | XML_ENT_VALIDATED;
     else
-        flags = XML_ENT_VALIDATED;
+        entFlags = XML_ENT_VALIDATED;
 
     inSpace = 1;
     chunkSize = 0;
@@ -4410,6 +4111,7 @@ xmlParseAttValueInternal(xmlParserCtxtPt
                         xmlSBufAddString(&buf, CUR_PTR - chunkSize, chunkSize);
                         chunkSize = 0;
                     }
+                    attvalFlags |= XML_ATTVAL_NORM_CHANGE;
                 } else if (c < 0x20) {
                     /* Convert to space */
                     if (chunkSize > 0) {
@@ -4449,7 +4151,9 @@ xmlParseAttValueInternal(xmlParserCtxtPt
                 xmlSBufAddCString(&buf, "&#38;", 5);
                 inSpace = 0;
             } else if (val == ' ') {
-                if ((!normalize) || (!inSpace))
+                if ((normalize) && (inSpace))
+                    attvalFlags |= XML_ATTVAL_NORM_CHANGE;
+                else
                     xmlSBufAddCString(&buf, " ", 1);
                 inSpace = 1;
             } else {
@@ -4485,11 +4189,12 @@ xmlParseAttValueInternal(xmlParserCtxtPt
                     xmlSBufAddString(&buf, ent->content, ent->length);
                 inSpace = 0;
             } else if (replaceEntities) {
-                xmlExpandEntityInAttValue(ctxt, &buf, ent->content, ent,
-                                          normalize, &inSpace, ctxt->inputNr,
-                                          /* check */ 1);
+                if (xmlExpandEntityInAttValue(ctxt, &buf,
+                        ent->content, ent, normalize, &inSpace, ctxt->inputNr,
+                        /* check */ 1) > 0)
+                    attvalFlags |= XML_ATTVAL_NORM_CHANGE;
             } else {
-                if ((ent->flags & flags) != flags)
+                if ((ent->flags & entFlags) != entFlags)
                     xmlCheckEntityInAttValue(ctxt, ent, ctxt->inputNr);
 
                 if (xmlParserEntityCheck(ctxt, ent->expandedSize)) {
@@ -4509,14 +4214,15 @@ xmlParseAttValueInternal(xmlParserCtxtPt
 	}
     }
 
-    if ((buf.mem == NULL) && (alloc != NULL)) {
+    if ((buf.mem == NULL) && (outFlags != NULL)) {
         ret = (xmlChar *) CUR_PTR - chunkSize;
 
         if (attlen != NULL)
             *attlen = chunkSize;
-        if ((normalize) && (inSpace) && (chunkSize > 0))
+        if ((normalize) && (inSpace) && (chunkSize > 0)) {
+            attvalFlags |= XML_ATTVAL_NORM_CHANGE;
             *attlen -= 1;
-        *alloc = 0;
+        }
 
         /* Report potential error */
         xmlSBufCleanup(&buf, ctxt, "AttValue length too long");
@@ -4524,19 +4230,23 @@ xmlParseAttValueInternal(xmlParserCtxtPt
         if (chunkSize > 0)
             xmlSBufAddString(&buf, CUR_PTR - chunkSize, chunkSize);
 
-        if ((normalize) && (inSpace) && (buf.size > 0))
+        if ((normalize) && (inSpace) && (buf.size > 0)) {
+            attvalFlags |= XML_ATTVAL_NORM_CHANGE;
             buf.size--;
+        }
 
         ret = xmlSBufFinish(&buf, attlen, ctxt, "AttValue length too long");
+        attvalFlags |= XML_ATTVAL_ALLOC;
 
         if (ret != NULL) {
             if (attlen != NULL)
                 *attlen = buf.size;
-            if (alloc != NULL)
-                *alloc = 1;
         }
     }
 
+    if (outFlags != NULL)
+        *outFlags = attvalFlags;
+
     NEXTL(1);
 
     return(ret);
@@ -4547,62 +4257,60 @@ error:
 }
 
 /**
- * xmlParseAttValue:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
- * parse a value for an attribute
+ * Parse a value for an attribute
  * Note: the parser won't do substitution of entities here, this
- * will be handled later in xmlStringGetNodeList
+ * will be handled later in #xmlStringGetNodeList
  *
- * [10] AttValue ::= '"' ([^<&"] | Reference)* '"' |
- *                   "'" ([^<&'] | Reference)* "'"
+ * @deprecated Internal function, don't use.
+ *
+ *     [10] AttValue ::= '"' ([^<&"] | Reference)* '"' |
+ *                       "'" ([^<&'] | Reference)* "'"
  *
  * 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 "#xD#xA" sequence that is part of an external
+ * - 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 "#xD#xA" 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.
+ * 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.
  *
- * Returns the AttValue parsed or NULL. The value has to be freed by the caller.
+ * @param ctxt  an XML parser context
+ * @returns the AttValue parsed or NULL. The value has to be freed by the
+ * caller.
  */
-
-
 xmlChar *
-xmlParseAttValue(xmlParserCtxtPtr ctxt) {
+xmlParseAttValue(xmlParserCtxt *ctxt) {
     if ((ctxt == NULL) || (ctxt->input == NULL)) return(NULL);
     return(xmlParseAttValueInternal(ctxt, NULL, NULL, 0, 0));
 }
 
 /**
- * xmlParseSystemLiteral:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an XML Literal
  *
- * parse an XML Literal
+ * @deprecated Internal function, don't use.
  *
- * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
+ *     [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
  *
- * Returns the SystemLiteral parsed or NULL
+ * @param ctxt  an XML parser context
+ * @returns the SystemLiteral parsed or NULL
  */
 
 xmlChar *
-xmlParseSystemLiteral(xmlParserCtxtPtr ctxt) {
+xmlParseSystemLiteral(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     int len = 0;
     int size = XML_PARSER_BUFFER_SIZE;
@@ -4663,20 +4371,18 @@ xmlParseSystemLiteral(xmlParserCtxtPtr c
 }
 
 /**
- * xmlParsePubidLiteral:
- * @ctxt:  an XML parser context
+ * Parse an XML public literal
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an XML public literal
+ *     [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
  *
- * [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
- *
- * Returns the PubidLiteral parsed or NULL.
+ * @param ctxt  an XML parser context
+ * @returns the PubidLiteral parsed or NULL.
  */
 
 xmlChar *
-xmlParsePubidLiteral(xmlParserCtxtPtr ctxt) {
+xmlParsePubidLiteral(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     int len = 0;
     int size = XML_PARSER_BUFFER_SIZE;
@@ -4811,10 +4517,6 @@ xmlCharacters(xmlParserCtxtPtr ctxt, con
 }
 
 /**
- * xmlParseCharDataInternal:
- * @ctxt:  an XML parser context
- * @partial:  buffer may contain partial UTF-8 sequences
- *
  * Parse character data. Always makes progress if the first char isn't
  * '<' or '&'.
  *
@@ -4823,15 +4525,17 @@ xmlCharacters(xmlParserCtxtPtr ctxt, con
  * reference when it appears in the string "]]>" in content, when that
  * string is not marking the end of a CDATA section.
  *
- * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
+ *     [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
+ * @param ctxt  an XML parser context
+ * @param partial  buffer may contain partial UTF-8 sequences
  */
 static void
 xmlParseCharDataInternal(xmlParserCtxtPtr ctxt, int partial) {
     const xmlChar *in;
-    int nbchar = 0;
     int line = ctxt->input->line;
     int col = ctxt->input->col;
     int ccol;
+    int terminate = 0;
 
     GROW;
     /*
@@ -4850,10 +4554,13 @@ get_more_space:
             goto get_more_space;
         }
         if (*in == '<') {
-            nbchar = in - ctxt->input->cur;
-            if (nbchar > 0) {
+            while (in > ctxt->input->cur) {
                 const xmlChar *tmp = ctxt->input->cur;
-                ctxt->input->cur = in;
+                size_t nbchar = in - tmp;
+
+                if (nbchar > XML_MAX_ITEMS)
+                    nbchar = XML_MAX_ITEMS;
+                ctxt->input->cur += nbchar;
 
                 xmlCharacters(ctxt, tmp, nbchar, 1);
             }
@@ -4875,21 +4582,34 @@ get_more:
             goto get_more;
         }
         if (*in == ']') {
-            if ((in[1] == ']') && (in[2] == '>')) {
-                xmlFatalErr(ctxt, XML_ERR_MISPLACED_CDATA_END, NULL);
-                ctxt->input->cur = in + 1;
-                return;
-            }
-            if ((!partial) || (ctxt->input->end - in >= 2)) {
-                in++;
-                ctxt->input->col++;
-                goto get_more;
+            size_t avail = ctxt->input->end - in;
+
+            if (partial && avail < 2) {
+                terminate = 1;
+                goto invoke_callback;
+            }
+            if (in[1] == ']') {
+                if (partial && avail < 3) {
+                    terminate = 1;
+                    goto invoke_callback;
+                }
+                if (in[2] == '>')
+                    xmlFatalErr(ctxt, XML_ERR_MISPLACED_CDATA_END, NULL);
             }
+
+            in++;
+            ctxt->input->col++;
+            goto get_more;
         }
-        nbchar = in - ctxt->input->cur;
-        if (nbchar > 0) {
+
+invoke_callback:
+        while (in > ctxt->input->cur) {
             const xmlChar *tmp = ctxt->input->cur;
-            ctxt->input->cur = in;
+            size_t nbchar = in - tmp;
+
+            if (nbchar > XML_MAX_ITEMS)
+                nbchar = XML_MAX_ITEMS;
+            ctxt->input->cur += nbchar;
 
             xmlCharacters(ctxt, tmp, nbchar, 0);
 
@@ -4913,7 +4633,7 @@ get_more:
         if (*in == '&') {
             return;
         }
-        if ((partial) && (*in == ']') && (ctxt->input->end - in < 2)) {
+        if (terminate) {
             return;
         }
         SHRINK;
@@ -4927,15 +4647,14 @@ get_more:
 }
 
 /**
- * xmlParseCharDataComplex:
- * @ctxt:  an XML parser context
- * @cdata:  int indicating whether we are within a CDATA section
- *
  * Always makes progress if the first char isn't '<' or '&'.
  *
  * parse a CharData section.this is the fallback function
- * of xmlParseCharData() when the parsing requires handling
+ * of #xmlParseCharData when the parsing requires handling
  * of non-ASCII characters.
+ *
+ * @param ctxt  an XML parser context
+ * @param partial  whether the input can end with truncated UTF-8
  */
 static void
 xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int partial) {
@@ -4946,12 +4665,20 @@ xmlParseCharDataComplex(xmlParserCtxtPtr
     cur = xmlCurrentCharRecover(ctxt, &l);
     while ((cur != '<') && /* checked */
            (cur != '&') &&
-           ((!partial) || (cur != ']') ||
-            (ctxt->input->end - ctxt->input->cur >= 2)) &&
 	   (IS_CHAR(cur))) {
-	if ((cur == ']') && (NXT(1) == ']') && (NXT(2) == '>')) {
-	    xmlFatalErr(ctxt, XML_ERR_MISPLACED_CDATA_END, NULL);
-	}
+        if (cur == ']') {
+            size_t avail = ctxt->input->end - ctxt->input->cur;
+
+            if (partial && avail < 2)
+                break;
+            if (NXT(1) == ']') {
+                if (partial && avail < 3)
+                    break;
+                if (NXT(2) == '>')
+                    xmlFatalErr(ctxt, XML_ERR_MISPLACED_CDATA_END, NULL);
+            }
+        }
+
 	COPY_BUF(buf, nbchar, cur);
 	/* move current position before possible calling of ctxt->sax->characters */
 	NEXTL(l);
@@ -4993,46 +4720,42 @@ xmlParseCharDataComplex(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseCharData:
- * @ctxt:  an XML parser context
- * @cdata:  unused
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
+ * @param ctxt  an XML parser context
+ * @param cdata  unused
  */
 void
-xmlParseCharData(xmlParserCtxtPtr ctxt, ATTRIBUTE_UNUSED int cdata) {
+xmlParseCharData(xmlParserCtxt *ctxt, ATTRIBUTE_UNUSED int cdata) {
     xmlParseCharDataInternal(ctxt, 0);
 }
 
 /**
- * xmlParseExternalID:
- * @ctxt:  an XML parser context
- * @publicID:  a xmlChar** receiving PubidLiteral
- * @strict: indicate whether we should restrict parsing to only
- *          production [75], see NOTE below
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an External ID or a Public ID
  *
+ * @deprecated Internal function, don't use.
+ *
  * NOTE: Productions [75] and [83] interact badly since [75] can generate
- *       'PUBLIC' S PubidLiteral S SystemLiteral
+ * `'PUBLIC' S PubidLiteral S SystemLiteral`
  *
- * [75] ExternalID ::= 'SYSTEM' S SystemLiteral
- *                   | 'PUBLIC' S PubidLiteral S SystemLiteral
+ *     [75] ExternalID ::= 'SYSTEM' S SystemLiteral
+ *                       | 'PUBLIC' S PubidLiteral S SystemLiteral
  *
- * [83] PublicID ::= 'PUBLIC' S PubidLiteral
+ *     [83] PublicID ::= 'PUBLIC' S PubidLiteral
  *
- * Returns the function returns SystemLiteral and in the second
+ * @param ctxt  an XML parser context
+ * @param publicId  a xmlChar** receiving PubidLiteral
+ * @param strict  indicate whether we should restrict parsing to only
+ *          production [75], see NOTE below
+ * @returns 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.
  */
 
 xmlChar *
-xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) {
+xmlParseExternalID(xmlParserCtxt *ctxt, xmlChar **publicId, int strict) {
     xmlChar *URI = NULL;
 
-    *publicID = NULL;
+    *publicId = NULL;
     if (CMP6(CUR_PTR, 'S', 'Y', 'S', 'T', 'E', 'M')) {
         SKIP(6);
 	if (SKIP_BLANKS == 0) {
@@ -5049,8 +4772,8 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt
 	    xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
 		    "Space required after 'PUBLIC'\n");
 	}
-	*publicID = xmlParsePubidLiteral(ctxt);
-	if (*publicID == NULL) {
+	*publicId = xmlParsePubidLiteral(ctxt);
+	if (*publicId == NULL) {
 	    xmlFatalErr(ctxt, XML_ERR_PUBID_REQUIRED, NULL);
 	}
 	if (strict) {
@@ -5080,18 +4803,16 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlParseCommentComplex:
- * @ctxt:  an XML parser context
- * @buf:  the already parsed part of the buffer
- * @len:  number of bytes in the buffer
- * @size:  allocated size of the buffer
- *
  * Skip an XML (SGML) comment <!-- .... -->
  *  The spec says that "For compatibility, the string "--" (double-hyphen)
  *  must not occur within comments. "
  * This is the slow routine in case the accelerator for ascii didn't work
  *
- * [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
+ *     [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
+ * @param ctxt  an XML parser context
+ * @param buf  the already parsed part of the buffer
+ * @param len  number of bytes in the buffer
+ * @param size  allocated size of the buffer
  */
 static void
 xmlParseCommentComplex(xmlParserCtxtPtr ctxt, xmlChar *buf,
@@ -5197,20 +4918,18 @@ not_terminated:
 }
 
 /**
- * xmlParseComment:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an XML (SGML) comment. Always consumes '<!'.
  *
+ * @deprecated Internal function, don't use.
+ *
  *  The spec says that "For compatibility, the string "--" (double-hyphen)
  *  must not occur within comments. "
  *
- * [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
+ *     [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseComment(xmlParserCtxtPtr ctxt) {
+xmlParseComment(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     size_t size = XML_PARSER_BUFFER_SIZE;
     size_t len = 0;
@@ -5351,20 +5070,18 @@ get_more:
 
 
 /**
- * xmlParsePITarget:
- * @ctxt:  an XML parser context
+ * Parse the name of a PI
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse the name of a PI
+ *     [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
  *
- * [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
- *
- * Returns the PITarget name or NULL
+ * @param ctxt  an XML parser context
+ * @returns the PITarget name or NULL
  */
 
 const xmlChar *
-xmlParsePITarget(xmlParserCtxtPtr ctxt) {
+xmlParsePITarget(xmlParserCtxt *ctxt) {
     const xmlChar *name;
 
     name = xmlParseName(ctxt);
@@ -5400,11 +5117,7 @@ xmlParsePITarget(xmlParserCtxtPtr ctxt)
 
 #ifdef LIBXML_CATALOG_ENABLED
 /**
- * xmlParseCatalogPI:
- * @ctxt:  an XML parser context
- * @catalog:  the PI value string
- *
- * parse an XML Catalog Processing Instruction.
+ * Parse an XML Catalog Processing Instruction.
  *
  * <?oasis-xml-catalog catalog="http://example.com/catalog.xml"?>
  *
@@ -5412,6 +5125,9 @@ xmlParsePITarget(xmlParserCtxtPtr ctxt)
  * part of the document before any doctype information
  * This will add the given catalog to the parsing context in order
  * to be used if there is a resolution need further down in the document
+ *
+ * @param ctxt  an XML parser context
+ * @param catalog  the PI value string
  */
 
 static void
@@ -5467,20 +5183,19 @@ error:
 #endif
 
 /**
- * xmlParsePI:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an XML Processing Instruction.
  *
- * parse an XML Processing Instruction.
+ * @deprecated Internal function, don't use.
  *
- * [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
+ *     [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
  *
  * The processing is transferred to SAX once parsed.
+ *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParsePI(xmlParserCtxtPtr ctxt) {
+xmlParsePI(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     size_t len = 0;
     size_t size = XML_PARSER_BUFFER_SIZE;
@@ -5585,25 +5300,26 @@ xmlParsePI(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseNotationDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse a notation declaration. Always consumes '<!'.
  *
- * [82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID |  PublicID) S? '>'
+ * @deprecated Internal function, don't use.
+ *
+ *     [82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID |  PublicID)
+ *                           S? '>'
  *
  * Hence there is actually 3 choices:
+ *
  *     'PUBLIC' S PubidLiteral
  *     'PUBLIC' S PubidLiteral S SystemLiteral
- * and 'SYSTEM' S SystemLiteral
+ *     'SYSTEM' S SystemLiteral
  *
- * See the NOTE on xmlParseExternalID().
+ * See the NOTE on #xmlParseExternalID.
+ *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseNotationDecl(xmlParserCtxtPtr ctxt) {
+xmlParseNotationDecl(xmlParserCtxt *ctxt) {
     const xmlChar *name;
     xmlChar *Pubid;
     xmlChar *Systemid;
@@ -5613,7 +5329,10 @@ xmlParseNotationDecl(xmlParserCtxtPtr ct
     SKIP(2);
 
     if (CMP8(CUR_PTR, 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N')) {
-	int inputid = ctxt->input->id;
+#ifdef LIBXML_VALID_ENABLED
+	int oldInputNr = ctxt->inputNr;
+#endif
+
 	SKIP(8);
 	if (SKIP_BLANKS_PE == 0) {
 	    xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
@@ -5644,11 +5363,14 @@ xmlParseNotationDecl(xmlParserCtxtPtr ct
 	SKIP_BLANKS_PE;
 
 	if (RAW == '>') {
-	    if (inputid != ctxt->input->id) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-	                       "Notation declaration doesn't start and stop"
-                               " in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > oldInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+	                         "Notation declaration doesn't start and stop"
+                                 " in the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 	    NEXT;
 	    if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
 		(ctxt->sax->notationDecl != NULL))
@@ -5662,31 +5384,30 @@ xmlParseNotationDecl(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseEntityDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an entity declaration. Always consumes '<!'.
  *
- * [70] EntityDecl ::= GEDecl | PEDecl
+ * @deprecated Internal function, don't use.
+ *
+ *     [70] EntityDecl ::= GEDecl | PEDecl
  *
- * [71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
+ *     [71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
  *
- * [72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
+ *     [72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
  *
- * [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
+ *     [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
  *
- * [74] PEDef ::= EntityValue | ExternalID
+ *     [74] PEDef ::= EntityValue | ExternalID
  *
- * [76] NDataDecl ::= S 'NDATA' S Name
+ *     [76] NDataDecl ::= S 'NDATA' S Name
  *
  * [ VC: Notation Declared ]
  * The Name must match the declared name of a notation.
+ *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
+xmlParseEntityDecl(xmlParserCtxt *ctxt) {
     const xmlChar *name = NULL;
     xmlChar *value = NULL;
     xmlChar *URI = NULL, *literal = NULL;
@@ -5700,7 +5421,10 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt
 
     /* GROW; done in the caller */
     if (CMP6(CUR_PTR, 'E', 'N', 'T', 'I', 'T', 'Y')) {
-	int inputid = ctxt->input->id;
+#ifdef LIBXML_VALID_ENABLED
+	int oldInputNr = ctxt->inputNr;
+#endif
+
 	SKIP(6);
 	if (SKIP_BLANKS_PE == 0) {
 	    xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
@@ -5862,13 +5586,15 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt
 	if (RAW != '>') {
 	    xmlFatalErrMsgStr(ctxt, XML_ERR_ENTITY_NOT_FINISHED,
 	            "xmlParseEntityDecl: entity %s not terminated\n", name);
-	    xmlHaltParser(ctxt);
 	} else {
-	    if (inputid != ctxt->input->id) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-	                       "Entity declaration doesn't start and stop in"
-                               " the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > oldInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+	                         "Entity declaration doesn't start and stop in"
+                                 " the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 	    NEXT;
 	}
 	if (orig != NULL) {
@@ -5904,38 +5630,36 @@ done:
 }
 
 /**
- * xmlParseDefaultDecl:
- * @ctxt:  an XML parser context
- * @value:  Receive a possible fixed default value for the attribute
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an attribute default declaration
  *
- * [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
+ * @deprecated Internal function, don't use.
+ *
+ *     [60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)
  *
  * [ VC: Required Attribute ]
- * if the default declaration is the keyword #REQUIRED, then the
+ * 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()
+ * the declared attribute type c.f. #xmlValidateAttributeDecl
  *
  * [ VC: Fixed Attribute Default ]
- * if an attribute has a default value declared with the #FIXED
+ * if an attribute has a default value declared with the \#FIXED
  * keyword, instances of that attribute must match the default value.
  *
  * [ WFC: No < in Attribute Values ]
- * handled in xmlParseAttValue()
+ * handled in #xmlParseAttValue
  *
- * returns: XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED
+ * @param ctxt  an XML parser context
+ * @param value  Receive a possible fixed default value for the attribute
+ * @returns XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED
  *          or XML_ATTRIBUTE_FIXED.
  */
 
 int
-xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, xmlChar **value) {
+xmlParseDefaultDecl(xmlParserCtxt *ctxt, xmlChar **value) {
     int val;
     xmlChar *ret;
 
@@ -5967,26 +5691,24 @@ xmlParseDefaultDecl(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseNotationType:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an Notation attribute type.
  *
- * parse an Notation attribute type.
+ * @deprecated Internal function, don't use.
  *
  * Note: the leading 'NOTATION' S part has already being parsed...
  *
- * [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
+ *     [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
  *
  * [ 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.
  *
- * Returns: the notation attribute tree built while parsing
+ * @param ctxt  an XML parser context
+ * @returns the notation attribute tree built while parsing
  */
 
-xmlEnumerationPtr
-xmlParseNotationType(xmlParserCtxtPtr ctxt) {
+xmlEnumeration *
+xmlParseNotationType(xmlParserCtxt *ctxt) {
     const xmlChar *name;
     xmlEnumerationPtr ret = NULL, last = NULL, cur, tmp;
 
@@ -6046,24 +5768,22 @@ xmlParseNotationType(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseEnumerationType:
- * @ctxt:  an XML parser context
+ * Parse an Enumeration attribute type.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an Enumeration attribute type.
- *
- * [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
+ *     [59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
  *
  * [ VC: Enumeration ]
  * Values of this type must match one of the Nmtoken tokens in
  * the declaration
  *
- * Returns: the enumeration attribute tree built while parsing
+ * @param ctxt  an XML parser context
+ * @returns the enumeration attribute tree built while parsing
  */
 
-xmlEnumerationPtr
-xmlParseEnumerationType(xmlParserCtxtPtr ctxt) {
+xmlEnumeration *
+xmlParseEnumerationType(xmlParserCtxt *ctxt) {
     xmlChar *name;
     xmlEnumerationPtr ret = NULL, last = NULL, cur, tmp;
 
@@ -6122,24 +5842,21 @@ xmlParseEnumerationType(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseEnumeratedType:
- * @ctxt:  an XML parser context
- * @tree:  the enumeration tree built while parsing
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an Enumerated attribute type.
  *
- * parse an Enumerated attribute type.
+ * @deprecated Internal function, don't use.
  *
- * [57] EnumeratedType ::= NotationType | Enumeration
+ *     [57] EnumeratedType ::= NotationType | Enumeration
  *
- * [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
+ *     [58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
  *
- *
- * Returns: XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION
+ * @param ctxt  an XML parser context
+ * @param tree  the enumeration tree built while parsing
+ * @returns XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION
  */
 
 int
-xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree) {
+xmlParseEnumeratedType(xmlParserCtxt *ctxt, xmlEnumeration **tree) {
     if (CMP8(CUR_PTR, 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N')) {
 	SKIP(8);
 	if (SKIP_BLANKS_PE == 0) {
@@ -6157,23 +5874,19 @@ xmlParseEnumeratedType(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseAttributeType:
- * @ctxt:  an XML parser context
- * @tree:  the enumeration tree built while parsing
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse the Attribute list def for an element
  *
- * parse the Attribute list def for an element
+ * @deprecated Internal function, don't use.
  *
- * [54] AttType ::= StringType | TokenizedType | EnumeratedType
+ *     [54] AttType ::= StringType | TokenizedType | EnumeratedType
  *
- * [55] StringType ::= 'CDATA'
+ *     [55] StringType ::= 'CDATA'
  *
- * [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' |
- *                        'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
+ *     [56] TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' |
+ *                            'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'
  *
  * Validity constraints for attribute values syntax are checked in
- * xmlValidateAttributeValue()
+ * #xmlValidateAttributeValue
  *
  * [ VC: ID ]
  * Values of type ID must match the Name production. A name must not
@@ -6184,7 +5897,7 @@ xmlParseEnumeratedType(xmlParserCtxtPtr
  * 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.
+ * 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
@@ -6201,10 +5914,12 @@ xmlParseEnumeratedType(xmlParserCtxtPtr
  * Values of type NMTOKEN must match the Nmtoken production; values
  * of type NMTOKENS must match Nmtokens.
  *
- * Returns the attribute type
+ * @param ctxt  an XML parser context
+ * @param tree  the enumeration tree built while parsing
+ * @returns the attribute type
  */
 int
-xmlParseAttributeType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree) {
+xmlParseAttributeType(xmlParserCtxt *ctxt, xmlEnumeration **tree) {
     if (CMP5(CUR_PTR, 'C', 'D', 'A', 'T', 'A')) {
 	SKIP(5);
 	return(XML_ATTRIBUTE_CDATA);
@@ -6234,20 +5949,17 @@ xmlParseAttributeType(xmlParserCtxtPtr c
 }
 
 /**
- * xmlParseAttributeListDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an attribute list declaration for an element. Always consumes '<!'.
  *
- * [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
+ * @deprecated Internal function, don't use.
  *
- * [53] AttDef ::= S Name S AttType S DefaultDecl
+ *     [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
  *
+ *     [53] AttDef ::= S Name S AttType S DefaultDecl
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) {
+xmlParseAttributeListDecl(xmlParserCtxt *ctxt) {
     const xmlChar *elemName;
     const xmlChar *attrName;
     xmlEnumerationPtr tree;
@@ -6257,7 +5969,9 @@ xmlParseAttributeListDecl(xmlParserCtxtP
     SKIP(2);
 
     if (CMP7(CUR_PTR, 'A', 'T', 'T', 'L', 'I', 'S', 'T')) {
-	int inputid = ctxt->input->id;
+#ifdef LIBXML_VALID_ENABLED
+	int oldInputNr = ctxt->inputNr;
+#endif
 
 	SKIP(7);
 	if (SKIP_BLANKS_PE == 0) {
@@ -6349,28 +6063,69 @@ xmlParseAttributeListDecl(xmlParserCtxtP
 	    GROW;
 	}
 	if (RAW == '>') {
-	    if (inputid != ctxt->input->id) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                               "Attribute list declaration doesn't start and"
-                               " stop in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > oldInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "Attribute list declaration doesn't start and"
+                                 " stop in the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 	    NEXT;
 	}
     }
 }
 
 /**
- * xmlParseElementMixedContentDecl:
- * @ctxt:  an XML parser context
- * @inputchk:  the input used for the current entity, needed for boundary checks
+ * Handle PEs and check that we don't pop the entity that started
+ * a balanced group.
  *
- * DEPRECATED: Internal function, don't use.
+ * @param ctxt  parser context
+ * @param openInputNr  input nr of the entity with opening '('
+ */
+static void
+xmlSkipBlankCharsPEBalanced(xmlParserCtxt *ctxt, int openInputNr) {
+    SKIP_BLANKS;
+    GROW;
+
+    (void) openInputNr;
+
+    if (!PARSER_EXTERNAL(ctxt) && !PARSER_IN_PE(ctxt))
+        return;
+
+    while (!PARSER_STOPPED(ctxt)) {
+        if (ctxt->input->cur >= ctxt->input->end) {
+#ifdef LIBXML_VALID_ENABLED
+            if ((ctxt->validate) && (ctxt->inputNr <= openInputNr)) {
+                xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "Element content declaration doesn't start "
+                                 "and stop in the same entity\n",
+                                 NULL, NULL);
+            }
+#endif
+            if (PARSER_IN_PE(ctxt))
+                xmlPopPE(ctxt);
+            else
+                break;
+        } else if (RAW == '%') {
+            xmlParsePERefInternal(ctxt, 0);
+        } else {
+            break;
+        }
+
+        SKIP_BLANKS;
+        GROW;
+    }
+}
+
+/**
+ * Parse the declaration for a Mixed Element content
+ * The leading '(' and spaces have been skipped in #xmlParseElementContentDecl
  *
- * parse the declaration for a Mixed Element content
- * The leading '(' and spaces have been skipped in xmlParseElementContentDecl
+ * @deprecated Internal function, don't use.
  *
- * [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' |
- *                '(' S? '#PCDATA' S? ')'
+ *     [51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' |
+ *                    '(' S? '#PCDATA' S? ')'
  *
  * [ VC: Proper Group/PE Nesting ] applies to [51] too (see [49])
  *
@@ -6378,23 +6133,29 @@ xmlParseAttributeListDecl(xmlParserCtxtP
  * The same name must not appear more than once in a single
  * mixed-content declaration.
  *
- * returns: the list of the xmlElementContentPtr describing the element choices
+ * @param ctxt  an XML parser context
+ * @param openInputNr  the input used for the current entity, needed for
+ * boundary checks
+ * @returns the list of the xmlElementContent describing the element choices
  */
-xmlElementContentPtr
-xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
+xmlElementContent *
+xmlParseElementMixedContentDecl(xmlParserCtxt *ctxt, int openInputNr) {
     xmlElementContentPtr ret = NULL, cur = NULL, n;
     const xmlChar *elem = NULL;
 
     GROW;
     if (CMP7(CUR_PTR, '#', 'P', 'C', 'D', 'A', 'T', 'A')) {
 	SKIP(7);
-	SKIP_BLANKS_PE;
+        xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
 	if (RAW == ')') {
-	    if (ctxt->input->id != inputchk) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                               "Element content declaration doesn't start and"
-                               " stop in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > openInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "Element content declaration doesn't start "
+                                 "and stop in the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 	    NEXT;
 	    ret = xmlNewDocElementContent(ctxt->myDoc, NULL, XML_ELEMENT_CONTENT_PCDATA);
 	    if (ret == NULL)
@@ -6429,7 +6190,7 @@ xmlParseElementMixedContentDecl(xmlParse
 		n->c1->parent = n;
 		cur = n;
 	    }
-	    SKIP_BLANKS_PE;
+            xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
 	    elem = xmlParseName(ctxt);
 	    if (elem == NULL) {
 		xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED,
@@ -6437,8 +6198,7 @@ xmlParseElementMixedContentDecl(xmlParse
 		xmlFreeDocElementContent(ctxt->myDoc, ret);
 		return(NULL);
 	    }
-	    SKIP_BLANKS_PE;
-	    GROW;
+            xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
 	}
 	if ((RAW == ')') && (NXT(1) == '*')) {
 	    if (elem != NULL) {
@@ -6450,11 +6210,14 @@ xmlParseElementMixedContentDecl(xmlParse
             }
             if (ret != NULL)
                 ret->ocur = XML_ELEMENT_CONTENT_MULT;
-	    if (ctxt->input->id != inputchk) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                               "Element content declaration doesn't start and"
-                               " stop in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > openInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "Element content declaration doesn't start "
+                                 "and stop in the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 	    SKIP(2);
 	} else {
 	    xmlFreeDocElementContent(ctxt->myDoc, ret);
@@ -6474,22 +6237,16 @@ mem_error:
 }
 
 /**
- * xmlParseElementChildrenContentDeclPriv:
- * @ctxt:  an XML parser context
- * @inputchk:  the input used for the current entity, needed for boundary checks
- * @depth: the level of recursion
+ * Parse the declaration for a Mixed Element content
+ * The leading '(' and spaces have been skipped in #xmlParseElementContentDecl
  *
- * parse the declaration for a Mixed Element content
- * The leading '(' and spaces have been skipped in xmlParseElementContentDecl
+ *     [47] children ::= (choice | seq) ('?' | '*' | '+')?
  *
+ *     [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
  *
- * [47] children ::= (choice | seq) ('?' | '*' | '+')?
+ *     [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
  *
- * [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
- *
- * [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
- *
- * [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
+ *     [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
  *
  * [ VC: Proper Group/PE Nesting ] applies to [49] and [50]
  * TODO Parameter-entity replacement text must be properly nested
@@ -6502,11 +6259,15 @@ mem_error:
  *	be empty, and neither the first nor last non-blank character of
  *	the replacement text should be a connector (| or ,).
  *
- * Returns the tree of xmlElementContentPtr describing the element
+ * @param ctxt  an XML parser context
+ * @param openInputNr  the input used for the current entity, needed for
+ * boundary checks
+ * @param depth  the level of recursion
+ * @returns the tree of xmlElementContent describing the element
  *          hierarchy.
  */
 static xmlElementContentPtr
-xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPtr ctxt, int inputchk,
+xmlParseElementChildrenContentDeclPriv(xmlParserCtxtPtr ctxt, int openInputNr,
                                        int depth) {
     int maxDepth = (ctxt->options & XML_PARSE_HUGE) ? 2048 : 256;
     xmlElementContentPtr ret = NULL, cur = NULL, last = NULL, op = NULL;
@@ -6519,20 +6280,16 @@ xmlParseElementChildrenContentDeclPriv(x
                 "use XML_PARSE_HUGE\n", depth);
 	return(NULL);
     }
-    SKIP_BLANKS_PE;
-    GROW;
+    xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
     if (RAW == '(') {
-	int inputid = ctxt->input->id;
+        int newInputNr = ctxt->inputNr;
 
         /* Recurse on first child */
 	NEXT;
-	SKIP_BLANKS_PE;
-        cur = ret = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
+        cur = ret = xmlParseElementChildrenContentDeclPriv(ctxt, newInputNr,
                                                            depth + 1);
         if (cur == NULL)
             return(NULL);
-	SKIP_BLANKS_PE;
-	GROW;
     } else {
 	elem = xmlParseName(ctxt);
 	if (elem == NULL) {
@@ -6559,8 +6316,10 @@ xmlParseElementChildrenContentDeclPriv(x
 	}
 	GROW;
     }
-    SKIP_BLANKS_PE;
-    while ((RAW != ')') && (PARSER_STOPPED(ctxt) == 0)) {
+    while (!PARSER_STOPPED(ctxt)) {
+        xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
+        if (RAW == ')')
+            break;
         /*
 	 * Each loop we parse one separator and one element.
 	 */
@@ -6655,22 +6414,19 @@ xmlParseElementChildrenContentDeclPriv(x
 		xmlFreeDocElementContent(ctxt->myDoc, ret);
 	    return(NULL);
 	}
-	GROW;
-	SKIP_BLANKS_PE;
-	GROW;
-	if (RAW == '(') {
-	    int inputid = ctxt->input->id;
+        xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
+        if (RAW == '(') {
+            int newInputNr = ctxt->inputNr;
+
 	    /* Recurse on second child */
 	    NEXT;
-	    SKIP_BLANKS_PE;
-	    last = xmlParseElementChildrenContentDeclPriv(ctxt, inputid,
+	    last = xmlParseElementChildrenContentDeclPriv(ctxt, newInputNr,
                                                           depth + 1);
             if (last == NULL) {
 		if (ret != NULL)
 		    xmlFreeDocElementContent(ctxt->myDoc, ret);
 		return(NULL);
             }
-	    SKIP_BLANKS_PE;
 	} else {
 	    elem = xmlParseName(ctxt);
 	    if (elem == NULL) {
@@ -6699,19 +6455,20 @@ xmlParseElementChildrenContentDeclPriv(x
 		last->ocur = XML_ELEMENT_CONTENT_ONCE;
 	    }
 	}
-	SKIP_BLANKS_PE;
-	GROW;
     }
     if ((cur != NULL) && (last != NULL)) {
         cur->c2 = last;
 	if (last != NULL)
 	    last->parent = cur;
     }
-    if (ctxt->input->id != inputchk) {
-	xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                       "Element content declaration doesn't start and stop in"
-                       " the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+    if ((ctxt->validate) && (ctxt->inputNr > openInputNr)) {
+        xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                         "Element content declaration doesn't start "
+                         "and stop in the same entity\n",
+                         NULL, NULL);
     }
+#endif
     NEXT;
     if (RAW == '?') {
 	if (ret != NULL) {
@@ -6781,22 +6538,18 @@ xmlParseElementChildrenContentDeclPriv(x
 }
 
 /**
- * xmlParseElementChildrenContentDecl:
- * @ctxt:  an XML parser context
- * @inputchk:  the input used for the current entity, needed for boundary checks
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse the declaration for a Mixed Element content
+ * The leading '(' and spaces have been skipped in #xmlParseElementContentDecl
  *
- * parse the declaration for a Mixed Element content
- * The leading '(' and spaces have been skipped in xmlParseElementContentDecl
+ * @deprecated Internal function, don't use.
  *
- * [47] children ::= (choice | seq) ('?' | '*' | '+')?
+ *     [47] children ::= (choice | seq) ('?' | '*' | '+')?
  *
- * [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
+ *     [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
  *
- * [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
+ *     [49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
  *
- * [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
+ *     [50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
  *
  * [ VC: Proper Group/PE Nesting ] applies to [49] and [50]
  * TODO Parameter-entity replacement text must be properly nested
@@ -6809,37 +6562,37 @@ xmlParseElementChildrenContentDeclPriv(x
  *	be empty, and neither the first nor last non-blank character of
  *	the replacement text should be a connector (| or ,).
  *
- * Returns the tree of xmlElementContentPtr describing the element
+ * @param ctxt  an XML parser context
+ * @param inputchk  the input used for the current entity, needed for boundary checks
+ * @returns the tree of xmlElementContent describing the element
  *          hierarchy.
  */
-xmlElementContentPtr
-xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt, int inputchk) {
+xmlElementContent *
+xmlParseElementChildrenContentDecl(xmlParserCtxt *ctxt, int inputchk) {
     /* stub left for API/ABI compat */
     return(xmlParseElementChildrenContentDeclPriv(ctxt, inputchk, 1));
 }
 
 /**
- * xmlParseElementContentDecl:
- * @ctxt:  an XML parser context
- * @name:  the name of the element being defined.
- * @result:  the Element Content pointer will be stored here if any
+ * Parse the declaration for an Element content either Mixed or Children,
+ * the cases EMPTY and ANY are handled directly in #xmlParseElementDecl
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse the declaration for an Element content either Mixed or Children,
- * the cases EMPTY and ANY are handled directly in xmlParseElementDecl
+ *     [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
  *
- * [46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
- *
- * returns: the type of element content XML_ELEMENT_TYPE_xxx
+ * @param ctxt  an XML parser context
+ * @param name  the name of the element being defined.
+ * @param result  the Element Content pointer will be stored here if any
+ * @returns an xmlElementTypeVal value or -1 on error
  */
 
 int
-xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name,
-                           xmlElementContentPtr *result) {
+xmlParseElementContentDecl(xmlParserCtxt *ctxt, const xmlChar *name,
+                           xmlElementContent **result) {
 
     xmlElementContentPtr tree = NULL;
-    int inputid = ctxt->input->id;
+    int openInputNr = ctxt->inputNr;
     int res;
 
     *result = NULL;
@@ -6850,37 +6603,36 @@ xmlParseElementContentDecl(xmlParserCtxt
 	return(-1);
     }
     NEXT;
-    GROW;
-    SKIP_BLANKS_PE;
+    xmlSkipBlankCharsPEBalanced(ctxt, openInputNr);
     if (CMP7(CUR_PTR, '#', 'P', 'C', 'D', 'A', 'T', 'A')) {
-        tree = xmlParseElementMixedContentDecl(ctxt, inputid);
+        tree = xmlParseElementMixedContentDecl(ctxt, openInputNr);
 	res = XML_ELEMENT_TYPE_MIXED;
     } else {
-        tree = xmlParseElementChildrenContentDeclPriv(ctxt, inputid, 1);
+        tree = xmlParseElementChildrenContentDeclPriv(ctxt, openInputNr, 1);
 	res = XML_ELEMENT_TYPE_ELEMENT;
     }
+    if (tree == NULL)
+        return(-1);
     SKIP_BLANKS_PE;
     *result = tree;
     return(res);
 }
 
 /**
- * xmlParseElementDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse an element declaration. Always consumes '<!'.
  *
- * [45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
+ * @deprecated Internal function, don't use.
+ *
+ *     [45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
  *
  * [ VC: Unique Element Type Declaration ]
  * No element type may be declared more than once
  *
- * Returns the type of the element, or -1 in case of error
+ * @param ctxt  an XML parser context
+ * @returns the type of the element, or -1 in case of error
  */
 int
-xmlParseElementDecl(xmlParserCtxtPtr ctxt) {
+xmlParseElementDecl(xmlParserCtxt *ctxt) {
     const xmlChar *name;
     int ret = -1;
     xmlElementContentPtr content  = NULL;
@@ -6891,7 +6643,9 @@ xmlParseElementDecl(xmlParserCtxtPtr ctx
 
     /* GROW; done in the caller */
     if (CMP7(CUR_PTR, 'E', 'L', 'E', 'M', 'E', 'N', 'T')) {
-	int inputid = ctxt->input->id;
+#ifdef LIBXML_VALID_ENABLED
+	int oldInputNr = ctxt->inputNr;
+#endif
 
 	SKIP(7);
 	if (SKIP_BLANKS_PE == 0) {
@@ -6924,6 +6678,8 @@ xmlParseElementDecl(xmlParserCtxtPtr ctx
 	    ret = XML_ELEMENT_TYPE_ANY;
 	} else if (RAW == '(') {
 	    ret = xmlParseElementContentDecl(ctxt, name, &content);
+            if (ret <= 0)
+                return(-1);
 	} else {
 	    /*
 	     * [ WFC: PEs in Internal Subset ] error handling.
@@ -6941,11 +6697,14 @@ xmlParseElementDecl(xmlParserCtxtPtr ctx
 		xmlFreeDocElementContent(ctxt->myDoc, content);
 	    }
 	} else {
-	    if (inputid != ctxt->input->id) {
-		xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                               "Element declaration doesn't start and stop in"
-                               " the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+	    if ((ctxt->validate) && (ctxt->inputNr > oldInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "Element declaration doesn't start and stop in"
+                                 " the same entity\n",
+                                 NULL, NULL);
 	    }
+#endif
 
 	    NEXT;
 	    if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
@@ -6972,67 +6731,56 @@ xmlParseElementDecl(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseConditionalSections
- * @ctxt:  an XML parser context
- *
  * Parse a conditional section. Always consumes '<!['.
  *
- * [61] conditionalSect ::= includeSect | ignoreSect
- * [62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
- * [63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
- * [64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>' Ignore)*
- * [65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)
+ *     [61] conditionalSect ::= includeSect | ignoreSect
+ *     [62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
+ *     [63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
+ *     [64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>'
+ *                                 Ignore)*
+ *     [65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)
+ * @param ctxt  an XML parser context
  */
 
 static void
 xmlParseConditionalSections(xmlParserCtxtPtr ctxt) {
-    int *inputIds = NULL;
-    size_t inputIdsSize = 0;
     size_t depth = 0;
+    int isFreshPE = 0;
+    int oldInputNr = ctxt->inputNr;
+    int declInputNr = ctxt->inputNr;
 
-    while (PARSER_STOPPED(ctxt) == 0) {
-        if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
-            int id = ctxt->input->id;
+    while (!PARSER_STOPPED(ctxt)) {
+        if (ctxt->input->cur >= ctxt->input->end) {
+            if (ctxt->inputNr <= oldInputNr) {
+                xmlFatalErr(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED, NULL);
+                return;
+            }
 
+            xmlPopPE(ctxt);
+            declInputNr = ctxt->inputNr;
+        } else if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
             SKIP(3);
             SKIP_BLANKS_PE;
 
+            isFreshPE = 0;
+
             if (CMP7(CUR_PTR, 'I', 'N', 'C', 'L', 'U', 'D', 'E')) {
                 SKIP(7);
                 SKIP_BLANKS_PE;
                 if (RAW != '[') {
                     xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL);
-                    xmlHaltParser(ctxt);
-                    goto error;
+                    return;
                 }
-                if (ctxt->input->id != id) {
-                    xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                                   "All markup of the conditional section is"
-                                   " not in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+                if ((ctxt->validate) && (ctxt->inputNr > declInputNr)) {
+		    xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                     "All markup of the conditional section is"
+                                     " not in the same entity\n",
+                                     NULL, NULL);
                 }
+#endif
                 NEXT;
 
-                if (inputIdsSize <= depth) {
-                    int *tmp;
-                    int newSize;
-
-                    newSize = xmlGrowCapacity(inputIdsSize, sizeof(tmp[0]),
-                                              4, 1000);
-                    if (newSize < 0) {
-                        xmlFatalErrMsg(ctxt, XML_ERR_RESOURCE_LIMIT,
-                                       "Maximum conditional section nesting"
-                                       " depth exceeded\n");
-                        goto error;
-                    }
-                    tmp = xmlRealloc(inputIds, newSize * sizeof(tmp[0]));
-                    if (tmp == NULL) {
-                        xmlErrMemory(ctxt);
-                        goto error;
-                    }
-                    inputIds = tmp;
-                    inputIdsSize = newSize;
-                }
-                inputIds[depth] = id;
                 depth++;
             } else if (CMP6(CUR_PTR, 'I', 'G', 'N', 'O', 'R', 'E')) {
                 size_t ignoreDepth = 0;
@@ -7041,20 +6789,22 @@ xmlParseConditionalSections(xmlParserCtx
                 SKIP_BLANKS_PE;
                 if (RAW != '[') {
                     xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID, NULL);
-                    xmlHaltParser(ctxt);
-                    goto error;
+                    return;
                 }
-                if (ctxt->input->id != id) {
-                    xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                                   "All markup of the conditional section is"
-                                   " not in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+                if ((ctxt->validate) && (ctxt->inputNr > declInputNr)) {
+		    xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                     "All markup of the conditional section is"
+                                     " not in the same entity\n",
+                                     NULL, NULL);
                 }
+#endif
                 NEXT;
 
                 while (PARSER_STOPPED(ctxt) == 0) {
                     if (RAW == 0) {
                         xmlFatalErr(ctxt, XML_ERR_CONDSEC_NOT_FINISHED, NULL);
-                        goto error;
+                        return;
                     }
                     if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
                         SKIP(3);
@@ -7062,7 +6812,7 @@ xmlParseConditionalSections(xmlParserCtx
                         /* Check for integer overflow */
                         if (ignoreDepth == 0) {
                             xmlErrMemory(ctxt);
-                            goto error;
+                            return;
                         }
                     } else if ((RAW == ']') && (NXT(1) == ']') &&
                                (NXT(2) == '>')) {
@@ -7075,55 +6825,67 @@ xmlParseConditionalSections(xmlParserCtx
                     }
                 }
 
-                if (ctxt->input->id != id) {
-                    xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                                   "All markup of the conditional section is"
-                                   " not in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+                if ((ctxt->validate) && (ctxt->inputNr > declInputNr)) {
+		    xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                     "All markup of the conditional section is"
+                                     " not in the same entity\n",
+                                     NULL, NULL);
                 }
+#endif
             } else {
                 xmlFatalErr(ctxt, XML_ERR_CONDSEC_INVALID_KEYWORD, NULL);
-                xmlHaltParser(ctxt);
-                goto error;
+                return;
             }
         } else if ((depth > 0) &&
                    (RAW == ']') && (NXT(1) == ']') && (NXT(2) == '>')) {
+            if (isFreshPE) {
+                xmlFatalErrMsg(ctxt, XML_ERR_CONDSEC_INVALID,
+                               "Parameter entity must match "
+                               "extSubsetDecl\n");
+                return;
+            }
+
             depth--;
-            if (ctxt->input->id != inputIds[depth]) {
-                xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY,
-                               "All markup of the conditional section is not"
-                               " in the same entity\n");
+#ifdef LIBXML_VALID_ENABLED
+            if ((ctxt->validate) && (ctxt->inputNr > declInputNr)) {
+		xmlValidityError(ctxt, XML_ERR_ENTITY_BOUNDARY,
+                                 "All markup of the conditional section is not"
+                                 " in the same entity\n",
+                                 NULL, NULL);
             }
+#endif
             SKIP(3);
         } else if ((RAW == '<') && ((NXT(1) == '!') || (NXT(1) == '?'))) {
+            isFreshPE = 0;
             xmlParseMarkupDecl(ctxt);
+        } else if (RAW == '%') {
+            xmlParsePERefInternal(ctxt, 1);
+            if (ctxt->inputNr > declInputNr) {
+                isFreshPE = 1;
+                declInputNr = ctxt->inputNr;
+            }
         } else {
             xmlFatalErr(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED, NULL);
-            xmlHaltParser(ctxt);
-            goto error;
+            return;
         }
 
         if (depth == 0)
             break;
 
-        SKIP_BLANKS_PE;
+        SKIP_BLANKS;
         SHRINK;
         GROW;
     }
-
-error:
-    xmlFree(inputIds);
 }
 
 /**
- * xmlParseMarkupDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse markup declarations. Always consumes '<!' or '<?'.
  *
- * [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl |
- *                     NotationDecl | PI | Comment
+ * @deprecated Internal function, don't use.
+ *
+ *     [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl |
+ *                         NotationDecl | PI | Comment
  *
  * [ VC: Proper Declaration/PE Nesting ]
  * Parameter-entity replacement text must be properly nested with
@@ -7137,9 +6899,11 @@ error:
  * 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.)
+ *
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseMarkupDecl(xmlParserCtxtPtr ctxt) {
+xmlParseMarkupDecl(xmlParserCtxt *ctxt) {
     GROW;
     if (CUR == '<') {
         if (NXT(1) == '!') {
@@ -7177,18 +6941,16 @@ xmlParseMarkupDecl(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlParseTextDecl:
- * @ctxt:  an XML parser context
+ * Parse an XML declaration header for external entities
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an XML declaration header for external entities
- *
- * [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
+ *     [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseTextDecl(xmlParserCtxtPtr ctxt) {
+xmlParseTextDecl(xmlParserCtxt *ctxt) {
     xmlChar *version;
 
     /*
@@ -7249,22 +7011,21 @@ xmlParseTextDecl(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlParseExternalSubset:
- * @ctxt:  an XML parser context
- * @ExternalID: the external identifier
- * @SystemID: the system identifier (or URL)
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse Markup declarations from an external subset
  *
- * parse Markup declarations from an external subset
+ * @deprecated Internal function, don't use.
  *
- * [30] extSubset ::= textDecl? extSubsetDecl
+ *     [30] extSubset ::= textDecl? extSubsetDecl
  *
- * [31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *
+ *     [31] extSubsetDecl ::= (markupdecl | conditionalSect |
+ *                             PEReference | S) *
+ * @param ctxt  an XML parser context
+ * @param publicId  the public identifier
+ * @param systemId  the system identifier (URL)
  */
 void
-xmlParseExternalSubset(xmlParserCtxtPtr ctxt, const xmlChar *ExternalID,
-                       const xmlChar *SystemID) {
+xmlParseExternalSubset(xmlParserCtxt *ctxt, const xmlChar *publicId,
+                       const xmlChar *systemId) {
     int oldInputNr;
 
     xmlCtxtInitializeLate(ctxt);
@@ -7282,54 +7043,57 @@ xmlParseExternalSubset(xmlParserCtxtPtr
 	}
 	ctxt->myDoc->properties = XML_DOC_INTERNAL;
     }
-    if ((ctxt->myDoc != NULL) && (ctxt->myDoc->intSubset == NULL) &&
-        (xmlCreateIntSubset(ctxt->myDoc, NULL, ExternalID, SystemID) == NULL)) {
+    if ((ctxt->myDoc->intSubset == NULL) &&
+        (xmlCreateIntSubset(ctxt->myDoc, NULL, publicId, systemId) == NULL)) {
         xmlErrMemory(ctxt);
     }
 
     ctxt->inSubset = 2;
     oldInputNr = ctxt->inputNr;
 
-    SKIP_BLANKS_PE;
-    while (((RAW != 0) || (ctxt->inputNr > oldInputNr)) &&
-           (!PARSER_STOPPED(ctxt))) {
-	GROW;
-        if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
+    SKIP_BLANKS;
+    while (!PARSER_STOPPED(ctxt)) {
+        if (ctxt->input->cur >= ctxt->input->end) {
+            if (ctxt->inputNr <= oldInputNr) {
+                xmlParserCheckEOF(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED);
+                break;
+            }
+
+            xmlPopPE(ctxt);
+        } else if ((RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
             xmlParseConditionalSections(ctxt);
         } else if ((RAW == '<') && ((NXT(1) == '!') || (NXT(1) == '?'))) {
             xmlParseMarkupDecl(ctxt);
+        } else if (RAW == '%') {
+            xmlParsePERefInternal(ctxt, 1);
         } else {
             xmlFatalErr(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED, NULL);
-            xmlHaltParser(ctxt);
-            return;
+
+            while (ctxt->inputNr > oldInputNr)
+                xmlPopPE(ctxt);
+            break;
         }
-        SKIP_BLANKS_PE;
+        SKIP_BLANKS;
         SHRINK;
+        GROW;
     }
-
-    while (ctxt->inputNr > oldInputNr)
-        xmlPopPE(ctxt);
-
-    xmlParserCheckEOF(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED);
 }
 
 /**
- * xmlParseReference:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
- * parse and handle entity references in content, depending on the SAX
+ * 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.
  *
+ * @deprecated Internal function, don't use.
+ *
  * Always consumes '&'.
  *
- * [67] Reference ::= EntityRef | CharRef
+ *     [67] Reference ::= EntityRef | CharRef
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseReference(xmlParserCtxtPtr ctxt) {
+xmlParseReference(xmlParserCtxt *ctxt) {
     xmlEntityPtr ent = NULL;
     const xmlChar *name;
     xmlChar *val;
@@ -7592,6 +7356,7 @@ xmlHandleUndeclaredEntity(xmlParserCtxtP
          (ctxt->hasPErefs == 0))) {
         xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY,
                           "Entity '%s' not defined\n", name);
+#ifdef LIBXML_VALID_ENABLED
     } else if (ctxt->validate) {
         /*
          * [ VC: Entity Declared ]
@@ -7602,6 +7367,7 @@ xmlHandleUndeclaredEntity(xmlParserCtxtP
          */
         xmlValidityError(ctxt, XML_ERR_UNDECLARED_ENTITY,
                          "Entity '%s' not defined\n", name, NULL);
+#endif
     } else if ((ctxt->loadsubset & ~XML_SKIP_IDS) ||
                ((ctxt->replaceEntities) &&
                 ((ctxt->options & XML_PARSE_NO_XXE) == 0))) {
@@ -7684,15 +7450,12 @@ xmlLookupGeneralEntity(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseEntityRefInternal:
- * @ctxt:  an XML parser context
- * @inAttr:  whether we are in an attribute value
- *
  * Parse an entity reference. Always consumes '&'.
  *
- * [68] EntityRef ::= '&' Name ';'
+ *     [68] EntityRef ::= '&' Name ';'
  *
- * Returns the name, or NULL in case of error.
+ * @param ctxt  an XML parser context
+ * @returns the name, or NULL in case of error.
  */
 static const xmlChar *
 xmlParseEntityRefInternal(xmlParserCtxtPtr ctxt) {
@@ -7719,15 +7482,13 @@ xmlParseEntityRefInternal(xmlParserCtxtP
 }
 
 /**
- * xmlParseEntityRef:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns the xmlEntityPtr if found, or NULL otherwise.
+ * @param ctxt  an XML parser context
+ * @returns the xmlEntity if found, or NULL otherwise.
  */
-xmlEntityPtr
-xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
+xmlEntity *
+xmlParseEntityRef(xmlParserCtxt *ctxt) {
     const xmlChar *name;
 
     if (ctxt == NULL)
@@ -7741,14 +7502,10 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlParseStringEntityRef:
- * @ctxt:  an XML parser context
- * @str:  a pointer to an index in the string
- *
- * parse ENTITY references declarations, but this version parses it from
+ * Parse ENTITY references declarations, but this version parses it from
  * a string value.
  *
- * [68] EntityRef ::= '&' Name ';'
+ *     [68] EntityRef ::= '&' Name ';'
  *
  * [ WFC: Entity Declared ]
  * In a document without any DTD, a document with only an internal DTD
@@ -7768,7 +7525,9 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt)
  * [ WFC: Parsed Entity ]
  * An entity reference must not contain the name of an unparsed entity
  *
- * Returns the xmlEntityPtr if found, or NULL otherwise. The str pointer
+ * @param ctxt  an XML parser context
+ * @param str  a pointer to an index in the string
+ * @returns the xmlEntity if found, or NULL otherwise. The str pointer
  * is updated to the current location in the string.
  */
 static xmlChar *
@@ -7805,17 +7564,12 @@ xmlParseStringEntityRef(xmlParserCtxtPtr
 }
 
 /**
- * xmlParsePEReference:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse a parameter entity reference. Always consumes '%'.
  *
  * The entity content is handled directly by pushing it's content as
  * a new input stream.
  *
- * [69] PEReference ::= '%' Name ';'
+ *     [69] PEReference ::= '%' Name ';'
  *
  * [ WFC: No Recursion ]
  * A parsed entity must not contain a recursive
@@ -7835,10 +7589,12 @@ xmlParseStringEntityRef(xmlParserCtxtPtr
  * [ WFC: In DTD ]
  * Parameter-entity references may only appear in the DTD.
  * NOTE: misleading but this is handled.
+ *
+ * @param ctxt  an XML parser context
+ * @param markupDecl  whether the PERef starts a markup declaration
  */
-void
-xmlParsePEReference(xmlParserCtxtPtr ctxt)
-{
+static void
+xmlParsePERefInternal(xmlParserCtxt *ctxt, int markupDecl) {
     const xmlChar *name;
     xmlEntityPtr entity = NULL;
     xmlParserInputPtr input;
@@ -7882,14 +7638,13 @@ xmlParsePEReference(xmlParserCtxtPtr ctx
 	} else {
 	    if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
                 ((ctxt->options & XML_PARSE_NO_XXE) ||
-		 ((ctxt->loadsubset == 0) &&
+		 (((ctxt->loadsubset & ~XML_SKIP_IDS) == 0) &&
 		  (ctxt->replaceEntities == 0) &&
 		  (ctxt->validate == 0))))
 		return;
 
             if (entity->flags & XML_ENT_EXPANDING) {
                 xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-                xmlHaltParser(ctxt);
                 return;
             }
 
@@ -7901,6 +7656,9 @@ xmlParsePEReference(xmlParserCtxtPtr ctx
 
             entity->flags |= XML_ENT_EXPANDING;
 
+            if (markupDecl)
+                input->flags |= XML_INPUT_MARKUP_DECL;
+
             GROW;
 
 	    if (entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) {
@@ -7916,19 +7674,29 @@ xmlParsePEReference(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlLoadEntityContent:
- * @ctxt:  an XML parser context
- * @entity: an unloaded system entity
+ * Parse a parameter entity reference.
  *
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  an XML parser context
+ */
+void
+xmlParsePEReference(xmlParserCtxt *ctxt) {
+    xmlParsePERefInternal(ctxt, 0);
+}
+
+/**
  * Load the content of an entity.
  *
- * Returns 0 in case of success and -1 in case of failure
+ * @param ctxt  an XML parser context
+ * @param entity  an unloaded system entity
+ * @returns 0 in case of success and -1 in case of failure
  */
 static int
 xmlLoadEntityContent(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
     xmlParserInputPtr oldinput, input = NULL;
     xmlParserInputPtr *oldinputTab;
-    const xmlChar *oldencoding;
+    xmlChar *oldencoding;
     xmlChar *content = NULL;
     xmlResourceType rtype;
     size_t length, i;
@@ -8045,7 +7813,7 @@ error:
     while (ctxt->inputNr > 0)
         xmlFreeInputStream(xmlCtxtPopInput(ctxt));
     xmlFree(ctxt->inputTab);
-    xmlFree((xmlChar *) ctxt->encoding);
+    xmlFree(ctxt->encoding);
 
     ctxt->input = oldinput;
     ctxt->inputNr = oldinputNr;
@@ -8059,13 +7827,9 @@ error:
 }
 
 /**
- * xmlParseStringPEReference:
- * @ctxt:  an XML parser context
- * @str:  a pointer to an index in the string
- *
- * parse PEReference declarations
+ * Parse PEReference declarations
  *
- * [69] PEReference ::= '%' Name ';'
+ *     [69] PEReference ::= '%' Name ';'
  *
  * [ WFC: No Recursion ]
  * A parsed entity must not contain a recursive
@@ -8086,7 +7850,9 @@ error:
  * Parameter-entity references may only appear in the DTD.
  * NOTE: misleading but this is handled.
  *
- * Returns the string of the entity content.
+ * @param ctxt  an XML parser context
+ * @param str  a pointer to an index in the string
+ * @returns the string of the entity content.
  *         str is updated to the current value of the index
  */
 static xmlEntityPtr
@@ -8148,25 +7914,24 @@ xmlParseStringPEReference(xmlParserCtxtP
 }
 
 /**
- * xmlParseDocTypeDecl:
- * @ctxt:  an XML parser context
+ * Parse a DOCTYPE declaration
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse a DOCTYPE declaration
- *
- * [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
- *                      ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
+ *     [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
+ *                          ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
  *
  * [ VC: Root Element Type ]
  * The Name in the document type declaration must match the element
  * type of the root element.
+ *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt) {
+xmlParseDocTypeDecl(xmlParserCtxt *ctxt) {
     const xmlChar *name = NULL;
-    xmlChar *ExternalID = NULL;
+    xmlChar *publicId = NULL;
     xmlChar *URI = NULL;
 
     /*
@@ -8192,15 +7957,15 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctx
     SKIP_BLANKS;
 
     /*
-     * Check for SystemID and ExternalID
+     * Check for public and system identifier (URI)
      */
-    URI = xmlParseExternalID(ctxt, &ExternalID, 1);
+    URI = xmlParseExternalID(ctxt, &publicId, 1);
 
-    if ((URI != NULL) || (ExternalID != NULL)) {
+    if ((URI != NULL) || (publicId != NULL)) {
         ctxt->hasExternalSubset = 1;
     }
     ctxt->extSubURI = URI;
-    ctxt->extSubSystem = ExternalID;
+    ctxt->extSubSystem = publicId;
 
     SKIP_BLANKS;
 
@@ -8209,7 +7974,7 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctx
      */
     if ((ctxt->sax != NULL) && (ctxt->sax->internalSubset != NULL) &&
 	(!ctxt->disableSAX))
-	ctxt->sax->internalSubset(ctxt->userData, name, ExternalID, URI);
+	ctxt->sax->internalSubset(ctxt->userData, name, publicId, URI);
 
     if ((RAW != '[') && (RAW != '>')) {
 	xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL);
@@ -8217,12 +7982,10 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseInternalSubset:
- * @ctxt:  an XML parser context
+ * Parse the internal subset declaration
  *
- * parse the internal subset declaration
- *
- * [28 end] ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
+ *     [28 end] ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
+ * @param ctxt  an XML parser context
  */
 
 static void
@@ -8240,59 +8003,60 @@ xmlParseInternalSubset(xmlParserCtxtPtr
 	 * Subsequence (markupdecl | PEReference | S)*
 	 */
 	SKIP_BLANKS;
-	while (((RAW != ']') || (ctxt->inputNr > oldInputNr)) &&
-               (PARSER_STOPPED(ctxt) == 0)) {
-
-            /*
-             * Conditional sections are allowed from external entities included
-             * by PE References in the internal subset.
-             */
-            if ((PARSER_EXTERNAL(ctxt)) &&
-                (RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
+        while (1) {
+            if (PARSER_STOPPED(ctxt)) {
+                return;
+            } else if (ctxt->input->cur >= ctxt->input->end) {
+                if (ctxt->inputNr <= oldInputNr) {
+                xmlFatalErr(ctxt, XML_ERR_INT_SUBSET_NOT_FINISHED, NULL);
+                    return;
+                }
+                xmlPopPE(ctxt);
+            } else if ((RAW == ']') && (ctxt->inputNr <= oldInputNr)) {
+                NEXT;
+                SKIP_BLANKS;
+                break;
+            } else if ((PARSER_EXTERNAL(ctxt)) &&
+                       (RAW == '<') && (NXT(1) == '!') && (NXT(2) == '[')) {
+                /*
+                 * Conditional sections are allowed in external entities
+                 * included by PE References in the internal subset.
+                 */
                 xmlParseConditionalSections(ctxt);
             } else if ((RAW == '<') && ((NXT(1) == '!') || (NXT(1) == '?'))) {
-	        xmlParseMarkupDecl(ctxt);
+                xmlParseMarkupDecl(ctxt);
             } else if (RAW == '%') {
-	        xmlParsePEReference(ctxt);
+                xmlParsePERefInternal(ctxt, 1);
             } else {
-		xmlFatalErr(ctxt, XML_ERR_INT_SUBSET_NOT_FINISHED, NULL);
-                break;
+                xmlFatalErr(ctxt, XML_ERR_INT_SUBSET_NOT_FINISHED, NULL);
+
+                while (ctxt->inputNr > oldInputNr)
+                    xmlPopPE(ctxt);
+                return;
             }
-	    SKIP_BLANKS_PE;
+            SKIP_BLANKS;
             SHRINK;
             GROW;
-	}
-
-        while (ctxt->inputNr > oldInputNr)
-            xmlPopPE(ctxt);
-
-	if (RAW == ']') {
-	    NEXT;
-	    SKIP_BLANKS;
-	}
+        }
     }
 
     /*
      * We should be at the end of the DOCTYPE declaration.
      */
-    if ((ctxt->wellFormed) && (RAW != '>')) {
-	xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL);
-	return;
+    if (RAW != '>') {
+        xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL);
+        return;
     }
     NEXT;
 }
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlParseAttribute:
- * @ctxt:  an XML parser context
- * @value:  a xmlChar ** used to store the value of the attribute
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an attribute
  *
- * parse an attribute
+ * @deprecated Internal function, don't use.
  *
- * [41] Attribute ::= Name Eq AttValue
+ *     [41] Attribute ::= Name Eq AttValue
  *
  * [ WFC: No External Entity References ]
  * Attribute values cannot contain direct or indirect entity references
@@ -8306,20 +8070,22 @@ xmlParseInternalSubset(xmlParserCtxtPtr
  * The attribute must have been declared; the value must be of the type
  * declared for it.
  *
- * [25] Eq ::= S? '=' S?
+ *     [25] Eq ::= S? '=' S?
  *
  * With namespace:
  *
- * [NS 11] Attribute ::= QName Eq AttValue
+ *     [NS 11] Attribute ::= QName Eq AttValue
  *
  * Also the case QName == xmlns:??? is handled independently as a namespace
  * definition.
  *
- * Returns the attribute name, and the value in *value.
+ * @param ctxt  an XML parser context
+ * @param value  a xmlChar ** used to store the value of the attribute
+ * @returns the attribute name, and the value in *value.
  */
 
 const xmlChar *
-xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlChar **value) {
+xmlParseAttribute(xmlParserCtxt *ctxt, xmlChar **value) {
     const xmlChar *name;
     xmlChar *val;
 
@@ -8379,20 +8145,17 @@ xmlParseAttribute(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlParseStartTag:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse a start tag. Always consumes '<'.
  *
- * [40] STag ::= '<' Name (S Attribute)* S? '>'
+ * @deprecated Internal function, don't use.
+ *
+ *     [40] STag ::= '<' Name (S Attribute)* S? '>'
  *
  * [ WFC: Unique Att Spec ]
  * No attribute name may appear more than once in the same start-tag or
  * empty-element tag.
  *
- * [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
+ *     [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
  *
  * [ WFC: Unique Att Spec ]
  * No attribute name may appear more than once in the same start-tag or
@@ -8400,15 +8163,16 @@ xmlParseAttribute(xmlParserCtxtPtr ctxt,
  *
  * With namespace:
  *
- * [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
+ *     [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
  *
- * [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>'
+ *     [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>'
  *
- * Returns the element name parsed
+ * @param ctxt  an XML parser context
+ * @returns the element name parsed
  */
 
 const xmlChar *
-xmlParseStartTag(xmlParserCtxtPtr ctxt) {
+xmlParseStartTag(xmlParserCtxt *ctxt) {
     const xmlChar *name;
     const xmlChar *attname;
     xmlChar *attvalue;
@@ -8526,18 +8290,15 @@ failed:
 }
 
 /**
- * xmlParseEndTag1:
- * @ctxt:  an XML parser context
- * @line:  line of the start tag
- * @nsNr:  number of namespaces on the start tag
- *
  * Parse an end tag. Always consumes '</'.
  *
- * [42] ETag ::= '</' Name S? '>'
+ *     [42] ETag ::= '</' Name S? '>'
  *
  * With namespace
  *
- * [NS 9] ETag ::= '</' QName S? '>'
+ *     [NS 9] ETag ::= '</' QName S? '>'
+ * @param ctxt  an XML parser context
+ * @param line  line of the start tag
  */
 
 static void
@@ -8589,22 +8350,20 @@ xmlParseEndTag1(xmlParserCtxtPtr ctxt, i
 }
 
 /**
- * xmlParseEndTag:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an end of tag
  *
- * parse an end of tag
+ * @deprecated Internal function, don't use.
  *
- * [42] ETag ::= '</' Name S? '>'
+ *     [42] ETag ::= '</' Name S? '>'
  *
  * With namespace
  *
- * [NS 9] ETag ::= '</' QName S? '>'
+ *     [NS 9] ETag ::= '</' QName S? '>'
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseEndTag(xmlParserCtxtPtr ctxt) {
+xmlParseEndTag(xmlParserCtxt *ctxt) {
     xmlParseEndTag1(ctxt, 0);
 }
 #endif /* LIBXML_SAX1_ENABLED */
@@ -8616,17 +8375,15 @@ xmlParseEndTag(xmlParserCtxtPtr ctxt) {
  ************************************************************************/
 
 /**
- * xmlParseQNameHashed:
- * @ctxt:  an XML parser context
- * @prefix:  pointer to store the prefix part
+ * Parse an XML Namespace QName
  *
- * parse an XML Namespace QName
- *
- * [6]  QName  ::= (Prefix ':')? LocalPart
- * [7]  Prefix  ::= NCName
- * [8]  LocalPart  ::= NCName
- *
- * Returns the Name parsed or NULL
+ *     [6]  QName  ::= (Prefix ':')? LocalPart
+ *     [7]  Prefix  ::= NCName
+ *     [8]  LocalPart  ::= NCName
+ *
+ * @param ctxt  an XML parser context
+ * @param prefix  pointer to store the prefix part
+ * @returns the Name parsed or NULL
  */
 
 static xmlHashedString
@@ -8674,17 +8431,15 @@ xmlParseQNameHashed(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseQName:
- * @ctxt:  an XML parser context
- * @prefix:  pointer to store the prefix part
- *
- * parse an XML Namespace QName
+ * Parse an XML Namespace QName
  *
- * [6]  QName  ::= (Prefix ':')? LocalPart
- * [7]  Prefix  ::= NCName
- * [8]  LocalPart  ::= NCName
- *
- * Returns the Name parsed or NULL
+ *     [6]  QName  ::= (Prefix ':')? LocalPart
+ *     [7]  Prefix  ::= NCName
+ *     [8]  LocalPart  ::= NCName
+ *
+ * @param ctxt  an XML parser context
+ * @param prefix  pointer to store the prefix part
+ * @returns the Name parsed or NULL
  */
 
 static const xmlChar *
@@ -8699,15 +8454,13 @@ xmlParseQName(xmlParserCtxtPtr ctxt, con
 }
 
 /**
- * xmlParseQNameAndCompare:
- * @ctxt:  an XML parser context
- * @name:  the localname
- * @prefix:  the prefix, if any.
- *
- * parse an XML name and compares for match
+ * Parse an XML name and compares for match
  * (specialized for endtag parsing)
  *
- * Returns NULL for an illegal name, (xmlChar*) 1 for success
+ * @param ctxt  an XML parser context
+ * @param name  the localname
+ * @param prefix  the prefix, if any.
+ * @returns NULL for an illegal name, (xmlChar*) 1 for success
  * and the name for mismatch
  */
 
@@ -8755,18 +8508,16 @@ xmlParseQNameAndCompare(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseAttribute2:
- * @ctxt:  an XML parser context
- * @pref:  the element prefix
- * @elem:  the element name
- * @prefix:  a xmlChar ** used to store the value of the attribute prefix
- * @value:  a xmlChar ** used to store the value of the attribute
- * @len:  an int * to save the length of the attribute
- * @alloc:  an int * to indicate if the attribute was allocated
+ * Parse an attribute in the new SAX2 framework.
  *
- * parse an attribute in the new SAX2 framework.
- *
- * Returns the attribute name, and the value in *value, .
+ * @param ctxt  an XML parser context
+ * @param pref  the element prefix
+ * @param elem  the element name
+ * @param hprefix  resulting attribute prefix
+ * @param value  resulting value of the attribute
+ * @param len  resulting length of the attribute
+ * @param alloc  resulting indicator if the attribute was allocated
+ * @returns the attribute name, and the value in *value, .
  */
 
 static xmlHashedString
@@ -8778,8 +8529,9 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt
     xmlHashedString hname;
     const xmlChar *prefix, *name;
     xmlChar *val = NULL, *internal_val = NULL;
-    int normalize = 0;
+    int special = 0;
     int isNamespace;
+    int flags;
 
     *value = NULL;
     GROW;
@@ -8796,34 +8548,46 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt
      * get the type if needed
      */
     if (ctxt->attsSpecial != NULL) {
-        int type;
-
-        type = XML_PTR_TO_INT(xmlHashQLookup2(ctxt->attsSpecial, pref, elem,
+        special = XML_PTR_TO_INT(xmlHashQLookup2(ctxt->attsSpecial, pref, elem,
                                               prefix, name));
-        if (type != 0)
-            normalize = 1;
     }
 
     /*
      * read the value
      */
     SKIP_BLANKS;
-    if (RAW == '=') {
-        NEXT;
-        SKIP_BLANKS;
-        isNamespace = (((prefix == NULL) && (name == ctxt->str_xmlns)) ||
-                       (prefix == ctxt->str_xmlns));
-        val = xmlParseAttValueInternal(ctxt, len, alloc, normalize,
-                                       isNamespace);
-        if (val == NULL)
-            goto error;
-    } else {
+    if (RAW != '=') {
         xmlFatalErrMsgStr(ctxt, XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
                           "Specification mandates value for attribute %s\n",
                           name);
         goto error;
     }
 
+
+    NEXT;
+    SKIP_BLANKS;
+    flags = 0;
+    isNamespace = (((prefix == NULL) && (name == ctxt->str_xmlns)) ||
+                   (prefix == ctxt->str_xmlns));
+    val = xmlParseAttValueInternal(ctxt, len, &flags, special,
+                                   isNamespace);
+    if (val == NULL)
+        goto error;
+
+    *alloc = (flags & XML_ATTVAL_ALLOC) != 0;
+
+#ifdef LIBXML_VALID_ENABLED
+    if ((ctxt->validate) &&
+        (ctxt->standalone) &&
+        (special & XML_SPECIAL_EXTERNAL) &&
+        (flags & XML_ATTVAL_NORM_CHANGE)) {
+        xmlValidityError(ctxt, XML_DTD_NOT_STANDALONE,
+                         "standalone: normalization of attribute %s on %s "
+                         "by external subset declaration\n",
+                         name, elem);
+    }
+#endif
+
     if (prefix == ctxt->str_xml) {
         /*
          * Check that xml:lang conforms to the specification
@@ -8875,17 +8639,15 @@ error:
 }
 
 /**
- * xmlAttrHashInsert:
- * @ctxt: parser context
- * @size: size of the hash table
- * @name: attribute name
- * @uri: namespace uri
- * @hashValue: combined hash value of name and uri
- * @aindex: attribute index (this is a multiple of 5)
- *
  * Inserts a new attribute into the hash table.
  *
- * Returns INT_MAX if no existing attribute was found, the attribute
+ * @param ctxt  parser context
+ * @param size  size of the hash table
+ * @param name  attribute name
+ * @param uri  namespace uri
+ * @param hashValue  combined hash value of name and uri
+ * @param aindex  attribute index (this is a multiple of 5)
+ * @returns INT_MAX if no existing attribute was found, the attribute
  * index if an attribute was found, -1 if a memory allocation failed.
  */
 static int
@@ -8953,20 +8715,17 @@ xmlAttrHashInsertQName(xmlParserCtxtPtr
     return(INT_MAX);
 }
 /**
- * xmlParseStartTag2:
- * @ctxt:  an XML parser context
- *
  * Parse a start tag. Always consumes '<'.
  *
  * This routine is called when running SAX2 parsing
  *
- * [40] STag ::= '<' Name (S Attribute)* S? '>'
+ *     [40] STag ::= '<' Name (S Attribute)* S? '>'
  *
  * [ WFC: Unique Att Spec ]
  * No attribute name may appear more than once in the same start-tag or
  * empty-element tag.
  *
- * [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
+ *     [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
  *
  * [ WFC: Unique Att Spec ]
  * No attribute name may appear more than once in the same start-tag or
@@ -8974,11 +8733,15 @@ xmlAttrHashInsertQName(xmlParserCtxtPtr
  *
  * With namespace:
  *
- * [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
+ *     [NS 8] STag ::= '<' QName (S Attribute)* S? '>'
  *
- * [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>'
+ *     [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>'
  *
- * Returns the element name parsed
+ * @param ctxt  an XML parser context
+ * @param pref  resulting namespace prefix
+ * @param URI  resulting namespace URI
+ * @param nbNsPtr  resulting number of namespace declarations
+ * @returns the element name parsed
  */
 
 static const xmlChar *
@@ -9210,7 +8973,7 @@ xmlParseStartTag2(xmlParserCtxtPtr ctxt,
                                         ((unsigned) alloc << 31);
             atts[nbatts++] = attname;
             atts[nbatts++] = aprefix;
-            atts[nbatts++] = (const xmlChar *) (size_t) haprefix.hashValue;
+            atts[nbatts++] = XML_INT_TO_PTR(haprefix.hashValue);
             if (alloc) {
                 atts[nbatts++] = attvalue;
                 attvalue += len;
@@ -9221,9 +8984,9 @@ xmlParseStartTag2(xmlParserCtxtPtr ctxt,
                  * reallocated. Store differences to input->base instead.
                  * The pointers will be reconstructed later.
                  */
-                atts[nbatts++] = (void *) (attvalue - BASE_PTR);
+                atts[nbatts++] = XML_INT_TO_PTR(attvalue - BASE_PTR);
                 attvalue += len;
-                atts[nbatts++] = (void *) (attvalue - BASE_PTR);
+                atts[nbatts++] = XML_INT_TO_PTR(attvalue - BASE_PTR);
             }
             /*
              * tag if some deallocation is needed
@@ -9483,12 +9246,21 @@ next_attr:
                 atts[nbatts++] = XML_INT_TO_PTR(nsIndex);
                 atts[nbatts++] = attr->value.name;
                 atts[nbatts++] = attr->valueEnd;
-                if ((ctxt->standalone == 1) && (attr->external != 0)) {
+
+#ifdef LIBXML_VALID_ENABLED
+                /*
+                 * This should be moved to valid.c, but we don't keep track
+                 * whether an attribute was defaulted.
+                 */
+                if ((ctxt->validate) &&
+                    (ctxt->standalone == 1) &&
+                    (attr->external != 0)) {
                     xmlValidityError(ctxt, XML_DTD_STANDALONE_DEFAULTED,
                             "standalone: attribute %s on %s defaulted "
                             "from external subset\n",
                             attname, localname);
                 }
+#endif
                 nbdef++;
 	    }
 	}
@@ -9588,18 +9360,15 @@ done:
 }
 
 /**
- * xmlParseEndTag2:
- * @ctxt:  an XML parser context
- * @line:  line of the start tag
- * @nsNr:  number of namespaces on the start tag
- *
  * Parse an end tag. Always consumes '</'.
  *
- * [42] ETag ::= '</' Name S? '>'
+ *     [42] ETag ::= '</' Name S? '>'
  *
  * With namespace
  *
- * [NS 9] ETag ::= '</' QName S? '>'
+ *     [NS 9] ETag ::= '</' QName S? '>'
+ * @param ctxt  an XML parser context
+ * @param tag  the corresponding start tag
  */
 
 static void
@@ -9655,23 +9424,21 @@ xmlParseEndTag2(xmlParserCtxtPtr ctxt, c
 }
 
 /**
- * xmlParseCDSect:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse escaped pure raw content. Always consumes '<!['.
  *
- * [18] CDSect ::= CDStart CData CDEnd
+ * @deprecated Internal function, don't use.
  *
- * [19] CDStart ::= '<![CDATA['
+ *     [18] CDSect ::= CDStart CData CDEnd
  *
- * [20] Data ::= (Char* - (Char* ']]>' Char*))
+ *     [19] CDStart ::= '<![CDATA['
  *
- * [21] CDEnd ::= ']]>'
+ *     [20] Data ::= (Char* - (Char* ']]>' Char*))
+ *
+ *     [21] CDEnd ::= ']]>'
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseCDSect(xmlParserCtxtPtr ctxt) {
+xmlParseCDSect(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     int len = 0;
     int size = XML_PARSER_BUFFER_SIZE;
@@ -9761,11 +9528,10 @@ out:
 }
 
 /**
- * xmlParseContentInternal:
- * @ctxt:  an XML parser context
- *
  * Parse a content sequence. Stops at EOF or '</'. Leaves checking of
  * unexpected EOF to the caller.
+ *
+ * @param ctxt  an XML parser context
  */
 
 static void
@@ -9866,15 +9632,14 @@ xmlParseContentInternal(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseContent:
- * @ctxt:  an XML parser context
- *
  * Parse XML element content. This is useful if you're only interested
  * in custom SAX callbacks. If you want a node list, use
- * xmlCtxtParseContent.
+ * #xmlCtxtParseContent.
+ *
+ * @param ctxt  an XML parser context
  */
 void
-xmlParseContent(xmlParserCtxtPtr ctxt) {
+xmlParseContent(xmlParserCtxt *ctxt) {
     if ((ctxt == NULL) || (ctxt->input == NULL))
         return;
 
@@ -9886,23 +9651,21 @@ xmlParseContent(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseElement:
- * @ctxt:  an XML parser context
+ * Parse an XML element
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse an XML element
- *
- * [39] element ::= EmptyElemTag | STag content ETag
+ *     [39] element ::= EmptyElemTag | STag content ETag
  *
  * [ WFC: Element Type Match ]
  * The Name in an element's end-tag must match the element type in the
  * start-tag.
  *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseElement(xmlParserCtxtPtr ctxt) {
+xmlParseElement(xmlParserCtxt *ctxt) {
     if (xmlParseElementStart(ctxt) != 0)
         return;
 
@@ -9923,13 +9686,12 @@ xmlParseElement(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseElementStart:
- * @ctxt:  an XML parser context
- *
  * Parse the start of an XML element. Returns -1 in case of error, 0 if an
  * opening tag was parsed, 1 if an empty element was parsed.
  *
  * Always consumes '<'.
+ *
+ * @param ctxt  an XML parser context
  */
 static int
 xmlParseElementStart(xmlParserCtxtPtr ctxt) {
@@ -9946,7 +9708,6 @@ xmlParseElementStart(xmlParserCtxtPtr ct
         xmlFatalErrMsgInt(ctxt, XML_ERR_RESOURCE_LIMIT,
                 "Excessive depth in document: %d use XML_PARSE_HUGE option\n",
                 ctxt->nameNr);
-	xmlHaltParser(ctxt);
 	return(-1);
     }
 
@@ -10048,10 +9809,9 @@ xmlParseElementStart(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseElementEnd:
- * @ctxt:  an XML parser context
- *
  * Parse the end of an XML element. Always consumes '</'.
+ *
+ * @param ctxt  an XML parser context
  */
 static void
 xmlParseElementEnd(xmlParserCtxtPtr ctxt) {
@@ -10091,21 +9851,19 @@ xmlParseElementEnd(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlParseVersionNum:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse the XML version value.
  *
- * parse the XML version value.
+ * @deprecated Internal function, don't use.
  *
- * [26] VersionNum ::= '1.' [0-9]+
+ *     [26] VersionNum ::= '1.' [0-9]+
  *
  * In practice allow [0-9].[0-9]+ at that level
  *
- * Returns the string giving the XML version number, or NULL
+ * @param ctxt  an XML parser context
+ * @returns the string giving the XML version number, or NULL
  */
 xmlChar *
-xmlParseVersionNum(xmlParserCtxtPtr ctxt) {
+xmlParseVersionNum(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     int len = 0;
     int size = 10;
@@ -10163,22 +9921,20 @@ xmlParseVersionNum(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlParseVersionInfo:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse the XML version.
  *
- * parse the XML version.
+ * @deprecated Internal function, don't use.
  *
- * [24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
+ *     [24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
  *
- * [25] Eq ::= S? '=' S?
+ *     [25] Eq ::= S? '=' S?
  *
- * Returns the version string, e.g. "1.0"
+ * @param ctxt  an XML parser context
+ * @returns the version string, e.g. "1.0"
  */
 
 xmlChar *
-xmlParseVersionInfo(xmlParserCtxtPtr ctxt) {
+xmlParseVersionInfo(xmlParserCtxt *ctxt) {
     xmlChar *version = NULL;
 
     if (CMP7(CUR_PTR, 'v', 'e', 'r', 's', 'i', 'o', 'n')) {
@@ -10212,19 +9968,17 @@ xmlParseVersionInfo(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlParseEncName:
- * @ctxt:  an XML parser context
+ * Parse the XML encoding name
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse the XML encoding name
+ *     [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
  *
- * [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
- *
- * Returns the encoding name value or NULL
+ * @param ctxt  an XML parser context
+ * @returns the encoding name value or NULL
  */
 xmlChar *
-xmlParseEncName(xmlParserCtxtPtr ctxt) {
+xmlParseEncName(xmlParserCtxt *ctxt) {
     xmlChar *buf = NULL;
     int len = 0;
     int size = 10;
@@ -10281,22 +10035,21 @@ xmlParseEncName(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseEncodingDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse the XML encoding declaration
  *
- * parse the XML encoding declaration
+ * @deprecated Internal function, don't use.
  *
- * [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' |  "'" EncName "'")
+ *     [80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | 
+ *                           "'" EncName "'")
  *
  * this setups the conversion filters.
  *
- * Returns the encoding value or NULL
+ * @param ctxt  an XML parser context
+ * @returns the encoding value or NULL
  */
 
 const xmlChar *
-xmlParseEncodingDecl(xmlParserCtxtPtr ctxt) {
+xmlParseEncodingDecl(xmlParserCtxt *ctxt) {
     xmlChar *encoding = NULL;
 
     SKIP_BLANKS;
@@ -10316,7 +10069,7 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ct
         encoding = xmlParseEncName(ctxt);
         if (RAW != '"') {
             xmlFatalErr(ctxt, XML_ERR_STRING_NOT_CLOSED, NULL);
-            xmlFree((xmlChar *) encoding);
+            xmlFree(encoding);
             return(NULL);
         } else
             NEXT;
@@ -10325,7 +10078,7 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ct
         encoding = xmlParseEncName(ctxt);
         if (RAW != '\'') {
             xmlFatalErr(ctxt, XML_ERR_STRING_NOT_CLOSED, NULL);
-            xmlFree((xmlChar *) encoding);
+            xmlFree(encoding);
             return(NULL);
         } else
             NEXT;
@@ -10342,15 +10095,12 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseSDDecl:
- * @ctxt:  an XML parser context
+ * Parse the XML standalone declaration
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * parse the XML standalone declaration
- *
- * [32] SDDecl ::= S 'standalone' Eq
- *                 (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"'))
+ *     [32] SDDecl ::= S 'standalone' Eq
+ *                     (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no')'"'))
  *
  * [ VC: Standalone Document Declaration ]
  * TODO The standalone document declaration must have the value "no"
@@ -10366,7 +10116,8 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ct
  *  - element types with element content, if white space occurs directly
  *    within any instance of those types.
  *
- * Returns:
+ * @param ctxt  an XML parser context
+ * @returns
  *   1 if standalone="yes"
  *   0 if standalone="no"
  *  -2 if standalone attribute is missing or invalid
@@ -10375,7 +10126,7 @@ xmlParseEncodingDecl(xmlParserCtxtPtr ct
  */
 
 int
-xmlParseSDDecl(xmlParserCtxtPtr ctxt) {
+xmlParseSDDecl(xmlParserCtxt *ctxt) {
     int standalone = -2;
 
     SKIP_BLANKS;
@@ -10428,18 +10179,16 @@ xmlParseSDDecl(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParseXMLDecl:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an XML declaration header
  *
- * parse an XML declaration header
+ * @deprecated Internal function, don't use.
  *
- * [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
+ *     [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
+xmlParseXMLDecl(xmlParserCtxt *ctxt) {
     xmlChar *version;
 
     /*
@@ -10489,7 +10238,7 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
 	    }
 	}
 	if (ctxt->version != NULL)
-	    xmlFree((void *) ctxt->version);
+	    xmlFree(ctxt->version);
 	ctxt->version = version;
     }
 
@@ -10545,15 +10294,13 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlCtxtGetVersion:
- * @ctxt:  parser context
+ * @since 2.14.0
  *
- * Available since 2.14.0.
- *
- * Returns the version from the XML declaration.
+ * @param ctxt  parser context
+ * @returns the version from the XML declaration.
  */
 const xmlChar *
-xmlCtxtGetVersion(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetVersion(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -10561,15 +10308,13 @@ xmlCtxtGetVersion(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtGetStandalone:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the value from the standalone document declaration.
+ * @param ctxt  parser context
+ * @returns the value from the standalone document declaration.
  */
 int
-xmlCtxtGetStandalone(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetStandalone(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(0);
 
@@ -10577,18 +10322,16 @@ xmlCtxtGetStandalone(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseMisc:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
+ * Parse an XML Misc* optional field.
  *
- * parse an XML Misc* optional field.
+ * @deprecated Internal function, don't use.
  *
- * [27] Misc ::= Comment | PI |  S
+ *     [27] Misc ::= Comment | PI |  S
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlParseMisc(xmlParserCtxtPtr ctxt) {
+xmlParseMisc(xmlParserCtxt *ctxt) {
     while (PARSER_STOPPED(ctxt) == 0) {
         SKIP_BLANKS;
         GROW;
@@ -10612,42 +10355,28 @@ xmlFinishDocument(xmlParserCtxtPtr ctxt)
     if ((ctxt->sax) && (ctxt->sax->endDocument != NULL))
         ctxt->sax->endDocument(ctxt->userData);
 
+    /*
+     * Remove locally kept entity definitions if the tree was not built
+     */
     doc = ctxt->myDoc;
-    if (doc != NULL) {
-        if (ctxt->wellFormed) {
-            doc->properties |= XML_DOC_WELLFORMED;
-            if (ctxt->valid)
-                doc->properties |= XML_DOC_DTDVALID;
-            if (ctxt->nsWellFormed)
-                doc->properties |= XML_DOC_NSVALID;
-        }
-
-        if (ctxt->options & XML_PARSE_OLD10)
-            doc->properties |= XML_DOC_OLD10;
-
-        /*
-         * Remove locally kept entity definitions if the tree was not built
-         */
-	if (xmlStrEqual(doc->version, SAX_COMPAT_MODE)) {
-            xmlFreeDoc(doc);
-            ctxt->myDoc = NULL;
-        }
+    if ((doc != NULL) &&
+        (xmlStrEqual(doc->version, SAX_COMPAT_MODE))) {
+        xmlFreeDoc(doc);
+        ctxt->myDoc = NULL;
     }
 }
 
 /**
- * xmlParseDocument:
- * @ctxt:  an XML parser context
- *
  * Parse an XML document and invoke the SAX handlers. This is useful
  * if you're only interested in custom SAX callbacks. If you want a
- * document tree, use xmlCtxtParseDocument.
+ * document tree, use #xmlCtxtParseDocument.
  *
- * Returns 0, -1 in case of error.
+ * @param ctxt  an XML parser context
+ * @returns 0, -1 in case of error.
  */
 
 int
-xmlParseDocument(xmlParserCtxtPtr ctxt) {
+xmlParseDocument(xmlParserCtxt *ctxt) {
     if ((ctxt == NULL) || (ctxt->input == NULL))
         return(-1);
 
@@ -10758,23 +10487,21 @@ xmlParseDocument(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlParseExtParsedEnt:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
- * parse a general parsed entity
+ * Parse a general parsed entity
  * An external general parsed entity is well-formed if it matches the
  * production labeled extParsedEnt.
  *
- * [78] extParsedEnt ::= TextDecl? content
+ * @deprecated Internal function, don't use.
+ *
+ *     [78] extParsedEnt ::= TextDecl? content
  *
- * Returns 0, -1 in case of error. the parser context is augmented
+ * @param ctxt  an XML parser context
+ * @returns 0, -1 in case of error. the parser context is augmented
  *                as a result of the parsing.
  */
 
 int
-xmlParseExtParsedEnt(xmlParserCtxtPtr ctxt) {
+xmlParseExtParsedEnt(xmlParserCtxt *ctxt) {
     if ((ctxt == NULL) || (ctxt->input == NULL))
         return(-1);
 
@@ -10838,11 +10565,10 @@ xmlParseExtParsedEnt(xmlParserCtxtPtr ct
  ************************************************************************/
 
 /**
- * xmlParseLookupChar:
- * @ctxt:  an XML parser context
- * @c:  character
- *
  * Check whether the input buffer contains a character.
+ *
+ * @param ctxt  an XML parser context
+ * @param c  character
  */
 static int
 xmlParseLookupChar(xmlParserCtxtPtr ctxt, int c) {
@@ -10870,13 +10596,12 @@ xmlParseLookupChar(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlParseLookupString:
- * @ctxt:  an XML parser context
- * @startDelta: delta to apply at the start
- * @str:  string
- * @strLen:  length of string
- *
  * Check whether the input buffer contains a string.
+ *
+ * @param ctxt  an XML parser context
+ * @param startDelta  delta to apply at the start
+ * @param str  string
+ * @param strLen  length of string
  */
 static const xmlChar *
 xmlParseLookupString(xmlParserCtxtPtr ctxt, size_t startDelta,
@@ -10913,10 +10638,9 @@ xmlParseLookupString(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlParseLookupCharData:
- * @ctxt:  an XML parser context
- *
  * Check whether the input buffer contains terminated char data.
+ *
+ * @param ctxt  an XML parser context
  */
 static int
 xmlParseLookupCharData(xmlParserCtxtPtr ctxt) {
@@ -10942,11 +10666,10 @@ xmlParseLookupCharData(xmlParserCtxtPtr
 }
 
 /**
- * xmlParseLookupGt:
- * @ctxt:  an XML parser context
- *
  * Check whether there's enough data in the input buffer to finish parsing
  * a start tag. This has to take quotes into account.
+ *
+ * @param ctxt  an XML parser context
  */
 static int
 xmlParseLookupGt(xmlParserCtxtPtr ctxt) {
@@ -10986,11 +10709,10 @@ xmlParseLookupGt(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlParseLookupInternalSubset:
- * @ctxt:  an XML parser context
- *
  * Check whether there's enough data in the input buffer to finish parsing
  * the internal subset.
+ *
+ * @param ctxt  an XML parser context
  */
 static int
 xmlParseLookupInternalSubset(xmlParserCtxtPtr ctxt) {
@@ -11096,13 +10818,11 @@ xmlParseLookupInternalSubset(xmlParserCt
 }
 
 /**
- * xmlParseTryOrFinish:
- * @ctxt:  an XML parser context
- * @terminate:  last chunk indicator
- *
  * Try to progress on parsing
  *
- * Returns zero if no parsing was possible
+ * @param ctxt  an XML parser context
+ * @param terminate  last chunk indicator
+ * @returns zero if no parsing was possible
  */
 static int
 xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
@@ -11486,32 +11206,33 @@ done:
 }
 
 /**
- * xmlParseChunk:
- * @ctxt:  an XML parser context
- * @chunk:  chunk of memory
- * @size:  size of chunk in bytes
- * @terminate:  last chunk indicator
- *
  * Parse a chunk of memory in push parser mode.
  *
  * Assumes that the parser context was initialized with
- * xmlCreatePushParserCtxt.
+ * #xmlCreatePushParserCtxt.
  *
  * The last chunk, which will often be empty, must be marked with
- * the @terminate flag. With the default SAX callbacks, the resulting
+ * the `terminate` flag. With the default SAX callbacks, the resulting
  * document will be available in ctxt->myDoc. This pointer will not
- * be freed when calling xmlFreeParserCtxt and must be freed by the
+ * be freed when calling #xmlFreeParserCtxt and must be freed by the
  * caller. If the document isn't well-formed, it will still be returned
  * in ctxt->myDoc.
  *
- * As an exception, xmlCtxtResetPush will free the document in
+ * As an exception, #xmlCtxtResetPush will free the document in
  * ctxt->myDoc. So ctxt->myDoc should be set to NULL after extracting
  * the document.
  *
- * Returns an xmlParserErrors code (0 on success).
+ * Since 2.14.0, #xmlCtxtGetDocument can be used to retrieve the
+ * result document.
+ *
+ * @param ctxt  an XML parser context
+ * @param chunk  chunk of memory
+ * @param size  size of chunk in bytes
+ * @param terminate  last chunk indicator
+ * @returns an xmlParserErrors code (0 on success).
  */
 int
-xmlParseChunk(xmlParserCtxtPtr ctxt, const char *chunk, int size,
+xmlParseChunk(xmlParserCtxt *ctxt, const char *chunk, int size,
               int terminate) {
     size_t curBase;
     size_t maxLength;
@@ -11546,7 +11267,6 @@ xmlParseChunk(xmlParserCtxtPtr ctxt, con
     xmlBufUpdateInput(ctxt->input->buf->buffer, ctxt->input, pos);
     if (res < 0) {
         xmlCtxtErrIO(ctxt, ctxt->input->buf->error, NULL);
-        xmlHaltParser(ctxt);
         return(ctxt->errNo);
     }
 
@@ -11559,7 +11279,6 @@ xmlParseChunk(xmlParserCtxtPtr ctxt, con
     if (curBase > maxLength) {
         xmlFatalErr(ctxt, XML_ERR_RESOURCE_LIMIT,
                     "Buffer size limit exceeded, try XML_PARSE_HUGE\n");
-        xmlHaltParser(ctxt);
     }
 
     if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX != 0))
@@ -11571,7 +11290,6 @@ xmlParseChunk(xmlParserCtxtPtr ctxt, con
 	xmlBufUpdateInput(ctxt->input->buf->buffer, ctxt->input, pos);
         if (res < 0) {
             xmlCtxtErrIO(ctxt, ctxt->input->buf->error, NULL);
-            xmlHaltParser(ctxt);
             return(ctxt->errNo);
         }
     }
@@ -11614,30 +11332,28 @@ xmlParseChunk(xmlParserCtxtPtr ctxt, con
  ************************************************************************/
 
 /**
- * xmlCreatePushParserCtxt:
- * @sax:  a SAX handler (optional)
- * @user_data:  user data for SAX callbacks (optional)
- * @chunk:  initial chunk (optional, deprecated)
- * @size:  size of initial chunk in bytes
- * @filename:  file name or URI (optional)
- *
  * Create a parser context for using the XML parser in push mode.
- * See xmlParseChunk.
+ * See #xmlParseChunk.
  *
  * Passing an initial chunk is useless and deprecated.
  *
  * The push parser doesn't support recovery mode or the
  * XML_PARSE_NOBLANKS option.
  *
- * @filename is used as base URI to fetch external entities and for
+ * `filename` is used as base URI to fetch external entities and for
  * error reports.
  *
- * Returns the new parser context or NULL if a memory allocation
+ * @param sax  a SAX handler (optional)
+ * @param user_data  user data for SAX callbacks (optional)
+ * @param chunk  initial chunk (optional, deprecated)
+ * @param size  size of initial chunk in bytes
+ * @param filename  file name or URI (optional)
+ * @returns the new parser context or NULL if a memory allocation
  * failed.
  */
 
-xmlParserCtxtPtr
-xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
+xmlParserCtxt *
+xmlCreatePushParserCtxt(xmlSAXHandler *sax, void *user_data,
                         const char *chunk, int size, const char *filename) {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input;
@@ -11665,36 +11381,45 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr
 #endif /* LIBXML_PUSH_ENABLED */
 
 /**
- * xmlStopParser:
- * @ctxt:  an XML parser context
- *
  * Blocks further parser processing
+ *
+ * @param ctxt  an XML parser context
  */
 void
-xmlStopParser(xmlParserCtxtPtr ctxt) {
+xmlStopParser(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return;
-    xmlHaltParser(ctxt);
-    if (ctxt->errNo != XML_ERR_NO_MEMORY)
+
+    /* This stops the parser */
+    ctxt->disableSAX = 2;
+
+    /*
+     * xmlStopParser is often called from error handlers,
+     * so we can't raise an error here to avoid infinite
+     * loops. Just make sure that an error condition is
+     * reported.
+     */
+    if (ctxt->errNo == XML_ERR_OK) {
         ctxt->errNo = XML_ERR_USER_STOP;
+        ctxt->lastError.code = XML_ERR_USER_STOP;
+        ctxt->wellFormed = 0;
+    }
 }
 
 /**
- * xmlCreateIOParserCtxt:
- * @sax:  a SAX handler (optional)
- * @user_data:  user data for SAX callbacks (optional)
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function (optional)
- * @ioctx:  an I/O handler
- * @enc:  the charset encoding if known (deprecated)
- *
  * Create a parser context for using the XML parser with an existing
  * I/O stream
  *
- * Returns the new parser context or NULL
+ * @param sax  a SAX handler (optional)
+ * @param user_data  user data for SAX callbacks (optional)
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function (optional)
+ * @param ioctx  an I/O handler
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
-xmlCreateIOParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
+xmlParserCtxt *
+xmlCreateIOParserCtxt(xmlSAXHandler *sax, void *user_data,
                       xmlInputReadCallback ioread,
                       xmlInputCloseCallback ioclose,
                       void *ioctx, xmlCharEncoding enc) {
@@ -11730,24 +11455,22 @@ xmlCreateIOParserCtxt(xmlSAXHandlerPtr s
  ************************************************************************/
 
 /**
- * xmlCtxtParseDtd:
- * @ctxt:  a parser context
- * @input:  a parser input
- * @publicId:  public ID of the DTD (optional)
- * @systemId:  system ID of the DTD (optional)
- *
  * Parse a DTD.
  *
  * Option XML_PARSE_DTDLOAD should be enabled in the parser context
  * to make external entities work.
  *
- * Availabe since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the resulting xmlDtdPtr or NULL in case of error.
- * @input will be freed by the function in any case.
+ * @param ctxt  a parser context
+ * @param input  a parser input
+ * @param publicId  public ID of the DTD (optional)
+ * @param systemId  system ID of the DTD (optional)
+ * @returns the resulting xmlDtd or NULL in case of error.
+ * `input` will be freed by the function in any case.
  */
-xmlDtdPtr
-xmlCtxtParseDtd(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
+xmlDtd *
+xmlCtxtParseDtd(xmlParserCtxt *ctxt, xmlParserInput *input,
                 const xmlChar *publicId, const xmlChar *systemId) {
     xmlDtdPtr ret = NULL;
 
@@ -11809,21 +11532,19 @@ error:
 }
 
 /**
- * xmlIOParseDTD:
- * @sax:  the SAX handler block or NULL
- * @input:  an Input Buffer
- * @enc:  the charset encoding if known
- *
- * DEPRECATED: Use xmlCtxtParseDtd.
- *
  * Load and parse a DTD
  *
- * Returns the resulting xmlDtdPtr or NULL in case of error.
- * @input will be freed by the function in any case.
+ * @deprecated Use #xmlCtxtParseDtd.
+ *
+ * @param sax  the SAX handler block or NULL
+ * @param input  an Input Buffer
+ * @param enc  the charset encoding if known
+ * @returns the resulting xmlDtd or NULL in case of error.
+ * `input` will be freed by the function in any case.
  */
 
-xmlDtdPtr
-xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
+xmlDtd *
+xmlIOParseDTD(xmlSAXHandler *sax, xmlParserInputBuffer *input,
 	      xmlCharEncoding enc) {
     xmlDtdPtr ret = NULL;
     xmlParserCtxtPtr ctxt;
@@ -11861,27 +11582,25 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlP
 }
 
 /**
- * xmlSAXParseDTD:
- * @sax:  the SAX handler block
- * @ExternalID:  a NAME* containing the External ID of the DTD
- * @SystemID:  a NAME* containing the URL to the DTD
- *
- * DEPRECATED: Use xmlCtxtParseDtd.
- *
  * Load and parse an external subset.
  *
- * Returns the resulting xmlDtdPtr or NULL in case of error.
+ * @deprecated Use #xmlCtxtParseDtd.
+ *
+ * @param sax  the SAX handler block
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD
+ * @returns the resulting xmlDtd or NULL in case of error.
  */
 
-xmlDtdPtr
-xmlSAXParseDTD(xmlSAXHandlerPtr sax, const xmlChar *ExternalID,
-                          const xmlChar *SystemID) {
+xmlDtd *
+xmlSAXParseDTD(xmlSAXHandler *sax, const xmlChar *publicId,
+               const xmlChar *systemId) {
     xmlDtdPtr ret = NULL;
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input = NULL;
     xmlChar* systemIdCanonic;
 
-    if ((ExternalID == NULL) && (SystemID == NULL)) return(NULL);
+    if ((publicId == NULL) && (systemId == NULL)) return(NULL);
 
     ctxt = xmlNewSAXParserCtxt(sax, NULL);
     if (ctxt == NULL) {
@@ -11892,8 +11611,8 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, con
     /*
      * Canonicalise the system ID
      */
-    systemIdCanonic = xmlCanonicPath(SystemID);
-    if ((SystemID != NULL) && (systemIdCanonic == NULL)) {
+    systemIdCanonic = xmlCanonicPath(systemId);
+    if ((systemId != NULL) && (systemIdCanonic == NULL)) {
 	xmlFreeParserCtxt(ctxt);
 	return(NULL);
     }
@@ -11903,7 +11622,7 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, con
      */
 
     if ((ctxt->sax != NULL) && (ctxt->sax->resolveEntity != NULL))
-	input = ctxt->sax->resolveEntity(ctxt->userData, ExternalID,
+	input = ctxt->sax->resolveEntity(ctxt->userData, publicId,
 	                                 systemIdCanonic);
     if (input == NULL) {
 	xmlFreeParserCtxt(ctxt);
@@ -11917,7 +11636,7 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, con
     else
 	xmlFree(systemIdCanonic);
 
-    ret = xmlCtxtParseDtd(ctxt, input, ExternalID, SystemID);
+    ret = xmlCtxtParseDtd(ctxt, input, publicId, systemId);
 
     xmlFreeParserCtxt(ctxt);
     return(ret);
@@ -11925,18 +11644,16 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, con
 
 
 /**
- * xmlParseDTD:
- * @ExternalID:  a NAME* containing the External ID of the DTD
- * @SystemID:  a NAME* containing the URL to the DTD
- *
  * Load and parse an external subset.
  *
- * Returns the resulting xmlDtdPtr or NULL in case of error.
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD
+ * @returns the resulting xmlDtd or NULL in case of error.
  */
 
-xmlDtdPtr
-xmlParseDTD(const xmlChar *ExternalID, const xmlChar *SystemID) {
-    return(xmlSAXParseDTD(NULL, ExternalID, SystemID));
+xmlDtd *
+xmlParseDTD(const xmlChar *publicId, const xmlChar *systemId) {
+    return(xmlSAXParseDTD(NULL, publicId, systemId));
 }
 #endif /* LIBXML_VALID_ENABLED */
 
@@ -12055,7 +11772,6 @@ xmlCtxtParseEntity(xmlParserCtxtPtr ctxt
      */
     if (ent->flags & XML_ENT_EXPANDING) {
         xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
-        xmlHaltParser(ctxt);
         goto error;
     }
 
@@ -12148,25 +11864,23 @@ error:
 }
 
 /**
- * xmlParseCtxtExternalEntity:
- * @ctxt:  the existing parsing context
- * @URL:  the URL for the entity to load
- * @ID:  the System ID for the entity to load
- * @listOut:  the return value for the set of parsed nodes
- *
  * 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
+ *     [78] extParsedEnt ::= TextDecl? content
  *
- * Returns 0 if the entity is well formed, -1 in case of args problem and
+ * @param ctxt  the existing parsing context
+ * @param URL  the URL for the entity to load
+ * @param ID  the System ID for the entity to load
+ * @param listOut  the return value for the set of parsed nodes
+ * @returns 0 if the entity is well formed, -1 in case of args problem and
  *    the parser error code otherwise
  */
 
 int
-xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctxt, const xmlChar *URL,
-                           const xmlChar *ID, xmlNodePtr *listOut) {
+xmlParseCtxtExternalEntity(xmlParserCtxt *ctxt, const xmlChar *URL,
+                           const xmlChar *ID, xmlNode **listOut) {
     xmlParserInputPtr input;
     xmlNodePtr list;
 
@@ -12195,30 +11909,31 @@ xmlParseCtxtExternalEntity(xmlParserCtxt
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlParseExternalEntity:
- * @doc:  the document the chunk pertains to
- * @sax:  the SAX handler block (possibly NULL)
- * @user_data:  The user data returned on SAX callbacks (possibly NULL)
- * @depth:  Used for loop detection, use 0
- * @URL:  the URL for the entity to load
- * @ID:  the System ID for the entity to load
- * @list:  the return value for the set of parsed nodes
- *
- * DEPRECATED: Use xmlParseCtxtExternalEntity.
- *
  * Parse an external general entity
  * An external general parsed entity is well-formed if it matches the
  * production labeled extParsedEnt.
  *
- * [78] extParsedEnt ::= TextDecl? content
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlParseCtxtExternalEntity.
  *
- * Returns 0 if the entity is well formed, -1 in case of args problem and
+ *     [78] extParsedEnt ::= TextDecl? content
+ *
+ * @param doc  the document the chunk pertains to
+ * @param sax  the SAX handler block (possibly NULL)
+ * @param user_data  The user data returned on SAX callbacks (possibly NULL)
+ * @param depth  Used for loop detection, use 0
+ * @param URL  the URL for the entity to load
+ * @param ID  the System ID for the entity to load
+ * @param list  the return value for the set of parsed nodes
+ * @returns 0 if the entity is well formed, -1 in case of args problem and
  *    the parser error code otherwise
  */
 
 int
-xmlParseExternalEntity(xmlDocPtr doc, xmlSAXHandlerPtr sax, void *user_data,
-	  int depth, const xmlChar *URL, const xmlChar *ID, xmlNodePtr *list) {
+xmlParseExternalEntity(xmlDoc *doc, xmlSAXHandler *sax, void *user_data,
+	  int depth, const xmlChar *URL, const xmlChar *ID, xmlNode **list) {
     xmlParserCtxtPtr ctxt;
     int ret;
 
@@ -12241,54 +11956,54 @@ xmlParseExternalEntity(xmlDocPtr doc, xm
 }
 
 /**
- * xmlParseBalancedChunkMemory:
- * @doc:  the document the chunk pertains to (must not be NULL)
- * @sax:  the SAX handler block (possibly NULL)
- * @user_data:  The user data returned on SAX callbacks (possibly NULL)
- * @depth:  Used for loop detection, use 0
- * @string:  the input string in UTF8 or ISO-Latin (zero terminated)
- * @lst:  the return value for the set of parsed nodes
- *
  * 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)*
+ *     [43] content ::= (element | CharData | Reference | CDSect | PI |
+ *                       Comment)*
+ *
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * Returns 0 if the chunk is well balanced, -1 in case of args problem and
+ * @param doc  the document the chunk pertains to (must not be NULL)
+ * @param sax  the SAX handler block (possibly NULL)
+ * @param user_data  The user data returned on SAX callbacks (possibly NULL)
+ * @param depth  Used for loop detection, use 0
+ * @param string  the input string in UTF8 or ISO-Latin (zero terminated)
+ * @param lst  the return value for the set of parsed nodes
+ * @returns 0 if the chunk is well balanced, -1 in case of args problem and
  *    the parser error code otherwise
  */
 
 int
-xmlParseBalancedChunkMemory(xmlDocPtr doc, xmlSAXHandlerPtr sax,
-     void *user_data, int depth, const xmlChar *string, xmlNodePtr *lst) {
+xmlParseBalancedChunkMemory(xmlDoc *doc, xmlSAXHandler *sax,
+     void *user_data, int depth, const xmlChar *string, xmlNode **lst) {
     return xmlParseBalancedChunkMemoryRecover( doc, sax, user_data,
                                                 depth, string, lst, 0 );
 }
 #endif /* LIBXML_SAX1_ENABLED */
 
 /**
- * xmlCtxtParseContent:
- * @ctxt:  parser context
- * @input:  parser input
- * @node:  target node or document
- * @hasTextDecl:  whether to parse text declaration
- *
  * Parse a well-balanced chunk of XML matching the 'content' production.
  *
- * Namespaces in scope of @node and entities of @node's document are
- * recognized. When validating, the DTD of @node's document is used.
+ * Namespaces in scope of `node` and entities of `node`'s document are
+ * recognized. When validating, the DTD of `node`'s document is used.
  *
- * Always consumes @input even in error case.
+ * Always consumes `input` even in error case.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a node list or NULL in case of error.
- */
-xmlNodePtr
-xmlCtxtParseContent(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
-                    xmlNodePtr node, int hasTextDecl) {
+ * @param ctxt  parser context
+ * @param input  parser input
+ * @param node  target node or document
+ * @param hasTextDecl  whether to parse text declaration
+ * @returns a node list or NULL in case of error.
+ */
+xmlNode *
+xmlCtxtParseContent(xmlParserCtxt *ctxt, xmlParserInput *input,
+                    xmlNode *node, int hasTextDecl) {
     xmlDocPtr doc;
     xmlNodePtr cur, list = NULL;
     int nsnr = 0;
@@ -12333,12 +12048,7 @@ xmlCtxtParseContent(xmlParserCtxtPtr ctx
             goto exit;
     }
 
-#ifdef LIBXML_HTML_ENABLED
-    if (ctxt->html)
-        htmlCtxtReset(ctxt);
-    else
-#endif
-        xmlCtxtReset(ctxt);
+    xmlCtxtReset(ctxt);
 
     oldDict = ctxt->dict;
     oldOptions = ctxt->options;
@@ -12359,6 +12069,7 @@ xmlCtxtParseContent(xmlParserCtxtPtr ctx
      * Disable IDs
      */
     ctxt->loadsubset |= XML_SKIP_IDS;
+    ctxt->options |= XML_PARSE_SKIP_IDS;
 
     ctxt->myDoc = doc;
 
@@ -12413,31 +12124,30 @@ exit:
 }
 
 /**
- * xmlParseInNodeContext:
- * @node:  the context node
- * @data:  the input string
- * @datalen:  the input string length in bytes
- * @options:  a combination of xmlParserOption
- * @listOut:  the return value for the set of parsed nodes
- *
  * 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)*
+ *     [43] content ::= (element | CharData | Reference | CDSect | PI |
+ *                       Comment)*
  *
- * This function assumes the encoding of @node's document which is
+ * This function assumes the encoding of `node`'s document which is
  * typically not what you want. A better alternative is
- * xmlCtxtParseContent.
+ * #xmlCtxtParseContent.
  *
- * Returns XML_ERR_OK if the chunk is well balanced, and the parser
+ * @param node  the context node
+ * @param data  the input string
+ * @param datalen  the input string length in bytes
+ * @param options  a combination of xmlParserOption
+ * @param listOut  the return value for the set of parsed nodes
+ * @returns XML_ERR_OK if the chunk is well balanced, and the parser
  * error code otherwise
  */
 xmlParserErrors
-xmlParseInNodeContext(xmlNodePtr node, const char *data, int datalen,
-                      int options, xmlNodePtr *listOut) {
+xmlParseInNodeContext(xmlNode *node, const char *data, int datalen,
+                      int options, xmlNode **listOut) {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input;
     xmlDocPtr doc;
@@ -12494,32 +12204,34 @@ xmlParseInNodeContext(xmlNodePtr node, c
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlParseBalancedChunkMemoryRecover:
- * @doc:  the document the chunk pertains to (must not be NULL)
- * @sax:  the SAX handler block (possibly NULL)
- * @user_data:  The user data returned on SAX callbacks (possibly NULL)
- * @depth:  Used for loop detection, use 0
- * @string:  the input string in UTF8 or ISO-Latin (zero terminated)
- * @listOut:  the return value for the set of parsed nodes
- * @recover: return nodes even if the data is broken (use 0)
- *
  * Parse a well-balanced chunk of an XML document
  *
  * 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)*
- *
- * Returns 0 if the chunk is well balanced, or thehe parser error code
- * otherwise.
+ *     [43] content ::= (element | CharData | Reference | CDSect | PI |
+ *                       Comment)*
  *
  * In case recover is set to 1, the nodelist will not be empty even if
  * the parsed chunk is not well balanced, assuming the parsing succeeded to
  * some extent.
+ *
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @param doc  the document the chunk pertains to (must not be NULL)
+ * @param sax  the SAX handler block (possibly NULL)
+ * @param user_data  The user data returned on SAX callbacks (possibly NULL)
+ * @param depth  Used for loop detection, use 0
+ * @param string  the input string in UTF8 or ISO-Latin (zero terminated)
+ * @param listOut  the return value for the set of parsed nodes
+ * @param recover  return nodes even if the data is broken (use 0)
+ * @returns 0 if the chunk is well balanced, or thehe parser error code
+ * otherwise.
  */
 int
-xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc, xmlSAXHandlerPtr sax,
-     void *user_data, int depth, const xmlChar *string, xmlNodePtr *listOut,
+xmlParseBalancedChunkMemoryRecover(xmlDoc *doc, xmlSAXHandler *sax,
+     void *user_data, int depth, const xmlChar *string, xmlNode **listOut,
      int recover) {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input;
@@ -12569,25 +12281,26 @@ error:
 }
 
 /**
- * xmlSAXParseEntity:
- * @sax:  the SAX handler block
- * @filename:  the filename
- *
- * DEPRECATED: Don't use.
- *
- * parse an XML external entity out of context and build a tree.
+ * 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
+ * @deprecated Don't use.
+ *
+ *     [78] extParsedEnt ::= TextDecl? content
  *
  * This correspond to a "Well Balanced" chunk
  *
- * Returns the resulting document tree
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @param sax  the SAX handler block
+ * @param filename  the filename
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
-xmlSAXParseEntity(xmlSAXHandlerPtr sax, const char *filename) {
+xmlDoc *
+xmlSAXParseEntity(xmlSAXHandler *sax, const char *filename) {
     xmlDocPtr ret;
     xmlParserCtxtPtr ctxt;
 
@@ -12620,39 +12333,40 @@ xmlSAXParseEntity(xmlSAXHandlerPtr sax,
 }
 
 /**
- * xmlParseEntity:
- * @filename:  the filename
- *
- * parse an XML external entity out of context and build a tree.
+ * Parse an XML external entity out of context and build a tree.
  *
- * [78] extParsedEnt ::= TextDecl? content
+ *     [78] extParsedEnt ::= TextDecl? content
  *
  * This correspond to a "Well Balanced" chunk
  *
- * Returns the resulting document tree
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Don't use.
+ *
+ * @param filename  the filename
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
+xmlDoc *
 xmlParseEntity(const char *filename) {
     return(xmlSAXParseEntity(NULL, filename));
 }
 #endif /* LIBXML_SAX1_ENABLED */
 
 /**
- * xmlCreateEntityParserCtxt:
- * @URL:  the entity URL
- * @ID:  the entity PUBLIC ID
- * @base:  a possible base for the target URI
- *
- * DEPRECATED: Don't use.
- *
  * Create a parser context for an external entity
  * Automatic support for ZLIB/Compress compressed document is provided
  * by default if found at compile-time.
  *
- * Returns the new parser context or NULL
+ * @deprecated Don't use.
+ *
+ * @param URL  the entity URL
+ * @param ID  the entity PUBLIC ID
+ * @param base  a possible base for the target URI
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlCreateEntityParserCtxt(const xmlChar *URL, const xmlChar *ID,
 	                  const xmlChar *base) {
     xmlParserCtxtPtr ctxt;
@@ -12696,19 +12410,17 @@ error:
  ************************************************************************/
 
 /**
- * xmlCreateURLParserCtxt:
- * @filename:  the filename or URL
- * @options:  a combination of xmlParserOption
- *
- * DEPRECATED: Use xmlNewParserCtxt and xmlCtxtReadFile.
- *
  * 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
  *
- * Returns the new parser context or NULL
+ * @deprecated Use #xmlNewParserCtxt and #xmlCtxtReadFile.
+ *
+ * @param filename  the filename or URL
+ * @param options  a combination of xmlParserOption
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlCreateURLParserCtxt(const char *filename, int options)
 {
     xmlParserCtxtPtr ctxt;
@@ -12718,10 +12430,7 @@ xmlCreateURLParserCtxt(const char *filen
     if (ctxt == NULL)
 	return(NULL);
 
-    options |= XML_PARSE_UNZIP;
-
     xmlCtxtUseOptions(ctxt, options);
-    ctxt->linenumbers = 1;
 
     input = xmlLoadResource(ctxt, filename, NULL, XML_RESOURCE_MAIN_DOCUMENT);
     if (input == NULL) {
@@ -12738,18 +12447,16 @@ xmlCreateURLParserCtxt(const char *filen
 }
 
 /**
- * xmlCreateFileParserCtxt:
- * @filename:  the filename
- *
- * DEPRECATED: Use xmlNewParserCtxt and xmlCtxtReadFile.
- *
  * Create a parser context for a file content.
  * Automatic support for ZLIB/Compress compressed document is provided
  * by default if found at compile-time.
  *
- * Returns the new parser context or NULL
+ * @deprecated Use #xmlNewParserCtxt and #xmlCtxtReadFile.
+ *
+ * @param filename  the filename
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlCreateFileParserCtxt(const char *filename)
 {
     return(xmlCreateURLParserCtxt(filename, 0));
@@ -12757,28 +12464,29 @@ xmlCreateFileParserCtxt(const char *file
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlSAXParseFileWithData:
- * @sax:  the SAX handler block
- * @filename:  the filename
- * @recovery:  work in recovery mode, i.e. tries to read no Well Formed
- *             documents
- * @data:  the userdata
- *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.
- *
- * parse an XML file and build a tree. Automatic support for ZLIB/Compress
+ * 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.
  *
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadFile.
+ *
  * User data (void *) is stored within the parser context in the
  * context's _private member, so it is available nearly everywhere in libxml
  *
- * Returns the resulting document tree
+ * @param sax  the SAX handler block
+ * @param filename  the filename
+ * @param recovery  work in recovery mode, i.e. tries to read no Well Formed
+ *             documents
+ * @param data  the userdata
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
-xmlSAXParseFileWithData(xmlSAXHandlerPtr sax, const char *filename,
+xmlDoc *
+xmlSAXParseFileWithData(xmlSAXHandler *sax, const char *filename,
                         int recovery, void *data) {
     xmlDocPtr ret = NULL;
     xmlParserCtxtPtr ctxt;
@@ -12809,98 +12517,101 @@ xmlSAXParseFileWithData(xmlSAXHandlerPtr
 }
 
 /**
- * xmlSAXParseFile:
- * @sax:  the SAX handler block
- * @filename:  the filename
- * @recovery:  work in recovery mode, i.e. tries to read no Well Formed
- *             documents
- *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.
- *
- * parse an XML file and build a tree. Automatic support for ZLIB/Compress
+ * 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.
  *
- * Returns the resulting document tree
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadFile.
+ *
+ * @param sax  the SAX handler block
+ * @param filename  the filename
+ * @param recovery  work in recovery mode, i.e. tries to read no Well Formed
+ *             documents
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
-xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
+xmlDoc *
+xmlSAXParseFile(xmlSAXHandler *sax, const char *filename,
                           int recovery) {
     return(xmlSAXParseFileWithData(sax,filename,recovery,NULL));
 }
 
 /**
- * xmlRecoverDoc:
- * @cur:  a pointer to an array of xmlChar
- *
- * DEPRECATED: Use xmlReadDoc with XML_PARSE_RECOVER.
- *
- * parse an XML in-memory document and build a tree.
+ * Parse an XML in-memory document and build a tree.
  * In the case the document is not Well Formed, a attempt to build a
  * tree is tried anyway
  *
- * Returns the resulting document tree or NULL in case of failure
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT | XML_PARSE_RECOVER.
+ *
+ * @deprecated Use #xmlReadDoc with XML_PARSE_RECOVER.
+ *
+ * @param cur  a pointer to an array of xmlChar
+ * @returns the resulting document tree or NULL in case of failure
  */
 
-xmlDocPtr
+xmlDoc *
 xmlRecoverDoc(const xmlChar *cur) {
     return(xmlSAXParseDoc(NULL, cur, 1));
 }
 
 /**
- * xmlParseFile:
- * @filename:  the filename
+ * Parse an XML file and build a tree. Automatic support for ZLIB/Compress
+ * compressed document is provided by default if found at compile-time.
  *
- * DEPRECATED: Use xmlReadFile.
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * parse an XML file and build a tree. Automatic support for ZLIB/Compress
- * compressed document is provided by default if found at compile-time.
+ * @deprecated Use #xmlReadFile.
  *
- * Returns the resulting document tree if the file was wellformed,
+ * @param filename  the filename
+ * @returns the resulting document tree if the file was wellformed,
  * NULL otherwise.
  */
 
-xmlDocPtr
+xmlDoc *
 xmlParseFile(const char *filename) {
     return(xmlSAXParseFile(NULL, filename, 0));
 }
 
 /**
- * xmlRecoverFile:
- * @filename:  the filename
- *
- * DEPRECATED: Use xmlReadFile with XML_PARSE_RECOVER.
- *
- * parse an XML file and build a tree. Automatic support for ZLIB/Compress
+ * 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, it attempts to build
  * a tree anyway
  *
- * Returns the resulting document tree or NULL in case of failure
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT | XML_PARSE_RECOVER.
+ *
+ * @deprecated Use #xmlReadFile with XML_PARSE_RECOVER.
+ *
+ * @param filename  the filename
+ * @returns the resulting document tree or NULL in case of failure
  */
 
-xmlDocPtr
+xmlDoc *
 xmlRecoverFile(const char *filename) {
     return(xmlSAXParseFile(NULL, filename, 1));
 }
 
 
 /**
- * xmlSetupParserForBuffer:
- * @ctxt:  an XML parser context
- * @buffer:  a xmlChar * buffer
- * @filename:  a file name
- *
- * DEPRECATED: Don't use.
- *
  * 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
+ *
+ * @deprecated Don't use.
+ *
+ * @param ctxt  an XML parser context
+ * @param buffer  a xmlChar * buffer
+ * @param filename  a file name
  */
 void
-xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const xmlChar* buffer,
+xmlSetupParserForBuffer(xmlParserCtxt *ctxt, const xmlChar* buffer,
                              const char* filename)
 {
     xmlParserInputPtr input;
@@ -12908,7 +12619,7 @@ xmlSetupParserForBuffer(xmlParserCtxtPtr
     if ((ctxt == NULL) || (buffer == NULL))
         return;
 
-    xmlClearParserCtxt(ctxt);
+    xmlCtxtReset(ctxt);
 
     input = xmlCtxtNewInputFromString(ctxt, filename, (const char *) buffer,
                                       NULL, 0);
@@ -12919,20 +12630,21 @@ xmlSetupParserForBuffer(xmlParserCtxtPtr
 }
 
 /**
- * xmlSAXUserParseFile:
- * @sax:  a SAX handler
- * @user_data:  The user data returned on SAX callbacks
- * @filename:  a file name
+ * Parse an XML file and call the given SAX handler routines.
+ * Automatic support for ZLIB/Compress compressed document is provided
  *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadFile.
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * parse an XML file and call the given SAX handler routines.
- * Automatic support for ZLIB/Compress compressed document is provided
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadFile.
  *
- * Returns 0 in case of success or a error number otherwise
+ * @param sax  a SAX handler
+ * @param user_data  The user data returned on SAX callbacks
+ * @param filename  a file name
+ * @returns 0 in case of success or a error number otherwise
  */
 int
-xmlSAXUserParseFile(xmlSAXHandlerPtr sax, void *user_data,
+xmlSAXUserParseFile(xmlSAXHandler *sax, void *user_data,
                     const char *filename) {
     int ret = 0;
     xmlParserCtxtPtr ctxt;
@@ -12976,16 +12688,14 @@ xmlSAXUserParseFile(xmlSAXHandlerPtr sax
  ************************************************************************/
 
 /**
- * xmlCreateMemoryParserCtxt:
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- *
  * Create a parser context for an XML in-memory document. The input buffer
  * must not contain a terminating null byte.
  *
- * Returns the new parser context or NULL
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlCreateMemoryParserCtxt(const char *buffer, int size) {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input;
@@ -13013,28 +12723,29 @@ xmlCreateMemoryParserCtxt(const char *bu
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlSAXParseMemoryWithData:
- * @sax:  the SAX handler block
- * @buffer:  an pointer to a char array
- * @size:  the size of the array
- * @recovery:  work in recovery mode, i.e. tries to read no Well Formed
- *             documents
- * @data:  the userdata
- *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.
- *
- * parse an XML in-memory block and use the given SAX function block
+ * 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.
  *
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadMemory.
+ *
  * User data (void *) is stored within the parser context in the
  * context's _private member, so it is available nearly everywhere in libxml
  *
- * Returns the resulting document tree
+ * @param sax  the SAX handler block
+ * @param buffer  an pointer to a char array
+ * @param size  the size of the array
+ * @param recovery  work in recovery mode, i.e. tries to read no Well Formed
+ *             documents
+ * @param data  the userdata
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
-xmlSAXParseMemoryWithData(xmlSAXHandlerPtr sax, const char *buffer,
+xmlDoc *
+xmlSAXParseMemoryWithData(xmlSAXHandler *sax, const char *buffer,
                           int size, int recovery, void *data) {
     xmlDocPtr ret = NULL;
     xmlParserCtxtPtr ctxt;
@@ -13066,75 +12777,79 @@ xmlSAXParseMemoryWithData(xmlSAXHandlerP
 }
 
 /**
- * xmlSAXParseMemory:
- * @sax:  the SAX handler block
- * @buffer:  an pointer to a char array
- * @size:  the size of the array
- * @recovery:  work in recovery mode, i.e. tries to read not Well Formed
- *             documents
- *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.
- *
- * parse an XML in-memory block and use the given SAX function block
+ * 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.
  *
- * Returns the resulting document tree
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadMemory.
+ *
+ * @param sax  the SAX handler block
+ * @param buffer  an pointer to a char array
+ * @param size  the size of the array
+ * @param recovery  work in recovery mode, i.e. tries to read not Well Formed
+ *             documents
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlSAXParseMemory(xmlSAXHandlerPtr sax, const char *buffer,
+xmlDoc *
+xmlSAXParseMemory(xmlSAXHandler *sax, const char *buffer,
 	          int size, int recovery) {
     return xmlSAXParseMemoryWithData(sax, buffer, size, recovery, NULL);
 }
 
 /**
- * xmlParseMemory:
- * @buffer:  an pointer to a char array
- * @size:  the size of the array
+ * Parse an XML in-memory block and build a tree.
  *
- * DEPRECATED: Use xmlReadMemory.
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * parse an XML in-memory block and build a tree.
+ * @deprecated Use #xmlReadMemory.
  *
- * Returns the resulting document tree
+ * @param buffer  an pointer to a char array
+ * @param size  the size of the array
+ * @returns the resulting document tree
  */
 
-xmlDocPtr xmlParseMemory(const char *buffer, int size) {
+xmlDoc *xmlParseMemory(const char *buffer, int size) {
    return(xmlSAXParseMemory(NULL, buffer, size, 0));
 }
 
 /**
- * xmlRecoverMemory:
- * @buffer:  an pointer to a char array
- * @size:  the size of the array
- *
- * DEPRECATED: Use xmlReadMemory with XML_PARSE_RECOVER.
- *
- * parse an XML in-memory block and build a tree.
+ * Parse an XML in-memory block and build a tree.
  * In the case the document is not Well Formed, an attempt to
  * build a tree is tried anyway
  *
- * Returns the resulting document tree or NULL in case of error
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT | XML_PARSE_RECOVER.
+ *
+ * @deprecated Use #xmlReadMemory with XML_PARSE_RECOVER.
+ *
+ * @param buffer  an pointer to a char array
+ * @param size  the size of the array
+ * @returns the resulting document tree or NULL in case of error
  */
 
-xmlDocPtr xmlRecoverMemory(const char *buffer, int size) {
+xmlDoc *xmlRecoverMemory(const char *buffer, int size) {
    return(xmlSAXParseMemory(NULL, buffer, size, 1));
 }
 
 /**
- * xmlSAXUserParseMemory:
- * @sax:  a SAX handler
- * @user_data:  The user data returned on SAX callbacks
- * @buffer:  an in-memory XML document input
- * @size:  the length of the XML document in bytes
+ * Parse an XML in-memory buffer and call the given SAX handler routines.
  *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadMemory.
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * parse an XML in-memory buffer and call the given SAX handler routines.
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadMemory.
  *
- * Returns 0 in case of success or a error number otherwise
+ * @param sax  a SAX handler
+ * @param user_data  The user data returned on SAX callbacks
+ * @param buffer  an in-memory XML document input
+ * @param size  the length of the XML document in bytes
+ * @returns 0 in case of success or a error number otherwise
  */
-int xmlSAXUserParseMemory(xmlSAXHandlerPtr sax, void *user_data,
+int xmlSAXUserParseMemory(xmlSAXHandler *sax, void *user_data,
 			  const char *buffer, int size) {
     int ret = 0;
     xmlParserCtxtPtr ctxt;
@@ -13172,14 +12887,12 @@ int xmlSAXUserParseMemory(xmlSAXHandlerP
 #endif /* LIBXML_SAX1_ENABLED */
 
 /**
- * xmlCreateDocParserCtxt:
- * @str:  a pointer to an array of xmlChar
- *
  * Creates a parser context for an XML in-memory document.
  *
- * Returns the new parser context or NULL
+ * @param str  a pointer to an array of xmlChar
+ * @returns the new parser context or NULL
  */
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlCreateDocParserCtxt(const xmlChar *str) {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr input;
@@ -13204,23 +12917,24 @@ xmlCreateDocParserCtxt(const xmlChar *st
 
 #ifdef LIBXML_SAX1_ENABLED
 /**
- * xmlSAXParseDoc:
- * @sax:  the SAX handler block
- * @cur:  a pointer to an array of xmlChar
- * @recovery:  work in recovery mode, i.e. tries to read no Well Formed
- *             documents
- *
- * DEPRECATED: Use xmlNewSAXParserCtxt and xmlCtxtReadDoc.
- *
- * parse an XML in-memory document and build a tree.
+ * 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.
  *
- * Returns the resulting document tree
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
+ *
+ * @deprecated Use #xmlNewSAXParserCtxt and #xmlCtxtReadDoc.
+ *
+ * @param sax  the SAX handler block
+ * @param cur  a pointer to an array of xmlChar
+ * @param recovery  work in recovery mode, i.e. tries to read no Well Formed
+ *             documents
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
-xmlSAXParseDoc(xmlSAXHandlerPtr sax, const xmlChar *cur, int recovery) {
+xmlDoc *
+xmlSAXParseDoc(xmlSAXHandler *sax, const xmlChar *cur, int recovery) {
     xmlDocPtr ret;
     xmlParserCtxtPtr ctxt;
     xmlSAXHandlerPtr oldsax = NULL;
@@ -13251,17 +12965,18 @@ xmlSAXParseDoc(xmlSAXHandlerPtr sax, con
 }
 
 /**
- * xmlParseDoc:
- * @cur:  a pointer to an array of xmlChar
+ * Parse an XML in-memory document and build a tree.
  *
- * DEPRECATED: Use xmlReadDoc.
+ * This function uses deprecated global variables to set parser options
+ * which default to XML_PARSE_NODICT.
  *
- * parse an XML in-memory document and build a tree.
+ * @deprecated Use #xmlReadDoc.
  *
- * Returns the resulting document tree
+ * @param cur  a pointer to an array of xmlChar
+ * @returns the resulting document tree
  */
 
-xmlDocPtr
+xmlDoc *
 xmlParseDoc(const xmlChar *cur) {
     return(xmlSAXParseDoc(NULL, cur, 0));
 }
@@ -13274,34 +12989,18 @@ xmlParseDoc(const xmlChar *cur) {
  ************************************************************************/
 
 /**
- * DICT_FREE:
- * @str:  a string
- *
- * Free a string if it is not owned by the "dict" dictionary in the
- * current scope
- */
-#define DICT_FREE(str)						\
-	if ((str) && ((!dict) ||				\
-	    (xmlDictOwns(dict, (const xmlChar *)(str)) == 0)))	\
-	    xmlFree((char *)(str));
-
-/**
- * xmlCtxtReset:
- * @ctxt: an XML parser context
- *
  * Reset a parser context
+ *
+ * @param ctxt  an XML parser context
  */
 void
-xmlCtxtReset(xmlParserCtxtPtr ctxt)
+xmlCtxtReset(xmlParserCtxt *ctxt)
 {
     xmlParserInputPtr input;
-    xmlDictPtr dict;
 
     if (ctxt == NULL)
         return;
 
-    dict = ctxt->dict;
-
     while ((input = xmlCtxtPopInput(ctxt)) != NULL) { /* Non consuming */
         xmlFreeInputStream(input);
     }
@@ -13326,15 +13025,22 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
     ctxt->nsNr = 0;
     xmlParserNsReset(ctxt->nsdb);
 
-    DICT_FREE(ctxt->version);
-    ctxt->version = NULL;
-    DICT_FREE(ctxt->encoding);
-    ctxt->encoding = NULL;
-    DICT_FREE(ctxt->extSubURI);
-    ctxt->extSubURI = NULL;
-    DICT_FREE(ctxt->extSubSystem);
-    ctxt->extSubSystem = NULL;
-
+    if (ctxt->version != NULL) {
+        xmlFree(ctxt->version);
+        ctxt->version = NULL;
+    }
+    if (ctxt->encoding != NULL) {
+        xmlFree(ctxt->encoding);
+        ctxt->encoding = NULL;
+    }
+    if (ctxt->extSubURI != NULL) {
+        xmlFree(ctxt->extSubURI);
+        ctxt->extSubURI = NULL;
+    }
+    if (ctxt->extSubSystem != NULL) {
+        xmlFree(ctxt->extSubSystem);
+        ctxt->extSubSystem = NULL;
+    }
     if (ctxt->directory != NULL) {
         xmlFree(ctxt->directory);
         ctxt->directory = NULL;
@@ -13347,7 +13053,7 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
     ctxt->standalone = -1;
     ctxt->hasExternalSubset = 0;
     ctxt->hasPErefs = 0;
-    ctxt->html = 0;
+    ctxt->html = ctxt->html ? 1 : 0;
     ctxt->instate = XML_PARSER_START;
 
     ctxt->wellFormed = 1;
@@ -13385,19 +13091,17 @@ xmlCtxtReset(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtResetPush:
- * @ctxt: an XML parser context
- * @chunk:  a pointer to an array of chars
- * @size:  number of chars in the array
- * @filename:  an optional file name or URI
- * @encoding:  the document encoding, or NULL
- *
  * Reset a push parser context
  *
- * Returns 0 in case of success and 1 in case of error
+ * @param ctxt  an XML parser context
+ * @param chunk  a pointer to an array of chars
+ * @param size  number of chars in the array
+ * @param filename  an optional file name or URI
+ * @param encoding  the document encoding, or NULL
+ * @returns 0 in case of success and 1 in case of error
  */
 int
-xmlCtxtResetPush(xmlParserCtxtPtr ctxt, const char *chunk,
+xmlCtxtResetPush(xmlParserCtxt *ctxt, const char *chunk,
                  int size, const char *filename, const char *encoding)
 {
     xmlParserInputPtr input;
@@ -13484,196 +13188,30 @@ xmlCtxtSetOptionsInternal(xmlParserCtxtP
     ctxt->replaceEntities = (options & XML_PARSE_NOENT) ? 1 : 0;
     ctxt->loadsubset = (options & XML_PARSE_DTDLOAD) ? XML_DETECT_IDS : 0;
     ctxt->loadsubset |= (options & XML_PARSE_DTDATTR) ? XML_COMPLETE_ATTRS : 0;
+    ctxt->loadsubset |= (options & XML_PARSE_SKIP_IDS) ? XML_SKIP_IDS : 0;
     ctxt->validate = (options & XML_PARSE_DTDVALID) ? 1 : 0;
     ctxt->pedantic = (options & XML_PARSE_PEDANTIC) ? 1 : 0;
     ctxt->keepBlanks = (options & XML_PARSE_NOBLANKS) ? 0 : 1;
     ctxt->dictNames = (options & XML_PARSE_NODICT) ? 0 : 1;
 
-    if (options & XML_PARSE_HUGE) {
-        if (ctxt->dict != NULL)
-            xmlDictSetLimit(ctxt->dict, 0);
-    }
-
-    ctxt->linenumbers = 1;
-
     return(options & ~allMask);
 }
 
 /**
- * xmlCtxtSetOptions:
- * @ctxt: an XML parser context
- * @options:  a bitmask of xmlParserOption values
- *
  * Applies the options to the parser context. Unset options are
  * cleared.
  *
- * Available since 2.13.0. With older versions, you can use
- * xmlCtxtUseOptions.
- *
- * XML_PARSE_RECOVER
- *
- * Enable "recovery" mode which allows non-wellformed documents.
- * How this mode behaves exactly is unspecified and may change
- * without further notice. Use of this feature is DISCOURAGED.
- *
- * Not supported by the push parser.
- *
- * XML_PARSE_NOENT
- *
- * Despite the confusing name, this option enables substitution
- * of entities. The resulting tree won't contain any entity
- * reference nodes.
- *
- * This option also enables loading of external entities (both
- * general and parameter entities) which is dangerous. If you
- * process untrusted data, it's recommended to set the
- * XML_PARSE_NO_XXE option to disable loading of external
- * entities.
- *
- * XML_PARSE_DTDLOAD
- *
- * Enables loading of an external DTD and the loading and
- * substitution of external parameter entities. Has no effect
- * if XML_PARSE_NO_XXE is set.
- *
- * XML_PARSE_DTDATTR
- *
- * Adds default attributes from the DTD to the result document.
- *
- * Implies XML_PARSE_DTDLOAD, but loading of external content
- * can be disabled with XML_PARSE_NO_XXE.
- *
- * XML_PARSE_DTDVALID
- *
- * This option enables DTD validation which requires to load
- * external DTDs and external entities (both general and
- * parameter entities) unless XML_PARSE_NO_XXE was set.
- *
- * XML_PARSE_NO_XXE
- *
- * Disables loading of external DTDs or entities.
- *
- * Available since 2.13.0.
- *
- * XML_PARSE_NOERROR
- *
- * Disable error and warning reports to the error handlers.
- * Errors are still accessible with xmlCtxtGetLastError.
- *
- * XML_PARSE_NOWARNING
- *
- * Disable warning reports.
- *
- * XML_PARSE_PEDANTIC
- *
- * Enable some pedantic warnings.
- *
- * XML_PARSE_NOBLANKS
- *
- * Remove some whitespace from the result document. Where to
- * remove whitespace depends on DTD element declarations or a
- * broken heuristic with unfixable bugs. Use of this option is
- * DISCOURAGED.
- *
- * Not supported by the push parser.
- *
- * XML_PARSE_SAX1
- *
- * Always invoke the deprecated SAX1 startElement and endElement
- * handlers. This option is DEPRECATED.
- *
- * XML_PARSE_NONET
- *
- * Disable network access with the builtin HTTP client.
- *
- * XML_PARSE_NODICT
- *
- * Create a document without interned strings, making all
- * strings separate memory allocations.
- *
- * XML_PARSE_NSCLEAN
- *
- * Remove redundant namespace declarations from the result
- * document.
+ * @since 2.13.0
  *
- * XML_PARSE_NOCDATA
+ * With older versions, you can use #xmlCtxtUseOptions.
  *
- * Output normal text nodes instead of CDATA nodes.
- *
- * XML_PARSE_COMPACT
- *
- * Store small strings directly in the node struct to save
- * memory.
- *
- * XML_PARSE_OLD10
- *
- * Use old Name productions from before XML 1.0 Fifth Edition.
- * This options is DEPRECATED.
- *
- * XML_PARSE_HUGE
- *
- * Relax some internal limits.
- *
- * Maximum size of text nodes, tags, comments, processing instructions,
- * CDATA sections, entity values
- *
- * normal: 10M
- * huge:    1B
- *
- * Maximum size of names, system literals, pubid literals
- *
- * normal: 50K
- * huge:   10M
- *
- * Maximum nesting depth of elements
- *
- * normal:  256
- * huge:   2048
- *
- * Maximum nesting depth of entities
- *
- * normal: 20
- * huge:   40
- *
- * XML_PARSE_OLDSAX
- *
- * Enable an unspecified legacy mode for SAX parsers. This
- * option is DEPRECATED.
- *
- * XML_PARSE_IGNORE_ENC
- *
- * Ignore the encoding in the XML declaration. This option is
- * mostly unneeded these days. The only effect is to enforce
- * UTF-8 decoding of ASCII-like data.
- *
- * XML_PARSE_BIG_LINES
- *
- * Enable reporting of line numbers larger than 65535.
- *
- * XML_PARSE_UNZIP
- *
- * Enable input decompression. Setting this option is discouraged
- * to avoid zip bombs.
- *
- * Available since 2.14.0.
- *
- * XML_PARSE_NO_SYS_CATALOG
- *
- * Disables the global system XML catalog.
- *
- * Available since 2.14.0.
- *
- * XML_PARSE_CATALOG_PI
- *
- * Enable XML catalog processing instructions.
- *
- * Available since 2.14.0.
- *
- * Returns 0 in case of success, the set of unknown or unimplemented options
+ * @param ctxt  an XML parser context
+ * @param options  a bitmask of xmlParserOption values
+ * @returns 0 in case of success, the set of unknown or unimplemented options
  *         in case of error.
  */
 int
-xmlCtxtSetOptions(xmlParserCtxtPtr ctxt, int options)
+xmlCtxtSetOptions(xmlParserCtxt *ctxt, int options)
 {
 #ifdef LIBXML_HTML_ENABLED
     if ((ctxt != NULL) && (ctxt->html))
@@ -13684,17 +13222,15 @@ xmlCtxtSetOptions(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtGetOptions:
- * @ctxt: an XML parser context
- *
  * Get the current options of the parser context.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the current options set in the parser context, or -1 if ctxt is NULL.
+ * @param ctxt  an XML parser context
+ * @returns the current options set in the parser context, or -1 if ctxt is NULL.
  */
 int
-xmlCtxtGetOptions(xmlParserCtxtPtr ctxt)
+xmlCtxtGetOptions(xmlParserCtxt *ctxt)
 {
     if (ctxt == NULL)
         return(-1);
@@ -13703,32 +13239,30 @@ xmlCtxtGetOptions(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtUseOptions:
- * @ctxt: an XML parser context
- * @options:  a combination of xmlParserOption
- *
- * DEPRECATED: Use xmlCtxtSetOptions.
- *
  * Applies the options to the parser context. The following options
  * are never cleared and can only be enabled:
  *
- * XML_PARSE_NOERROR
- * XML_PARSE_NOWARNING
- * XML_PARSE_NONET
- * XML_PARSE_NSCLEAN
- * XML_PARSE_NOCDATA
- * XML_PARSE_COMPACT
- * XML_PARSE_OLD10
- * XML_PARSE_HUGE
- * XML_PARSE_OLDSAX
- * XML_PARSE_IGNORE_ENC
- * XML_PARSE_BIG_LINES
- *
- * Returns 0 in case of success, the set of unknown or unimplemented options
+ * - XML_PARSE_NOERROR
+ * - XML_PARSE_NOWARNING
+ * - XML_PARSE_NONET
+ * - XML_PARSE_NSCLEAN
+ * - XML_PARSE_NOCDATA
+ * - XML_PARSE_COMPACT
+ * - XML_PARSE_OLD10
+ * - XML_PARSE_HUGE
+ * - XML_PARSE_OLDSAX
+ * - XML_PARSE_IGNORE_ENC
+ * - XML_PARSE_BIG_LINES
+ *
+ * @deprecated Use #xmlCtxtSetOptions.
+ *
+ * @param ctxt  an XML parser context
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success, the set of unknown or unimplemented options
  *         in case of error.
  */
 int
-xmlCtxtUseOptions(xmlParserCtxtPtr ctxt, int options)
+xmlCtxtUseOptions(xmlParserCtxt *ctxt, int options)
 {
     int keepMask;
 
@@ -13756,10 +13290,6 @@ xmlCtxtUseOptions(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtSetMaxAmplification:
- * @ctxt: an XML parser context
- * @maxAmpl:  maximum amplification factor
- *
  * To protect against exponential entity expansion ("billion laughs"), the
  * size of serialized output is (roughly) limited to the input size
  * multiplied by this factor. The default value is 5.
@@ -13767,27 +13297,30 @@ xmlCtxtUseOptions(xmlParserCtxtPtr ctxt,
  * When working with documents making heavy use of entity expansion, it can
  * be necessary to increase the value. For security reasons, this should only
  * be considered when processing trusted input.
+ *
+ * @param ctxt  an XML parser context
+ * @param maxAmpl  maximum amplification factor
  */
 void
-xmlCtxtSetMaxAmplification(xmlParserCtxtPtr ctxt, unsigned maxAmpl)
+xmlCtxtSetMaxAmplification(xmlParserCtxt *ctxt, unsigned maxAmpl)
 {
+    if (ctxt == NULL)
+        return;
     ctxt->maxAmpl = maxAmpl;
 }
 
 /**
- * xmlCtxtParseDocument:
- * @ctxt:  an XML parser context
- * @input:  parser input
- *
  * Parse an XML document and return the resulting document tree.
  * Takes ownership of the input object.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns the resulting document tree or NULL
+ * @param ctxt  an XML parser context
+ * @param input  parser input
+ * @returns the resulting document tree or NULL
  */
-xmlDocPtr
-xmlCtxtParseDocument(xmlParserCtxtPtr ctxt, xmlParserInputPtr input)
+xmlDoc *
+xmlCtxtParseDocument(xmlParserCtxt *ctxt, xmlParserInput *input)
 {
     xmlDocPtr ret = NULL;
 
@@ -13818,20 +13351,18 @@ xmlCtxtParseDocument(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlReadDoc:
- * @cur:  a pointer to a zero terminated string
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Convenience function to parse an XML document from a
  * zero-terminated string.
  *
- * See xmlCtxtReadDoc for details.
+ * See #xmlCtxtReadDoc for details.
  *
- * Returns the resulting document tree
+ * @param cur  a pointer to a zero terminated string
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
+xmlDoc *
 xmlReadDoc(const xmlChar *cur, const char *URL, const char *encoding,
            int options)
 {
@@ -13856,24 +13387,21 @@ xmlReadDoc(const xmlChar *cur, const cha
 }
 
 /**
- * xmlReadFile:
- * @filename:  a file or URL
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
- * Convenience function to parse an XML file from the filesystem,
- * the network or a global user-define resource loader.
+ * Convenience function to parse an XML file from the filesystem
+ * or a global, user-defined resource loader.
  *
- * This function always enables the XML_PARSE_UNZIP option for
- * backward compatibility. If a "-" filename is passed, it will
- * read from stdin. Both of these features are potentially
- * insecure and might be removed from later versions.
+ * If a "-" filename is passed, the function will read from stdin.
+ * This feature is potentially insecure and might be removed from
+ * later versions.
  *
- * See xmlCtxtReadFile for details.
+ * See #xmlCtxtReadFile for details.
  *
- * Returns the resulting document tree
+ * @param filename  a file or URL
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
+xmlDoc *
 xmlReadFile(const char *filename, const char *encoding, int options)
 {
     xmlParserCtxtPtr ctxt;
@@ -13884,8 +13412,6 @@ xmlReadFile(const char *filename, const
     if (ctxt == NULL)
         return(NULL);
 
-    options |= XML_PARSE_UNZIP;
-
     xmlCtxtUseOptions(ctxt, options);
 
     /*
@@ -13907,21 +13433,19 @@ xmlReadFile(const char *filename, const
 }
 
 /**
- * xmlReadMemory:
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @url:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML in-memory document and build a tree. The input buffer must
  * not contain a terminating null byte.
  *
- * See xmlCtxtReadMemory for details.
+ * See #xmlCtxtReadMemory for details.
  *
- * Returns the resulting document tree
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param url  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
+xmlDoc *
 xmlReadMemory(const char *buffer, int size, const char *url,
               const char *encoding, int options)
 {
@@ -13949,22 +13473,20 @@ xmlReadMemory(const char *buffer, int si
 }
 
 /**
- * xmlReadFd:
- * @fd:  an open file descriptor
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML from a file descriptor and build a tree.
  *
- * See xmlCtxtReadFd for details.
+ * See #xmlCtxtReadFd for details.
  *
  * NOTE that the file descriptor will not be closed when the
  * context is freed or reset.
  *
- * Returns the resulting document tree
+ * @param fd  an open file descriptor
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
+xmlDoc *
 xmlReadFd(int fd, const char *URL, const char *encoding, int options)
 {
     xmlParserCtxtPtr ctxt;
@@ -13987,21 +13509,19 @@ xmlReadFd(int fd, const char *URL, const
 }
 
 /**
- * xmlReadIO:
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function (optional)
- * @ioctx:  an I/O handler
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML document from I/O functions and context and build a tree.
  *
- * See xmlCtxtReadIO for details.
+ * See #xmlCtxtReadIO for details.
  *
- * Returns the resulting document tree
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function (optional)
+ * @param ioctx  an I/O handler
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
+xmlDoc *
 xmlReadIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
           void *ioctx, const char *URL, const char *encoding, int options)
 {
@@ -14026,24 +13546,20 @@ xmlReadIO(xmlInputReadCallback ioread, x
 }
 
 /**
- * xmlCtxtReadDoc:
- * @ctxt:  an XML parser context
- * @str:  a pointer to a zero terminated string
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML in-memory document and build a tree.
  *
- * @URL is used as base to resolve external entities and for error
+ * `URL` is used as base to resolve external entities and for error
  * reporting.
  *
- * See xmlCtxtUseOptions for details.
- *
- * Returns the resulting document tree
+ * @param ctxt  an XML parser context
+ * @param str  a pointer to a zero terminated string
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlCtxtReadDoc(xmlParserCtxtPtr ctxt, const xmlChar *str,
+xmlDoc *
+xmlCtxtReadDoc(xmlParserCtxt *ctxt, const xmlChar *str,
                const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -14063,23 +13579,17 @@ xmlCtxtReadDoc(xmlParserCtxtPtr ctxt, co
 }
 
 /**
- * xmlCtxtReadFile:
- * @ctxt:  an XML parser context
- * @filename:  a file or URL
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
- * Parse an XML file from the filesystem, the network or a user-defined
+ * Parse an XML file from the filesystem or a global, user-defined
  * resource loader.
  *
- * This function always enables the XML_PARSE_UNZIP option for
- * backward compatibility. This feature is potentially insecure
- * and might be removed from later versions.
- *
- * Returns the resulting document tree
+ * @param ctxt  an XML parser context
+ * @param filename  a file or URL
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlCtxtReadFile(xmlParserCtxtPtr ctxt, const char *filename,
+xmlDoc *
+xmlCtxtReadFile(xmlParserCtxt *ctxt, const char *filename,
                 const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -14087,8 +13597,6 @@ xmlCtxtReadFile(xmlParserCtxtPtr ctxt, c
     if (ctxt == NULL)
         return(NULL);
 
-    options |= XML_PARSE_UNZIP;
-
     xmlCtxtReset(ctxt);
     xmlCtxtUseOptions(ctxt, options);
 
@@ -14100,26 +13608,22 @@ xmlCtxtReadFile(xmlParserCtxtPtr ctxt, c
 }
 
 /**
- * xmlCtxtReadMemory:
- * @ctxt:  an XML parser context
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML in-memory document and build a tree. The input buffer must
  * not contain a terminating null byte.
  *
- * @URL is used as base to resolve external entities and for error
+ * `URL` is used as base to resolve external entities and for error
  * reporting.
  *
- * See xmlCtxtUseOptions for details.
- *
- * Returns the resulting document tree
+ * @param ctxt  an XML parser context
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlCtxtReadMemory(xmlParserCtxtPtr ctxt, const char *buffer, int size,
+xmlDoc *
+xmlCtxtReadMemory(xmlParserCtxt *ctxt, const char *buffer, int size,
                   const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -14139,27 +13643,23 @@ xmlCtxtReadMemory(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtReadFd:
- * @ctxt:  an XML parser context
- * @fd:  an open file descriptor
- * @URL:  base URL (optional)
- * @encoding:  the document encoding (optional)
- * @options:  a combination of xmlParserOption
- *
  * Parse an XML document from a file descriptor and build a tree.
  *
  * NOTE that the file descriptor will not be closed when the
  * context is freed or reset.
  *
- * @URL is used as base to resolve external entities and for error
+ * `URL` is used as base to resolve external entities and for error
  * reporting.
  *
- * See xmlCtxtUseOptions for details.
- *
- * Returns the resulting document tree
+ * @param ctxt  an XML parser context
+ * @param fd  an open file descriptor
+ * @param URL  base URL (optional)
+ * @param encoding  the document encoding (optional)
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlCtxtReadFd(xmlParserCtxtPtr ctxt, int fd,
+xmlDoc *
+xmlCtxtReadFd(xmlParserCtxt *ctxt, int fd,
               const char *URL, const char *encoding, int options)
 {
     xmlParserInputPtr input;
@@ -14178,27 +13678,23 @@ xmlCtxtReadFd(xmlParserCtxtPtr ctxt, int
 }
 
 /**
- * xmlCtxtReadIO:
- * @ctxt:  an XML parser context
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
- * parse an XML document from I/O functions and source and build a tree.
- * This reuses the existing @ctxt parser context
+ * Parse an XML document from I/O functions and source and build a tree.
+ * This reuses the existing `ctxt` parser context
  *
- * @URL is used as base to resolve external entities and for error
+ * `URL` is used as base to resolve external entities and for error
  * reporting.
  *
- * See xmlCtxtUseOptions for details.
- *
- * Returns the resulting document tree
+ * @param ctxt  an XML parser context
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the resulting document tree
  */
-xmlDocPtr
-xmlCtxtReadIO(xmlParserCtxtPtr ctxt, xmlInputReadCallback ioread,
+xmlDoc *
+xmlCtxtReadIO(xmlParserCtxt *ctxt, xmlInputReadCallback ioread,
               xmlInputCloseCallback ioclose, void *ioctx,
 	      const char *URL,
               const char *encoding, int options)
diff -pruN 2.14.6+dfsg-0.1/parserInternals.c 2.15.0+dfsg-0.3/parserInternals.c
--- 2.14.6+dfsg-0.1/parserInternals.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/parserInternals.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -35,7 +35,6 @@
 #include <libxml/catalog.h>
 #endif
 #include <libxml/chvalid.h>
-#include <libxml/nanohttp.h>
 
 #define CUR(ctxt) ctxt->input->cur
 #define END(ctxt) ctxt->input->end
@@ -43,6 +42,7 @@
 #include "private/buf.h"
 #include "private/enc.h"
 #include "private/error.h"
+#include "private/globals.h"
 #include "private/io.h"
 #include "private/memory.h"
 #include "private/parser.h"
@@ -64,10 +64,9 @@
  */
 
 /**
- * xmlCheckVersion:
- * @version: the include version number
- *
  * check the compiled lib version against the include one.
+ *
+ * @param version  the include version number
  */
 void
 xmlCheckVersion(int version) {
@@ -95,29 +94,30 @@ xmlCheckVersion(int version) {
 
 
 /**
- * xmlCtxtSetErrorHandler:
- * @ctxt:  an XML parser context
- * @handler:  error handler
- * @data:  data for error handler
- *
  * Register a callback function that will be called on errors and
  * warnings. If handler is NULL, the error handler will be deactivated.
  *
+ * If you only want to disable parser errors being printed to
+ * stderr, use xmlParserOption XML_PARSE_NOERROR.
+ *
  * This is the recommended way to collect errors from the parser and
  * takes precedence over all other error reporting mechanisms.
  * These are (in order of precedence):
  *
- * - per-context structured handler (xmlCtxtSetErrorHandler)
+ * - per-context structured handler (#xmlCtxtSetErrorHandler)
  * - per-context structured "serror" SAX handler
- * - global structured handler (xmlSetStructuredErrorFunc)
+ * - global structured handler (#xmlSetStructuredErrorFunc)
  * - per-context generic "error" and "warning" SAX handlers
- * - global generic handler (xmlSetGenericErrorFunc)
+ * - global generic handler (#xmlSetGenericErrorFunc)
  * - print to stderr
  *
- * Available since 2.13.0.
+ * @since 2.13.0
+ * @param ctxt  an XML parser context
+ * @param handler  error handler
+ * @param data  data for error handler
  */
 void
-xmlCtxtSetErrorHandler(xmlParserCtxtPtr ctxt, xmlStructuredErrorFunc handler,
+xmlCtxtSetErrorHandler(xmlParserCtxt *ctxt, xmlStructuredErrorFunc handler,
                        void *data)
 {
     if (ctxt == NULL)
@@ -127,12 +127,15 @@ xmlCtxtSetErrorHandler(xmlParserCtxtPtr
 }
 
 /**
- * xmlCtxtGetLastError:
- * @ctx:  an XML parser context
+ * Get the last error raised.
  *
- * Get the last parsing error registered.
+ * Note that the XML parser typically doesn't stop after
+ * encountering an error and will often report multiple errors.
+ * Most of the time, the last error isn't useful. Future
+ * versions might return the first parser error instead.
  *
- * Returns NULL if no error occurred or a pointer to the error
+ * @param ctx  an XML parser context
+ * @returns NULL if no error occurred or a pointer to the error
  */
 const xmlError *
 xmlCtxtGetLastError(void *ctx)
@@ -147,11 +150,10 @@ xmlCtxtGetLastError(void *ctx)
 }
 
 /**
- * xmlCtxtResetLastError:
- * @ctx:  an XML parser context
+ * Reset the last parser error to success. This does not change
+ * the well-formedness status.
  *
- * Cleanup the last global error registered. For parsing error
- * this does not change the well-formedness result.
+ * @param ctx  an XML parser context
  */
 void
 xmlCtxtResetLastError(void *ctx)
@@ -167,15 +169,13 @@ xmlCtxtResetLastError(void *ctx)
 }
 
 /**
- * xmlCtxtErrMemory:
- * @ctxt:  an XML parser context
- *
  * Handle an out-of-memory error.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
+ * @param ctxt  an XML parser context
  */
 void
-xmlCtxtErrMemory(xmlParserCtxtPtr ctxt)
+xmlCtxtErrMemory(xmlParserCtxt *ctxt)
 {
     xmlStructuredErrorFunc schannel = NULL;
     xmlGenericErrorFunc channel = NULL;
@@ -208,17 +208,16 @@ xmlCtxtErrMemory(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtErrIO:
- * @ctxt:  parser context
- * @code:  xmlParserErrors code
- * @uri:  filename or URI (optional)
- *
  * If filename is empty, use the one from context input if available.
  *
  * Report an IO error to the parser context.
+ *
+ * @param ctxt  parser context
+ * @param code  xmlParserErrors code
+ * @param uri  filename or URI (optional)
  */
 void
-xmlCtxtErrIO(xmlParserCtxtPtr ctxt, int code, const char *uri)
+xmlCtxtErrIO(xmlParserCtxt *ctxt, int code, const char *uri)
 {
     const char *errstr, *msg, *str1, *str2;
     xmlErrorLevel level;
@@ -262,13 +261,11 @@ xmlCtxtErrIO(xmlParserCtxtPtr ctxt, int
 }
 
 /**
- * xmlCtxtIsCatastrophicError:
- * @ctxt:  parser context
- *
- * Returns true if the last error is catastrophic.
+ * @param ctxt  parser context
+ * @returns true if the last error is catastrophic.
  */
 int
-xmlCtxtIsCatastrophicError(xmlParserCtxtPtr ctxt) {
+xmlCtxtIsCatastrophicError(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(1);
 
@@ -277,23 +274,22 @@ xmlCtxtIsCatastrophicError(xmlParserCtxt
 }
 
 /**
- * xmlCtxtVErr:
- * @ctxt:  a parser context
- * @node: the current node or NULL
- * @domain: the domain for the error
- * @code: the code for the error
- * @level: the xmlErrorLevel for the error
- * @str1: extra string info
- * @str2: extra string info
- * @str3: extra string info
- * @int1: extra int info
- * @msg:  the message to display/transmit
- * @ap:  extra parameters for the message display
- *
  * Raise a parser error.
+ *
+ * @param ctxt  a parser context
+ * @param node  the current node or NULL
+ * @param domain  the domain for the error
+ * @param code  the code for the error
+ * @param level  the xmlErrorLevel for the error
+ * @param str1  extra string info
+ * @param str2  extra string info
+ * @param str3  extra string info
+ * @param int1  extra int info
+ * @param msg  the message to display/transmit
+ * @param ap  extra parameters for the message display
  */
 void
-xmlCtxtVErr(xmlParserCtxtPtr ctxt, xmlNodePtr node, xmlErrorDomain domain,
+xmlCtxtVErr(xmlParserCtxt *ctxt, xmlNode *node, xmlErrorDomain domain,
             xmlParserErrors code, xmlErrorLevel level,
             const xmlChar *str1, const xmlChar *str2, const xmlChar *str3,
             int int1, const char *msg, va_list ap)
@@ -334,11 +330,31 @@ xmlCtxtVErr(xmlParserCtxtPtr ctxt, xmlNo
             return;
         ctxt->nbWarnings += 1;
     } else {
-        /* Report at least one fatal error. */
-        if ((ctxt->nbErrors >= XML_MAX_ERRORS) &&
-            ((level < XML_ERR_FATAL) || (ctxt->wellFormed == 0)) &&
-            (!xmlIsCatastrophicError(level, code)))
-            return;
+        /*
+         * By long-standing design, the parser isn't completely
+         * stopped on well-formedness errors. Only SAX callbacks
+         * are disabled.
+         *
+         * In some situations, we really want to abort as fast
+         * as possible.
+         */
+        if (xmlIsCatastrophicError(level, code) ||
+            code == XML_ERR_RESOURCE_LIMIT ||
+            code == XML_ERR_ENTITY_LOOP) {
+            ctxt->disableSAX = 2; /* really stop parser */
+        } else {
+            /* Report at least one fatal error. */
+            if (ctxt->nbErrors >= XML_MAX_ERRORS &&
+                (level < XML_ERR_FATAL || ctxt->wellFormed == 0))
+                return;
+
+            if (level == XML_ERR_FATAL && ctxt->recovery == 0)
+                ctxt->disableSAX = 1;
+        }
+
+        if (level == XML_ERR_FATAL)
+            ctxt->wellFormed = 0;
+        ctxt->errNo = code;
         ctxt->nbErrors += 1;
     }
 
@@ -388,37 +404,25 @@ xmlCtxtVErr(xmlParserCtxtPtr ctxt, xmlNo
         xmlCtxtErrMemory(ctxt);
         return;
     }
-
-    if (level >= XML_ERR_ERROR)
-        ctxt->errNo = code;
-    if (level == XML_ERR_FATAL) {
-        ctxt->wellFormed = 0;
-
-        if (xmlCtxtIsCatastrophicError(ctxt))
-            ctxt->disableSAX = 2; /* stop parser */
-        else if (ctxt->recovery == 0)
-            ctxt->disableSAX = 1;
-    }
 }
 
 /**
- * xmlCtxtErr:
- * @ctxt:  a parser context
- * @node: the current node or NULL
- * @domain: the domain for the error
- * @code: the code for the error
- * @level: the xmlErrorLevel for the error
- * @str1: extra string info
- * @str2: extra string info
- * @str3: extra string info
- * @int1: extra int info
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Raise a parser error.
+ *
+ * @param ctxt  a parser context
+ * @param node  the current node or NULL
+ * @param domain  the domain for the error
+ * @param code  the code for the error
+ * @param level  the xmlErrorLevel for the error
+ * @param str1  extra string info
+ * @param str2  extra string info
+ * @param str3  extra string info
+ * @param int1  extra int info
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 void
-xmlCtxtErr(xmlParserCtxtPtr ctxt, xmlNodePtr node, xmlErrorDomain domain,
+xmlCtxtErr(xmlParserCtxt *ctxt, xmlNode *node, xmlErrorDomain domain,
            xmlParserErrors code, xmlErrorLevel level,
            const xmlChar *str1, const xmlChar *str2, const xmlChar *str3,
            int int1, const char *msg, ...)
@@ -432,16 +436,14 @@ xmlCtxtErr(xmlParserCtxtPtr ctxt, xmlNod
 }
 
 /**
- * xmlCtxtGetStatus:
- * @ctxt:  an XML parser context
- *
  * Get well-formedness and validation status after parsing. Also
  * reports catastrophic errors which are not related to parsing
  * like out-of-memory, I/O or other errors.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a bitmask of XML_STATUS_* flags ORed together.
+ * @param ctxt  an XML parser context
+ * @returns a bitmask of XML_STATUS_* flags ORed together.
  */
 xmlParserStatus
 xmlCtxtGetStatus(xmlParserCtxt *ctxt) {
@@ -468,40 +470,115 @@ xmlCtxtGetStatus(xmlParserCtxt *ctxt) {
 }
 
 /**
- * xmlFatalErr:
- * @ctxt:  an XML parser context
- * @code:  the error number
- * @info:  extra information string
- *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ *
+ * @param ctxt  an XML parser context
+ * @param code  the error number
+ * @param info  extra information string
  */
 void
-xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors code, const char *info)
+xmlFatalErr(xmlParserCtxt *ctxt, xmlParserErrors code, const char *info)
 {
     const char *errmsg;
+    xmlErrorDomain domain = XML_FROM_PARSER;
+    xmlErrorLevel level = XML_ERR_FATAL;
 
     errmsg = xmlErrString(code);
 
+    if ((ctxt != NULL) && (ctxt->html)) {
+        domain = XML_FROM_HTML;
+
+        /* Continue if encoding is unsupported */
+        if (code == XML_ERR_UNSUPPORTED_ENCODING)
+            level = XML_ERR_ERROR;
+    }
+
     if (info == NULL) {
-        xmlCtxtErr(ctxt, NULL, XML_FROM_PARSER, code, XML_ERR_FATAL,
+        xmlCtxtErr(ctxt, NULL, domain, code, level,
                    NULL, NULL, NULL, 0, "%s\n", errmsg);
     } else {
-        xmlCtxtErr(ctxt, NULL, XML_FROM_PARSER, code, XML_ERR_FATAL,
+        xmlCtxtErr(ctxt, NULL, domain, code, level,
                    (const xmlChar *) info, NULL, NULL, 0,
                    "%s: %s\n", errmsg, info);
     }
 }
 
 /**
- * xmlIsLetter:
- * @c:  an unicode character (int)
- *
- * DEPRECATED: Internal function, don't use.
+ * Return window into current parser data.
  *
+ * @param input  parser input
+ * @param startOut  start of window (output)
+ * @param sizeInOut  maximum size of window (in)
+ *                   actual size of window (out)
+ * @param offsetOut  offset of current position inside
+ *                   window (out)
+ */
+void
+xmlParserInputGetWindow(xmlParserInput *input, const xmlChar **startOut,
+                        int *sizeInOut, int *offsetOut) {
+    const xmlChar *cur, *base, *start;
+    int n, col;
+    int size = *sizeInOut;
+
+    cur = input->cur;
+    base = input->base;
+    /* skip backwards over any end-of-lines */
+    while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
+	cur--;
+    }
+    n = 0;
+    /* search backwards for beginning-of-line (to max buff size) */
+    while ((n < size) && (cur > base) &&
+	   (*cur != '\n') && (*cur != '\r')) {
+        cur--;
+        n++;
+    }
+    if ((n > 0) && ((*cur == '\n') || (*cur == '\r'))) {
+        cur++;
+    } else {
+        /* skip over continuation bytes */
+        while ((cur < input->cur) && ((*cur & 0xC0) == 0x80))
+            cur++;
+    }
+    /* calculate the error position in terms of the current position */
+    col = input->cur - cur;
+    /* search forward for end-of-line (to max buff size) */
+    n = 0;
+    start = cur;
+    /* copy selected text to our buffer */
+    while ((*cur != 0) && (*(cur) != '\n') && (*(cur) != '\r')) {
+        int len = input->end - cur;
+        int c = xmlGetUTF8Char(cur, &len);
+
+        if ((c < 0) || (n + len > size))
+            break;
+        cur += len;
+	n += len;
+    }
+
+    /*
+     * col can only point to the end of the buffer if
+     * there's space for a marker.
+     */
+    if (col >= n)
+        col = n < size ? n : size - 1;
+
+    *startOut = start;
+    *sizeInOut = n;
+    *offsetOut = col;
+}
+
+/**
  * Check whether the character is allowed by the production
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * ```
  * [84] Letter ::= BaseChar | Ideographic
+ * ```
  *
- * Returns 0 if not, non-zero otherwise
+ * @param c  an unicode character (int)
+ * @returns 0 if not, non-zero otherwise
  */
 int
 xmlIsLetter(int c) {
@@ -518,44 +595,25 @@ xmlIsLetter(int c) {
 #define LINE_LEN        80
 
 /**
- * xmlHaltParser:
- * @ctxt:  an XML parser context
- *
- * Blocks further parser processing don't override error
- * for internal use
- */
-void
-xmlHaltParser(xmlParserCtxtPtr ctxt) {
-    if (ctxt == NULL)
-        return;
-    ctxt->instate = XML_PARSER_EOF; /* TODO: Remove after refactoring */
-    ctxt->disableSAX = 2;
-}
-
-/**
- * xmlParserInputRead:
- * @in:  an XML parser input
- * @len:  an indicative size for the lookahead
- *
- * DEPRECATED: This function was internal and is deprecated.
+ * @deprecated This function was internal and is deprecated.
  *
- * Returns -1 as this is an error to use it.
+ * @param in  an XML parser input
+ * @param len  an indicative size for the lookahead
+ * @returns -1 as this is an error to use it.
  */
 int
-xmlParserInputRead(xmlParserInputPtr in ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED) {
+xmlParserInputRead(xmlParserInput *in ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED) {
     return(-1);
 }
 
 /**
- * xmlParserGrow:
- * @ctxt:  an XML parser context
- *
  * Grow the input buffer.
  *
- * Returns the number of bytes read or -1 in case of error.
+ * @param ctxt  an XML parser context
+ * @returns the number of bytes read or -1 in case of error.
  */
 int
-xmlParserGrow(xmlParserCtxtPtr ctxt) {
+xmlParserGrow(xmlParserCtxt *ctxt) {
     xmlParserInputPtr in = ctxt->input;
     xmlParserInputBufferPtr buf = in->buf;
     size_t curEnd = in->end - in->cur;
@@ -579,7 +637,6 @@ xmlParserGrow(xmlParserCtxtPtr ctxt) {
     if (curBase > maxLength) {
         xmlFatalErr(ctxt, XML_ERR_RESOURCE_LIMIT,
                     "Buffer size limit exceeded, try XML_PARSE_HUGE\n");
-        xmlHaltParser(ctxt);
 	return(-1);
     }
 
@@ -597,15 +654,14 @@ xmlParserGrow(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParserCheckEOF:
- * @ctxt:  parser ctxt
- * @code:  error code
- *
- * Raises an error with @code if the input wasn't consumed
+ * Raises an error with `code` if the input wasn't consumed
  * completely.
+ *
+ * @param ctxt  parser ctxt
+ * @param code  error code
  */
 void
-xmlParserCheckEOF(xmlParserCtxtPtr ctxt, xmlParserErrors code) {
+xmlParserCheckEOF(xmlParserCtxt *ctxt, xmlParserErrors code) {
     xmlParserInputPtr in = ctxt->input;
     xmlParserInputBufferPtr buf;
 
@@ -640,20 +696,18 @@ xmlParserCheckEOF(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlParserInputGrow:
- * @in:  an XML parser input
- * @len:  an indicative size for the lookahead
- *
- * DEPRECATED: Don't use.
- *
  * This function increase the input for the parser. It tries to
  * preserve pointers to the input buffer, and keep already read data
  *
- * Returns the amount of char read, or -1 in case of error, 0 indicate the
+ * @deprecated Don't use.
+ *
+ * @param in  an XML parser input
+ * @param len  an indicative size for the lookahead
+ * @returns the amount of char read, or -1 in case of error, 0 indicate the
  * end of this entity
  */
 int
-xmlParserInputGrow(xmlParserInputPtr in, int len) {
+xmlParserInputGrow(xmlParserInput *in, int len) {
     int ret;
     size_t indx;
 
@@ -687,13 +741,12 @@ xmlParserInputGrow(xmlParserInputPtr in,
 }
 
 /**
- * xmlParserShrink:
- * @ctxt:  an XML parser context
- *
  * Shrink the input buffer.
+ *
+ * @param ctxt  an XML parser context
  */
 void
-xmlParserShrink(xmlParserCtxtPtr ctxt) {
+xmlParserShrink(xmlParserCtxt *ctxt) {
     xmlParserInputPtr in = ctxt->input;
     xmlParserInputBufferPtr buf = in->buf;
     size_t used, res;
@@ -708,11 +761,7 @@ xmlParserShrink(xmlParserCtxtPtr ctxt) {
 
         if (res > 0) {
             used -= res;
-            if ((res > ULONG_MAX) ||
-                (in->consumed > ULONG_MAX - (unsigned long)res))
-                in->consumed = ULONG_MAX;
-            else
-                in->consumed += res;
+            xmlSaturatedAddSizeT(&in->consumed, res);
         }
 
         xmlBufUpdateInput(buf->buffer, in, used);
@@ -720,15 +769,14 @@ xmlParserShrink(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlParserInputShrink:
- * @in:  an XML parser input
+ * This function removes used input for the parser.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * This function removes used input for the parser.
+ * @param in  an XML parser input
  */
 void
-xmlParserInputShrink(xmlParserInputPtr in) {
+xmlParserInputShrink(xmlParserInput *in) {
     size_t used;
     size_t ret;
 
@@ -744,11 +792,7 @@ xmlParserInputShrink(xmlParserInputPtr i
 	ret = xmlBufShrink(in->buf->buffer, used - LINE_LEN);
 	if (ret > 0) {
             used -= ret;
-            if ((ret > ULONG_MAX) ||
-                (in->consumed > ULONG_MAX - (unsigned long)ret))
-                in->consumed = ULONG_MAX;
-            else
-                in->consumed += ret;
+            xmlSaturatedAddSizeT(&in->consumed, ret);
 	}
 
         xmlBufUpdateInput(in->buf->buffer, in, used);
@@ -762,16 +806,15 @@ xmlParserInputShrink(xmlParserInputPtr i
  ************************************************************************/
 
 /**
- * xmlNextChar:
- * @ctxt:  the XML parser context
+ * Skip to the next char input char.
  *
- * DEPRECATED: Internal function, do not use.
+ * @deprecated Internal function, do not use.
  *
- * Skip to the next char input char.
+ * @param ctxt  the XML parser context
  */
 
 void
-xmlNextChar(xmlParserCtxtPtr ctxt)
+xmlNextChar(xmlParserCtxt *ctxt)
 {
     const unsigned char *cur;
     size_t avail;
@@ -858,27 +901,27 @@ encoding_error:
 }
 
 /**
- * xmlCurrentChar:
- * @ctxt:  the XML parser context
- * @len:  pointer to the length of the char read
- *
- * DEPRECATED: Internal function, do not use.
- *
  * The current char value, if using UTF-8 this may actually span multiple
  * bytes in the input buffer. Implement the end of line normalization:
+ *
+ * @deprecated Internal function, do not use.
+ *
  * 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 "#xD#xA" or a standalone literal #xD, an XML processor
- * must pass to the application the single character #xA.
+ * sequence "#xD#xA" 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.)
+ * line breaks to \#xA on input, before parsing.)
  *
- * Returns the current char value and its length
+ * @param ctxt  the XML parser context
+ * @param len  pointer to the length of the char read
+ * @returns the current char value and its length
  */
 
 int
-xmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) {
+xmlCurrentChar(xmlParserCtxt *ctxt, int *len) {
     const unsigned char *cur;
     size_t avail;
     int c;
@@ -1004,21 +1047,19 @@ incomplete_sequence:
 }
 
 /**
- * xmlStringCurrentChar:
- * @ctxt:  the XML parser context
- * @cur:  pointer to the beginning of the char
- * @len:  pointer to the length of the char read
- *
- * DEPRECATED: Internal function, do not use.
- *
  * The current char value, if using UTF-8 this may actually span multiple
  * bytes in the input buffer.
  *
- * Returns the current char value and its length
+ * @deprecated Internal function, do not use.
+ *
+ * @param ctxt  the XML parser context
+ * @param cur  pointer to the beginning of the char
+ * @param len  pointer to the length of the char read
+ * @returns the current char value and its length
  */
 
 int
-xmlStringCurrentChar(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
+xmlStringCurrentChar(xmlParserCtxt *ctxt ATTRIBUTE_UNUSED,
                      const xmlChar *cur, int *len) {
     int c;
 
@@ -1033,15 +1074,13 @@ xmlStringCurrentChar(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlCopyCharMultiByte:
- * @out:  pointer to an array of xmlChar
- * @val:  the char value
- *
- * DEPRECATED: Internal function, don't use.
- *
  * append the char value in the array
  *
- * Returns the number of xmlChar written
+ * @deprecated Internal function, don't use.
+ *
+ * @param out  pointer to an array of xmlChar
+ * @param val  the char value
+ * @returns the number of xmlChar written
  */
 int
 xmlCopyCharMultiByte(xmlChar *out, int val) {
@@ -1076,16 +1115,14 @@ xmlCopyCharMultiByte(xmlChar *out, int v
 }
 
 /**
- * xmlCopyChar:
- * @len:  Ignored, compatibility
- * @out:  pointer to an array of xmlChar
- * @val:  the char value
- *
- * DEPRECATED: Don't use.
- *
  * append the char value in the array
  *
- * Returns the number of xmlChar written
+ * @deprecated Don't use.
+ *
+ * @param len  Ignored, compatibility
+ * @param out  pointer to an array of xmlChar
+ * @param val  the char value
+ * @returns the number of xmlChar written
  */
 
 int
@@ -1106,21 +1143,19 @@ xmlCopyChar(int len ATTRIBUTE_UNUSED, xm
  ************************************************************************/
 
 /**
- * xmlCtxtSetCharEncConvImpl:
- * @ctxt:  parser context
- * @impl:  callback
- * @vctxt:  user data
- *
  * Installs a custom implementation to convert between character
  * encodings.
  *
  * This bypasses legacy feature like global encoding handlers or
  * encoding aliases.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
+ * @param ctxt  parser context
+ * @param impl  callback
+ * @param vctxt  user data
  */
 void
-xmlCtxtSetCharEncConvImpl(xmlParserCtxtPtr ctxt, xmlCharEncConvImpl impl,
+xmlCtxtSetCharEncConvImpl(xmlParserCtxt *ctxt, xmlCharEncConvImpl impl,
                           void *vctxt) {
     if (ctxt == NULL)
         return;
@@ -1213,20 +1248,18 @@ done:
 }
 
 /**
- * xmlSwitchEncoding:
- * @ctxt:  the parser context
- * @enc:  the encoding value (number)
- *
  * Use encoding specified by enum to decode input data. This overrides
  * the encoding found in the XML declaration.
  *
  * This function can also be used to override the encoding of chunks
- * passed to xmlParseChunk.
+ * passed to #xmlParseChunk.
  *
- * Returns 0 in case of success, -1 otherwise
+ * @param ctxt  the parser context
+ * @param enc  the encoding value (number)
+ * @returns 0 in case of success, -1 otherwise
  */
 int
-xmlSwitchEncoding(xmlParserCtxtPtr ctxt, xmlCharEncoding enc)
+xmlSwitchEncoding(xmlParserCtxt *ctxt, xmlCharEncoding enc)
 {
     xmlCharEncodingHandlerPtr handler = NULL;
     int ret;
@@ -1251,12 +1284,10 @@ xmlSwitchEncoding(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlSwitchInputEncodingName:
- * @ctxt:  the parser context
- * @input:  the input strea,
- * @encoding:  the encoding name
- *
- * Returns 0 in case of success, -1 otherwise
+ * @param ctxt  the parser context
+ * @param input  the input strea,
+ * @param encoding  the encoding name
+ * @returns 0 in case of success, -1 otherwise
  */
 static int
 xmlSwitchInputEncodingName(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
@@ -1288,22 +1319,20 @@ xmlSwitchInputEncodingName(xmlParserCtxt
 }
 
 /**
- * xmlSwitchEncodingName:
- * @ctxt:  the parser context
- * @encoding:  the encoding name
- *
  * Use specified encoding to decode input data. This overrides the
  * encoding found in the XML declaration.
  *
  * This function can also be used to override the encoding of chunks
- * passed to xmlParseChunk.
+ * passed to #xmlParseChunk.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 in case of success, -1 otherwise
+ * @param ctxt  the parser context
+ * @param encoding  the encoding name
+ * @returns 0 in case of success, -1 otherwise
  */
 int
-xmlSwitchEncodingName(xmlParserCtxtPtr ctxt, const char *encoding) {
+xmlSwitchEncodingName(xmlParserCtxt *ctxt, const char *encoding) {
     if (ctxt == NULL)
         return(-1);
 
@@ -1311,19 +1340,17 @@ xmlSwitchEncodingName(xmlParserCtxtPtr c
 }
 
 /**
- * xmlInputSetEncodingHandler:
- * @input:  the input stream
- * @handler:  the encoding handler
- *
  * Use encoding handler to decode input data.
  *
  * Closes the handler on error.
  *
- * Returns an xmlParserErrors code.
+ * @param input  the input stream
+ * @param handler  the encoding handler
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
-xmlInputSetEncodingHandler(xmlParserInputPtr input,
-                           xmlCharEncodingHandlerPtr handler) {
+xmlInputSetEncodingHandler(xmlParserInput *input,
+                           xmlCharEncodingHandler *handler) {
     xmlParserInputBufferPtr in;
     xmlBufPtr buf;
     xmlParserErrors code = XML_ERR_OK;
@@ -1411,20 +1438,18 @@ xmlInputSetEncodingHandler(xmlParserInpu
 }
 
 /**
- * xmlSwitchInputEncoding:
- * @ctxt:  the parser context, only for error reporting
- * @input:  the input stream
- * @handler:  the encoding handler
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Use encoding handler to decode input data.
  *
- * Returns 0 in case of success, -1 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  the parser context, only for error reporting
+ * @param input  the input stream
+ * @param handler  the encoding handler
+ * @returns 0 in case of success, -1 otherwise
  */
 int
-xmlSwitchInputEncoding(xmlParserCtxtPtr ctxt, xmlParserInputPtr input,
-                       xmlCharEncodingHandlerPtr handler) {
+xmlSwitchInputEncoding(xmlParserCtxt *ctxt, xmlParserInput *input,
+                       xmlCharEncodingHandler *handler) {
     xmlParserErrors code = xmlInputSetEncodingHandler(input, handler);
 
     if (code != XML_ERR_OK) {
@@ -1436,19 +1461,17 @@ xmlSwitchInputEncoding(xmlParserCtxtPtr
 }
 
 /**
- * xmlSwitchToEncoding:
- * @ctxt:  the parser context
- * @handler:  the encoding handler
- *
  * Use encoding handler to decode input data.
  *
  * This function can be used to enforce the encoding of chunks passed
- * to xmlParseChunk.
+ * to #xmlParseChunk.
  *
- * Returns 0 in case of success, -1 otherwise
+ * @param ctxt  the parser context
+ * @param handler  the encoding handler
+ * @returns 0 in case of success, -1 otherwise
  */
 int
-xmlSwitchToEncoding(xmlParserCtxtPtr ctxt, xmlCharEncodingHandlerPtr handler)
+xmlSwitchToEncoding(xmlParserCtxt *ctxt, xmlCharEncodingHandler *handler)
 {
     xmlParserErrors code;
 
@@ -1465,15 +1488,14 @@ xmlSwitchToEncoding(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlDetectEncoding:
- * @ctxt:  the parser context
- *
  * Handle optional BOM, detect and switch to encoding.
  *
  * Assumes that there are at least four bytes in the input buffer.
+ *
+ * @param ctxt  the parser context
  */
 void
-xmlDetectEncoding(xmlParserCtxtPtr ctxt) {
+xmlDetectEncoding(xmlParserCtxt *ctxt) {
     const xmlChar *in;
     xmlCharEncoding enc;
     int bomSize;
@@ -1596,31 +1618,33 @@ xmlDetectEncoding(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlSetDeclaredEncoding:
- * @ctxt:  the parser context
- * @encoding:  declared encoding
- *
  * Set the encoding from a declaration in the document.
  *
  * If no encoding was set yet, switch the encoding. Otherwise, only warn
  * about encoding mismatches.
  *
  * Takes ownership of 'encoding'.
+ *
+ * @param ctxt  the parser context
+ * @param encoding  declared encoding
  */
 void
-xmlSetDeclaredEncoding(xmlParserCtxtPtr ctxt, xmlChar *encoding) {
+xmlSetDeclaredEncoding(xmlParserCtxt *ctxt, xmlChar *encoding) {
     if (((ctxt->input->flags & XML_INPUT_HAS_ENCODING) == 0) &&
         ((ctxt->options & XML_PARSE_IGNORE_ENC) == 0)) {
         xmlCharEncodingHandlerPtr handler;
         xmlParserErrors res;
+        xmlCharEncFlags flags = XML_ENC_INPUT;
 
         /*
          * xmlSwitchEncodingName treats unsupported encodings as
          * warnings, but we want it to be an error in an encoding
          * declaration.
          */
+        if (ctxt->html)
+            flags |= XML_ENC_HTML;
         res = xmlCreateCharEncodingHandler((const char *) encoding,
-                XML_ENC_INPUT, ctxt->convImpl, ctxt->convCtxt, &handler);
+                flags, ctxt->convImpl, ctxt->convCtxt, &handler);
         if (res != XML_ERR_OK) {
             xmlFatalErr(ctxt, res, (const char *) encoding);
             xmlFree(encoding);
@@ -1688,21 +1712,19 @@ xmlSetDeclaredEncoding(xmlParserCtxtPtr
     }
 
     if (ctxt->encoding != NULL)
-        xmlFree((xmlChar *) ctxt->encoding);
+        xmlFree(ctxt->encoding);
     ctxt->encoding = encoding;
 }
 
 /**
- * xmlCtxtGetDeclaredEncoding:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the encoding from the encoding declaration. This can differ
+ * @param ctxt  parser context
+ * @returns the encoding from the encoding declaration. This can differ
  * from the actual encoding.
  */
 const xmlChar *
-xmlCtxtGetDeclaredEncoding(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetDeclaredEncoding(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -1710,14 +1732,12 @@ xmlCtxtGetDeclaredEncoding(xmlParserCtxt
 }
 
 /**
- * xmlGetActualEncoding:
- * @ctxt:  the parser context
- *
- * Returns the actual used to parse the document. This can differ from
+ * @param ctxt  the parser context
+ * @returns the actual used to parse the document. This can differ from
  * the declared encoding.
  */
 const xmlChar *
-xmlGetActualEncoding(xmlParserCtxtPtr ctxt) {
+xmlGetActualEncoding(xmlParserCtxt *ctxt) {
     const xmlChar *encoding = NULL;
 
     if ((ctxt->input->flags & XML_INPUT_USES_ENC_DECL) ||
@@ -1740,13 +1760,12 @@ xmlGetActualEncoding(xmlParserCtxtPtr ct
  ************************************************************************/
 
 /**
- * xmlFreeInputStream:
- * @input:  an xmlParserInputPtr
- *
  * Free up an input stream.
+ *
+ * @param input  an xmlParserInput
  */
 void
-xmlFreeInputStream(xmlParserInputPtr input) {
+xmlFreeInputStream(xmlParserInput *input) {
     if (input == NULL) return;
 
     if (input->filename != NULL) xmlFree((char *) input->filename);
@@ -1759,17 +1778,15 @@ xmlFreeInputStream(xmlParserInputPtr inp
 }
 
 /**
- * xmlNewInputStream:
- * @ctxt:  an XML parser context
- *
- * DEPRECATED: Use xmlNewInputFromUrl or similar functions.
- *
  * Create a new input stream structure.
  *
- * Returns the new input stream or NULL
+ * @deprecated Use #xmlNewInputFromUrl or similar functions.
+ *
+ * @param ctxt  an XML parser context
+ * @returns the new input stream or NULL
  */
-xmlParserInputPtr
-xmlNewInputStream(xmlParserCtxtPtr ctxt) {
+xmlParserInput *
+xmlNewInputStream(xmlParserCtxt *ctxt) {
     xmlParserInputPtr input;
 
     input = (xmlParserInputPtr) xmlMalloc(sizeof(xmlParserInput));
@@ -1785,20 +1802,18 @@ xmlNewInputStream(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtNewInputFromUrl:
- * @ctxt:  parser context
- * @url:  filename or URL
- * @publicId:  publid ID from doctype (optional)
- * @encoding:  character encoding (optional)
- * @flags:  unused, pass 0
- *
  * Creates a new parser input from the filesystem, the network or
  * a user-defined resource loader.
  *
- * Returns a new parser input.
+ * @param ctxt  parser context
+ * @param url  filename or URL
+ * @param publicId  publid ID from doctype (optional)
+ * @param encoding  character encoding (optional)
+ * @param flags  unused, pass 0
+ * @returns a new parser input.
  */
-xmlParserInputPtr
-xmlCtxtNewInputFromUrl(xmlParserCtxtPtr ctxt, const char *url,
+xmlParserInput *
+xmlCtxtNewInputFromUrl(xmlParserCtxt *ctxt, const char *url,
                        const char *publicId, const char *encoding,
                        xmlParserInputFlags flags ATTRIBUTE_UNUSED) {
     xmlParserInputPtr input;
@@ -1817,13 +1832,11 @@ xmlCtxtNewInputFromUrl(xmlParserCtxtPtr
 }
 
 /**
- * xmlNewInputInternal:
- * @buf:  parser input buffer
- * @filename:  filename or URL
- *
  * Internal helper function.
  *
- * Returns a new parser input.
+ * @param buf  parser input buffer
+ * @param filename  filename or URL
+ * @returns a new parser input.
  */
 static xmlParserInputPtr
 xmlNewInputInternal(xmlParserInputBufferPtr buf, const char *filename) {
@@ -1853,15 +1866,9 @@ xmlNewInputInternal(xmlParserInputBuffer
 }
 
 /**
- * xmlNewInputFromMemory:
- * @url:  base URL (optional)
- * @mem:  pointer to char array
- * @size:  size of array
- * @flags:  optimization hints
- *
  * Creates a new parser input to read from a memory area.
  *
- * @url is used as base to resolve external entities and for
+ * `url` is used as base to resolve external entities and for
  * error reporting.
  *
  * If the XML_INPUT_BUF_STATIC flag is set, the memory area must
@@ -1869,14 +1876,18 @@ xmlNewInputInternal(xmlParserInputBuffer
  * temporary copies.
  *
  * If the XML_INPUT_BUF_ZERO_TERMINATED flag is set, the memory
- * area must contain a zero byte after the buffer at position @size.
+ * area must contain a zero byte after the buffer at position `size`.
  * This can avoid temporary copies.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a new parser input or NULL if a memory allocation failed.
+ * @param url  base URL (optional)
+ * @param mem  pointer to char array
+ * @param size  size of array
+ * @param flags  optimization hints
+ * @returns a new parser input or NULL if a memory allocation failed.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlNewInputFromMemory(const char *url, const void *mem, size_t size,
                       xmlParserInputFlags flags) {
     xmlParserInputBufferPtr buf;
@@ -1892,18 +1903,16 @@ xmlNewInputFromMemory(const char *url, c
 }
 
 /**
- * xmlCtxtNewInputFromMemory:
- * @ctxt:  parser context
- * @url:  base URL (optional)
- * @mem:  pointer to char array
- * @size:  size of array
- * @encoding:  character encoding (optional)
- * @flags:  optimization hints
- *
- * Returns a new parser input or NULL in case of error.
+ * @param ctxt  parser context
+ * @param url  base URL (optional)
+ * @param mem  pointer to char array
+ * @param size  size of array
+ * @param encoding  character encoding (optional)
+ * @param flags  optimization hints
+ * @returns a new parser input or NULL in case of error.
  */
-xmlParserInputPtr
-xmlCtxtNewInputFromMemory(xmlParserCtxtPtr ctxt, const char *url,
+xmlParserInput *
+xmlCtxtNewInputFromMemory(xmlParserCtxt *ctxt, const char *url,
                           const void *mem, size_t size,
                           const char *encoding, xmlParserInputFlags flags) {
     xmlParserInputPtr input;
@@ -1924,25 +1933,23 @@ xmlCtxtNewInputFromMemory(xmlParserCtxtP
 }
 
 /**
- * xmlNewInputFromString:
- * @url:  base URL (optional)
- * @str:  zero-terminated string
- * @flags:  optimization hints
- *
  * Creates a new parser input to read from a zero-terminated string.
  *
- * @url is used as base to resolve external entities and for
+ * `url` is used as base to resolve external entities and for
  * error reporting.
  *
  * If the XML_INPUT_BUF_STATIC flag is set, the string must
  * stay unchanged until parsing has finished. This can avoid
  * temporary copies.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a new parser input or NULL if a memory allocation failed.
+ * @param url  base URL (optional)
+ * @param str  zero-terminated string
+ * @param flags  optimization hints
+ * @returns a new parser input or NULL if a memory allocation failed.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlNewInputFromString(const char *url, const char *str,
                       xmlParserInputFlags flags) {
     xmlParserInputBufferPtr buf;
@@ -1958,17 +1965,15 @@ xmlNewInputFromString(const char *url, c
 }
 
 /**
- * xmlCtxtNewInputFromString:
- * @ctxt:  parser context
- * @url:  base URL (optional)
- * @str:  zero-terminated string
- * @encoding:  character encoding (optional)
- * @flags:  optimization hints
- *
- * Returns a new parser input.
+ * @param ctxt  parser context
+ * @param url  base URL (optional)
+ * @param str  zero-terminated string
+ * @param encoding  character encoding (optional)
+ * @param flags  optimization hints
+ * @returns a new parser input.
  */
-xmlParserInputPtr
-xmlCtxtNewInputFromString(xmlParserCtxtPtr ctxt, const char *url,
+xmlParserInput *
+xmlCtxtNewInputFromString(xmlParserCtxt *ctxt, const char *url,
                           const char *str, const char *encoding,
                           xmlParserInputFlags flags) {
     xmlParserInputPtr input;
@@ -1989,27 +1994,25 @@ xmlCtxtNewInputFromString(xmlParserCtxtP
 }
 
 /**
- * xmlNewInputFromFd:
- * @url:  base URL (optional)
- * @fd:  file descriptor
- * @flags:  input flags
- *
- * Creates a new parser input to read from a zero-terminated string.
+ * Creates a new parser input to read from a file descriptor.
  *
- * @url is used as base to resolve external entities and for
+ * `url` is used as base to resolve external entities and for
  * error reporting.
  *
- * @fd is closed after parsing has finished.
+ * `fd` is closed after parsing has finished.
  *
- * Supported @flags are XML_INPUT_UNZIP to decompress data
+ * Supported `flags` are XML_INPUT_UNZIP to decompress data
  * automatically. This feature is deprecated and will be removed
  * in a future release.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a new parser input or NULL if a memory allocation failed.
+ * @param url  base URL (optional)
+ * @param fd  file descriptor
+ * @param flags  input flags
+ * @returns a new parser input or NULL if a memory allocation failed.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlNewInputFromFd(const char *url, int fd, xmlParserInputFlags flags) {
     xmlParserInputBufferPtr buf;
 
@@ -2029,17 +2032,15 @@ xmlNewInputFromFd(const char *url, int f
 }
 
 /**
- * xmlCtxtNewInputFromFd:
- * @ctxt:  parser context
- * @url:  base URL (optional)
- * @fd:  file descriptor
- * @encoding:  character encoding (optional)
- * @flags:  unused, pass 0
- *
- * Returns a new parser input.
+ * @param ctxt  parser context
+ * @param url  base URL (optional)
+ * @param fd  file descriptor
+ * @param encoding  character encoding (optional)
+ * @param flags  unused, pass 0
+ * @returns a new parser input.
  */
-xmlParserInputPtr
-xmlCtxtNewInputFromFd(xmlParserCtxtPtr ctxt, const char *url,
+xmlParserInput *
+xmlCtxtNewInputFromFd(xmlParserCtxt *ctxt, const char *url,
                       int fd, const char *encoding,
                       xmlParserInputFlags flags) {
     xmlParserInputPtr input;
@@ -2063,32 +2064,30 @@ xmlCtxtNewInputFromFd(xmlParserCtxtPtr c
 }
 
 /**
- * xmlNewInputFromIO:
- * @url:  base URL (optional)
- * @ioRead:  read callback
- * @ioClose:  close callback (optional)
- * @ioCtxt:  IO context
- * @flags:  unused, pass 0
- *
  * Creates a new parser input to read from input callbacks and
- * cintext.
+ * context.
  *
- * @url is used as base to resolve external entities and for
+ * `url` is used as base to resolve external entities and for
  * error reporting.
  *
- * @ioRead is called to read new data into a provided buffer.
+ * `ioRead` is called to read new data into a provided buffer.
  * It must return the number of bytes written into the buffer
  * ot a negative xmlParserErrors code on failure.
  *
- * @ioClose is called after parsing has finished.
+ * `ioClose` is called after parsing has finished.
  *
- * @ioCtxt is an opaque pointer passed to the callbacks.
+ * `ioCtxt` is an opaque pointer passed to the callbacks.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns a new parser input or NULL if a memory allocation failed.
+ * @param url  base URL (optional)
+ * @param ioRead  read callback
+ * @param ioClose  close callback (optional)
+ * @param ioCtxt  IO context
+ * @param flags  unused, pass 0
+ * @returns a new parser input or NULL if a memory allocation failed.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlNewInputFromIO(const char *url, xmlInputReadCallback ioRead,
                   xmlInputCloseCallback ioClose, void *ioCtxt,
                   xmlParserInputFlags flags ATTRIBUTE_UNUSED) {
@@ -2112,19 +2111,17 @@ xmlNewInputFromIO(const char *url, xmlIn
 }
 
 /**
- * xmlCtxtNewInputFromIO:
- * @ctxt:  parser context
- * @url:  base URL (optional)
- * @ioRead:  read callback
- * @ioClose:  close callback (optional)
- * @ioCtxt:  IO context
- * @encoding:  character encoding (optional)
- * @flags:  unused, pass 0
- *
- * Returns a new parser input.
+ * @param ctxt  parser context
+ * @param url  base URL (optional)
+ * @param ioRead  read callback
+ * @param ioClose  close callback (optional)
+ * @param ioCtxt  IO context
+ * @param encoding  character encoding (optional)
+ * @param flags  unused, pass 0
+ * @returns a new parser input.
  */
-xmlParserInputPtr
-xmlCtxtNewInputFromIO(xmlParserCtxtPtr ctxt, const char *url,
+xmlParserInput *
+xmlCtxtNewInputFromIO(xmlParserCtxt *ctxt, const char *url,
                       xmlInputReadCallback ioRead,
                       xmlInputCloseCallback ioClose,
                       void *ioCtxt, const char *encoding,
@@ -2147,16 +2144,14 @@ xmlCtxtNewInputFromIO(xmlParserCtxtPtr c
 }
 
 /**
- * xmlNewPushInput:
- * @url:  base URL (optional)
- * @chunk:  pointer to char array
- * @size:  size of array
- *
  * Creates a new parser input for a push parser.
  *
- * Returns a new parser input or NULL if a memory allocation failed.
+ * @param url  base URL (optional)
+ * @param chunk  pointer to char array
+ * @param size  size of array
+ * @returns a new parser input or NULL if a memory allocation failed.
  */
-xmlParserInputPtr
+xmlParserInput *
 xmlNewPushInput(const char *url, const char *chunk, int size) {
     xmlParserInputBufferPtr buf;
     xmlParserInputPtr input;
@@ -2186,18 +2181,16 @@ xmlNewPushInput(const char *url, const c
 }
 
 /**
- * xmlNewIOInputStream:
- * @ctxt:  an XML parser context
- * @buf:  an input buffer
- * @enc:  the charset encoding if known
- *
- * Create a new input stream structure encapsulating the @input into
+ * Create a new input stream structure encapsulating the `input` into
  * a stream suitable for the parser.
  *
- * Returns the new input stream or NULL
+ * @param ctxt  an XML parser context
+ * @param buf  an input buffer
+ * @param enc  the charset encoding if known
+ * @returns the new input stream or NULL
  */
-xmlParserInputPtr
-xmlNewIOInputStream(xmlParserCtxtPtr ctxt, xmlParserInputBufferPtr buf,
+xmlParserInput *
+xmlNewIOInputStream(xmlParserCtxt *ctxt, xmlParserInputBuffer *buf,
 	            xmlCharEncoding enc) {
     xmlParserInputPtr input;
     const char *encoding;
@@ -2219,18 +2212,16 @@ xmlNewIOInputStream(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlNewEntityInputStream:
- * @ctxt:  an XML parser context
- * @ent:  an Entity pointer
- *
- * DEPRECATED: Internal function, do not use.
+ * Create a new input stream based on an xmlEntity
  *
- * Create a new input stream based on an xmlEntityPtr
+ * @deprecated Internal function, do not use.
  *
- * Returns the new input stream or NULL
+ * @param ctxt  an XML parser context
+ * @param ent  an Entity pointer
+ * @returns the new input stream or NULL
  */
-xmlParserInputPtr
-xmlNewEntityInputStream(xmlParserCtxtPtr ctxt, xmlEntityPtr ent) {
+xmlParserInput *
+xmlNewEntityInputStream(xmlParserCtxt *ctxt, xmlEntity *ent) {
     xmlParserInputPtr input;
 
     if ((ctxt == NULL) || (ent == NULL))
@@ -2262,18 +2253,16 @@ xmlNewEntityInputStream(xmlParserCtxtPtr
 }
 
 /**
- * xmlNewStringInputStream:
- * @ctxt:  an XML parser context
- * @buffer:  an memory buffer
- *
- * DEPRECATED: Use xmlNewInputFromString.
- *
  * Create a new input stream based on a memory buffer.
  *
- * Returns the new input stream
+ * @deprecated Use #xmlNewInputFromString.
+ *
+ * @param ctxt  an XML parser context
+ * @param buffer  an memory buffer
+ * @returns the new input stream
  */
-xmlParserInputPtr
-xmlNewStringInputStream(xmlParserCtxtPtr ctxt, const xmlChar *buffer) {
+xmlParserInput *
+xmlNewStringInputStream(xmlParserCtxt *ctxt, const xmlChar *buffer) {
     return(xmlCtxtNewInputFromString(ctxt, NULL, (const char *) buffer,
                                      NULL, 0));
 }
@@ -2288,176 +2277,147 @@ xmlNewStringInputStream(xmlParserCtxtPtr
 #ifdef LIBXML_CATALOG_ENABLED
 
 /**
- * xmlResolveResourceFromCatalog:
- * @URL:  the URL for the entity to load
- * @ID:  the System ID for the entity to load
- * @ctxt:  the context in which the entity is called or NULL
- *
- * Resolves the URL and ID against the appropriate catalog.
- * This function is used by xmlDefaultExternalEntityLoader and
- * xmlNoNetExternalEntityLoader.
- *
- * Returns a new allocated URL, or NULL.
- */
-static xmlChar *
-xmlResolveResourceFromCatalog(const char *URL, const char *ID,
-                              xmlParserCtxtPtr ctxt) {
-    xmlChar *resource = NULL;
-    xmlCatalogAllow pref;
-    int allowLocal = 0;
-    int allowGlobal = 0;
+ * Resolves an external ID or URL against the appropriate catalog.
+ *
+ * @param url  the URL or system ID for the entity to load
+ * @param publicId  the public ID for the entity to load (optional)
+ * @param localCatalogs  local catalogs (optional)
+ * @param allowGlobal  allow global system catalog
+ * @param out  resulting resource or NULL
+ * @returns an xmlParserErrors code
+ */
+static xmlParserErrors
+xmlResolveFromCatalog(const char *url, const char *publicId,
+                      void *localCatalogs, int allowGlobal, char **out) {
+    xmlError oldError;
+    xmlError *lastError;
+    char *resource = NULL;
+    xmlParserErrors code;
+
+    if (out == NULL)
+        return(XML_ERR_ARGUMENT);
+    *out = NULL;
+    if ((localCatalogs == NULL) && (!allowGlobal))
+        return(XML_ERR_OK);
 
     /*
-     * If the resource doesn't exists as a file,
-     * try to load it from the resource pointed in the catalogs
+     * Don't try to resolve if local file exists.
+     *
+     * TODO: This is somewhat non-deterministic.
      */
-    pref = xmlCatalogGetDefaults();
+    if (xmlNoNetExists(url))
+        return(XML_ERR_OK);
 
-    if ((ctxt != NULL) && (ctxt->catalogs != NULL) &&
-        ((pref == XML_CATA_ALLOW_ALL) ||
-         (pref == XML_CATA_ALLOW_DOCUMENT)))
-        allowLocal = 1;
-
-    if (((ctxt == NULL) ||
-         ((ctxt->options & XML_PARSE_NO_SYS_CATALOG) == 0)) &&
-        ((pref == XML_CATA_ALLOW_ALL) ||
-         (pref == XML_CATA_ALLOW_GLOBAL)))
-        allowGlobal = 1;
-
-    if ((pref != XML_CATA_ALLOW_NONE) && (!xmlNoNetExists(URL))) {
-	/*
-	 * Do a local lookup
-	 */
-        if (allowLocal) {
-	    resource = xmlCatalogLocalResolve(ctxt->catalogs,
-					      (const xmlChar *)ID,
-					      (const xmlChar *)URL);
-        }
-	/*
-	 * Try a global lookup
-	 */
-	if ((resource == NULL) && (allowGlobal)) {
-	    resource = xmlCatalogResolve((const xmlChar *)ID,
-					 (const xmlChar *)URL);
-	}
-	if ((resource == NULL) && (URL != NULL))
-	    resource = xmlStrdup((const xmlChar *) URL);
+    /* Backup and reset last error */
+    lastError = xmlGetLastErrorInternal();
+    oldError = *lastError;
+    lastError->code = XML_ERR_OK;
 
-	/*
-	 * TODO: do an URI lookup on the reference
-	 */
-	if ((resource != NULL) && (!xmlNoNetExists((const char *)resource))) {
-	    xmlChar *tmp = NULL;
-
-	    if (allowLocal) {
-		tmp = xmlCatalogLocalResolveURI(ctxt->catalogs, resource);
-	    }
-	    if ((tmp == NULL) && (allowGlobal)) {
-		tmp = xmlCatalogResolveURI(resource);
-	    }
-
-	    if (tmp != NULL) {
-		xmlFree(resource);
-		resource = tmp;
-	    }
-	}
+    /*
+     * Do a local lookup
+     */
+    if (localCatalogs != NULL) {
+        resource = (char *) xmlCatalogLocalResolve(localCatalogs,
+                                                   BAD_CAST publicId,
+                                                   BAD_CAST url);
     }
-
-    return resource;
-}
-
-#endif
-
-#ifdef LIBXML_HTTP_ENABLED
-static xmlParserErrors
-xmlCheckHTTPInputInternal(xmlParserInputPtr input) {
-    const char *encoding;
-    const char *redir;
-    const char *mime;
-    int code;
-
-    if ((input == NULL) || (input->buf == NULL) ||
-        (input->buf->readcallback != xmlIOHTTPRead) ||
-        (input->buf->context == NULL))
-        return(XML_ERR_OK);
-
-    code = xmlNanoHTTPReturnCode(input->buf->context);
-    if (code >= 400) {
-        /* fatal error */
-        return(XML_IO_LOAD_ERROR);
+    /*
+     * Try a global lookup
+     */
+    if ((resource == NULL) && (allowGlobal)) {
+        resource = (char *) xmlCatalogResolve(BAD_CAST publicId,
+                                              BAD_CAST url);
     }
 
-    mime = xmlNanoHTTPMimeType(input->buf->context);
-    if ((xmlStrstr(BAD_CAST mime, BAD_CAST "/xml")) ||
-        (xmlStrstr(BAD_CAST mime, BAD_CAST "+xml"))) {
-        encoding = xmlNanoHTTPEncoding(input->buf->context);
-        if (encoding != NULL) {
-            xmlCharEncodingHandlerPtr handler;
-            xmlParserErrors res;
-
-            res = xmlOpenCharEncodingHandler(encoding, /* output */ 0,
-                                             &handler);
-            if (res == 0)
-                xmlInputSetEncodingHandler(input, handler);
+    /*
+     * Try to resolve url using URI rules.
+     *
+     * TODO: We should consider using only a single resolution
+     * mechanism depending on resource type. Either by external ID
+     * or by URI.
+     */
+    if ((resource == NULL) && (url != NULL)) {
+        if (localCatalogs != NULL) {
+            resource = (char *) xmlCatalogLocalResolveURI(localCatalogs,
+                                                          BAD_CAST url);
+        }
+        if ((resource == NULL) && (allowGlobal)) {
+            resource = (char *) xmlCatalogResolveURI(BAD_CAST url);
         }
     }
 
-    redir = xmlNanoHTTPRedir(input->buf->context);
-    if (redir != NULL) {
-        if (input->filename != NULL)
-            xmlFree((xmlChar *) input->filename);
-        input->filename = xmlMemStrdup(redir);
-        if (input->filename == NULL)
-            return(XML_ERR_NO_MEMORY);
+    code = lastError->code;
+    if (code == XML_ERR_OK) {
+        *out = resource;
+    } else {
+        xmlFree(resource);
     }
 
-    return(XML_ERR_OK);
+    *lastError = oldError;
+
+    return(code);
 }
-#endif /* LIBXML_HTTP_ENABLED */
 
-/**
- * xmlCheckHTTPInput:
- * @ctxt: an XML parser context
- * @ret: an XML parser input
- *
- * DEPRECATED: Internal function, don't use.
- *
- * 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
- *
- * Returns the input or NULL in case of HTTP error.
- */
-xmlParserInputPtr
-xmlCheckHTTPInput(xmlParserCtxtPtr ctxt, xmlParserInputPtr ret) {
-    /* Avoid unused variable warning if features are disabled. */
-    (void) ctxt;
+static char *
+xmlCtxtResolveFromCatalog(xmlParserCtxtPtr ctxt, const char *url,
+                          const char *publicId) {
+    char *resource;
+    void *localCatalogs = NULL;
+    int allowGlobal = 1;
+    xmlParserErrors code;
 
-#ifdef LIBXML_HTTP_ENABLED
-    {
-        int code = xmlCheckHTTPInputInternal(ret);
+    if (ctxt != NULL) {
+        /*
+         * Loading of HTML documents shouldn't use XML catalogs.
+         */
+        if (ctxt->html)
+            return(NULL);
 
-        if (code != XML_ERR_OK) {
-            if (ret->filename != NULL)
-                xmlCtxtErrIO(ctxt, XML_IO_LOAD_ERROR, ret->filename);
-            else
-                xmlCtxtErrIO(ctxt, XML_IO_LOAD_ERROR, "<null>");
-            xmlFreeInputStream(ret);
+        localCatalogs = ctxt->catalogs;
+
+        if (ctxt->options & XML_PARSE_NO_SYS_CATALOG)
+            allowGlobal = 0;
+    }
+
+    switch (xmlCatalogGetDefaults()) {
+        case XML_CATA_ALLOW_NONE:
             return(NULL);
-        }
+        case XML_CATA_ALLOW_DOCUMENT:
+            allowGlobal = 0;
+            break;
+        case XML_CATA_ALLOW_GLOBAL:
+            localCatalogs = NULL;
+            break;
+        case XML_CATA_ALLOW_ALL:
+            break;
     }
-#endif
 
-    return(ret);
+    code = xmlResolveFromCatalog(url, publicId, localCatalogs,
+                                 allowGlobal, &resource);
+    if (code != XML_ERR_OK)
+        xmlCtxtErr(ctxt, NULL, XML_FROM_CATALOG, code, XML_ERR_ERROR,
+                   BAD_CAST url, BAD_CAST publicId, NULL, 0,
+                   "%s\n", xmlErrString(code), NULL);
+
+    return(resource);
 }
 
+#endif
+
 /**
- * xmlNewInputFromUrl:
- * @filename:  the filename to use as entity
- * @flags:  XML_INPUT flags
- * @out:  pointer to new parser input
+ * @deprecated Internal function, don't use.
  *
+ * @param ctxt  an XML parser context
+ * @param ret  an XML parser input
+ * @returns NULL.
+ */
+xmlParserInput *
+xmlCheckHTTPInput(xmlParserCtxt *ctxt ATTRIBUTE_UNUSED,
+                  xmlParserInput *ret ATTRIBUTE_UNUSED) {
+    return(NULL);
+}
+
+/**
  * Create a new input stream based on a file or a URL.
  *
  * The flag XML_INPUT_UNZIP allows decompression.
@@ -2467,22 +2427,25 @@ xmlCheckHTTPInput(xmlParserCtxtPtr ctxt,
  * The following resource loaders will be called if they were
  * registered (in order of precedence):
  *
- * - the per-thread xmlParserInputBufferCreateFilenameFunc set with
- *   xmlParserInputBufferCreateFilenameDefault (deprecated)
+ * - the per-thread #xmlParserInputBufferCreateFilenameFunc set with
+ *   #xmlParserInputBufferCreateFilenameDefault (deprecated)
  * - the default loader which will return
  *   - the result from a matching global input callback set with
- *     xmlRegisterInputCallbacks (deprecated)
- *   - a HTTP resource if support is compiled in.
+ *     #xmlRegisterInputCallbacks (deprecated)
  *   - a file opened from the filesystem, with automatic detection
  *     of compressed files if support is compiled in.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns an xmlParserErrors code.
+ * @param url  the filename to use as entity
+ * @param flags  XML_INPUT flags
+ * @param out  pointer to new parser input
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
-xmlNewInputFromUrl(const char *filename, xmlParserInputFlags flags,
-                   xmlParserInputPtr *out) {
+xmlNewInputFromUrl(const char *url, xmlParserInputFlags flags,
+                   xmlParserInput **out) {
+    char *resource = NULL;
     xmlParserInputBufferPtr buf;
     xmlParserInputPtr input;
     xmlParserErrors code = XML_ERR_OK;
@@ -2490,50 +2453,56 @@ xmlNewInputFromUrl(const char *filename,
     if (out == NULL)
         return(XML_ERR_ARGUMENT);
     *out = NULL;
-    if (filename == NULL)
+    if (url == NULL)
         return(XML_ERR_ARGUMENT);
 
+#ifdef LIBXML_CATALOG_ENABLED
+    if (flags & XML_INPUT_USE_SYS_CATALOG) {
+        code = xmlResolveFromCatalog(url, NULL, NULL, 1, &resource);
+        if (code != XML_ERR_OK)
+            return(code);
+        if (resource != NULL)
+            url = resource;
+    }
+#endif
+
     if (xmlParserInputBufferCreateFilenameValue != NULL) {
-        buf = xmlParserInputBufferCreateFilenameValue(filename,
+        buf = xmlParserInputBufferCreateFilenameValue(url,
                 XML_CHAR_ENCODING_NONE);
         if (buf == NULL)
             code = XML_IO_ENOENT;
     } else {
-        code = xmlParserInputBufferCreateUrl(filename, XML_CHAR_ENCODING_NONE,
+        code = xmlParserInputBufferCreateUrl(url, XML_CHAR_ENCODING_NONE,
                                              flags, &buf);
     }
-    if (code != XML_ERR_OK)
-	return(code);
 
-    input = xmlNewInputInternal(buf, filename);
-    if (input == NULL)
-	return(XML_ERR_NO_MEMORY);
+    if (code == XML_ERR_OK) {
+        input = xmlNewInputInternal(buf, url);
+        if (input == NULL)
+            code = XML_ERR_NO_MEMORY;
 
-#ifdef LIBXML_HTTP_ENABLED
-    code = xmlCheckHTTPInputInternal(input);
-    if (code != XML_ERR_OK) {
-        xmlFreeInputStream(input);
-        return(code);
+        *out = input;
     }
-#endif
 
-    *out = input;
-    return(XML_ERR_OK);
+    if (resource != NULL)
+        xmlFree(resource);
+    return(code);
 }
 
 /**
- * xmlNewInputFromFile:
- * @ctxt:  an XML parser context
- * @filename:  the filename to use as entity
+ * Create a new input stream based on a file or an URL.
  *
- * DEPRECATED: Use xmlNewInputFromUrl.
+ * Unlike the default external entity loader, this function
+ * doesn't use XML catalogs.
  *
- * Create a new input stream based on a file or an URL.
+ * @deprecated Use #xmlNewInputFromUrl.
  *
- * Returns the new input stream or NULL in case of error
+ * @param ctxt  an XML parser context
+ * @param filename  the filename to use as entity
+ * @returns the new input stream or NULL in case of error
  */
-xmlParserInputPtr
-xmlNewInputFromFile(xmlParserCtxtPtr ctxt, const char *filename) {
+xmlParserInput *
+xmlNewInputFromFile(xmlParserCtxt *ctxt, const char *filename) {
     xmlParserInputPtr input;
     xmlParserInputFlags flags = 0;
     xmlParserErrors code;
@@ -2556,33 +2525,35 @@ xmlNewInputFromFile(xmlParserCtxtPtr ctx
 }
 
 /**
- * xmlDefaultExternalEntityLoader:
- * @URL:  the URL for the entity to load
- * @ID:  the System ID for the entity to load
- * @ctxt:  the context in which the entity is called or NULL
- *
  * By default we don't load external entities, yet.
  *
- * Returns a new allocated xmlParserInputPtr, or NULL.
+ * @param url  the URL or system ID for the entity to load
+ * @param publicId  the public ID for the entity to load (optional)
+ * @param ctxt  the context in which the entity is called or NULL
+ * @returns a new allocated xmlParserInput, or NULL.
  */
 static xmlParserInputPtr
-xmlDefaultExternalEntityLoader(const char *url, const char *ID,
+xmlDefaultExternalEntityLoader(const char *url, const char *publicId,
                                xmlParserCtxtPtr ctxt)
 {
     xmlParserInputPtr input = NULL;
     char *resource = NULL;
 
-    (void) ID;
+    (void) publicId;
 
     if (url == NULL)
         return(NULL);
 
 #ifdef LIBXML_CATALOG_ENABLED
-    resource = (char *) xmlResolveResourceFromCatalog(url, ID, ctxt);
+    resource = xmlCtxtResolveFromCatalog(ctxt, url, publicId);
     if (resource != NULL)
 	url = resource;
 #endif
 
+    /*
+     * Several downstream test suites expect this error whenever
+     * an http URI is passed and NONET is set.
+     */
     if ((ctxt != NULL) &&
         (ctxt->options & XML_PARSE_NONET) &&
         (xmlStrncasecmp(BAD_CAST url, BAD_CAST "http://", 7) == 0)) {
@@ -2597,21 +2568,19 @@ xmlDefaultExternalEntityLoader(const cha
 }
 
 /**
- * xmlNoNetExternalEntityLoader:
- * @URL:  the URL for the entity to load
- * @ID:  the System ID for the entity to load
- * @ctxt:  the context in which the entity is called or NULL
- *
- * DEPRECATED: Use XML_PARSE_NONET.
- *
  * A specific entity loader disabling network accesses, though still
  * allowing local catalog accesses for resolution.
  *
- * Returns a new allocated xmlParserInputPtr, or NULL.
- */
-xmlParserInputPtr
-xmlNoNetExternalEntityLoader(const char *URL, const char *ID,
-                             xmlParserCtxtPtr ctxt) {
+ * @deprecated Use XML_PARSE_NONET.
+ *
+ * @param URL  the URL or system ID for the entity to load
+ * @param publicId  the public ID for the entity to load
+ * @param ctxt  the context in which the entity is called or NULL
+ * @returns a new allocated xmlParserInput, or NULL.
+ */
+xmlParserInput *
+xmlNoNetExternalEntityLoader(const char *URL, const char *publicId,
+                             xmlParserCtxt *ctxt) {
     int oldOptions = 0;
     xmlParserInputPtr input;
 
@@ -2620,7 +2589,7 @@ xmlNoNetExternalEntityLoader(const char
         ctxt->options |= XML_PARSE_NONET;
     }
 
-    input = xmlDefaultExternalEntityLoader(URL, ID, ctxt);
+    input = xmlDefaultExternalEntityLoader(URL, publicId, ctxt);
 
     if (ctxt != NULL)
         ctxt->options = oldOptions;
@@ -2635,14 +2604,13 @@ static xmlExternalEntityLoader
 xmlCurrentExternalEntityLoader = xmlDefaultExternalEntityLoader;
 
 /**
- * xmlSetExternalEntityLoader:
- * @f:  the new entity resolver function
- *
- * DEPRECATED: This is a global setting and not thread-safe. Use
- * xmlCtxtSetResourceLoader or similar functions.
- *
  * Changes the default external entity resolver function for the
  * application.
+ *
+ * @deprecated This is a global setting and not thread-safe. Use
+ * #xmlCtxtSetResourceLoader or similar functions.
+ *
+ * @param f  the new entity resolver function
  */
 void
 xmlSetExternalEntityLoader(xmlExternalEntityLoader f) {
@@ -2650,13 +2618,11 @@ xmlSetExternalEntityLoader(xmlExternalEn
 }
 
 /**
- * xmlGetExternalEntityLoader:
- *
- * DEPRECATED: See xmlSetExternalEntityLoader.
- *
  * Get the default external entity resolver function for the application
  *
- * Returns the xmlExternalEntityLoader function pointer
+ * @deprecated See #xmlSetExternalEntityLoader.
+ *
+ * @returns the #xmlExternalEntityLoader function pointer
  */
 xmlExternalEntityLoader
 xmlGetExternalEntityLoader(void) {
@@ -2664,20 +2630,18 @@ xmlGetExternalEntityLoader(void) {
 }
 
 /**
- * xmlCtxtSetResourceLoader:
- * @ctxt:  parser context
- * @loader:  callback
- * @vctxt:  user data
- *
  * Installs a custom callback to load documents, DTDs or external
  * entities.
  *
- * If @vctxt is NULL, the parser context will be passed.
+ * If `vctxt` is NULL, the parser context will be passed.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
+ * @param ctxt  parser context
+ * @param loader  callback
+ * @param vctxt  user data (optional)
  */
 void
-xmlCtxtSetResourceLoader(xmlParserCtxtPtr ctxt, xmlResourceLoader loader,
+xmlCtxtSetResourceLoader(xmlParserCtxt *ctxt, xmlResourceLoader loader,
                          void *vctxt) {
     if (ctxt == NULL)
         return;
@@ -2687,16 +2651,14 @@ xmlCtxtSetResourceLoader(xmlParserCtxtPt
 }
 
 /**
- * xmlLoadResource:
- * @ctxt:  parser context
- * @url:  the URL for the entity to load
- * @publicId:  the Public ID for the entity to load
- * @type:  resource type
- *
- * Returns the xmlParserInputPtr or NULL in case of error.
+ * @param ctxt  parser context
+ * @param url  the URL or system ID for the entity to load
+ * @param publicId  the public ID for the entity to load (optional)
+ * @param type  resource type
+ * @returns the xmlParserInput or NULL in case of error.
  */
-xmlParserInputPtr
-xmlLoadResource(xmlParserCtxtPtr ctxt, const char *url, const char *publicId,
+xmlParserInput *
+xmlLoadResource(xmlParserCtxt *ctxt, const char *url, const char *publicId,
                 xmlResourceType type) {
     char *canonicFilename;
     xmlParserInputPtr ret;
@@ -2711,7 +2673,7 @@ xmlLoadResource(xmlParserCtxtPtr ctxt, c
         int code;
 
 #ifdef LIBXML_CATALOG_ENABLED
-        resource = (char *) xmlResolveResourceFromCatalog(url, publicId, ctxt);
+        resource = xmlCtxtResolveFromCatalog(ctxt, url, publicId);
         if (resource != NULL)
             url = resource;
 #endif
@@ -2748,16 +2710,11 @@ xmlLoadResource(xmlParserCtxtPtr ctxt, c
 }
 
 /**
- * xmlLoadExternalEntity:
- * @URL:  the URL for the entity to load
- * @ID:  the Public ID for the entity to load
- * @ctxt:  the context in which the entity is called or NULL
- *
- * @URL is a filename or URL. If if contains the substring "://",
+ * `URL` is a filename or URL. If if contains the substring "://",
  * it is assumed to be a Legacy Extended IRI. Otherwise, it is
  * treated as a filesystem path.
  *
- * @ID is an optional XML public ID, typically from a doctype
+ * `publicId` is an optional XML public ID, typically from a doctype
  * declaration. It is used for catalog lookups.
  *
  * If catalog lookup is enabled (default is yes) and URL or ID are
@@ -2765,25 +2722,27 @@ xmlLoadResource(xmlParserCtxtPtr ctxt, c
  * result. Then the following resource loaders will be called if
  * they were registered (in order of precedence):
  *
- * - the resource loader set with xmlCtxtSetResourceLoader
+ * - the resource loader set with #xmlCtxtSetResourceLoader
  * - the global external entity loader set with
- *   xmlSetExternalEntityLoader (without catalog resolution,
+ *   #xmlSetExternalEntityLoader (without catalog resolution,
  *   deprecated)
- * - the per-thread xmlParserInputBufferCreateFilenameFunc set with
- *   xmlParserInputBufferCreateFilenameDefault (deprecated)
+ * - the per-thread #xmlParserInputBufferCreateFilenameFunc set with
+ *   #xmlParserInputBufferCreateFilenameDefault (deprecated)
  * - the default loader which will return
  *   - the result from a matching global input callback set with
- *     xmlRegisterInputCallbacks (deprecated)
- *   - a HTTP resource if support is compiled in.
+ *     #xmlRegisterInputCallbacks (deprecated)
  *   - a file opened from the filesystem, with automatic detection
  *     of compressed files if support is compiled in.
  *
- * Returns the xmlParserInputPtr or NULL
- */
-xmlParserInputPtr
-xmlLoadExternalEntity(const char *URL, const char *ID,
-                      xmlParserCtxtPtr ctxt) {
-    return(xmlLoadResource(ctxt, URL, ID, XML_RESOURCE_UNKNOWN));
+ * @param URL  the URL or system ID for the entity to load
+ * @param publicId  the public ID for the entity to load (optional)
+ * @param ctxt  the context in which the entity is called or NULL
+ * @returns the xmlParserInput or NULL
+ */
+xmlParserInput *
+xmlLoadExternalEntity(const char *URL, const char *publicId,
+                      xmlParserCtxt *ctxt) {
+    return(xmlLoadResource(ctxt, URL, publicId, XML_RESOURCE_UNKNOWN));
 }
 
 /************************************************************************
@@ -2793,14 +2752,12 @@ xmlLoadExternalEntity(const char *URL, c
  ************************************************************************/
 
 /**
- * xmlInitSAXParserCtxt:
- * @ctxt:  XML parser context
- * @sax:  SAX handlert
- * @userData:  user data
- *
  * Initialize a SAX parser context
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param ctxt  XML parser context
+ * @param sax  SAX handlert
+ * @param userData  user data
+ * @returns 0 in case of success and -1 in case of error
  */
 
 static int
@@ -2924,7 +2881,6 @@ xmlInitSAXParserCtxt(xmlParserCtxtPtr ct
     if (ctxt->pedantic) {
         ctxt->options |= XML_PARSE_PEDANTIC;
     }
-    ctxt->linenumbers = xmlLineNumbersDefaultValue;
     ctxt->keepBlanks = xmlKeepBlanksDefaultValue;
     if (ctxt->keepBlanks == 0) {
 	ctxt->sax->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
@@ -2964,33 +2920,30 @@ xmlInitSAXParserCtxt(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlInitParserCtxt:
- * @ctxt:  an XML parser context
+ * Initialize a parser context
  *
- * DEPRECATED: Internal function which will be made private in a future
+ * @deprecated Internal function which will be made private in a future
  * version.
  *
- * Initialize a parser context
- *
- * Returns 0 in case of success and -1 in case of error
+ * @param ctxt  an XML parser context
+ * @returns 0 in case of success and -1 in case of error
  */
 
 int
-xmlInitParserCtxt(xmlParserCtxtPtr ctxt)
+xmlInitParserCtxt(xmlParserCtxt *ctxt)
 {
     return(xmlInitSAXParserCtxt(ctxt, NULL, NULL));
 }
 
 /**
- * xmlFreeParserCtxt:
- * @ctxt:  an XML parser context
- *
  * Free all the memory used by a parser context. However the parsed
  * document in ctxt->myDoc is not freed.
+ *
+ * @param ctxt  an XML parser context
  */
 
 void
-xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
+xmlFreeParserCtxt(xmlParserCtxt *ctxt)
 {
     xmlParserInputPtr input;
 
@@ -3004,10 +2957,10 @@ xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
     if (ctxt->nodeTab != NULL) xmlFree(ctxt->nodeTab);
     if (ctxt->nodeInfoTab != NULL) xmlFree(ctxt->nodeInfoTab);
     if (ctxt->inputTab != NULL) xmlFree(ctxt->inputTab);
-    if (ctxt->version != NULL) xmlFree((char *) ctxt->version);
-    if (ctxt->encoding != NULL) xmlFree((char *) ctxt->encoding);
-    if (ctxt->extSubURI != NULL) xmlFree((char *) ctxt->extSubURI);
-    if (ctxt->extSubSystem != NULL) xmlFree((char *) ctxt->extSubSystem);
+    if (ctxt->version != NULL) xmlFree(ctxt->version);
+    if (ctxt->encoding != NULL) xmlFree(ctxt->encoding);
+    if (ctxt->extSubURI != NULL) xmlFree(ctxt->extSubURI);
+    if (ctxt->extSubSystem != NULL) xmlFree(ctxt->extSubSystem);
 #ifdef LIBXML_SAX1_ENABLED
     if ((ctxt->sax != NULL) &&
         (ctxt->sax != (xmlSAXHandlerPtr) &xmlDefaultSAXHandler))
@@ -3070,35 +3023,33 @@ xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlNewParserCtxt:
- *
  * Allocate and initialize a new parser context.
  *
- * Returns the xmlParserCtxtPtr or NULL
+ * @returns the xmlParserCtxt or NULL
  */
 
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlNewParserCtxt(void)
 {
     return(xmlNewSAXParserCtxt(NULL, NULL));
 }
 
 /**
- * xmlNewSAXParserCtxt:
- * @sax:  SAX handler
- * @userData:  user data
- *
  * Allocate and initialize a new SAX parser context. If userData is NULL,
  * the parser context will be passed as user data.
  *
- * Available since 2.11.0. If you want support older versions,
- * it's best to invoke xmlNewParserCtxt and set ctxt->sax with
+ * @since 2.11.0
+ *
+ * If you want support older versions,
+ * it's best to invoke #xmlNewParserCtxt and set ctxt->sax with
  * struct assignment.
  *
- * Returns the xmlParserCtxtPtr or NULL if memory allocation failed.
+ * @param sax  SAX handler
+ * @param userData  user data
+ * @returns the xmlParserCtxt or NULL if memory allocation failed.
  */
 
-xmlParserCtxtPtr
+xmlParserCtxt *
 xmlNewSAXParserCtxt(const xmlSAXHandler *sax, void *userData)
 {
     xmlParserCtxtPtr ctxt;
@@ -3117,15 +3068,13 @@ xmlNewSAXParserCtxt(const xmlSAXHandler
 }
 
 /**
- * xmlCtxtGetPrivate:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the private application data.
+ * @param ctxt  parser context
+ * @returns the private application data.
  */
 void *
-xmlCtxtGetPrivate(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetPrivate(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -3133,16 +3082,15 @@ xmlCtxtGetPrivate(xmlParserCtxtPtr ctxt)
 }
 
 /**
- * xmlCtxtSetPrivate:
- * @ctxt:  parser context
- * @priv:  private application data
+ * Set the private application data.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Set the private application data.
+ * @param ctxt  parser context
+ * @param priv  private application data
  */
 void
-xmlCtxtSetPrivate(xmlParserCtxtPtr ctxt, void *priv) {
+xmlCtxtSetPrivate(xmlParserCtxt *ctxt, void *priv) {
     if (ctxt == NULL)
         return;
 
@@ -3150,15 +3098,13 @@ xmlCtxtSetPrivate(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * xmlCtxtGetCatalogs:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the local catalogs.
+ * @param ctxt  parser context
+ * @returns the local catalogs.
  */
 void *
-xmlCtxtGetCatalogs(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetCatalogs(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -3166,16 +3112,15 @@ xmlCtxtGetCatalogs(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtSetCatalogs:
- * @ctxt:  parser context
- * @catalogs:  catalogs pointer
+ * Set the local catalogs.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Set the local catalogs.
+ * @param ctxt  parser context
+ * @param catalogs  catalogs pointer
  */
 void
-xmlCtxtSetCatalogs(xmlParserCtxtPtr ctxt, void *catalogs) {
+xmlCtxtSetCatalogs(xmlParserCtxt *ctxt, void *catalogs) {
     if (ctxt == NULL)
         return;
 
@@ -3183,15 +3128,13 @@ xmlCtxtSetCatalogs(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtGetDict:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the dictionary.
+ * @param ctxt  parser context
+ * @returns the dictionary.
  */
-xmlDictPtr
-xmlCtxtGetDict(xmlParserCtxtPtr ctxt) {
+xmlDict *
+xmlCtxtGetDict(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -3199,17 +3142,16 @@ xmlCtxtGetDict(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlCtxtSetDict:
- * @ctxt:  parser context
- * @dict:  dictionary
- *
- * Available since 2.14.0.
- *
  * Set the dictionary. This should only be done immediately after
  * creating a parser context.
+ *
+ * @since 2.14.0
+ *
+ * @param ctxt  parser context
+ * @param dict  dictionary
  */
 void
-xmlCtxtSetDict(xmlParserCtxtPtr ctxt, xmlDictPtr dict) {
+xmlCtxtSetDict(xmlParserCtxt *ctxt, xmlDict *dict) {
     if (ctxt == NULL)
         return;
 
@@ -3221,16 +3163,14 @@ xmlCtxtSetDict(xmlParserCtxtPtr ctxt, xm
 }
 
 /**
- * xmlCtxtGetSaxHandler:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the SAX handler struct. This is not a copy and must not
+ * @param ctxt  parser context
+ * @returns the SAX handler struct. This is not a copy and must not
  * be freed. Handlers can be updated.
  */
 xmlSAXHandler *
-xmlCtxtGetSaxHandler(xmlParserCtxtPtr ctxt) {
+xmlCtxtGetSaxHandler(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -3238,19 +3178,17 @@ xmlCtxtGetSaxHandler(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlCtxtSetSaxHandler:
- * @ctxt:  parser context
- * @sax:  SAX handler
+ * Set the SAX handler struct to a copy of `sax`.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Set the SAX handler struct to a copy of @sax.
- *
- * Returns 0 on success or -1 if arguments are invalid or a memory
+ * @param ctxt  parser context
+ * @param sax  SAX handler
+ * @returns 0 on success or -1 if arguments are invalid or a memory
  * allocation failed.
  */
 int
-xmlCtxtSetSaxHandler(xmlParserCtxtPtr ctxt, const xmlSAXHandler *sax) {
+xmlCtxtSetSaxHandler(xmlParserCtxt *ctxt, const xmlSAXHandler *sax) {
     xmlSAXHandler *copy;
 
     if ((ctxt == NULL) || (sax == NULL))
@@ -3267,17 +3205,15 @@ xmlCtxtSetSaxHandler(xmlParserCtxtPtr ct
 }
 
 /**
- * xmlCtxtGetDocument:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns the parsed document or NULL if a fatal error occurred when
+ * @param ctxt  parser context
+ * @returns the parsed document or NULL if a fatal error occurred when
  * parsing. The document must be freed by the caller. Resets the
  * context's document to NULL.
  */
-xmlDocPtr
-xmlCtxtGetDocument(xmlParserCtxtPtr ctxt) {
+xmlDoc *
+xmlCtxtGetDocument(xmlParserCtxt *ctxt) {
     xmlDocPtr doc;
 
     if (ctxt == NULL)
@@ -3299,15 +3235,13 @@ xmlCtxtGetDocument(xmlParserCtxtPtr ctxt
 }
 
 /**
- * xmlCtxtIsHtml:
- * @ctxt:  parser context
- *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns 1 if this is a HTML parser context, 0 otherwise.
+ * @param ctxt  parser context
+ * @returns 1 if this is a HTML parser context, 0 otherwise.
  */
 int
-xmlCtxtIsHtml(xmlParserCtxtPtr ctxt) {
+xmlCtxtIsHtml(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(0);
 
@@ -3315,32 +3249,57 @@ xmlCtxtIsHtml(xmlParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlCtxtIsStopped:
- * @ctxt:  parser context
+ * Check whether the parser is stopped.
  *
- * Available since 2.14.0.
+ * The parser is stopped on fatal (non-wellformedness) errors or
+ * on user request with #xmlStopParser.
  *
- * Returns 1 if the parser is stopped, 0 otherwise.
+ * @since 2.14.0
+ *
+ * @param ctxt  parser context
+ * @returns 1 if the parser is stopped, 0 otherwise.
  */
 int
-xmlCtxtIsStopped(xmlParserCtxtPtr ctxt) {
+xmlCtxtIsStopped(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(0);
 
     return(ctxt->disableSAX != 0);
 }
 
-#ifdef LIBXML_VALID_ENABLED
 /**
- * xmlCtxtGetValidCtxt:
- * @ctxt:  parser context
+ * Check whether a DTD subset is being parsed.
+ *
+ * Should only be used by SAX callbacks.
+ *
+ * Return values are
+ *
+ * - 0: not in DTD
+ * - 1: in internal DTD subset
+ * - 2: in external DTD subset
  *
- * Available since 2.14.0.
+ * @since 2.15.0
  *
- * Returns the validation context.
+ * @param ctxt  parser context
+ * @returns the subset status
  */
-xmlValidCtxtPtr
-xmlCtxtGetValidCtxt(xmlParserCtxtPtr ctxt) {
+int
+xmlCtxtIsInSubset(xmlParserCtxt *ctxt) {
+    if (ctxt == NULL)
+        return(0);
+
+    return(ctxt->inSubset);
+}
+
+#ifdef LIBXML_VALID_ENABLED
+/**
+ * @since 2.14.0
+ *
+ * @param ctxt  parser context
+ * @returns the validation context.
+ */
+xmlValidCtxt *
+xmlCtxtGetValidCtxt(xmlParserCtxt *ctxt) {
     if (ctxt == NULL)
         return(NULL);
 
@@ -3348,6 +3307,188 @@ xmlCtxtGetValidCtxt(xmlParserCtxtPtr ctx
 }
 #endif
 
+/**
+ * Return user data.
+ *
+ * Return user data of a custom SAX parser or the parser context
+ * itself if unset.
+ *
+ * @since 2.15.0
+ *
+ * @param ctxt  parser context
+ * @returns the user data.
+ */
+void *
+xmlCtxtGetUserData(xmlParserCtxt *ctxt) {
+    if (ctxt == NULL)
+        return NULL;
+
+    return ctxt->userData;
+}
+
+/**
+ * Return the current node being parsed.
+ *
+ * This is only useful if the default SAX callbacks which build
+ * a document tree are intercepted. This mode of operation is
+ * fragile and discouraged.
+ *
+ * Returns the current element node, or the document node if no
+ * element was parsed yet.
+ *
+ * @since 2.15.0
+ *
+ * @param ctxt  parser context
+ * @returns the current node.
+ */
+xmlNode *
+xmlCtxtGetNode(xmlParserCtxt *ctxt) {
+    if (ctxt == NULL)
+        return NULL;
+
+    if (ctxt->node != NULL)
+        return ctxt->node;
+    return (xmlNode *) ctxt->myDoc;
+}
+
+/**
+ * Return data from the doctype declaration.
+ *
+ * Should only be used by SAX callbacks.
+ *
+ * @since 2.15.0
+ *
+ * @param ctxt  parser context
+ * @param name  name of the root element (output)
+ * @param systemId  system ID (URI) of the external subset (output)
+ * @param publicId  public ID of the external subset (output)
+ * @returns 0 on success, -1 if argument is invalid
+ */
+int
+xmlCtxtGetDocTypeDecl(xmlParserCtxt *ctxt,
+                      const xmlChar **name,
+                      const xmlChar **systemId,
+                      const xmlChar **publicId) {
+    if (ctxt == NULL)
+        return -1;
+
+    if (name != NULL)
+        *name = ctxt->intSubName;
+    if (systemId != NULL)
+        *systemId = ctxt->extSubURI;
+    if (publicId != NULL)
+        *publicId = ctxt->extSubSystem; /* The member is misnamed */
+
+    return 0;
+}
+
+/**
+ * Return input position.
+ *
+ * Should only be used by error handlers or SAX callbacks.
+ *
+ * Because of entities, there can be multiple inputs. Non-negative
+ * values of `inputIndex` (0, 1, 2, ...)  select inputs starting
+ * from the outermost input. Negative values (-1, -2, ...) select
+ * inputs starting from the innermost input.
+ *
+ * The byte position is counted in possibly decoded UTF-8 bytes,
+ * so it won't match the position in the raw input data.
+ *
+ * @since 2.15.0
+ *
+ * @param ctxt  parser context
+ * @param inputIndex  input index
+ * @param filename  filename (output)
+ * @param line  line number (output)
+ * @param col  column number (output)
+ * @param utf8BytePos  byte position (output)
+ * @returns 0 on success, -1 if arguments are invalid
+ */
+int
+xmlCtxtGetInputPosition(xmlParserCtxt *ctxt, int inputIndex,
+                        const char **filename, int *line, int *col,
+                        unsigned long *utf8BytePos) {
+    xmlParserInput *input;
+
+    if (ctxt == NULL)
+        return -1;
+
+    if (inputIndex < 0) {
+        inputIndex += ctxt->inputNr;
+        if (inputIndex < 0)
+            return -1;
+    }
+    if (inputIndex >= ctxt->inputNr)
+        return -1;
+
+    input = ctxt->inputTab[inputIndex];
+
+    if (filename != NULL)
+        *filename = input->filename;
+    if (line != NULL)
+        *line = input->line;
+    if (col != NULL)
+        *col = input->col;
+
+    if (utf8BytePos != NULL) {
+        unsigned long consumed;
+
+        consumed = input->consumed;
+        xmlSaturatedAddSizeT(&consumed, input->cur - input->base);
+        *utf8BytePos = consumed;
+    }
+
+    return 0;
+}
+
+/**
+ * Return window into input data.
+ *
+ * Should only be used by error handlers or SAX callbacks.
+ * The returned pointer is only valid until the callback returns.
+ *
+ * Because of entities, there can be multiple inputs. Non-negative
+ * values of `inputIndex` (0, 1, 2, ...)  select inputs starting
+ * from the outermost input. Negative values (-1, -2, ...) select
+ * inputs starting from the innermost input.
+ *
+ * @since 2.15.0
+ *
+ * @param ctxt  parser context
+ * @param inputIndex  input index
+ * @param startOut  start of window (output)
+ * @param sizeInOut  maximum size of window (in)
+ *                   actual size of window (out)
+ * @param offsetOut  offset of current position inside
+ *                   window (out)
+ * @returns 0 on success, -1 if arguments are invalid
+ */
+int
+xmlCtxtGetInputWindow(xmlParserCtxt *ctxt, int inputIndex,
+                      const xmlChar **startOut,
+                      int *sizeInOut, int *offsetOut) {
+    xmlParserInput *input;
+
+    if (ctxt == NULL || startOut == NULL || sizeInOut == NULL ||
+        offsetOut == NULL)
+        return -1;
+
+    if (inputIndex < 0) {
+        inputIndex += ctxt->inputNr;
+        if (inputIndex < 0)
+            return -1;
+    }
+    if (inputIndex >= ctxt->inputNr)
+        return -1;
+
+    input = ctxt->inputTab[inputIndex];
+
+    xmlParserInputGetWindow(input, startOut, sizeInOut, offsetOut);
+
+    return 0;
+}
+
 /************************************************************************
  *									*
  *		Handling of node information				*
@@ -3355,35 +3496,30 @@ xmlCtxtGetValidCtxt(xmlParserCtxtPtr ctx
  ************************************************************************/
 
 /**
- * xmlClearParserCtxt:
- * @ctxt:  an XML parser context
+ * Same as #xmlCtxtReset
+ *
+ * @deprecated Use #xmlCtxtReset
  *
- * Clear (release owned resources) and reinitialize a parser context
+ * @param ctxt  an XML parser context
  */
-
 void
-xmlClearParserCtxt(xmlParserCtxtPtr ctxt)
+xmlClearParserCtxt(xmlParserCtxt *ctxt)
 {
-  if (ctxt==NULL)
-    return;
-  xmlClearNodeInfoSeq(&ctxt->node_seq);
-  xmlCtxtReset(ctxt);
+    xmlCtxtReset(ctxt);
 }
 
 
 /**
- * xmlParserFindNodeInfo:
- * @ctx:  an XML parser context
- * @node:  an XML node within the tree
- *
- * DEPRECATED: Don't use.
- *
  * Find the parser node info struct for a given node
  *
- * Returns an xmlParserNodeInfo block pointer or NULL
+ * @deprecated Don't use.
+ *
+ * @param ctx  an XML parser context
+ * @param node  an XML node within the tree
+ * @returns an xmlParserNodeInfo block pointer or NULL
  */
 const xmlParserNodeInfo *
-xmlParserFindNodeInfo(xmlParserCtxtPtr ctx, xmlNodePtr node)
+xmlParserFindNodeInfo(xmlParserCtxt *ctx, xmlNode *node)
 {
     unsigned long pos;
 
@@ -3400,15 +3536,14 @@ xmlParserFindNodeInfo(xmlParserCtxtPtr c
 
 
 /**
- * xmlInitNodeInfoSeq:
- * @seq:  a node info sequence pointer
+ * Initialize (set to initial state) node info sequence
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * -- Initialize (set to initial state) node info sequence
+ * @param seq  a node info sequence pointer
  */
 void
-xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq)
+xmlInitNodeInfoSeq(xmlParserNodeInfoSeq *seq)
 {
     if (seq == NULL)
         return;
@@ -3418,16 +3553,14 @@ xmlInitNodeInfoSeq(xmlParserNodeInfoSeqP
 }
 
 /**
- * xmlClearNodeInfoSeq:
- * @seq:  a node info sequence pointer
+ * Clear (release memory and reinitialize) node info sequence
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * -- Clear (release memory and reinitialize) node
- *   info sequence
+ * @param seq  a node info sequence pointer
  */
 void
-xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq)
+xmlClearNodeInfoSeq(xmlParserNodeInfoSeq *seq)
 {
     if (seq == NULL)
         return;
@@ -3437,20 +3570,18 @@ xmlClearNodeInfoSeq(xmlParserNodeInfoSeq
 }
 
 /**
- * xmlParserFindNodeInfoIndex:
- * @seq:  a node info sequence pointer
- * @node:  an XML node pointer
- *
- * DEPRECATED: Don't use.
+ * Find the index that the info record for the given node is or
+ * should be at in a sorted sequence.
  *
- * xmlParserFindNodeInfoIndex : Find the index that the info record for
- *   the given node is or should be at in a sorted sequence
+ * @deprecated Don't use.
  *
- * Returns a long indicating the position of the record
+ * @param seq  a node info sequence pointer
+ * @param node  an XML node pointer
+ * @returns a long indicating the position of the record
  */
 unsigned long
-xmlParserFindNodeInfoIndex(xmlParserNodeInfoSeqPtr seq,
-                           xmlNodePtr node)
+xmlParserFindNodeInfoIndex(xmlParserNodeInfoSeq *seq,
+                           xmlNode *node)
 {
     unsigned long upper, lower, middle;
     int found = 0;
@@ -3481,17 +3612,16 @@ xmlParserFindNodeInfoIndex(xmlParserNode
 
 
 /**
- * xmlParserAddNodeInfo:
- * @ctxt:  an XML parser context
- * @info:  a node info sequence pointer
+ * Insert node info record into the sorted sequence
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Insert node info record into the sorted sequence
+ * @param ctxt  an XML parser context
+ * @param info  a node info sequence pointer
  */
 void
-xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
-                     xmlParserNodeInfoPtr info)
+xmlParserAddNodeInfo(xmlParserCtxt *ctxt,
+                     xmlParserNodeInfo *info)
 {
     unsigned long pos;
 
@@ -3548,14 +3678,12 @@ xmlParserAddNodeInfo(xmlParserCtxtPtr ct
  *									*
  ************************************************************************/
 /**
- * xmlPedanticParserDefault:
- * @val:  int 0 or 1
- *
- * DEPRECATED: Use the modern options API with XML_PARSE_PEDANTIC.
- *
  * Set and return the previous value for enabling pedantic warnings.
  *
- * Returns the last value for 0 for no substitution, 1 for substitution.
+ * @deprecated Use the modern options API with XML_PARSE_PEDANTIC.
+ *
+ * @param val  int 0 or 1
+ * @returns the last value for 0 for no substitution, 1 for substitution.
  */
 
 int
@@ -3567,39 +3695,26 @@ xmlPedanticParserDefault(int val) {
 }
 
 /**
- * xmlLineNumbersDefault:
- * @val:  int 0 or 1
- *
- * DEPRECATED: The modern options API always enables line numbers.
+ * Has no effect.
  *
- * 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.
+ * @deprecated Line numbers are always enabled.
  *
- * Returns the last value for 0 for no substitution, 1 for substitution.
+ * @param val  int 0 or 1
+ * @returns 1
  */
 
 int
-xmlLineNumbersDefault(int val) {
-    int old = xmlLineNumbersDefaultValue;
-
-    xmlLineNumbersDefaultValue = val;
-    return(old);
+xmlLineNumbersDefault(int val ATTRIBUTE_UNUSED) {
+    return(1);
 }
 
 /**
- * xmlSubstituteEntitiesDefault:
- * @val:  int 0 or 1
- *
- * DEPRECATED: Use the modern options API with XML_PARSE_NOENT.
- *
  * 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.
  *
- * Returns the last value for 0 for no substitution, 1 for substitution.
+ * @deprecated Use the modern options API with XML_PARSE_NOENT.
+ *
+ * @param val  int 0 or 1
+ * @returns the last value for 0 for no substitution, 1 for substitution.
  */
 
 int
@@ -3611,29 +3726,12 @@ xmlSubstituteEntitiesDefault(int val) {
 }
 
 /**
- * xmlKeepBlanksDefault:
- * @val:  int 0 or 1
- *
- * DEPRECATED: Use the modern options API with XML_PARSE_NOBLANKS.
- *
  * 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'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 "empty"
- * nodes generated.
- * This value also affect autogeneration of indentation when saving code
- * if blanks sections are kept, indentation is not generated.
  *
- * Returns the last value for 0 for no substitution, 1 for substitution.
+ * @deprecated Use the modern options API with XML_PARSE_NOBLANKS.
+ *
+ * @param val  int 0 or 1
+ * @returns the last value for 0 for no substitution, 1 for substitution.
  */
 
 int
diff -pruN 2.14.6+dfsg-0.1/pattern.c 2.15.0+dfsg-0.3/pattern.c
--- 2.14.6+dfsg-0.1/pattern.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/pattern.c	2025-09-15 11:55:59.000000000 +0000
@@ -8,13 +8,13 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 /*
  * TODO:
  * - compilation flags to check for specific syntaxes
- *   using flags of xmlPatterncompile()
+ *   using flags of #xmlPatterncompile
  * - making clear how pattern starting with / or . need to be handled,
  *   currently push(NULL, NULL) means a reset of the streaming context
  *   and indicating we are on / (the document node), probably need
@@ -35,6 +35,7 @@
 #include <libxml/parserInternals.h>
 
 #include "private/memory.h"
+#include "private/parser.h"
 
 #ifdef LIBXML_PATTERN_ENABLED
 
@@ -192,11 +193,9 @@ struct _xmlPatParserContext {
  ************************************************************************/
 
 /**
- * xmlNewPattern:
- *
  * Create a new XSLT Pattern
  *
- * Returns the newly allocated xmlPatternPtr or NULL in case of error
+ * @returns the newly allocated xmlPattern or NULL in case of error
  */
 static xmlPatternPtr
 xmlNewPattern(void) {
@@ -215,13 +214,12 @@ xmlNewPattern(void) {
 }
 
 /**
- * xmlFreePattern:
- * @comp:  an XSLT comp
+ * Free up the memory allocated by `comp`
  *
- * Free up the memory allocated by @comp
+ * @param comp  an XSLT comp
  */
 void
-xmlFreePattern(xmlPatternPtr comp) {
+xmlFreePattern(xmlPattern *comp) {
     xmlFreePatternList(comp);
 }
 
@@ -256,13 +254,12 @@ xmlFreePatternInternal(xmlPatternPtr com
 }
 
 /**
- * xmlFreePatternList:
- * @comp:  an XSLT comp list
+ * Free up the memory allocated by all the elements of `comp`
  *
- * Free up the memory allocated by all the elements of @comp
+ * @param comp  an XSLT comp list
  */
 void
-xmlFreePatternList(xmlPatternPtr comp) {
+xmlFreePatternList(xmlPattern *comp) {
     xmlPatternPtr cur;
 
     while (comp != NULL) {
@@ -274,15 +271,13 @@ xmlFreePatternList(xmlPatternPtr comp) {
 }
 
 /**
- * xmlNewPatParserContext:
- * @pattern:  the pattern context
- * @dict:  the inherited dictionary or NULL
- * @namespaces: the prefix definitions, array of [URI, prefix] terminated
- *              with [NULL, NULL] or NULL if no namespace is used
- *
  * Create a new XML pattern parser context
  *
- * Returns the newly allocated xmlPatParserContextPtr or NULL in case of error
+ * @param pattern  the pattern context
+ * @param dict  the inherited dictionary or NULL
+ * @param namespaces  the prefix definitions, array of [URI, prefix] terminated
+ *              with [NULL, NULL] or NULL if no namespace is used
+ * @returns the newly allocated xmlPatParserContext or NULL in case of error
  */
 static xmlPatParserContextPtr
 xmlNewPatParserContext(const xmlChar *pattern, xmlDictPtr dict,
@@ -315,10 +310,9 @@ xmlNewPatParserContext(const xmlChar *pa
 }
 
 /**
- * xmlFreePatParserContext:
- * @ctxt:  an XSLT parser context
+ * Free up the memory allocated by `ctxt`
  *
- * Free up the memory allocated by @ctxt
+ * @param ctxt  an XSLT parser context
  */
 static void
 xmlFreePatParserContext(xmlPatParserContextPtr ctxt) {
@@ -347,15 +341,14 @@ xmlPatternGrow(xmlPatternPtr comp) {
 }
 
 /**
- * xmlPatternAdd:
- * @comp:  the compiled match expression
- * @op:  an op
- * @value:  the first value
- * @value2:  the second value
- *
  * Add a step to an XSLT Compiled Match
  *
- * Returns -1 in case of failure, 0 otherwise.
+ * @param ctxt  the pattern parser context
+ * @param comp  the compiled match expression
+ * @param op  an op
+ * @param value  the first value
+ * @param value2  the second value
+ * @returns -1 in case of failure, 0 otherwise.
  */
 static int
 xmlPatternAdd(xmlPatParserContextPtr ctxt, xmlPatternPtr comp,
@@ -375,12 +368,10 @@ xmlPatternAdd(xmlPatParserContextPtr ctx
 }
 
 /**
- * xmlReversePattern:
- * @comp:  the compiled match expression
- *
  * reverse all the stack of expressions
  *
- * returns 0 in case of success and -1 in case of error.
+ * @param comp  the compiled match expression
+ * @returns 0 in case of success and -1 in case of error.
  */
 static int
 xmlReversePattern(xmlPatternPtr comp) {
@@ -458,13 +449,11 @@ xmlPatPushState(xmlStepStates *states, i
 }
 
 /**
- * xmlPatMatch:
- * @comp: the precompiled pattern
- * @node: a node
- *
  * Test whether the node matches the pattern
  *
- * Returns 1 if it matches, 0 if it doesn't and -1 in case of failure
+ * @param comp  the precompiled pattern
+ * @param node  a node
+ * @returns 1 if it matches, 0 if it doesn't and -1 in case of failure
  */
 static int
 xmlPatMatch(xmlPatternPtr comp, xmlNodePtr node) {
@@ -683,9 +672,6 @@ rollback:
     if (xmlPatternAdd(ctxt, ctxt->comp, (op), (val), (val2))) goto error;
 
 /**
- * xmlPatScanName:
- * @ctxt:  the XPath Parser context
- *
  * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' |
  *                  CombiningChar | Extender
  *
@@ -693,30 +679,21 @@ rollback:
  *
  * [6] Names ::= Name (S Name)*
  *
- * Returns the Name parsed or NULL
+ * @param ctxt  the XPath Parser context
+ * @returns the Name parsed or NULL
  */
 
 static xmlChar *
 xmlPatScanName(xmlPatParserContextPtr ctxt) {
     const xmlChar *q, *cur;
     xmlChar *ret = NULL;
-    int val, len;
 
     SKIP_BLANKS;
 
-    cur = q = CUR_PTR;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    if (!IS_LETTER(val) && (val != '_') && (val != ':'))
-	return(NULL);
-
-    while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
-           (val == '.') || (val == '-') ||
-	   (val == '_') ||
-	   (IS_COMBINING(val)) ||
-	   (IS_EXTENDER(val))) {
-	cur += len;
-	val = xmlStringCurrentChar(NULL, cur, &len);
-    }
+    q = CUR_PTR;
+    cur = xmlScanName(q, XML_MAX_NAME_LENGTH, 0);
+    if ((cur == NULL) || (cur == q))
+        return(NULL);
     if (ctxt->dict)
 	ret = (xmlChar *) xmlDictLookup(ctxt->dict, q, cur - q);
     else
@@ -726,35 +703,23 @@ xmlPatScanName(xmlPatParserContextPtr ct
 }
 
 /**
- * xmlPatScanNCName:
- * @ctxt:  the XPath Parser context
- *
  * Parses a non qualified name
  *
- * Returns the Name parsed or NULL
+ * @param ctxt  the XPath Parser context
+ * @returns the Name parsed or NULL
  */
 
 static xmlChar *
 xmlPatScanNCName(xmlPatParserContextPtr ctxt) {
     const xmlChar *q, *cur;
     xmlChar *ret = NULL;
-    int val, len;
 
     SKIP_BLANKS;
 
-    cur = q = CUR_PTR;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    if (!IS_LETTER(val) && (val != '_'))
-	return(NULL);
-
-    while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
-           (val == '.') || (val == '-') ||
-	   (val == '_') ||
-	   (IS_COMBINING(val)) ||
-	   (IS_EXTENDER(val))) {
-	cur += len;
-	val = xmlStringCurrentChar(NULL, cur, &len);
-    }
+    q = CUR_PTR;
+    cur = xmlScanName(q, XML_MAX_NAME_LENGTH, XML_SCAN_NC);
+    if ((cur == NULL) || (cur == q))
+        return(NULL);
     if (ctxt->dict)
 	ret = (xmlChar *) xmlDictLookup(ctxt->dict, q, cur - q);
     else
@@ -766,10 +731,9 @@ xmlPatScanNCName(xmlPatParserContextPtr
 }
 
 /**
- * xmlCompileAttributeTest:
- * @ctxt:  the compilation context
- *
  * Compile an attribute test.
+ *
+ * @param ctxt  the compilation context
  */
 static void
 xmlCompileAttributeTest(xmlPatParserContextPtr ctxt) {
@@ -857,14 +821,13 @@ error:
 }
 
 /**
- * xmlCompileStepPattern:
- * @ctxt:  the compilation context
- *
  * Compile the Step Pattern and generates a precompiled
  * form suitable for fast matching.
  *
  * [3]    Step    ::=    '.' | NameTest
  * [4]    NameTest    ::=    QName | '*' | NCName ':' '*'
+ *
+ * @param ctxt  the compilation context
  */
 
 static void
@@ -1080,13 +1043,12 @@ error:
 }
 
 /**
- * xmlCompilePathPattern:
- * @ctxt:  the compilation context
- *
  * Compile the Path Pattern and generates a precompiled
  * form suitable for fast matching.
  *
  * [5]    Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ *
+ * @param ctxt  the compilation context
  */
 static void
 xmlCompilePathPattern(xmlPatParserContextPtr ctxt) {
@@ -1179,13 +1141,12 @@ error:
 }
 
 /**
- * xmlCompileIDCXPathPath:
- * @ctxt:  the compilation context
- *
  * Compile the Path Pattern and generates a precompiled
  * form suitable for fast matching.
  *
  * [5]    Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ *
+ * @param ctxt  the compilation context
  */
 static void
 xmlCompileIDCXPathPath(xmlPatParserContextPtr ctxt) {
@@ -1285,12 +1246,10 @@ error_unfinished:
  ************************************************************************/
 
 /**
- * xmlNewStreamComp:
- * @size: the number of expected steps
- *
  * build a new compiled pattern for streaming
  *
- * Returns the new structure or NULL in case of error.
+ * @param size  the number of expected steps
+ * @returns the new structure or NULL in case of error.
  */
 static xmlStreamCompPtr
 xmlNewStreamComp(int size) {
@@ -1319,10 +1278,9 @@ xmlNewStreamComp(int size) {
 }
 
 /**
- * xmlFreeStreamComp:
- * @comp: the compiled pattern for streaming
- *
  * Free the compiled pattern for streaming
+ *
+ * @param comp  the compiled pattern for streaming
  */
 static void
 xmlFreeStreamComp(xmlStreamCompPtr comp) {
@@ -1336,15 +1294,14 @@ xmlFreeStreamComp(xmlStreamCompPtr comp)
 }
 
 /**
- * xmlStreamCompAddStep:
- * @comp: the compiled pattern for streaming
- * @name: the first string, the name, or NULL for *
- * @ns: the second step, the namespace name
- * @flags: the flags for that step
- *
  * Add a new step to the compiled pattern
  *
- * Returns -1 in case of error or the step index if successful
+ * @param comp  the compiled pattern for streaming
+ * @param name  the first string, the name, or NULL for *
+ * @param ns  the second step, the namespace name
+ * @param nodeType  the node type
+ * @param flags  the flags for that step
+ * @returns -1 in case of error or the step index if successful
  */
 static int
 xmlStreamCompAddStep(xmlStreamCompPtr comp, const xmlChar *name,
@@ -1380,12 +1337,10 @@ xmlStreamCompAddStep(xmlStreamCompPtr co
 }
 
 /**
- * xmlStreamCompile:
- * @comp: the precompiled pattern
- *
  * Tries to stream compile a pattern
  *
- * Returns -1 in case of failure and 0 in case of success.
+ * @param comp  the precompiled pattern
+ * @returns -1 in case of failure and 0 in case of success.
  */
 static int
 xmlStreamCompile(xmlPatternPtr comp) {
@@ -1559,12 +1514,10 @@ error:
 }
 
 /**
- * xmlNewStreamCtxt:
- * @size: the number of expected states
- *
  * build a new stream context
  *
- * Returns the new structure or NULL in case of error.
+ * @param stream  the copmiled stream
+ * @returns the new structure or NULL in case of error.
  */
 static xmlStreamCtxtPtr
 xmlNewStreamCtxt(xmlStreamCompPtr stream) {
@@ -1587,13 +1540,12 @@ xmlNewStreamCtxt(xmlStreamCompPtr stream
 }
 
 /**
- * xmlFreeStreamCtxt:
- * @stream: the stream context
- *
  * Free the stream context
+ *
+ * @param stream  the stream context
  */
 void
-xmlFreeStreamCtxt(xmlStreamCtxtPtr stream) {
+xmlFreeStreamCtxt(xmlStreamCtxt *stream) {
     xmlStreamCtxtPtr next;
 
     while (stream != NULL) {
@@ -1606,13 +1558,12 @@ xmlFreeStreamCtxt(xmlStreamCtxtPtr strea
 }
 
 /**
- * xmlStreamCtxtAddState:
- * @comp: the stream context
- * @idx: the step index for that streaming state
- *
  * Add a new state to the stream context
  *
- * Returns -1 in case of error or the state index if successful
+ * @param comp  the stream context
+ * @param idx  the step index for that streaming state
+ * @param level  the level
+ * @returns -1 in case of error or the state index if successful
  */
 static int
 xmlStreamCtxtAddState(xmlStreamCtxtPtr comp, int idx, int level) {
@@ -1650,19 +1601,17 @@ xmlStreamCtxtAddState(xmlStreamCtxtPtr c
 }
 
 /**
- * xmlStreamPushInternal:
- * @stream: the stream context
- * @name: the current name
- * @ns: the namespace name
- * @nodeType: the type of the node
- *
- * Push new data onto the stream. NOTE: if the call xmlPatterncompile()
+ * Push new data onto the stream. NOTE: if the call #xmlPatterncompile
  * indicated a dictionary, 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.
+ * Both `name` and `ns` being NULL means the / i.e. the root of the document.
  * This can also act as a reset.
  *
- * Returns: -1 in case of error, 1 if the current state in the stream is a
+ * @param stream  the stream context
+ * @param name  the current name
+ * @param ns  the namespace name
+ * @param nodeType  the type of the node
+ * @returns -1 in case of error, 1 if the current state in the stream is a
  *    match and 0 otherwise.
  */
 static int
@@ -1974,48 +1923,44 @@ stream_next:
 }
 
 /**
- * xmlStreamPush:
- * @stream: the stream context
- * @name: the current name
- * @ns: the namespace name
- *
- * Push new data onto the stream. NOTE: if the call xmlPatterncompile()
+ * Push new data onto the stream. NOTE: if the call #xmlPatterncompile
  * indicated a dictionary, 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.
+ * Both `name` and `ns` being NULL means the / i.e. the root of the document.
  * This can also act as a reset.
  * Otherwise the function will act as if it has been given an element-node.
  *
- * Returns: -1 in case of error, 1 if the current state in the stream is a
+ * @param stream  the stream context
+ * @param name  the current name
+ * @param ns  the namespace name
+ * @returns -1 in case of error, 1 if the current state in the stream is a
  *    match and 0 otherwise.
  */
 int
-xmlStreamPush(xmlStreamCtxtPtr stream,
+xmlStreamPush(xmlStreamCtxt *stream,
               const xmlChar *name, const xmlChar *ns) {
     return (xmlStreamPushInternal(stream, name, ns, XML_ELEMENT_NODE));
 }
 
 /**
- * xmlStreamPushNode:
- * @stream: the stream context
- * @name: the current name
- * @ns: the namespace name
- * @nodeType: the type of the node being pushed
- *
- * Push new data onto the stream. NOTE: if the call xmlPatterncompile()
+ * Push new data onto the stream. NOTE: if the call #xmlPatterncompile
  * indicated a dictionary, 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.
+ * Both `name` and `ns` being NULL means the / i.e. the root of the document.
  * This can also act as a reset.
- * Different from xmlStreamPush() this function can be fed with nodes of type:
+ * Different from #xmlStreamPush this function can be fed with nodes of type:
  * element-, attribute-, text-, cdata-section-, comment- and
  * processing-instruction-node.
  *
- * Returns: -1 in case of error, 1 if the current state in the stream is a
+ * @param stream  the stream context
+ * @param name  the current name
+ * @param ns  the namespace name
+ * @param nodeType  the type of the node being pushed
+ * @returns -1 in case of error, 1 if the current state in the stream is a
  *    match and 0 otherwise.
  */
 int
-xmlStreamPushNode(xmlStreamCtxtPtr stream,
+xmlStreamPushNode(xmlStreamCtxt *stream,
 		  const xmlChar *name, const xmlChar *ns,
 		  int nodeType)
 {
@@ -2024,37 +1969,36 @@ xmlStreamPushNode(xmlStreamCtxtPtr strea
 }
 
 /**
-* xmlStreamPushAttr:
-* @stream: the stream context
-* @name: the current name
-* @ns: the namespace name
-*
-* Push new attribute data onto the stream. NOTE: if the call xmlPatterncompile()
-* indicated a dictionary, 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.
-* Otherwise the function will act as if it has been given an attribute-node.
-*
-* Returns: -1 in case of error, 1 if the current state in the stream is a
-*    match and 0 otherwise.
-*/
+ * Push new attribute data onto the stream.
+ *
+ * NOTE: If the call to #xmlPatterncompile indicated a dictionary,
+ * then strings for `name` and `ns` will be expected to come from
+ * the dictionary.
+ *
+ * Both `name` and `ns` being NULL means the root of the document.
+ * This can also act as a reset. Otherwise the function will act as
+ * if it has been given an attribute-node.
+ *
+ * @param stream  the stream context
+ * @param name  the current name
+ * @param ns  the namespace name
+ * @returns -1 in case of error, 1 if the current state in the stream
+ * is a match and 0 otherwise.
+ */
 int
-xmlStreamPushAttr(xmlStreamCtxtPtr stream,
+xmlStreamPushAttr(xmlStreamCtxt *stream,
 		  const xmlChar *name, const xmlChar *ns) {
     return (xmlStreamPushInternal(stream, name, ns, XML_ATTRIBUTE_NODE));
 }
 
 /**
- * xmlStreamPop:
- * @stream: the stream context
- *
  * push one level from the stream.
  *
- * Returns: -1 in case of error, 0 otherwise.
+ * @param stream  the stream context
+ * @returns -1 in case of error, 0 otherwise.
  */
 int
-xmlStreamPop(xmlStreamCtxtPtr stream) {
+xmlStreamPop(xmlStreamCtxt *stream) {
     int i, lev;
 
     if (stream == NULL)
@@ -2090,19 +2034,17 @@ xmlStreamPop(xmlStreamCtxtPtr stream) {
 }
 
 /**
- * xmlStreamWantsAnyNode:
- * @streamCtxt: the stream context
- *
  * Query if the streaming pattern additionally needs to be fed with
  * text-, cdata-section-, comment- and processing-instruction-nodes.
  * If the result is 0 then only element-nodes and attribute-nodes
  * need to be pushed.
  *
- * Returns: 1 in case of need of nodes of the above described types,
+ * @param streamCtxt  the stream context
+ * @returns 1 in case of need of nodes of the above described types,
  *          0 otherwise. -1 on API errors.
  */
 int
-xmlStreamWantsAnyNode(xmlStreamCtxtPtr streamCtxt)
+xmlStreamWantsAnyNode(xmlStreamCtxt *streamCtxt)
 {
     if (streamCtxt == NULL)
 	return(-1);
@@ -2121,22 +2063,20 @@ xmlStreamWantsAnyNode(xmlStreamCtxtPtr s
  ************************************************************************/
 
 /**
- * xmlPatternCompileSafe:
- * @pattern: the pattern to compile
- * @dict: an optional dictionary for interned strings
- * @flags: compilation flags, see xmlPatternFlags
- * @namespaces: the prefix definitions, array of [URI, prefix] or NULL
- * @patternOut: output pattern
- *
  * Compile a pattern.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 on success, 1 on error, -1 if a memory allocation failed.
+ * @param pattern  the pattern to compile
+ * @param dict  an optional dictionary for interned strings
+ * @param flags  compilation flags, see xmlPatternFlags
+ * @param namespaces  the prefix definitions, array of [URI, prefix] or NULL
+ * @param patternOut  output pattern
+ * @returns 0 on success, 1 on error, -1 if a memory allocation failed.
  */
 int
 xmlPatternCompileSafe(const xmlChar *pattern, xmlDict *dict, int flags,
-                      const xmlChar **namespaces, xmlPatternPtr *patternOut) {
+                      const xmlChar **namespaces, xmlPattern **patternOut) {
     xmlPatternPtr ret = NULL, cur;
     xmlPatParserContextPtr ctxt = NULL;
     const xmlChar *or, *start;
@@ -2251,17 +2191,15 @@ error:
 }
 
 /**
- * xmlPatterncompile:
- * @pattern: the pattern to compile
- * @dict: an optional dictionary for interned strings
- * @flags: compilation flags, see xmlPatternFlags
- * @namespaces: the prefix definitions, array of [URI, prefix] or NULL
- *
  * Compile a pattern.
  *
- * Returns the compiled form of the pattern or NULL in case of error
+ * @param pattern  the pattern to compile
+ * @param dict  an optional dictionary for interned strings
+ * @param flags  compilation flags, see xmlPatternFlags
+ * @param namespaces  the prefix definitions, array of [URI, prefix] or NULL
+ * @returns the compiled form of the pattern or NULL in case of error
  */
-xmlPatternPtr
+xmlPattern *
 xmlPatterncompile(const xmlChar *pattern, xmlDict *dict, int flags,
                   const xmlChar **namespaces) {
     xmlPatternPtr ret;
@@ -2270,16 +2208,14 @@ xmlPatterncompile(const xmlChar *pattern
 }
 
 /**
- * xmlPatternMatch:
- * @comp: the precompiled pattern
- * @node: a node
- *
  * Test whether the node matches the pattern
  *
- * Returns 1 if it matches, 0 if it doesn't and -1 in case of failure
+ * @param comp  the precompiled pattern
+ * @param node  a node
+ * @returns 1 if it matches, 0 if it doesn't and -1 in case of failure
  */
 int
-xmlPatternMatch(xmlPatternPtr comp, xmlNodePtr node)
+xmlPatternMatch(xmlPattern *comp, xmlNode *node)
 {
     int ret = 0;
 
@@ -2296,16 +2232,14 @@ xmlPatternMatch(xmlPatternPtr comp, xmlN
 }
 
 /**
- * xmlPatternGetStreamCtxt:
- * @comp: the precompiled pattern
- *
  * Get a streaming context for that pattern
- * Use xmlFreeStreamCtxt to free the context.
+ * Use #xmlFreeStreamCtxt to free the context.
  *
- * Returns a pointer to the context or NULL in case of failure
+ * @param comp  the precompiled pattern
+ * @returns a pointer to the context or NULL in case of failure
  */
-xmlStreamCtxtPtr
-xmlPatternGetStreamCtxt(xmlPatternPtr comp)
+xmlStreamCtxt *
+xmlPatternGetStreamCtxt(xmlPattern *comp)
 {
     xmlStreamCtxtPtr ret = NULL, cur;
 
@@ -2334,16 +2268,14 @@ failed:
 }
 
 /**
- * xmlPatternStreamable:
- * @comp: the precompiled pattern
- *
- * Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt()
+ * Check if the pattern is streamable i.e. #xmlPatternGetStreamCtxt
  * should work.
  *
- * Returns 1 if streamable, 0 if not and -1 in case of error.
+ * @param comp  the precompiled pattern
+ * @returns 1 if streamable, 0 if not and -1 in case of error.
  */
 int
-xmlPatternStreamable(xmlPatternPtr comp) {
+xmlPatternStreamable(xmlPattern *comp) {
     if (comp == NULL)
         return(-1);
     while (comp != NULL) {
@@ -2355,16 +2287,14 @@ xmlPatternStreamable(xmlPatternPtr comp)
 }
 
 /**
- * xmlPatternMaxDepth:
- * @comp: the precompiled pattern
- *
  * Check the maximum depth reachable by a pattern
  *
- * Returns -2 if no limit (using //), otherwise the depth,
+ * @param comp  the precompiled pattern
+ * @returns -2 if no limit (using //), otherwise the depth,
  *         and -1 in case of error
  */
 int
-xmlPatternMaxDepth(xmlPatternPtr comp) {
+xmlPatternMaxDepth(xmlPattern *comp) {
     int ret = 0, i;
     if (comp == NULL)
         return(-1);
@@ -2382,17 +2312,14 @@ xmlPatternMaxDepth(xmlPatternPtr comp) {
 }
 
 /**
- * xmlPatternMinDepth:
- * @comp: the precompiled pattern
- *
  * Check the minimum depth reachable by a pattern, 0 mean the / or . are
  * part of the set.
  *
- * Returns -1 in case of error otherwise the depth,
- *
+ * @param comp  the precompiled pattern
+ * @returns -1 in case of error otherwise the depth,
  */
 int
-xmlPatternMinDepth(xmlPatternPtr comp) {
+xmlPatternMinDepth(xmlPattern *comp) {
     int ret = 12345678;
     if (comp == NULL)
         return(-1);
@@ -2409,15 +2336,13 @@ xmlPatternMinDepth(xmlPatternPtr comp) {
 }
 
 /**
- * xmlPatternFromRoot:
- * @comp: the precompiled pattern
- *
  * Check if the pattern must be looked at from the root.
  *
- * Returns 1 if true, 0 if false and -1 in case of error
+ * @param comp  the precompiled pattern
+ * @returns 1 if true, 0 if false and -1 in case of error
  */
 int
-xmlPatternFromRoot(xmlPatternPtr comp) {
+xmlPatternFromRoot(xmlPattern *comp) {
     if (comp == NULL)
         return(-1);
     while (comp != NULL) {
diff -pruN 2.14.6+dfsg-0.1/python/Makefile.am 2.15.0+dfsg-0.3/python/Makefile.am
--- 2.14.6+dfsg-0.1/python/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -9,7 +9,6 @@ SUBDIRS = . tests
 EXTRA_DIST = 			\
 	generator.py		\
 	libxml.py		\
-	libxml2-python-api.xml  \
 	pyproject.toml		\
 	meson.build
 
@@ -31,9 +30,9 @@ BUILT_SOURCES = libxml2-export.c libxml2
 python_PYTHON = drv_libxml2.py
 nodist_python_PYTHON = libxml2.py
 
-API_DESC = $(top_srcdir)/doc/libxml2-api.xml $(srcdir)/libxml2-python-api.xml
-GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
-CLEANFILES = libxml2.py $(GENERATED)
+API_DESC = ../doc/html.stamp
+GENERATED = libxml2.py $(BUILT_SOURCES)
+CLEANFILES = $(GENERATED)
 
 all-local: libxml2.py
 
@@ -43,9 +42,6 @@ $(GENERATED): $(srcdir)/generator.py $(A
 # libxml.c #includes libxml2-export.c
 libxml.$(OBJEXT): libxml2-export.c
 
-libxml2.py: $(srcdir)/libxml.py libxml2class.py
-	cat $(srcdir)/libxml.py `test -f libxml2class.py || echo $(srcdir)/`libxml2class.py > $@
-
 clean-local:
 	rm -rf __pycache__ *.pyc
 
diff -pruN 2.14.6+dfsg-0.1/python/Makefile.in 2.15.0+dfsg-0.3/python/Makefile.in
--- 2.14.6+dfsg-0.1/python/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -283,6 +283,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -322,8 +323,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -361,10 +360,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -373,7 +370,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -463,7 +459,6 @@ SUBDIRS = . tests
 EXTRA_DIST = \
 	generator.py		\
 	libxml.py		\
-	libxml2-python-api.xml  \
 	pyproject.toml		\
 	meson.build
 
@@ -480,9 +475,9 @@ EXTRA_DIST = \
 @WITH_PYTHON_TRUE@BUILT_SOURCES = libxml2-export.c libxml2-py.h libxml2-py.c
 @WITH_PYTHON_TRUE@python_PYTHON = drv_libxml2.py
 @WITH_PYTHON_TRUE@nodist_python_PYTHON = libxml2.py
-@WITH_PYTHON_TRUE@API_DESC = $(top_srcdir)/doc/libxml2-api.xml $(srcdir)/libxml2-python-api.xml
-@WITH_PYTHON_TRUE@GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
-@WITH_PYTHON_TRUE@CLEANFILES = libxml2.py $(GENERATED)
+@WITH_PYTHON_TRUE@API_DESC = ../doc/html.stamp
+@WITH_PYTHON_TRUE@GENERATED = libxml2.py $(BUILT_SOURCES)
+@WITH_PYTHON_TRUE@CLEANFILES = $(GENERATED)
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -1003,9 +998,6 @@ uninstall-am: uninstall-nodist_pythonPYT
 # libxml.c #includes libxml2-export.c
 @WITH_PYTHON_TRUE@libxml.$(OBJEXT): libxml2-export.c
 
-@WITH_PYTHON_TRUE@libxml2.py: $(srcdir)/libxml.py libxml2class.py
-@WITH_PYTHON_TRUE@	cat $(srcdir)/libxml.py `test -f libxml2class.py || echo $(srcdir)/`libxml2class.py > $@
-
 @WITH_PYTHON_TRUE@clean-local:
 @WITH_PYTHON_TRUE@	rm -rf __pycache__ *.pyc
 
diff -pruN 2.14.6+dfsg-0.1/python/README 2.15.0+dfsg-0.3/python/README
--- 2.14.6+dfsg-0.1/python/README	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/README	2025-09-15 11:55:59.000000000 +0000
@@ -1,6 +1,9 @@
 		Module libxml2-python
 		=====================
 
+DEPRECATION WARNING: It is planned to remove the libxml2 Python
+bindings from the libxml2 repo.
+
 This is the libxml2 python module, providing access to the
 libxml2 and libxslt (if available) libraries. For general
 informationss on those XML and XSLT libraries check their 
diff -pruN 2.14.6+dfsg-0.1/python/generator.py 2.15.0+dfsg-0.3/python/generator.py
--- 2.14.6+dfsg-0.1/python/generator.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/generator.py	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,299 @@
 # generate python wrappers from the XML API description
 #
 
-functions = {}
+functions = {
+    'xmlRegisterXPathFunction': (
+        'Register a Python written function to the XPath interpreter',
+        ['int', '1 in case of success, 0 or -1 in case of error', None],
+        [['ctx', 'xmlXPathContext *', 'the xpathContext'], ['name', 'xmlChar *', 'the function name'], ['ns_uri', 'xmlChar *', 'the namespace or NULL'], ['f', 'pythonObject', 'the python function']],
+        'python', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathRegisterVariable': (
+        'Register a variable with the XPath context',
+        ['int', '1 in case of success, 0 or -1 in case of error', None],
+        [['ctx', 'xmlXPathContext *', 'the xpathContext'], ['name', 'xmlChar *', 'the variable name'], ['ns_uri', 'xmlChar *', 'the namespace or NULL'], ['value', 'pythonObject', 'the value']],
+        'python', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlNewNode': (
+        'Create a new Node',
+        ['xmlNode *', 'A new element node', None],
+        [['name', 'xmlChar *', 'the node name']],
+        'python', None),
+    'xmlCreatePushParser': (
+        'Create a progressive XML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.',
+        ['xmlParserCtxt *', 'the parser context or None in case of error', None],
+        [['SAX', 'pythonObject', 'the SAX callback object or None'], ['chunk', 'xmlChar *', 'the initial data'], ['size', 'int', 'the size of the initial data'], ['URI', 'xmlChar *', 'The URI used for base computations']],
+        'python', None),
+    'htmlCreatePushParser': (
+        'Create a progressive HTML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.',
+        ['xmlParserCtxt *', 'the parser context or None in case of error', None],
+        [['SAX', 'pythonObject', 'the SAX callback object or None'], ['chunk', 'xmlChar *', 'the initial data'], ['size', 'int', 'the size of the initial data'], ['URI', 'xmlChar *', 'The URI used for base computations']],
+        'python', 'defined(LIBXML_HTML_ENABLED)'),
+    'xmlSAXParseFile': (
+        'Interface to parse an XML file or resource pointed by an URI to build an event flow to the SAX object',
+        ['void', None, None],
+        [['SAX', 'pythonObject', 'the SAX callback object or None'], ['URI', 'xmlChar *', 'The URI of the resource'], ['recover', 'int', 'allow recovery in case of error']],
+        'python', None),
+    'htmlSAXParseFile': (
+        'Interface to parse an HTML file or resource pointed by an URI to build an event flow to the SAX object',
+        ['void', None, None],
+        [['SAX', 'pythonObject', 'the SAX callback object or None'], ['URI', 'xmlChar *', 'The URI of the resource'], ['encoding', 'const char *', 'encoding or None']],
+        'python', 'defined(LIBXML_HTML_ENABLED)'),
+    'xmlCreateOutputBuffer': (
+        'Create a libxml2 output buffer from a Python file',
+        ['xmlOutputBuffer *', 'the output buffer', None],
+        [['file', 'pythonObject', 'the Python file'], ['encoding', 'xmlChar *', 'an optional encoding']],
+        'python', None),
+    'xmlCreateInputBuffer': (
+        'Create a libxml2 input buffer from a Python file',
+        ['xmlParserInputBuffer *', 'the input buffer', None],
+        [['file', 'pythonObject', 'the Python file'], ['encoding', 'xmlChar *', 'an optional encoding']],
+        'python', None),
+    'xmlSetEntityLoader': (
+        'Set the entity resolver as a python function',
+        ['int', '0 in case of success, -1 for error', None],
+        [['resolver', 'pythonObject', 'the Python function']],
+        'python', None),
+    'xmlParserGetDoc': (
+        'Get the document tree from a parser context.',
+        ['xmlDoc *', 'the document tree', 'myDoc'],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context']],
+        'python_accessor', None),
+    'xmlParserGetWellFormed': (
+        'Get the well formed information from a parser context.',
+        ['int', 'the wellFormed field', 'wellFormed'],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context']],
+        'python_accessor', None),
+    'xmlParserGetIsValid': (
+        'Get the validity information from a parser context.',
+        ['int', 'the valid field', 'valid'],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context']],
+        'python_accessor', None),
+    'xmlParserSetValidate': (
+        'Switch the parser to validation mode.',
+        ['void', None, None],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context'], ['validate', 'int', '1 to activate validation']],
+        'python_accessor', None),
+    'xmlParserSetReplaceEntities': (
+        'Switch the parser to replace entities.',
+        ['void', None, None],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context'], ['replaceEntities', 'int', '1 to replace entities']],
+        'python_accessor', None),
+    'xmlParserSetPedantic': (
+        'Switch the parser to be pedantic.',
+        ['void', None, None],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context'], ['pedantic', 'int', '1 to run in pedantic mode']],
+        'python_accessor', None),
+    'xmlParserSetLoadSubset': (
+        'Switch the parser to load the DTD without validating.',
+        ['void', None, None],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context'], ['loadsubset', 'int', '1 to load the DTD']],
+        'python_accessor', None),
+    'xmlParserSetLineNumbers': (
+        'Switch on the generation of line number for elements nodes.',
+        ['void', None, None],
+        [['ctxt', 'xmlParserCtxt *', 'the parser context'], ['linenumbers', 'int', 'unused']],
+        'python_accessor', None),
+    'xmlDebugMemory': (
+        'Switch on the generation of line number for elements nodes. Also returns the number of bytes allocated and not freed by libxml2 since memory debugging was switched on.',
+        ['int', 'returns the number of bytes allocated and not freed', None],
+        [['activate', 'int', '1 switch on memory debugging 0 switch it off']],
+        'python', None),
+    'xmlNodeGetNs': (
+        'Get the namespace of a node',
+        ['xmlNs *', 'The namespace or None', None],
+        [['node', 'xmlNode *', 'the node']],
+        'python_accessor', None),
+    'xmlNodeGetNsDefs': (
+        'Get the namespace of a node',
+        ['xmlNs *', 'The namespace or None', None],
+        [['node', 'xmlNode *', 'the node']],
+        'python_accessor', None),
+    'xmlXPathParserGetContext': (
+        'Get the xpathContext from an xpathParserContext',
+        ['xmlXPathContext *', 'The XPath context', 'context'],
+        [['ctxt', 'xmlXPathParserContext *', 'the XPath parser context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetContextDoc': (
+        'Get the doc from an xpathContext',
+        ['xmlDoc *', 'The doc context', 'doc'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetContextNode': (
+        'Get the current node from an xpathContext',
+        ['xmlNode *', 'The node context', 'node'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathSetContextDoc': (
+        'Set the doc of an xpathContext',
+        ['void', None, None],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context'], ['doc', 'xmlDoc *', 'The doc context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathSetContextNode': (
+        'Set the current node of an xpathContext',
+        ['void', None, None],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context'], ['node', 'xmlNode *', 'The node context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetContextPosition': (
+        'Get the current node from an xpathContext',
+        ['int', 'The node context', 'proximityPosition'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetContextSize': (
+        'Get the current node from an xpathContext',
+        ['int', 'The node context', 'contextSize'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetFunction': (
+        'Get the current function name xpathContext',
+        ['const xmlChar *', 'The function name', 'function'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlXPathGetFunctionURI': (
+        'Get the current function name URI xpathContext',
+        ['const xmlChar *', 'The function name URI', 'functionURI'],
+        [['ctxt', 'xmlXPathContext *', 'the XPath context']],
+        'python_accessor', 'defined(LIBXML_XPATH_ENABLED)'),
+    'xmlURIGetScheme': (
+        'Get the scheme part from an URI',
+        ['const char *', 'The URI scheme', 'scheme'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetScheme': (
+        'Set the scheme part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['scheme', 'char *', 'The URI scheme part']],
+        'python_accessor', None),
+    'xmlURIGetOpaque': (
+        'Get the opaque part from an URI',
+        ['const char *', 'The URI opaque', 'opaque'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetOpaque': (
+        'Set the opaque part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['opaque', 'char *', 'The URI opaque part']],
+        'python_accessor', None),
+    'xmlURIGetAuthority': (
+        'Get the authority part from an URI',
+        ['const char *', 'The URI authority', 'authority'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetAuthority': (
+        'Set the authority part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['authority', 'char *', 'The URI authority part']],
+        'python_accessor', None),
+    'xmlURIGetServer': (
+        'Get the server part from an URI',
+        ['const char *', 'The URI server', 'server'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetServer': (
+        'Set the server part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['server', 'char *', 'The URI server part']],
+        'python_accessor', None),
+    'xmlURIGetUser': (
+        'Get the user part from an URI',
+        ['const char *', 'The URI user', 'user'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetUser': (
+        'Set the user part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['user', 'char *', 'The URI user part']],
+        'python_accessor', None),
+    'xmlURIGetPath': (
+        'Get the path part from an URI',
+        ['const char *', 'The URI path', 'path'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetPath': (
+        'Set the path part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['path', 'char *', 'The URI path part']],
+        'python_accessor', None),
+    'xmlURIGetQuery': (
+        'Get the query part from an URI',
+        ['const char *', 'The URI query', 'query'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetQuery': (
+        'Set the query part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['query', 'char *', 'The URI query part']],
+        'python_accessor', None),
+    'xmlURIGetQueryRaw': (
+        'Get the raw query part from an URI (i.e. the unescaped form).',
+        ['const char *', 'The URI query', 'query_raw'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetQueryRaw': (
+        'Set the raw query part of an URI (i.e. the unescaped form).',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['query_raw', 'char *', 'The raw URI query part']],
+        'python_accessor', None),
+    'xmlURIGetFragment': (
+        'Get the fragment part from an URI',
+        ['const char *', 'The URI fragment', 'fragment'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetFragment': (
+        'Set the fragment part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['fragment', 'char *', 'The URI fragment part']],
+        'python_accessor', None),
+    'xmlURIGetPort': (
+        'Get the port part from an URI',
+        ['int', 'The URI port', 'port'],
+        [['URI', 'xmlURI *', 'the URI']],
+        'python_accessor', None),
+    'xmlURISetPort': (
+        'Set the port part of an URI.',
+        ['void', None, None],
+        [['URI', 'xmlURI *', 'the URI'], ['port', 'int', 'The URI port part']],
+        'python_accessor', None),
+    'xmlErrorGetDomain': (
+        'What part of the library raised this error',
+        ['int', 'The error domain', 'domain'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlErrorGetCode': (
+        'The error code, e.g. an xmlParserError',
+        ['int', 'The error code', 'code'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlErrorGetMessage': (
+        'human-readable informative error message',
+        ['const char *', 'The error message', 'message'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlErrorGetLevel': (
+        'how consequent is the error',
+        ['int', 'The error level', 'level'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlErrorGetFile': (
+        'the filename',
+        ['const char *', 'The error file', 'file'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlErrorGetLine': (
+        'the line number if available',
+        ['int', 'The error line', 'line'],
+        [['Error', 'xmlError *', 'the Error']],
+        'python_accessor', None),
+    'xmlPythonCleanupParser': (
+        "Cleanup function for the XML library. It tries to reclaim all parsing related global memory allocated for the library processing. It doesn'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.",
+        ['void', None, None],
+        [],
+        'python', None),
+    'xmlMemoryUsed': (
+        'Returns the total amount of memory allocated by libxml2',
+        ['int', 'number of bytes allocated', None],
+        [],
+        'python', None)
+}
+
 enums = {} # { enumType: { enumConstant: enumValue } }
 
 import os
@@ -24,132 +316,6 @@ else:
 
 #######################################################################
 #
-#  That part if purely the API acquisition phase from the
-#  XML API description
-#
-#######################################################################
-import os
-import xml.sax
-
-debug = 0
-
-def getparser():
-    # Attach parser to an unmarshalling object. return both objects.
-    target = docParser()
-    parser = xml.sax.make_parser()
-    parser.setContentHandler(target)
-    return parser, target
-
-class docParser(xml.sax.handler.ContentHandler):
-    def __init__(self):
-        self._methodname = None
-        self._data = []
-        self.in_function = 0
-
-        self.startElement = self.start
-        self.endElement = self.end
-        self.characters = self.data
-
-    def close(self):
-        if debug:
-            print("close")
-
-    def getmethodname(self):
-        return self._methodname
-
-    def data(self, text):
-        if debug:
-            print("data %s" % text)
-        self._data.append(text)
-
-    def start(self, tag, attrs):
-        if debug:
-            print("start %s, %s" % (tag, attrs))
-        if tag == 'function':
-            self._data = []
-            self.in_function = 1
-            self.function = None
-            self.function_cond = None
-            self.function_args = []
-            self.function_descr = None
-            self.function_return = None
-            self.function_file = None
-            if 'name' in attrs.keys():
-                self.function = attrs['name']
-            if 'file' in attrs.keys():
-                self.function_file = attrs['file']
-        elif tag == 'cond':
-            self._data = []
-        elif tag == 'info':
-            self._data = []
-        elif tag == 'arg':
-            if self.in_function == 1:
-                self.function_arg_name = None
-                self.function_arg_type = None
-                self.function_arg_info = None
-                if 'name' in attrs.keys():
-                    self.function_arg_name = attrs['name']
-                if 'type' in attrs.keys():
-                    self.function_arg_type = attrs['type']
-                if 'info' in attrs.keys():
-                    self.function_arg_info = attrs['info']
-        elif tag == 'return':
-            if self.in_function == 1:
-                self.function_return_type = None
-                self.function_return_info = None
-                self.function_return_field = None
-                if 'type' in attrs.keys():
-                    self.function_return_type = attrs['type']
-                if 'info' in attrs.keys():
-                    self.function_return_info = attrs['info']
-                if 'field' in attrs.keys():
-                    self.function_return_field = attrs['field']
-        elif tag == 'enum':
-            enum(attrs['type'],attrs['name'],attrs['value'])
-
-    def end(self, tag):
-        if debug:
-            print("end %s" % tag)
-        if tag == 'function':
-            if self.function != None:
-                function(self.function, self.function_descr,
-                         self.function_return, self.function_args,
-                         self.function_file, self.function_cond)
-                self.in_function = 0
-        elif tag == 'arg':
-            if self.in_function == 1:
-                self.function_args.append([self.function_arg_name,
-                                           self.function_arg_type,
-                                           self.function_arg_info])
-        elif tag == 'return':
-            if self.in_function == 1:
-                self.function_return = [self.function_return_type,
-                                        self.function_return_info,
-                                        self.function_return_field]
-        elif tag == 'info':
-            str = ''
-            for c in self._data:
-                str = str + c
-            if self.in_function == 1:
-                self.function_descr = str
-        elif tag == 'cond':
-            str = ''
-            for c in self._data:
-                str = str + c
-            if self.in_function == 1:
-                self.function_cond = str
-
-
-def function(name, desc, ret, args, file, cond):
-    functions[name] = (desc, ret, args, file, cond)
-
-def enum(type, name, value):
-    if type not in enums:
-        enums[type] = {}
-    enums[type][name] = value
-
-#######################################################################
-#
 #  Some filtering rukes to drop functions/types which should not
 #  be exposed as-is on the Python interface
 #
@@ -165,18 +331,144 @@ skipped_modules = {
 }
 skipped_types = {
     'int *': "usually a return type",
-    'xmlSAXHandlerPtr': "not the proper interface for SAX",
-    'htmlSAXHandlerPtr': "not the proper interface for SAX",
-    'xmlRMutexPtr': "thread specific, skipped",
-    'xmlMutexPtr': "thread specific, skipped",
-    'xmlGlobalStatePtr': "thread specific, skipped",
-    'xmlListPtr': "internal representation not suitable for python",
-    'xmlBufferPtr': "internal representation not suitable for python",
+    'xmlSAXHandler *': "not the proper interface for SAX",
+    'htmlSAXHandler *': "not the proper interface for SAX",
+    'xmlRMutex *': "thread specific, skipped",
+    'xmlMutex *': "thread specific, skipped",
+    'xmlGlobalState *': "thread specific, skipped",
+    'xmlList *': "internal representation not suitable for python",
+    'xmlBuffer *': "internal representation not suitable for python",
     'FILE *': None,
 }
 
 #######################################################################
 #
+#  That part if purely the API acquisition phase from the
+#  XML API description
+#
+#######################################################################
+import os
+import xml.etree.ElementTree as etree
+
+sys.path.append(srcPref + '/../codegen')
+import xmlmod
+
+xmlDocDir = dstPref + '/../doc/xml'
+if not os.path.isdir(xmlDocDir):
+    xmlDocDir = dstPref + '/doc/xml'
+    if not os.path.isdir(xmlDocDir):
+        raise Exception(f'Doxygen XML not found in {dstPref}')
+
+def extractDocs(node):
+    text = ''
+
+    if node.text is not None:
+        text = node.text.strip()
+        if text == 'Deprecated':
+            text = 'DEPRECATED:'
+
+    i = 0
+    n = len(node)
+    for child in node:
+        i += 1
+
+        if (child.tag != 'parameterlist' and
+            (child.tag != 'simplesect' or child.get('kind') != 'return')):
+            childtext = extractDocs(child)
+            if childtext != '':
+                if text != '':
+                    text += ' '
+                text += childtext
+
+        tail = child.tail
+        if tail is not None:
+            tail = tail.strip()
+            if tail != '':
+                if text != '':
+                    text += ' '
+                text += child.tail.strip()
+
+    return text
+
+for file in os.listdir(xmlDocDir):
+    if not file.endswith('_8h.xml'):
+        continue
+
+    doc = etree.parse(xmlDocDir + '/' + file)
+
+    compound = doc.find('compounddef')
+    module = compound.find('compoundname').text
+    if not module.endswith('.h'):
+        continue
+    module = module[:-2]
+    if module in skipped_modules:
+        continue
+
+    for section in compound.findall('sectiondef'):
+        kind = section.get('kind')
+
+        if kind == 'func':
+            for func in section.findall('memberdef'):
+                name = func.find('name').text
+                if name in functions:
+                    continue
+
+                docs = extractDocs(func.find('detaileddescription'))
+
+                rtype = etree.tostring(func.find('type'),
+                    method='text', encoding='unicode').rstrip()
+
+                valid = True
+                args = []
+                for arg in func.findall('param'):
+                    atype = etree.tostring(arg.find('type'),
+                        method='text', encoding='unicode').rstrip()
+                    if atype == 'void':
+                        continue
+
+                    aname = arg.find('declname')
+                    if aname is None:
+                        valid = False
+                        break
+
+                    args.append([aname.text, atype])
+
+                if not valid:
+                    continue
+
+                module1, module2 = xmlmod.findModules(module, name)
+
+                cond = None
+                if module1 != '':
+                    cond = f'defined(LIBXML_{module1}_ENABLED)'
+                if module2 != '':
+                    cond += f' && defined(LIBXML_{module2}_ENABLED)'
+
+                functions[name] = (docs, [rtype], args, module, cond)
+        elif kind == 'enum':
+            for enum in section.findall('memberdef'):
+                name = enum.find('name').text
+                edict = {}
+                enums[name] = edict
+                prev = -1
+
+                for value in enum.findall('enumvalue'):
+                    ename = value.find('name').text
+
+                    init = value.find('initializer')
+                    if init is None:
+                        evalue = prev + 1
+                    else:
+                        evalue = init.text.lstrip()
+                        if evalue[0] != '=':
+                            raise Exception(f'invalid init value {init}')
+                        evalue = eval(evalue[1:].strip())
+
+                    edict[ename] = evalue
+                    prev = evalue
+
+#######################################################################
+#
 #  Table of remapping to/from the python type or class to the C
 #  counterpart.
 #
@@ -194,74 +486,51 @@ py_types = {
     'const char *':  ('z', None, "charPtrConst", "const char *"),
     'xmlChar *':  ('z', None, "xmlCharPtr", "xmlChar *"),
     'const xmlChar *':  ('z', None, "xmlCharPtrConst", "const xmlChar *"),
-    'xmlNodePtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlNodePtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlDtdPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlDtdPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlDtd *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlDtd *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlAttrPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlAttrPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlAttr *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlAttr *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlEntityPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlEntityPtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlEntity *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const xmlEntity *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlElementPtr':  ('O', "xmlElement", "xmlElementPtr", "xmlElementPtr"),
-    'const xmlElementPtr':  ('O', "xmlElement", "xmlElementPtr", "xmlElementPtr"),
-    'xmlElement *':  ('O', "xmlElement", "xmlElementPtr", "xmlElementPtr"),
-    'const xmlElement *':  ('O', "xmlElement", "xmlElementPtr", "xmlElementPtr"),
-    'xmlAttributePtr':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttributePtr"),
-    'const xmlAttributePtr':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttributePtr"),
-    'xmlAttribute *':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttributePtr"),
-    'const xmlAttribute *':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttributePtr"),
-    'xmlNsPtr':  ('O', "xmlNode", "xmlNsPtr", "xmlNsPtr"),
-    'const xmlNsPtr':  ('O', "xmlNode", "xmlNsPtr", "xmlNsPtr"),
-    'xmlNs *':  ('O', "xmlNode", "xmlNsPtr", "xmlNsPtr"),
-    'const xmlNs *':  ('O', "xmlNode", "xmlNsPtr", "xmlNsPtr"),
-    'xmlDocPtr':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'const xmlDocPtr':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'xmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'const xmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'htmlDocPtr':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'const htmlDocPtr':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'htmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'const htmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDocPtr"),
-    'htmlNodePtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const htmlNodePtr':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'htmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'const htmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNodePtr"),
-    'xmlXPathContextPtr':  ('O', "xmlXPathContext", "xmlXPathContextPtr", "xmlXPathContextPtr"),
-    'xmlXPathContext *':  ('O', "xpathContext", "xmlXPathContextPtr", "xmlXPathContextPtr"),
-    'xmlXPathParserContextPtr':  ('O', "xmlXPathParserContext", "xmlXPathParserContextPtr", "xmlXPathParserContextPtr"),
-    'xmlParserCtxtPtr': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxtPtr"),
-    'xmlParserCtxt *': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxtPtr"),
-    'htmlParserCtxtPtr': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxtPtr"),
-    'htmlParserCtxt *': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxtPtr"),
-    'xmlValidCtxtPtr': ('O', "ValidCtxt", "xmlValidCtxtPtr", "xmlValidCtxtPtr"),
-    'xmlCatalogPtr': ('O', "catalog", "xmlCatalogPtr", "xmlCatalogPtr"),
+    'xmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'const xmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'xmlDtd *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'const xmlDtd *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'xmlAttr *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'const xmlAttr *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'xmlEntity *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'const xmlEntity *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'xmlElement *':  ('O', "xmlElement", "xmlElementPtr", "xmlElement *"),
+    'const xmlElement *':  ('O', "xmlElement", "xmlElementPtr", "xmlElement *"),
+    'xmlAttribute *':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttribute *"),
+    'const xmlAttribute *':  ('O', "xmlAttribute", "xmlAttributePtr", "xmlAttribute *"),
+    'xmlNs *':  ('O', "xmlNode", "xmlNsPtr", "xmlNs *"),
+    'const xmlNs *':  ('O', "xmlNode", "xmlNsPtr", "xmlNs *"),
+    'xmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDoc *"),
+    'const xmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDoc *"),
+    'htmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDoc *"),
+    'const htmlDoc *':  ('O', "xmlNode", "xmlDocPtr", "xmlDoc *"),
+    'htmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'const htmlNode *':  ('O', "xmlNode", "xmlNodePtr", "xmlNode *"),
+    'xmlXPathContext *':  ('O', "xmlXPathContext", "xmlXPathContextPtr", "xmlXPathContext *"),
+    'xmlXPathParserContext *':  ('O', "xmlXPathParserContext", "xmlXPathParserContextPtr", "xmlXPathParserContext *"),
+    'xmlParserCtxt *': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxt *"),
+    'htmlParserCtxt *': ('O', "parserCtxt", "xmlParserCtxtPtr", "xmlParserCtxt *"),
+    'xmlValidCtxt *': ('O', "ValidCtxt", "xmlValidCtxtPtr", "xmlValidCtxt *"),
+    'xmlCatalog *': ('O', "catalog", "xmlCatalogPtr", "xmlCatalog *"),
     'FILE *': ('O', "File", "FILEPtr", "FILE *"),
-    'xmlURIPtr': ('O', "URI", "xmlURIPtr", "xmlURIPtr"),
+    'xmlURI *': ('O', "URI", "xmlURIPtr", "xmlURI *"),
     'const xmlError *': ('O', "Error", "xmlErrorPtr", "const xmlError *"),
-    'xmlErrorPtr': ('O', "Error", "xmlErrorPtr", "xmlErrorPtr"),
-    'xmlOutputBufferPtr': ('O', "outputBuffer", "xmlOutputBufferPtr", "xmlOutputBufferPtr"),
-    'xmlParserInputBufferPtr': ('O', "inputBuffer", "xmlParserInputBufferPtr", "xmlParserInputBufferPtr"),
-    'xmlRegexpPtr': ('O', "xmlReg", "xmlRegexpPtr", "xmlRegexpPtr"),
+    'xmlError *': ('O', "Error", "xmlErrorPtr", "xmlError *"),
+    'xmlOutputBuffer *': ('O', "outputBuffer", "xmlOutputBufferPtr", "xmlOutputBuffer *"),
+    'xmlParserInputBuffer *': ('O', "inputBuffer", "xmlParserInputBufferPtr", "xmlParserInputBuffer *"),
+    'xmlRegexp *': ('O', "xmlReg", "xmlRegexpPtr", "xmlRegexp *"),
     'xmlTextReaderLocatorPtr': ('O', "xmlTextReaderLocator", "xmlTextReaderLocatorPtr", "xmlTextReaderLocatorPtr"),
-    'xmlTextReaderPtr': ('O', "xmlTextReader", "xmlTextReaderPtr", "xmlTextReaderPtr"),
-    'xmlRelaxNGPtr': ('O', "relaxNgSchema", "xmlRelaxNGPtr", "xmlRelaxNGPtr"),
-    'xmlRelaxNGParserCtxtPtr': ('O', "relaxNgParserCtxt", "xmlRelaxNGParserCtxtPtr", "xmlRelaxNGParserCtxtPtr"),
-    'xmlRelaxNGValidCtxtPtr': ('O', "relaxNgValidCtxt", "xmlRelaxNGValidCtxtPtr", "xmlRelaxNGValidCtxtPtr"),
-    'xmlSchemaPtr': ('O', "Schema", "xmlSchemaPtr", "xmlSchemaPtr"),
-    'xmlSchemaParserCtxtPtr': ('O', "SchemaParserCtxt", "xmlSchemaParserCtxtPtr", "xmlSchemaParserCtxtPtr"),
-    'xmlSchemaValidCtxtPtr': ('O', "SchemaValidCtxt", "xmlSchemaValidCtxtPtr", "xmlSchemaValidCtxtPtr"),
+    'xmlTextReader *': ('O', "xmlTextReader", "xmlTextReaderPtr", "xmlTextReader *"),
+    'xmlRelaxNG *': ('O', "relaxNgSchema", "xmlRelaxNGPtr", "xmlRelaxNG *"),
+    'xmlRelaxNGParserCtxt *': ('O', "relaxNgParserCtxt", "xmlRelaxNGParserCtxtPtr", "xmlRelaxNGParserCtxt *"),
+    'xmlRelaxNGValidCtxt *': ('O', "relaxNgValidCtxt", "xmlRelaxNGValidCtxtPtr", "xmlRelaxNGValidCtxt *"),
+    'xmlSchema *': ('O', "Schema", "xmlSchemaPtr", "xmlSchema *"),
+    'xmlSchemaParserCtxt *': ('O', "SchemaParserCtxt", "xmlSchemaParserCtxtPtr", "xmlSchemaParserCtxt *"),
+    'xmlSchemaValidCtxt *': ('O', "SchemaValidCtxt", "xmlSchemaValidCtxtPtr", "xmlSchemaValidCtxt *"),
 }
 
 py_return_types = {
-    'xmlXPathObjectPtr':  ('O', "foo", "xmlXPathObjectPtr", "xmlXPathObjectPtr"),
+    'xmlXPathObject *':  ('O', "foo", "xmlXPathObjectPtr", "xmlXPathObject *"),
 }
 
 unknown_types = {}
@@ -301,37 +570,69 @@ deprecated_funcs = {
     'htmlInitAutoClose': True,
     'htmlIsAutoClosed': True,
     'htmlIsBooleanAttr': True,
+    'htmlIsScriptAttribute': True,
     'htmlParseCharRef': True,
     'htmlParseElement': True,
+    'xmlACatalogAdd': True,
+    'xmlACatalogDump': True,
+    'xmlACatalogRemove': True,
+    'xmlACatalogResolve': True,
+    'xmlACatalogResolvePublic': True,
+    'xmlACatalogResolveSystem': True,
+    'xmlACatalogResolveURI': True,
+    'xmlAddEncodingAlias': True,
     'xmlByteConsumed': True,
+    'xmlCatalogConvert': True,
+    'xmlCatalogGetPublic': True,
+    'xmlCatalogGetSystem': True,
+    'xmlCatalogIsEmpty': True,
     'xmlCheckFilename': True,
     'xmlCheckLanguageID': True,
     'xmlCleanupCharEncodingHandlers': True,
+    'xmlCleanupEncodingAliases': True,
     'xmlCleanupGlobals': True,
+    'xmlClearParserCtxt': True,
+    'xmlConvertSGMLCatalog': True,
     'xmlCopyChar': True,
     'xmlCopyCharMultiByte': True,
     'xmlCreateEntityParserCtxt': True,
     'xmlDefaultSAXHandlerInit': True,
+    'xmlDelEncodingAlias': True,
     'xmlDictCleanup': True,
     'xmlFileMatch': True,
+    'xmlFreeCatalog': True,
     'xmlGetCompressMode': True,
+    'xmlGetEncodingAlias': True,
     'xmlInitCharEncodingHandlers': True,
     'xmlInitGlobals': True,
     'xmlInitializeDict': True,
     'xmlIOFTPMatch': True,
     'xmlIOHTTPMatch': True,
+    'xmlIsBaseChar': True,
+    'xmlIsBlank': True,
+    'xmlIsChar': True,
+    'xmlIsCombining': True,
+    'xmlIsDigit': True,
+    'xmlIsExtender': True,
+    'xmlIsIdeographic': True,
     'xmlIsLetter': True,
+    'xmlIsMixedElement': True,
+    'xmlIsPubidChar': True,
     'xmlIsRef': True,
     'xmlKeepBlanksDefault': True,
     'xmlLineNumbersDefault': True,
+    'xmlLoadACatalog': True,
+    'xmlLoadSGMLSuperCatalog': True,
     'xmlNanoHTTPCleanup': True,
     'xmlNanoHTTPInit': True,
     'xmlNanoHTTPScanProxy': True,
+    'xmlNewCatalog': True,
     'xmlNextChar': True,
     'xmlNormalizeWindowsPath': True,
     'xmlParseAttValue': True,
     'xmlParseAttributeListDecl': True,
     'xmlParseCDSect': True,
+    'xmlParseCatalogFile': True,
     'xmlParseCharData': True,
     'xmlParseCharRef': True,
     'xmlParseComment': True,
@@ -444,6 +745,8 @@ def skip_function(name):
         return 1
     if name == "xmlSchemaFreeValidCtxt":
         return 1
+    if name[0:5] == "__xml":
+        return 1
 
 #
 # Those are skipped because the Const version is used of the bindings
@@ -601,7 +904,7 @@ def print_function_wrapper(name, output,
     include.write("PyObject * ")
     include.write("libxml_%s(PyObject *self, PyObject *args);\n" % (name))
 
-    export.write("    { (char *)\"%s\", libxml_%s, METH_VARARGS, NULL },\n" %
+    export.write("    { \"%s\", libxml_%s, METH_VARARGS, NULL },\n" %
                  (name, name))
 
     if file == "python":
@@ -638,7 +941,7 @@ def print_function_wrapper(name, output,
                      name)
         output.write("        return(NULL);\n")
     if format != "":
-        output.write("\n    if (!PyArg_ParseTuple(args, (char *)\"%s\"%s))\n" %
+        output.write("\n    if (!PyArg_ParseTuple(args, \"%s\"%s))\n" %
                      (format, format_args))
         output.write("        return(NULL);\n")
     if c_convert != "":
@@ -664,39 +967,7 @@ def buildStubs():
     global py_return_types
     global unknown_types
 
-    try:
-        f = open(os.path.join(srcPref,"libxml2-api.xml"))
-        data = f.read()
-        (parser, target)  = getparser()
-        parser.feed(data)
-        parser.close()
-    except IOError as msg:
-        try:
-            f = open(os.path.join(srcPref,"..","doc","libxml2-api.xml"))
-            data = f.read()
-            (parser, target)  = getparser()
-            parser.feed(data)
-            parser.close()
-        except IOError as msg:
-            print(file, ":", msg)
-            sys.exit(1)
-
-    n = len(list(functions.keys()))
-    print("Found %d functions in libxml2-api.xml" % (n))
-
     py_types['pythonObject'] = ('O', "pythonObject", "pythonObject", "pythonObject")
-    try:
-        f = open(os.path.join(srcPref,"libxml2-python-api.xml"))
-        data = f.read()
-        (parser, target)  = getparser()
-        parser.feed(data)
-        parser.close()
-    except IOError as msg:
-        print(file, ":", msg)
-
-
-    print("Found %d functions in libxml2-python-api.xml" % (
-          len(list(functions.keys())) - n))
     nb_wrap = 0
     failed = 0
     skipped = 0
@@ -728,8 +999,8 @@ def buildStubs():
     export.close()
     wrapper.close()
 
-    print("Generated %d wrapper functions, %d failed, %d skipped" % (nb_wrap,
-                                                              failed, skipped))
+#    print("Generated %d wrapper functions, %d failed, %d skipped" % (nb_wrap,
+#                                                              failed, skipped))
 #    print("Missing type converters: ")
 #    for type in list(unknown_types.keys()):
 #        print("%s:%d " % (type, len(unknown_types[type])))
@@ -747,52 +1018,40 @@ def buildStubs():
 # The type automatically remapped to generated classes
 #
 classes_type = {
-    "xmlNodePtr": ("._o", "xmlNode(_obj=%s)", "xmlNode"),
     "xmlNode *": ("._o", "xmlNode(_obj=%s)", "xmlNode"),
-    "xmlDocPtr": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
     "xmlDoc *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
-    "htmlDocPtr": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
-    "htmlxmlDocPtr *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
-    "xmlAttrPtr": ("._o", "xmlAttr(_obj=%s)", "xmlAttr"),
+    "htmlDoc *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
+    "htmlxmlDoc * *": ("._o", "xmlDoc(_obj=%s)", "xmlDoc"),
     "xmlAttr *": ("._o", "xmlAttr(_obj=%s)", "xmlAttr"),
-    "xmlNsPtr": ("._o", "xmlNs(_obj=%s)", "xmlNs"),
     "xmlNs *": ("._o", "xmlNs(_obj=%s)", "xmlNs"),
-    "xmlDtdPtr": ("._o", "xmlDtd(_obj=%s)", "xmlDtd"),
     "xmlDtd *": ("._o", "xmlDtd(_obj=%s)", "xmlDtd"),
-    "xmlEntityPtr": ("._o", "xmlEntity(_obj=%s)", "xmlEntity"),
     "xmlEntity *": ("._o", "xmlEntity(_obj=%s)", "xmlEntity"),
-    "xmlElementPtr": ("._o", "xmlElement(_obj=%s)", "xmlElement"),
     "xmlElement *": ("._o", "xmlElement(_obj=%s)", "xmlElement"),
-    "xmlAttributePtr": ("._o", "xmlAttribute(_obj=%s)", "xmlAttribute"),
     "xmlAttribute *": ("._o", "xmlAttribute(_obj=%s)", "xmlAttribute"),
-    "xmlXPathContextPtr": ("._o", "xpathContext(_obj=%s)", "xpathContext"),
     "xmlXPathContext *": ("._o", "xpathContext(_obj=%s)", "xpathContext"),
     "xmlXPathParserContext *": ("._o", "xpathParserContext(_obj=%s)", "xpathParserContext"),
-    "xmlXPathParserContextPtr": ("._o", "xpathParserContext(_obj=%s)", "xpathParserContext"),
-    "xmlParserCtxtPtr": ("._o", "parserCtxt(_obj=%s)", "parserCtxt"),
     "xmlParserCtxt *": ("._o", "parserCtxt(_obj=%s)", "parserCtxt"),
-    "htmlParserCtxtPtr": ("._o", "parserCtxt(_obj=%s)", "parserCtxt"),
     "htmlParserCtxt *": ("._o", "parserCtxt(_obj=%s)", "parserCtxt"),
-    "xmlValidCtxtPtr": ("._o", "ValidCtxt(_obj=%s)", "ValidCtxt"),
-    "xmlCatalogPtr": ("._o", "catalog(_obj=%s)", "catalog"),
-    "xmlURIPtr": ("._o", "URI(_obj=%s)", "URI"),
+    "xmlValidCtxt *": ("._o", "ValidCtxt(_obj=%s)", "ValidCtxt"),
+    "xmlCatalog *": ("._o", "catalog(_obj=%s)", "catalog"),
+    "xmlURI *": ("._o", "URI(_obj=%s)", "URI"),
     "const xmlError *": ("._o", "Error(_obj=%s)", "Error"),
-    "xmlErrorPtr": ("._o", "Error(_obj=%s)", "Error"),
-    "xmlOutputBufferPtr": ("._o", "outputBuffer(_obj=%s)", "outputBuffer"),
-    "xmlParserInputBufferPtr": ("._o", "inputBuffer(_obj=%s)", "inputBuffer"),
-    "xmlRegexpPtr": ("._o", "xmlReg(_obj=%s)", "xmlReg"),
+    "xmlError *": ("._o", "Error(_obj=%s)", "Error"),
+    "xmlOutputBuffer *": ("._o", "outputBuffer(_obj=%s)", "outputBuffer"),
+    "xmlParserInputBuffer *": ("._o", "inputBuffer(_obj=%s)", "inputBuffer"),
+    "xmlRegexp *": ("._o", "xmlReg(_obj=%s)", "xmlReg"),
     "xmlTextReaderLocatorPtr": ("._o", "xmlTextReaderLocator(_obj=%s)", "xmlTextReaderLocator"),
-    "xmlTextReaderPtr": ("._o", "xmlTextReader(_obj=%s)", "xmlTextReader"),
-    'xmlRelaxNGPtr': ('._o', "relaxNgSchema(_obj=%s)", "relaxNgSchema"),
-    'xmlRelaxNGParserCtxtPtr': ('._o', "relaxNgParserCtxt(_obj=%s)", "relaxNgParserCtxt"),
-    'xmlRelaxNGValidCtxtPtr': ('._o', "relaxNgValidCtxt(_obj=%s)", "relaxNgValidCtxt"),
-    'xmlSchemaPtr': ("._o", "Schema(_obj=%s)", "Schema"),
-    'xmlSchemaParserCtxtPtr': ("._o", "SchemaParserCtxt(_obj=%s)", "SchemaParserCtxt"),
-    'xmlSchemaValidCtxtPtr': ("._o", "SchemaValidCtxt(_obj=%s)", "SchemaValidCtxt"),
+    "xmlTextReader *": ("._o", "xmlTextReader(_obj=%s)", "xmlTextReader"),
+    'xmlRelaxNG *': ('._o', "relaxNgSchema(_obj=%s)", "relaxNgSchema"),
+    'xmlRelaxNGParserCtxt *': ('._o', "relaxNgParserCtxt(_obj=%s)", "relaxNgParserCtxt"),
+    'xmlRelaxNGValidCtxt *': ('._o', "relaxNgValidCtxt(_obj=%s)", "relaxNgValidCtxt"),
+    'xmlSchema *': ("._o", "Schema(_obj=%s)", "Schema"),
+    'xmlSchemaParserCtxt *': ("._o", "SchemaParserCtxt(_obj=%s)", "SchemaParserCtxt"),
+    'xmlSchemaValidCtxt *': ("._o", "SchemaValidCtxt(_obj=%s)", "SchemaValidCtxt"),
 }
 
 converter_type = {
-    "xmlXPathObjectPtr": "xpathObjectRet(%s)",
+    "xmlXPathObject *": "xpathObjectRet(%s)",
 }
 
 primary_classes = ["xmlNode", "xmlDoc"]
@@ -980,6 +1239,7 @@ def writeDoc(name, args, indent, output)
          return
      val = functions[name][0]
      val = val.replace("NULL", "None")
+     val = val.replace("\\", "\\\\")
      output.write(indent)
      output.write('"""')
      while len(val) > 60:
@@ -1086,12 +1346,19 @@ def buildWrappers():
         func = nameFixup(name, "None", file, file)
         info = (0, func, name, ret, args, file)
         function_classes['None'].append(info)
-   
-    classes = open(os.path.join(dstPref, "libxml2class.py"), "w")
-    txt = open(os.path.join(dstPref, "libxml2class.txt"), "w")
-    txt.write("          Generated Classes for libxml2-python\n\n")
 
-    txt.write("#\n# Global functions of the module\n#\n\n")
+    libxml_content = ""
+    try:
+        with open(os.path.join(srcPref, "libxml.py"), "r") as libxml_file:
+            libxml_content = libxml_file.read()
+    except IOError as msg:
+        print("Error reading libxml.py:", msg)
+        sys.exit(1)
+
+    classes = open(os.path.join(dstPref, "libxml2.py"), "w")
+
+    classes.write(libxml_content)
+
     if "None" in function_classes:
         flist = function_classes["None"]
         flist = sorted(flist, key=cmp_to_key(functionCompare))
@@ -1100,10 +1367,8 @@ def buildWrappers():
             (index, func, name, ret, args, file) = info
             if file != oldfile:
                 classes.write("#\n# Functions from module %s\n#\n\n" % file)
-                txt.write("\n# functions from module %s\n" % file)
                 oldfile = file
             classes.write("def %s(" % func)
-            txt.write("%s()\n" % func)
             n = 0
             for arg in args:
                 if n != 0:
@@ -1179,14 +1444,11 @@ def buildWrappers():
                     classes.write("    return ret\n")
             classes.write("\n")
 
-    txt.write("\n\n#\n# Set of classes of the module\n#\n\n")
     for classname in classes_list:
         if classname == "None":
             pass
         else:
             if classname in classes_ancestor:
-                txt.write("\n\nClass %s(%s)\n" % (classname,
-                          classes_ancestor[classname]))
                 classes.write("class %s(%s):\n" % (classname,
                               classes_ancestor[classname]))
                 classes.write("    def __init__(self, _obj=None):\n")
@@ -1210,7 +1472,6 @@ def buildWrappers():
                     classes.write("        return \"%s\" %% (self.name, int(pos_id (self)))\n\n" % (
                                   format))
             else:
-                txt.write("Class %s()\n" % (classname))
                 classes.write("class %s:\n" % (classname))
                 classes.write("    def __init__(self, _obj=None):\n")
                 if classname in reference_keepers:
@@ -1241,16 +1502,13 @@ def buildWrappers():
                 if file != oldfile:
                     if file == "python_accessor":
                         classes.write("    # accessors for %s\n" % (classname))
-                        txt.write("    # accessors\n")
                     else:
                         classes.write("    #\n")
                         classes.write("    # %s functions from module %s\n" % (
                                       classname, file))
-                        txt.write("\n    # functions from module %s\n" % file)
                         classes.write("    #\n\n")
                 oldfile = file
                 classes.write("    def %s(self" % func)
-                txt.write("    %s()\n" % func)
                 n = 0
                 for arg in args:
                     if n != index:
@@ -1367,7 +1625,8 @@ def buildWrappers():
     #
     # Generate enum constants
     #
-    for type,enum in enums.items():
+    for type in sorted(enums.keys()):
+        enum = enums[type]
         classes.write("# %s\n" % type)
         items = enum.items()
         items = sorted(items, key=(lambda i: int(i[1])))
@@ -1375,7 +1634,6 @@ def buildWrappers():
             classes.write("%s = %s\n" % (name,value))
         classes.write("\n")
 
-    txt.close()
     classes.close()
 
 buildStubs()
diff -pruN 2.14.6+dfsg-0.1/python/libxml.c 2.15.0+dfsg-0.3/python/libxml.c
--- 2.14.6+dfsg-0.1/python/libxml.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/libxml.c	2025-09-15 11:55:59.000000000 +0000
@@ -115,7 +115,7 @@ libxml_xmlDebugMemory(PyObject * self AT
     PyObject *py_retval;
     long ret;
 
-    if (!PyArg_ParseTuple(args, (char *) "i:xmlDebugMemory", &activate))
+    if (!PyArg_ParseTuple(args, "i:xmlDebugMemory", &activate))
         return (NULL);
 
     if (activate != 0) {
@@ -210,7 +210,7 @@ xmlPythonFileCloseRaw (void * context) {
 
     file = (PyObject *) context;
     if (file == NULL) return(-1);
-    ret = PyObject_CallMethod(file, (char *) "close", (char *) "()");
+    ret = PyObject_CallMethod(file, "close", "()");
     if (ret != NULL) {
 	Py_DECREF(ret);
     }
@@ -234,12 +234,15 @@ xmlPythonFileReadRaw (void * context, ch
     PyObject *ret;
     int lenread = -1;
     char *data;
+#ifdef PyUnicode_Check
+    PyObject *b = NULL;
+#endif
 
     file = (PyObject *) context;
     if (file == NULL) return(-1);
     /* When read() returns a string, the length is in characters not bytes, so
        request at most len / 4 characters to leave space for UTF-8 encoding. */
-    ret = PyObject_CallMethod(file, (char *) "read", (char *) "(i)", len / 4);
+    ret = PyObject_CallMethod(file, "read", "(i)", len / 4);
     if (ret == NULL) {
 	printf("xmlPythonFileReadRaw: result is NULL\n");
 	return(-1);
@@ -258,15 +261,14 @@ xmlPythonFileReadRaw (void * context, ch
 	lenread = (int) size;
 	data = (char *) tmp;
 #else
-        PyObject *b;
 	b = PyUnicode_AsUTF8String(ret);
 	if (b == NULL) {
+	    Py_DECREF(ret);
 	    printf("xmlPythonFileReadRaw: failed to convert to UTF-8\n");
 	    return(-1);
 	}
 	lenread = PyBytes_Size(b);
 	data = PyBytes_AsString(b);
-	Py_DECREF(b);
 #endif
 #endif
     } else {
@@ -277,10 +279,20 @@ xmlPythonFileReadRaw (void * context, ch
     if (lenread < 0 || lenread > len) {
 	printf("xmlPythonFileReadRaw: invalid lenread\n");
 	Py_DECREF(ret);
+#ifdef PyUnicode_Check
+	if (b != NULL) {
+	    Py_DECREF(b);
+	}
+#endif
 	return(-1);
     }
     memcpy(buffer, data, lenread);
     Py_DECREF(ret);
+#ifdef PyUnicode_Check
+    if (b != NULL) {
+        Py_DECREF(b);
+    }
+#endif
     return(lenread);
 }
 
@@ -300,12 +312,15 @@ xmlPythonFileRead (void * context, char
     PyObject *ret;
     int lenread = -1;
     char *data;
+#ifdef PyUnicode_Check
+    PyObject *b = NULL;
+#endif
 
     file = (PyObject *) context;
     if (file == NULL) return(-1);
     /* When io_read() returns a string, the length is in characters not bytes, so
        request at most len / 4 characters to leave space for UTF-8 encoding. */
-    ret = PyObject_CallMethod(file, (char *) "io_read", (char *) "(i)", len / 4);
+    ret = PyObject_CallMethod(file, "io_read", "(i)", len / 4);
     if (ret == NULL) {
 	printf("xmlPythonFileRead: result is NULL\n");
 	return(-1);
@@ -324,15 +339,14 @@ xmlPythonFileRead (void * context, char
 	lenread = (int) size;
 	data = (char *) tmp;
 #else
-        PyObject *b;
 	b = PyUnicode_AsUTF8String(ret);
 	if (b == NULL) {
+	    Py_DECREF(ret);
 	    printf("xmlPythonFileRead: failed to convert to UTF-8\n");
 	    return(-1);
 	}
 	lenread = PyBytes_Size(b);
 	data = PyBytes_AsString(b);
-	Py_DECREF(b);
 #endif
 #endif
     } else {
@@ -343,10 +357,20 @@ xmlPythonFileRead (void * context, char
     if (lenread < 0 || lenread > len) {
 	printf("xmlPythonFileRead: invalid lenread\n");
 	Py_DECREF(ret);
+#ifdef PyUnicode_Check
+	if (b != NULL) {
+	    Py_DECREF(b);
+	}
+#endif
 	return(-1);
     }
     memcpy(buffer, data, lenread);
     Py_DECREF(ret);
+#ifdef PyUnicode_Check
+    if (b != NULL) {
+	Py_DECREF(b);
+    }
+#endif
     return(lenread);
 }
 
@@ -372,11 +396,11 @@ xmlPythonFileWrite (void * context, cons
     if (file == NULL) return(-1);
     string = PY_IMPORT_STRING_SIZE(buffer, len);
     if (string == NULL) return(-1);
-    if (PyObject_HasAttrString(file, (char *) "io_write")) {
-        ret = PyObject_CallMethod(file, (char *) "io_write", (char *) "(O)",
+    if (PyObject_HasAttrString(file, "io_write")) {
+        ret = PyObject_CallMethod(file, "io_write", "(O)",
 	                        string);
-    } else if (PyObject_HasAttrString(file, (char *) "write")) {
-        ret = PyObject_CallMethod(file, (char *) "write", (char *) "(O)",
+    } else if (PyObject_HasAttrString(file, "write")) {
+        ret = PyObject_CallMethod(file, "write", "(O)",
 	                        string);
     }
     Py_DECREF(string);
@@ -409,10 +433,10 @@ xmlPythonFileClose (void * context) {
 
     file = (PyObject *) context;
     if (file == NULL) return(-1);
-    if (PyObject_HasAttrString(file, (char *) "io_close")) {
-        ret = PyObject_CallMethod(file, (char *) "io_close", (char *) "()");
-    } else if (PyObject_HasAttrString(file, (char *) "flush")) {
-        ret = PyObject_CallMethod(file, (char *) "flush", (char *) "()");
+    if (PyObject_HasAttrString(file, "io_close")) {
+        ret = PyObject_CallMethod(file, "io_close", "()");
+    } else if (PyObject_HasAttrString(file, "flush")) {
+        ret = PyObject_CallMethod(file, "flush", "()");
     }
     if (ret != NULL) {
 	Py_DECREF(ret);
@@ -438,13 +462,8 @@ xmlOutputBufferCreatePythonFile(PyObject
 
     if (file == NULL) return(NULL);
 
-    ret = xmlAllocOutputBuffer(encoder);
-    if (ret != NULL) {
-        ret->context = file;
-	/* Py_INCREF(file); */
-	ret->writecallback = xmlPythonFileWrite;
-	ret->closecallback = xmlPythonFileClose;
-    }
+    ret = xmlOutputBufferCreateIO(xmlPythonFileWrite, xmlPythonFileClose,
+                                  file, encoder);
 
     return(ret);
 }
@@ -458,7 +477,7 @@ libxml_xmlCreateOutputBuffer(ATTRIBUTE_U
     xmlOutputBufferPtr buffer;
 
 
-    if (!PyArg_ParseTuple(args, (char *)"Oz:xmlOutputBufferCreate",
+    if (!PyArg_ParseTuple(args, "Oz:xmlOutputBufferCreate",
 		&file, &encoding))
 	return(NULL);
     if ((encoding != NULL) && (encoding[0] != 0)) {
@@ -486,7 +505,7 @@ libxml_outputBufferGetPythonFile(ATTRIBU
     PyObject *file;
     xmlOutputBufferPtr obj;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:outputBufferGetPythonFile",
+    if (!PyArg_ParseTuple(args, "O:outputBufferGetPythonFile",
 			  &buffer))
 	return(NULL);
 
@@ -497,6 +516,7 @@ libxml_outputBufferGetPythonFile(ATTRIBU
 	Py_INCREF(Py_None);
 	return(Py_None);
     }
+XML_IGNORE_DEPRECATION_WARNINGS
     if (obj->closecallback != xmlPythonFileClose) {
 	fprintf(stderr,
 	        "outputBufferGetPythonFile: not a python file wrapper\n");
@@ -508,6 +528,7 @@ libxml_outputBufferGetPythonFile(ATTRIBU
 	Py_INCREF(Py_None);
 	return(Py_None);
     }
+XML_POP_WARNINGS
     Py_INCREF(file);
     return(file);
 }
@@ -519,7 +540,7 @@ libxml_xmlOutputBufferClose(PyObject *se
     xmlOutputBufferPtr out;
     PyObject *pyobj_out;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlOutputBufferClose", &pyobj_out))
+    if (!PyArg_ParseTuple(args, "O:xmlOutputBufferClose", &pyobj_out))
         return(NULL);
     out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
     /* Buffer may already have been destroyed elsewhere. This is harmless. */
@@ -540,7 +561,7 @@ libxml_xmlOutputBufferFlush(PyObject *se
     xmlOutputBufferPtr out;
     PyObject *pyobj_out;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlOutputBufferFlush", &pyobj_out))
+    if (!PyArg_ParseTuple(args, "O:xmlOutputBufferFlush", &pyobj_out))
         return(NULL);
     out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
 
@@ -559,7 +580,7 @@ libxml_xmlSaveFileTo(PyObject *self ATTR
     PyObject *pyobj_cur;
     char * encoding;
 
-    if (!PyArg_ParseTuple(args, (char *)"OOz:xmlSaveFileTo", &pyobj_buf, &pyobj_cur, &encoding))
+    if (!PyArg_ParseTuple(args, "OOz:xmlSaveFileTo", &pyobj_buf, &pyobj_cur, &encoding))
         return(NULL);
     buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
     cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
@@ -583,7 +604,7 @@ libxml_xmlSaveFormatFileTo(PyObject *sel
     char * encoding;
     int format;
 
-    if (!PyArg_ParseTuple(args, (char *)"OOzi:xmlSaveFormatFileTo", &pyobj_buf, &pyobj_cur, &encoding, &format))
+    if (!PyArg_ParseTuple(args, "OOzi:xmlSaveFormatFileTo", &pyobj_buf, &pyobj_cur, &encoding, &format))
         return(NULL);
     buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
     cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
@@ -615,13 +636,8 @@ xmlParserInputBufferCreatePythonFile(PyO
 
     if (file == NULL) return(NULL);
 
-    ret = xmlAllocParserInputBuffer(encoding);
-    if (ret != NULL) {
-        ret->context = file;
-	/* Py_INCREF(file); */
-	ret->readcallback = xmlPythonFileRead;
-	ret->closecallback = xmlPythonFileClose;
-    }
+    ret = xmlParserInputBufferCreateIO(xmlPythonFileRead, xmlPythonFileClose,
+                                       file, encoding);
 
     return(ret);
 }
@@ -635,7 +651,7 @@ libxml_xmlCreateInputBuffer(ATTRIBUTE_UN
     xmlParserInputBufferPtr buffer;
 
 
-    if (!PyArg_ParseTuple(args, (char *)"Oz:xmlParserInputBufferCreate",
+    if (!PyArg_ParseTuple(args, "Oz:xmlParserInputBufferCreate",
 		&file, &encoding))
 	return(NULL);
     if ((encoding != NULL) && (encoding[0] != 0)) {
@@ -668,18 +684,17 @@ pythonExternalEntityLoader(const char *U
 	ctxtobj = libxml_xmlParserCtxtPtrWrap(ctxt);
 
 	ret = PyObject_CallFunction(pythonExternalEntityLoaderObjext,
-		      (char *) "(ssO)", URL, ID, ctxtobj);
+		      "(ssO)", URL, ID, ctxtobj);
 	Py_XDECREF(ctxtobj);
 
 	if (ret != NULL) {
-	    if (PyObject_HasAttrString(ret, (char *) "read")) {
+	    if (PyObject_HasAttrString(ret, "read")) {
 		xmlParserInputBufferPtr buf;
 
-		buf = xmlAllocParserInputBuffer(XML_CHAR_ENCODING_NONE);
+		buf = xmlParserInputBufferCreateIO(xmlPythonFileReadRaw,
+                                                   xmlPythonFileCloseRaw,
+                                                   ret, XML_CHAR_ENCODING_NONE);
 		if (buf != NULL) {
-		    buf->context = ret;
-		    buf->readcallback = xmlPythonFileReadRaw;
-		    buf->closecallback = xmlPythonFileCloseRaw;
 		    result = xmlNewIOInputStream(ctxt, buf,
 			                         XML_CHAR_ENCODING_NONE);
 		}
@@ -708,7 +723,7 @@ libxml_xmlSetEntityLoader(ATTRIBUTE_UNUS
     PyObject *py_retval;
     PyObject *loader;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:libxml_xmlSetEntityLoader",
+    if (!PyArg_ParseTuple(args, "O:libxml_xmlSetEntityLoader",
 		&loader))
 	return(NULL);
 
@@ -751,7 +766,7 @@ pythonInputOpenCallback(const char *URI)
     PyObject *ret;
 
     ret = PyObject_CallFunction(pythonInputOpenCallbackObject,
-	    (char *)"s", URI);
+	    "s", URI);
     if (ret == Py_None) {
 	Py_DECREF(Py_None);
 	return NULL;
@@ -837,9 +852,9 @@ pythonStartElement(void *user_data, cons
     int type = 0;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "startElement"))
+    if (PyObject_HasAttrString(handler, "startElement"))
         type = 1;
-    else if (PyObject_HasAttrString(handler, (char *) "start"))
+    else if (PyObject_HasAttrString(handler, "start"))
         type = 2;
     if (type != 0) {
         /*
@@ -869,11 +884,11 @@ pythonStartElement(void *user_data, cons
         }
 
         if (type == 1)
-            result = PyObject_CallMethod(handler, (char *) "startElement",
-                                         (char *) "sO", name, dict);
+            result = PyObject_CallMethod(handler, "startElement",
+                                         "sO", name, dict);
         else if (type == 2)
-            result = PyObject_CallMethod(handler, (char *) "start",
-                                         (char *) "sO", name, dict);
+            result = PyObject_CallMethod(handler, "start",
+                                         "sO", name, dict);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(dict);
@@ -888,9 +903,8 @@ pythonStartDocument(void *user_data)
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "startDocument")) {
-        result =
-            PyObject_CallMethod(handler, (char *) "startDocument", NULL);
+    if (PyObject_HasAttrString(handler, "startDocument")) {
+        result = PyObject_CallMethod(handler, "startDocument", NULL);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -904,9 +918,8 @@ pythonEndDocument(void *user_data)
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "endDocument")) {
-        result =
-            PyObject_CallMethod(handler, (char *) "endDocument", NULL);
+    if (PyObject_HasAttrString(handler, "endDocument")) {
+        result = PyObject_CallMethod(handler, "endDocument", NULL);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -924,15 +937,15 @@ pythonEndElement(void *user_data, const
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "endElement")) {
-        result = PyObject_CallMethod(handler, (char *) "endElement",
-                                     (char *) "s", name);
+    if (PyObject_HasAttrString(handler, "endElement")) {
+        result = PyObject_CallMethod(handler, "endElement",
+                                     "s", name);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
-    } else if (PyObject_HasAttrString(handler, (char *) "end")) {
-        result = PyObject_CallMethod(handler, (char *) "end",
-                                     (char *) "s", name);
+    } else if (PyObject_HasAttrString(handler, "end")) {
+        result = PyObject_CallMethod(handler, "end",
+                                     "s", name);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -946,9 +959,9 @@ pythonReference(void *user_data, const x
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "reference")) {
-        result = PyObject_CallMethod(handler, (char *) "reference",
-                                     (char *) "s", name);
+    if (PyObject_HasAttrString(handler, "reference")) {
+        result = PyObject_CallMethod(handler, "reference",
+                                     "s", name);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -963,17 +976,17 @@ pythonCharacters(void *user_data, const
     int type = 0;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "characters"))
+    if (PyObject_HasAttrString(handler, "characters"))
         type = 1;
-    else if (PyObject_HasAttrString(handler, (char *) "data"))
+    else if (PyObject_HasAttrString(handler, "data"))
         type = 2;
     if (type != 0) {
         if (type == 1)
-            result = PyObject_CallMethod(handler, (char *) "characters",
-                                         (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "characters",
+                                         "s#", ch, len);
         else if (type == 2)
-            result = PyObject_CallMethod(handler, (char *) "data",
-                                         (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "data",
+                                         "s#", ch, len);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -988,20 +1001,17 @@ pythonIgnorableWhitespace(void *user_dat
     int type = 0;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "ignorableWhitespace"))
+    if (PyObject_HasAttrString(handler, "ignorableWhitespace"))
         type = 1;
-    else if (PyObject_HasAttrString(handler, (char *) "data"))
+    else if (PyObject_HasAttrString(handler, "data"))
         type = 2;
     if (type != 0) {
         if (type == 1)
-            result =
-                PyObject_CallMethod(handler,
-                                    (char *) "ignorableWhitespace",
-                                    (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "ignorableWhitespace",
+                                         "s#", ch, len);
         else if (type == 2)
-            result =
-                PyObject_CallMethod(handler, (char *) "data",
-                                    (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "data",
+                                         "s#", ch, len);
         Py_XDECREF(result);
     }
 }
@@ -1014,10 +1024,9 @@ pythonProcessingInstruction(void *user_d
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "processingInstruction")) {
-        result = PyObject_CallMethod(handler, (char *)
-                                     "processingInstruction",
-                                     (char *) "ss", target, data);
+    if (PyObject_HasAttrString(handler, "processingInstruction")) {
+        result = PyObject_CallMethod(handler, "processingInstruction",
+                                     "ss", target, data);
         Py_XDECREF(result);
     }
 }
@@ -1029,10 +1038,8 @@ pythonComment(void *user_data, const xml
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "comment")) {
-        result =
-            PyObject_CallMethod(handler, (char *) "comment", (char *) "s",
-                                value);
+    if (PyObject_HasAttrString(handler, "comment")) {
+        result = PyObject_CallMethod(handler, "comment", "s", value);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1044,18 +1051,15 @@ pythonWarning(void *user_data, const cha
 {
     PyObject *handler;
     PyObject *result;
-    va_list args;
+    va_list ap;
     char buf[1024];
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "warning")) {
-        va_start(args, msg);
-        vsnprintf(buf, 1023, msg, args);
-        va_end(args);
-        buf[1023] = 0;
-        result =
-            PyObject_CallMethod(handler, (char *) "warning", (char *) "s",
-                                buf);
+    if (PyObject_HasAttrString(handler, "warning")) {
+        va_start(ap, msg);
+        vsnprintf(buf, sizeof(buf), msg, ap);
+        va_end(ap);
+        result = PyObject_CallMethod(handler, "warning", "s", buf);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1067,18 +1071,15 @@ pythonError(void *user_data, const char
 {
     PyObject *handler;
     PyObject *result;
-    va_list args;
+    va_list ap;
     char buf[1024];
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "error")) {
-        va_start(args, msg);
-        vsnprintf(buf, 1023, msg, args);
-        va_end(args);
-        buf[1023] = 0;
-        result =
-            PyObject_CallMethod(handler, (char *) "error", (char *) "s",
-                                buf);
+    if (PyObject_HasAttrString(handler, "error")) {
+        va_start(ap, msg);
+        vsnprintf(buf, sizeof(buf), msg, ap);
+        va_end(ap);
+        result = PyObject_CallMethod(handler, "error", "s", buf);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1090,18 +1091,15 @@ pythonFatalError(void *user_data, const
 {
     PyObject *handler;
     PyObject *result;
-    va_list args;
+    va_list ap;
     char buf[1024];
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "fatalError")) {
-        va_start(args, msg);
-        vsnprintf(buf, 1023, msg, args);
-        va_end(args);
-        buf[1023] = 0;
-        result =
-            PyObject_CallMethod(handler, (char *) "fatalError",
-                                (char *) "s", buf);
+    if (PyObject_HasAttrString(handler, "fatalError")) {
+        va_start(ap, msg);
+        vsnprintf(buf, sizeof(buf), msg, ap);
+        va_end(ap);
+        result = PyObject_CallMethod(handler, "fatalError", "s", buf);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1116,19 +1114,15 @@ pythonCdataBlock(void *user_data, const
     int type = 0;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "cdataBlock"))
+    if (PyObject_HasAttrString(handler, "cdataBlock"))
         type = 1;
-    else if (PyObject_HasAttrString(handler, (char *) "cdata"))
+    else if (PyObject_HasAttrString(handler, "cdata"))
         type = 2;
     if (type != 0) {
         if (type == 1)
-            result =
-                PyObject_CallMethod(handler, (char *) "cdataBlock",
-                                    (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "cdataBlock", "s#", ch, len);
         else if (type == 2)
-            result =
-                PyObject_CallMethod(handler, (char *) "cdata",
-                                    (char *) "s#", ch, (Py_ssize_t)len);
+            result = PyObject_CallMethod(handler, "cdata", "s#", ch, len);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1144,11 +1138,9 @@ pythonExternalSubset(void *user_data,
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "externalSubset")) {
-        result =
-            PyObject_CallMethod(handler, (char *) "externalSubset",
-                                (char *) "sss", name, externalID,
-                                systemID);
+    if (PyObject_HasAttrString(handler, "externalSubset")) {
+        result = PyObject_CallMethod(handler, "externalSubset", "sss",
+                                     name, externalID, systemID);
         Py_XDECREF(result);
     }
 }
@@ -1164,9 +1156,9 @@ pythonEntityDecl(void *user_data,
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "entityDecl")) {
-        result = PyObject_CallMethod(handler, (char *) "entityDecl",
-                                     (char *) "sisss", name, type,
+    if (PyObject_HasAttrString(handler, "entityDecl")) {
+        result = PyObject_CallMethod(handler, "entityDecl",
+                                     "sisss", name, type,
                                      publicId, systemId, content);
         if (PyErr_Occurred())
             PyErr_Print();
@@ -1186,9 +1178,9 @@ pythonNotationDecl(void *user_data,
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "notationDecl")) {
-        result = PyObject_CallMethod(handler, (char *) "notationDecl",
-                                     (char *) "sss", name, publicId,
+    if (PyObject_HasAttrString(handler, "notationDecl")) {
+        result = PyObject_CallMethod(handler, "notationDecl",
+                                     "sss", name, publicId,
                                      systemId);
         if (PyErr_Occurred())
             PyErr_Print();
@@ -1211,8 +1203,9 @@ pythonAttributeDecl(void *user_data,
     PyObject *result;
     int count;
 
+XML_IGNORE_DEPRECATION_WARNINGS
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "attributeDecl")) {
+    if (PyObject_HasAttrString(handler, "attributeDecl")) {
         count = 0;
         for (node = tree; node != NULL; node = node->next) {
             count++;
@@ -1225,14 +1218,15 @@ pythonAttributeDecl(void *user_data,
 	    Py_DECREF(newName);
             count++;
         }
-        result = PyObject_CallMethod(handler, (char *) "attributeDecl",
-                                     (char *) "ssiisO", elem, name, type,
+        result = PyObject_CallMethod(handler, "attributeDecl",
+                                     "ssiisO", elem, name, type,
                                      def, defaultValue, nameList);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(nameList);
         Py_XDECREF(result);
     }
+XML_POP_WARNINGS
 }
 
 static void
@@ -1245,14 +1239,14 @@ pythonElementDecl(void *user_data,
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "elementDecl")) {
+    if (PyObject_HasAttrString(handler, "elementDecl")) {
         /* TODO: wrap in an elementContent object */
         printf
             ("pythonElementDecl: xmlElementContentPtr wrapper missing !\n");
         obj = Py_None;
         /* Py_XINCREF(Py_None); isn't the reference just borrowed ??? */
-        result = PyObject_CallMethod(handler, (char *) "elementDecl",
-                                     (char *) "siO", name, type, obj);
+        result = PyObject_CallMethod(handler, "elementDecl",
+                                     "siO", name, type, obj);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1270,11 +1264,9 @@ pythonUnparsedEntityDecl(void *user_data
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "unparsedEntityDecl")) {
-        result =
-            PyObject_CallMethod(handler, (char *) "unparsedEntityDecl",
-                                (char *) "ssss", name, publicId, systemId,
-                                notationName);
+    if (PyObject_HasAttrString(handler, "unparsedEntityDecl")) {
+        result = PyObject_CallMethod(handler, "unparsedEntityDecl", "ssss",
+                                     name, publicId, systemId, notationName);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1289,10 +1281,9 @@ pythonInternalSubset(void *user_data, co
     PyObject *result;
 
     handler = (PyObject *) user_data;
-    if (PyObject_HasAttrString(handler, (char *) "internalSubset")) {
-        result = PyObject_CallMethod(handler, (char *) "internalSubset",
-                                     (char *) "sss", name, ExternalID,
-                                     SystemID);
+    if (PyObject_HasAttrString(handler, "internalSubset")) {
+        result = PyObject_CallMethod(handler, "internalSubset", "sss", name,
+                                     ExternalID, SystemID);
         if (PyErr_Occurred())
             PyErr_Print();
         Py_XDECREF(result);
@@ -1354,7 +1345,7 @@ libxml_xmlCreatePushParser(ATTRIBUTE_UNU
     PyObject *pyret;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "Oziz:xmlCreatePushParser", &pyobj_SAX, &chunk,
+        (args, "Oziz:xmlCreatePushParser", &pyobj_SAX, &chunk,
          &size, &URI))
         return (NULL);
 
@@ -1382,7 +1373,7 @@ libxml_htmlCreatePushParser(ATTRIBUTE_UN
     PyObject *pyret;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "Oziz:htmlCreatePushParser", &pyobj_SAX, &chunk,
+        (args, "Oziz:htmlCreatePushParser", &pyobj_SAX, &chunk,
          &size, &URI))
         return (NULL);
 
@@ -1409,7 +1400,7 @@ libxml_xmlSAXParseFile(ATTRIBUTE_UNUSED
     xmlSAXHandlerPtr SAX = NULL;
     xmlParserCtxtPtr ctxt;
 
-    if (!PyArg_ParseTuple(args, (char *) "Osi:xmlSAXParseFile", &pyobj_SAX,
+    if (!PyArg_ParseTuple(args, "Osi:xmlSAXParseFile", &pyobj_SAX,
                           &URI, &recover))
         return (NULL);
 
@@ -1439,7 +1430,7 @@ libxml_htmlSAXParseFile(ATTRIBUTE_UNUSED
     htmlParserCtxtPtr ctxt;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "Osz:htmlSAXParseFile", &pyobj_SAX, &URI,
+        (args, "Osz:htmlSAXParseFile", &pyobj_SAX, &URI,
          &encoding))
         return (NULL);
 
@@ -1476,16 +1467,14 @@ static PyObject *libxml_xmlPythonErrorFu
 static char *
 libxml_buildMessage(const char *msg, va_list ap)
 {
-    int chars;
+    size_t len = 1024;
     char *str;
 
-    str = (char *) xmlMalloc(1000);
+    str = xmlMalloc(len);
     if (str == NULL)
         return NULL;
 
-    chars = vsnprintf(str, 999, msg, ap);
-    if (chars >= 998)
-        str[999] = 0;
+    vsnprintf(str, len, msg, ap);
 
     return str;
 }
@@ -1498,7 +1487,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
     PyObject *list;
     PyObject *message;
     PyObject *result;
-    char str[1000];
+    char str[1024];
 
     if (libxml_xmlPythonErrorFuncHandler == NULL) {
         va_start(ap, msg);
@@ -1506,8 +1495,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
         va_end(ap);
     } else {
         va_start(ap, msg);
-        if (vsnprintf(str, 999, msg, ap) >= 998)
-	    str[999] = 0;
+        vsnprintf(str, sizeof(str), msg, ap);
         va_end(ap);
 
         list = PyTuple_New(2);
@@ -1539,7 +1527,7 @@ libxml_xmlRegisterErrorHandler(ATTRIBUTE
     PyObject *pyobj_ctx;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "OO:xmlRegisterErrorHandler", &pyobj_f,
+        (args, "OO:xmlRegisterErrorHandler", &pyobj_f,
          &pyobj_ctx))
         return (NULL);
 
@@ -1627,7 +1615,7 @@ libxml_xmlParserCtxtSetErrorHandler(ATTR
     PyObject *pyobj_f;
     PyObject *pyobj_arg;
 
-    if (!PyArg_ParseTuple(args, (char *)"OOO:xmlParserCtxtSetErrorHandler",
+    if (!PyArg_ParseTuple(args, "OOO:xmlParserCtxtSetErrorHandler",
 		          &pyobj_ctxt, &pyobj_f, &pyobj_arg))
         return(NULL);
     ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
@@ -1670,7 +1658,7 @@ libxml_xmlParserCtxtGetErrorHandler(ATTR
     xmlParserCtxtPyCtxtPtr pyCtxt;
     PyObject *pyobj_ctxt;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlParserCtxtGetErrorHandler",
+    if (!PyArg_ParseTuple(args, "O:xmlParserCtxtGetErrorHandler",
 		          &pyobj_ctxt))
         return(NULL);
     ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
@@ -1699,7 +1687,7 @@ libxml_xmlFreeParserCtxt(ATTRIBUTE_UNUSE
     PyObject *pyobj_ctxt;
     xmlParserCtxtPyCtxtPtr pyCtxt;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeParserCtxt", &pyobj_ctxt))
+    if (!PyArg_ParseTuple(args, "O:xmlFreeParserCtxt", &pyobj_ctxt))
         return(NULL);
     ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
 
@@ -1808,7 +1796,7 @@ libxml_xmlSetValidErrors(ATTRIBUTE_UNUSE
     xmlValidCtxtPyCtxtPtr pyCtxt;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "OOO|O:xmlSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+        (args, "OOO|O:xmlSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
         return (NULL);
 
     ctxt = PyValidCtxt_Get(pyobj_ctx);
@@ -1848,7 +1836,7 @@ libxml_xmlFreeValidCtxt(PyObject *self A
     xmlValidCtxtPyCtxtPtr pyCtxt;
     PyObject *pyobj_cur;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeValidCtxt", &pyobj_cur))
+    if (!PyArg_ParseTuple(args, "O:xmlFreeValidCtxt", &pyobj_cur))
         return(NULL);
     cur = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_cur);
 
@@ -1919,7 +1907,7 @@ libxml_xmlTextReaderSetErrorHandler(ATTR
     PyObject *pyobj_arg;
     PyObject *py_retval;
 
-    if (!PyArg_ParseTuple(args, (char *)"OOO:xmlTextReaderSetErrorHandler", &pyobj_reader, &pyobj_f, &pyobj_arg))
+    if (!PyArg_ParseTuple(args, "OOO:xmlTextReaderSetErrorHandler", &pyobj_reader, &pyobj_f, &pyobj_arg))
         return(NULL);
     reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
     /* clear previous error handler */
@@ -1974,7 +1962,7 @@ libxml_xmlTextReaderGetErrorHandler(ATTR
     PyObject *pyobj_reader;
     PyObject *py_retval;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderSetErrorHandler", &pyobj_reader))
+    if (!PyArg_ParseTuple(args, "O:xmlTextReaderSetErrorHandler", &pyobj_reader))
         return(NULL);
     reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
     xmlTextReaderGetErrorHandler(reader,&f,&arg);
@@ -2006,7 +1994,7 @@ libxml_xmlFreeTextReader(ATTRIBUTE_UNUSE
     xmlTextReaderErrorFunc f;
     void *arg;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeTextReader", &pyobj_reader))
+    if (!PyArg_ParseTuple(args, "O:xmlFreeTextReader", &pyobj_reader))
         return(NULL);
     if (!PyCapsule_CheckExact(pyobj_reader)) {
 	Py_INCREF(Py_None);
@@ -2152,7 +2140,7 @@ libxml_xmlRegisterXPathFunction(ATTRIBUT
     int i;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "OszO:registerXPathFunction", &pyobj_ctx, &name,
+        (args, "OszO:registerXPathFunction", &pyobj_ctx, &name,
          &ns_uri, &pyobj_f))
         return (NULL);
 
@@ -2209,7 +2197,7 @@ libxml_xmlXPathRegisterVariable(ATTRIBUT
     PyObject *pyobj_value;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "OszO:xpathRegisterVariable", &pyobj_ctx, &name,
+        (args, "OszO:xpathRegisterVariable", &pyobj_ctx, &name,
          &ns_uri, &pyobj_value))
         return (NULL);
 
@@ -2234,7 +2222,7 @@ libxml_name(ATTRIBUTE_UNUSED PyObject *
     xmlNodePtr cur;
     const xmlChar *res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:name", &obj))
+    if (!PyArg_ParseTuple(args, "O:name", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2274,7 +2262,7 @@ libxml_doc(ATTRIBUTE_UNUSED PyObject * s
     xmlNodePtr cur;
     xmlDocPtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:doc", &obj))
+    if (!PyArg_ParseTuple(args, "O:doc", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2307,7 +2295,7 @@ libxml_properties(ATTRIBUTE_UNUSED PyObj
     xmlNodePtr cur;
     xmlAttrPtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:properties", &obj))
+    if (!PyArg_ParseTuple(args, "O:properties", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
     if ((cur != NULL) && (cur->type == XML_ELEMENT_NODE))
@@ -2325,7 +2313,7 @@ libxml_next(ATTRIBUTE_UNUSED PyObject *
     xmlNodePtr cur;
     xmlNodePtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:next", &obj))
+    if (!PyArg_ParseTuple(args, "O:next", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2362,7 +2350,7 @@ libxml_prev(ATTRIBUTE_UNUSED PyObject *
     xmlNodePtr cur;
     xmlNodePtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:prev", &obj))
+    if (!PyArg_ParseTuple(args, "O:prev", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2395,7 +2383,7 @@ libxml_children(ATTRIBUTE_UNUSED PyObjec
     xmlNodePtr cur;
     xmlNodePtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:children", &obj))
+    if (!PyArg_ParseTuple(args, "O:children", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2431,7 +2419,7 @@ libxml_last(ATTRIBUTE_UNUSED PyObject *
     xmlNodePtr cur;
     xmlNodePtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:last", &obj))
+    if (!PyArg_ParseTuple(args, "O:last", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2467,7 +2455,7 @@ libxml_parent(ATTRIBUTE_UNUSED PyObject
     xmlNodePtr cur;
     xmlNodePtr res;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:parent", &obj))
+    if (!PyArg_ParseTuple(args, "O:parent", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
 
@@ -2503,7 +2491,7 @@ libxml_type(ATTRIBUTE_UNUSED PyObject *
     xmlNodePtr cur;
     const xmlChar *res = NULL;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:last", &obj))
+    if (!PyArg_ParseTuple(args, "O:last", &obj))
         return NULL;
     cur = PyxmlNode_Get(obj);
     if (cur == NULL) {
@@ -2592,7 +2580,7 @@ libxml_xmlNodeGetNsDefs(ATTRIBUTE_UNUSED
     PyObject *pyobj_node;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "O:xmlNodeGetNsDefs", &pyobj_node))
+        (args, "O:xmlNodeGetNsDefs", &pyobj_node))
         return (NULL);
     node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
 
@@ -2616,7 +2604,7 @@ libxml_xmlNodeRemoveNsDef(ATTRIBUTE_UNUS
     xmlNsPtr c_retval;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "Oz:xmlNodeRemoveNsDef", &pyobj_node, &href))
+        (args, "Oz:xmlNodeRemoveNsDef", &pyobj_node, &href))
         return (NULL);
     node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
     ns = NULL;
@@ -2662,7 +2650,7 @@ libxml_xmlNodeGetNs(ATTRIBUTE_UNUSED PyO
     xmlNodePtr node;
     PyObject *pyobj_node;
 
-    if (!PyArg_ParseTuple(args, (char *) "O:xmlNodeGetNs", &pyobj_node))
+    if (!PyArg_ParseTuple(args, "O:xmlNodeGetNs", &pyobj_node))
         return (NULL);
     node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
 
@@ -2698,7 +2686,7 @@ libxml_serializeNode(ATTRIBUTE_UNUSED Py
     xmlBufferPtr buf;
     int options = 0;
 
-    if (!PyArg_ParseTuple(args, (char *) "Ozi:serializeNode", &pyobj_node,
+    if (!PyArg_ParseTuple(args, "Ozi:serializeNode", &pyobj_node,
                           &encoding, &format))
         return (NULL);
     node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
@@ -2771,7 +2759,7 @@ libxml_saveNodeTo(ATTRIBUTE_UNUSED PyObj
     xmlOutputBufferPtr buf;
     xmlCharEncodingHandlerPtr handler = NULL;
 
-    if (!PyArg_ParseTuple(args, (char *) "OOzi:serializeNode", &pyobj_node,
+    if (!PyArg_ParseTuple(args, "OOzi:serializeNode", &pyobj_node,
                           &py_file, &encoding, &format))
         return (NULL);
     node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
@@ -2842,7 +2830,7 @@ libxml_xmlNewNode(ATTRIBUTE_UNUSED PyObj
     xmlChar *name;
     xmlNodePtr node;
 
-    if (!PyArg_ParseTuple(args, (char *) "s:xmlNewNode", &name))
+    if (!PyArg_ParseTuple(args, "s:xmlNewNode", &name))
         return (NULL);
     node = (xmlNodePtr) xmlNewNode(NULL, name);
 
@@ -2869,7 +2857,7 @@ libxml_addLocalCatalog(ATTRIBUTE_UNUSED
     xmlParserCtxtPtr ctxt;
     PyObject *pyobj_ctxt;
 
-    if (!PyArg_ParseTuple(args, (char *)"Os:addLocalCatalog", &pyobj_ctxt, &URL))
+    if (!PyArg_ParseTuple(args, "Os:addLocalCatalog", &pyobj_ctxt, &URL))
         return(NULL);
 
     ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
@@ -2977,7 +2965,7 @@ libxml_xmlRelaxNGSetValidErrors(ATTRIBUT
     xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
 
     if (!PyArg_ParseTuple
-        (args, (char *) "OOO|O:xmlRelaxNGSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+        (args, "OOO|O:xmlRelaxNGSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
         return (NULL);
 
     ctxt = PyrelaxNgValidCtxt_Get(pyobj_ctx);
@@ -3023,7 +3011,7 @@ libxml_xmlRelaxNGFreeValidCtxt(ATTRIBUTE
     xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
     PyObject *pyobj_ctxt;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGFreeValidCtxt", &pyobj_ctxt))
+    if (!PyArg_ParseTuple(args, "O:xmlRelaxNGFreeValidCtxt", &pyobj_ctxt))
         return(NULL);
     ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
 
@@ -3131,7 +3119,7 @@ libxml_xmlSchemaSetValidErrors(ATTRIBUTE
 	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
 
 	if (!PyArg_ParseTuple
-		(args, (char *) "OOO|O:xmlSchemaSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+		(args, "OOO|O:xmlSchemaSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
 		return (NULL);
 
 	ctxt = PySchemaValidCtxt_Get(pyobj_ctx);
@@ -3178,7 +3166,7 @@ libxml_xmlSchemaFreeValidCtxt(ATTRIBUTE_
 	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
 	PyObject *pyobj_ctxt;
 
-	if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaFreeValidCtxt", &pyobj_ctxt))
+	if (!PyArg_ParseTuple(args, "O:xmlSchemaFreeValidCtxt", &pyobj_ctxt))
 		return(NULL);
 	ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
 
@@ -3343,7 +3331,7 @@ libxml_C14NDocDumpMemory(ATTRIBUTE_UNUSE
 
     int result;
 
-    if (!PyArg_ParseTuple(args, (char *) "OOiOi:C14NDocDumpMemory",
+    if (!PyArg_ParseTuple(args, "OOiOi:C14NDocDumpMemory",
                           &pyobj_doc,
                           &pyobj_nodes,
                           &exclusive,
@@ -3421,7 +3409,7 @@ libxml_C14NDocSaveTo(ATTRIBUTE_UNUSED Py
     int result;
     int len;
 
-    if (!PyArg_ParseTuple(args, (char *) "OOiOiO:C14NDocSaveTo",
+    if (!PyArg_ParseTuple(args, "OOiOiO:C14NDocSaveTo",
                           &pyobj_doc,
                           &pyobj_nodes,
                           &exclusive,
@@ -3499,10 +3487,10 @@ libxml_getObjDesc(PyObject *self ATTRIBU
     PyObject *obj;
     char *str;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:getObjDesc", &obj))
+    if (!PyArg_ParseTuple(args, "O:getObjDesc", &obj))
         return NULL;
     str = PyCapsule_GetPointer(obj, PyCapsule_GetName(obj));
-    return Py_BuildValue((char *)"s", str);
+    return Py_BuildValue("s", str);
 }
 
 static PyObject *
@@ -3511,16 +3499,16 @@ libxml_compareNodesEqual(PyObject *self
     PyObject *py_node1, *py_node2;
     xmlNodePtr node1, node2;
 
-    if (!PyArg_ParseTuple(args, (char *)"OO:compareNodesEqual",
+    if (!PyArg_ParseTuple(args, "OO:compareNodesEqual",
 		&py_node1, &py_node2))
         return NULL;
     /* To compare two node objects, we compare their pointer addresses */
     node1 = PyxmlNode_Get(py_node1);
     node2 = PyxmlNode_Get(py_node2);
     if ( node1 == node2 )
-        return Py_BuildValue((char *)"i", 1);
+        return Py_BuildValue("i", 1);
     else
-        return Py_BuildValue((char *)"i", 0);
+        return Py_BuildValue("i", 0);
     
 }
 
@@ -3530,7 +3518,7 @@ libxml_nodeHash(PyObject *self ATTRIBUTE
     PyObject *py_node1;
     xmlNodePtr node1;
 
-    if (!PyArg_ParseTuple(args, (char *)"O:nodeHash", &py_node1))
+    if (!PyArg_ParseTuple(args, "O:nodeHash", &py_node1))
 	    return NULL;
     /* For simplicity, we use the node pointer address as a hash value */
     node1 = PyxmlNode_Get(py_node1);
@@ -3563,64 +3551,64 @@ libxml_deprecationWarning(const char *fu
  ************************************************************************/
 static PyMethodDef libxmlMethods[] = {
 #include "libxml2-export.c"
-    {(char *) "name", libxml_name, METH_VARARGS, NULL},
-    {(char *) "children", libxml_children, METH_VARARGS, NULL},
-    {(char *) "properties", libxml_properties, METH_VARARGS, NULL},
-    {(char *) "last", libxml_last, METH_VARARGS, NULL},
-    {(char *) "prev", libxml_prev, METH_VARARGS, NULL},
-    {(char *) "next", libxml_next, METH_VARARGS, NULL},
-    {(char *) "parent", libxml_parent, METH_VARARGS, NULL},
-    {(char *) "type", libxml_type, METH_VARARGS, NULL},
-    {(char *) "doc", libxml_doc, METH_VARARGS, NULL},
-    {(char *) "xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
-    {(char *) "xmlNodeRemoveNsDef", libxml_xmlNodeRemoveNsDef, METH_VARARGS, NULL},
+    {"name", libxml_name, METH_VARARGS, NULL},
+    {"children", libxml_children, METH_VARARGS, NULL},
+    {"properties", libxml_properties, METH_VARARGS, NULL},
+    {"last", libxml_last, METH_VARARGS, NULL},
+    {"prev", libxml_prev, METH_VARARGS, NULL},
+    {"next", libxml_next, METH_VARARGS, NULL},
+    {"parent", libxml_parent, METH_VARARGS, NULL},
+    {"type", libxml_type, METH_VARARGS, NULL},
+    {"doc", libxml_doc, METH_VARARGS, NULL},
+    {"xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
+    {"xmlNodeRemoveNsDef", libxml_xmlNodeRemoveNsDef, METH_VARARGS, NULL},
 #ifdef LIBXML_VALID_ENABLED
-    {(char *)"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
-    {(char *)"xmlFreeValidCtxt", libxml_xmlFreeValidCtxt, METH_VARARGS, NULL},
+    {"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
+    {"xmlFreeValidCtxt", libxml_xmlFreeValidCtxt, METH_VARARGS, NULL},
 #endif /* LIBXML_VALID_ENABLED */
 #ifdef LIBXML_OUTPUT_ENABLED
-    {(char *) "serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
-    {(char *) "saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
-    {(char *) "outputBufferCreate", libxml_xmlCreateOutputBuffer, METH_VARARGS, NULL},
-    {(char *) "outputBufferGetPythonFile", libxml_outputBufferGetPythonFile, METH_VARARGS, NULL},
-    {(char *) "xmlOutputBufferClose", libxml_xmlOutputBufferClose, METH_VARARGS, NULL},
-    { (char *)"xmlOutputBufferFlush", libxml_xmlOutputBufferFlush, METH_VARARGS, NULL },
-    { (char *)"xmlSaveFileTo", libxml_xmlSaveFileTo, METH_VARARGS, NULL },
-    { (char *)"xmlSaveFormatFileTo", libxml_xmlSaveFormatFileTo, METH_VARARGS, NULL },
+    {"serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
+    {"saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
+    {"outputBufferCreate", libxml_xmlCreateOutputBuffer, METH_VARARGS, NULL},
+    {"outputBufferGetPythonFile", libxml_outputBufferGetPythonFile, METH_VARARGS, NULL},
+    {"xmlOutputBufferClose", libxml_xmlOutputBufferClose, METH_VARARGS, NULL},
+    {"xmlOutputBufferFlush", libxml_xmlOutputBufferFlush, METH_VARARGS, NULL },
+    {"xmlSaveFileTo", libxml_xmlSaveFileTo, METH_VARARGS, NULL },
+    {"xmlSaveFormatFileTo", libxml_xmlSaveFormatFileTo, METH_VARARGS, NULL },
 #endif /* LIBXML_OUTPUT_ENABLED */
-    {(char *) "inputBufferCreate", libxml_xmlCreateInputBuffer, METH_VARARGS, NULL},
-    {(char *) "setEntityLoader", libxml_xmlSetEntityLoader, METH_VARARGS, NULL},
-    {(char *)"xmlRegisterErrorHandler", libxml_xmlRegisterErrorHandler, METH_VARARGS, NULL },
-    {(char *)"xmlParserCtxtSetErrorHandler", libxml_xmlParserCtxtSetErrorHandler, METH_VARARGS, NULL },
-    {(char *)"xmlParserCtxtGetErrorHandler", libxml_xmlParserCtxtGetErrorHandler, METH_VARARGS, NULL },
-    {(char *)"xmlFreeParserCtxt", libxml_xmlFreeParserCtxt, METH_VARARGS, NULL },
+    {"inputBufferCreate", libxml_xmlCreateInputBuffer, METH_VARARGS, NULL},
+    {"setEntityLoader", libxml_xmlSetEntityLoader, METH_VARARGS, NULL},
+    {"xmlRegisterErrorHandler", libxml_xmlRegisterErrorHandler, METH_VARARGS, NULL },
+    {"xmlParserCtxtSetErrorHandler", libxml_xmlParserCtxtSetErrorHandler, METH_VARARGS, NULL },
+    {"xmlParserCtxtGetErrorHandler", libxml_xmlParserCtxtGetErrorHandler, METH_VARARGS, NULL },
+    {"xmlFreeParserCtxt", libxml_xmlFreeParserCtxt, METH_VARARGS, NULL },
 #ifdef LIBXML_READER_ENABLED
-    {(char *)"xmlTextReaderSetErrorHandler", libxml_xmlTextReaderSetErrorHandler, METH_VARARGS, NULL },
-    {(char *)"xmlTextReaderGetErrorHandler", libxml_xmlTextReaderGetErrorHandler, METH_VARARGS, NULL },
-    {(char *)"xmlFreeTextReader", libxml_xmlFreeTextReader, METH_VARARGS, NULL },
+    {"xmlTextReaderSetErrorHandler", libxml_xmlTextReaderSetErrorHandler, METH_VARARGS, NULL },
+    {"xmlTextReaderGetErrorHandler", libxml_xmlTextReaderGetErrorHandler, METH_VARARGS, NULL },
+    {"xmlFreeTextReader", libxml_xmlFreeTextReader, METH_VARARGS, NULL },
 #endif
 #ifdef LIBXML_CATALOG_ENABLED
-    {(char *)"addLocalCatalog", libxml_addLocalCatalog, METH_VARARGS, NULL },
+    {"addLocalCatalog", libxml_addLocalCatalog, METH_VARARGS, NULL },
 #endif
 #ifdef LIBXML_RELAXNG_ENABLED
-    {(char *)"xmlRelaxNGSetValidErrors", libxml_xmlRelaxNGSetValidErrors, METH_VARARGS, NULL},
-    {(char *)"xmlRelaxNGFreeValidCtxt", libxml_xmlRelaxNGFreeValidCtxt, METH_VARARGS, NULL},
+    {"xmlRelaxNGSetValidErrors", libxml_xmlRelaxNGSetValidErrors, METH_VARARGS, NULL},
+    {"xmlRelaxNGFreeValidCtxt", libxml_xmlRelaxNGFreeValidCtxt, METH_VARARGS, NULL},
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
-    {(char *)"xmlSchemaSetValidErrors", libxml_xmlSchemaSetValidErrors, METH_VARARGS, NULL},
-    {(char *)"xmlSchemaFreeValidCtxt", libxml_xmlSchemaFreeValidCtxt, METH_VARARGS, NULL},
+    {"xmlSchemaSetValidErrors", libxml_xmlSchemaSetValidErrors, METH_VARARGS, NULL},
+    {"xmlSchemaFreeValidCtxt", libxml_xmlSchemaFreeValidCtxt, METH_VARARGS, NULL},
 #endif
 #ifdef LIBXML_C14N_ENABLED
 #ifdef LIBXML_OUTPUT_ENABLED
-    {(char *)"xmlC14NDocDumpMemory", libxml_C14NDocDumpMemory, METH_VARARGS, NULL},
-    {(char *)"xmlC14NDocSaveTo", libxml_C14NDocSaveTo, METH_VARARGS, NULL},
+    {"xmlC14NDocDumpMemory", libxml_C14NDocDumpMemory, METH_VARARGS, NULL},
+    {"xmlC14NDocSaveTo", libxml_C14NDocSaveTo, METH_VARARGS, NULL},
 #endif
 #endif
-    {(char *) "getObjDesc", libxml_getObjDesc, METH_VARARGS, NULL},
-    {(char *) "compareNodesEqual", libxml_compareNodesEqual, METH_VARARGS, NULL},
-    {(char *) "nodeHash", libxml_nodeHash, METH_VARARGS, NULL},
-    {(char *) "xmlRegisterInputCallback", libxml_xmlRegisterInputCallback, METH_VARARGS, NULL},
-    {(char *) "xmlUnregisterInputCallback", libxml_xmlUnregisterInputCallback, METH_VARARGS, NULL},
+    {"getObjDesc", libxml_getObjDesc, METH_VARARGS, NULL},
+    {"compareNodesEqual", libxml_compareNodesEqual, METH_VARARGS, NULL},
+    {"nodeHash", libxml_nodeHash, METH_VARARGS, NULL},
+    {"xmlRegisterInputCallback", libxml_xmlRegisterInputCallback, METH_VARARGS, NULL},
+    {"xmlUnregisterInputCallback", libxml_xmlUnregisterInputCallback, METH_VARARGS, NULL},
     {NULL, NULL, 0, NULL}
 };
 
@@ -3660,7 +3648,7 @@ void initlibxml2mod(void)
     module = PyModule_Create(&moduledef);
 #else
     /* initialize the python extension module */
-    module = Py_InitModule((char *) "libxml2mod", libxmlMethods);
+    module = Py_InitModule("libxml2mod", libxmlMethods);
 #endif
     if (module == NULL)
         INITERROR;
diff -pruN 2.14.6+dfsg-0.1/python/libxml2-python-api.xml 2.15.0+dfsg-0.3/python/libxml2-python-api.xml
--- 2.14.6+dfsg-0.1/python/libxml2-python-api.xml	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/libxml2-python-api.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,346 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<api name='libxml2-python'>
-  <symbols>
-    <function name='xmlRegisterXPathFunction' file='python'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Register a Python written function to the XPath interpreter</info>
-      <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
-      <arg name='ctx' type='xmlXPathContextPtr' info='the xpathContext'/>
-      <arg name='name' type='xmlChar *' info='the function name'/>
-      <arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
-      <arg name='f' type='pythonObject' info='the python function'/>
-    </function>
-    <function name='xmlXPathRegisterVariable' file='python'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Register a variable with the XPath context</info>
-      <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
-      <arg name='ctx' type='xmlXPathContextPtr' info='the xpathContext'/>
-      <arg name='name' type='xmlChar *' info='the variable name'/>
-      <arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
-      <arg name='value' type='pythonObject' info='the value'/>
-    </function>
-    <function name='xmlNewNode' file='python'>
-      <info>Create a new Node</info>
-      <return type='xmlNodePtr' info="A new element node"/>
-      <arg name='name' type='xmlChar *' info='the node name'/>
-    </function>
-    <function name='xmlCreatePushParser' file='python'>
-      <info>Create a progressive XML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.</info>
-      <return type='xmlParserCtxtPtr' info="the parser context or None in case of error"/>
-      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
-      <arg name='chunk' type='xmlChar *' info='the initial data'/>
-      <arg name='size' type='int' info='the size of the initial data'/>
-      <arg name='URI' type='xmlChar *' info='The URI used for base computations'/>
-    </function>
-    <function name='htmlCreatePushParser' file='python'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Create a progressive HTML parser context to build either an event flow if the SAX object is not None, or a DOM tree otherwise.</info>
-      <return type='xmlParserCtxtPtr' info="the parser context or None in case of error"/>
-      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
-      <arg name='chunk' type='xmlChar *' info='the initial data'/>
-      <arg name='size' type='int' info='the size of the initial data'/>
-      <arg name='URI' type='xmlChar *' info='The URI used for base computations'/>
-    </function>
-    <function name='xmlSAXParseFile' file='python'>
-      <info>Interface to parse an XML file or resource pointed by an URI to build an event flow to the SAX object</info>
-      <return type='void'/>
-      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
-      <arg name='URI' type='xmlChar *' info='The URI of the resource'/>
-      <arg name='recover' type='int' info='allow recovery in case of error'/>
-    </function>
-    <function name='htmlSAXParseFile' file='python'>
-      <cond>defined(LIBXML_HTML_ENABLED)</cond>
-      <info>Interface to parse an HTML file or resource pointed by an URI to build an event flow to the SAX object</info>
-      <return type='void'/>
-      <arg name='SAX' type='pythonObject' info='the SAX callback object or None'/>
-      <arg name='URI' type='xmlChar *' info='The URI of the resource'/>
-      <arg name='encoding' type='const char *' info='encoding or None'/>
-    </function>
-    <function name='xmlCreateOutputBuffer' file='python'>
-      <info>Create a libxml2 output buffer from a Python file</info>
-      <return type='xmlOutputBufferPtr' info="the output buffer"/>
-      <arg name='file' type='pythonObject' info='the Python file'/>
-      <arg name='encoding' type='xmlChar *' info='an optional encoding'/>
-    </function>
-    <function name='xmlCreateInputBuffer' file='python'>
-      <info>Create a libxml2 input buffer from a Python file</info>
-      <return type='xmlParserInputBufferPtr' info="the input buffer"/>
-      <arg name='file' type='pythonObject' info='the Python file'/>
-      <arg name='encoding' type='xmlChar *' info='an optional encoding'/>
-    </function>
-    <function name='xmlSetEntityLoader' file='python'>
-      <info>Set the entity resolver as a python function</info>
-      <return type='int' info="0 in case of success, -1 for error"/>
-      <arg name='resolver' type='pythonObject' info='the Python function'/>
-    </function>
-    <!-- xmlParserCtxtPtr accessors -->
-    <function name='xmlParserGetDoc' file='python_accessor'>
-      <info>Get the document tree from a parser context.</info>
-      <return type='xmlDocPtr' info="the document tree" field="myDoc"/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-    </function>
-    <function name='xmlParserGetWellFormed' file='python_accessor'>
-      <info>Get the well formed information from a parser context.</info>
-      <return type='int' info="the wellFormed field" field="wellFormed"/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-    </function>
-    <function name='xmlParserGetIsValid' file='python_accessor'>
-      <info>Get the validity information from a parser context.</info>
-      <return type='int' info="the valid field" field="valid"/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-    </function>
-    <function name='xmlParserSetValidate' file='python_accessor'>
-      <info>Switch the parser to validation mode.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='validate' type='int' info='1 to activate validation'/>
-    </function>
-    <function name='xmlParserSetReplaceEntities' file='python_accessor'>
-      <info>Switch the parser to replace entities.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='replaceEntities' type='int' info='1 to replace entities'/>
-    </function>
-    <function name='xmlParserSetPedantic' file='python_accessor'>
-      <info>Switch the parser to be pedantic.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='pedantic' type='int' info='1 to run in pedantic mode'/>
-    </function>
-    <function name='xmlParserSetLoadSubset' file='python_accessor'>
-      <info>Switch the parser to load the DTD without validating.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='loadsubset' type='int' info='1 to load the DTD'/>
-    </function>
-    <function name='xmlParserSetLineNumbers' file='python_accessor'>
-      <info>Switch on the generation of line number for elements nodes.</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
-      <arg name='linenumbers' type='int' info='1 to save line numbers'/>
-    </function>
-    <function name='xmlDebugMemory' file='python'>
-      <info>Switch on the generation of line number for elements nodes. Also returns the number of bytes allocated and not freed by libxml2 since memory debugging was switched on.</info>
-      <return type='int' info="returns the number of bytes allocated and not freed"/>
-      <arg name='activate' type='int' info='1 switch on memory debugging 0 switch it off'/>
-    </function>
-    <!-- xmlNsPtr accessors -->
-    <function name='xmlNodeGetNs' file='python_accessor'>
-      <info>Get the namespace of a node</info>
-      <return type='xmlNsPtr' info="The namespace or None"/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-    </function>
-    <function name='xmlNodeGetNsDefs' file='python_accessor'>
-      <info>Get the namespace of a node</info>
-      <return type='xmlNsPtr' info="The namespace or None"/>
-      <arg name='node' type='xmlNodePtr' info='the node'/>
-    </function>
-    <!-- xmlXPathContextPtr accessors -->
-    <function name='xmlXPathParserGetContext' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the xpathContext from an xpathParserContext</info>
-      <return type='xmlXPathContextPtr' info="The XPath context" field="context"/>
-      <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath parser context'/>
-    </function>
-    <function name='xmlXPathGetContextDoc' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the doc from an xpathContext</info>
-      <return type='xmlDocPtr' info="The doc context" field="doc"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathGetContextNode' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the current node from an xpathContext</info>
-      <return type='xmlNodePtr' info="The node context" field="node"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathSetContextDoc' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Set the doc of an xpathContext</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name="doc" type='xmlDocPtr' info="The doc context"/>
-    </function>
-    <function name='xmlXPathSetContextNode' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Set the current node of an xpathContext</info>
-      <return type='void'/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-      <arg name="node" type='xmlNodePtr' info="The node context"/>
-    </function>
-    <function name='xmlXPathGetContextPosition' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the current node from an xpathContext</info>
-      <return type='int' info="The node context" field="proximityPosition"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathGetContextSize' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the current node from an xpathContext</info>
-      <return type='int' info="The node context" field="contextSize"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathGetFunction' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the current function name xpathContext</info>
-      <return type='const xmlChar *' info="The function name" field="function"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <function name='xmlXPathGetFunctionURI' file='python_accessor'>
-      <cond>defined(LIBXML_XPATH_ENABLED)</cond>
-      <info>Get the current function name URI xpathContext</info>
-      <return type='const xmlChar *' info="The function name URI" field="functionURI"/>
-      <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
-    </function>
-    <!-- xmlURIPtr accessors -->
-    <function name='xmlURIGetScheme' file='python_accessor'>
-      <info>Get the scheme part from an URI</info>
-      <return type='const char *' info="The URI scheme" field="scheme"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetScheme' file='python_accessor'>
-      <info>Set the scheme part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='scheme' type='char *' info='The URI scheme part'/>
-    </function>
-    <function name='xmlURIGetOpaque' file='python_accessor'>
-      <info>Get the opaque part from an URI</info>
-      <return type='const char *' info="The URI opaque" field="opaque"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetOpaque' file='python_accessor'>
-      <info>Set the opaque part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='opaque' type='char *' info='The URI opaque part'/>
-    </function>
-    <function name='xmlURIGetAuthority' file='python_accessor'>
-      <info>Get the authority part from an URI</info>
-      <return type='const char *' info="The URI authority" field="authority"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetAuthority' file='python_accessor'>
-      <info>Set the authority part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='authority' type='char *' info='The URI authority part'/>
-    </function>
-    <function name='xmlURIGetServer' file='python_accessor'>
-      <info>Get the server part from an URI</info>
-      <return type='const char *' info="The URI server" field="server"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetServer' file='python_accessor'>
-      <info>Set the server part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='server' type='char *' info='The URI server part'/>
-    </function>
-    <function name='xmlURIGetUser' file='python_accessor'>
-      <info>Get the user part from an URI</info>
-      <return type='const char *' info="The URI user" field="user"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetUser' file='python_accessor'>
-      <info>Set the user part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='user' type='char *' info='The URI user part'/>
-    </function>
-    <function name='xmlURIGetPath' file='python_accessor'>
-      <info>Get the path part from an URI</info>
-      <return type='const char *' info="The URI path" field="path"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetPath' file='python_accessor'>
-      <info>Set the path part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='path' type='char *' info='The URI path part'/>
-    </function>
-    <function name='xmlURIGetQuery' file='python_accessor'>
-      <info>Get the query part from an URI</info>
-      <return type='const char *' info="The URI query" field="query"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetQuery' file='python_accessor'>
-      <info>Set the query part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='query' type='char *' info='The URI query part'/>
-    </function>
-    <function name='xmlURIGetQueryRaw' file='python_accessor'>
-      <info>Get the raw query part from an URI (i.e. the unescaped form).</info>
-      <return type='const char *' info="The URI query" field="query_raw"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetQueryRaw' file='python_accessor'>
-      <info>Set the raw query part of an URI (i.e. the unescaped form).</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='query_raw' type='char *' info='The raw URI query part'/>
-    </function>
-    <function name='xmlURIGetFragment' file='python_accessor'>
-      <info>Get the fragment part from an URI</info>
-      <return type='const char *' info="The URI fragment" field="fragment"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetFragment' file='python_accessor'>
-      <info>Set the fragment part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='fragment' type='char *' info='The URI fragment part'/>
-    </function>
-    <function name='xmlURIGetPort' file='python_accessor'>
-      <info>Get the port part from an URI</info>
-      <return type='int' info="The URI port" field="port"/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-    </function>
-    <function name='xmlURISetPort' file='python_accessor'>
-      <info>Set the port part of an URI.</info>
-      <return type='void'/>
-      <arg name='URI' type='xmlURIPtr' info='the URI'/>
-      <arg name='port' type='int' info='The URI port part'/>
-    </function>
-    <!-- xmlErrorPtr accessors -->
-    <function name='xmlErrorGetDomain' file='python_accessor'>
-      <info>What part of the library raised this error</info>
-      <return type='int' info="The error domain" field="domain"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlErrorGetCode' file='python_accessor'>
-      <info>The error code, e.g. an xmlParserError</info>
-      <return type='int' info="The error code" field="code"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlErrorGetMessage' file='python_accessor'>
-      <info>human-readable informative error message</info>
-      <return type='const char *' info="The error message" field="message"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlErrorGetLevel' file='python_accessor'>
-      <info>how consequent is the error</info>
-      <return type='int' info="The error level" field="level"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlErrorGetFile' file='python_accessor'>
-      <info>the filename</info>
-      <return type='const char *' info="The error file" field="file"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlErrorGetLine' file='python_accessor'>
-      <info>the line number if available</info>
-      <return type='int' info="The error line" field="line"/>
-      <arg name='Error' type='xmlErrorPtr' info='the Error'/>
-    </function>
-    <function name='xmlPythonCleanupParser' file='python'>
-      <info>Cleanup function for the XML library. It tries to reclaim all parsing related global memory allocated for the library processing. It doesn'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='xmlMemoryUsed' file='python'>
-      <info>Returns the total amount of memory allocated by libxml2</info>
-      <return type='int' info='number of bytes allocated'/>
-    </function>
-  </symbols>
-</api>
diff -pruN 2.14.6+dfsg-0.1/python/meson.build 2.15.0+dfsg-0.3/python/meson.build
--- 2.14.6+dfsg-0.1/python/meson.build	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/meson.build	2025-09-15 11:55:59.000000000 +0000
@@ -7,34 +7,21 @@ if py.found() == true
 
     pygenerated = custom_target(
         'Python generated files',
-        input: files('generator.py'),
-        depend_files: files(
-            '..' / 'doc' / 'libxml2-api.xml',
-            'libxml2-python-api.xml',
-        ),
+        input: doxygen_docs[1],
         output: [
             'libxml2-py.h',
             'libxml2-export.c',
             'libxml2-py.c',
-            'libxml2class.py',
-            'libxml2class.txt',
+            'libxml2.py',
         ],
-        command: [py, '@INPUT@', meson.current_build_dir()],
+        command: [ py, files('generator.py'), meson.current_build_dir() ],
+        install: true,
+        install_dir: [ false, false, false, py.get_install_dir() ],
     )
     pygenerated_dep = declare_dependency(
         sources : [pygenerated[0]],
     )
 
-    libxml2_py = custom_target(
-        'libxml2.py',
-        input: [files('libxml.py'), pygenerated[3]],
-        output: 'libxml2.py',
-        command: [find_program('cat'), '@INPUT@'],
-        capture: true,
-        install: true,
-        install_dir: py.get_install_dir(),
-    )
-
     libxml2mod_src = [
         files('libxml.c', 'types.c'),
         pygenerated[2],
@@ -59,7 +46,6 @@ if py.found() == true
     setup_py.set('LIBXML_VERSION', meson.project_version())
     setup_py.set('WITH_ICONV', want_iconv.to_int())
     setup_py.set('WITH_ICU', want_icu.to_int())
-    setup_py.set('WITH_LZMA', want_lzma.to_int())
     setup_py.set('WITH_ZLIB', want_zlib.to_int())
     setup_py.set('WITH_THREADS', want_threads.to_int())
     configure_file(
@@ -106,6 +92,7 @@ if py.found() == true
         'tstURI.py',
         'tstmem.py',
         'tstxpath.py',
+        'unicode.py',
         'validDTD.py',
         'validRNG.py',
         'validSchemas.py',
diff -pruN 2.14.6+dfsg-0.1/python/setup.py.in 2.15.0+dfsg-0.3/python/setup.py.in
--- 2.14.6+dfsg-0.1/python/setup.py.in	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/setup.py.in	2025-09-15 11:55:59.000000000 +0000
@@ -26,7 +26,6 @@ with_threads = @WITH_THREADS@
 # Features of libxml2 requiring external DLLs
 with_iconv = @WITH_ICONV@
 with_zlib = @WITH_ZLIB@
-with_lzma = @WITH_LZMA@
 with_icu = @WITH_ICU@
 
 icu_series = 69
@@ -40,7 +39,6 @@ else:
 # (Check the value of `icu_series` above as well)
 iconv_dll = 'iconv.dll'
 zlib_dll = 'zlib1.dll'
-lzma_dll = 'liblzma.dll'
 icu_dlls = ['icuuc%s.dll' % icu_series_s, 'icudt%s.dll' % icu_series_s]
 
 # If this flag is set (windows only),
@@ -97,8 +95,7 @@ libdirs = [
 os.path.join(ROOT,'lib'),
 ]
 
-xml_files = ["libxml2-api.xml", "libxml2-python-api.xml",
-             "libxml.c", "libxml.py", "libxml_wrap.h", "types.c",
+xml_files = ["libxml.c", "libxml.py", "libxml_wrap.h", "types.c",
              "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"]
 
 xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml",
@@ -116,20 +113,6 @@ if missing("libxml2-py.c") or missing("l
         print(sys.exc_info()[0], sys.exc_info()[1])
         sys.exit(1)
 
-    head = open("libxml.py", "r")
-    generated = open("libxml2class.py", "r")
-    result = open("libxml2.py", "w")
-    for line in head.readlines():
-        if WITHDLLS:
-            result.write(altImport(line))
-        else:
-            result.write(line)
-    for line in generated.readlines():
-        result.write(line)
-    head.close()
-    generated.close()
-    result.close()
-
 with_xslt=0
 if missing("libxslt-py.c") or missing("libxslt.py"):
     if missing("xsltgenerator.py") or missing("libxslt-api.xml"):
@@ -175,8 +158,6 @@ if WITHDLLS:
 
     if with_zlib == 1:
         dlls.append(zlib_dll)
-    if with_lzma == 1:
-        dlls.append(lzma_dll)
     if with_iconv == 1:
         dlls.append(iconv_dll)
     if with_icu == 1:
diff -pruN 2.14.6+dfsg-0.1/python/tests/Makefile.am 2.15.0+dfsg-0.3/python/tests/Makefile.am
--- 2.14.6+dfsg-0.1/python/tests/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/Makefile.am	2025-09-15 11:55:59.000000000 +0000
@@ -45,7 +45,8 @@ PYTESTS=	\
     validRNG.py \
     compareNodes.py \
     xpathns.py \
-    xpathleak.py
+    xpathleak.py \
+    unicode.py
 
 XMLS=		\
     tst.xml	\
diff -pruN 2.14.6+dfsg-0.1/python/tests/Makefile.in 2.15.0+dfsg-0.3/python/tests/Makefile.in
--- 2.14.6+dfsg-0.1/python/tests/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/Makefile.in	2025-09-15 11:56:03.000000000 +0000
@@ -144,6 +144,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOXYGEN = @DOXYGEN@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -183,8 +184,6 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -222,10 +221,8 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-TAR = @TAR@
 THREAD_LIBS = @THREAD_LIBS@
 VERSION = @VERSION@
-WGET = @WGET@
 WITH_C14N = @WITH_C14N@
 WITH_CATALOG = @WITH_CATALOG@
 WITH_DEBUG = @WITH_DEBUG@
@@ -234,7 +231,6 @@ WITH_HTTP = @WITH_HTTP@
 WITH_ICONV = @WITH_ICONV@
 WITH_ICU = @WITH_ICU@
 WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
 WITH_MODULES = @WITH_MODULES@
 WITH_OUTPUT = @WITH_OUTPUT@
 WITH_PATTERN = @WITH_PATTERN@
@@ -367,7 +363,8 @@ PYTESTS = \
     validRNG.py \
     compareNodes.py \
     xpathns.py \
-    xpathleak.py
+    xpathleak.py \
+    unicode.py
 
 XMLS = \
     tst.xml	\
diff -pruN 2.14.6+dfsg-0.1/python/tests/reader2.py 2.15.0+dfsg-0.3/python/tests/reader2.py
--- 2.14.6+dfsg-0.1/python/tests/reader2.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/reader2.py	2025-09-15 11:55:59.000000000 +0000
@@ -47,14 +47,17 @@ value
 ^
 """.format(dir_prefix),
     'cond_sect2':
-"""{0}/dtds/cond_sect2.dtd:15: parser error : All markup of the conditional section is not in the same entity
+"""{0}/dtds/cond_sect2.dtd:15: parser error : Parameter entity must match extSubsetDecl
     %ent;
          ^
 Entity: line 1: 
 ]]>
 ^
-{0}/dtds/cond_sect2.dtd:17: parser error : Content error in the external subset
-
+{0}/dtds/cond_sect2.dtd:15: parser error : Content error in the external subset
+    %ent;
+         ^
+Entity: line 1: 
+]]>
 ^
 """.format(dir_prefix),
     'rss':
diff -pruN 2.14.6+dfsg-0.1/python/tests/serialize.py 2.15.0+dfsg-0.3/python/tests/serialize.py
--- 2.14.6+dfsg-0.1/python/tests/serialize.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/serialize.py	2025-09-15 11:55:59.000000000 +0000
@@ -77,17 +77,14 @@ if str != """<!DOCTYPE html PUBLIC "-//W
    sys.exit(1)
 str = doc.serialize("ISO-8859-1")
 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>
+<html><head><meta charset="ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>
 """:
    print("error serializing HTML document 2")
    sys.exit(1)
 str = doc.serialize(format=1)
 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 <html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Hello</title>
-</head>
+<head><title>Hello</title></head>
 <body><p>hello</p></body>
 </html>
 """:
@@ -97,13 +94,13 @@ str = doc.serialize("iso-8859-1", 1)
 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta charset="iso-8859-1">
 <title>Hello</title>
 </head>
 <body><p>hello</p></body>
 </html>
 """:
-   print("error serializing HTML document 4")
+   print("error serializing HTML document 4", str)
    sys.exit(1)
 
 #
@@ -116,15 +113,12 @@ if str != """<html><head><title>Hello</t
    print("error serializing HTML root 1")
    sys.exit(1)
 str = root.serialize("ISO-8859-1")
-if str != """<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>""":
+if str != """<html><head><meta charset="ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>""":
    print("error serializing HTML root 2")
    sys.exit(1)
 str = root.serialize(format=1)
 if str != """<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Hello</title>
-</head>
+<head><title>Hello</title></head>
 <body><p>hello</p></body>
 </html>""":
    print("error serializing HTML root 3")
@@ -132,7 +126,7 @@ if str != """<html>
 str = root.serialize("iso-8859-1", 1)
 if str != """<html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta charset="iso-8859-1">
 <title>Hello</title>
 </head>
 <body><p>hello</p></body>
diff -pruN 2.14.6+dfsg-0.1/python/tests/thread2.py 2.15.0+dfsg-0.3/python/tests/thread2.py
--- 2.14.6+dfsg-0.1/python/tests/thread2.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/thread2.py	2025-09-15 11:55:59.000000000 +0000
@@ -27,19 +27,19 @@ class ErrorHandler:
         self.errors.append(str)
         self.lock.release()
 
-def getLineNumbersDefault():
-    old = libxml2.lineNumbersDefault(0)
-    libxml2.lineNumbersDefault(old)
+def getPedanticParserDefault():
+    old = libxml2.pedanticParserDefault(0)
+    libxml2.pedanticParserDefault(old)
     return old
 
-def test(expectedLineNumbersDefault):
+def test(expectedPedanticParserDefault):
     time.sleep(1)
     global failed
     # check a per thread-global
-    if expectedLineNumbersDefault != getLineNumbersDefault():
+    if expectedPedanticParserDefault != getPedanticParserDefault():
         failed = 1
         print("FAILED to obtain correct value for " \
-              "lineNumbersDefault in thread %d" % get_ident())
+              "pedanticParserDefault in thread %d" % get_ident())
     # check the global error handler 
     # (which is NOT per-thread in the python bindings)
     try:
@@ -54,7 +54,7 @@ eh = ErrorHandler()
 libxml2.registerErrorHandler(eh.handler,"")
 
 # set on the main thread only
-libxml2.lineNumbersDefault(1) 
+libxml2.pedanticParserDefault(1)
 test(1)
 ec = len(eh.errors)
 if ec == 0:
@@ -63,7 +63,7 @@ if ec == 0:
 
 ts = []
 for i in range(THREADS_COUNT):
-    # expect 0 for lineNumbersDefault because
+    # expect 0 for pedanticParserDefault because
     # the new value has been set on the main thread only
     ts.append(Thread(target=test,args=(0,)))
 for t in ts:
@@ -75,11 +75,11 @@ if len(eh.errors) != ec+THREADS_COUNT*ec
     print("FAILED: did not obtain the correct number of errors")
     sys.exit(1)
 
-# set lineNumbersDefault for future new threads
-libxml2.thrDefLineNumbersDefaultValue(1)
+# set pedanticParserDefault for future new threads
+libxml2.thrDefPedanticParserDefaultValue(1)
 ts = []
 for i in range(THREADS_COUNT):
-    # expect 1 for lineNumbersDefault
+    # expect 1 for pedanticParserDefault
     ts.append(Thread(target=test,args=(1,)))
 for t in ts:
     t.start()
diff -pruN 2.14.6+dfsg-0.1/python/tests/unicode.py 2.15.0+dfsg-0.3/python/tests/unicode.py
--- 2.14.6+dfsg-0.1/python/tests/unicode.py	1970-01-01 00:00:00.000000000 +0000
+++ 2.15.0+dfsg-0.3/python/tests/unicode.py	2025-09-15 11:55:59.000000000 +0000
@@ -0,0 +1,61 @@
+from io import BytesIO, StringIO
+import libxml2
+import sys
+from xml.sax.handler import ContentHandler
+from xml.sax.xmlreader import InputSource
+import xml.sax
+
+
+# Test data: an XML file with a 100,000 Unicode smileys, which expand
+# into 400,000 bytes after UTF-8 encoding.
+SMILEY = '\U0001f600'
+TEXT = 100_000 * SMILEY
+XML_STRING = '<?xml version="1.0" encoding="UTF-8" ?>\n<root>' + TEXT + '</root>'
+XML_BYTES = XML_STRING.encode('utf-8')
+
+
+def RunTest(test_name, source):
+    expected = TEXT
+    received = ''
+
+    class TestHandler(ContentHandler):
+        def characters(self, content):
+            nonlocal received
+            received += content
+
+    reader = xml.sax.make_parser(['drv_libxml2'])
+    reader.setContentHandler(TestHandler())
+    reader.parse(source)
+    if expected != received:
+        print(test_name, 'failed!')
+        print('Expected length:', len(expected))
+        print('Received length:', len(received))
+        print('Expected text: (prefix only)', expected[:100])
+        print('Received text: (prefix only)', received[:100])
+        sys.exit(1)
+
+
+def TestBytesInput():
+    source = InputSource()
+    source.setByteStream(BytesIO(XML_BYTES))
+    RunTest('TestBytesInput', source)
+
+
+def TestStringInput():
+    source = InputSource()
+    source.setCharacterStream(StringIO(XML_STRING))
+    RunTest('TestStringInput', source)
+
+
+# Memory debug specific
+libxml2.debugMemory(1)
+
+TestBytesInput()
+TestStringInput()
+
+# Memory debug specific
+libxml2.cleanupParser()
+if libxml2.debugMemory(1) == 0:
+    print("OK")
+else:
+    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
diff -pruN 2.14.6+dfsg-0.1/relaxng.c 2.15.0+dfsg-0.3/relaxng.c
--- 2.14.6+dfsg-0.1/relaxng.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/relaxng.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <veillard@redhat.com>
+ * Author: Daniel Veillard
  */
 
 /**
@@ -36,6 +36,7 @@
 #include "private/error.h"
 #include "private/regexp.h"
 #include "private/string.h"
+#include "private/threads.h"
 
 /*
  * The Relax-NG namespace
@@ -146,8 +147,6 @@ struct _xmlRelaxNGDefine {
 };
 
 /**
- * _xmlRelaxNG:
- *
  * A RelaxNGs definition
  */
 struct _xmlRelaxNG {
@@ -239,8 +238,6 @@ struct _xmlRelaxNGParserCtxt {
 #define FLAGS_NOERROR		8
 
 /**
- * xmlRelaxNGInterleaveGroup:
- *
  * A RelaxNGs partition set associated to lists of definitions
  */
 typedef struct _xmlRelaxNGInterleaveGroup xmlRelaxNGInterleaveGroup;
@@ -255,8 +252,6 @@ struct _xmlRelaxNGInterleaveGroup {
 #define IS_NEEDCHECK		2
 
 /**
- * xmlRelaxNGPartitions:
- *
  * A RelaxNGs partition associated to an interleave group
  */
 typedef struct _xmlRelaxNGPartition xmlRelaxNGPartition;
@@ -270,8 +265,6 @@ struct _xmlRelaxNGPartition {
 };
 
 /**
- * xmlRelaxNGValidState:
- *
  * A RelaxNGs validation state
  */
 #define MAX_ATTR 20
@@ -289,8 +282,6 @@ struct _xmlRelaxNGValidState {
 };
 
 /**
- * xmlRelaxNGStates:
- *
  * A RelaxNGs container for validation state
  */
 typedef struct _xmlRelaxNGStates xmlRelaxNGStates;
@@ -304,8 +295,6 @@ struct _xmlRelaxNGStates {
 #define ERROR_IS_DUP	1
 
 /**
- * xmlRelaxNGValidError:
- *
  * A RelaxNGs validation error
  */
 typedef struct _xmlRelaxNGValidError xmlRelaxNGValidError;
@@ -320,8 +309,6 @@ struct _xmlRelaxNGValidError {
 };
 
 /**
- * xmlRelaxNGValidCtxt:
- *
  * A RelaxNGs validation context
  */
 
@@ -371,8 +358,6 @@ struct _xmlRelaxNGValidCtxt {
 };
 
 /**
- * xmlRelaxNGInclude:
- *
  * Structure associated to a RelaxNGs document element
  */
 struct _xmlRelaxNGInclude {
@@ -384,8 +369,6 @@ struct _xmlRelaxNGInclude {
 };
 
 /**
- * xmlRelaxNGDocument:
- *
  * Structure associated to a RelaxNGs document element
  */
 struct _xmlRelaxNGDocument {
@@ -405,11 +388,9 @@ struct _xmlRelaxNGDocument {
  ************************************************************************/
 
 /**
- * xmlRngPErrMemory:
- * @ctxt:  an Relax-NG parser context
- * @extra:  extra information
- *
  * Handle a redefinition of attribute error
+ *
+ * @param ctxt  an Relax-NG parser context
  */
 static void
 xmlRngPErrMemory(xmlRelaxNGParserCtxtPtr ctxt)
@@ -431,11 +412,9 @@ xmlRngPErrMemory(xmlRelaxNGParserCtxtPtr
 }
 
 /**
- * xmlRngVErrMemory:
- * @ctxt:  a Relax-NG validation context
- * @extra:  extra information
- *
  * Handle a redefinition of attribute error
+ *
+ * @param ctxt  a Relax-NG validation context
  */
 static void
 xmlRngVErrMemory(xmlRelaxNGValidCtxtPtr ctxt)
@@ -457,15 +436,14 @@ xmlRngVErrMemory(xmlRelaxNGValidCtxtPtr
 }
 
 /**
- * xmlRngPErr:
- * @ctxt:  a Relax-NG parser context
- * @node:  the node raising the error
- * @error:  the error code
- * @msg:  message
- * @str1:  extra info
- * @str2:  extra info
- *
  * Handle a Relax NG Parsing error
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the node raising the error
+ * @param error  the error code
+ * @param msg  message
+ * @param str1  extra info
+ * @param str2  extra info
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlRngPErr(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, int error,
@@ -499,15 +477,14 @@ xmlRngPErr(xmlRelaxNGParserCtxtPtr ctxt,
 }
 
 /**
- * xmlRngVErr:
- * @ctxt:  a Relax-NG validation context
- * @node:  the node raising the error
- * @error:  the error code
- * @msg:  message
- * @str1:  extra info
- * @str2:  extra info
- *
  * Handle a Relax NG Validation error
+ *
+ * @param ctxt  a Relax-NG validation context
+ * @param node  the node raising the error
+ * @param error  the error code
+ * @param msg  message
+ * @param str1  extra info
+ * @param str2  extra info
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlRngVErr(xmlRelaxNGValidCtxtPtr ctxt, xmlNodePtr node, int error,
@@ -547,44 +524,37 @@ xmlRngVErr(xmlRelaxNGValidCtxtPtr ctxt,
  ************************************************************************/
 
 /**
- * xmlRelaxNGTypeHave:
- * @data:  data needed for the library
- * @type:  the type name
- * @value:  the value to check
- *
  * Function provided by a type library to check if a type is exported
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 typedef int (*xmlRelaxNGTypeHave) (void *data, const xmlChar * type);
 
 /**
- * xmlRelaxNGTypeCheck:
- * @data:  data needed for the library
- * @type:  the type name
- * @value:  the value to check
- * @result:  place to store the result if needed
- *
  * Function provided by a type library to check if a value match a type
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value  the value to check
+ * @param result  place to store the result if needed
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 typedef int (*xmlRelaxNGTypeCheck) (void *data, const xmlChar * type,
                                     const xmlChar * value, void **result,
-                                    xmlNodePtr node);
+                                    xmlNode *node);
 
 /**
- * xmlRelaxNGFacetCheck:
- * @data:  data needed for the library
- * @type:  the type name
- * @facet:  the facet name
- * @val:  the facet value
- * @strval:  the string value
- * @value:  the value to check
- *
  * Function provided by a type library to check a value facet
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param facet  the facet name
+ * @param val  the facet value
+ * @param strval  the string value
+ * @param value  the value to check
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 typedef int (*xmlRelaxNGFacetCheck) (void *data, const xmlChar * type,
                                      const xmlChar * facet,
@@ -592,32 +562,29 @@ typedef int (*xmlRelaxNGFacetCheck) (voi
                                      const xmlChar * strval, void *value);
 
 /**
- * xmlRelaxNGTypeFree:
- * @data:  data needed for the library
- * @result:  the value to free
- *
  * Function provided by a type library to free a returned result
+ *
+ * @param data  data needed for the library
+ * @param result  the value to free
  */
 typedef void (*xmlRelaxNGTypeFree) (void *data, void *result);
 
 /**
- * xmlRelaxNGTypeCompare:
- * @data:  data needed for the library
- * @type:  the type name
- * @value1:  the first value
- * @value2:  the second value
- *
  * Function provided by a type library to compare two values accordingly
  * to a type.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value1  the first value
+ * @param value2  the second value
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 typedef int (*xmlRelaxNGTypeCompare) (void *data, const xmlChar * type,
                                       const xmlChar * value1,
-                                      xmlNodePtr ctxt1,
+                                      xmlNode *ctxt1,
                                       void *comp1,
                                       const xmlChar * value2,
-                                      xmlNodePtr ctxt2);
+                                      xmlNode *ctxt2);
 typedef struct _xmlRelaxNGTypeLibrary xmlRelaxNGTypeLibrary;
 typedef xmlRelaxNGTypeLibrary *xmlRelaxNGTypeLibraryPtr;
 struct _xmlRelaxNGTypeLibrary {
@@ -647,10 +614,9 @@ static void xmlRelaxNGFreeValidState(xml
                                      xmlRelaxNGValidStatePtr state);
 
 /**
- * xmlRelaxNGFreeDocument:
- * @docu:  a document structure
- *
  * Deallocate a RelaxNG document structure.
+ *
+ * @param docu  a document structure
  */
 static void
 xmlRelaxNGFreeDocument(xmlRelaxNGDocumentPtr docu)
@@ -668,10 +634,9 @@ xmlRelaxNGFreeDocument(xmlRelaxNGDocumen
 }
 
 /**
- * xmlRelaxNGFreeDocumentList:
- * @docu:  a list of  document structure
- *
  * Deallocate a RelaxNG document structures.
+ *
+ * @param docu  a list of  document structure
  */
 static void
 xmlRelaxNGFreeDocumentList(xmlRelaxNGDocumentPtr docu)
@@ -686,10 +651,9 @@ xmlRelaxNGFreeDocumentList(xmlRelaxNGDoc
 }
 
 /**
- * xmlRelaxNGFreeInclude:
- * @incl:  a include structure
- *
  * Deallocate a RelaxNG include structure.
+ *
+ * @param incl  a include structure
  */
 static void
 xmlRelaxNGFreeInclude(xmlRelaxNGIncludePtr incl)
@@ -707,10 +671,9 @@ xmlRelaxNGFreeInclude(xmlRelaxNGIncludeP
 }
 
 /**
- * xmlRelaxNGFreeIncludeList:
- * @incl:  a include structure list
- *
  * Deallocate a RelaxNG include structure.
+ *
+ * @param incl  a include structure list
  */
 static void
 xmlRelaxNGFreeIncludeList(xmlRelaxNGIncludePtr incl)
@@ -725,12 +688,10 @@ xmlRelaxNGFreeIncludeList(xmlRelaxNGIncl
 }
 
 /**
- * xmlRelaxNGNewRelaxNG:
- * @ctxt:  a Relax-NG validation context (optional)
- *
  * Allocate a new RelaxNG structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context (optional)
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGPtr
 xmlRelaxNGNewRelaxNG(xmlRelaxNGParserCtxtPtr ctxt)
@@ -748,10 +709,9 @@ xmlRelaxNGNewRelaxNG(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGFreeInnerSchema:
- * @schema:  a schema structure
- *
  * Deallocate a RelaxNG schema structure.
+ *
+ * @param schema  a schema structure
  */
 static void
 xmlRelaxNGFreeInnerSchema(xmlRelaxNGPtr schema)
@@ -773,13 +733,12 @@ xmlRelaxNGFreeInnerSchema(xmlRelaxNGPtr
 }
 
 /**
- * xmlRelaxNGFree:
- * @schema:  a schema structure
- *
  * Deallocate a RelaxNG structure.
+ *
+ * @param schema  a schema structure
  */
 void
-xmlRelaxNGFree(xmlRelaxNGPtr schema)
+xmlRelaxNGFree(xmlRelaxNG *schema)
 {
     if (schema == NULL)
         return;
@@ -804,12 +763,10 @@ xmlRelaxNGFree(xmlRelaxNGPtr schema)
 }
 
 /**
- * xmlRelaxNGNewGrammar:
- * @ctxt:  a Relax-NG validation context (optional)
- *
  * Allocate a new RelaxNG grammar.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context (optional)
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGGrammarPtr
 xmlRelaxNGNewGrammar(xmlRelaxNGParserCtxtPtr ctxt)
@@ -827,10 +784,9 @@ xmlRelaxNGNewGrammar(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGFreeGrammar:
- * @grammar:  a grammar structure
- *
  * Deallocate a RelaxNG grammar structure.
+ *
+ * @param grammar  a grammar structure
  */
 static void
 xmlRelaxNGFreeGrammar(xmlRelaxNGGrammarPtr grammar)
@@ -855,13 +811,11 @@ xmlRelaxNGFreeGrammar(xmlRelaxNGGrammarP
 }
 
 /**
- * xmlRelaxNGNewDefine:
- * @ctxt:  a Relax-NG validation context
- * @node:  the node in the input document.
- *
  * Allocate a new RelaxNG define.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context
+ * @param node  the node in the input document.
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGNewDefine(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -904,10 +858,9 @@ xmlRelaxNGNewDefine(xmlRelaxNGParserCtxt
 }
 
 /**
- * xmlRelaxNGFreePartition:
- * @partitions:  a partition set structure
- *
  * Deallocate RelaxNG partition set structures.
+ *
+ * @param partitions  a partition set structure
  */
 static void
 xmlRelaxNGFreePartition(xmlRelaxNGPartitionPtr partitions)
@@ -937,10 +890,9 @@ xmlRelaxNGFreePartition(xmlRelaxNGPartit
 }
 
 /**
- * xmlRelaxNGFreeDefine:
- * @define:  a define structure
- *
  * Deallocate a RelaxNG define structure.
+ *
+ * @param define  a define structure
  */
 static void
 xmlRelaxNGFreeDefine(xmlRelaxNGDefinePtr define)
@@ -971,13 +923,11 @@ xmlRelaxNGFreeDefine(xmlRelaxNGDefinePtr
 }
 
 /**
- * xmlRelaxNGNewStates:
- * @ctxt:  a Relax-NG validation context
- * @size:  the default size for the container
- *
  * Allocate a new RelaxNG validation state container
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context
+ * @param size  the default size for the container
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGStatesPtr
 xmlRelaxNGNewStates(xmlRelaxNGValidCtxtPtr ctxt, int size)
@@ -1016,15 +966,13 @@ xmlRelaxNGNewStates(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGAddStateUniq:
- * @ctxt:  a Relax-NG validation context
- * @states:  the states container
- * @state:  the validation state
- *
  * Add a RelaxNG validation state to the container without checking
  * for unicity.
  *
- * Return 1 in case of success and 0 if this is a duplicate and -1 on error
+ * @param ctxt  a Relax-NG validation context
+ * @param states  the states container
+ * @param state  the validation state
+ * @returns 1 in case of success and 0 if this is a duplicate and -1 on error
  */
 static int
 xmlRelaxNGAddStatesUniq(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1055,14 +1003,12 @@ xmlRelaxNGAddStatesUniq(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGAddState:
- * @ctxt:  a Relax-NG validation context
- * @states:  the states container
- * @state:  the validation state
- *
  * Add a RelaxNG validation state to the container
  *
- * Return 1 in case of success and 0 if this is a duplicate and -1 on error
+ * @param ctxt  a Relax-NG validation context
+ * @param states  the states container
+ * @param state  the validation state
+ * @returns 1 in case of success and 0 if this is a duplicate and -1 on error
  */
 static int
 xmlRelaxNGAddStates(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1101,11 +1047,10 @@ xmlRelaxNGAddStates(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGFreeStates:
- * @ctxt:  a Relax-NG validation context
- * @states:  the container
- *
  * Free a RelaxNG validation state container
+ *
+ * @param ctxt  a Relax-NG validation context
+ * @param states  the container
  */
 static void
 xmlRelaxNGFreeStates(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1147,13 +1092,11 @@ xmlRelaxNGFreeStates(xmlRelaxNGValidCtxt
 }
 
 /**
- * xmlRelaxNGNewValidState:
- * @ctxt:  a Relax-NG validation context
- * @node:  the current node or NULL for the document
- *
  * Allocate a new RelaxNG validation state
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context
+ * @param node  the current node or NULL for the document
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGValidStatePtr
 xmlRelaxNGNewValidState(xmlRelaxNGValidCtxtPtr ctxt, xmlNodePtr node)
@@ -1242,13 +1185,11 @@ xmlRelaxNGNewValidState(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGCopyValidState:
- * @ctxt:  a Relax-NG validation context
- * @state:  a validation state
- *
  * Copy the validation state
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a Relax-NG validation context
+ * @param state  a validation state
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlRelaxNGValidStatePtr
 xmlRelaxNGCopyValidState(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1308,14 +1249,12 @@ xmlRelaxNGCopyValidState(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGEqualValidState:
- * @ctxt:  a Relax-NG validation context
- * @state1:  a validation state
- * @state2:  a validation state
- *
  * Compare the validation states for equality
  *
- * Returns 1 if equal, 0 otherwise
+ * @param ctxt  a Relax-NG validation context
+ * @param state1  a validation state
+ * @param state2  a validation state
+ * @returns 1 if equal, 0 otherwise
  */
 static int
 xmlRelaxNGEqualValidState(xmlRelaxNGValidCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -1349,10 +1288,10 @@ xmlRelaxNGEqualValidState(xmlRelaxNGVali
 }
 
 /**
- * xmlRelaxNGFreeValidState:
- * @state:  a validation state structure
- *
  * Deallocate a RelaxNG validation state structure.
+ *
+ * @param ctxt  validation context
+ * @param state  a validation state structure
  */
 static void
 xmlRelaxNGFreeValidState(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1380,17 +1319,15 @@ xmlRelaxNGFreeValidState(xmlRelaxNGValid
  ************************************************************************/
 
 /**
- * xmlRelaxParserSetFlag:
- * @ctxt: a RelaxNG parser context
- * @flags: a set of flags values
- *
  * Semi private function used to pass information to a parser context
  * which are a combination of xmlRelaxNGParserFlag .
  *
- * Returns 0 if success and -1 in case of error
+ * @param ctxt  a RelaxNG parser context
+ * @param flags  a set of flags values
+ * @returns 0 if success and -1 in case of error
  */
 int
-xmlRelaxParserSetFlag(xmlRelaxNGParserCtxtPtr ctxt, int flags)
+xmlRelaxParserSetFlag(xmlRelaxNGParserCtxt *ctxt, int flags)
 {
     if (ctxt == NULL) return(-1);
     if (flags & XML_RELAXNGP_FREE_DOC) {
@@ -1456,13 +1393,11 @@ xmlRelaxReadMemory(xmlRelaxNGParserCtxtP
 }
 
 /**
- * xmlRelaxNGIncludePush:
- * @ctxt:  the parser context
- * @value:  the element doc
- *
  * Pushes a new include on top of the include stack
  *
- * Returns 0 in case of error, the index in the stack otherwise
+ * @param ctxt  the parser context
+ * @param value  the element doc
+ * @returns 0 in case of error, the index in the stack otherwise
  */
 static int
 xmlRelaxNGIncludePush(xmlRelaxNGParserCtxtPtr ctxt,
@@ -1496,12 +1431,10 @@ xmlRelaxNGIncludePush(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGIncludePop:
- * @ctxt: the parser context
- *
  * Pops the top include from the include stack
  *
- * Returns the include just removed
+ * @param ctxt  the parser context
+ * @returns the include just removed
  */
 static xmlRelaxNGIncludePtr
 xmlRelaxNGIncludePop(xmlRelaxNGParserCtxtPtr ctxt)
@@ -1521,15 +1454,13 @@ xmlRelaxNGIncludePop(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGRemoveRedefine:
- * @ctxt: the parser context
- * @URL:  the normalized URL
- * @target:  the included target
- * @name:  the define name to eliminate
- *
  * Applies the elimination algorithm of 4.7
  *
- * Returns 0 in case of error, 1 in case of success.
+ * @param ctxt  the parser context
+ * @param URL  the normalized URL
+ * @param target  the included target
+ * @param name  the define name to eliminate
+ * @returns 0 in case of error, 1 in case of success.
  */
 static int
 xmlRelaxNGRemoveRedefine(xmlRelaxNGParserCtxtPtr ctxt,
@@ -1584,17 +1515,15 @@ xmlRelaxNGRemoveRedefine(xmlRelaxNGParse
 }
 
 /**
- * xmlRelaxNGLoadInclude:
- * @ctxt: the parser context
- * @URL:  the normalized URL
- * @node: the include node.
- * @ns:  the namespace passed from the context.
- *
  * First lookup if the document is already loaded into the parser context,
  * check against recursion. If not found the resource is loaded and
  * the content is preprocessed before being returned back to the caller.
  *
- * Returns the xmlRelaxNGIncludePtr or NULL in case of error
+ * @param ctxt  the parser context
+ * @param URL  the normalized URL
+ * @param node  the include node.
+ * @param ns  the namespace passed from the context.
+ * @returns the xmlRelaxNGInclude or NULL in case of error
  */
 static xmlRelaxNGIncludePtr
 xmlRelaxNGLoadInclude(xmlRelaxNGParserCtxtPtr ctxt, const xmlChar * URL,
@@ -1748,16 +1677,14 @@ xmlRelaxNGLoadInclude(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGValidErrorPush:
- * @ctxt:  the validation context
- * @err:  the error code
- * @arg1:  the first string argument
- * @arg2:  the second string argument
- * @dup:  arg need to be duplicated
- *
  * Pushes a new error on top of the error stack
  *
- * Returns 0 in case of error, the index in the stack otherwise
+ * @param ctxt  the validation context
+ * @param err  the error code
+ * @param arg1  the first string argument
+ * @param arg2  the second string argument
+ * @param dup  arg need to be duplicated
+ * @returns 0 in case of error, the index in the stack otherwise
  */
 static int
 xmlRelaxNGValidErrorPush(xmlRelaxNGValidCtxtPtr ctxt,
@@ -1818,10 +1745,9 @@ xmlRelaxNGValidErrorPush(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGValidErrorPop:
- * @ctxt: the validation context
- *
  * Pops the top error from the error stack
+ *
+ * @param ctxt  the validation context
  */
 static void
 xmlRelaxNGValidErrorPop(xmlRelaxNGValidCtxtPtr ctxt)
@@ -1850,13 +1776,11 @@ xmlRelaxNGValidErrorPop(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGDocumentPush:
- * @ctxt:  the parser context
- * @value:  the element doc
- *
  * Pushes a new doc on top of the doc stack
  *
- * Returns 0 in case of error, the index in the stack otherwise
+ * @param ctxt  the parser context
+ * @param value  the element doc
+ * @returns 0 in case of error, the index in the stack otherwise
  */
 static int
 xmlRelaxNGDocumentPush(xmlRelaxNGParserCtxtPtr ctxt,
@@ -1890,12 +1814,10 @@ xmlRelaxNGDocumentPush(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGDocumentPop:
- * @ctxt: the parser context
- *
  * Pops the top doc from the doc stack
  *
- * Returns the doc just removed
+ * @param ctxt  the parser context
+ * @returns the doc just removed
  */
 static xmlRelaxNGDocumentPtr
 xmlRelaxNGDocumentPop(xmlRelaxNGParserCtxtPtr ctxt)
@@ -1915,16 +1837,14 @@ xmlRelaxNGDocumentPop(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGLoadExternalRef:
- * @ctxt: the parser context
- * @URL:  the normalized URL
- * @ns:  the inherited ns if any
- *
  * First lookup if the document is already loaded into the parser context,
  * check against recursion. If not found the resource is loaded and
  * the content is preprocessed before being returned back to the caller.
  *
- * Returns the xmlRelaxNGDocumentPtr or NULL in case of error
+ * @param ctxt  the parser context
+ * @param URL  the normalized URL
+ * @param ns  the inherited ns if any
+ * @returns the xmlRelaxNGDocument or NULL in case of error
  */
 static xmlRelaxNGDocumentPtr
 xmlRelaxNGLoadExternalRef(xmlRelaxNGParserCtxtPtr ctxt,
@@ -2071,14 +1991,12 @@ xmlRelaxNGDefName(xmlRelaxNGDefinePtr de
 }
 
 /**
- * xmlRelaxNGGetErrorString:
- * @err:  the error code
- * @arg1:  the first string argument
- * @arg2:  the second string argument
- *
  * computes a formatted error string for the given error code and args
  *
- * Returns the error string, it must be deallocated by the caller
+ * @param err  the error code
+ * @param arg1  the first string argument
+ * @param arg2  the second string argument
+ * @returns the error string, it must be deallocated by the caller
  */
 static xmlChar *
 xmlRelaxNGGetErrorString(xmlRelaxNGValidErr err, const xmlChar * arg1,
@@ -2218,15 +2136,14 @@ xmlRelaxNGGetErrorString(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGShowValidError:
- * @ctxt:  the validation context
- * @err:  the error number
- * @node:  the node
- * @child:  the node child generating the problem.
- * @arg1:  the first argument
- * @arg2:  the second argument
- *
  * Show a validation error.
+ *
+ * @param ctxt  the validation context
+ * @param err  the error number
+ * @param node  the node
+ * @param child  the node child generating the problem.
+ * @param arg1  the first argument
+ * @param arg2  the second argument
  */
 static void
 xmlRelaxNGShowValidError(xmlRelaxNGValidCtxtPtr ctxt,
@@ -2251,11 +2168,10 @@ xmlRelaxNGShowValidError(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGPopErrors:
- * @ctxt:  the validation context
- * @level:  the error level in the stack
- *
  * pop and discard all errors until the given level is reached
+ *
+ * @param ctxt  the validation context
+ * @param level  the error level in the stack
  */
 static void
 xmlRelaxNGPopErrors(xmlRelaxNGValidCtxtPtr ctxt, int level)
@@ -2281,17 +2197,16 @@ xmlRelaxNGPopErrors(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGDumpValidError:
- * @ctxt:  the validation context
- *
  * Show all validation error over a given index.
+ *
+ * @param ctxt  the validation context
  */
 static void
 xmlRelaxNGDumpValidError(xmlRelaxNGValidCtxtPtr ctxt)
 {
     int i, j, k;
     xmlRelaxNGValidErrorPtr err, dup;
-
+    
     for (i = 0, k = 0; i < ctxt->errNr; i++) {
         err = &ctxt->errTab[i];
         if (k < MAX_ERROR) {
@@ -2322,15 +2237,14 @@ xmlRelaxNGDumpValidError(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGAddValidError:
- * @ctxt:  the validation context
- * @err:  the error number
- * @arg1:  the first argument
- * @arg2:  the second argument
- * @dup:  need to dup the args
- *
  * Register a validation error, either generating it if it's sure
  * or stacking it for later handling if unsure.
+ *
+ * @param ctxt  the validation context
+ * @param err  the error number
+ * @param arg1  the first argument
+ * @param arg2  the second argument
+ * @param dup  need to dup the args
  */
 static void
 xmlRelaxNGAddValidError(xmlRelaxNGValidCtxtPtr ctxt,
@@ -2384,14 +2298,12 @@ static xmlChar *xmlRelaxNGNormalize(xmlR
                                     const xmlChar * str);
 
 /**
- * xmlRelaxNGSchemaTypeHave:
- * @data:  data needed for the library
- * @type:  the type name
- *
  * Check if the given type is provided by
  * the W3C XMLSchema Datatype library.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGSchemaTypeHave(void *data ATTRIBUTE_UNUSED, const xmlChar * type)
@@ -2409,16 +2321,15 @@ xmlRelaxNGSchemaTypeHave(void *data ATTR
 }
 
 /**
- * xmlRelaxNGSchemaTypeCheck:
- * @data:  data needed for the library
- * @type:  the type name
- * @value:  the value to check
- * @node:  the node
- *
  * Check if the given type and value are validated by
  * the W3C XMLSchema Datatype library.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value  the value to check
+ * @param result  pointer to result
+ * @param node  the node
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGSchemaTypeCheck(void *data ATTRIBUTE_UNUSED,
@@ -2448,17 +2359,15 @@ xmlRelaxNGSchemaTypeCheck(void *data ATT
 }
 
 /**
- * xmlRelaxNGSchemaFacetCheck:
- * @data:  data needed for the library
- * @type:  the type name
- * @facet:  the facet name
- * @val:  the facet value
- * @strval:  the string value
- * @value:  the value to check
- *
  * Function provided by a type library to check a value facet
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param facetname  the facet name
+ * @param val  the facet value
+ * @param strval  the string value
+ * @param value  the value to check
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGSchemaFacetCheck(void *data ATTRIBUTE_UNUSED,
@@ -2524,13 +2433,11 @@ xmlRelaxNGSchemaFacetCheck(void *data AT
 }
 
 /**
- * xmlRelaxNGSchemaFreeValue:
- * @data:  data needed for the library
- * @value:  the value to free
- *
  * Function provided by a type library to free a Schemas value
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param value  the value to free
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static void
 xmlRelaxNGSchemaFreeValue(void *data ATTRIBUTE_UNUSED, void *value)
@@ -2539,16 +2446,17 @@ xmlRelaxNGSchemaFreeValue(void *data ATT
 }
 
 /**
- * xmlRelaxNGSchemaTypeCompare:
- * @data:  data needed for the library
- * @type:  the type name
- * @value1:  the first value
- * @value2:  the second value
- *
  * Compare two values for equality accordingly a type from the W3C XMLSchema
  * Datatype library.
  *
- * Returns 1 if equal, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value1  the first value
+ * @param ctxt1  the first context node
+ * @param comp1  value to compare with
+ * @param value2  the second value
+ * @param ctxt2  the second context node
+ * @returns 1 if equal, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGSchemaTypeCompare(void *data ATTRIBUTE_UNUSED,
@@ -2596,14 +2504,12 @@ xmlRelaxNGSchemaTypeCompare(void *data A
 }
 
 /**
- * xmlRelaxNGDefaultTypeHave:
- * @data:  data needed for the library
- * @type:  the type name
- *
  * Check if the given type is provided by
  * the default datatype library.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGDefaultTypeHave(void *data ATTRIBUTE_UNUSED,
@@ -2619,16 +2525,15 @@ xmlRelaxNGDefaultTypeHave(void *data ATT
 }
 
 /**
- * xmlRelaxNGDefaultTypeCheck:
- * @data:  data needed for the library
- * @type:  the type name
- * @value:  the value to check
- * @node:  the node
- *
  * Check if the given type and value are validated by
  * the default datatype library.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value  the value to check
+ * @param result  pointer to result
+ * @param node  the node
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGDefaultTypeCheck(void *data ATTRIBUTE_UNUSED,
@@ -2649,16 +2554,17 @@ xmlRelaxNGDefaultTypeCheck(void *data AT
 }
 
 /**
- * xmlRelaxNGDefaultTypeCompare:
- * @data:  data needed for the library
- * @type:  the type name
- * @value1:  the first value
- * @value2:  the second value
- *
  * Compare two values accordingly a type from the default
  * datatype library.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param data  data needed for the library
+ * @param type  the type name
+ * @param value1  the first value
+ * @param ctxt1  the first context node
+ * @param comp1  value to compare with
+ * @param value2  the second value
+ * @param ctxt2  the second context node
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGDefaultTypeCompare(void *data ATTRIBUTE_UNUSED,
@@ -2704,11 +2610,10 @@ static int xmlRelaxNGTypeInitialized = 0
 static xmlHashTablePtr xmlRelaxNGRegisteredTypes = NULL;
 
 /**
- * xmlRelaxNGFreeTypeLibrary:
- * @lib:  the type library structure
- * @namespace:  the URI bound to the library
- *
  * Free the structure associated to the type library
+ *
+ * @param payload  the type library structure
+ * @param namespace  the URI bound to the library
  */
 static void
 xmlRelaxNGFreeTypeLibrary(void *payload,
@@ -2723,16 +2628,16 @@ xmlRelaxNGFreeTypeLibrary(void *payload,
 }
 
 /**
- * xmlRelaxNGRegisterTypeLibrary:
- * @namespace:  the URI bound to the library
- * @data:  data associated to the library
- * @have:  the provide function
- * @check:  the checking function
- * @comp:  the comparison function
- *
  * Register a new type library
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param namespace  the URI bound to the library
+ * @param data  data associated to the library
+ * @param have  the provide function
+ * @param check  the checking function
+ * @param comp  the comparison function
+ * @param facet  facet check function
+ * @param freef  free function
+ * @returns 0 in case of success and -1 in case of error.
  */
 static int
 xmlRelaxNGRegisterTypeLibrary(const xmlChar * namespace, void *data,
@@ -2773,21 +2678,41 @@ xmlRelaxNGRegisterTypeLibrary(const xmlC
     return (0);
 }
 
+static xmlMutex xmlRelaxNGMutex;
+
+void
+xmlInitRelaxNGInternal(void)
+{
+    xmlInitMutex(&xmlRelaxNGMutex);
+}
+
+void
+xmlCleanupRelaxNGInternal(void)
+{
+    xmlCleanupMutex(&xmlRelaxNGMutex);
+}
+
 /**
- * xmlRelaxNGInitTypes:
- *
  * Initialize the default type libraries.
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
 xmlRelaxNGInitTypes(void)
 {
-    if (xmlRelaxNGTypeInitialized != 0)
+    xmlInitParser();
+
+    xmlMutexLock(&xmlRelaxNGMutex);
+    if (xmlRelaxNGTypeInitialized != 0) {
+        xmlMutexUnlock(&xmlRelaxNGMutex);
         return (0);
+    }
+
     xmlRelaxNGRegisteredTypes = xmlHashCreate(10);
-    if (xmlRelaxNGRegisteredTypes == NULL)
+    if (xmlRelaxNGRegisteredTypes == NULL) {
+        xmlMutexUnlock(&xmlRelaxNGMutex);
         return (-1);
+    }
     xmlRelaxNGRegisterTypeLibrary(BAD_CAST
                                   "http://www.w3.org/2001/XMLSchema-datatypes",
                                   NULL, xmlRelaxNGSchemaTypeHave,
@@ -2801,27 +2726,31 @@ xmlRelaxNGInitTypes(void)
                                   xmlRelaxNGDefaultTypeCompare, NULL,
                                   NULL);
     xmlRelaxNGTypeInitialized = 1;
+    xmlMutexUnlock(&xmlRelaxNGMutex);
     return (0);
 }
 
 /**
- * xmlRelaxNGCleanupTypes:
+ * Cleanup the default Schemas type library associated to RelaxNG
  *
- * DEPRECATED: This function will be made private. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function will be made private. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  *
- * Cleanup the default Schemas type library associated to RelaxNG
  */
 void
 xmlRelaxNGCleanupTypes(void)
 {
     xmlSchemaCleanupTypes();
-    if (xmlRelaxNGTypeInitialized == 0)
+    xmlMutexLock(&xmlRelaxNGMutex);
+    if (xmlRelaxNGTypeInitialized == 0) {
+        xmlMutexUnlock(&xmlRelaxNGMutex);
         return;
+    }
     xmlHashFree(xmlRelaxNGRegisteredTypes, xmlRelaxNGFreeTypeLibrary);
     xmlRelaxNGTypeInitialized = 0;
+    xmlMutexUnlock(&xmlRelaxNGMutex);
 }
 
 /************************************************************************
@@ -2837,12 +2766,10 @@ static int xmlRelaxNGTryCompile(xmlRelax
                                 xmlRelaxNGDefinePtr def);
 
 /**
- * xmlRelaxNGIsCompilable:
- * @define:  the definition to check
- *
  * Check if a definition is nullable.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error
+ * @param def  the definition to check
+ * @returns 1 if yes, 0 if no and -1 in case of error
  */
 static int
 xmlRelaxNGIsCompilable(xmlRelaxNGDefinePtr def)
@@ -2956,14 +2883,12 @@ xmlRelaxNGIsCompilable(xmlRelaxNGDefineP
 }
 
 /**
- * xmlRelaxNGCompile:
- * ctxt:  the RelaxNG parser context
- * @define:  the definition tree to compile
- *
  * Compile the set of definitions, it works recursively, till the
  * element boundaries, where it tries to compile the content if possible
  *
- * Returns 0 if success and -1 in case of error
+ * @param ctxt  the RelaxNG parser context
+ * @param def  the definition tree to compile
+ * @returns 0 if success and -1 in case of error
  */
 static int
 xmlRelaxNGCompile(xmlRelaxNGParserCtxtPtr ctxt, xmlRelaxNGDefinePtr def)
@@ -3177,14 +3102,12 @@ xmlRelaxNGCompile(xmlRelaxNGParserCtxtPt
 }
 
 /**
- * xmlRelaxNGTryCompile:
- * ctxt:  the RelaxNG parser context
- * @define:  the definition tree to compile
- *
  * Try to compile the set of definitions, it works recursively,
  * possibly ignoring parts which cannot be compiled.
  *
- * Returns 0 if success and -1 in case of error
+ * @param ctxt  the RelaxNG parser context
+ * @param def  the definition tree to compile
+ * @returns 0 if success and -1 in case of error
  */
 static int
 xmlRelaxNGTryCompile(xmlRelaxNGParserCtxtPtr ctxt, xmlRelaxNGDefinePtr def)
@@ -3278,12 +3201,10 @@ static int xmlRelaxNGElementMatch(xmlRel
 #define IS_BLANK_NODE(n) (xmlRelaxNGIsBlank((n)->content))
 
 /**
- * xmlRelaxNGIsNullable:
- * @define:  the definition to verify
- *
  * Check if a definition is nullable.
  *
- * Returns 1 if yes, 0 if no and -1 in case of error
+ * @param define  the definition to verify
+ * @returns 1 if yes, 0 if no and -1 in case of error
  */
 static int
 xmlRelaxNGIsNullable(xmlRelaxNGDefinePtr define)
@@ -3357,12 +3278,10 @@ xmlRelaxNGIsNullable(xmlRelaxNGDefinePtr
 }
 
 /**
- * xmlRelaxNGIsBlank:
- * @str:  a string
- *
  * Check if a string is ignorable c.f. 4.2. Whitespace
  *
- * Returns 1 if the string is NULL or made of blanks chars, 0 otherwise
+ * @param str  a string
+ * @returns 1 if the string is NULL or made of blanks chars, 0 otherwise
  */
 static int
 xmlRelaxNGIsBlank(xmlChar * str)
@@ -3378,13 +3297,11 @@ xmlRelaxNGIsBlank(xmlChar * str)
 }
 
 /**
- * xmlRelaxNGGetDataTypeLibrary:
- * @ctxt:  a Relax-NG parser context
- * @node:  the current data or value element
- *
  * Applies algorithm from 4.3. datatypeLibrary attribute
  *
- * Returns the datatypeLibrary value or NULL if not found
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the current data or value element
+ * @returns the datatypeLibrary value or NULL if not found
  */
 static xmlChar *
 xmlRelaxNGGetDataTypeLibrary(xmlRelaxNGParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -3431,13 +3348,11 @@ xmlRelaxNGGetDataTypeLibrary(xmlRelaxNGP
 }
 
 /**
- * xmlRelaxNGParseValue:
- * @ctxt:  a Relax-NG parser context
- * @node:  the data node.
- *
  * parse the content of a RelaxNG value node.
  *
- * Returns the definition pointer or NULL in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the data node.
+ * @returns the definition pointer or NULL in case of error
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseValue(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -3523,13 +3438,11 @@ xmlRelaxNGParseValue(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGParseData:
- * @ctxt:  a Relax-NG parser context
- * @node:  the data node.
- *
  * parse the content of a RelaxNG data node.
  *
- * Returns the definition pointer or NULL in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the data node.
+ * @returns the definition pointer or NULL in case of error
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseData(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -3685,17 +3598,13 @@ xmlRelaxNGParseData(xmlRelaxNGParserCtxt
 static const xmlChar *invalidName = BAD_CAST "\1";
 
 /**
- * xmlRelaxNGCompareNameClasses:
- * @defs1:  the first element/attribute defs
- * @defs2:  the second element/attribute defs
- * @name:  the restriction on the name
- * @ns:  the restriction on the namespace
- *
  * Compare the 2 lists of element definitions. The comparison is
  * that if both lists do not accept the same QNames, it returns 1
  * If the 2 lists can accept the same QName the comparison returns 0
  *
- * Returns 1 distinct, 0 if equal
+ * @param def1  the first element/attribute defs
+ * @param def2  the second element/attribute defs
+ * @returns 1 distinct, 0 if equal
  */
 static int
 xmlRelaxNGCompareNameClasses(xmlRelaxNGDefinePtr def1,
@@ -3789,16 +3698,14 @@ xmlRelaxNGCompareNameClasses(xmlRelaxNGD
 }
 
 /**
- * xmlRelaxNGCompareElemDefLists:
- * @ctxt:  a Relax-NG parser context
- * @defs1:  the first list of element/attribute defs
- * @defs2:  the second list of element/attribute defs
- *
  * Compare the 2 lists of element or attribute definitions. The comparison
  * is that if both lists do not accept the same QNames, it returns 1
  * If the 2 lists can accept the same QName the comparison returns 0
  *
- * Returns 1 distinct, 0 if equal
+ * @param ctxt  a Relax-NG parser context
+ * @param def1  the first list of element/attribute defs
+ * @param def2  the second list of element/attribute defs
+ * @returns 1 distinct, 0 if equal
  */
 static int
 xmlRelaxNGCompareElemDefLists(xmlRelaxNGParserCtxtPtr ctxt
@@ -3824,13 +3731,11 @@ xmlRelaxNGCompareElemDefLists(xmlRelaxNG
 }
 
 /**
- * xmlRelaxNGGenerateAttributes:
- * @ctxt:  a Relax-NG parser context
- * @def:  the definition definition
- *
  * Check if the definition can only generate attributes
  *
- * Returns 1 if yes, 0 if no and -1 in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param def  the definition definition
+ * @returns 1 if yes, 0 if no and -1 in case of error.
  */
 static int
 xmlRelaxNGGenerateAttributes(xmlRelaxNGParserCtxtPtr ctxt,
@@ -3899,14 +3804,12 @@ xmlRelaxNGGenerateAttributes(xmlRelaxNGP
 }
 
 /**
- * xmlRelaxNGGetElements:
- * @ctxt:  a Relax-NG parser context
- * @def:  the definition definition
- * @eora:  gather elements (0), attributes (1) or elements and text (2)
- *
  * Compute the list of top elements a definition can generate
  *
- * Returns a list of elements or NULL if none was found.
+ * @param ctxt  a Relax-NG parser context
+ * @param def  the definition definition
+ * @param eora  gather elements (0), attributes (1) or elements and text (2)
+ * @returns a list of elements or NULL if none was found.
  */
 static xmlRelaxNGDefinePtr *
 xmlRelaxNGGetElements(xmlRelaxNGParserCtxtPtr ctxt,
@@ -4004,11 +3907,10 @@ xmlRelaxNGGetElements(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGCheckChoiceDeterminism:
- * @ctxt:  a Relax-NG parser context
- * @def:  the choice definition
- *
  * Also used to find indeterministic pattern in choice
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param def  the choice definition
  */
 static void
 xmlRelaxNGCheckChoiceDeterminism(xmlRelaxNGParserCtxtPtr ctxt,
@@ -4140,11 +4042,10 @@ xmlRelaxNGCheckChoiceDeterminism(xmlRela
 }
 
 /**
- * xmlRelaxNGCheckGroupAttrs:
- * @ctxt:  a Relax-NG parser context
- * @def:  the group definition
- *
  * Detects violations of rule 7.3
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param def  the group definition
  */
 static void
 xmlRelaxNGCheckGroupAttrs(xmlRelaxNGParserCtxtPtr ctxt,
@@ -4224,19 +4125,18 @@ xmlRelaxNGCheckGroupAttrs(xmlRelaxNGPars
 }
 
 /**
- * xmlRelaxNGComputeInterleaves:
- * @def:  the interleave definition
- * @ctxt:  a Relax-NG parser context
- * @name:  the definition name
- *
  * A lot of work for preprocessing interleave definitions
  * is potentially needed to get a decent execution speed at runtime
  *   - trying to get a total order on the element nodes generated
  *     by the interleaves, order the list of interleave definitions
  *     following that order.
- *   - if <text/> is used to handle mixed content, it is better to
+ *   - if `<text/>` is used to handle mixed content, it is better to
  *     flag this in the define and simplify the runtime checking
  *     algorithm
+ *
+ * @param payload  the interleave definition
+ * @param data  a Relax-NG parser context
+ * @param name  the definition name
  */
 static void
 xmlRelaxNGComputeInterleaves(void *payload, void *data,
@@ -4390,13 +4290,11 @@ xmlRelaxNGComputeInterleaves(void *paylo
 }
 
 /**
- * xmlRelaxNGParseInterleave:
- * @ctxt:  a Relax-NG parser context
- * @node:  the data node.
- *
  * parse the content of a RelaxNG interleave node.
  *
- * Returns the definition pointer or NULL in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the data node.
+ * @returns the definition pointer or NULL in case of error
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseInterleave(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -4452,13 +4350,11 @@ xmlRelaxNGParseInterleave(xmlRelaxNGPars
 }
 
 /**
- * xmlRelaxNGParseInclude:
- * @ctxt:  a Relax-NG parser context
- * @node:  the include node
- *
  * Integrate the content of an include node in the current grammar
  *
- * Returns 0 in case of success or -1 in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the include node
+ * @returns 0 in case of success or -1 in case of error
  */
 static int
 xmlRelaxNGParseInclude(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -4502,13 +4398,11 @@ xmlRelaxNGParseInclude(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGParseDefine:
- * @ctxt:  a Relax-NG parser context
- * @node:  the define node
- *
  * parse the content of a RelaxNG define element node.
  *
- * Returns 0 in case of success or -1 in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the define node
+ * @returns 0 in case of success or -1 in case of error
  */
 static int
 xmlRelaxNGParseDefine(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -4574,12 +4468,11 @@ xmlRelaxNGParseDefine(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGParseImportRef:
- * @payload: the parser context
- * @data: the current grammar
- * @name: the reference name
- *
  * Import import one references into the current grammar
+ *
+ * @param payload  the parser context
+ * @param data  the current grammar
+ * @param name  the reference name
  */
 static void
 xmlRelaxNGParseImportRef(void *payload, void *data, const xmlChar *name) {
@@ -4613,13 +4506,11 @@ xmlRelaxNGParseImportRef(void *payload,
 }
 
 /**
- * xmlRelaxNGParseImportRefs:
- * @ctxt: the parser context
- * @grammar: the sub grammar
- *
  * Import references from the subgrammar into the current grammar
  *
- * Returns 0 in case of success, -1 in case of failure
+ * @param ctxt  the parser context
+ * @param grammar  the sub grammar
+ * @returns 0 in case of success, -1 in case of failure
  */
 static int
 xmlRelaxNGParseImportRefs(xmlRelaxNGParserCtxtPtr ctxt,
@@ -4640,13 +4531,11 @@ xmlRelaxNGParseImportRefs(xmlRelaxNGPars
 }
 
 /**
- * xmlRelaxNGProcessExternalRef:
- * @ctxt: the parser context
- * @node:  the externalRef node
- *
  * Process and compile an externalRef node
  *
- * Returns the xmlRelaxNGDefinePtr or NULL in case of error
+ * @param ctxt  the parser context
+ * @param node  the externalRef node
+ * @returns the xmlRelaxNGDefine or NULL in case of error
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGProcessExternalRef(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -4726,13 +4615,11 @@ xmlRelaxNGProcessExternalRef(xmlRelaxNGP
 }
 
 /**
- * xmlRelaxNGParsePattern:
- * @ctxt:  a Relax-NG parser context
- * @node:  the pattern node.
- *
  * parse the content of a RelaxNG pattern node.
  *
- * Returns the definition pointer or NULL in case of error or if no
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the pattern node.
+ * @returns the definition pointer or NULL in case of error or if no
  *     pattern is generated.
  */
 static xmlRelaxNGDefinePtr
@@ -4810,6 +4697,7 @@ xmlRelaxNGParsePattern(xmlRelaxNGParserC
             xmlRngPErr(ctxt, node, XML_RNGP_EMPTY_CONSTRUCT,
                        "Element %s is empty\n", node->name, NULL);
         } else {
+            ctxt->def = def;
             def->content =
                 xmlRelaxNGParsePatterns(ctxt, node->children, 0);
         }
@@ -5021,13 +4909,11 @@ xmlRelaxNGParsePattern(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGParseAttribute:
- * @ctxt:  a Relax-NG parser context
- * @node:  the element node
- *
  * parse the content of a RelaxNG attribute node.
  *
- * Returns the definition pointer or NULL in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the element node
+ * @returns the definition pointer or NULL in case of error.
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseAttribute(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -5104,14 +4990,12 @@ xmlRelaxNGParseAttribute(xmlRelaxNGParse
 }
 
 /**
- * xmlRelaxNGParseExceptNameClass:
- * @ctxt:  a Relax-NG parser context
- * @node:  the except node
- * @attr:  1 if within an attribute, 0 if within an element
- *
  * parse the content of a RelaxNG nameClass node.
  *
- * Returns the definition pointer or NULL in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the except node
+ * @param attr  1 if within an attribute, 0 if within an element
+ * @returns the definition pointer or NULL in case of error.
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseExceptNameClass(xmlRelaxNGParserCtxtPtr ctxt,
@@ -5165,14 +5049,12 @@ xmlRelaxNGParseExceptNameClass(xmlRelaxN
 }
 
 /**
- * xmlRelaxNGParseNameClass:
- * @ctxt:  a Relax-NG parser context
- * @node:  the nameClass node
- * @def:  the current definition
- *
  * parse the content of a RelaxNG nameClass node.
  *
- * Returns the definition pointer or NULL in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the nameClass node
+ * @param def  the current definition
+ * @returns the definition pointer or NULL in case of error.
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node,
@@ -5311,13 +5193,11 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParse
 }
 
 /**
- * xmlRelaxNGParseElement:
- * @ctxt:  a Relax-NG parser context
- * @node:  the element node
- *
  * parse the content of a RelaxNG element node.
  *
- * Returns the definition pointer or NULL in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the element node
+ * @returns the definition pointer or NULL in case of error.
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParseElement(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -5423,14 +5303,12 @@ xmlRelaxNGParseElement(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGParsePatterns:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  list of nodes
- * @group:  use an implicit <group> for elements
- *
  * parse the content of a RelaxNG start node.
  *
- * Returns the definition pointer or NULL in case of error.
+ * @param ctxt  a Relax-NG parser context
+ * @param nodes  list of nodes
+ * @param group  use an implicit `<group>` for elements
+ * @returns the definition pointer or NULL in case of error.
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGParsePatterns(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr nodes,
@@ -5468,6 +5346,7 @@ xmlRelaxNGParsePatterns(xmlRelaxNGParser
                     last->next = cur;
                     last = cur;
                 }
+                cur->parent = parent;
             }
         }
         nodes = nodes->next;
@@ -5476,13 +5355,11 @@ xmlRelaxNGParsePatterns(xmlRelaxNGParser
 }
 
 /**
- * xmlRelaxNGParseStart:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  start children nodes
- *
  * parse the content of a RelaxNG start node.
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param nodes  start children nodes
+ * @returns 0 in case of success, -1 in case of error
  */
 static int
 xmlRelaxNGParseStart(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr nodes)
@@ -5534,13 +5411,11 @@ xmlRelaxNGParseStart(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGParseGrammarContent:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  grammar children nodes
- *
  * parse the content of a RelaxNG grammar node.
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param nodes  grammar children nodes
+ * @returns 0 in case of success, -1 in case of error
  */
 static int
 xmlRelaxNGParseGrammarContent(xmlRelaxNGParserCtxtPtr ctxt,
@@ -5583,13 +5458,12 @@ xmlRelaxNGParseGrammarContent(xmlRelaxNG
 }
 
 /**
- * xmlRelaxNGCheckReference:
- * @ref:  the ref
- * @ctxt:  a Relax-NG parser context
- * @name:  the name associated to the defines
- *
  * Applies the 4.17. combine attribute rule for all the define
  * element of a given grammar using the same name.
+ *
+ * @param payload  the ref
+ * @param data  a Relax-NG parser context
+ * @param name  the name associated to the defines
  */
 static void
 xmlRelaxNGCheckReference(void *payload, void *data, const xmlChar * name)
@@ -5639,13 +5513,12 @@ xmlRelaxNGCheckReference(void *payload,
 }
 
 /**
- * xmlRelaxNGCheckCombine:
- * @define:  the define(s) list
- * @ctxt:  a Relax-NG parser context
- * @name:  the name associated to the defines
- *
  * Applies the 4.17. combine attribute rule for all the define
  * element of a given grammar using the same name.
+ *
+ * @param payload  the define(s) list
+ * @param data  a Relax-NG parser context
+ * @param name  the name associated to the defines
  */
 static void
 xmlRelaxNGCheckCombine(void *payload, void *data, const xmlChar * name)
@@ -5755,12 +5628,11 @@ xmlRelaxNGCheckCombine(void *payload, vo
 }
 
 /**
- * xmlRelaxNGCombineStart:
- * @ctxt:  a Relax-NG parser context
- * @grammar:  the grammar
- *
  * Applies the 4.17. combine rule for all the start
  * element of a given grammar.
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param grammar  the grammar
  */
 static void
 xmlRelaxNGCombineStart(xmlRelaxNGParserCtxtPtr ctxt,
@@ -5855,14 +5727,12 @@ xmlRelaxNGCombineStart(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGCheckCycles:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  grammar children nodes
- * @depth:  the counter
- *
  * Check for cycles.
  *
- * Returns 0 if check passed, and -1 in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param cur  grammar children nodes
+ * @param depth  the counter
+ * @returns 0 if check passed, and -1 in case of error
  */
 static int
 xmlRelaxNGCheckCycles(xmlRelaxNGParserCtxtPtr ctxt,
@@ -5894,15 +5764,13 @@ xmlRelaxNGCheckCycles(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGTryUnlink:
- * @ctxt:  a Relax-NG parser context
- * @cur:  the definition to unlink
- * @parent:  the parent definition
- * @prev:  the previous sibling definition
- *
  * Try to unlink a definition. If not possible make it a NOOP
  *
- * Returns the new prev definition
+ * @param ctxt  a Relax-NG parser context
+ * @param cur  the definition to unlink
+ * @param parent  the parent definition
+ * @param prev  the previous sibling definition
+ * @returns the new prev definition
  */
 static xmlRelaxNGDefinePtr
 xmlRelaxNGTryUnlink(xmlRelaxNGParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -5913,12 +5781,26 @@ xmlRelaxNGTryUnlink(xmlRelaxNGParserCtxt
         prev->next = cur->next;
     } else {
         if (parent != NULL) {
-            if (parent->content == cur)
-                parent->content = cur->next;
-            else if (parent->attrs == cur)
+            if (parent->attrs == cur)
                 parent->attrs = cur->next;
             else if (parent->nameClass == cur)
                 parent->nameClass = cur->next;
+            else {
+                xmlRelaxNGDefinePtr content, last = NULL;
+                content = parent->content;
+                while (content != NULL) {
+                    if (content == cur) {
+                        if (last == NULL) {
+                            parent->content = cur->next;
+                        } else {
+                            last->next = cur->next;
+                        }
+                        break;
+                    }
+                    last = content;
+                    content = content->next;
+                }
+            }
         } else {
             cur->type = XML_RELAXNG_NOOP;
             prev = cur;
@@ -5928,11 +5810,11 @@ xmlRelaxNGTryUnlink(xmlRelaxNGParserCtxt
 }
 
 /**
- * xmlRelaxNGSimplify:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  grammar children nodes
- *
  * Check for simplification of empty and notAllowed
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param cur  grammar children nodes
+ * @param parent  parent
  */
 static void
 xmlRelaxNGSimplify(xmlRelaxNGParserCtxtPtr ctxt,
@@ -5945,7 +5827,9 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
             (cur->type == XML_RELAXNG_PARENTREF)) {
             if (cur->depth != -3) {
                 cur->depth = -3;
+                ctxt->def = cur;
                 xmlRelaxNGSimplify(ctxt, cur->content, cur);
+                ctxt->def = NULL;
             }
         } else if (cur->type == XML_RELAXNG_NOT_ALLOWED) {
             cur->parent = parent;
@@ -5959,8 +5843,14 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
                 parent->type = XML_RELAXNG_NOT_ALLOWED;
                 break;
             }
-            if ((parent != NULL) && (parent->type == XML_RELAXNG_CHOICE)) {
-                prev = xmlRelaxNGTryUnlink(ctxt, cur, parent, prev);
+            if ((parent != NULL) && ((parent->type == XML_RELAXNG_CHOICE) || 
+                ((parent->type == XML_RELAXNG_DEF) &&
+                    (ctxt->def != NULL && ctxt->def->parent != NULL) && (ctxt->def->parent->type == XML_RELAXNG_CHOICE)))) {
+                if (parent->type == XML_RELAXNG_CHOICE)
+                    prev = xmlRelaxNGTryUnlink(ctxt, cur, parent, prev);
+                else if (ctxt->def->parent->type == XML_RELAXNG_CHOICE) {
+                    prev = xmlRelaxNGTryUnlink(ctxt, ctxt->def, ctxt->def->parent, prev);
+                }
             } else
                 prev = cur;
         } else if (cur->type == XML_RELAXNG_EMPTY) {
@@ -5971,10 +5861,17 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
                 parent->type = XML_RELAXNG_EMPTY;
                 break;
             }
-            if ((parent != NULL) &&
+            if ((parent != NULL) && 
                 ((parent->type == XML_RELAXNG_GROUP) ||
-                 (parent->type == XML_RELAXNG_INTERLEAVE))) {
-                prev = xmlRelaxNGTryUnlink(ctxt, cur, parent, prev);
+                 (parent->type == XML_RELAXNG_INTERLEAVE) ||
+                    ((parent->type == XML_RELAXNG_DEF) &&
+                     (ctxt->def != NULL && ctxt->def->parent != NULL) &&
+                         (ctxt->def->parent->type == XML_RELAXNG_GROUP ||
+                          ctxt->def->parent->type == XML_RELAXNG_INTERLEAVE)))) {
+                if (parent->type == XML_RELAXNG_GROUP || parent->type == XML_RELAXNG_INTERLEAVE)
+                    prev = xmlRelaxNGTryUnlink(ctxt, cur, parent, prev);
+                else if (ctxt->def->parent->type == XML_RELAXNG_GROUP || ctxt->def->parent->type == XML_RELAXNG_INTERLEAVE) 
+                    prev = xmlRelaxNGTryUnlink(ctxt, ctxt->def, ctxt->def->parent, prev);
             } else
                 prev = cur;
         } else {
@@ -6018,6 +5915,7 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
                     if (attronly == 1) {
                         /*
                          * migrate tmp to attrs
+                         * if this runs twice an infinite attrs->next loop can be created
                          */
                         pre->next = tmp->next;
                         tmp->next = cur->attrs;
@@ -6038,9 +5936,15 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
                     if ((parent == NULL) && (prev == NULL)) {
                         cur->type = XML_RELAXNG_NOOP;
                     } else if (prev == NULL) {
-                        parent->content = cur->content;
-                        cur->content->next = cur->next;
-                        cur = cur->content;
+                        /* 
+                         * this simplification may already have happened
+                         * if this is done twice this leads to an infinite loop of attrs->next
+                         */
+                        if (parent->content != cur->content) {
+                            parent->content = cur->content;
+                            cur->content->next = cur->next;
+                            cur = cur->content;
+                        }
                     } else {
                         cur->content->next = cur->next;
                         prev->next = cur->content;
@@ -6094,13 +5998,11 @@ xmlRelaxNGSimplify(xmlRelaxNGParserCtxtP
 }
 
 /**
- * xmlRelaxNGGroupContentType:
- * @ct1:  the first content type
- * @ct2:  the second content type
- *
  * Try to group 2 content types
  *
- * Returns the content type
+ * @param ct1  the first content type
+ * @param ct2  the second content type
+ * @returns the content type
  */
 static xmlRelaxNGContentType
 xmlRelaxNGGroupContentType(xmlRelaxNGContentType ct1,
@@ -6120,13 +6022,11 @@ xmlRelaxNGGroupContentType(xmlRelaxNGCon
 }
 
 /**
- * xmlRelaxNGMaxContentType:
- * @ct1:  the first content type
- * @ct2:  the second content type
- *
  * Compute the max content-type
  *
- * Returns the content type
+ * @param ct1  the first content type
+ * @param ct2  the second content type
+ * @returns the content type
  */
 static xmlRelaxNGContentType
 xmlRelaxNGMaxContentType(xmlRelaxNGContentType ct1,
@@ -6145,15 +6045,13 @@ xmlRelaxNGMaxContentType(xmlRelaxNGConte
 }
 
 /**
- * xmlRelaxNGCheckRules:
- * @ctxt:  a Relax-NG parser context
- * @cur:  the current definition
- * @flags:  some accumulated flags
- * @ptype:  the parent type
- *
  * Check for rules in section 7.1 and 7.2
  *
- * Returns the content type of @cur
+ * @param ctxt  a Relax-NG parser context
+ * @param cur  the current definition
+ * @param flags  some accumulated flags
+ * @param ptype  the parent type
+ * @returns the content type of `cur`
  */
 static xmlRelaxNGContentType
 xmlRelaxNGCheckRules(xmlRelaxNGParserCtxtPtr ctxt,
@@ -6473,13 +6371,11 @@ xmlRelaxNGCheckRules(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGParseGrammar:
- * @ctxt:  a Relax-NG parser context
- * @nodes:  grammar children nodes
- *
- * parse a Relax-NG <grammar> node
+ * parse a Relax-NG `<grammar>` node
  *
- * Returns the internal xmlRelaxNGGrammarPtr built or
+ * @param ctxt  a Relax-NG parser context
+ * @param nodes  grammar children nodes
+ * @returns the internal xmlRelaxNGGrammar built or
  *         NULL in case of error
  */
 static xmlRelaxNGGrammarPtr
@@ -6541,14 +6437,12 @@ xmlRelaxNGParseGrammar(xmlRelaxNGParserC
 }
 
 /**
- * xmlRelaxNGParseDocument:
- * @ctxt:  a Relax-NG parser context
- * @node:  the root node of the RelaxNG schema
- *
  * parse a Relax-NG definition resource and build an internal
  * xmlRelaxNG structure which can be used to validate instances.
  *
- * Returns the internal XML RelaxNG structure built or
+ * @param ctxt  a Relax-NG parser context
+ * @param node  the root node of the RelaxNG schema
+ * @returns the internal XML RelaxNG structure built or
  *         NULL in case of error
  */
 static xmlRelaxNGPtr
@@ -6626,15 +6520,13 @@ xmlRelaxNGParseDocument(xmlRelaxNGParser
  ************************************************************************/
 
 /**
- * xmlRelaxNGNewParserCtxt:
- * @URL:  the location of the schema
- *
  * Create an XML RelaxNGs parse context for that file/resource expected
  * to contain an XML RelaxNGs file.
  *
- * Returns the parser context or NULL in case of error
+ * @param URL  the location of the schema
+ * @returns the parser context or NULL in case of error
  */
-xmlRelaxNGParserCtxtPtr
+xmlRelaxNGParserCtxt *
 xmlRelaxNGNewParserCtxt(const char *URL)
 {
     xmlRelaxNGParserCtxtPtr ret;
@@ -6654,16 +6546,14 @@ xmlRelaxNGNewParserCtxt(const char *URL)
 }
 
 /**
- * xmlRelaxNGNewMemParserCtxt:
- * @buffer:  a pointer to a char array containing the schemas
- * @size:  the size of the array
- *
  * Create an XML RelaxNGs parse context for that memory buffer expected
  * to contain an XML RelaxNGs file.
  *
- * Returns the parser context or NULL in case of error
+ * @param buffer  a pointer to a char array containing the schemas
+ * @param size  the size of the array
+ * @returns the parser context or NULL in case of error
  */
-xmlRelaxNGParserCtxtPtr
+xmlRelaxNGParserCtxt *
 xmlRelaxNGNewMemParserCtxt(const char *buffer, int size)
 {
     xmlRelaxNGParserCtxtPtr ret;
@@ -6684,17 +6574,15 @@ xmlRelaxNGNewMemParserCtxt(const char *b
 }
 
 /**
- * xmlRelaxNGNewDocParserCtxt:
- * @doc:  a preparsed document tree
- *
  * 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.
+ *       document, the `doc` parameter is duplicated internally.
  *
- * Returns the parser context or NULL in case of error
+ * @param doc  a preparsed document tree
+ * @returns the parser context or NULL in case of error
  */
-xmlRelaxNGParserCtxtPtr
-xmlRelaxNGNewDocParserCtxt(xmlDocPtr doc)
+xmlRelaxNGParserCtxt *
+xmlRelaxNGNewDocParserCtxt(xmlDoc *doc)
 {
     xmlRelaxNGParserCtxtPtr ret;
     xmlDocPtr copy;
@@ -6720,13 +6608,12 @@ xmlRelaxNGNewDocParserCtxt(xmlDocPtr doc
 }
 
 /**
- * xmlRelaxNGFreeParserCtxt:
- * @ctxt:  the schema parser context
- *
  * Free the resources associated to the schema parser context
+ *
+ * @param ctxt  the schema parser context
  */
 void
-xmlRelaxNGFreeParserCtxt(xmlRelaxNGParserCtxtPtr ctxt)
+xmlRelaxNGFreeParserCtxt(xmlRelaxNGParserCtxt *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -6757,11 +6644,10 @@ xmlRelaxNGFreeParserCtxt(xmlRelaxNGParse
 }
 
 /**
- * xmlRelaxNGNormExtSpace:
- * @value:  a value
- *
  * Removes the leading and ending spaces of the value
  * The string is modified "in situ"
+ *
+ * @param value  a value
  */
 static void
 xmlRelaxNGNormExtSpace(xmlChar * value)
@@ -6809,11 +6695,10 @@ xmlRelaxNGNormExtSpace(xmlChar * value)
 }
 
 /**
- * xmlRelaxNGCleanupAttributes:
- * @ctxt:  a Relax-NG parser context
- * @node:  a Relax-NG node
- *
  * Check all the attributes on the given node
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param node  a Relax-NG node
  */
 static void
 xmlRelaxNGCleanupAttributes(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node)
@@ -6896,12 +6781,11 @@ xmlRelaxNGCleanupAttributes(xmlRelaxNGPa
 }
 
 /**
- * xmlRelaxNGCleanupTree:
- * @ctxt:  a Relax-NG parser context
- * @root:  an xmlNodePtr subtree
- *
  * Cleanup the subtree from unwanted nodes for parsing, resolve
  * Include and externalRef lookups.
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param root  an xmlNode subtree
  */
 static void
 xmlRelaxNGCleanupTree(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr root)
@@ -7337,14 +7221,12 @@ xmlRelaxNGCleanupTree(xmlRelaxNGParserCt
 }
 
 /**
- * xmlRelaxNGCleanupDoc:
- * @ctxt:  a Relax-NG parser context
- * @doc:  an xmldocPtr document pointer
- *
  * Cleanup the document from unwanted nodes for parsing, resolve
  * Include and externalRef lookups.
  *
- * Returns the cleaned up document or NULL in case of error
+ * @param ctxt  a Relax-NG parser context
+ * @param doc  an xmldoc document pointer
+ * @returns the cleaned up document or NULL in case of error
  */
 static xmlDocPtr
 xmlRelaxNGCleanupDoc(xmlRelaxNGParserCtxtPtr ctxt, xmlDocPtr doc)
@@ -7365,17 +7247,15 @@ xmlRelaxNGCleanupDoc(xmlRelaxNGParserCtx
 }
 
 /**
- * xmlRelaxNGParse:
- * @ctxt:  a Relax-NG parser context
- *
  * parse a schema definition resource and build an internal
  * XML Schema structure which can be used to validate instances.
  *
- * Returns the internal XML RelaxNG structure built from the resource or
+ * @param ctxt  a Relax-NG parser context
+ * @returns the internal XML RelaxNG structure built from the resource or
  *         NULL in case of error
  */
-xmlRelaxNGPtr
-xmlRelaxNGParse(xmlRelaxNGParserCtxtPtr ctxt)
+xmlRelaxNG *
+xmlRelaxNGParse(xmlRelaxNGParserCtxt *ctxt)
 {
     xmlRelaxNGPtr ret = NULL;
     xmlDocPtr doc;
@@ -7503,18 +7383,17 @@ xmlRelaxNGParse(xmlRelaxNGParserCtxtPtr
 }
 
 /**
- * xmlRelaxNGSetParserErrors:
- * @ctxt:  a Relax-NG validation context
- * @err:  the error callback
- * @warn:  the warning callback
- * @ctx:  contextual data for the callbacks
+ * Set the callback functions used to handle errors for a validation context
  *
- * DEPRECATED: Use xmlRelaxNGSetParserStructuredErrors.
+ * @deprecated Use #xmlRelaxNGSetParserStructuredErrors.
  *
- * Set the callback functions used to handle errors for a validation context
+ * @param ctxt  a Relax-NG validation context
+ * @param err  the error callback
+ * @param warn  the warning callback
+ * @param ctx  contextual data for the callbacks
  */
 void
-xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
+xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxt *ctxt,
                           xmlRelaxNGValidityErrorFunc err,
                           xmlRelaxNGValidityWarningFunc warn, void *ctx)
 {
@@ -7527,18 +7406,16 @@ xmlRelaxNGSetParserErrors(xmlRelaxNGPars
 }
 
 /**
- * xmlRelaxNGGetParserErrors:
- * @ctxt:  a Relax-NG validation context
- * @err:  the error callback result
- * @warn:  the warning callback result
- * @ctx:  contextual data for the callbacks result
- *
  * Get the callback information used to handle errors for a validation context
  *
- * Returns -1 in case of failure, 0 otherwise.
+ * @param ctxt  a Relax-NG validation context
+ * @param err  the error callback result
+ * @param warn  the warning callback result
+ * @param ctx  contextual data for the callbacks result
+ * @returns -1 in case of failure, 0 otherwise.
  */
 int
-xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
+xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxt *ctxt,
                           xmlRelaxNGValidityErrorFunc * err,
                           xmlRelaxNGValidityWarningFunc * warn, void **ctx)
 {
@@ -7554,15 +7431,14 @@ xmlRelaxNGGetParserErrors(xmlRelaxNGPars
 }
 
 /**
- * xmlRelaxNGSetParserStructuredErrors:
- * @ctxt:  a Relax-NG parser context
- * @serror:  the error callback
- * @ctx:  contextual data for the callbacks
- *
  * Set the callback functions used to handle errors for a parsing context
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param serror  the error callback
+ * @param ctx  contextual data for the callbacks
  */
 void
-xmlRelaxNGSetParserStructuredErrors(xmlRelaxNGParserCtxtPtr ctxt,
+xmlRelaxNGSetParserStructuredErrors(xmlRelaxNGParserCtxt *ctxt,
 				    xmlStructuredErrorFunc serror,
 				    void *ctx)
 {
@@ -7575,15 +7451,14 @@ xmlRelaxNGSetParserStructuredErrors(xmlR
 }
 
 /**
- * xmlRelaxNGSetResourceLoader:
- * @ctxt:  a Relax-NG parser context
- * @loader:  the callback
- * @vctxt:  contextual data for the callbacks
- *
  * Set the callback function used to load external resources.
+ *
+ * @param ctxt  a Relax-NG parser context
+ * @param loader  the callback
+ * @param vctxt  contextual data for the callbacks
  */
 void
-xmlRelaxNGSetResourceLoader(xmlRelaxNGParserCtxtPtr ctxt,
+xmlRelaxNGSetResourceLoader(xmlRelaxNGParserCtxt *ctxt,
                             xmlResourceLoader loader, void *vctxt) {
     if (ctxt == NULL)
         return;
@@ -7591,7 +7466,7 @@ xmlRelaxNGSetResourceLoader(xmlRelaxNGPa
     ctxt->resourceCtxt = vctxt;
 }
 
-#ifdef LIBXML_OUTPUT_ENABLED
+#ifdef LIBXML_DEBUG_ENABLED
 
 /************************************************************************
  *									*
@@ -7602,11 +7477,10 @@ static void xmlRelaxNGDumpDefine(FILE *
                                  xmlRelaxNGDefinePtr define);
 
 /**
- * xmlRelaxNGDumpDefines:
- * @output:  the file output
- * @defines:  a list of define structures
- *
  * Dump a RelaxNG structure back
+ *
+ * @param output  the file output
+ * @param defines  a list of define structures
  */
 static void
 xmlRelaxNGDumpDefines(FILE * output, xmlRelaxNGDefinePtr defines)
@@ -7618,11 +7492,10 @@ xmlRelaxNGDumpDefines(FILE * output, xml
 }
 
 /**
- * xmlRelaxNGDumpDefine:
- * @output:  the file output
- * @define:  a define structure
- *
  * Dump a RelaxNG structure back
+ *
+ * @param output  the file output
+ * @param define  a define structure
  */
 static void
 xmlRelaxNGDumpDefine(FILE * output, xmlRelaxNGDefinePtr define)
@@ -7736,12 +7609,11 @@ xmlRelaxNGDumpDefine(FILE * output, xmlR
 }
 
 /**
- * xmlRelaxNGDumpGrammar:
- * @output:  the file output
- * @grammar:  a grammar structure
- * @top:  is this a top grammar
- *
  * Dump a RelaxNG structure back
+ *
+ * @param output  the file output
+ * @param grammar  a grammar structure
+ * @param top  is this a top grammar
  */
 static void
 xmlRelaxNGDumpGrammar(FILE * output, xmlRelaxNGGrammarPtr grammar, int top)
@@ -7777,14 +7649,13 @@ xmlRelaxNGDumpGrammar(FILE * output, xml
 }
 
 /**
- * xmlRelaxNGDump:
- * @output:  the file output
- * @schema:  a schema structure
- *
  * Dump a RelaxNG structure back
+ *
+ * @param output  the file output
+ * @param schema  a schema structure
  */
 void
-xmlRelaxNGDump(FILE * output, xmlRelaxNGPtr schema)
+xmlRelaxNGDump(FILE * output, xmlRelaxNG *schema)
 {
     if (output == NULL)
         return;
@@ -7806,16 +7677,17 @@ xmlRelaxNGDump(FILE * output, xmlRelaxNG
     }
     xmlRelaxNGDumpGrammar(output, schema->topgrammar, 1);
 }
+#endif /* LIBXML_DEBUG_ENABLED */
 
+#ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlRelaxNGDumpTree:
- * @output:  the file output
- * @schema:  a schema structure
- *
  * Dump the transformed RelaxNG tree.
+ *
+ * @param output  the file output
+ * @param schema  a schema structure
  */
 void
-xmlRelaxNGDumpTree(FILE * output, xmlRelaxNGPtr schema)
+xmlRelaxNGDumpTree(FILE * output, xmlRelaxNG *schema)
 {
     if (output == NULL)
         return;
@@ -7840,13 +7712,12 @@ static int xmlRelaxNGValidateDefinition(
                                         xmlRelaxNGDefinePtr define);
 
 /**
- * xmlRelaxNGValidateCompiledCallback:
- * @exec:  the regular expression instance
- * @token:  the token which matched
- * @transdata:  callback data, the define for the subelement if available
- @ @inputdata:  callback data, the Relax NG validation context
- *
  * Handle the callback and if needed validate the element children.
+ *
+ * @param exec  the regular expression instance
+ * @param token  the token which matched
+ * @param transdata  callback data, the define for the subelement if available
+ * @param inputdata  callback data, the Relax NG validation context
  */
 static void
 xmlRelaxNGValidateCompiledCallback(xmlRegExecCtxtPtr exec ATTRIBUTE_UNUSED,
@@ -7884,14 +7755,12 @@ xmlRelaxNGValidateCompiledCallback(xmlRe
 }
 
 /**
- * xmlRelaxNGValidateCompiledContent:
- * @ctxt:  the RelaxNG validation context
- * @regexp:  the regular expression as compiled
- * @content:  list of children to test against the regexp
- *
  * Validate the content model of an element or start using the regexp
  *
- * Returns 0 in case of success, -1 in case of error.
+ * @param ctxt  the RelaxNG validation context
+ * @param regexp  the regular expression as compiled
+ * @param content  list of children to test against the regexp
+ * @returns 0 in case of success, -1 in case of error.
  */
 static int
 xmlRelaxNGValidateCompiledContent(xmlRelaxNGValidCtxtPtr ctxt,
@@ -7982,13 +7851,11 @@ static int xmlRelaxNGValidateElementEnd(
 static void xmlRelaxNGLogBestError(xmlRelaxNGValidCtxtPtr ctxt);
 
 /**
- * xmlRelaxNGElemPush:
- * @ctxt:  the validation context
- * @exec:  the regexp runtime for the new content model
- *
  * Push a new regexp for the current node content model on the stack
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param ctxt  the validation context
+ * @param exec  the regexp runtime for the new content model
+ * @returns 0 in case of success and -1 in case of error.
  */
 static int
 xmlRelaxNGElemPush(xmlRelaxNGValidCtxtPtr ctxt, xmlRegExecCtxtPtr exec)
@@ -8020,12 +7887,10 @@ xmlRelaxNGElemPush(xmlRelaxNGValidCtxtPt
 }
 
 /**
- * xmlRelaxNGElemPop:
- * @ctxt:  the validation context
- *
  * Pop the regexp of the current node content model from the stack
  *
- * Returns the exec or NULL if empty
+ * @param ctxt  the validation context
+ * @returns the exec or NULL if empty
  */
 static xmlRegExecCtxtPtr
 xmlRelaxNGElemPop(xmlRelaxNGValidCtxtPtr ctxt)
@@ -8045,14 +7910,13 @@ xmlRelaxNGElemPop(xmlRelaxNGValidCtxtPtr
 }
 
 /**
- * xmlRelaxNGValidateProgressiveCallback:
- * @exec:  the regular expression instance
- * @token:  the token which matched
- * @transdata:  callback data, the define for the subelement if available
- @ @inputdata:  callback data, the Relax NG validation context
- *
  * Handle the callback and if needed validate the element children.
- * some of the in/out information are passed via the context in @inputdata.
+ * some of the in/out information are passed via the context in `inputdata`.
+ *
+ * @param exec  the regular expression instance
+ * @param token  the token which matched
+ * @param transdata  callback data, the define for the subelement if available
+ * @param inputdata  callback data, the Relax NG validation context
  */
 static void
 xmlRelaxNGValidateProgressiveCallback(xmlRegExecCtxtPtr exec
@@ -8178,22 +8042,22 @@ xmlRelaxNGValidateProgressiveCallback(xm
 }
 
 /**
- * xmlRelaxNGValidatePushElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- *
  * Push a new element start on the RelaxNG validation stack.
  *
- * returns 1 if no validation problem was found or 0 if validating the
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @returns 1 if no validation problem was found or 0 if validating the
  *         element requires a full node, and -1 in case of error.
  */
 int
-xmlRelaxNGValidatePushElement(xmlRelaxNGValidCtxtPtr ctxt,
-                              xmlDocPtr doc ATTRIBUTE_UNUSED,
-                              xmlNodePtr elem)
+xmlRelaxNGValidatePushElement(xmlRelaxNGValidCtxt *ctxt,
+                              xmlDoc *doc ATTRIBUTE_UNUSED,
+                              xmlNode *elem)
 {
     int ret = 1;
+    xmlNodePtr prevPNode;
+    int prevPState;
 
     if ((ctxt == NULL) || (elem == NULL))
         return (-1);
@@ -8227,6 +8091,9 @@ xmlRelaxNGValidatePushElement(xmlRelaxNG
         }
         xmlRelaxNGElemPush(ctxt, exec);
     }
+    prevPNode = ctxt->pnode;
+    prevPState = ctxt->pstate;
+
     ctxt->pnode = elem;
     ctxt->pstate = 0;
     if (elem->ns != NULL) {
@@ -8238,29 +8105,35 @@ xmlRelaxNGValidatePushElement(xmlRelaxNG
     }
     if (ret < 0) {
         VALID_ERR2(XML_RELAXNG_ERR_ELEMWRONG, elem->name);
+        goto Recovery;
     } else {
         if (ctxt->pstate == 0)
             ret = 0;
-        else if (ctxt->pstate < 0)
+        else if (ctxt->pstate < 0) {
             ret = -1;
+            goto Recovery;
+        }
         else
             ret = 1;
     }
     return (ret);
+
+Recovery:
+    ctxt->pnode = prevPNode;
+    ctxt->pstate = prevPState;
+    return (ret);
 }
 
 /**
- * xmlRelaxNGValidatePushCData:
- * @ctxt:  the RelaxNG validation context
- * @data:  some character data read
- * @len:  the length of the data
- *
  * check the CData parsed for validation in the current stack
  *
- * returns 1 if no validation problem was found or -1 otherwise
+ * @param ctxt  the RelaxNG validation context
+ * @param data  some character data read
+ * @param len  the length of the data
+ * @returns 1 if no validation problem was found or -1 otherwise
  */
 int
-xmlRelaxNGValidatePushCData(xmlRelaxNGValidCtxtPtr ctxt,
+xmlRelaxNGValidatePushCData(xmlRelaxNGValidCtxt *ctxt,
                             const xmlChar * data, int len ATTRIBUTE_UNUSED)
 {
     int ret = 1;
@@ -8286,19 +8159,17 @@ xmlRelaxNGValidatePushCData(xmlRelaxNGVa
 }
 
 /**
- * xmlRelaxNGValidatePopElement:
- * @ctxt:  the RelaxNG validation context
- * @doc:  a document instance
- * @elem:  an element instance
- *
  * Pop the element end from the RelaxNG validation stack.
  *
- * returns 1 if no validation problem was found or 0 otherwise
+ * @param ctxt  the RelaxNG validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @returns 1 if no validation problem was found or 0 otherwise
  */
 int
-xmlRelaxNGValidatePopElement(xmlRelaxNGValidCtxtPtr ctxt,
-                             xmlDocPtr doc ATTRIBUTE_UNUSED,
-                             xmlNodePtr elem)
+xmlRelaxNGValidatePopElement(xmlRelaxNGValidCtxt *ctxt,
+                             xmlDoc *doc ATTRIBUTE_UNUSED,
+                             xmlNode *elem)
 {
     int ret;
     xmlRegExecCtxtPtr exec;
@@ -8326,20 +8197,18 @@ xmlRelaxNGValidatePopElement(xmlRelaxNGV
 }
 
 /**
- * xmlRelaxNGValidateFullElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- *
- * Validate a full subtree when xmlRelaxNGValidatePushElement() returned
+ * Validate a full subtree when #xmlRelaxNGValidatePushElement returned
  * 0 and the content of the node has been expanded.
  *
- * returns 1 if no validation problem was found or -1 in case of error.
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @returns 1 if no validation problem was found or -1 in case of error.
  */
 int
-xmlRelaxNGValidateFullElement(xmlRelaxNGValidCtxtPtr ctxt,
-                              xmlDocPtr doc ATTRIBUTE_UNUSED,
-                              xmlNodePtr elem)
+xmlRelaxNGValidateFullElement(xmlRelaxNGValidCtxt *ctxt,
+                              xmlDoc *doc ATTRIBUTE_UNUSED,
+                              xmlNode *elem)
 {
     int ret;
     xmlRelaxNGValidStatePtr state;
@@ -8363,6 +8232,23 @@ xmlRelaxNGValidateFullElement(xmlRelaxNG
     return (ret);
 }
 
+/**
+ * Clear errors in the context, allowing to recover
+ * from errors during streaming validation and continue it
+ *
+ * @remarks it doesn's reset the last internal libxml2 error
+ * @param ctxt  the validation context
+ */
+void
+xmlRelaxNGValidCtxtClearErrors(xmlRelaxNGValidCtxt* ctxt)
+{
+    xmlRegExecClearErrors(ctxt->elem);
+    xmlRelaxNGPopErrors(ctxt, 0);
+    ctxt->err = NULL;
+    ctxt->nbErrors = 0;
+    ctxt->errNo = XML_RELAXNG_OK;
+}
+
 /************************************************************************
  *									*
  *		Generic interpreted validation implementation		*
@@ -8372,13 +8258,11 @@ static int xmlRelaxNGValidateValue(xmlRe
                                    xmlRelaxNGDefinePtr define);
 
 /**
- * xmlRelaxNGSkipIgnored:
- * @ctxt:  a schema validation context
- * @node:  the top node.
- *
  * Skip ignorable nodes in that context
  *
- * Returns the new sibling or NULL in case of error.
+ * @param ctxt  a schema validation context
+ * @param node  the top node.
+ * @returns the new sibling or NULL in case of error.
  */
 static xmlNodePtr
 xmlRelaxNGSkipIgnored(xmlRelaxNGValidCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -8402,14 +8286,12 @@ xmlRelaxNGSkipIgnored(xmlRelaxNGValidCtx
 }
 
 /**
- * xmlRelaxNGNormalize:
- * @ctxt:  a schema validation context
- * @str:  the string to normalize
- *
  * Implements the  normalizeWhiteSpace( s ) function from
  * section 6.2.9 of the spec
  *
- * Returns the new string or NULL in case of error.
+ * @param ctxt  a schema validation context
+ * @param str  the string to normalize
+ * @returns the new string or NULL in case of error.
  */
 static xmlChar *
 xmlRelaxNGNormalize(xmlRelaxNGValidCtxtPtr ctxt, const xmlChar * str)
@@ -8448,15 +8330,13 @@ xmlRelaxNGNormalize(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGValidateDatatype:
- * @ctxt:  a Relax-NG validation context
- * @value:  the string value
- * @type:  the datatype definition
- * @node:  the node
- *
  * Validate the given value against the datatype
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param value  the string value
+ * @param define  the datatype definition
+ * @param node  the node
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateDatatype(xmlRelaxNGValidCtxtPtr ctxt,
@@ -8522,12 +8402,10 @@ xmlRelaxNGValidateDatatype(xmlRelaxNGVal
 }
 
 /**
- * xmlRelaxNGNextValue:
- * @ctxt:  a Relax-NG validation context
- *
  * Skip to the next value when validating within a list
  *
- * Returns 0 if the operation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @returns 0 if the operation succeeded or an error code.
  */
 static int
 xmlRelaxNGNextValue(xmlRelaxNGValidCtxtPtr ctxt)
@@ -8552,13 +8430,11 @@ xmlRelaxNGNextValue(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGValidateValueList:
- * @ctxt:  a Relax-NG validation context
- * @defines:  the list of definitions to verify
- *
  * Validate the given set of definitions for the current value
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param defines  the list of definitions to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateValueList(xmlRelaxNGValidCtxtPtr ctxt,
@@ -8576,13 +8452,11 @@ xmlRelaxNGValidateValueList(xmlRelaxNGVa
 }
 
 /**
- * xmlRelaxNGValidateValue:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to verify
- *
  * Validate the given definition for the current value
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateValue(xmlRelaxNGValidCtxtPtr ctxt,
@@ -8845,13 +8719,11 @@ xmlRelaxNGValidateValue(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGValidateValueContent:
- * @ctxt:  a Relax-NG validation context
- * @defines:  the list of definitions to verify
- *
  * Validate the given definitions for the current value
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param defines  the list of definitions to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateValueContent(xmlRelaxNGValidCtxtPtr ctxt,
@@ -8869,14 +8741,12 @@ xmlRelaxNGValidateValueContent(xmlRelaxN
 }
 
 /**
- * xmlRelaxNGAttributeMatch:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to check
- * @prop:  the attribute
- *
  * Check if the attribute matches the definition nameClass
  *
- * Returns 1 if the attribute matches, 0 if no, or -1 in case of error
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to check
+ * @param prop  the attribute
+ * @returns 1 if the attribute matches, 0 if no, or -1 in case of error
  */
 static int
 xmlRelaxNGAttributeMatch(xmlRelaxNGValidCtxtPtr ctxt,
@@ -8934,13 +8804,11 @@ xmlRelaxNGAttributeMatch(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGValidateAttribute:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to verify
- *
  * Validate the given attribute definition for that node
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateAttribute(xmlRelaxNGValidCtxtPtr ctxt,
@@ -9028,13 +8896,11 @@ xmlRelaxNGValidateAttribute(xmlRelaxNGVa
 }
 
 /**
- * xmlRelaxNGValidateAttributeList:
- * @ctxt:  a Relax-NG validation context
- * @define:  the list of definition to verify
- *
  * Validate the given node against the list of attribute definitions
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param defines  the list of definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateAttributeList(xmlRelaxNGValidCtxtPtr ctxt,
@@ -9076,13 +8942,11 @@ xmlRelaxNGValidateAttributeList(xmlRelax
 }
 
 /**
- * xmlRelaxNGNodeMatchesList:
- * @node:  the node
- * @list:  a NULL terminated array of definitions
- *
  * Check if a node can be matched by one of the definitions
  *
- * Returns 1 if matches 0 otherwise
+ * @param node  the node
+ * @param list  a NULL terminated array of definitions
+ * @returns 1 if matches 0 otherwise
  */
 static int
 xmlRelaxNGNodeMatchesList(xmlNodePtr node, xmlRelaxNGDefinePtr * list)
@@ -9114,13 +8978,11 @@ xmlRelaxNGNodeMatchesList(xmlNodePtr nod
 }
 
 /**
- * xmlRelaxNGValidateInterleave:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to verify
- *
  * Validate an interleave definition for a node.
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateInterleave(xmlRelaxNGValidCtxtPtr ctxt,
@@ -9419,13 +9281,11 @@ xmlRelaxNGValidateInterleave(xmlRelaxNGV
 }
 
 /**
- * xmlRelaxNGValidateDefinitionList:
- * @ctxt:  a Relax-NG validation context
- * @define:  the list of definition to verify
- *
  * Validate the given node content against the (list) of definitions
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param defines  the list of definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateDefinitionList(xmlRelaxNGValidCtxtPtr ctxt,
@@ -9457,14 +9317,12 @@ xmlRelaxNGValidateDefinitionList(xmlRela
 }
 
 /**
- * xmlRelaxNGElementMatch:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to check
- * @elem:  the element
- *
  * Check if the element matches the definition nameClass
  *
- * Returns 1 if the element matches, 0 if no, or -1 in case of error
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to check
+ * @param elem  the element
+ * @returns 1 if the element matches, 0 if no, or -1 in case of error
  */
 static int
 xmlRelaxNGElementMatch(xmlRelaxNGValidCtxtPtr ctxt,
@@ -9571,15 +9429,13 @@ xmlRelaxNGElementMatch(xmlRelaxNGValidCt
 }
 
 /**
- * xmlRelaxNGBestState:
- * @ctxt:  a Relax-NG validation context
- *
  * Find the "best" state in the ctxt->states list of states to report
  * errors about. I.e. a state with no element left in the child list
  * or the one with the less attributes left.
  * This is called only if a validation error was detected
  *
- * Returns the index of the "best" state or -1 in case of error
+ * @param ctxt  a Relax-NG validation context
+ * @returns the index of the "best" state or -1 in case of error
  */
 static int
 xmlRelaxNGBestState(xmlRelaxNGValidCtxtPtr ctxt)
@@ -9614,11 +9470,10 @@ xmlRelaxNGBestState(xmlRelaxNGValidCtxtP
 }
 
 /**
- * xmlRelaxNGLogBestError:
- * @ctxt:  a Relax-NG validation context
- *
  * Find the "best" state in the ctxt->states list of states to report
  * errors about and log it.
+ *
+ * @param ctxt  a Relax-NG validation context
  */
 static void
 xmlRelaxNGLogBestError(xmlRelaxNGValidCtxtPtr ctxt)
@@ -9638,15 +9493,13 @@ xmlRelaxNGLogBestError(xmlRelaxNGValidCt
 }
 
 /**
- * xmlRelaxNGValidateElementEnd:
- * @ctxt:  a Relax-NG validation context
- * @dolog:  indicate that error logging should be done
- *
  * Validate the end of the element, implements check that
  * there is nothing left not consumed in the element content
  * or in the attribute list.
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param dolog  indicate that error logging should be done
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateElementEnd(xmlRelaxNGValidCtxtPtr ctxt, int dolog)
@@ -9678,13 +9531,11 @@ xmlRelaxNGValidateElementEnd(xmlRelaxNGV
 }
 
 /**
- * xmlRelaxNGValidateState:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to verify
- *
  * Validate the current state against the definition
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateState(xmlRelaxNGValidCtxtPtr ctxt,
@@ -10402,13 +10253,11 @@ xmlRelaxNGValidateState(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGValidateDefinition:
- * @ctxt:  a Relax-NG validation context
- * @define:  the definition to verify
- *
  * Validate the current node lists against the definition
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param define  the definition to verify
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateDefinition(xmlRelaxNGValidCtxtPtr ctxt,
@@ -10535,13 +10384,11 @@ xmlRelaxNGValidateDefinition(xmlRelaxNGV
 }
 
 /**
- * xmlRelaxNGValidateDocument:
- * @ctxt:  a Relax-NG validation context
- * @doc:  the document
- *
  * Validate the given document
  *
- * Returns 0 if the validation succeeded or an error code.
+ * @param ctxt  a Relax-NG validation context
+ * @param doc  the document
+ * @returns 0 if the validation succeeded or an error code.
  */
 static int
 xmlRelaxNGValidateDocument(xmlRelaxNGValidCtxtPtr ctxt, xmlDocPtr doc)
@@ -10628,16 +10475,14 @@ xmlRelaxNGValidateDocument(xmlRelaxNGVal
 }
 
 /**
- * xmlRelaxNGCleanPSVI:
- * @node:  an input element or document
- *
  * 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->content
  * field, the value stored is actually - the node number (starting at -1)
  * to be able to differentiate from line numbers.
  *
- * Returns the number of elements found in the document or -1 in case
+ * @param node  an input element or document
+ * @returns the number of elements found in the document or -1 in case
  *    of error.
  */
 static void
@@ -10687,15 +10532,13 @@ xmlRelaxNGCleanPSVI(xmlNodePtr node) {
  ************************************************************************/
 
 /**
- * xmlRelaxNGNewValidCtxt:
- * @schema:  a precompiled XML RelaxNGs
- *
  * Create an XML RelaxNGs validation context based on the given schema
  *
- * Returns the validation context or NULL in case of error
+ * @param schema  a precompiled XML RelaxNGs
+ * @returns the validation context or NULL in case of error
  */
-xmlRelaxNGValidCtxtPtr
-xmlRelaxNGNewValidCtxt(xmlRelaxNGPtr schema)
+xmlRelaxNGValidCtxt *
+xmlRelaxNGNewValidCtxt(xmlRelaxNG *schema)
 {
     xmlRelaxNGValidCtxtPtr ret;
 
@@ -10720,13 +10563,12 @@ xmlRelaxNGNewValidCtxt(xmlRelaxNGPtr sch
 }
 
 /**
- * xmlRelaxNGFreeValidCtxt:
- * @ctxt:  the schema validation context
- *
  * Free the resources associated to the schema validation context
+ *
+ * @param ctxt  the schema validation context
  */
 void
-xmlRelaxNGFreeValidCtxt(xmlRelaxNGValidCtxtPtr ctxt)
+xmlRelaxNGFreeValidCtxt(xmlRelaxNGValidCtxt *ctxt)
 {
     int k;
 
@@ -10762,18 +10604,17 @@ xmlRelaxNGFreeValidCtxt(xmlRelaxNGValidC
 }
 
 /**
- * xmlRelaxNGSetValidErrors:
- * @ctxt:  a Relax-NG validation context
- * @err:  the error function
- * @warn: the warning function
- * @ctx: the functions context
+ * Set the error and warning callback information
  *
- * DEPRECATED: Use xmlRelaxNGSetValidStructuredErrors.
+ * @deprecated Use #xmlRelaxNGSetValidStructuredErrors.
  *
- * Set the error and warning callback information
+ * @param ctxt  a Relax-NG validation context
+ * @param err  the error function
+ * @param warn  the warning function
+ * @param ctx  the functions context
  */
 void
-xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
+xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxt *ctxt,
                          xmlRelaxNGValidityErrorFunc err,
                          xmlRelaxNGValidityWarningFunc warn, void *ctx)
 {
@@ -10786,15 +10627,14 @@ xmlRelaxNGSetValidErrors(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGSetValidStructuredErrors:
- * @ctxt:  a Relax-NG validation context
- * @serror:  the structured error function
- * @ctx: the functions context
- *
  * Set the structured error callback
+ *
+ * @param ctxt  a Relax-NG validation context
+ * @param serror  the structured error function
+ * @param ctx  the functions context
  */
 void
-xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
+xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxt *ctxt,
                                    xmlStructuredErrorFunc serror, void *ctx)
 {
     if (ctxt == NULL)
@@ -10806,18 +10646,16 @@ xmlRelaxNGSetValidStructuredErrors(xmlRe
 }
 
 /**
- * xmlRelaxNGGetValidErrors:
- * @ctxt:  a Relax-NG validation context
- * @err:  the error function result
- * @warn: the warning function result
- * @ctx: the functions context result
- *
  * Get the error and warning callback information
  *
- * Returns -1 in case of error and 0 otherwise
+ * @param ctxt  a Relax-NG validation context
+ * @param err  the error function result
+ * @param warn  the warning function result
+ * @param ctx  the functions context result
+ * @returns -1 in case of error and 0 otherwise
  */
 int
-xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
+xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxt *ctxt,
                          xmlRelaxNGValidityErrorFunc * err,
                          xmlRelaxNGValidityWarningFunc * warn, void **ctx)
 {
@@ -10833,17 +10671,15 @@ xmlRelaxNGGetValidErrors(xmlRelaxNGValid
 }
 
 /**
- * xmlRelaxNGValidateDoc:
- * @ctxt:  a Relax-NG validation context
- * @doc:  a parsed document tree
- *
  * Validate a document tree in memory.
  *
- * Returns 0 if the document is valid, a positive error code
+ * @param ctxt  a Relax-NG validation context
+ * @param doc  a parsed document tree
+ * @returns 0 if the document is valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
 int
-xmlRelaxNGValidateDoc(xmlRelaxNGValidCtxtPtr ctxt, xmlDocPtr doc)
+xmlRelaxNGValidateDoc(xmlRelaxNGValidCtxt *ctxt, xmlDoc *doc)
 {
     int ret;
 
diff -pruN 2.14.6+dfsg-0.1/runsuite.c 2.15.0+dfsg-0.3/runsuite.c
--- 2.14.6+dfsg-0.1/runsuite.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/runsuite.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #include "libxml.h"
@@ -17,8 +17,9 @@
 #include <libxml/parserInternals.h>
 #include <libxml/tree.h>
 #include <libxml/uri.h>
+
 #if (defined(LIBXML_RELAXNG_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)) && \
-    defined(LIBXML_XPATH_ENABLED)
+    defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
 #include <libxml/xmlreader.h>
 
 #include <libxml/xpath.h>
@@ -29,10 +30,11 @@
 #include <libxml/xmlschemastypes.h>
 
 #define LOGFILE "runsuite.log"
+#define EXPECTED_XMP_ERROR_COUNT 3
+
 static FILE *logfile = NULL;
 static int verbose = 0;
 
-
 /************************************************************************
  *									*
  *		File name and path utilities				*
@@ -738,6 +740,191 @@ done:
 	xmlFreeDoc(doc);
     return(ret);
 }
+
+/* Returns 1 for success */
+static int tryValidateElement(xmlRelaxNGValidCtxtPtr ctx, xmlDocPtr doc, xmlNodePtr elem)
+{
+    int rc = xmlRelaxNGValidatePushElement(ctx, doc, elem);
+    if (rc == 0)
+    {
+        /* Streaming is not possible, validate full element instead */
+        rc = xmlRelaxNGValidateFullElement(ctx, doc, elem);
+        if (rc == 1)
+            return 1;
+
+    Fail:
+        xmlRelaxNGValidCtxtClearErrors(ctx);
+        xmlResetLastError();
+        return 0;
+    }
+    else if (rc == 1)
+    {
+        xmlNodePtr child;
+        int success = 1;
+        for (child = xmlFirstElementChild(elem); child != NULL; child = xmlNextElementSibling(child))
+        {
+            /* Validate children elements recursively.
+             * NOTE: There may be no children to validate,
+             * as for example for <rng:text/> defines */
+            success = tryValidateElement(ctx, doc, child);
+            if (!success)
+                break;
+        }
+
+        if (xmlRelaxNGValidatePopElement(ctx, doc, elem) == 0)
+            goto Fail;
+
+        return success;
+    }
+    else
+    {
+        goto Fail;
+    }
+}
+
+static int
+rngTestStreaming(void) {
+    int mem;
+    int rc;
+    int error_count = 0;
+    xmlDocPtr schema_doc;
+    xmlDocPtr xmp_packet_doc = NULL;
+    xmlRelaxNGParserCtxtPtr rng_parser_ctx;
+    xmlRelaxNGPtr schema = NULL;
+    xmlRelaxNGValidCtxtPtr validation_ctx = NULL;
+    xmlNodePtr xmpmeta;
+    xmlNodePtr rdf;
+    xmlNodePtr description;
+    xmlNodePtr child;
+    const xmlChar* error_arr[EXPECTED_XMP_ERROR_COUNT] = { NULL };
+    const char* schema_filepath = "test/relaxng/ISO19005-1-XMP_Packet.rng";
+    const char* xmp_packet_filepath = "test/relaxng/TestXMPInvalid1.xmp";
+
+    mem = xmlMemUsed();
+
+    schema_doc = xmlReadFile(schema_filepath, NULL, 0);
+    if (schema_doc == NULL) {
+        fprintf(stderr, "RNG Streaming: Failed to parse %s\n", schema_filepath);
+        return(-1);
+    }
+
+    rng_parser_ctx = xmlRelaxNGNewDocParserCtxt(schema_doc);
+    if (rng_parser_ctx == NULL) {
+        xmlFreeDoc(schema_doc);
+        fprintf(stderr, "RNG Streaming: Failed to create Relax NG parser context\n");
+        return(-1);
+    }
+
+    xmlFreeDoc(schema_doc);
+    schema = xmlRelaxNGParse(rng_parser_ctx);
+    if (rng_parser_ctx == NULL) {
+        xmlRelaxNGFreeParserCtxt(rng_parser_ctx);
+        fprintf(stderr, "RNG Streaming: Failed to parse Relax NG schema\n");
+        return(-1);
+    }
+
+    xmlRelaxNGFreeParserCtxt(rng_parser_ctx);
+    validation_ctx = xmlRelaxNGNewValidCtxt(schema);
+    if (rng_parser_ctx == NULL) {
+        xmlRelaxNGFree(schema);
+        fprintf(stderr, "RNG Streaming: Failed to create Relax NG validation context\n");
+        return(-1);
+    }
+
+    xmp_packet_doc = xmlReadFile(xmp_packet_filepath, NULL, 0);
+    if (xmp_packet_doc == NULL) {
+        xmlRelaxNGFreeValidCtxt(validation_ctx);
+        xmlRelaxNGFree(schema);
+        fprintf(stderr, "RNG Streaming: Failed to parse %s\n", xmp_packet_filepath);
+        return(-1);
+    }
+
+    xmpmeta = xmlDocGetRootElement(xmp_packet_doc);
+    if (xmpmeta == NULL || xmlStrcmp(BAD_CAST "xmpmeta", xmpmeta->name) != 0) {
+        fprintf(stderr, "RNG Streaming: Unable to find <x:xmpmeta> element\n");
+        rc = -1;
+        goto Exit;
+    }
+
+    rdf = xmlFirstElementChild(xmpmeta);
+    if (rdf == NULL || xmlStrcmp(BAD_CAST "RDF", rdf->name) != 0) {
+        fprintf(stderr, "RNG Streaming: Unable to find <rdf:RDF> element\n");
+        rc = -1;
+        goto Exit;
+    }
+
+    description = xmlFirstElementChild(rdf);
+    if (description == NULL || xmlStrcmp(BAD_CAST "Description", description->name) != 0) {
+        fprintf(stderr, "RNG Streaming: Unable to find <rdf:Description> element\n");
+        rc = -1;
+        goto Exit;
+    }
+
+    /* Push enclosing/preamble elements */
+    rc = xmlRelaxNGValidatePushElement(validation_ctx, xmp_packet_doc, xmpmeta);        /* <x:xmpmeta> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+    rc = xmlRelaxNGValidatePushElement(validation_ctx, xmp_packet_doc, rdf);            /* <rdf:RDF> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+    rc = xmlRelaxNGValidatePushElement(validation_ctx, xmp_packet_doc, description);    /* <rdf:Description> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+
+    for (child = xmlFirstElementChild(description); child != NULL; child = xmlNextElementSibling(child))
+    {
+        if (!tryValidateElement(validation_ctx, xmp_packet_doc, child))
+        {
+            error_count++;
+            if (error_count > EXPECTED_XMP_ERROR_COUNT) {
+                fprintf(stderr, "RNG Streaming: Unexpected error count\n");
+                rc = -1;
+                goto Exit;
+            }
+
+            error_arr[error_count - 1] = child->name;
+        }
+    }
+
+    rc = xmlRelaxNGValidatePopElement(validation_ctx, xmp_packet_doc, description);     /* </rdf:Description> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+    rc = xmlRelaxNGValidatePopElement(validation_ctx, xmp_packet_doc, rdf);             /* </rdf:RDF> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+    rc = xmlRelaxNGValidatePopElement(validation_ctx, xmp_packet_doc, xmpmeta);         /* </x:xmpmeta> */
+    if (rc != 1)
+        goto FailPushPopEnclosing;
+
+    if (error_count < EXPECTED_XMP_ERROR_COUNT
+            || xmlStrcmp(error_arr[0], BAD_CAST "MetadataDate") != 0
+            || xmlStrcmp(error_arr[1], BAD_CAST "Trapped") != 0
+            || xmlStrcmp(error_arr[2], BAD_CAST "Ignore") != 0) {
+        fprintf(stderr, "RNG Streaming: Invalid known errors\n");
+        rc = -1;
+        goto Exit;
+    }
+
+    rc = 0;
+    goto Exit;
+
+FailPushPopEnclosing:
+    fprintf(stderr, "RNG Streaming: Unable to push/pop packet enclosing elements\n");
+    rc = -1;
+
+Exit:
+    xmlRelaxNGFreeValidCtxt(validation_ctx);
+    xmlRelaxNGFree(schema);
+    xmlFreeDoc(xmp_packet_doc);
+
+    if (mem != xmlMemUsed()) {
+        fprintf(stderr, "RNG Streaming: Test leaked\n");
+        nb_leaks++;
+    }
+
+    return rc;
+}
+
 #endif /* LIBXML_RELAXNG_ENABLED */
 
 /************************************************************************
@@ -1034,6 +1221,9 @@ main(int argc ATTRIBUTE_UNUSED, char **a
         verbose = 1;
 
 #ifdef LIBXML_RELAXNG_ENABLED
+    if (rngTestStreaming() != 0)
+        nb_errors++;
+
     old_errors = nb_errors;
     old_tests = nb_tests;
     old_leaks = nb_leaks;
diff -pruN 2.14.6+dfsg-0.1/runtest.c 2.15.0+dfsg-0.3/runtest.c
--- 2.14.6+dfsg-0.1/runtest.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/runtest.c	2025-09-15 11:55:59.000000000 +0000
@@ -8,7 +8,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define XML_DEPRECATED
@@ -166,13 +166,13 @@ static int glob(const char *pattern, ATT
     if (hFind == INVALID_HANDLE_VALUE)
         return(0);
     nb_paths = 20;
-    ret->gl_pathv = (char **) malloc(nb_paths * sizeof(char *));
+    ret->gl_pathv = (char **) xmlMalloc(nb_paths * sizeof(char *));
     if (ret->gl_pathv == NULL) {
 	FindClose(hFind);
         return(-1);
     }
     strncpy(directory + len, FindFileData.cFileName, 499 - len);
-    ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+    ret->gl_pathv[ret->gl_pathc] = xmlMemStrdup(directory);
     if (ret->gl_pathv[ret->gl_pathc] == NULL)
         goto done;
     ret->gl_pathc++;
@@ -180,14 +180,14 @@ static int glob(const char *pattern, ATT
         if (FindFileData.cFileName[0] == '.')
 	    continue;
         if (ret->gl_pathc + 2 > nb_paths) {
-            char **tmp = realloc(ret->gl_pathv, nb_paths * 2 * sizeof(char *));
+            char **tmp = xmlRealloc(ret->gl_pathv, nb_paths * 2 * sizeof(char *));
             if (tmp == NULL)
                 break;
             ret->gl_pathv = tmp;
             nb_paths *= 2;
 	}
 	strncpy(directory + len, FindFileData.cFileName, 499 - len);
-	ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+	ret->gl_pathv[ret->gl_pathc] = xmlMemStrdup(directory);
         if (ret->gl_pathv[ret->gl_pathc] == NULL)
             break;
         ret->gl_pathc++;
@@ -208,8 +208,9 @@ static void globfree(glob_t *pglob) {
 
     for (i = 0;i < pglob->gl_pathc;i++) {
          if (pglob->gl_pathv[i] != NULL)
-             free(pglob->gl_pathv[i]);
+             xmlFree(pglob->gl_pathv[i]);
     }
+    xmlFree(pglob->gl_pathv);
 }
 
 #elif HAVE_DECL_GLOB
@@ -366,7 +367,7 @@ static char *resultFilename(const char *
 
     if (snprintf(res, 499, "%s%s%s", out, base, suffixbuff) >= 499)
         res[499] = 0;
-    return(strdup(res));
+    return(xmlMemStrdup(res));
 }
 
 static int checkTestFile(const char *filename) {
@@ -515,12 +516,12 @@ static int loadMem(const char *filename,
     int siz = 0;
     if (stat(filename, &info) < 0)
 	return(-1);
-    base = malloc(info.st_size + 1);
+    base = xmlMalloc(info.st_size + 1);
     if (base == NULL)
 	return(-1);
     fd = open(filename, RD_FLAGS);
     if (fd  < 0) {
-        free(base);
+        xmlFree(base);
 	return(-1);
     }
     while ((res = read(fd, &base[siz], info.st_size - siz)) > 0) {
@@ -529,7 +530,7 @@ static int loadMem(const char *filename,
     close(fd);
 #if !defined(_WIN32)
     if (siz != info.st_size) {
-        free(base);
+        xmlFree(base);
 	return(-1);
     }
 #endif
@@ -540,7 +541,7 @@ static int loadMem(const char *filename,
 }
 
 static int unloadMem(const char *mem) {
-    free((char *)mem);
+    xmlFree((char *)mem);
     return(0);
 }
 
@@ -607,12 +608,10 @@ static int callbacks = 0;
 static int quiet = 0;
 
 /**
- * isStandaloneDebug:
- * @ctxt:  An XML parser context
- *
  * Is this document tagged standalone ?
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 isStandaloneDebug(void *ctx ATTRIBUTE_UNUSED)
@@ -625,12 +624,10 @@ isStandaloneDebug(void *ctx ATTRIBUTE_UN
 }
 
 /**
- * hasInternalSubsetDebug:
- * @ctxt:  An XML parser context
- *
  * Does this document has an internal subset
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 hasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
@@ -643,12 +640,10 @@ hasInternalSubsetDebug(void *ctx ATTRIBU
 }
 
 /**
- * hasExternalSubsetDebug:
- * @ctxt:  An XML parser context
- *
  * Does this document has an external subset
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 hasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
@@ -661,10 +656,9 @@ hasExternalSubsetDebug(void *ctx ATTRIBU
 }
 
 /**
- * internalSubsetDebug:
- * @ctxt:  An XML parser context
- *
  * Does this document has an internal subset
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 internalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
@@ -687,10 +681,9 @@ internalSubsetDebug(void *ctx ATTRIBUTE_
 }
 
 /**
- * externalSubsetDebug:
- * @ctxt:  An XML parser context
- *
  * Does this document has an external subset
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 externalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
@@ -711,18 +704,16 @@ externalSubsetDebug(void *ctx ATTRIBUTE_
 }
 
 /**
- * resolveEntityDebug:
- * @ctxt:  An XML parser context
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * Special entity resolver, better left to the parser, it has
  * more context than the application layer.
  * The default behaviour is to NOT resolve the entities, in that case
  * the ENTITY_REF nodes are built in the structure (and the parameter
  * values).
  *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ * @param ctxt  An XML parser context
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @returns the xmlParserInput if inlined or NULL for DOM behaviour.
  */
 static xmlParserInputPtr
 resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId)
@@ -751,13 +742,11 @@ resolveEntityDebug(void *ctx ATTRIBUTE_U
 }
 
 /**
- * getEntityDebug:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
  * Get an entity by name
  *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
+ * @returns the xmlParserInput if inlined or NULL for DOM behaviour.
  */
 static xmlEntityPtr
 getEntityDebug(void *ctx, const xmlChar *name)
@@ -773,13 +762,11 @@ getEntityDebug(void *ctx, const xmlChar
 }
 
 /**
- * getParameterEntityDebug:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
  * Get a parameter entity by name
  *
- * Returns the xmlParserInputPtr
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
+ * @returns the xmlParserInput
  */
 static xmlEntityPtr
 getParameterEntityDebug(void *ctx, const xmlChar *name)
@@ -796,15 +783,14 @@ getParameterEntityDebug(void *ctx, const
 
 
 /**
- * entityDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the entity name
- * @type:  the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
- *
  * An entity definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the entity name
+ * @param type  the entity type
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param content  the entity value (without processing).
  */
 static void
 entityDeclDebug(void *ctx, const xmlChar *name, int type,
@@ -839,12 +825,11 @@ entityDeclDebug(void *ctx, const xmlChar
 }
 
 /**
- * attributeDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the attribute name
- * @type:  the attribute type
- *
  * An attribute definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the attribute name
+ * @param type  the attribute type
  */
 static void
 attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem,
@@ -864,13 +849,12 @@ attributeDeclDebug(void *ctx ATTRIBUTE_U
 }
 
 /**
- * elementDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the element name
- * @type:  the element type
- * @content: the element value (without processing).
- *
  * An element definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the element name
+ * @param type  the element type
+ * @param content  the element value (without processing).
  */
 static void
 elementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
@@ -884,13 +868,12 @@ elementDeclDebug(void *ctx ATTRIBUTE_UNU
 }
 
 /**
- * notationDeclDebug:
- * @ctxt:  An XML parser context
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * What to do when a notation declaration has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The name of the notation
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
  */
 static void
 notationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
@@ -904,14 +887,13 @@ notationDeclDebug(void *ctx ATTRIBUTE_UN
 }
 
 /**
- * unparsedEntityDeclDebug:
- * @ctxt:  An XML parser context
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
- *
  * What to do when an unparsed entity declaration is parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The name of the entity
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param notationName  the name of the notation
  */
 static void
 unparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
@@ -935,12 +917,11 @@ const xmlChar *nullstr = BAD_CAST "(null
 }
 
 /**
- * setDocumentLocatorDebug:
- * @ctxt:  An XML parser context
- * @loc: A SAX Locator
- *
  * Receive the document locator at startup, actually xmlDefaultSAXLocator
  * Everything is available on the context, so this is useless in our case.
+ *
+ * @param ctxt  An XML parser context
+ * @param loc  A SAX Locator
  */
 static void
 setDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
@@ -952,10 +933,9 @@ setDocumentLocatorDebug(void *ctx ATTRIB
 }
 
 /**
- * startDocumentDebug:
- * @ctxt:  An XML parser context
- *
  * called when the document start being processed.
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 startDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
@@ -967,10 +947,9 @@ startDocumentDebug(void *ctx ATTRIBUTE_U
 }
 
 /**
- * endDocumentDebug:
- * @ctxt:  An XML parser context
- *
  * called when the document end has been detected.
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 endDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
@@ -982,11 +961,10 @@ endDocumentDebug(void *ctx ATTRIBUTE_UNU
 }
 
 /**
- * startElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 startElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts)
@@ -1008,11 +986,10 @@ startElementDebug(void *ctx ATTRIBUTE_UN
 }
 
 /**
- * endElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when the end of an element has been detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 endElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
@@ -1024,13 +1001,12 @@ endElementDebug(void *ctx ATTRIBUTE_UNUS
 }
 
 /**
- * charactersDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some chars from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 static void
 charactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
@@ -1049,11 +1025,10 @@ charactersDebug(void *ctx ATTRIBUTE_UNUS
 }
 
 /**
- * referenceDebug:
- * @ctxt:  An XML parser context
- * @name:  The entity name
- *
  * called when an entity reference is detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
  */
 static void
 referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
@@ -1065,14 +1040,13 @@ referenceDebug(void *ctx ATTRIBUTE_UNUSE
 }
 
 /**
- * ignorableWhitespaceDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @start: the first char in the string
- * @len: the number of xmlChar
- *
  * receiving some ignorable whitespaces from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param start  the first char in the string
+ * @param len  the number of xmlChar
  */
 static void
 ignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
@@ -1090,13 +1064,12 @@ ignorableWhitespaceDebug(void *ctx ATTRI
 }
 
 /**
- * processingInstructionDebug:
- * @ctxt:  An XML parser context
- * @target:  the target name
- * @data: the PI data's
- * @len: the number of xmlChar
- *
  * A processing instruction has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param target  the target name
+ * @param data  the PI data's
+ * @param len  the number of xmlChar
  */
 static void
 processingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target,
@@ -1114,12 +1087,11 @@ processingInstructionDebug(void *ctx ATT
 }
 
 /**
- * cdataBlockDebug:
- * @ctx: the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
- *
  * called when a pcdata block has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param value  The pcdata content
+ * @param len  the block length
  */
 static void
 cdataBlockDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value, int len)
@@ -1132,11 +1104,10 @@ cdataBlockDebug(void *ctx ATTRIBUTE_UNUS
 }
 
 /**
- * commentDebug:
- * @ctxt:  An XML parser context
- * @value:  the comment content
- *
  * A comment has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param value  the comment content
  */
 static void
 commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value)
@@ -1148,13 +1119,12 @@ commentDebug(void *ctx ATTRIBUTE_UNUSED,
 }
 
 /**
- * warningDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a warning messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
@@ -1171,13 +1141,12 @@ warningDebug(void *ctx ATTRIBUTE_UNUSED,
 }
 
 /**
- * errorDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a error messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
@@ -1194,13 +1163,12 @@ errorDebug(void *ctx ATTRIBUTE_UNUSED, c
 }
 
 /**
- * fatalErrorDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a fatalError messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
@@ -1257,11 +1225,10 @@ static xmlSAXHandlerPtr debugSAXHandler
  * SAX2 specific callbacks
  */
 /**
- * startElementNsDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 startElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
@@ -1314,11 +1281,10 @@ startElementNsDebug(void *ctx ATTRIBUTE_
 }
 
 /**
- * endElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when the end of an element has been detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 endElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
@@ -1379,11 +1345,10 @@ static xmlSAXHandlerPtr debugSAX2Handler
 
 #ifdef LIBXML_HTML_ENABLED
 /**
- * htmlstartElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 htmlstartElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts)
@@ -1414,13 +1379,12 @@ htmlstartElementDebug(void *ctx ATTRIBUT
 }
 
 /**
- * htmlcharactersDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some chars from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 static void
 htmlcharactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
@@ -1435,13 +1399,12 @@ htmlcharactersDebug(void *ctx ATTRIBUTE_
 }
 
 /**
- * htmlcdataDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some cdata chars from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 static void
 htmlcdataDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
@@ -1501,14 +1464,12 @@ hashFreeEntity(void *payload, const xmlC
 }
 
 /**
- * saxParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file using the SAX API and check for errors.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 saxParseTest(const char *filename, const char *result,
@@ -1526,7 +1487,7 @@ saxParseTest(const char *filename, const
     SAXdebug = fopen(temp, "wb");
     if (SAXdebug == NULL) {
         fprintf(stderr, "Failed to write to %s\n", temp);
-	free(temp);
+	xmlFree(temp);
 	return(-1);
     }
 
@@ -1599,7 +1560,7 @@ saxParseTest(const char *filename, const
 done:
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
 
     return(ret);
@@ -1743,14 +1704,12 @@ static xmlSAXHandler tokenizeHtmlSAXHand
 };
 
 /**
- * htmlTokenizerTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file using the SAX API and check for errors.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 htmlTokenizerTest(const char *filename, const char *result,
@@ -1773,7 +1732,7 @@ htmlTokenizerTest(const char *filename,
     SAXdebug = fopen(temp, "wb");
     if (SAXdebug == NULL) {
         fprintf(stderr, "Failed to write to %s\n", temp);
-	free(temp);
+	xmlFree(temp);
 	return(-1);
     }
 
@@ -1825,7 +1784,7 @@ htmlTokenizerTest(const char *filename,
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
 
     return(ret);
@@ -1838,16 +1797,14 @@ htmlTokenizerTest(const char *filename,
  *									*
  ************************************************************************/
 /**
- * oldParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
- * Parse a file using the old xmlParseFile API, then serialize back
+ * Parse a file using the old #xmlParseFile API, then serialize back
  * reparse the result and serialize again, then check for deviation
  * in serialization.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 oldParseTest(const char *filename, const char *result,
@@ -1901,7 +1858,7 @@ oldParseTest(const char *filename, const
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
 
     return(res);
@@ -1909,15 +1866,13 @@ oldParseTest(const char *filename, const
 
 #ifdef LIBXML_PUSH_ENABLED
 /**
- * pushParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a file using the Push API, then serialize back
  * to check for content.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 pushParseTest(const char *filename, const char *result,
@@ -1980,7 +1935,7 @@ pushParseTest(const char *filename, cons
 #endif
     res = ctxt->wellFormed;
     xmlFreeParserCtxt(ctxt);
-    free((char *)base);
+    xmlFree((char *)base);
     if (!res) {
 	xmlFreeDoc(doc);
 	fprintf(stderr, "Failed to parse %s\n", filename);
@@ -2096,15 +2051,13 @@ endElementNsBnd(void *ctx, const xmlChar
 }
 
 /**
- * pushBoundaryTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Test whether the push parser detects boundaries between syntactical
  * elements correctly.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 pushBoundaryTest(const char *filename, const char *result,
@@ -2286,7 +2239,7 @@ pushBoundaryTest(const char *filename, c
 #endif
     res = ctxt->wellFormed;
     xmlFreeParserCtxt(ctxt);
-    free((char *)base);
+    xmlFree((char *)base);
     if (numCallbacks > 1) {
 	xmlFreeDoc(doc);
 	fprintf(stderr, "Failed push boundary callback test (%d@%lu-%lu): %s\n",
@@ -2393,8 +2346,8 @@ testParseContent(xmlParserCtxtPtr ctxt,
     xmlFreeNodeList(list);
 
     /* xmlParseInNodeContext uses the document's encoding. */
-    xmlFree((xmlChar *) doc->encoding);
-    doc->encoding = (const xmlChar *) xmlStrdup(BAD_CAST "UTF-8");
+    xmlFree(doc->encoding);
+    doc->encoding = xmlStrdup(BAD_CAST "UTF-8");
     xmlParseInNodeContext(root, content, strlen(content),
                           ctxt->options | XML_PARSE_NOERROR,
                           &list);
@@ -2411,16 +2364,14 @@ testParseContent(xmlParserCtxtPtr ctxt,
 }
 
 /**
- * memParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
- * Parse a file using the old xmlReadMemory API, then serialize back
+ * Parse a file using the old #xmlReadMemory API, then serialize back
  * reparse the result and serialize again, then check for deviation
  * in serialization.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 memParseTest(const char *filename, const char *result,
@@ -2466,16 +2417,14 @@ memParseTest(const char *filename, const
 }
 
 /**
- * noentParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a file with entity resolution, then serialize back
  * reparse the result and serialize again, then check for deviation
  * in serialization.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 noentParseTest(const char *filename, const char *result,
@@ -2519,20 +2468,18 @@ noentParseTest(const char *filename, con
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
     return(res);
 }
 
 /**
- * errParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
+ * Parse a file using the #xmlReadFile API and check for errors.
  *
- * Parse a file using the xmlReadFile API and check for errors.
- *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 errParseTest(const char *filename, const char *result, const char *err,
@@ -2614,14 +2561,12 @@ errParseTest(const char *filename, const
 
 #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_HTML_ENABLED)
 /**
- * fdParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
- * Parse a file using the xmlReadFd API and check for errors.
+ * Parse a file using the #xmlReadFd API and check for errors.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 fdParseTest(const char *filename, const char *result, const char *err,
@@ -2741,7 +2686,7 @@ streamProcessTest(const char *filename,
 	t = fopen(temp, "wb");
 	if (t == NULL) {
 	    fprintf(stderr, "Can't open temp file %s\n", temp);
-	    free(temp);
+	    xmlFree(temp);
 	    return(-1);
 	}
     }
@@ -2754,7 +2699,7 @@ streamProcessTest(const char *filename,
 	    fclose(t);
             if (temp != NULL) {
                 unlink(temp);
-                free(temp);
+                xmlFree(temp);
             }
 	    return(0);
 	}
@@ -2781,7 +2726,7 @@ streamProcessTest(const char *filename,
 	ret = compareFiles(temp, result);
         if (temp != NULL) {
             unlink(temp);
-            free(temp);
+            xmlFree(temp);
         }
 	if (ret) {
 	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
@@ -2801,14 +2746,12 @@ streamProcessTest(const char *filename,
 }
 
 /**
- * streamParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file using the reader API and check for errors.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 streamParseTest(const char *filename, const char *result, const char *err,
@@ -2825,14 +2768,12 @@ streamParseTest(const char *filename, co
 }
 
 /**
- * walkerParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file using the walker, i.e. a reader built from a atree.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 walkerParseTest(const char *filename, const char *result, const char *err,
@@ -2854,14 +2795,12 @@ walkerParseTest(const char *filename, co
 }
 
 /**
- * streamMemParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file using the reader API from memory and check for errors.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 streamMemParseTest(const char *filename, const char *result, const char *err,
@@ -2882,7 +2821,7 @@ streamMemParseTest(const char *filename,
     xmlTextReaderSetStructuredErrorHandler(reader, testStructuredErrorHandler,
                                            NULL);
     ret = streamProcessTest(filename, result, err, reader, NULL, options);
-    free((char *)base);
+    xmlFree((char *)base);
     xmlFreeTextReader(reader);
     return(ret);
 }
@@ -2937,14 +2876,12 @@ testXPath(const char *str, int xptr, int
 }
 
 /**
- * xpathExprTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing XPath standalone expressions and evaluate them
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 xpathCommonTest(const char *filename, const char *result,
@@ -2962,7 +2899,7 @@ xpathCommonTest(const char *filename, co
     xpathOutput = fopen(temp, "wb");
     if (xpathOutput == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
 
@@ -2970,7 +2907,7 @@ xpathCommonTest(const char *filename, co
     if (input == NULL) {
         fprintf(stderr,
 		"Cannot open %s for reading\n", filename);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
     while (fgets(expression, 4500, input) != NULL) {
@@ -2999,20 +2936,18 @@ xpathCommonTest(const char *filename, co
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
     return(ret);
 }
 
 /**
- * xpathExprTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing XPath standalone expressions and evaluate them
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 xpathExprTest(const char *filename, const char *result,
@@ -3022,15 +2957,13 @@ xpathExprTest(const char *filename, cons
 }
 
 /**
- * xpathDocTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing XPath expressions and evaluate them against
  * a set of corresponding documents.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 xpathDocTest(const char *filename,
@@ -3074,15 +3007,13 @@ xpathDocTest(const char *filename,
 
 #ifdef LIBXML_XPTR_ENABLED
 /**
- * xptrDocTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing XPath expressions and evaluate them against
  * a set of corresponding documents.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 xptrDocTest(const char *filename,
@@ -3127,15 +3058,13 @@ xptrDocTest(const char *filename,
 
 #ifdef LIBXML_VALID_ENABLED
 /**
- * xmlidDocTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing xml:id and check for errors and verify
  * that XPath queries will work on them as expected.
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 xmlidDocTest(const char *filename,
@@ -3166,7 +3095,7 @@ xmlidDocTest(const char *filename,
     if (xpathOutput == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
         xmlFreeDoc(xpathDocument);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
 
@@ -3183,7 +3112,7 @@ xmlidDocTest(const char *filename,
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
     xmlFreeDoc(xpathDocument);
 
@@ -3237,14 +3166,12 @@ handleURI(const char *str, const char *b
 }
 
 /**
- * uriCommonTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing URI and check for errors
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 uriCommonTest(const char *filename,
@@ -3264,7 +3191,7 @@ uriCommonTest(const char *filename,
     o = fopen(temp, "wb");
     if (o == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
     f = fopen(filename, "rb");
@@ -3273,7 +3200,7 @@ uriCommonTest(const char *filename,
 	fclose(o);
         if (temp != NULL) {
             unlink(temp);
-            free(temp);
+            xmlFree(temp);
         }
 	return(-1);
     }
@@ -3319,20 +3246,18 @@ uriCommonTest(const char *filename,
 
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
     return(res);
 }
 
 /**
- * uriParseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing URI and check for errors
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 uriParseTest(const char *filename,
@@ -3343,15 +3268,13 @@ uriParseTest(const char *filename,
 }
 
 /**
- * uriBaseTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing URI, compose them against a fixed base and
  * check for errors
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 uriBaseTest(const char *filename,
@@ -3399,12 +3322,10 @@ static const char *urip_cur = NULL;
 static int urip_rlen;
 
 /**
- * uripMatch:
- * @URI: an URI to test
- *
  * Check for an urip: query
  *
- * Returns 1 if yes and 0 if another Input module should be used
+ * @param URI  an URI to test
+ * @returns 1 if yes and 0 if another Input module should be used
  */
 static int
 uripMatch(const char * URI) {
@@ -3420,13 +3341,11 @@ uripMatch(const char * URI) {
 }
 
 /**
- * uripOpen:
- * @URI: an URI to test
- *
- * Return a pointer to the urip: query handler, in this example simply
+ * Returns a pointer to the urip: query handler, in this example simply
  * the urip_current pointer...
  *
- * Returns an Input context or NULL in case or error
+ * @param URI  an URI to test
+ * @returns an Input context or NULL in case or error
  */
 static void *
 uripOpen(const char * URI) {
@@ -3444,12 +3363,10 @@ uripOpen(const char * URI) {
 }
 
 /**
- * uripClose:
- * @context: the read context
- *
  * Close the urip: query handler
  *
- * Returns 0 or -1 in case of error
+ * @param context  the read context
+ * @returns 0 or -1 in case of error
  */
 static int
 uripClose(void * context) {
@@ -3460,14 +3377,12 @@ uripClose(void * context) {
 }
 
 /**
- * uripRead:
- * @context: the read context
- * @buffer: where to store data
- * @len: number of bytes to read
- *
  * Implement an urip: query read.
  *
- * Returns the number of bytes read or -1 in case of error
+ * @param context  the read context
+ * @param buffer  where to store data
+ * @param len  number of bytes to read
+ * @returns the number of bytes read or -1 in case of error
  */
 static int
 uripRead(void * context, char * buffer, int len) {
@@ -3494,15 +3409,13 @@ urip_checkURL(const char *URL) {
 }
 
 /**
- * uriPathTest:
- * @filename: ignored
- * @result: ignored
- * @err: ignored
- *
  * Run a set of tests to check how Path and URI are handled before
  * being passed to the I/O layer
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  ignored
+ * @param result  ignored
+ * @param err  ignored
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 uriPathTest(const char *filename ATTRIBUTE_UNUSED,
@@ -3609,15 +3522,13 @@ done:
     return(ret);
 }
 /**
- * schemasTest:
- * @filename: the schemas file
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a file containing URI, compose them against a fixed base and
  * check for errors
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the schemas file
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 schemasTest(const char *filename,
@@ -3742,14 +3653,12 @@ rngOneTest(const char *sch,
     return(0);
 }
 /**
- * rngTest:
- * @filename: the schemas file
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse an RNG schemas and then apply it to the related .xml
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the schemas file
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 rngTest(const char *filename,
@@ -3834,14 +3743,12 @@ rngTest(const char *filename,
 
 #ifdef LIBXML_READER_ENABLED
 /**
- * rngStreamTest:
- * @filename: the schemas file
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a set of files with streaming, applying an RNG schemas
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the schemas file
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 rngStreamTest(const char *filename,
@@ -3880,7 +3787,7 @@ rngStreamTest(const char *filename,
      */
     if ((!strcmp(prefix, "tutor10_1")) || (!strcmp(prefix, "tutor10_2")) ||
         (!strcmp(prefix, "tutor3_2")) || (!strcmp(prefix, "307377")) ||
-        (!strcmp(prefix, "tutor8_2")))
+        (!strcmp(prefix, "tutor8_2")) || (!strcmp(prefix, "simplifyChoiceNotAllowed")))
 	disable_err = 1;
 
     if (snprintf(pattern, 499, "./test/relaxng/%s_?.xml", prefix) >= 499)
@@ -3973,12 +3880,10 @@ schematronOneTest(const char *sch, const
 }
 
 /**
- * schematronTest:
- * @filename: the schemas file
- * @result: the file with expected result
- * @err: the file with error messages
- *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the schemas file
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 schematronTest(const char *filename,
@@ -4130,14 +4035,12 @@ static void patternNode(FILE *out, xmlTe
 }
 
 /**
- * patternTest:
- * @filename: the schemas file
- * @result: the file with expected result
- * @err: the file with error messages
- *
  * Parse a set of files with streaming, applying an RNG schemas
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the schemas file
+ * @param result  the file with expected result
+ * @param err  the file with error messages
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 patternTest(const char *filename,
@@ -4182,7 +4085,7 @@ patternTest(const char *filename,
     if (o == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
 	fclose(f);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
     while (1) {
@@ -4268,7 +4171,7 @@ patternTest(const char *filename,
     }
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
     return(ret);
 }
@@ -4376,7 +4279,7 @@ xmlFree(expr);
     buffer = (xmlChar **)						\
 	xmlRealloc(buffer, buffer_size * sizeof(xmlChar*));	\
     if (buffer == NULL) {						\
-	perror("realloc failed");					\
+	perror("xmlRealloc failed");					\
 	return(NULL);							\
     }									\
 }
@@ -4403,7 +4306,7 @@ parse_list(xmlChar *str) {
     buffer_size = 1000;
     buffer = (xmlChar **) xmlMalloc(buffer_size * sizeof(xmlChar*));
     if (buffer == NULL) {
-	perror("malloc failed");
+	perror("xmlMalloc failed");
 	return(NULL);
     }
     out = buffer;
@@ -4505,7 +4408,7 @@ c14nRunTest(const char* xml_filename, in
     if (result != NULL) xmlFree(result);
     if(xpath != NULL) xmlXPathFreeObject(xpath);
     if (inclusive_namespaces != NULL) xmlFree(inclusive_namespaces);
-    if (nslist != NULL) free((char *) nslist);
+    if (nslist != NULL) xmlFree((char *) nslist);
     xmlFreeDoc(doc);
 
     return(ret);
@@ -4531,16 +4434,16 @@ c14nCommonTest(const char *filename, int
 
     if (snprintf(buf, 499, "result/c14n/%s/%s", subdir, prefix) >= 499)
         buf[499] = 0;
-    result = strdup(buf);
+    result = xmlMemStrdup(buf);
     if (snprintf(buf, 499, "test/c14n/%s/%s.xpath", subdir, prefix) >= 499)
         buf[499] = 0;
     if (checkTestFile(buf)) {
-	xpath = strdup(buf);
+	xpath = xmlMemStrdup(buf);
     }
     if (snprintf(buf, 499, "test/c14n/%s/%s.ns", subdir, prefix) >= 499)
         buf[499] = 0;
     if (checkTestFile(buf)) {
-	ns = strdup(buf);
+	ns = xmlMemStrdup(buf);
     }
 
     nb_tests++;
@@ -4548,9 +4451,9 @@ c14nCommonTest(const char *filename, int
                     xpath, ns, result) < 0)
         ret = 1;
 
-    if (result != NULL) free(result);
-    if (xpath != NULL) free(xpath);
-    if (ns != NULL) free(ns);
+    if (result != NULL) xmlFree(result);
+    if (xpath != NULL) xmlFree(xpath);
+    if (ns != NULL) xmlFree(ns);
     return(ret);
 }
 
@@ -4821,7 +4724,7 @@ regexpTest(const char *filename, const c
     output = fopen(temp, "wb");
     if (output == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
-        free(temp);
+        xmlFree(temp);
 	ret = -1;
         goto done;
     }
@@ -4872,7 +4775,7 @@ regexpTest(const char *filename, const c
     }
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
 
     ret = compareFileMem(err, testErrors, testErrorsSize);
@@ -4940,7 +4843,7 @@ automataTest(const char *filename, const
     output = fopen(temp, "wb");
     if (output == NULL) {
 	fprintf(stderr, "failed to open output file %s\n", temp);
-        free(temp);
+        xmlFree(temp);
 	return(-1);
     }
 
@@ -5117,7 +5020,7 @@ automataTest(const char *filename, const
     }
     if (temp != NULL) {
         unlink(temp);
-        free(temp);
+        xmlFree(temp);
     }
 
     return(res);
@@ -5446,9 +5349,9 @@ launchTests(testDescPtr tst) {
             }
             testErrorsSize = 0;
 	    if (result)
-		free(result);
+		xmlFree(result);
 	    if (error)
-		free(error);
+		xmlFree(error);
 	}
 	globfree(&globbuf);
     } else {
diff -pruN 2.14.6+dfsg-0.1/runxmlconf.c 2.15.0+dfsg-0.3/runxmlconf.c
--- 2.14.6+dfsg-0.1/runxmlconf.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/runxmlconf.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #include "libxml.h"
@@ -29,10 +29,10 @@
 static FILE *logfile = NULL;
 static int verbose = 0;
 
-#define NB_EXPECTED_ERRORS 15
+#define NB_EXPECTED_ERRORS 5
 
 
-const char *skipped_tests[] = {
+static const char *const skipped_tests[] = {
 /* http://lists.w3.org/Archives/Public/public-xml-testsuite/2008Jul/0000.html */
     "rmt-ns10-035",
     NULL
@@ -178,6 +178,8 @@ xmlconfTestInvalid(const char *id, const
     if (doc == NULL) {
         test_log("test %s : %s invalid document turned not well-formed too\n",
 	         id, filename);
+        nb_errors++;
+        ret = 0;
     } else {
     /* invalidity should be reported both in the context and in the document */
         if ((ctxt->valid != 0) || (doc->properties & XML_DOC_DTDVALID)) {
diff -pruN 2.14.6+dfsg-0.1/schematron.c 2.15.0+dfsg-0.3/schematron.c
--- 2.14.6+dfsg-0.1/schematron.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/schematron.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <daniel@veillard.com>
+ * Author: Daniel Veillard
  */
 
 /*
@@ -69,8 +69,6 @@ typedef enum {
 } xmlSchematronTestType;
 
 /**
- * _xmlSchematronLet:
- *
  * A Schematron let variable
  */
 typedef struct _xmlSchematronLet xmlSchematronLet;
@@ -82,8 +80,6 @@ struct _xmlSchematronLet {
 };
 
 /**
- * _xmlSchematronTest:
- *
  * A Schematrons test, either an assert or a report
  */
 typedef struct _xmlSchematronTest xmlSchematronTest;
@@ -98,8 +94,6 @@ struct _xmlSchematronTest {
 };
 
 /**
- * _xmlSchematronRule:
- *
  * A Schematrons rule
  */
 typedef struct _xmlSchematronRule xmlSchematronRule;
@@ -116,8 +110,6 @@ struct _xmlSchematronRule {
 };
 
 /**
- * _xmlSchematronPattern:
- *
  * A Schematrons pattern
  */
 typedef struct _xmlSchematronPattern xmlSchematronPattern;
@@ -129,8 +121,6 @@ struct _xmlSchematronPattern {
 };
 
 /**
- * _xmlSchematron:
- *
  * A Schematrons definition
  */
 struct _xmlSchematron {
@@ -155,8 +145,6 @@ struct _xmlSchematron {
 };
 
 /**
- * xmlSchematronValidCtxt:
- *
  * A Schematrons validation context
  */
 struct _xmlSchematronValidCtxt {
@@ -225,11 +213,9 @@ struct _xmlSchematronParserCtxt {
  ************************************************************************/
 
 /**
- * xmlSchematronPErrMemory:
- * @node: a context node
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  parser context
  */
 static void
 xmlSchematronPErrMemory(xmlSchematronParserCtxtPtr ctxt)
@@ -240,15 +226,14 @@ xmlSchematronPErrMemory(xmlSchematronPar
 }
 
 /**
- * xmlSchematronPErr:
- * @ctxt: the parsing context
- * @node: the context node
- * @error: the error code
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- *
  * Handle a parser error
+ *
+ * @param ctxt  the parsing context
+ * @param node  the context node
+ * @param error  the error code
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchematronPErr(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr node, int error,
@@ -280,11 +265,9 @@ xmlSchematronPErr(xmlSchematronParserCtx
 }
 
 /**
- * xmlSchematronVTypeErrMemory:
- * @node: a context node
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  validation context
  */
 static void
 xmlSchematronVErrMemory(xmlSchematronValidCtxtPtr ctxt)
@@ -297,15 +280,12 @@ xmlSchematronVErrMemory(xmlSchematronVal
 }
 
 /**
- * xmlSchematronVErr:
- * @ctxt: the parsing context
- * @node: the context node
- * @error: the error code
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- *
  * Handle a validation error
+ *
+ * @param ctxt  validation context
+ * @param error  the error code
+ * @param msg  the error message
+ * @param str1  extra data
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlSchematronVErr(xmlSchematronValidCtxtPtr ctxt, int error,
@@ -343,17 +323,15 @@ xmlSchematronVErr(xmlSchematronValidCtxt
  ************************************************************************/
 
 /**
- * xmlSchematronAddTest:
- * @ctxt: the schema parsing context
- * @type:  the type of test
- * @rule:  the parent rule
- * @node:  the node hosting the test
- * @test: the associated test
- * @report: the associated report string
- *
  * Add a test to a schematron
  *
- * Returns the new pointer or NULL in case of error
+ * @param ctxt  the schema parsing context
+ * @param type  the type of test
+ * @param rule  the parent rule
+ * @param node  the node hosting the test
+ * @param test  the associated test
+ * @param report  the associated report string
+ * @returns the new pointer or NULL in case of error
  */
 static xmlSchematronTestPtr
 xmlSchematronAddTest(xmlSchematronParserCtxtPtr ctxt,
@@ -405,10 +383,9 @@ xmlSchematronAddTest(xmlSchematronParser
 }
 
 /**
- * xmlSchematronFreeTests:
- * @tests:  a list of tests
- *
  * Free a list of tests.
+ *
+ * @param tests  a list of tests
  */
 static void
 xmlSchematronFreeTests(xmlSchematronTestPtr tests) {
@@ -428,10 +405,9 @@ xmlSchematronFreeTests(xmlSchematronTest
 }
 
 /**
- * xmlSchematronFreeLets:
- * @lets:  a list of let variables
- *
  * Free a list of let variables.
+ *
+ * @param lets  a list of let variables
  */
 static void
 xmlSchematronFreeLets(xmlSchematronLetPtr lets) {
@@ -449,16 +425,15 @@ xmlSchematronFreeLets(xmlSchematronLetPt
 }
 
 /**
- * xmlSchematronAddRule:
- * @ctxt: the schema parsing context
- * @schema:  a schema structure
- * @node:  the node hosting the rule
- * @context: the associated context string
- * @report: the associated report string
- *
  * Add a rule to a schematron
  *
- * Returns the new pointer or NULL in case of error
+ * @param ctxt  the schema parsing context
+ * @param schema  a schema structure
+ * @param pat  a pattern
+ * @param node  the node hosting the rule
+ * @param context  the associated context string
+ * @param report  the associated report string
+ * @returns the new pointer or NULL in case of error
  */
 static xmlSchematronRulePtr
 xmlSchematronAddRule(xmlSchematronParserCtxtPtr ctxt, xmlSchematronPtr schema,
@@ -519,10 +494,9 @@ xmlSchematronAddRule(xmlSchematronParser
 }
 
 /**
- * xmlSchematronFreeRules:
- * @rules:  a list of rules
- *
  * Free a list of rules.
+ *
+ * @param rules  a list of rules
  */
 static void
 xmlSchematronFreeRules(xmlSchematronRulePtr rules) {
@@ -546,15 +520,13 @@ xmlSchematronFreeRules(xmlSchematronRule
 }
 
 /**
- * xmlSchematronAddPattern:
- * @ctxt: the schema parsing context
- * @schema:  a schema structure
- * @node:  the node hosting the pattern
- * @id: the id or name of the pattern
- *
  * Add a pattern to a schematron
  *
- * Returns the new pointer or NULL in case of error
+ * @param ctxt  the schema parsing context
+ * @param schema  a schema structure
+ * @param node  the node hosting the pattern
+ * @param name  the name of the pattern
+ * @returns the new pointer or NULL in case of error
  */
 static xmlSchematronPatternPtr
 xmlSchematronAddPattern(xmlSchematronParserCtxtPtr ctxt,
@@ -586,10 +558,9 @@ xmlSchematronAddPattern(xmlSchematronPar
 }
 
 /**
- * xmlSchematronFreePatterns:
- * @patterns:  a list of patterns
- *
  * Free a list of patterns.
+ *
+ * @param patterns  a list of patterns
  */
 static void
 xmlSchematronFreePatterns(xmlSchematronPatternPtr patterns) {
@@ -605,12 +576,10 @@ xmlSchematronFreePatterns(xmlSchematronP
 }
 
 /**
- * xmlSchematronNewSchematron:
- * @ctxt:  a schema validation context
- *
  * Allocate a new Schematron structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a schema validation context
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlSchematronPtr
 xmlSchematronNewSchematron(xmlSchematronParserCtxtPtr ctxt)
@@ -630,13 +599,12 @@ xmlSchematronNewSchematron(xmlSchematron
 }
 
 /**
- * xmlSchematronFree:
- * @schema:  a schema structure
- *
  * Deallocate a Schematron structure.
+ *
+ * @param schema  a schema structure
  */
 void
-xmlSchematronFree(xmlSchematronPtr schema)
+xmlSchematronFree(xmlSchematron *schema)
 {
     if (schema == NULL)
         return;
@@ -654,15 +622,13 @@ xmlSchematronFree(xmlSchematronPtr schem
 }
 
 /**
- * xmlSchematronNewParserCtxt:
- * @URL:  the location of the schema
- *
  * Create an XML Schematrons parse context for that file/resource expected
  * to contain an XML Schematrons file.
  *
- * Returns the parser context or NULL in case of error
+ * @param URL  the location of the schema
+ * @returns the parser context or NULL in case of error
  */
-xmlSchematronParserCtxtPtr
+xmlSchematronParserCtxt *
 xmlSchematronNewParserCtxt(const char *URL)
 {
     xmlSchematronParserCtxtPtr ret;
@@ -693,16 +659,14 @@ xmlSchematronNewParserCtxt(const char *U
 }
 
 /**
- * xmlSchematronNewMemParserCtxt:
- * @buffer:  a pointer to a char array containing the schemas
- * @size:  the size of the array
- *
  * Create an XML Schematrons parse context for that memory buffer expected
  * to contain an XML Schematrons file.
  *
- * Returns the parser context or NULL in case of error
+ * @param buffer  a pointer to a char array containing the schemas
+ * @param size  the size of the array
+ * @returns the parser context or NULL in case of error
  */
-xmlSchematronParserCtxtPtr
+xmlSchematronParserCtxt *
 xmlSchematronNewMemParserCtxt(const char *buffer, int size)
 {
     xmlSchematronParserCtxtPtr ret;
@@ -731,16 +695,14 @@ xmlSchematronNewMemParserCtxt(const char
 }
 
 /**
- * xmlSchematronNewDocParserCtxt:
- * @doc:  a preparsed document tree
- *
  * Create an XML Schematrons parse context for that document.
  * NB. The document may be modified during the parsing process.
  *
- * Returns the parser context or NULL in case of error
+ * @param doc  a preparsed document tree
+ * @returns the parser context or NULL in case of error
  */
-xmlSchematronParserCtxtPtr
-xmlSchematronNewDocParserCtxt(xmlDocPtr doc)
+xmlSchematronParserCtxt *
+xmlSchematronNewDocParserCtxt(xmlDoc *doc)
 {
     xmlSchematronParserCtxtPtr ret;
 
@@ -770,13 +732,12 @@ xmlSchematronNewDocParserCtxt(xmlDocPtr
 }
 
 /**
- * xmlSchematronFreeParserCtxt:
- * @ctxt:  the schema parser context
- *
  * Free the resources associated to the schema parser context
+ *
+ * @param ctxt  the schema parser context
  */
 void
-xmlSchematronFreeParserCtxt(xmlSchematronParserCtxtPtr ctxt)
+xmlSchematronFreeParserCtxt(xmlSchematronParserCtxt *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -793,12 +754,11 @@ xmlSchematronFreeParserCtxt(xmlSchematro
 
 #if 0
 /**
- * xmlSchematronPushInclude:
- * @ctxt:  the schema parser context
- * @doc:  the included document
- * @cur:  the current include node
- *
  * Add an included document
+ *
+ * @param ctxt  the schema parser context
+ * @param doc  the included document
+ * @param cur  the current include node
  */
 static void
 xmlSchematronPushInclude(xmlSchematronParserCtxtPtr ctxt,
@@ -832,12 +792,10 @@ xmlSchematronPushInclude(xmlSchematronPa
 }
 
 /**
- * xmlSchematronPopInclude:
- * @ctxt:  the schema parser context
- *
  * Pop an include level. The included document is being freed
  *
- * Returns the node immediately following the include or NULL if the
+ * @param ctxt  the schema parser context
+ * @returns the node immediately following the include or NULL if the
  *         include list was empty.
  */
 static xmlNodePtr
@@ -861,12 +819,11 @@ xmlSchematronPopInclude(xmlSchematronPar
 #endif
 
 /**
- * xmlSchematronAddNamespace:
- * @ctxt:  the schema parser context
- * @prefix:  the namespace prefix
- * @ns:  the namespace name
- *
  * Add a namespace definition in the context
+ *
+ * @param ctxt  the schema parser context
+ * @param prefix  the namespace prefix
+ * @param ns  the namespace name
  */
 static void
 xmlSchematronAddNamespace(xmlSchematronParserCtxtPtr ctxt,
@@ -905,11 +862,10 @@ xmlSchematronAddNamespace(xmlSchematronP
 }
 
 /**
- * xmlSchematronParseTestReportMsg:
- * @ctxt:  the schema parser context
- * @con:  the assert or report node
- *
  * Format the message content of the assert or report test
+ *
+ * @param ctxt  the schema parser context
+ * @param con  the assert or report node
  */
 static void
 xmlSchematronParseTestReportMsg(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr con)
@@ -955,11 +911,11 @@ xmlSchematronParseTestReportMsg(xmlSchem
 }
 
 /**
- * xmlSchematronParseRule:
- * @ctxt:  a schema validation context
- * @rule:  the rule node
- *
  * parse a rule element
+ *
+ * @param ctxt  a schema validation context
+ * @param pattern  a pattern
+ * @param rule  the rule node
  */
 static void
 xmlSchematronParseRule(xmlSchematronParserCtxtPtr ctxt,
@@ -1123,11 +1079,10 @@ xmlSchematronParseRule(xmlSchematronPars
 }
 
 /**
- * xmlSchematronParsePattern:
- * @ctxt:  a schema validation context
- * @pat:  the pattern node
- *
  * parse a pattern element
+ *
+ * @param ctxt  a schema validation context
+ * @param pat  the pattern node
  */
 static void
 xmlSchematronParsePattern(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr pat)
@@ -1172,13 +1127,11 @@ xmlSchematronParsePattern(xmlSchematronP
 
 #if 0
 /**
- * xmlSchematronLoadInclude:
- * @ctxt:  a schema validation context
- * @cur:  the include element
- *
  * Load the include document, Push the current pointer
  *
- * Returns the updated node pointer
+ * @param ctxt  a schema validation context
+ * @param cur  the include element
+ * @returns the updated node pointer
  */
 static xmlNodePtr
 xmlSchematronLoadInclude(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr cur)
@@ -1238,17 +1191,15 @@ done:
 #endif
 
 /**
- * xmlSchematronParse:
- * @ctxt:  a schema validation context
- *
  * parse a schema definition resource and build an internal
  * XML Schema structure which can be used to validate instances.
  *
- * Returns the internal XML Schematron structure built from the resource or
+ * @param ctxt  a schema validation context
+ * @returns the internal XML Schematron structure built from the resource or
  *         NULL in case of error
  */
-xmlSchematronPtr
-xmlSchematronParse(xmlSchematronParserCtxtPtr ctxt)
+xmlSchematron *
+xmlSchematronParse(xmlSchematronParserCtxt *ctxt)
 {
     xmlSchematronPtr ret = NULL;
     xmlDocPtr doc;
@@ -1425,12 +1376,11 @@ xmlSchematronGetNode(xmlSchematronValidC
 }
 
 /**
- * xmlSchematronReportOutput:
- * @ctxt: the validation context
- * @cur: the current node tested
- * @msg: the message output
- *
  * Output part of the report to whatever channel the user selected
+ *
+ * @param ctxt  the validation context
+ * @param cur  the current node tested
+ * @param msg  the message output
  */
 static void
 xmlSchematronReportOutput(xmlSchematronValidCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -1441,14 +1391,12 @@ xmlSchematronReportOutput(xmlSchematronV
 }
 
 /**
- * xmlSchematronFormatReport:
- * @ctxt:  the validation context
- * @test: the test node
- * @cur: the current node tested
- *
  * Build the string being reported to the user.
  *
- * Returns a report string or NULL in case of error. The string needs
+ * @param ctxt  the validation context
+ * @param test  the test node
+ * @param cur  the current node tested
+ * @returns a report string or NULL in case of error. The string needs
  *         to be deallocated by the caller
  */
 static xmlChar *
@@ -1590,14 +1538,14 @@ xmlSchematronFormatReport(xmlSchematronV
 }
 
 /**
- * xmlSchematronReportSuccess:
- * @ctxt:  the validation context
- * @test: the compiled test
- * @cur: the current node tested
- * @success: boolean value for the result
- *
  * called from the validation engine when an assert or report test have
  * been done.
+ *
+ * @param ctxt  the validation context
+ * @param test  the compiled test
+ * @param cur  the current node tested
+ * @param pattern  a pattern
+ * @param success  boolean value for the result
  */
 static void
 xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt,
@@ -1680,11 +1628,10 @@ xmlSchematronReportSuccess(xmlSchematron
 }
 
 /**
- * xmlSchematronReportPattern:
- * @ctxt:  the validation context
- * @pattern: the current pattern
- *
  * called from the validation engine when starting to check a pattern
+ *
+ * @param ctxt  the validation context
+ * @param pattern  the current pattern
  */
 static void
 xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt,
@@ -1713,15 +1660,14 @@ xmlSchematronReportPattern(xmlSchematron
  ************************************************************************/
 
 /**
- * xmlSchematronSetValidStructuredErrors:
- * @ctxt:  a Schematron validation context
- * @serror:  the structured error function
- * @ctx: the functions context
- *
  * Set the structured error callback
+ *
+ * @param ctxt  a Schematron validation context
+ * @param serror  the structured error function
+ * @param ctx  the functions context
  */
 void
-xmlSchematronSetValidStructuredErrors(xmlSchematronValidCtxtPtr ctxt,
+xmlSchematronSetValidStructuredErrors(xmlSchematronValidCtxt *ctxt,
                                       xmlStructuredErrorFunc serror, void *ctx)
 {
     if (ctxt == NULL)
@@ -1733,20 +1679,21 @@ xmlSchematronSetValidStructuredErrors(xm
 }
 
 /**
- * xmlSchematronNewValidCtxt:
- * @schema:  a precompiled XML Schematrons
- * @options: a set of xmlSchematronValidOptions
- *
  * Create an XML Schematrons validation context based on the given schema.
  *
- * Returns the validation context or NULL in case of error
+ * @param schema  a precompiled XML Schematrons
+ * @param options  a set of xmlSchematronValidOptions
+ * @returns the validation context or NULL in case of error
  */
-xmlSchematronValidCtxtPtr
-xmlSchematronNewValidCtxt(xmlSchematronPtr schema, int options)
+xmlSchematronValidCtxt *
+xmlSchematronNewValidCtxt(xmlSchematron *schema, int options)
 {
     int i;
     xmlSchematronValidCtxtPtr ret;
 
+    if (schema == NULL)
+        return(NULL);
+
     ret = (xmlSchematronValidCtxtPtr) xmlMalloc(sizeof(xmlSchematronValidCtxt));
     if (ret == NULL) {
         xmlSchematronVErrMemory(NULL);
@@ -1773,13 +1720,12 @@ xmlSchematronNewValidCtxt(xmlSchematronP
 }
 
 /**
- * xmlSchematronFreeValidCtxt:
- * @ctxt:  the schema validation context
- *
  * Free the resources associated to the schema validation context
+ *
+ * @param ctxt  the schema validation context
  */
 void
-xmlSchematronFreeValidCtxt(xmlSchematronValidCtxtPtr ctxt)
+xmlSchematronFreeValidCtxt(xmlSchematronValidCtxt *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -1826,15 +1772,14 @@ xmlSchematronNextNode(xmlNodePtr cur) {
 }
 
 /**
- * xmlSchematronRunTest:
- * @ctxt:  the schema validation context
- * @test:  the current test
- * @instance:  the document instance tree
- * @cur:  the current node in the instance
- *
  * Validate a rule against a tree instance at a given position
  *
- * Returns 1 in case of success, 0 if error and -1 in case of internal error
+ * @param ctxt  the schema validation context
+ * @param test  the current test
+ * @param instance  the document instance tree
+ * @param cur  the current node in the instance
+ * @param pattern  a pattern
+ * @returns 1 in case of success, 0 if error and -1 in case of internal error
  */
 static int
 xmlSchematronRunTest(xmlSchematronValidCtxtPtr ctxt,
@@ -1888,15 +1833,14 @@ xmlSchematronRunTest(xmlSchematronValidC
 }
 
 /**
- * xmlSchematronRegisterVariables:
- * @ctxt:  the schema validation context
- * @let:  the list of let variables
- * @instance:  the document instance tree
- * @cur:  the current node
- *
- * Registers a list of let variables to the current context of @cur
+ * Registers a list of let variables to the current context of `cur`
  *
- * Returns -1 in case of errors, otherwise 0
+ * @param vctxt  the schema validation context
+ * @param ctxt  an XPath context
+ * @param let  the list of let variables
+ * @param instance  the document instance tree
+ * @param cur  the current node
+ * @returns -1 in case of errors, otherwise 0
  */
 static int
 xmlSchematronRegisterVariables(xmlSchematronValidCtxtPtr vctxt,
@@ -1927,13 +1871,12 @@ xmlSchematronRegisterVariables(xmlSchema
 }
 
 /**
- * xmlSchematronUnregisterVariables:
- * @ctxt:  the schema validation context
- * @let:  the list of let variables
- *
  * Unregisters a list of let variables from the context
  *
- * Returns -1 in case of errors, otherwise 0
+ * @param vctxt  the schema validation context
+ * @param ctxt  an XPath context
+ * @param let  the list of let variables
+ * @returns -1 in case of errors, otherwise 0
  */
 static int
 xmlSchematronUnregisterVariables(xmlSchematronValidCtxtPtr vctxt,
@@ -1952,17 +1895,15 @@ xmlSchematronUnregisterVariables(xmlSche
 }
 
 /**
- * xmlSchematronValidateDoc:
- * @ctxt:  the schema validation context
- * @instance:  the document instance tree
- *
  * Validate a tree instance against the schematron
  *
- * Returns 0 in case of success, -1 in case of internal error
+ * @param ctxt  the schema validation context
+ * @param instance  the document instance tree
+ * @returns 0 in case of success, -1 in case of internal error
  *         and an error count otherwise.
  */
 int
-xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance)
+xmlSchematronValidateDoc(xmlSchematronValidCtxt *ctxt, xmlDoc *instance)
 {
     xmlNodePtr cur, root;
     xmlSchematronPatternPtr pattern;
diff -pruN 2.14.6+dfsg-0.1/shell.c 2.15.0+dfsg-0.3/shell.c
--- 2.14.6+dfsg-0.1/shell.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/shell.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <daniel@veillard.com>
+ * Author: Daniel Veillard
  */
 
 #include "libxml.h"
@@ -62,12 +62,10 @@ struct _xmllintShellCtxt {
 };
 
 /**
- * xmllintLsCountNode:
- * @node:  the node to count
+ * Count the children of `node`.
  *
- * Count the children of @node.
- *
- * Returns the number of children of @node.
+ * @param node  the node to count
+ * @returns the number of children of `node`.
  */
 static int
 xmllintLsCountNode(xmlNodePtr node) {
@@ -117,11 +115,10 @@ xmllintLsCountNode(xmlNodePtr node) {
 }
 
 /**
- * xmllintLsOneNode:
- * @output:  the FILE * for the output
- * @node:  the node to dump
+ * Dump to `output` the type and name of `node`.
  *
- * Dump to @output the type and name of @node.
+ * @param output  the FILE * for the output
+ * @param node  the node to dump
  */
 static void
 xmllintLsOneNode(FILE *output, xmlNodePtr node) {
@@ -252,16 +249,14 @@ xmllintLsOneNode(FILE *output, xmlNodePt
 }
 
 /**
- * xmllintShellList:
- * @ctxt:  the shell context
- * @arg:  unused
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "ls"
  * Does an Unix like listing of the given node (like a directory)
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellList(xmllintShellCtxtPtr ctxt,
@@ -295,16 +290,14 @@ xmllintShellList(xmllintShellCtxtPtr ctx
 }
 
 /**
- * xmllintShellBase:
- * @ctxt:  the shell context
- * @arg:  unused
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "base"
  * dumps the current XML base of the node
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellBase(xmllintShellCtxtPtr ctxt,
@@ -331,16 +324,14 @@ xmllintShellBase(xmllintShellCtxtPtr ctx
 }
 
 /**
- * xmllintShellSetBase:
- * @ctxt:  the shell context
- * @arg:  the new base
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "setbase"
  * change the current XML base of the node
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  the new base
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellSetBase(xmllintShellCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -353,17 +344,15 @@ xmllintShellSetBase(xmllintShellCtxtPtr
 
 #ifdef LIBXML_XPATH_ENABLED
 /**
- * xmllintShellRegisterNamespace:
- * @ctxt:  the shell context
- * @arg:  a string in prefix=nsuri format
- * @node:  unused
- * @node2:  unused
- *
  * Implements the XML shell function "setns"
  * register/unregister a prefix=namespace pair
  * on the XPath context
  *
- * Returns 0 on success and a negative value otherwise.
+ * @param ctxt  the shell context
+ * @param arg  a string in prefix=nsuri format
+ * @param node  unused
+ * @param node2  unused
+ * @returns 0 on success and a negative value otherwise.
  */
 static int
 xmllintShellRegisterNamespace(xmllintShellCtxtPtr ctxt, char *arg,
@@ -410,16 +399,14 @@ xmllintShellRegisterNamespace(xmllintShe
     return(0);
 }
 /**
- * xmllintShellRegisterRootNamespaces:
- * @ctxt:  the shell context
- * @arg:  unused
- * @node:  the root element
- * @node2:  unused
- *
  * Implements the XML shell function "setrootns"
  * which registers all namespaces declarations found on the root element.
  *
- * Returns 0 on success and a negative value otherwise.
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param root  the root element
+ * @param node2  unused
+ * @returns 0 on success and a negative value otherwise.
  */
 static int
 xmllintShellRegisterRootNamespaces(xmllintShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED,
@@ -443,16 +430,14 @@ xmllintShellRegisterRootNamespaces(xmlli
 #endif
 
 /**
- * xmllintShellGrep:
- * @ctxt:  the shell context
- * @arg:  the string or regular expression to find
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "grep"
  * dumps information about the node (namespace, attributes, content).
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  the string or regular expression to find
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellGrep(xmllintShellCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -519,16 +504,14 @@ xmllintShellGrep(xmllintShellCtxtPtr ctx
 }
 
 /**
- * xmllintShellDir:
- * @ctxt:  the shell context
- * @arg:  unused
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "dir"
  * dumps information about the node (namespace, attributes, content).
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellDir(xmllintShellCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -555,16 +538,14 @@ xmllintShellDir(xmllintShellCtxtPtr ctxt
 }
 
 /**
- * xmllintShellSetContent:
- * @ctxt:  the shell context
- * @value:  the content as a string
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "dir"
  * dumps information about the node (namespace, attributes, content).
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param value  the content as a string
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellSetContent(xmllintShellCtxtPtr ctxt ATTRIBUTE_UNUSED,
@@ -613,16 +594,14 @@ xmllintShellPrintf(void *ctx, const char
 
 #ifdef LIBXML_RELAXNG_ENABLED
 /**
- * xmllintShellRNGValidate:
- * @ctxt:  the shell context
- * @schemas:  the path to the Relax-NG schemas
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "relaxng"
  * validating the instance against a Relax-NG schemas
  *
- * Returns 0
+ * @param sctxt  the shell context
+ * @param schemas  the path to the Relax-NG schemas
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellRNGValidate(xmllintShellCtxtPtr sctxt, char *schemas,
@@ -663,16 +642,14 @@ xmllintShellRNGValidate(xmllintShellCtxt
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmllintShellCat:
- * @ctxt:  the shell context
- * @arg:  unused
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "cat"
  * dumps the serialization node content (XML or HTML).
  *
- * Returns 0
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0
  */
 static int
 xmllintShellCat(xmllintShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED,
@@ -708,16 +685,14 @@ xmllintShellCat(xmllintShellCtxtPtr ctxt
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmllintShellLoad:
- * @ctxt:  the shell context
- * @filename:  the file name
- * @node:  unused
- * @node2:  unused
- *
  * Implements the XML shell function "load"
  * loads a new document specified by the filename
  *
- * Returns 0 or -1 if loading failed
+ * @param ctxt  the shell context
+ * @param filename  the file name
+ * @param node  unused
+ * @param node2  unused
+ * @returns 0 or -1 if loading failed
  */
 static int
 xmllintShellLoad(xmllintShellCtxtPtr ctxt, char *filename,
@@ -763,17 +738,15 @@ xmllintShellLoad(xmllintShellCtxtPtr ctx
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmllintShellWrite:
- * @ctxt:  the shell context
- * @filename:  the file name
- * @node:  a node in the tree
- * @node2:  unused
- *
  * Implements the XML shell function "write"
  * Write the current node to the filename, it saves the serialization
- * of the subtree under the @node specified
+ * of the subtree under the `node` specified
  *
- * Returns 0 or -1 in case of error
+ * @param ctxt  the shell context
+ * @param filename  the file name
+ * @param node  a node in the tree
+ * @param node2  unused
+ * @returns 0 or -1 in case of error
  */
 static int
 xmllintShellWrite(xmllintShellCtxtPtr ctxt, char *filename, xmlNodePtr node,
@@ -824,16 +797,14 @@ xmllintShellWrite(xmllintShellCtxtPtr ct
 }
 
 /**
- * xmllintShellSave:
- * @ctxt:  the shell context
- * @filename:  the file name (optional)
- * @node:  unused
- * @node2:  unused
- *
  * Implements the XML shell function "save"
  * Write the current document to the filename, or it's original name
  *
- * Returns 0 or -1 in case of error
+ * @param ctxt  the shell context
+ * @param filename  the file name (optional)
+ * @param node  unused
+ * @param node2  unused
+ * @returns 0 or -1 in case of error
  */
 static int
 xmllintShellSave(xmllintShellCtxtPtr ctxt, char *filename,
@@ -878,17 +849,15 @@ xmllintShellSave(xmllintShellCtxtPtr ctx
 
 #ifdef LIBXML_VALID_ENABLED
 /**
- * xmllintShellValidate:
- * @ctxt:  the shell context
- * @dtd:  the DTD URI (optional)
- * @node:  unused
- * @node2:  unused
- *
  * Implements the XML shell function "validate"
  * Validate the document, if a DTD path is provided, then the validation
  * is done against the given DTD.
  *
- * Returns 0 or -1 in case of error
+ * @param ctxt  the shell context
+ * @param dtd  the DTD URI (optional)
+ * @param node  unused
+ * @param node2  unused
+ * @returns 0 or -1 in case of error
  */
 static int
 xmllintShellValidate(xmllintShellCtxtPtr ctxt, char *dtd,
@@ -921,17 +890,15 @@ xmllintShellValidate(xmllintShellCtxtPtr
 #endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmllintShellDu:
- * @ctxt:  the shell context
- * @arg:  unused
- * @tree:  a node defining a subtree
- * @node2:  unused
- *
  * Implements the XML shell function "du"
- * show the structure of the subtree under node @tree
- * If @tree is null, the command works on the current node.
+ * show the structure of the subtree under node `tree`
+ * If `tree` is null, the command works on the current node.
  *
- * Returns 0 or -1 in case of error
+ * @param ctxt  the shell context
+ * @param arg  unused
+ * @param tree  a node defining a subtree
+ * @param node2  unused
+ * @returns 0 or -1 in case of error
  */
 static int
 xmllintShellDu(xmllintShellCtxtPtr ctxt,
@@ -1005,18 +972,16 @@ xmllintShellDu(xmllintShellCtxtPtr ctxt,
 }
 
 /**
- * xmllintShellPwd:
- * @ctxt:  the shell context
- * @buffer:  the output buffer
- * @node:  a node
- * @node2:  unused
- *
  * Implements the XML shell function "pwd"
  * 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.
  *
- * Returns 0 or -1 in case of error
+ * @param ctxt  the shell context
+ * @param buffer  the output buffer
+ * @param node  a node
+ * @param node2  unused
+ * @returns 0 or -1 in case of error
  */
 static int
 xmllintShellPwd(xmllintShellCtxtPtr ctxt ATTRIBUTE_UNUSED, char *buffer,
@@ -1051,12 +1016,10 @@ xmllintShellPwd(xmllintShellCtxtPtr ctxt
 #define MAX_COMMAND_SIZE    100
 
 /**
- * xmllintShellReadline:
- * @prompt:  the prompt value
- *
  * Read a string
  *
- * Returns a pointer to it or NULL on EOF the caller is expected to
+ * @param prompt  the prompt value
+ * @returns a pointer to it or NULL on EOF the caller is expected to
  *     free the returned string.
  */
 static char *
@@ -1097,17 +1060,16 @@ xmllintShellReadline(char *prompt) {
 }
 
 /**
- * xmllintShell:
- * @doc:  the initial document
- * @filename:  the output buffer
- * @output:  the output FILE*, defaults to stdout if NULL
- *
  * Implements the XML shell
  * This allow to load, validate, view, modify and save a document
  * using a environment similar to a UNIX commandline.
+ *
+ * @param doc  the initial document
+ * @param filename  the output buffer
+ * @param output  the output FILE*, defaults to stdout if NULL
  */
 void
-xmllintShell(xmlDocPtr doc, const char *filename, FILE * output)
+xmllintShell(xmlDoc *doc, const char *filename, FILE * output)
 {
     char prompt[MAX_PROMPT_SIZE] = "/ > ";
     char *cmdline = NULL, *cur;
diff -pruN 2.14.6+dfsg-0.1/testModule.c 2.15.0+dfsg-0.3/testModule.c
--- 2.14.6+dfsg-0.1/testModule.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testModule.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * joelwreed@comcast.net
+ * Author: Joel W. Reed
  */
 
 #define XML_DEPRECATED
diff -pruN 2.14.6+dfsg-0.1/testapi.c 2.15.0+dfsg-0.3/testapi.c
--- 2.14.6+dfsg-0.1/testapi.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testapi.c	2025-09-15 11:55:59.000000000 +0000
@@ -1,45885 +1,1404 @@
 /*
  * testapi.c: libxml2 API tester program.
  *
- * Automatically generated by gentest.py from libxml2-api.xml
+ * Automatically generated by gentest.py
  *
  * See Copyright for the status of this software.
- *
- * daniel@veillard.com
  */
 
 /* Disable deprecation warnings */
 #define XML_DEPRECATED
 
 #include "libxml.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <libxml/xmlerror.h>
-#include <libxml/catalog.h>
-#include <libxml/relaxng.h>
-#include <libxml/parser.h>
-
-
-static int testlibxml2(void);
-static int test_module(const char *module);
-
-static int generic_errors = 0;
-static int call_tests = 0;
-static int function_tests = 0;
-
-static xmlChar chartab[1024];
-static int inttab[1024];
-static unsigned long longtab[1024];
-
-static xmlDocPtr api_doc = NULL;
-static xmlDtdPtr api_dtd = NULL;
-static xmlNodePtr api_root = NULL;
-static xmlAttrPtr api_attr = NULL;
-static xmlNsPtr api_ns = NULL;
-
-static void
-structured_errors(void *userData ATTRIBUTE_UNUSED,
-                  const xmlError *error ATTRIBUTE_UNUSED) {
-    generic_errors++;
-}
-
-static void
-free_api_doc(void) {
-    xmlFreeDoc(api_doc);
-    api_doc = NULL;
-    api_dtd = NULL;
-    api_root = NULL;
-    api_attr = NULL;
-    api_ns = NULL;
-}
-
-static xmlDocPtr
-get_api_doc(void) {
-    if (api_doc == NULL) {
-        api_doc = xmlReadMemory("<!DOCTYPE root [<!ELEMENT root EMPTY>]><root xmlns:h='http://example.com/' h:foo='bar'/>", 88, "root_test", NULL, 0);
-	api_root = NULL;
-	api_attr = NULL;
-    }
-    return(api_doc);
-}
-
-static xmlDtdPtr
-get_api_dtd(void) {
-    if ((api_dtd == NULL) || (api_dtd->type != XML_DTD_NODE)) {
-        get_api_doc();
-	if ((api_doc != NULL) && (api_doc->children != NULL) &&
-	    (api_doc->children->type == XML_DTD_NODE))
-	    api_dtd = (xmlDtdPtr) api_doc->children;
-    }
-    return(api_dtd);
-}
-
-static xmlNodePtr
-get_api_root(void) {
-    if ((api_root == NULL) || (api_root->type != XML_ELEMENT_NODE)) {
-        get_api_doc();
-	if ((api_doc != NULL) && (api_doc->children != NULL) &&
-	    (api_doc->children->next != NULL) &&
-	    (api_doc->children->next->type == XML_ELEMENT_NODE))
-	    api_root = api_doc->children->next;
-    }
-    return(api_root);
-}
-
-static xmlNsPtr
-get_api_ns(void) {
-    get_api_root();
-    if (api_root != NULL)
-        api_ns = api_root->nsDef;
-    return(api_ns);
-}
-
-static xmlAttrPtr
-get_api_attr(void) {
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
-    static int nr = 0;
-    xmlChar name[20];
-#endif
-
-    if ((api_root == NULL) || (api_root->type != XML_ELEMENT_NODE)) {
-        get_api_root();
-    }
-    if (api_root == NULL)
-        return(NULL);
-    if (api_root->properties != NULL) {
-        api_attr = api_root->properties;
-        return(api_root->properties);
-    }
-    api_attr = NULL;
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
-    snprintf((char *) name, 20, "foo%d", nr++);
-    api_attr = xmlSetProp(api_root, name, (const xmlChar *) "bar");
-#endif
-    return(api_attr);
-}
-
-static int quiet = 0;
-
-int main(int argc, char **argv) {
-    int ret;
-    int blocks, mem;
-
-#if defined(_WIN32)
-    setvbuf(stdout, NULL, _IONBF, 0);
-    setvbuf(stderr, NULL, _IONBF, 0);
-
-    printf("Skipping on Windows for now\n");
-    return(0);
-#endif
-
-    memset(chartab, 0, sizeof(chartab));
-    strncpy((char *) chartab, "  chartab\n", 20);
-    memset(inttab, 0, sizeof(inttab));
-    memset(longtab, 0, sizeof(longtab));
-
-    xmlInitParser();
-#ifdef LIBXML_CATALOG_ENABLED
-    xmlInitializeCatalog();
-#endif
-#ifdef LIBXML_RELAXNG_ENABLED
-    xmlRelaxNGInitTypes();
-#endif
-
-    LIBXML_TEST_VERSION
-
-    xmlSetStructuredErrorFunc(NULL, structured_errors);
-    xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
-
-    if (argc >= 2) {
-        if (!strcmp(argv[1], "-q")) {
-	    quiet = 1;
-	    if (argc >= 3)
-	        ret = test_module(argv[2]);
-	    else
-		ret = testlibxml2();
-        } else {
-	   ret = test_module(argv[1]);
-	}
-    } else
-	ret = testlibxml2();
-
-    xmlCleanupParser();
-    blocks = xmlMemBlocks();
-    mem = xmlMemUsed();
-    if ((blocks != 0) || (mem != 0)) {
-        printf("testapi leaked %d bytes in %d blocks\n", mem, blocks);
-        ret = 1;
-    }
-
-    return (ret != 0);
-}
-
-#include <libxml/HTMLparser.h>
-#include <libxml/HTMLtree.h>
-#include <libxml/chvalid.h>
-#include <libxml/dict.h>
-#include <libxml/encoding.h>
-#include <libxml/entities.h>
-#include <libxml/hash.h>
-#include <libxml/list.h>
-#include <libxml/nanohttp.h>
-#include <libxml/parser.h>
-#include <libxml/parserInternals.h>
-#include <libxml/pattern.h>
-#include <libxml/relaxng.h>
-#include <libxml/schemasInternals.h>
-#include <libxml/schematron.h>
-#include <libxml/tree.h>
-#include <libxml/uri.h>
-#include <libxml/valid.h>
-#include <libxml/xinclude.h>
-#include <libxml/xmlIO.h>
-#include <libxml/xmlerror.h>
-#include <libxml/xmlreader.h>
-#include <libxml/xmlsave.h>
-#include <libxml/xmlschemas.h>
-#include <libxml/xmlschemastypes.h>
-#include <libxml/xmlstring.h>
-#include <libxml/xmlwriter.h>
-#include <libxml/xpath.h>
-#include <libxml/xpointer.h>
-#include <libxml/debugXML.h>
-
-/*
- We need some "remote" addresses, but want to avoid getting into
- name resolution delays, so we use these
-*/
-#define	REMOTE1GOOD	"http://localhost/"
-#define	REMOTE1BAD	"http:http://http"
-#define	REMOTE2GOOD	"ftp://localhost/foo"
-
-#define gen_nb_void_ptr 2
-
-static void *gen_void_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_void_ptr(int no ATTRIBUTE_UNUSED, void *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_userdata 3
-
-static void *gen_userdata(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return((void *) &call_tests);
-    if (no == 1) return((void *) -1);
-    return(NULL);
-}
-static void des_userdata(int no ATTRIBUTE_UNUSED, void *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-
-#define gen_nb_int 4
-
-static int gen_int(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(0);
-    if (no == 1) return(1);
-    if (no == 2) return(-1);
-    if (no == 3) return(122);
-    return(-1);
-}
-
-static void des_int(int no ATTRIBUTE_UNUSED, int val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_parseroptions 5
-
-static int gen_parseroptions(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(XML_PARSE_NOBLANKS | XML_PARSE_RECOVER);
-    if (no == 1) return(XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_DTDATTR | XML_PARSE_DTDVALID | XML_PARSE_NOCDATA);
-    if (no == 2) return(XML_PARSE_XINCLUDE | XML_PARSE_NOXINCNODE | XML_PARSE_NSCLEAN);
-    if (no == 3) return(XML_PARSE_XINCLUDE | XML_PARSE_NODICT);
-    return(XML_PARSE_SAX1);
-}
-
-static void des_parseroptions(int no ATTRIBUTE_UNUSED, int val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#if 0
-#define gen_nb_long 5
-
-static long gen_long(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(0);
-    if (no == 1) return(1);
-    if (no == 2) return(-1);
-    if (no == 3) return(122);
-    return(-1);
-}
-
-static void des_long(int no ATTRIBUTE_UNUSED, long val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-#endif
-
-#define gen_nb_xmlChar 4
-
-static xmlChar gen_xmlChar(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return('a');
-    if (no == 1) return(' ');
-    if (no == 2) return((xmlChar) '\xf8');
-    return(0);
-}
-
-static void des_xmlChar(int no ATTRIBUTE_UNUSED, xmlChar val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_unsigned_int 3
-
-static unsigned int gen_unsigned_int(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(0);
-    if (no == 1) return(1);
-    if (no == 2) return(122);
-    return((unsigned int) -1);
-}
-
-static void des_unsigned_int(int no ATTRIBUTE_UNUSED, unsigned int val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_unsigned_long 4
-
-static unsigned long gen_unsigned_long(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(0);
-    if (no == 1) return(1);
-    if (no == 2) return(122);
-    return((unsigned long) -1);
-}
-
-static void des_unsigned_long(int no ATTRIBUTE_UNUSED, unsigned long val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_unsigned_long_ptr 2
-
-static unsigned long *gen_unsigned_long_ptr(int no, int nr) {
-    if (no == 0) return(&longtab[nr]);
-    return(NULL);
-}
-
-static void des_unsigned_long_ptr(int no ATTRIBUTE_UNUSED, unsigned long *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#endif /* LIBXML_SCHEMAS_ENABLED */
-
-#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
-
-#define gen_nb_double 4
-
-static double gen_double(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(0);
-    if (no == 1) return(-1.1);
-#if defined(LIBXML_XPATH_ENABLED)
-    if (no == 2) return(xmlXPathNAN);
-#endif
-    return(-1);
-}
-
-static void des_double(int no ATTRIBUTE_UNUSED, double val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#endif /* defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
-
-#define gen_nb_int_ptr 2
-
-static int *gen_int_ptr(int no, int nr) {
-    if (no == 0) return(&inttab[nr]);
-    return(NULL);
-}
-
-static void des_int_ptr(int no ATTRIBUTE_UNUSED, int *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_const_char_ptr 4
-
-static const char *gen_const_char_ptr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return((char *) "foo");
-    if (no == 1) return((char *) "<foo/>");
-    if (no == 2) return((char *) "test/ent2");
-    return(NULL);
-}
-static void des_const_char_ptr(int no ATTRIBUTE_UNUSED, const char *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlChar_ptr 2
-
-static xmlChar *gen_xmlChar_ptr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(&chartab[0]);
-    return(NULL);
-}
-static void des_xmlChar_ptr(int no ATTRIBUTE_UNUSED, xmlChar *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_FILE_ptr 2
-
-static FILE *gen_FILE_ptr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(fopen("test.out", "a+"));
-    return(NULL);
-}
-static void des_FILE_ptr(int no ATTRIBUTE_UNUSED, FILE *val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) fclose(val);
-}
-
-#ifdef LIBXML_DEBUG_ENABLED
-#define gen_nb_debug_FILE_ptr 2
-static FILE *gen_debug_FILE_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(fopen("test.out", "a+"));
-}
-static void des_debug_FILE_ptr(int no ATTRIBUTE_UNUSED, FILE *val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) fclose(val);
-}
-#endif
-
-#define gen_nb_const_xmlChar_ptr 5
-
-static const xmlChar *gen_const_xmlChar_ptr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return((xmlChar *) "foo");
-    if (no == 1) return((xmlChar *) "<foo/>");
-    if (no == 2) return((xmlChar *) "n" "\xf8" "ne");
-    if (no == 3) return((xmlChar *) " 2ab ");
-    return(NULL);
-}
-static void des_const_xmlChar_ptr(int no ATTRIBUTE_UNUSED, const xmlChar *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_filepath 8
-
-static const char *gen_filepath(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return("missing.xml");
-    if (no == 1) return("<foo/>");
-    if (no == 2) return("test/ent2");
-    if (no == 3) return("test/valid/REC-xml-19980210.xml");
-    if (no == 4) return("test/valid/dtds/xhtml1-strict.dtd");
-    if (no == 5) return(REMOTE1GOOD);
-    if (no == 6) return(REMOTE1BAD);
-    return(NULL);
-}
-static void des_filepath(int no ATTRIBUTE_UNUSED, const char *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_eaten_name 2
-
-static xmlChar *gen_eaten_name(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlStrdup(BAD_CAST "eaten"));
-    return(NULL);
-}
-static void des_eaten_name(int no ATTRIBUTE_UNUSED, xmlChar *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_fileoutput 6
-
-static const char *gen_fileoutput(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return("missing/dir/missing.xml");
-    if (no == 1) return("<foo/>");
-    if (no == 2) return(REMOTE2GOOD);
-    if (no == 3) return(REMOTE1GOOD);
-    if (no == 4) return(REMOTE1BAD);
-    return(NULL);
-}
-static void des_fileoutput(int no ATTRIBUTE_UNUSED, const char *val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlParserCtxtPtr 3
-static xmlParserCtxtPtr gen_xmlParserCtxtPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewParserCtxt());
-    if (no == 1) return(xmlCreateMemoryParserCtxt("<doc/>", 6));
-    return(NULL);
-}
-static void des_xmlParserCtxtPtr(int no ATTRIBUTE_UNUSED, xmlParserCtxtPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL)
-        xmlFreeParserCtxt(val);
-}
-
-#if defined(LIBXML_SAX1_ENABLED) || \
-    defined(LIBXML_VALID_ENABLED) || \
-    defined(LIBXML_PUSH_ENABLED)
-#define gen_nb_xmlSAXHandlerPtr 2
-static xmlSAXHandlerPtr gen_xmlSAXHandlerPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    (void) no;
-#ifdef LIBXML_SAX1_ENABLED
-    if (no == 0) return((xmlSAXHandlerPtr) &xmlDefaultSAXHandler);
-#endif
-    return(NULL);
-}
-static void des_xmlSAXHandlerPtr(int no ATTRIBUTE_UNUSED, xmlSAXHandlerPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-#endif
-
-#define gen_nb_xmlValidCtxtPtr 2
-static xmlValidCtxtPtr gen_xmlValidCtxtPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    (void) no;
-#ifdef LIBXML_VALID_ENABLED
-    if (no == 0) return(xmlNewValidCtxt());
-#endif
-    return(NULL);
-}
-static void des_xmlValidCtxtPtr(int no ATTRIBUTE_UNUSED, xmlValidCtxtPtr val, int nr ATTRIBUTE_UNUSED) {
-    (void) val;
-#ifdef LIBXML_VALID_ENABLED
-    if (val != NULL)
-        xmlFreeValidCtxt(val);
-#endif
-}
-
-#define gen_nb_xmlParserInputBufferPtr 8
-
-static xmlParserInputBufferPtr gen_xmlParserInputBufferPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlParserInputBufferCreateFilename("missing.xml", XML_CHAR_ENCODING_NONE));
-    if (no == 1) return(xmlParserInputBufferCreateFilename("<foo/>", XML_CHAR_ENCODING_NONE));
-    if (no == 2) return(xmlParserInputBufferCreateFilename("test/ent2", XML_CHAR_ENCODING_NONE));
-    if (no == 3) return(xmlParserInputBufferCreateFilename("test/valid/REC-xml-19980210.xml", XML_CHAR_ENCODING_NONE));
-    if (no == 4) return(xmlParserInputBufferCreateFilename("test/valid/dtds/xhtml1-strict.dtd", XML_CHAR_ENCODING_NONE));
-    if (no == 5) return(xmlParserInputBufferCreateFilename(REMOTE1GOOD, XML_CHAR_ENCODING_NONE));
-    if (no == 6) return(xmlParserInputBufferCreateFilename(REMOTE1BAD, XML_CHAR_ENCODING_NONE));
-    return(NULL);
-}
-static void des_xmlParserInputBufferPtr(int no ATTRIBUTE_UNUSED, xmlParserInputBufferPtr val, int nr ATTRIBUTE_UNUSED) {
-    xmlFreeParserInputBuffer(val);
-}
-
-#define gen_nb_xmlDocPtr 4
-static xmlDocPtr gen_xmlDocPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewDoc(BAD_CAST "1.0"));
-    if (no == 1) return(xmlReadMemory("<foo/>", 6, "test", NULL, 0));
-    if (no == 2) return(xmlReadMemory("<!DOCTYPE foo []> <foo/>", 24, "test", NULL, 0));
-    return(NULL);
-}
-static void des_xmlDocPtr(int no ATTRIBUTE_UNUSED, xmlDocPtr val, int nr ATTRIBUTE_UNUSED) {
-    if ((val != NULL) && (val != api_doc) && (val->doc != api_doc))
-        xmlFreeDoc(val);
-}
-
-#define gen_nb_xmlAttrPtr 2
-static xmlAttrPtr gen_xmlAttrPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(get_api_attr());
-    return(NULL);
-}
-static void des_xmlAttrPtr(int no, xmlAttrPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) free_api_doc();
-}
-
-#define gen_nb_xmlDictPtr 2
-static xmlDictPtr gen_xmlDictPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlDictCreate());
-    return(NULL);
-}
-static void des_xmlDictPtr(int no ATTRIBUTE_UNUSED, xmlDictPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL)
-        xmlDictFree(val);
-}
-
-#define gen_nb_xmlNodePtr 3
-static xmlNodePtr gen_xmlNodePtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewPI(BAD_CAST "test", NULL));
-    if (no == 1) return(get_api_root());
-    return(NULL);
-/*     if (no == 2) return((xmlNodePtr) get_api_doc()); */
-}
-static void des_xmlNodePtr(int no, xmlNodePtr val, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) {
-        free_api_doc();
-    } else if (val != NULL) {
-        xmlUnlinkNode(val);
-        xmlFreeNode(val);
-    }
-}
-
-#define gen_nb_xmlDtdPtr 3
-static xmlDtdPtr gen_xmlDtdPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0)
-        return(xmlNewDtd(NULL, BAD_CAST "dtd", BAD_CAST"foo", BAD_CAST"bar"));
-    if (no == 1) return(get_api_dtd());
-    return(NULL);
-}
-static void des_xmlDtdPtr(int no, xmlDtdPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) free_api_doc();
-    else if (val != NULL) {
-        xmlUnlinkNode((xmlNodePtr) val);
-        xmlFreeNode((xmlNodePtr) val);
-    }
-}
-
-#define gen_nb_xmlNsPtr 2
-static xmlNsPtr gen_xmlNsPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(get_api_ns());
-    return(NULL);
-}
-static void des_xmlNsPtr(int no, xmlNsPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) free_api_doc();
-}
-
-#define gen_nb_xmlNodePtr_in 3
-static xmlNodePtr gen_xmlNodePtr_in(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewPI(BAD_CAST "test", NULL));
-    if (no == 0) return(xmlNewText(BAD_CAST "text"));
-    return(NULL);
-}
-static void des_xmlNodePtr_in(int no ATTRIBUTE_UNUSED, xmlNodePtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#ifdef LIBXML_WRITER_ENABLED
-#define gen_nb_xmlTextWriterPtr 2
-static xmlTextWriterPtr gen_xmlTextWriterPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewTextWriterFilename("test.out", 0));
-    return(NULL);
-}
-static void des_xmlTextWriterPtr(int no ATTRIBUTE_UNUSED, xmlTextWriterPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) xmlFreeTextWriter(val);
-}
-#endif
-
-#ifdef LIBXML_READER_ENABLED
-#define gen_nb_xmlTextReaderPtr 4
-static xmlTextReaderPtr gen_xmlTextReaderPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewTextReaderFilename("test/ent2"));
-    if (no == 1) return(xmlNewTextReaderFilename("test/valid/REC-xml-19980210.xml"));
-    if (no == 2) return(xmlNewTextReaderFilename("test/valid/dtds/xhtml1-strict.dtd"));
-    return(NULL);
-}
-static void des_xmlTextReaderPtr(int no ATTRIBUTE_UNUSED, xmlTextReaderPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) xmlFreeTextReader(val);
-}
-#endif
-
-#define gen_nb_xmlBufferPtr 3
-static const xmlChar *static_buf_content = (xmlChar *)"a static buffer";
-static xmlBufferPtr gen_xmlBufferPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlBufferCreate());
-    if (no == 1) return(xmlBufferCreateStatic((void *)static_buf_content, 13));
-    return(NULL);
-}
-static void des_xmlBufferPtr(int no ATTRIBUTE_UNUSED, xmlBufferPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-        xmlBufferFree(val);
-    }
-}
-
-#define gen_nb_xmlListPtr 2
-static xmlListPtr gen_xmlListPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlListCreate(NULL, NULL));
-    return(NULL);
-}
-static void des_xmlListPtr(int no ATTRIBUTE_UNUSED, xmlListPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-        xmlListDelete(val);
-    }
-}
-
-#define gen_nb_xmlHashTablePtr 2
-static xmlHashTablePtr gen_xmlHashTablePtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlHashCreate(10));
-    return(NULL);
-}
-static void des_xmlHashTablePtr(int no ATTRIBUTE_UNUSED, xmlHashTablePtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-        xmlHashFree(val, NULL);
-    }
-}
-
-#include <libxml/xpathInternals.h>
-
-#ifdef LIBXML_XPATH_ENABLED
-#define gen_nb_xmlXPathObjectPtr 5
-static xmlXPathObjectPtr gen_xmlXPathObjectPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlXPathNewString(BAD_CAST "string object"));
-    if (no == 1) return(xmlXPathNewFloat(1.1));
-    if (no == 2) return(xmlXPathNewBoolean(1));
-    if (no == 3) return(xmlXPathNewNodeSet(NULL));
-    return(NULL);
-}
-static void des_xmlXPathObjectPtr(int no ATTRIBUTE_UNUSED, xmlXPathObjectPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-        xmlXPathFreeObject(val);
-    }
-}
-#endif
-
-#ifdef LIBXML_OUTPUT_ENABLED
-#define gen_nb_xmlOutputBufferPtr 2
-static xmlOutputBufferPtr gen_xmlOutputBufferPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlOutputBufferCreateFilename("test.out", NULL, 0));
-    return(NULL);
-}
-static void des_xmlOutputBufferPtr(int no ATTRIBUTE_UNUSED, xmlOutputBufferPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-        xmlOutputBufferClose(val);
-    }
-}
-#endif
-
-#ifdef LIBXML_HTTP_ENABLED
-#define gen_nb_xmlNanoHTTPCtxtPtr 1
-static void *gen_xmlNanoHTTPCtxtPtr(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNanoHTTPOpen(REMOTE1GOOD, NULL));
-    if (no == 1) return(xmlNanoHTTPOpen(REMOTE2GOOD, NULL));
-    if (no == 2) return(xmlNanoHTTPOpen(REMOTE1BAD, NULL));
-    return(NULL);
-}
-static void des_xmlNanoHTTPCtxtPtr(int no ATTRIBUTE_UNUSED, void *val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL) {
-	xmlNanoHTTPClose(val);
-    }
-}
-#endif
-
-#define gen_nb_xmlCharEncoding 4
-static xmlCharEncoding gen_xmlCharEncoding(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(XML_CHAR_ENCODING_UTF8);
-    if (no == 1) return(XML_CHAR_ENCODING_NONE);
-    if (no == 2) return(XML_CHAR_ENCODING_8859_1);
-    return(XML_CHAR_ENCODING_ERROR);
-}
-static void des_xmlCharEncoding(int no ATTRIBUTE_UNUSED, xmlCharEncoding val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_EXPR_ENABLED)
-
-#define gen_nb_xmlExpCtxtPtr 1
-static xmlExpCtxtPtr gen_xmlExpCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlExpCtxtPtr(int no ATTRIBUTE_UNUSED, xmlExpCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlExpNodePtr 1
-static xmlExpNodePtr gen_xmlExpNodePtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlExpNodePtr(int no ATTRIBUTE_UNUSED, xmlExpNodePtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#endif
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-#define gen_nb_xmlSchemaPtr 1
-static xmlSchemaPtr gen_xmlSchemaPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlSchemaPtr(int no ATTRIBUTE_UNUSED, xmlSchemaPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlSchemaValidCtxtPtr 1
-static xmlSchemaValidCtxtPtr gen_xmlSchemaValidCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlSchemaValidCtxtPtr(int no ATTRIBUTE_UNUSED, xmlSchemaValidCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#endif /* LIBXML_SCHEMAS_ENABLED */
-
-#define gen_nb_xmlHashDeallocator 2
-static void
-test_xmlHashDeallocator(void *payload ATTRIBUTE_UNUSED,
-                        const xmlChar *name ATTRIBUTE_UNUSED) {
-}
-
-static xmlHashDeallocator gen_xmlHashDeallocator(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(test_xmlHashDeallocator);
-    return(NULL);
-}
-static void des_xmlHashDeallocator(int no ATTRIBUTE_UNUSED, xmlHashDeallocator val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-
-static void desret_int(int val ATTRIBUTE_UNUSED) {
-}
-static void desret_xmlChar(xmlChar val ATTRIBUTE_UNUSED) {
-}
-static void desret_long(long val ATTRIBUTE_UNUSED) {
-}
-static void desret_unsigned_long(unsigned long val ATTRIBUTE_UNUSED) {
-}
-#if defined(LIBXML_XPATH_ENABLED)
-static void desret_double(double val ATTRIBUTE_UNUSED) {
-}
-#endif
-static void desret_xmlCharEncoding(xmlCharEncoding val ATTRIBUTE_UNUSED) {
-}
-#if 0
-static void desret_const_void_ptr(void *val ATTRIBUTE_UNUSED) {
-}
-#endif
-static void desret_void_ptr(void *val ATTRIBUTE_UNUSED) {
-}
-static void desret_const_char_ptr(const char *val ATTRIBUTE_UNUSED) {
-}
-static void desret_const_xmlChar_ptr(const xmlChar *val ATTRIBUTE_UNUSED) {
-}
-static void desret_xmlChar_ptr(xmlChar *val) {
-    if (val != NULL)
-	xmlFree(val);
-}
-static void desret_xmlDocPtr(xmlDocPtr val) {
-    if (val != api_doc)
-	xmlFreeDoc(val);
-}
-static void desret_xmlDictPtr(xmlDictPtr val) {
-    xmlDictFree(val);
-}
-#ifdef LIBXML_OUTPUT_ENABLED
-static void desret_xmlOutputBufferPtr(xmlOutputBufferPtr val) {
-    xmlOutputBufferClose(val);
-}
-#endif
-#ifdef LIBXML_READER_ENABLED
-static void desret_xmlTextReaderPtr(xmlTextReaderPtr val) {
-    xmlFreeTextReader(val);
-}
-#endif
-static void desret_xmlNodePtr(xmlNodePtr val) {
-    if ((val != NULL) && (val != api_root) && (val != (xmlNodePtr) api_doc)) {
-	xmlUnlinkNode(val);
-	xmlFreeNode(val);
-    }
-}
-static void desret_xmlAttrPtr(xmlAttrPtr val) {
-    if (val != NULL) {
-	xmlUnlinkNode((xmlNodePtr) val);
-	xmlFreeNode((xmlNodePtr) val);
-    }
-}
-static void desret_xmlEntityPtr(xmlEntityPtr val) {
-    if (val != NULL) {
-	xmlUnlinkNode((xmlNodePtr) val);
-	xmlFreeNode((xmlNodePtr) val);
-    }
-}
-static void desret_xmlElementPtr(xmlElementPtr val) {
-    if (val != NULL) {
-	xmlUnlinkNode((xmlNodePtr) val);
-    }
-}
-static void desret_xmlAttributePtr(xmlAttributePtr val) {
-    if (val != NULL) {
-	xmlUnlinkNode((xmlNodePtr) val);
-    }
-}
-static void desret_xmlNsPtr(xmlNsPtr val ATTRIBUTE_UNUSED) {
-}
-static void desret_xmlDtdPtr(xmlDtdPtr val) {
-    desret_xmlNodePtr((xmlNodePtr)val);
-}
-#ifdef LIBXML_XPATH_ENABLED
-static void desret_xmlXPathObjectPtr(xmlXPathObjectPtr val) {
-    xmlXPathFreeObject(val);
-}
-static void desret_xmlNodeSetPtr(xmlNodeSetPtr val) {
-    xmlXPathFreeNodeSet(val);
-}
-#endif
-static void desret_xmlParserCtxtPtr(xmlParserCtxtPtr val) {
-    xmlFreeParserCtxt(val);
-}
-static void desret_xmlParserInputBufferPtr(xmlParserInputBufferPtr val) {
-    xmlFreeParserInputBuffer(val);
-}
-static void desret_xmlParserInputPtr(xmlParserInputPtr val) {
-    xmlFreeInputStream(val);
-}
-#ifdef LIBXML_WRITER_ENABLED
-static void desret_xmlTextWriterPtr(xmlTextWriterPtr val) {
-    xmlFreeTextWriter(val);
-}
-#endif
-static void desret_xmlBufferPtr(xmlBufferPtr val) {
-    xmlBufferFree(val);
-}
-#ifdef LIBXML_SCHEMAS_ENABLED
-static void desret_xmlSchemaParserCtxtPtr(xmlSchemaParserCtxtPtr val) {
-    xmlSchemaFreeParserCtxt(val);
-}
-static void desret_xmlSchemaTypePtr(xmlSchemaTypePtr val ATTRIBUTE_UNUSED) {
-}
-#endif
-#ifdef LIBXML_RELAXNG_ENABLED
-static void desret_xmlRelaxNGParserCtxtPtr(xmlRelaxNGParserCtxtPtr val) {
-    xmlRelaxNGFreeParserCtxt(val);
-}
-#endif
-#ifdef LIBXML_HTML_ENABLED
-static void desret_const_htmlEntityDesc_ptr(const htmlEntityDesc * val ATTRIBUTE_UNUSED) {
-}
-#endif
-#ifdef LIBXML_HTTP_ENABLED
-static void desret_xmlNanoHTTPCtxtPtr(void *val) {
-    xmlNanoHTTPClose(val);
-}
-#endif
-/* cut and pasted from autogenerated to avoid troubles */
-#define gen_nb_const_xmlChar_ptr_ptr 1
-static const xmlChar **
-gen_const_xmlChar_ptr_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_const_xmlChar_ptr_ptr(int no ATTRIBUTE_UNUSED, const xmlChar ** val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_unsigned_char_ptr 1
-static unsigned char * gen_unsigned_char_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_unsigned_char_ptr(int no ATTRIBUTE_UNUSED, unsigned char * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_const_unsigned_char_ptr 1
-static const unsigned char *
-gen_const_unsigned_char_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_const_unsigned_char_ptr(int no ATTRIBUTE_UNUSED, const unsigned char * val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#ifdef LIBXML_HTML_ENABLED
-#define gen_nb_htmlDocPtr 3
-static htmlDocPtr gen_htmlDocPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(htmlNewDoc(NULL, NULL));
-    if (no == 1) return(htmlReadMemory("<html/>", 7, "test", NULL, 0));
-    return(NULL);
-}
-static void des_htmlDocPtr(int no ATTRIBUTE_UNUSED, htmlDocPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if ((val != NULL) && (val != api_doc) && (val->doc != api_doc))
-        xmlFreeDoc(val);
-}
-static void desret_htmlDocPtr(htmlDocPtr val) {
-    if ((val != NULL) && (val != api_doc) && (val->doc != api_doc))
-        xmlFreeDoc(val);
-}
-#define gen_nb_htmlParserCtxtPtr 3
-static htmlParserCtxtPtr gen_htmlParserCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if (no == 0) return(xmlNewParserCtxt());
-    if (no == 1) return(htmlCreateMemoryParserCtxt("<html/>", 7));
-    return(NULL);
-}
-static void des_htmlParserCtxtPtr(int no ATTRIBUTE_UNUSED, htmlParserCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL)
-        htmlFreeParserCtxt(val);
-}
-static void desret_htmlParserCtxtPtr(htmlParserCtxtPtr val) {
-    if (val != NULL)
-        htmlFreeParserCtxt(val);
-}
-#endif
-
-#ifdef LIBXML_XPATH_ENABLED
-#define gen_nb_xmlNodeSetPtr 1
-static xmlNodeSetPtr gen_xmlNodeSetPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlNodeSetPtr(int no ATTRIBUTE_UNUSED, xmlNodeSetPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-#endif
-
-#ifdef LIBXML_PATTERN_ENABLED
-#define gen_nb_xmlPatternPtr 1
-static xmlPatternPtr gen_xmlPatternPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlPatternPtr(int no ATTRIBUTE_UNUSED, xmlPatternPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-#endif
-
-#define gen_nb_xmlElementContentPtr 1
-static xmlElementContentPtr gen_xmlElementContentPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlElementContentPtr(int no ATTRIBUTE_UNUSED, xmlElementContentPtr val, int nr ATTRIBUTE_UNUSED) {
-    if (val != NULL)
-        xmlFreeElementContent(val);
-}
-static void desret_xmlElementContentPtr(xmlElementContentPtr val) {
-    if (val != NULL)
-        xmlFreeElementContent(val);
-}
-
-#define gen_nb_xmlParserNodeInfoSeqPtr 1
-static xmlParserNodeInfoSeqPtr gen_xmlParserNodeInfoSeqPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlParserNodeInfoSeqPtr(int no ATTRIBUTE_UNUSED, xmlParserNodeInfoSeqPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_const_xmlParserNodeInfo_ptr(const xmlParserNodeInfo *val ATTRIBUTE_UNUSED) {
-}
-
-#if defined(LIBXML_MODULES_ENABLED) || defined(LIBXML_READER_ENABLED) || \
-    defined(LIBXML_SCHEMAS_ENABLED)
-#define gen_nb_void_ptr_ptr 1
-static void ** gen_void_ptr_ptr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_void_ptr_ptr(int no ATTRIBUTE_UNUSED, void ** val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-#endif
-
-#define gen_nb_xmlParserInputPtr 1
-static xmlParserInputPtr gen_xmlParserInputPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-    return(NULL);
-}
-static void des_xmlParserInputPtr(int no ATTRIBUTE_UNUSED, xmlParserInputPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-/************************************************************************
- *									*
- *   WARNING: end of the manually maintained part of the test code	*
- *            do not remove or alter the CUT HERE line			*
- *									*
- ************************************************************************/
-
-/* CUT HERE: everything below that line is generated */
-#ifdef LIBXML_HTML_ENABLED
-static void desret_htmlStatus(htmlStatus val ATTRIBUTE_UNUSED) {
-}
-
-#endif
-
-#define gen_nb_xmlAttributeDefault 4
-static xmlAttributeDefault gen_xmlAttributeDefault(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_ATTRIBUTE_FIXED);
-    if (no == 2) return(XML_ATTRIBUTE_IMPLIED);
-    if (no == 3) return(XML_ATTRIBUTE_NONE);
-    if (no == 4) return(XML_ATTRIBUTE_REQUIRED);
-    return(0);
-}
-
-static void des_xmlAttributeDefault(int no ATTRIBUTE_UNUSED, xmlAttributeDefault val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlAttributeType 4
-static xmlAttributeType gen_xmlAttributeType(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_ATTRIBUTE_CDATA);
-    if (no == 2) return(XML_ATTRIBUTE_ENTITIES);
-    if (no == 3) return(XML_ATTRIBUTE_ENTITY);
-    if (no == 4) return(XML_ATTRIBUTE_ENUMERATION);
-    return(0);
-}
-
-static void des_xmlAttributeType(int no ATTRIBUTE_UNUSED, xmlAttributeType val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlBufferAllocationScheme 4
-static xmlBufferAllocationScheme gen_xmlBufferAllocationScheme(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_BUFFER_ALLOC_BOUNDED);
-    if (no == 2) return(XML_BUFFER_ALLOC_DOUBLEIT);
-    if (no == 3) return(XML_BUFFER_ALLOC_EXACT);
-    if (no == 4) return(XML_BUFFER_ALLOC_HYBRID);
-    return(0);
-}
-
-static void des_xmlBufferAllocationScheme(int no ATTRIBUTE_UNUSED, xmlBufferAllocationScheme val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_xmlBufferAllocationScheme(xmlBufferAllocationScheme val ATTRIBUTE_UNUSED) {
-}
-
-#ifdef LIBXML_CATALOG_ENABLED
-#define gen_nb_xmlCatalogAllow 4
-static xmlCatalogAllow gen_xmlCatalogAllow(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_CATA_ALLOW_ALL);
-    if (no == 2) return(XML_CATA_ALLOW_DOCUMENT);
-    if (no == 3) return(XML_CATA_ALLOW_GLOBAL);
-    if (no == 4) return(XML_CATA_ALLOW_NONE);
-    return(0);
-}
-
-static void des_xmlCatalogAllow(int no ATTRIBUTE_UNUSED, xmlCatalogAllow val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_xmlCatalogAllow(xmlCatalogAllow val ATTRIBUTE_UNUSED) {
-}
-
-#endif
-
-#ifdef LIBXML_CATALOG_ENABLED
-#define gen_nb_xmlCatalogPrefer 3
-static xmlCatalogPrefer gen_xmlCatalogPrefer(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_CATA_PREFER_NONE);
-    if (no == 2) return(XML_CATA_PREFER_PUBLIC);
-    if (no == 3) return(XML_CATA_PREFER_SYSTEM);
-    return(0);
-}
-
-static void des_xmlCatalogPrefer(int no ATTRIBUTE_UNUSED, xmlCatalogPrefer val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_xmlCatalogPrefer(xmlCatalogPrefer val ATTRIBUTE_UNUSED) {
-}
-
-#endif
-
-#define gen_nb_xmlElementContentType 4
-static xmlElementContentType gen_xmlElementContentType(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_ELEMENT_CONTENT_ELEMENT);
-    if (no == 2) return(XML_ELEMENT_CONTENT_OR);
-    if (no == 3) return(XML_ELEMENT_CONTENT_PCDATA);
-    if (no == 4) return(XML_ELEMENT_CONTENT_SEQ);
-    return(0);
-}
-
-static void des_xmlElementContentType(int no ATTRIBUTE_UNUSED, xmlElementContentType val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlElementTypeVal 4
-static xmlElementTypeVal gen_xmlElementTypeVal(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_ELEMENT_TYPE_ANY);
-    if (no == 2) return(XML_ELEMENT_TYPE_ELEMENT);
-    if (no == 3) return(XML_ELEMENT_TYPE_EMPTY);
-    if (no == 4) return(XML_ELEMENT_TYPE_MIXED);
-    return(0);
-}
-
-static void des_xmlElementTypeVal(int no ATTRIBUTE_UNUSED, xmlElementTypeVal val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlFeature 4
-static xmlFeature gen_xmlFeature(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_WITH_AUTOMATA);
-    if (no == 2) return(XML_WITH_C14N);
-    if (no == 3) return(XML_WITH_CATALOG);
-    if (no == 4) return(XML_WITH_DEBUG);
-    return(0);
-}
-
-static void des_xmlFeature(int no ATTRIBUTE_UNUSED, xmlFeature val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_xmlParserErrors(xmlParserErrors val ATTRIBUTE_UNUSED) {
-}
-
-#define gen_nb_xmlParserInputFlags 4
-static xmlParserInputFlags gen_xmlParserInputFlags(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_INPUT_BUF_STATIC);
-    if (no == 2) return(XML_INPUT_BUF_ZERO_TERMINATED);
-    if (no == 3) return(XML_INPUT_NETWORK);
-    if (no == 4) return(XML_INPUT_UNZIP);
-    return(0);
-}
-
-static void des_xmlParserInputFlags(int no ATTRIBUTE_UNUSED, xmlParserInputFlags val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-static void desret_xmlParserStatus(xmlParserStatus val ATTRIBUTE_UNUSED) {
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-#define gen_nb_xmlSchemaValType 4
-static xmlSchemaValType gen_xmlSchemaValType(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_SCHEMAS_ANYSIMPLETYPE);
-    if (no == 2) return(XML_SCHEMAS_ANYTYPE);
-    if (no == 3) return(XML_SCHEMAS_ANYURI);
-    if (no == 4) return(XML_SCHEMAS_BASE64BINARY);
-    return(0);
-}
-
-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
-#define gen_nb_xmlSchemaWhitespaceValueType 4
-static xmlSchemaWhitespaceValueType gen_xmlSchemaWhitespaceValueType(int no, int nr ATTRIBUTE_UNUSED) {
-    if (no == 1) return(XML_SCHEMA_WHITESPACE_COLLAPSE);
-    if (no == 2) return(XML_SCHEMA_WHITESPACE_PRESERVE);
-    if (no == 3) return(XML_SCHEMA_WHITESPACE_REPLACE);
-    if (no == 4) return(XML_SCHEMA_WHITESPACE_UNKNOWN);
-    return(0);
-}
-
-static void des_xmlSchemaWhitespaceValueType(int no ATTRIBUTE_UNUSED, xmlSchemaWhitespaceValueType val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-#endif
-
 #include <libxml/HTMLparser.h>
 #include <libxml/HTMLtree.h>
-#include <libxml/SAX2.h>
 #include <libxml/c14n.h>
 #include <libxml/catalog.h>
-#include <libxml/chvalid.h>
 #include <libxml/debugXML.h>
-#include <libxml/dict.h>
-#include <libxml/encoding.h>
-#include <libxml/entities.h>
-#include <libxml/hash.h>
-#include <libxml/list.h>
-#include <libxml/nanohttp.h>
-#include <libxml/parser.h>
 #include <libxml/parserInternals.h>
 #include <libxml/pattern.h>
 #include <libxml/relaxng.h>
-#include <libxml/schemasInternals.h>
 #include <libxml/schematron.h>
-#include <libxml/tree.h>
 #include <libxml/uri.h>
-#include <libxml/valid.h>
 #include <libxml/xinclude.h>
-#include <libxml/xmlIO.h>
-#include <libxml/xmlautomata.h>
-#include <libxml/xmlerror.h>
+#include <libxml/xlink.h>
 #include <libxml/xmlmodule.h>
 #include <libxml/xmlreader.h>
-#include <libxml/xmlregexp.h>
 #include <libxml/xmlsave.h>
 #include <libxml/xmlschemas.h>
 #include <libxml/xmlschemastypes.h>
-#include <libxml/xmlstring.h>
 #include <libxml/xmlwriter.h>
-#include <libxml/xpath.h>
 #include <libxml/xpathInternals.h>
 #include <libxml/xpointer.h>
-static int test_HTMLparser(void);
-static int test_HTMLtree(void);
-static int test_SAX2(void);
-static int test_c14n(void);
-static int test_catalog(void);
-static int test_chvalid(void);
-static int test_debugXML(void);
-static int test_dict(void);
-static int test_encoding(void);
-static int test_entities(void);
-static int test_hash(void);
-static int test_list(void);
-static int test_nanohttp(void);
-static int test_parser(void);
-static int test_parserInternals(void);
-static int test_pattern(void);
-static int test_relaxng(void);
-static int test_schemasInternals(void);
-static int test_schematron(void);
-static int test_tree(void);
-static int test_uri(void);
-static int test_valid(void);
-static int test_xinclude(void);
-static int test_xmlIO(void);
-static int test_xmlautomata(void);
-static int test_xmlerror(void);
-static int test_xmlmodule(void);
-static int test_xmlreader(void);
-static int test_xmlregexp(void);
-static int test_xmlsave(void);
-static int test_xmlschemas(void);
-static int test_xmlschemastypes(void);
-static int test_xmlstring(void);
-static int test_xmlwriter(void);
-static int test_xpath(void);
-static int test_xpathInternals(void);
-static int test_xpointer(void);
-
-/**
- * testlibxml2:
- *
- * Main entry point of the tester for the full libxml2 module,
- * it calls all the tester entry point for each module.
- *
- * Returns the number of error found
- */
-static int
-testlibxml2(void)
-{
-    int test_ret = 0;
-
-    test_ret += test_HTMLparser();
-    test_ret += test_HTMLtree();
-    test_ret += test_SAX2();
-    test_ret += test_c14n();
-    test_ret += test_catalog();
-    test_ret += test_chvalid();
-    test_ret += test_debugXML();
-    test_ret += test_dict();
-    test_ret += test_encoding();
-    test_ret += test_entities();
-    test_ret += test_hash();
-    test_ret += test_list();
-    test_ret += test_nanohttp();
-    test_ret += test_parser();
-    test_ret += test_parserInternals();
-    test_ret += test_pattern();
-    test_ret += test_relaxng();
-    test_ret += test_schemasInternals();
-    test_ret += test_schematron();
-    test_ret += test_tree();
-    test_ret += test_uri();
-    test_ret += test_valid();
-    test_ret += test_xinclude();
-    test_ret += test_xmlIO();
-    test_ret += test_xmlautomata();
-    test_ret += test_xmlerror();
-    test_ret += test_xmlmodule();
-    test_ret += test_xmlreader();
-    test_ret += test_xmlregexp();
-    test_ret += test_xmlsave();
-    test_ret += test_xmlschemas();
-    test_ret += test_xmlschemastypes();
-    test_ret += test_xmlstring();
-    test_ret += test_xmlwriter();
-    test_ret += test_xpath();
-    test_ret += test_xpathInternals();
-    test_ret += test_xpointer();
-
-    printf("Total: %d functions, %d tests, %d errors\n",
-           function_tests, call_tests, test_ret);
-    return(test_ret);
-}
-
-#ifdef LIBXML_HTML_ENABLED
-
-#define gen_nb_const_htmlElemDesc_ptr 1
-#define gen_const_htmlElemDesc_ptr(no, nr) NULL
-#define des_const_htmlElemDesc_ptr(no, val, nr)
-#endif
-
-
-static int
-test_htmlAttrAllowed(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlStatus ret_val;
-    const htmlElemDesc * elt; /* HTML element */
-    int n_elt;
-    const xmlChar * attr; /* HTML attribute */
-    int n_attr;
-    int legacy; /* whether to allow deprecated attributes */
-    int n_legacy;
-
-    for (n_elt = 0;n_elt < gen_nb_const_htmlElemDesc_ptr;n_elt++) {
-    for (n_attr = 0;n_attr < gen_nb_const_xmlChar_ptr;n_attr++) {
-    for (n_legacy = 0;n_legacy < gen_nb_int;n_legacy++) {
-        mem_base = xmlMemBlocks();
-        elt = gen_const_htmlElemDesc_ptr(n_elt, 0);
-        attr = gen_const_xmlChar_ptr(n_attr, 1);
-        legacy = gen_int(n_legacy, 2);
-
-        ret_val = htmlAttrAllowed(elt, attr, legacy);
-        desret_htmlStatus(ret_val);
-        call_tests++;
-        des_const_htmlElemDesc_ptr(n_elt, elt, 0);
-        des_const_xmlChar_ptr(n_attr, attr, 1);
-        des_int(n_legacy, legacy, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlAttrAllowed",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_elt);
-            printf(" %d", n_attr);
-            printf(" %d", n_legacy);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_HTML_ENABLED
-
-#define gen_nb_htmlNodePtr 1
-#define gen_htmlNodePtr(no, nr) NULL
-#define des_htmlNodePtr(no, val, nr)
-#endif
-
-
-static int
-test_htmlAutoCloseTag(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlDocPtr doc; /* the HTML document */
-    int n_doc;
-    const xmlChar * name; /* The tag name */
-    int n_name;
-    htmlNodePtr elem; /* the HTML element */
-    int n_elem;
-
-    for (n_doc = 0;n_doc < gen_nb_htmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_elem = 0;n_elem < gen_nb_htmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_htmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        elem = gen_htmlNodePtr(n_elem, 2);
-
-        ret_val = htmlAutoCloseTag(doc, name, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_htmlNodePtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlAutoCloseTag",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCreateFileParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-    const char * encoding; /* optional encoding */
-    int n_encoding;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-
-        ret_val = htmlCreateFileParserCtxt(filename, encoding);
-        desret_htmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCreateFileParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCreateMemoryParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ret_val;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = htmlCreateMemoryParserCtxt(buffer, size);
-        desret_htmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCreateMemoryParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_HTML_ENABLED
-
-#define gen_nb_htmlSAXHandlerPtr 1
-#define gen_htmlSAXHandlerPtr(no, nr) NULL
-#define des_htmlSAXHandlerPtr(no, val, nr)
-#endif
-
-
-static int
-test_htmlCreatePushParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ret_val;
-    htmlSAXHandlerPtr sax; /* a SAX handler (optional) */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks (optional) */
-    int n_user_data;
-    const char * chunk; /* a pointer to an array of chars (optional) */
-    int n_chunk;
-    int size; /* number of chars in the array */
-    int n_size;
-    const char * filename; /* only used for error reporting (optional) */
-    int n_filename;
-    xmlCharEncoding enc; /* encoding (deprecated, pass XML_CHAR_ENCODING_NONE) */
-    int n_enc;
-
-    for (n_sax = 0;n_sax < gen_nb_htmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_chunk = 0;n_chunk < gen_nb_const_char_ptr;n_chunk++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_htmlSAXHandlerPtr(n_sax, 0);
-        user_data = gen_userdata(n_user_data, 1);
-        chunk = gen_const_char_ptr(n_chunk, 2);
-        size = gen_int(n_size, 3);
-        filename = gen_fileoutput(n_filename, 4);
-        enc = gen_xmlCharEncoding(n_enc, 5);
-        if ((chunk != NULL) &&
-            (size > xmlStrlen(BAD_CAST chunk)))
-            size = 0;
-
-        ret_val = htmlCreatePushParserCtxt(sax, user_data, chunk, size, filename, enc);
-        desret_htmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_htmlSAXHandlerPtr(n_sax, sax, 0);
-        des_userdata(n_user_data, user_data, 1);
-        des_const_char_ptr(n_chunk, chunk, 2);
-        des_int(n_size, size, 3);
-        des_fileoutput(n_filename, filename, 4);
-        des_xmlCharEncoding(n_enc, enc, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCreatePushParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_chunk);
-            printf(" %d", n_size);
-            printf(" %d", n_filename);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtParseDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    xmlParserInputPtr input; /* parser input */
-    int n_input;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-
-        ret_val = htmlCtxtParseDocument(ctxt, input);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtParseDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtReadDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    const xmlChar * str; /* a pointer to a zero terminated string */
-    int n_str;
-    const char * URL; /* only used for error reporting (optional) */
-    int n_URL;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of htmlParserOptions */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_URL = 0;n_URL < gen_nb_const_char_ptr;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        URL = gen_const_char_ptr(n_URL, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_int(n_options, 4);
-
-        ret_val = htmlCtxtReadDoc(ctxt, str, URL, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_const_char_ptr(n_URL, URL, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_int(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtReadDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_str);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtReadFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    htmlDocPtr ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of htmlParserOptions */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        filename = gen_filepath(n_filename, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_int(n_options, 3);
-
-        ret_val = htmlCtxtReadFile(ctxt, filename, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_filepath(n_filename, filename, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_options, options, 3);
-        xmlResetLastError();
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtReadMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * URL; /* only used for error reporting (optional) */
-    int n_URL;
-    const char * encoding; /* the document encoding (optinal) */
-    int n_encoding;
-    int options; /* a combination of htmlParserOptions */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_URL = 0;n_URL < gen_nb_const_char_ptr;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        buffer = gen_const_char_ptr(n_buffer, 1);
-        size = gen_int(n_size, 2);
-        URL = gen_const_char_ptr(n_URL, 3);
-        encoding = gen_const_char_ptr(n_encoding, 4);
-        options = gen_int(n_options, 5);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = htmlCtxtReadMemory(ctxt, buffer, size, URL, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_buffer, buffer, 1);
-        des_int(n_size, size, 2);
-        des_const_char_ptr(n_URL, URL, 3);
-        des_const_char_ptr(n_encoding, encoding, 4);
-        des_int(n_options, options, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtReadMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtReset(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-
-        htmlCtxtReset(ctxt);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtReset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtSetOptions(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    int options; /* a bitmask of xmlParserOption values */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        options = gen_int(n_options, 1);
-
-        ret_val = htmlCtxtSetOptions(ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtSetOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlCtxtUseOptions(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    int options; /* a combination of htmlParserOption(s) */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        options = gen_int(n_options, 1);
-
-        ret_val = htmlCtxtUseOptions(ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlCtxtUseOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlElementAllowedHere(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    const htmlElemDesc * parent; /* HTML parent element */
-    int n_parent;
-    const xmlChar * elt; /* HTML element */
-    int n_elt;
-
-    for (n_parent = 0;n_parent < gen_nb_const_htmlElemDesc_ptr;n_parent++) {
-    for (n_elt = 0;n_elt < gen_nb_const_xmlChar_ptr;n_elt++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_const_htmlElemDesc_ptr(n_parent, 0);
-        elt = gen_const_xmlChar_ptr(n_elt, 1);
-
-        ret_val = htmlElementAllowedHere(parent, elt);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_htmlElemDesc_ptr(n_parent, parent, 0);
-        des_const_xmlChar_ptr(n_elt, elt, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlElementAllowedHere",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_elt);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlElementStatusHere(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlStatus ret_val;
-    const htmlElemDesc * parent; /* HTML parent element */
-    int n_parent;
-    const htmlElemDesc * elt; /* HTML element */
-    int n_elt;
-
-    for (n_parent = 0;n_parent < gen_nb_const_htmlElemDesc_ptr;n_parent++) {
-    for (n_elt = 0;n_elt < gen_nb_const_htmlElemDesc_ptr;n_elt++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_const_htmlElemDesc_ptr(n_parent, 0);
-        elt = gen_const_htmlElemDesc_ptr(n_elt, 1);
-
-        ret_val = htmlElementStatusHere(parent, elt);
-        desret_htmlStatus(ret_val);
-        call_tests++;
-        des_const_htmlElemDesc_ptr(n_parent, parent, 0);
-        des_const_htmlElemDesc_ptr(n_elt, elt, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlElementStatusHere",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_elt);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlEncodeEntities(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    unsigned char * out; /* a pointer to an array of bytes to store the result */
-    int n_out;
-    int * outlen; /* the length of @out */
-    int n_outlen;
-    const unsigned char * in; /* a pointer to an array of UTF-8 chars */
-    int n_in;
-    int * inlen; /* the length of @in */
-    int n_inlen;
-    int quoteChar; /* the quote character to escape (' or ") or zero. */
-    int n_quoteChar;
-
-    for (n_out = 0;n_out < gen_nb_unsigned_char_ptr;n_out++) {
-    for (n_outlen = 0;n_outlen < gen_nb_int_ptr;n_outlen++) {
-    for (n_in = 0;n_in < gen_nb_const_unsigned_char_ptr;n_in++) {
-    for (n_inlen = 0;n_inlen < gen_nb_int_ptr;n_inlen++) {
-    for (n_quoteChar = 0;n_quoteChar < gen_nb_int;n_quoteChar++) {
-        mem_base = xmlMemBlocks();
-        out = gen_unsigned_char_ptr(n_out, 0);
-        outlen = gen_int_ptr(n_outlen, 1);
-        in = gen_const_unsigned_char_ptr(n_in, 2);
-        inlen = gen_int_ptr(n_inlen, 3);
-        quoteChar = gen_int(n_quoteChar, 4);
-
-        ret_val = htmlEncodeEntities(out, outlen, in, inlen, quoteChar);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_char_ptr(n_out, out, 0);
-        des_int_ptr(n_outlen, outlen, 1);
-        des_const_unsigned_char_ptr(n_in, in, 2);
-        des_int_ptr(n_inlen, inlen, 3);
-        des_int(n_quoteChar, quoteChar, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlEncodeEntities",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_outlen);
-            printf(" %d", n_in);
-            printf(" %d", n_inlen);
-            printf(" %d", n_quoteChar);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlEntityLookup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    const htmlEntityDesc * ret_val;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-
-        ret_val = htmlEntityLookup(name);
-        desret_const_htmlEntityDesc_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlEntityLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlEntityValueLookup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    const htmlEntityDesc * ret_val;
-    unsigned int value; /* the entity's unicode value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_unsigned_int;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_unsigned_int(n_value, 0);
-
-        ret_val = htmlEntityValueLookup(value);
-        desret_const_htmlEntityDesc_ptr(ret_val);
-        call_tests++;
-        des_unsigned_int(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlEntityValueLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlHandleOmittedElem(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    int val; /* int 0 or 1 */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = htmlHandleOmittedElem(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlHandleOmittedElem",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlInitAutoClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        htmlInitAutoClose();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlInitAutoClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlIsAutoClosed(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlDocPtr doc; /* the HTML document */
-    int n_doc;
-    htmlNodePtr elem; /* the HTML element */
-    int n_elem;
-
-    for (n_doc = 0;n_doc < gen_nb_htmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_htmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_htmlDocPtr(n_doc, 0);
-        elem = gen_htmlNodePtr(n_elem, 1);
-
-        ret_val = htmlIsAutoClosed(doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlDocPtr(n_doc, doc, 0);
-        des_htmlNodePtr(n_elem, elem, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlIsAutoClosed",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlIsScriptAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * name; /* an attribute name */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-
-        ret_val = htmlIsScriptAttribute(name);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlIsScriptAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNewParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = htmlNewParserCtxt();
-        desret_htmlParserCtxtPtr(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNewParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_HTML_ENABLED
-
-#define gen_nb_const_htmlSAXHandler_ptr 1
-#define gen_const_htmlSAXHandler_ptr(no, nr) NULL
-#define des_const_htmlSAXHandler_ptr(no, val, nr)
-#endif
-
-
-static int
-test_htmlNewSAXParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ret_val;
-    const htmlSAXHandler * sax; /* SAX handler */
-    int n_sax;
-    void * userData; /* user data */
-    int n_userData;
-
-    for (n_sax = 0;n_sax < gen_nb_const_htmlSAXHandler_ptr;n_sax++) {
-    for (n_userData = 0;n_userData < gen_nb_userdata;n_userData++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_const_htmlSAXHandler_ptr(n_sax, 0);
-        userData = gen_userdata(n_userData, 1);
-
-        ret_val = htmlNewSAXParserCtxt(sax, userData);
-        desret_htmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_htmlSAXHandler_ptr(n_sax, sax, 0);
-        des_userdata(n_userData, userData, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNewSAXParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_userData);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeStatus(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlStatus ret_val;
-    htmlNodePtr node; /* an htmlNodePtr in a tree */
-    int n_node;
-    int legacy; /* whether to allow deprecated elements (YES is faster here for Element nodes) */
-    int n_legacy;
-
-    for (n_node = 0;n_node < gen_nb_htmlNodePtr;n_node++) {
-    for (n_legacy = 0;n_legacy < gen_nb_int;n_legacy++) {
-        mem_base = xmlMemBlocks();
-        node = gen_htmlNodePtr(n_node, 0);
-        legacy = gen_int(n_legacy, 1);
-
-        ret_val = htmlNodeStatus(node, legacy);
-        desret_htmlStatus(ret_val);
-        call_tests++;
-        des_htmlNodePtr(n_node, node, 0);
-        des_int(n_legacy, legacy, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeStatus",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_legacy);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseCharRef(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = htmlParseCharRef(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseCharRef",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseChunk(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    const char * chunk; /* chunk of memory */
-    int n_chunk;
-    int size; /* size of chunk in bytes */
-    int n_size;
-    int terminate; /* last chunk indicator */
-    int n_terminate;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_chunk = 0;n_chunk < gen_nb_const_char_ptr;n_chunk++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_terminate = 0;n_terminate < gen_nb_int;n_terminate++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        chunk = gen_const_char_ptr(n_chunk, 1);
-        size = gen_int(n_size, 2);
-        terminate = gen_int(n_terminate, 3);
-        if ((chunk != NULL) &&
-            (size > xmlStrlen(BAD_CAST chunk)))
-            size = 0;
-
-        ret_val = htmlParseChunk(ctxt, chunk, size, terminate);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_chunk, chunk, 1);
-        des_int(n_size, size, 2);
-        des_int(n_terminate, terminate, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseChunk",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_chunk);
-            printf(" %d", n_size);
-            printf(" %d", n_terminate);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const xmlChar * cur; /* a pointer to an array of xmlChar */
-    int n_cur;
-    const char * encoding; /* the encoding (optional) */
-    int n_encoding;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-
-        ret_val = htmlParseDoc(cur, encoding);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = htmlParseDocument(ctxt);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-
-        htmlParseElement(ctxt);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseEntityRef(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    const htmlEntityDesc * ret_val;
-    htmlParserCtxtPtr ctxt; /* an HTML parser context */
-    int n_ctxt;
-    const xmlChar ** str; /* location to store the entity name */
-    int n_str;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_htmlParserCtxtPtr;n_ctxt++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_htmlParserCtxtPtr(n_ctxt, 0);
-        str = gen_const_xmlChar_ptr_ptr(n_str, 1);
-
-        ret_val = htmlParseEntityRef(ctxt, str);
-        desret_const_htmlEntityDesc_ptr(ret_val);
-        call_tests++;
-        des_htmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlParseEntityRef",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlParseFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    htmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-    const char * encoding; /* encoding (optional) */
-    int n_encoding;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        filename = gen_filepath(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-
-        ret_val = htmlParseFile(filename, encoding);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        xmlResetLastError();
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlReadDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const xmlChar * str; /* a pointer to a zero terminated string */
-    int n_str;
-    const char * url; /* only used for error reporting (optoinal) */
-    int n_url;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of htmlParserOptions */
-    int n_options;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_url = 0;n_url < gen_nb_const_char_ptr;n_url++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        url = gen_const_char_ptr(n_url, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_int(n_options, 3);
-
-        ret_val = htmlReadDoc(str, url, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_const_char_ptr(n_url, url, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlReadDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_url);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlReadFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of htmlParserOptions */
-    int n_options;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-        options = gen_int(n_options, 2);
-
-        ret_val = htmlReadFile(filename, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        des_int(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlReadFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlReadMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * url; /* only used for error reporting (optional) */
-    int n_url;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of htmlParserOption(s) */
-    int n_options;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_url = 0;n_url < gen_nb_const_char_ptr;n_url++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        url = gen_const_char_ptr(n_url, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_int(n_options, 4);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = htmlReadMemory(buffer, size, url, encoding, options);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        des_const_char_ptr(n_url, url, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_int(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlReadMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_url);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSAXParseDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const xmlChar * cur; /* a pointer to an array of xmlChar */
-    int n_cur;
-    const char * encoding; /* a free form C string describing the HTML document encoding, or NULL */
-    int n_encoding;
-    htmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    void * userData; /* if using SAX, this pointer will be provided on callbacks. */
-    int n_userData;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_sax = 0;n_sax < gen_nb_htmlSAXHandlerPtr;n_sax++) {
-    for (n_userData = 0;n_userData < gen_nb_userdata;n_userData++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-        sax = gen_htmlSAXHandlerPtr(n_sax, 2);
-        userData = gen_userdata(n_userData, 3);
-
-        ret_val = htmlSAXParseDoc(cur, encoding, sax, userData);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        des_htmlSAXHandlerPtr(n_sax, sax, 2);
-        des_userdata(n_userData, userData, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSAXParseDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_sax);
-            printf(" %d", n_userData);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSAXParseFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-    const char * encoding; /* encoding (optional) */
-    int n_encoding;
-    htmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    void * userData; /* if using SAX, this pointer will be provided on callbacks. */
-    int n_userData;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_sax = 0;n_sax < gen_nb_htmlSAXHandlerPtr;n_sax++) {
-    for (n_userData = 0;n_userData < gen_nb_userdata;n_userData++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-        sax = gen_htmlSAXHandlerPtr(n_sax, 2);
-        userData = gen_userdata(n_userData, 3);
-
-        ret_val = htmlSAXParseFile(filename, encoding, sax, userData);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        des_htmlSAXHandlerPtr(n_sax, sax, 2);
-        des_userdata(n_userData, userData, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSAXParseFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_sax);
-            printf(" %d", n_userData);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlTagLookup(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_htmlUTF8ToHtml(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    unsigned char * out; /* a pointer to an array of bytes to store the result */
-    int n_out;
-    int * outlen; /* the length of @out */
-    int n_outlen;
-    const unsigned char * in; /* a pointer to an array of UTF-8 chars */
-    int n_in;
-    int * inlen; /* the length of @in */
-    int n_inlen;
-
-    for (n_out = 0;n_out < gen_nb_unsigned_char_ptr;n_out++) {
-    for (n_outlen = 0;n_outlen < gen_nb_int_ptr;n_outlen++) {
-    for (n_in = 0;n_in < gen_nb_const_unsigned_char_ptr;n_in++) {
-    for (n_inlen = 0;n_inlen < gen_nb_int_ptr;n_inlen++) {
-        mem_base = xmlMemBlocks();
-        out = gen_unsigned_char_ptr(n_out, 0);
-        outlen = gen_int_ptr(n_outlen, 1);
-        in = gen_const_unsigned_char_ptr(n_in, 2);
-        inlen = gen_int_ptr(n_inlen, 3);
-
-        ret_val = htmlUTF8ToHtml(out, outlen, in, inlen);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_char_ptr(n_out, out, 0);
-        des_int_ptr(n_outlen, outlen, 1);
-        des_const_unsigned_char_ptr(n_in, in, 2);
-        des_int_ptr(n_inlen, inlen, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlUTF8ToHtml",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_outlen);
-            printf(" %d", n_in);
-            printf(" %d", n_inlen);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_HTMLparser(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing HTMLparser : 37 of 43 functions ...\n");
-    test_ret += test_htmlAttrAllowed();
-    test_ret += test_htmlAutoCloseTag();
-    test_ret += test_htmlCreateFileParserCtxt();
-    test_ret += test_htmlCreateMemoryParserCtxt();
-    test_ret += test_htmlCreatePushParserCtxt();
-    test_ret += test_htmlCtxtParseDocument();
-    test_ret += test_htmlCtxtReadDoc();
-    test_ret += test_htmlCtxtReadFile();
-    test_ret += test_htmlCtxtReadMemory();
-    test_ret += test_htmlCtxtReset();
-    test_ret += test_htmlCtxtSetOptions();
-    test_ret += test_htmlCtxtUseOptions();
-    test_ret += test_htmlElementAllowedHere();
-    test_ret += test_htmlElementStatusHere();
-    test_ret += test_htmlEncodeEntities();
-    test_ret += test_htmlEntityLookup();
-    test_ret += test_htmlEntityValueLookup();
-    test_ret += test_htmlHandleOmittedElem();
-    test_ret += test_htmlInitAutoClose();
-    test_ret += test_htmlIsAutoClosed();
-    test_ret += test_htmlIsScriptAttribute();
-    test_ret += test_htmlNewParserCtxt();
-    test_ret += test_htmlNewSAXParserCtxt();
-    test_ret += test_htmlNodeStatus();
-    test_ret += test_htmlParseCharRef();
-    test_ret += test_htmlParseChunk();
-    test_ret += test_htmlParseDoc();
-    test_ret += test_htmlParseDocument();
-    test_ret += test_htmlParseElement();
-    test_ret += test_htmlParseEntityRef();
-    test_ret += test_htmlParseFile();
-    test_ret += test_htmlReadDoc();
-    test_ret += test_htmlReadFile();
-    test_ret += test_htmlReadMemory();
-    test_ret += test_htmlSAXParseDoc();
-    test_ret += test_htmlSAXParseFile();
-    test_ret += test_htmlTagLookup();
-    test_ret += test_htmlUTF8ToHtml();
-
-    if (test_ret != 0)
-	printf("Module HTMLparser: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_htmlDocContentDumpFormatOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr buf; /* the HTML buffer output */
-    int n_buf;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the encoding string (unused) */
-    int n_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        format = gen_int(n_format, 3);
-
-        htmlDocContentDumpFormatOutput(buf, cur, encoding, format);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDocContentDumpFormatOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlDocContentDumpOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr buf; /* the HTML buffer output */
-    int n_buf;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the encoding string (unused) */
-    int n_encoding;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-
-        htmlDocContentDumpOutput(buf, cur, encoding);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDocContentDumpOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlDocDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    FILE * f; /* the FILE* */
-    int n_f;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-
-    for (n_f = 0;n_f < gen_nb_FILE_ptr;n_f++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        f = gen_FILE_ptr(n_f, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-
-        ret_val = htmlDocDump(f, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_f, f, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDocDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_f);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlChar_ptr_ptr 1
-#define gen_xmlChar_ptr_ptr(no, nr) NULL
-#define des_xmlChar_ptr_ptr(no, val, nr)
-
-static int
-test_htmlDocDumpMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    xmlChar ** mem; /* OUT: the memory pointer */
-    int n_mem;
-    int * size; /* OUT: the memory length */
-    int n_size;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_mem = 0;n_mem < gen_nb_xmlChar_ptr_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int_ptr;n_size++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlDocPtr(n_cur, 0);
-        mem = gen_xmlChar_ptr_ptr(n_mem, 1);
-        size = gen_int_ptr(n_size, 2);
-
-        htmlDocDumpMemory(cur, mem, size);
-        call_tests++;
-        des_xmlDocPtr(n_cur, cur, 0);
-        des_xmlChar_ptr_ptr(n_mem, mem, 1);
-        des_int_ptr(n_size, size, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDocDumpMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlDocDumpMemoryFormat(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    xmlChar ** mem; /* OUT: the memory pointer */
-    int n_mem;
-    int * size; /* OUT: the memory length */
-    int n_size;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_mem = 0;n_mem < gen_nb_xmlChar_ptr_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int_ptr;n_size++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlDocPtr(n_cur, 0);
-        mem = gen_xmlChar_ptr_ptr(n_mem, 1);
-        size = gen_int_ptr(n_size, 2);
-        format = gen_int(n_format, 3);
-
-        htmlDocDumpMemoryFormat(cur, mem, size, format);
-        call_tests++;
-        des_xmlDocPtr(n_cur, cur, 0);
-        des_xmlChar_ptr_ptr(n_mem, mem, 1);
-        des_int_ptr(n_size, size, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDocDumpMemoryFormat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlGetMetaEncoding(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    htmlDocPtr doc; /* the document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_htmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_htmlDocPtr(n_doc, 0);
-
-        ret_val = htmlGetMetaEncoding(doc);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_htmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlGetMetaEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlIsBooleanAttr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * name; /* the name of the attribute to check */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-
-        ret_val = htmlIsBooleanAttr(name);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlIsBooleanAttr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNewDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const xmlChar * URI; /* URI for the dtd, or NULL */
-    int n_URI;
-    const xmlChar * ExternalID; /* the external ID of the DTD, or NULL */
-    int n_ExternalID;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 1);
-
-        ret_val = htmlNewDoc(URI, ExternalID);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNewDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_ExternalID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNewDocNoDtD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    htmlDocPtr ret_val;
-    const xmlChar * URI; /* URI for the dtd, or NULL */
-    int n_URI;
-    const xmlChar * ExternalID; /* the external ID of the DTD, or NULL */
-    int n_ExternalID;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 1);
-
-        ret_val = htmlNewDocNoDtD(URI, ExternalID);
-        desret_htmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNewDocNoDtD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_ExternalID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the HTML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-
-        ret_val = htmlNodeDump(buf, doc, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeDumpFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    FILE * out; /* the FILE pointer */
-    int n_out;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-
-    for (n_out = 0;n_out < gen_nb_FILE_ptr;n_out++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        out = gen_FILE_ptr(n_out, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-
-        htmlNodeDumpFile(out, doc, cur);
-        call_tests++;
-        des_FILE_ptr(n_out, out, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeDumpFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeDumpFileFormat(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    FILE * out; /* the FILE pointer */
-    int n_out;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-    const char * encoding; /* the document encoding */
-    int n_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_out = 0;n_out < gen_nb_FILE_ptr;n_out++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        out = gen_FILE_ptr(n_out, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        format = gen_int(n_format, 4);
-
-        ret_val = htmlNodeDumpFileFormat(out, doc, cur, encoding, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_out, out, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_int(n_format, format, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeDumpFileFormat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeDumpFormatOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr buf; /* the HTML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-    const char * encoding; /* the encoding string (unused) */
-    int n_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        format = gen_int(n_format, 4);
-
-        htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_int(n_format, format, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeDumpFormatOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlNodeDumpOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr buf; /* the HTML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-    const char * encoding; /* the encoding string (unused) */
-    int n_encoding;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-
-        htmlNodeDumpOutput(buf, doc, cur, encoding);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlNodeDumpOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSaveFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename (or URL) */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-
-        ret_val = htmlSaveFile(filename, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSaveFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSaveFileEnc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the document encoding */
-    int n_encoding;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-
-        ret_val = htmlSaveFileEnc(filename, cur, encoding);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSaveFileEnc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSaveFileFormat(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the document encoding */
-    int n_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        format = gen_int(n_format, 3);
-
-        ret_val = htmlSaveFileFormat(filename, cur, encoding, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSaveFileFormat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_htmlSetMetaEncoding(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    int ret_val;
-    htmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * encoding; /* the encoding string */
-    int n_encoding;
-
-    for (n_doc = 0;n_doc < gen_nb_htmlDocPtr;n_doc++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_xmlChar_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_htmlDocPtr(n_doc, 0);
-        encoding = gen_const_xmlChar_ptr(n_encoding, 1);
-
-        ret_val = htmlSetMetaEncoding(doc, encoding);
-        desret_int(ret_val);
-        call_tests++;
-        des_htmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_encoding, encoding, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlSetMetaEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_HTMLtree(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing HTMLtree : 18 of 18 functions ...\n");
-    test_ret += test_htmlDocContentDumpFormatOutput();
-    test_ret += test_htmlDocContentDumpOutput();
-    test_ret += test_htmlDocDump();
-    test_ret += test_htmlDocDumpMemory();
-    test_ret += test_htmlDocDumpMemoryFormat();
-    test_ret += test_htmlGetMetaEncoding();
-    test_ret += test_htmlIsBooleanAttr();
-    test_ret += test_htmlNewDoc();
-    test_ret += test_htmlNewDocNoDtD();
-    test_ret += test_htmlNodeDump();
-    test_ret += test_htmlNodeDumpFile();
-    test_ret += test_htmlNodeDumpFileFormat();
-    test_ret += test_htmlNodeDumpFormatOutput();
-    test_ret += test_htmlNodeDumpOutput();
-    test_ret += test_htmlSaveFile();
-    test_ret += test_htmlSaveFileEnc();
-    test_ret += test_htmlSaveFileFormat();
-    test_ret += test_htmlSetMetaEncoding();
-
-    if (test_ret != 0)
-	printf("Module HTMLtree: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_htmlDefaultSAXHandlerInit(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-#ifdef LIBXML_HTML_ENABLED
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        htmlDefaultSAXHandlerInit();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in htmlDefaultSAXHandlerInit",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDefaultSAXHandlerInit(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlDefaultSAXHandlerInit();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDefaultSAXHandlerInit",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlEnumerationPtr 1
-#define gen_xmlEnumerationPtr(no, nr) NULL
-#define des_xmlEnumerationPtr(no, val, nr)
-
-static int
-test_xmlSAX2AttributeDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * elem; /* the name of the element */
-    int n_elem;
-    const xmlChar * fullname; /* the attribute name */
-    int n_fullname;
-    int type; /* the attribute type */
-    int n_type;
-    int def; /* the type of default value */
-    int n_def;
-    const xmlChar * defaultValue; /* the attribute default value */
-    int n_defaultValue;
-    xmlEnumerationPtr tree; /* the tree of enumerated value set */
-    int n_tree;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_elem = 0;n_elem < gen_nb_const_xmlChar_ptr;n_elem++) {
-    for (n_fullname = 0;n_fullname < gen_nb_const_xmlChar_ptr;n_fullname++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_def = 0;n_def < gen_nb_int;n_def++) {
-    for (n_defaultValue = 0;n_defaultValue < gen_nb_const_xmlChar_ptr;n_defaultValue++) {
-    for (n_tree = 0;n_tree < gen_nb_xmlEnumerationPtr;n_tree++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        elem = gen_const_xmlChar_ptr(n_elem, 1);
-        fullname = gen_const_xmlChar_ptr(n_fullname, 2);
-        type = gen_int(n_type, 3);
-        def = gen_int(n_def, 4);
-        defaultValue = gen_const_xmlChar_ptr(n_defaultValue, 5);
-        tree = gen_xmlEnumerationPtr(n_tree, 6);
-
-        xmlSAX2AttributeDecl(ctx, elem, fullname, type, def, defaultValue, tree);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_elem, elem, 1);
-        des_const_xmlChar_ptr(n_fullname, fullname, 2);
-        des_int(n_type, type, 3);
-        des_int(n_def, def, 4);
-        des_const_xmlChar_ptr(n_defaultValue, defaultValue, 5);
-        des_xmlEnumerationPtr(n_tree, tree, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2AttributeDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_elem);
-            printf(" %d", n_fullname);
-            printf(" %d", n_type);
-            printf(" %d", n_def);
-            printf(" %d", n_defaultValue);
-            printf(" %d", n_tree);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2CDataBlock(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * value; /* The pcdata content */
-    int n_value;
-    int len; /* the block length */
-    int n_len;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        len = gen_int(n_len, 2);
-        if ((value != NULL) &&
-            (len > xmlStrlen(BAD_CAST value)))
-            len = 0;
-
-        xmlSAX2CDataBlock(ctx, value, len);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2CDataBlock",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_value);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2Characters(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * ch; /* a xmlChar string */
-    int n_ch;
-    int len; /* the number of xmlChar */
-    int n_len;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_ch = 0;n_ch < gen_nb_const_xmlChar_ptr;n_ch++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        ch = gen_const_xmlChar_ptr(n_ch, 1);
-        len = gen_int(n_len, 2);
-        if ((ch != NULL) &&
-            (len > xmlStrlen(BAD_CAST ch)))
-            len = 0;
-
-        xmlSAX2Characters(ctx, ch, len);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_ch, ch, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2Characters",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_ch);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2Comment(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * value; /* the xmlSAX2Comment content */
-    int n_value;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-
-        xmlSAX2Comment(ctx, value);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2Comment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2ElementDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* the element name */
-    int n_name;
-    int type; /* the element type */
-    int n_type;
-    xmlElementContentPtr content; /* the element value tree */
-    int n_content;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_content = 0;n_content < gen_nb_xmlElementContentPtr;n_content++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_int(n_type, 2);
-        content = gen_xmlElementContentPtr(n_content, 3);
-
-        xmlSAX2ElementDecl(ctx, name, type, content);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_type, type, 2);
-        des_xmlElementContentPtr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2ElementDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2EndDocument(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        xmlSAX2EndDocument(ctx);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2EndDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2EndElement(void) {
-    int test_ret = 0;
-
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The element name */
-    int n_name;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        xmlSAX2EndElement(ctx, name);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2EndElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2EndElementNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * localname; /* the local name of the element */
-    int n_localname;
-    const xmlChar * prefix; /* the element namespace prefix if available */
-    int n_prefix;
-    const xmlChar * URI; /* the element namespace name if available */
-    int n_URI;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_localname = 0;n_localname < gen_nb_const_xmlChar_ptr;n_localname++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        localname = gen_const_xmlChar_ptr(n_localname, 1);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 2);
-        URI = gen_const_xmlChar_ptr(n_URI, 3);
-
-        xmlSAX2EndElementNs(ctx, localname, prefix, URI);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_localname, localname, 1);
-        des_const_xmlChar_ptr(n_prefix, prefix, 2);
-        des_const_xmlChar_ptr(n_URI, URI, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2EndElementNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_localname);
-            printf(" %d", n_prefix);
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2EntityDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    int type; /* the entity type */
-    int n_type;
-    const xmlChar * publicId; /* The public ID of the entity */
-    int n_publicId;
-    const xmlChar * systemId; /* The system ID of the entity */
-    int n_systemId;
-    xmlChar * content; /* the entity value (without processing). */
-    int n_content;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_publicId = 0;n_publicId < gen_nb_const_xmlChar_ptr;n_publicId++) {
-    for (n_systemId = 0;n_systemId < gen_nb_const_xmlChar_ptr;n_systemId++) {
-    for (n_content = 0;n_content < gen_nb_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_int(n_type, 2);
-        publicId = gen_const_xmlChar_ptr(n_publicId, 3);
-        systemId = gen_const_xmlChar_ptr(n_systemId, 4);
-        content = gen_xmlChar_ptr(n_content, 5);
-
-        xmlSAX2EntityDecl(ctx, name, type, publicId, systemId, content);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_type, type, 2);
-        des_const_xmlChar_ptr(n_publicId, publicId, 3);
-        des_const_xmlChar_ptr(n_systemId, systemId, 4);
-        des_xmlChar_ptr(n_content, content, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2EntityDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_publicId);
-            printf(" %d", n_systemId);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2ExternalSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* the root element name */
-    int n_name;
-    const xmlChar * ExternalID; /* the external ID */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the SYSTEM ID (e.g. filename or URL) */
-    int n_SystemID;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 2);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 3);
-
-        xmlSAX2ExternalSubset(ctx, name, ExternalID, SystemID);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 2);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2ExternalSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetColumnNumber(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2GetColumnNumber(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetColumnNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The entity name */
-    int n_name;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlSAX2GetEntity(ctx, name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetLineNumber(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2GetLineNumber(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetLineNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetParameterEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The entity name */
-    int n_name;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlSAX2GetParameterEntity(ctx, name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetParameterEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetPublicId(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2GetPublicId(ctx);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetPublicId",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2GetSystemId(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2GetSystemId(ctx);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2GetSystemId",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2HasExternalSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2HasExternalSubset(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2HasExternalSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2HasInternalSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2HasInternalSubset(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2HasInternalSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2IgnorableWhitespace(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * ch; /* a xmlChar string */
-    int n_ch;
-    int len; /* the number of xmlChar */
-    int n_len;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_ch = 0;n_ch < gen_nb_const_xmlChar_ptr;n_ch++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        ch = gen_const_xmlChar_ptr(n_ch, 1);
-        len = gen_int(n_len, 2);
-        if ((ch != NULL) &&
-            (len > xmlStrlen(BAD_CAST ch)))
-            len = 0;
-
-        xmlSAX2IgnorableWhitespace(ctx, ch, len);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_ch, ch, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2IgnorableWhitespace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_ch);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlSAXHandler_ptr 1
-#define gen_xmlSAXHandler_ptr(no, nr) NULL
-#define des_xmlSAXHandler_ptr(no, val, nr)
-
-static int
-test_xmlSAX2InitDefaultSAXHandler(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlSAXHandler * hdlr; /* the SAX handler */
-    int n_hdlr;
-    int warning; /* flag if non-zero sets the handler warning procedure */
-    int n_warning;
-
-    for (n_hdlr = 0;n_hdlr < gen_nb_xmlSAXHandler_ptr;n_hdlr++) {
-    for (n_warning = 0;n_warning < gen_nb_int;n_warning++) {
-        mem_base = xmlMemBlocks();
-        hdlr = gen_xmlSAXHandler_ptr(n_hdlr, 0);
-        warning = gen_int(n_warning, 1);
-
-        xmlSAX2InitDefaultSAXHandler(hdlr, warning);
-        call_tests++;
-        des_xmlSAXHandler_ptr(n_hdlr, hdlr, 0);
-        des_int(n_warning, warning, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2InitDefaultSAXHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hdlr);
-            printf(" %d", n_warning);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2InitHtmlDefaultSAXHandler(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTML_ENABLED)
-    int mem_base;
-    xmlSAXHandler * hdlr; /* the SAX handler */
-    int n_hdlr;
-
-    for (n_hdlr = 0;n_hdlr < gen_nb_xmlSAXHandler_ptr;n_hdlr++) {
-        mem_base = xmlMemBlocks();
-        hdlr = gen_xmlSAXHandler_ptr(n_hdlr, 0);
-
-        xmlSAX2InitHtmlDefaultSAXHandler(hdlr);
-        call_tests++;
-        des_xmlSAXHandler_ptr(n_hdlr, hdlr, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2InitHtmlDefaultSAXHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hdlr);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2InternalSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* the root element name */
-    int n_name;
-    const xmlChar * ExternalID; /* the external ID */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the SYSTEM ID (e.g. filename or URL) */
-    int n_SystemID;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 2);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 3);
-
-        xmlSAX2InternalSubset(ctx, name, ExternalID, SystemID);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 2);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2InternalSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2IsStandalone(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        ret_val = xmlSAX2IsStandalone(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2IsStandalone",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2NotationDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The name of the notation */
-    int n_name;
-    const xmlChar * publicId; /* The public ID of the entity */
-    int n_publicId;
-    const xmlChar * systemId; /* The system ID of the entity */
-    int n_systemId;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_publicId = 0;n_publicId < gen_nb_const_xmlChar_ptr;n_publicId++) {
-    for (n_systemId = 0;n_systemId < gen_nb_const_xmlChar_ptr;n_systemId++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        publicId = gen_const_xmlChar_ptr(n_publicId, 2);
-        systemId = gen_const_xmlChar_ptr(n_systemId, 3);
-
-        xmlSAX2NotationDecl(ctx, name, publicId, systemId);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_publicId, publicId, 2);
-        des_const_xmlChar_ptr(n_systemId, systemId, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2NotationDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_publicId);
-            printf(" %d", n_systemId);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2ProcessingInstruction(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * target; /* the target name */
-    int n_target;
-    const xmlChar * data; /* the PI data's */
-    int n_data;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_target = 0;n_target < gen_nb_const_xmlChar_ptr;n_target++) {
-    for (n_data = 0;n_data < gen_nb_const_xmlChar_ptr;n_data++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        target = gen_const_xmlChar_ptr(n_target, 1);
-        data = gen_const_xmlChar_ptr(n_data, 2);
-
-        xmlSAX2ProcessingInstruction(ctx, target, data);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_target, target, 1);
-        des_const_xmlChar_ptr(n_data, data, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2ProcessingInstruction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_target);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2Reference(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The entity name */
-    int n_name;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        xmlSAX2Reference(ctx, name);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2Reference",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2ResolveEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * publicId; /* The public ID of the entity */
-    int n_publicId;
-    const xmlChar * systemId; /* The system ID of the entity */
-    int n_systemId;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_publicId = 0;n_publicId < gen_nb_const_xmlChar_ptr;n_publicId++) {
-    for (n_systemId = 0;n_systemId < gen_nb_const_xmlChar_ptr;n_systemId++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        publicId = gen_const_xmlChar_ptr(n_publicId, 1);
-        systemId = gen_const_xmlChar_ptr(n_systemId, 2);
-
-        ret_val = xmlSAX2ResolveEntity(ctx, publicId, systemId);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_publicId, publicId, 1);
-        des_const_xmlChar_ptr(n_systemId, systemId, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2ResolveEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_publicId);
-            printf(" %d", n_systemId);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlSAXLocatorPtr 1
-#define gen_xmlSAXLocatorPtr(no, nr) NULL
-#define des_xmlSAXLocatorPtr(no, val, nr)
-
-static int
-test_xmlSAX2SetDocumentLocator(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    xmlSAXLocatorPtr loc; /* A SAX Locator */
-    int n_loc;
 
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_loc = 0;n_loc < gen_nb_xmlSAXLocatorPtr;n_loc++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        loc = gen_xmlSAXLocatorPtr(n_loc, 1);
-
-        xmlSAX2SetDocumentLocator(ctx, loc);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_xmlSAXLocatorPtr(n_loc, loc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2SetDocumentLocator",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_loc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2StartDocument(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        xmlSAX2StartDocument(ctx);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2StartDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2StartElement(void) {
-    int test_ret = 0;
-
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * fullname; /* The element name, including namespace prefix */
-    int n_fullname;
-    const xmlChar ** atts; /* An array of name/value attributes pairs, NULL terminated */
-    int n_atts;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_fullname = 0;n_fullname < gen_nb_const_xmlChar_ptr;n_fullname++) {
-    for (n_atts = 0;n_atts < gen_nb_const_xmlChar_ptr_ptr;n_atts++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        fullname = gen_const_xmlChar_ptr(n_fullname, 1);
-        atts = gen_const_xmlChar_ptr_ptr(n_atts, 2);
-
-        xmlSAX2StartElement(ctx, fullname, atts);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_fullname, fullname, 1);
-        des_const_xmlChar_ptr_ptr(n_atts, atts, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2StartElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_fullname);
-            printf(" %d", n_atts);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2StartElementNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * localname; /* the local name of the element */
-    int n_localname;
-    const xmlChar * prefix; /* the element namespace prefix if available */
-    int n_prefix;
-    const xmlChar * URI; /* the element namespace name if available */
-    int n_URI;
-    int nb_namespaces; /* number of namespace definitions on that node */
-    int n_nb_namespaces;
-    const xmlChar ** namespaces; /* pointer to the array of prefix/URI pairs namespace definitions */
-    int n_namespaces;
-    int nb_attributes; /* the number of attributes on that node */
-    int n_nb_attributes;
-    int nb_defaulted; /* the number of defaulted attributes. */
-    int n_nb_defaulted;
-    const xmlChar ** attributes; /* pointer to the array of (localname/prefix/URI/value/end) attribute values. */
-    int n_attributes;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_localname = 0;n_localname < gen_nb_const_xmlChar_ptr;n_localname++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_nb_namespaces = 0;n_nb_namespaces < gen_nb_int;n_nb_namespaces++) {
-    for (n_namespaces = 0;n_namespaces < gen_nb_const_xmlChar_ptr_ptr;n_namespaces++) {
-    for (n_nb_attributes = 0;n_nb_attributes < gen_nb_int;n_nb_attributes++) {
-    for (n_nb_defaulted = 0;n_nb_defaulted < gen_nb_int;n_nb_defaulted++) {
-    for (n_attributes = 0;n_attributes < gen_nb_const_xmlChar_ptr_ptr;n_attributes++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        localname = gen_const_xmlChar_ptr(n_localname, 1);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 2);
-        URI = gen_const_xmlChar_ptr(n_URI, 3);
-        nb_namespaces = gen_int(n_nb_namespaces, 4);
-        namespaces = gen_const_xmlChar_ptr_ptr(n_namespaces, 5);
-        nb_attributes = gen_int(n_nb_attributes, 6);
-        nb_defaulted = gen_int(n_nb_defaulted, 7);
-        attributes = gen_const_xmlChar_ptr_ptr(n_attributes, 8);
-
-        xmlSAX2StartElementNs(ctx, localname, prefix, URI, nb_namespaces, namespaces, nb_attributes, nb_defaulted, attributes);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_localname, localname, 1);
-        des_const_xmlChar_ptr(n_prefix, prefix, 2);
-        des_const_xmlChar_ptr(n_URI, URI, 3);
-        des_int(n_nb_namespaces, nb_namespaces, 4);
-        des_const_xmlChar_ptr_ptr(n_namespaces, namespaces, 5);
-        des_int(n_nb_attributes, nb_attributes, 6);
-        des_int(n_nb_defaulted, nb_defaulted, 7);
-        des_const_xmlChar_ptr_ptr(n_attributes, attributes, 8);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2StartElementNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_localname);
-            printf(" %d", n_prefix);
-            printf(" %d", n_URI);
-            printf(" %d", n_nb_namespaces);
-            printf(" %d", n_namespaces);
-            printf(" %d", n_nb_attributes);
-            printf(" %d", n_nb_defaulted);
-            printf(" %d", n_attributes);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAX2UnparsedEntityDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* the user data (XML parser context) */
-    int n_ctx;
-    const xmlChar * name; /* The name of the entity */
-    int n_name;
-    const xmlChar * publicId; /* The public ID of the entity */
-    int n_publicId;
-    const xmlChar * systemId; /* The system ID of the entity */
-    int n_systemId;
-    const xmlChar * notationName; /* the name of the notation */
-    int n_notationName;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_publicId = 0;n_publicId < gen_nb_const_xmlChar_ptr;n_publicId++) {
-    for (n_systemId = 0;n_systemId < gen_nb_const_xmlChar_ptr;n_systemId++) {
-    for (n_notationName = 0;n_notationName < gen_nb_const_xmlChar_ptr;n_notationName++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        publicId = gen_const_xmlChar_ptr(n_publicId, 2);
-        systemId = gen_const_xmlChar_ptr(n_systemId, 3);
-        notationName = gen_const_xmlChar_ptr(n_notationName, 4);
-
-        xmlSAX2UnparsedEntityDecl(ctx, name, publicId, systemId, notationName);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_publicId, publicId, 2);
-        des_const_xmlChar_ptr(n_systemId, systemId, 3);
-        des_const_xmlChar_ptr(n_notationName, notationName, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAX2UnparsedEntityDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_name);
-            printf(" %d", n_publicId);
-            printf(" %d", n_systemId);
-            printf(" %d", n_notationName);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXDefaultVersion(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    int version; /* the version, must be 2 */
-    int n_version;
-
-    for (n_version = 0;n_version < gen_nb_int;n_version++) {
-        mem_base = xmlMemBlocks();
-        version = gen_int(n_version, 0);
-        
-        {
-            int original_version = xmlSAXDefaultVersion(2);
-
-
-        ret_val = xmlSAXDefaultVersion(version);
-        
-            (void)xmlSAXDefaultVersion(original_version);
-        }
-
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_version, version, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXDefaultVersion",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_version);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXVersion(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlSAXHandler * hdlr; /* the SAX handler */
-    int n_hdlr;
-    int version; /* the version, 1 or 2 */
-    int n_version;
-
-    for (n_hdlr = 0;n_hdlr < gen_nb_xmlSAXHandler_ptr;n_hdlr++) {
-    for (n_version = 0;n_version < gen_nb_int;n_version++) {
-        mem_base = xmlMemBlocks();
-        hdlr = gen_xmlSAXHandler_ptr(n_hdlr, 0);
-        version = gen_int(n_version, 1);
-
-        ret_val = xmlSAXVersion(hdlr, version);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSAXHandler_ptr(n_hdlr, hdlr, 0);
-        des_int(n_version, version, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXVersion",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hdlr);
-            printf(" %d", n_version);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_SAX2(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing SAX2 : 36 of 36 functions ...\n");
-    test_ret += test_htmlDefaultSAXHandlerInit();
-    test_ret += test_xmlDefaultSAXHandlerInit();
-    test_ret += test_xmlSAX2AttributeDecl();
-    test_ret += test_xmlSAX2CDataBlock();
-    test_ret += test_xmlSAX2Characters();
-    test_ret += test_xmlSAX2Comment();
-    test_ret += test_xmlSAX2ElementDecl();
-    test_ret += test_xmlSAX2EndDocument();
-    test_ret += test_xmlSAX2EndElement();
-    test_ret += test_xmlSAX2EndElementNs();
-    test_ret += test_xmlSAX2EntityDecl();
-    test_ret += test_xmlSAX2ExternalSubset();
-    test_ret += test_xmlSAX2GetColumnNumber();
-    test_ret += test_xmlSAX2GetEntity();
-    test_ret += test_xmlSAX2GetLineNumber();
-    test_ret += test_xmlSAX2GetParameterEntity();
-    test_ret += test_xmlSAX2GetPublicId();
-    test_ret += test_xmlSAX2GetSystemId();
-    test_ret += test_xmlSAX2HasExternalSubset();
-    test_ret += test_xmlSAX2HasInternalSubset();
-    test_ret += test_xmlSAX2IgnorableWhitespace();
-    test_ret += test_xmlSAX2InitDefaultSAXHandler();
-    test_ret += test_xmlSAX2InitHtmlDefaultSAXHandler();
-    test_ret += test_xmlSAX2InternalSubset();
-    test_ret += test_xmlSAX2IsStandalone();
-    test_ret += test_xmlSAX2NotationDecl();
-    test_ret += test_xmlSAX2ProcessingInstruction();
-    test_ret += test_xmlSAX2Reference();
-    test_ret += test_xmlSAX2ResolveEntity();
-    test_ret += test_xmlSAX2SetDocumentLocator();
-    test_ret += test_xmlSAX2StartDocument();
-    test_ret += test_xmlSAX2StartElement();
-    test_ret += test_xmlSAX2StartElementNs();
-    test_ret += test_xmlSAX2UnparsedEntityDecl();
-    test_ret += test_xmlSAXDefaultVersion();
-    test_ret += test_xmlSAXVersion();
-
-    if (test_ret != 0)
-	printf("Module SAX2: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlC14NDocDumpMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_C14N_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the XML document for canonization */
-    int n_doc;
-    xmlNodeSetPtr nodes; /* the nodes set to be included in the canonized image or NULL if all document nodes should be included */
-    int n_nodes;
-    int mode; /* the c14n mode (see @xmlC14NMode) */
-    int n_mode;
-    xmlChar ** inclusive_ns_prefixes; /* the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise) */
-    int n_inclusive_ns_prefixes;
-    int with_comments; /* include comments in the result (!=0) or not (==0) */
-    int n_with_comments;
-    xmlChar ** doc_txt_ptr; /* the memory pointer for allocated canonical XML text; the caller of this functions is responsible for calling xmlFree() to free allocated memory */
-    int n_doc_txt_ptr;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_mode = 0;n_mode < gen_nb_int;n_mode++) {
-    for (n_inclusive_ns_prefixes = 0;n_inclusive_ns_prefixes < gen_nb_xmlChar_ptr_ptr;n_inclusive_ns_prefixes++) {
-    for (n_with_comments = 0;n_with_comments < gen_nb_int;n_with_comments++) {
-    for (n_doc_txt_ptr = 0;n_doc_txt_ptr < gen_nb_xmlChar_ptr_ptr;n_doc_txt_ptr++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        nodes = gen_xmlNodeSetPtr(n_nodes, 1);
-        mode = gen_int(n_mode, 2);
-        inclusive_ns_prefixes = gen_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, 3);
-        with_comments = gen_int(n_with_comments, 4);
-        doc_txt_ptr = gen_xmlChar_ptr_ptr(n_doc_txt_ptr, 5);
-
-        ret_val = xmlC14NDocDumpMemory(doc, nodes, mode, inclusive_ns_prefixes, with_comments, doc_txt_ptr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodeSetPtr(n_nodes, nodes, 1);
-        des_int(n_mode, mode, 2);
-        des_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, inclusive_ns_prefixes, 3);
-        des_int(n_with_comments, with_comments, 4);
-        des_xmlChar_ptr_ptr(n_doc_txt_ptr, doc_txt_ptr, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlC14NDocDumpMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_nodes);
-            printf(" %d", n_mode);
-            printf(" %d", n_inclusive_ns_prefixes);
-            printf(" %d", n_with_comments);
-            printf(" %d", n_doc_txt_ptr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlC14NDocSave(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_C14N_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the XML document for canonization */
-    int n_doc;
-    xmlNodeSetPtr nodes; /* the nodes set to be included in the canonized image or NULL if all document nodes should be included */
-    int n_nodes;
-    int mode; /* the c14n mode (see @xmlC14NMode) */
-    int n_mode;
-    xmlChar ** inclusive_ns_prefixes; /* the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise) */
-    int n_inclusive_ns_prefixes;
-    int with_comments; /* include comments in the result (!=0) or not (==0) */
-    int n_with_comments;
-    const char * filename; /* the filename to store canonical XML image */
-    int n_filename;
-    int compression; /* the compression level (zlib required): -1 - libxml default, 0 - uncompressed, >0 - compression level */
-    int n_compression;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_mode = 0;n_mode < gen_nb_int;n_mode++) {
-    for (n_inclusive_ns_prefixes = 0;n_inclusive_ns_prefixes < gen_nb_xmlChar_ptr_ptr;n_inclusive_ns_prefixes++) {
-    for (n_with_comments = 0;n_with_comments < gen_nb_int;n_with_comments++) {
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        nodes = gen_xmlNodeSetPtr(n_nodes, 1);
-        mode = gen_int(n_mode, 2);
-        inclusive_ns_prefixes = gen_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, 3);
-        with_comments = gen_int(n_with_comments, 4);
-        filename = gen_fileoutput(n_filename, 5);
-        compression = gen_int(n_compression, 6);
-
-        ret_val = xmlC14NDocSave(doc, nodes, mode, inclusive_ns_prefixes, with_comments, filename, compression);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodeSetPtr(n_nodes, nodes, 1);
-        des_int(n_mode, mode, 2);
-        des_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, inclusive_ns_prefixes, 3);
-        des_int(n_with_comments, with_comments, 4);
-        des_fileoutput(n_filename, filename, 5);
-        des_int(n_compression, compression, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlC14NDocSave",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_nodes);
-            printf(" %d", n_mode);
-            printf(" %d", n_inclusive_ns_prefixes);
-            printf(" %d", n_with_comments);
-            printf(" %d", n_filename);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlC14NDocSaveTo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_C14N_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the XML document for canonization */
-    int n_doc;
-    xmlNodeSetPtr nodes; /* the nodes set to be included in the canonized image or NULL if all document nodes should be included */
-    int n_nodes;
-    int mode; /* the c14n mode (see @xmlC14NMode) */
-    int n_mode;
-    xmlChar ** inclusive_ns_prefixes; /* the list of inclusive namespace prefixes ended with a NULL or NULL if there is no inclusive namespaces (only for exclusive canonicalization, ignored otherwise) */
-    int n_inclusive_ns_prefixes;
-    int with_comments; /* include comments in the result (!=0) or not (==0) */
-    int n_with_comments;
-    xmlOutputBufferPtr buf; /* the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output */
-    int n_buf;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_mode = 0;n_mode < gen_nb_int;n_mode++) {
-    for (n_inclusive_ns_prefixes = 0;n_inclusive_ns_prefixes < gen_nb_xmlChar_ptr_ptr;n_inclusive_ns_prefixes++) {
-    for (n_with_comments = 0;n_with_comments < gen_nb_int;n_with_comments++) {
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        nodes = gen_xmlNodeSetPtr(n_nodes, 1);
-        mode = gen_int(n_mode, 2);
-        inclusive_ns_prefixes = gen_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, 3);
-        with_comments = gen_int(n_with_comments, 4);
-        buf = gen_xmlOutputBufferPtr(n_buf, 5);
-
-        ret_val = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, with_comments, buf);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodeSetPtr(n_nodes, nodes, 1);
-        des_int(n_mode, mode, 2);
-        des_xmlChar_ptr_ptr(n_inclusive_ns_prefixes, inclusive_ns_prefixes, 3);
-        des_int(n_with_comments, with_comments, 4);
-        des_xmlOutputBufferPtr(n_buf, buf, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlC14NDocSaveTo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_nodes);
-            printf(" %d", n_mode);
-            printf(" %d", n_inclusive_ns_prefixes);
-            printf(" %d", n_with_comments);
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlC14NExecute(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
+static void
+ignoreError(void *userData ATTRIBUTE_UNUSED,
+            const xmlError *error ATTRIBUTE_UNUSED) {
 }
 
-static int
-test_c14n(void) {
-    int test_ret = 0;
+int
+main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+    xmlInitParser();
+    xmlSetStructuredErrorFunc(NULL, ignoreError);
 
-    if (quiet == 0) printf("Testing c14n : 3 of 4 functions ...\n");
-    test_ret += test_xmlC14NDocDumpMemory();
-    test_ret += test_xmlC14NDocSave();
-    test_ret += test_xmlC14NDocSaveTo();
-    test_ret += test_xmlC14NExecute();
+    xmlFreeParserInputBuffer(__xmlParserInputBufferCreateFilename(NULL, 0));
+    xmlAddAttributeDecl(NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL);
+    xmlFreeNode(xmlAddChild(NULL, NULL));
+    xmlFreeNode(xmlAddChildList(NULL, NULL));
+    xmlAddDocEntity(NULL, NULL, 0, NULL, NULL, NULL);
+    xmlAddDtdEntity(NULL, NULL, 0, NULL, NULL, NULL);
+    xmlAddElementDecl(NULL, NULL, NULL, 0, NULL);
+    xmlAddEncodingAlias(NULL, NULL);
+    xmlAddEntity(NULL, 0, NULL, 0, NULL, NULL, NULL, NULL);
+    xmlAddID(NULL, NULL, NULL, NULL);
+    xmlAddIDSafe(NULL, NULL);
+    xmlFreeNode(xmlAddNextSibling(NULL, NULL));
+    xmlAddNotationDecl(NULL, NULL, NULL, NULL, NULL);
+    xmlFreeNode(xmlAddPrevSibling(NULL, NULL));
+    xmlAddRef(NULL, NULL, NULL, NULL);
+    xmlFreeNode(xmlAddSibling(NULL, NULL));
+    xmlFreeParserInputBuffer(xmlAllocParserInputBuffer(0));
+    xmlFree(xmlBufContent(NULL));
+    xmlFree(xmlBufEnd(NULL));
+    xmlBufGetNodeContent(NULL, NULL);
+    xmlBufShrink(NULL, 0);
+    xmlBufUse(NULL);
+    xmlBufferAdd(NULL, NULL, 0);
+    xmlBufferAddHead(NULL, NULL, 0);
+    xmlBufferCCat(NULL, NULL);
+    xmlBufferCat(NULL, NULL);
+    xmlBufferContent(NULL);
+    xmlBufferFree(xmlBufferCreate());
+    xmlBufferFree(xmlBufferCreateSize(0));
+    xmlBufferFree(xmlBufferCreateStatic(NULL, 0));
+    xmlFree(xmlBufferDetach(NULL));
+    xmlBufferDump(NULL, NULL);
+    xmlBufferEmpty(NULL);
+    xmlBufferFree(NULL);
+    xmlBufferGrow(NULL, 0);
+    xmlBufferLength(NULL);
+    xmlBufferResize(NULL, 0);
+    xmlBufferSetAllocationScheme(NULL, 0);
+    xmlBufferShrink(NULL, 0);
+    xmlBufferWriteCHAR(NULL, NULL);
+    xmlBufferWriteChar(NULL, NULL);
+    xmlBufferWriteQuotedString(NULL, NULL);
+    xmlFree(xmlBuildQName(NULL, NULL, NULL, 0));
+    xmlFree(xmlBuildRelativeURI(NULL, NULL));
+    xmlBuildRelativeURISafe(NULL, NULL, NULL);
+    xmlFree(xmlBuildURI(NULL, NULL));
+    xmlBuildURISafe(NULL, NULL, NULL);
+    xmlByteConsumed(NULL);
+    xmlFree(xmlCanonicPath(NULL));
+    xmlCharEncCloseFunc(NULL);
+    xmlCharEncFirstLine(NULL, NULL, NULL);
+    xmlCharEncInFunc(NULL, NULL, NULL);
+    xmlCharEncNewCustomHandler(NULL, 0, 0, 0, NULL, NULL, NULL);
+    xmlCharEncOutFunc(NULL, NULL, NULL);
+    xmlFree(xmlCharStrdup(NULL));
+    xmlFree(xmlCharStrndup(NULL, 0));
+    xmlCheckFilename(NULL);
+    xmlFreeInputStream(xmlCheckHTTPInput(NULL, NULL));
+    xmlCheckLanguageID(NULL);
+    xmlCheckThreadLocalStorage();
+    xmlCheckUTF8(NULL);
+    xmlChildElementCount(NULL);
+    xmlCleanupCharEncodingHandlers();
+    xmlCleanupEncodingAliases();
+    xmlCleanupGlobals();
+    xmlCleanupInputCallbacks();
+    xmlCleanupMemory();
+    xmlCleanupThreads();
+    xmlClearNodeInfoSeq(NULL);
+    xmlClearParserCtxt(NULL);
+    xmlCopyAttributeTable(NULL);
+    xmlCopyChar(0, NULL, 0);
+    xmlCopyCharMultiByte(NULL, 0);
+    xmlFreeDoc(xmlCopyDoc(NULL, 0));
+    xmlFreeElementContent(xmlCopyDocElementContent(NULL, NULL));
+    xmlFreeDtd(xmlCopyDtd(NULL));
+    xmlFreeElementContent(xmlCopyElementContent(NULL));
+    xmlCopyElementTable(NULL);
+    xmlFreeEntitiesTable(xmlCopyEntitiesTable(NULL));
+    xmlFreeEnumeration(xmlCopyEnumeration(NULL));
+    xmlCopyError(NULL, NULL);
+    xmlFreeNs(xmlCopyNamespace(NULL));
+    xmlFreeNs(xmlCopyNamespaceList(NULL));
+    xmlFreeNode(xmlCopyNode(NULL, 0));
+    xmlFreeNode(xmlCopyNodeList(NULL));
+    xmlCopyNotationTable(NULL);
+    xmlCopyProp(NULL, NULL);
+    xmlCopyPropList(NULL, NULL);
+    xmlCreateCharEncodingHandler(NULL, 0, 0, NULL, NULL);
+    xmlFreeParserCtxt(xmlCreateDocParserCtxt(NULL));
+    xmlFreeEntitiesTable(xmlCreateEntitiesTable());
+    xmlFreeParserCtxt(xmlCreateEntityParserCtxt(NULL, NULL, NULL));
+    xmlFreeEnumeration(xmlCreateEnumeration(NULL));
+    xmlFreeParserCtxt(xmlCreateFileParserCtxt(NULL));
+    xmlFreeParserCtxt(xmlCreateIOParserCtxt(NULL, NULL, 0, 0, NULL, 0));
+    xmlFreeDtd(xmlCreateIntSubset(NULL, NULL, NULL, NULL));
+    xmlFreeParserCtxt(xmlCreateMemoryParserCtxt(NULL, 0));
+    xmlFreeURI(xmlCreateURI());
+    xmlFreeParserCtxt(xmlCreateURLParserCtxt(NULL, 0));
+    xmlCtxtErrMemory(NULL);
+    xmlCtxtGetCatalogs(NULL);
+    xmlCtxtGetDeclaredEncoding(NULL);
+    xmlDictFree(xmlCtxtGetDict(NULL));
+    xmlCtxtGetDocTypeDecl(NULL, NULL, NULL, NULL);
+    xmlFreeDoc(xmlCtxtGetDocument(NULL));
+    xmlCtxtGetInputPosition(NULL, 0, NULL, NULL, NULL, NULL);
+    xmlCtxtGetInputWindow(NULL, 0, NULL, NULL, NULL);
+    xmlCtxtGetLastError(NULL);
+    xmlFreeNode(xmlCtxtGetNode(NULL));
+    xmlCtxtGetOptions(NULL);
+    xmlCtxtGetPrivate(NULL);
+    xmlCtxtGetSaxHandler(NULL);
+    xmlCtxtGetStandalone(NULL);
+    xmlCtxtGetStatus(NULL);
+    xmlCtxtGetUserData(NULL);
+    xmlCtxtGetVersion(NULL);
+    xmlCtxtIsHtml(NULL);
+    xmlCtxtIsInSubset(NULL);
+    xmlCtxtIsStopped(NULL);
+    xmlFreeNode(xmlCtxtParseContent(NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlCtxtParseDocument(NULL, NULL));
+    xmlFreeInputStream(xmlCtxtPopInput(NULL));
+    xmlCtxtPushInput(NULL, NULL);
+    xmlFreeDoc(xmlCtxtReadDoc(NULL, NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlCtxtReadFd(NULL, 0, NULL, NULL, 0));
+    xmlFreeDoc(xmlCtxtReadFile(NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlCtxtReadIO(NULL, 0, 0, NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlCtxtReadMemory(NULL, NULL, 0, NULL, NULL, 0));
+    xmlCtxtReset(NULL);
+    xmlCtxtResetLastError(NULL);
+    xmlCtxtResetPush(NULL, NULL, 0, NULL, NULL);
+    xmlCtxtSetCatalogs(NULL, NULL);
+    xmlCtxtSetCharEncConvImpl(NULL, 0, NULL);
+    xmlCtxtSetDict(NULL, NULL);
+    xmlCtxtSetErrorHandler(NULL, 0, NULL);
+    xmlCtxtSetMaxAmplification(NULL, 0);
+    xmlCtxtSetOptions(NULL, 0);
+    xmlCtxtSetPrivate(NULL, NULL);
+    xmlCtxtSetResourceLoader(NULL, 0, NULL);
+    xmlCtxtSetSaxHandler(NULL, NULL);
+    xmlCtxtUseOptions(NULL, 0);
+    xmlCurrentChar(NULL, NULL);
+    xmlDOMWrapAdoptNode(NULL, NULL, NULL, NULL, NULL, 0);
+    xmlDOMWrapCloneNode(NULL, NULL, NULL, NULL, NULL, NULL, 0, 0);
+    xmlDOMWrapFreeCtxt(NULL);
+    xmlDOMWrapFreeCtxt(xmlDOMWrapNewCtxt());
+    xmlDOMWrapReconcileNamespaces(NULL, NULL, 0);
+    xmlDOMWrapRemoveNode(NULL, NULL, NULL, 0);
+    xmlDefaultSAXHandlerInit();
+    xmlDelEncodingAlias(NULL);
+    xmlDeregisterNodeDefault(0);
+    xmlDetectCharEncoding(NULL, 0);
+    xmlDictCleanup();
+    xmlDictFree(xmlDictCreate());
+    xmlDictFree(xmlDictCreateSub(NULL));
+    xmlDictExists(NULL, NULL, 0);
+    xmlDictFree(NULL);
+    xmlDictGetUsage(NULL);
+    xmlDictLookup(NULL, NULL, 0);
+    xmlDictOwns(NULL, NULL);
+    xmlDictQLookup(NULL, NULL, NULL);
+    xmlDictReference(NULL);
+    xmlDictSetLimit(NULL, 0);
+    xmlDictSize(NULL);
+    xmlFreeNode(xmlDocCopyNode(NULL, NULL, 0));
+    xmlFreeNode(xmlDocCopyNodeList(NULL, NULL));
+    xmlFreeNode(xmlDocGetRootElement(NULL));
+    xmlFreeNode(xmlDocSetRootElement(NULL, NULL));
+    xmlFree(xmlEncodeEntitiesReentrant(NULL, NULL));
+    xmlFree(xmlEncodeSpecialChars(NULL, NULL));
+    xmlFileClose(NULL);
+    xmlFileMatch(NULL);
+    xmlFileOpen(NULL);
+    xmlFileRead(NULL, NULL, 0);
+    xmlFindCharEncodingHandler(NULL);
+    xmlFreeNode(xmlFirstElementChild(NULL));
+    xmlFormatError(NULL, 0, NULL);
+    xmlFreeAttributeTable(NULL);
+    xmlFreeDoc(NULL);
+    xmlFreeDocElementContent(NULL, NULL);
+    xmlFreeDtd(NULL);
+    xmlFreeElementContent(NULL);
+    xmlFreeElementTable(NULL);
+    xmlFreeEntitiesTable(NULL);
+    xmlFreeEntity(NULL);
+    xmlFreeEnumeration(NULL);
+    xmlFreeIDTable(NULL);
+    xmlFreeInputStream(NULL);
+    xmlFreeMutex(NULL);
+    xmlFreeNode(NULL);
+    xmlFreeNodeList(NULL);
+    xmlFreeNotationTable(NULL);
+    xmlFreeNs(NULL);
+    xmlFreeNsList(NULL);
+    xmlFreeParserCtxt(NULL);
+    xmlFreeParserInputBuffer(NULL);
+    xmlFreeProp(NULL);
+    xmlFreePropList(NULL);
+    xmlFreeRMutex(NULL);
+    xmlFreeRefTable(NULL);
+    xmlFreeURI(NULL);
+    xmlGcMemGet(NULL, NULL, NULL, NULL, NULL);
+    xmlGcMemSetup(0, 0, 0, 0, 0);
+    xmlGetBufferAllocationScheme();
+    xmlGetCharEncodingHandler(0);
+    xmlGetCharEncodingName(0);
+    xmlGetCompressMode();
+    xmlGetDocCompressMode(NULL);
+    xmlGetDocEntity(NULL, NULL);
+    xmlGetDtdAttrDesc(NULL, NULL, NULL);
+    xmlGetDtdElementDesc(NULL, NULL);
+    xmlGetDtdEntity(NULL, NULL);
+    xmlGetDtdNotationDesc(NULL, NULL);
+    xmlGetDtdQAttrDesc(NULL, NULL, NULL, NULL);
+    xmlGetDtdQElementDesc(NULL, NULL, NULL);
+    xmlGetEncodingAlias(NULL);
+    xmlGetExternalEntityLoader();
+    xmlGetID(NULL, NULL);
+    xmlFreeDtd(xmlGetIntSubset(NULL));
+    xmlFreeNode(xmlGetLastChild(NULL));
+    xmlGetLastError();
+    xmlGetLineNo(NULL);
+    xmlFree(xmlGetNoNsProp(NULL, NULL));
+    xmlFree(xmlGetNodePath(NULL));
+    xmlGetNsList(NULL, NULL);
+    xmlGetNsListSafe(NULL, NULL, NULL);
+    xmlFree(xmlGetNsProp(NULL, NULL, NULL));
+    xmlGetParameterEntity(NULL, NULL);
+    xmlGetPredefinedEntity(NULL);
+    xmlFree(xmlGetProp(NULL, NULL));
+    xmlListDelete(xmlGetRefs(NULL, NULL));
+    xmlGetUTF8Char(NULL, NULL);
+    xmlHasFeature(0);
+    xmlHasNsProp(NULL, NULL, NULL);
+    xmlHasProp(NULL, NULL);
+    xmlHashAdd(NULL, NULL, NULL);
+    xmlHashAdd2(NULL, NULL, NULL, NULL);
+    xmlHashAdd3(NULL, NULL, NULL, NULL, NULL);
+    xmlHashAddEntry(NULL, NULL, NULL);
+    xmlHashAddEntry2(NULL, NULL, NULL, NULL);
+    xmlHashAddEntry3(NULL, NULL, NULL, NULL, NULL);
+    xmlHashFree(xmlHashCopy(NULL, 0), NULL);
+    xmlHashFree(xmlHashCopySafe(NULL, 0, 0), NULL);
+    xmlHashFree(xmlHashCreate(0), NULL);
+    xmlHashFree(xmlHashCreateDict(0, NULL), NULL);
+    xmlHashDefaultDeallocator(NULL, NULL);
+    xmlHashFree(NULL, 0);
+    xmlHashLookup(NULL, NULL);
+    xmlHashLookup2(NULL, NULL, NULL);
+    xmlHashLookup3(NULL, NULL, NULL, NULL);
+    xmlHashQLookup(NULL, NULL, NULL);
+    xmlHashQLookup2(NULL, NULL, NULL, NULL, NULL);
+    xmlHashQLookup3(NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+    xmlHashRemoveEntry(NULL, NULL, 0);
+    xmlHashRemoveEntry2(NULL, NULL, NULL, 0);
+    xmlHashRemoveEntry3(NULL, NULL, NULL, NULL, 0);
+    xmlHashScan(NULL, 0, NULL);
+    xmlHashScan3(NULL, NULL, NULL, NULL, 0, NULL);
+    xmlHashScanFull(NULL, 0, NULL);
+    xmlHashScanFull3(NULL, NULL, NULL, NULL, 0, NULL);
+    xmlHashSize(NULL);
+    xmlHashUpdateEntry(NULL, NULL, NULL, 0);
+    xmlHashUpdateEntry2(NULL, NULL, NULL, NULL, 0);
+    xmlHashUpdateEntry3(NULL, NULL, NULL, NULL, NULL, 0);
+    xmlInitCharEncodingHandlers();
+    xmlInitGlobals();
+    xmlInitMemory();
+    xmlInitNodeInfoSeq(NULL);
+    xmlInitParserCtxt(NULL);
+    xmlInitThreads();
+    xmlInitializeDict();
+    xmlInputSetEncodingHandler(NULL, NULL);
+    xmlIsBaseChar(0);
+    xmlIsBlank(0);
+    xmlIsBlankNode(NULL);
+    xmlIsChar(0);
+    xmlIsCombining(0);
+    xmlIsDigit(0);
+    xmlIsExtender(0);
+    xmlIsID(NULL, NULL, NULL);
+    xmlIsIdeographic(0);
+    xmlIsLetter(0);
+    xmlIsMixedElement(NULL, NULL);
+    xmlIsPubidChar(0);
+    xmlIsRef(NULL, NULL, NULL);
+    xmlIsXHTML(NULL, NULL);
+    xmlIsolat1ToUTF8(NULL, NULL, NULL, NULL);
+    xmlKeepBlanksDefault(0);
+    xmlFreeNode(xmlLastElementChild(NULL));
+    xmlLineNumbersDefault(0);
+    xmlLinkGetData(NULL);
+    xmlListAppend(NULL, NULL);
+    xmlListClear(NULL);
+    xmlListCopy(NULL, NULL);
+    xmlListDelete(xmlListCreate(0, 0));
+    xmlListDelete(NULL);
+    xmlListDelete(xmlListDup(NULL));
+    xmlListEmpty(NULL);
+    xmlListEnd(NULL);
+    xmlListFront(NULL);
+    xmlListInsert(NULL, NULL);
+    xmlListMerge(NULL, NULL);
+    xmlListPopBack(NULL);
+    xmlListPopFront(NULL);
+    xmlListPushBack(NULL, NULL);
+    xmlListPushFront(NULL, NULL);
+    xmlListRemoveAll(NULL, NULL);
+    xmlListRemoveFirst(NULL, NULL);
+    xmlListRemoveLast(NULL, NULL);
+    xmlListReverse(NULL);
+    xmlListReverseSearch(NULL, NULL);
+    xmlListReverseWalk(NULL, 0, NULL);
+    xmlListSearch(NULL, NULL);
+    xmlListSize(NULL);
+    xmlListSort(NULL);
+    xmlListWalk(NULL, 0, NULL);
+    xmlFreeInputStream(xmlLoadExternalEntity(NULL, NULL, NULL));
+    xmlLockLibrary();
+    xmlLookupCharEncodingHandler(0, NULL);
+    xmlMemBlocks();
+    xmlMemDisplay(NULL);
+    xmlMemDisplayLast(NULL, 0);
+    xmlMemFree(NULL);
+    xmlMemGet(NULL, NULL, NULL, NULL);
+    xmlMemSetup(0, 0, 0, 0);
+    xmlMemShow(NULL, 0);
+    xmlMemSize(NULL);
+    xmlMemUsed();
+    xmlMemoryDump();
+    xmlMutexLock(NULL);
+    xmlMutexUnlock(NULL);
+    xmlFreeNode(xmlNewCDataBlock(NULL, NULL, 0));
+    xmlNewCharEncodingHandler(NULL, 0, 0);
+    xmlFreeNode(xmlNewCharRef(NULL, NULL));
+    xmlFreeNode(xmlNewChild(NULL, NULL, NULL, NULL));
+    xmlFreeNode(xmlNewComment(NULL));
+    xmlFreeDoc(xmlNewDoc(NULL));
+    xmlFreeNode(xmlNewDocComment(NULL, NULL));
+    xmlFreeElementContent(xmlNewDocElementContent(NULL, NULL, 0));
+    xmlFreeNode(xmlNewDocFragment(NULL));
+    xmlFreeNode(xmlNewDocNode(NULL, NULL, NULL, NULL));
+    xmlFreeNode(xmlNewDocNodeEatName(NULL, NULL, NULL, NULL));
+    xmlFreeNode(xmlNewDocPI(NULL, NULL, NULL));
+    xmlNewDocProp(NULL, NULL, NULL);
+    xmlFreeNode(xmlNewDocRawNode(NULL, NULL, NULL, NULL));
+    xmlFreeNode(xmlNewDocText(NULL, NULL));
+    xmlFreeNode(xmlNewDocTextLen(NULL, NULL, 0));
+    xmlFreeDtd(xmlNewDtd(NULL, NULL, NULL, NULL));
+    xmlFreeElementContent(xmlNewElementContent(NULL, 0));
+    xmlNewEntity(NULL, NULL, 0, NULL, NULL, NULL);
+    xmlFreeInputStream(xmlNewEntityInputStream(NULL, NULL));
+    xmlFreeInputStream(xmlNewIOInputStream(NULL, NULL, 0));
+    xmlFreeInputStream(xmlNewInputFromFd(NULL, 0, 0));
+    xmlFreeInputStream(xmlNewInputFromFile(NULL, NULL));
+    xmlFreeInputStream(xmlNewInputFromIO(NULL, 0, 0, NULL, 0));
+    xmlFreeInputStream(xmlNewInputFromMemory(NULL, NULL, 0, 0));
+    xmlFreeInputStream(xmlNewInputFromString(NULL, NULL, 0));
+    xmlNewInputFromUrl(NULL, 0, NULL);
+    xmlFreeInputStream(xmlNewInputStream(NULL));
+    xmlFreeMutex(xmlNewMutex());
+    xmlFreeNode(xmlNewNode(NULL, NULL));
+    xmlFreeNode(xmlNewNodeEatName(NULL, NULL));
+    xmlFreeNs(xmlNewNs(NULL, NULL, NULL));
+    xmlNewNsProp(NULL, NULL, NULL, NULL);
+    xmlNewNsPropEatName(NULL, NULL, NULL, NULL);
+    xmlFreeNode(xmlNewPI(NULL, NULL));
+    xmlFreeParserCtxt(xmlNewParserCtxt());
+    xmlNewProp(NULL, NULL, NULL);
+    xmlFreeRMutex(xmlNewRMutex());
+    xmlFreeNode(xmlNewReference(NULL, NULL));
+    xmlFreeParserCtxt(xmlNewSAXParserCtxt(NULL, NULL));
+    xmlFreeInputStream(xmlNewStringInputStream(NULL, NULL));
+    xmlFreeNode(xmlNewText(NULL));
+    xmlFreeNode(xmlNewTextChild(NULL, NULL, NULL, NULL));
+    xmlFreeNode(xmlNewTextLen(NULL, 0));
+    xmlNextChar(NULL);
+    xmlFreeNode(xmlNextElementSibling(NULL));
+    xmlFreeInputStream(xmlNoNetExternalEntityLoader(NULL, NULL, NULL));
+    xmlNodeAddContent(NULL, NULL);
+    xmlNodeAddContentLen(NULL, NULL, 0);
+    xmlNodeBufGetContent(NULL, NULL);
+    xmlNodeGetAttrValue(NULL, NULL, NULL, NULL);
+    xmlFree(xmlNodeGetBase(NULL, NULL));
+    xmlNodeGetBaseSafe(NULL, NULL, NULL);
+    xmlFree(xmlNodeGetContent(NULL));
+    xmlFree(xmlNodeGetLang(NULL));
+    xmlNodeGetSpacePreserve(NULL);
+    xmlNodeIsText(NULL);
+    xmlFree(xmlNodeListGetRawString(NULL, NULL, 0));
+    xmlFree(xmlNodeListGetString(NULL, NULL, 0));
+    xmlNodeSetBase(NULL, NULL);
+    xmlNodeSetContent(NULL, NULL);
+    xmlNodeSetContentLen(NULL, NULL, 0);
+    xmlNodeSetLang(NULL, NULL);
+    xmlNodeSetName(NULL, NULL);
+    xmlNodeSetSpacePreserve(NULL, 0);
+    xmlNormalizeURIPath(NULL);
+    xmlFree(xmlNormalizeWindowsPath(NULL));
+    xmlOpenCharEncodingHandler(NULL, 0, NULL);
+    xmlOutputBufferCreateFilenameDefault(0);
+    xmlFree(xmlParseAttValue(NULL));
+    xmlParseCharEncoding(NULL);
+    xmlParseContent(NULL);
+    xmlParseCtxtExternalEntity(NULL, NULL, NULL, NULL);
+    xmlParseDocument(NULL);
+    xmlParseEntityRef(NULL);
+    xmlParseExtParsedEnt(NULL);
+    xmlParseInNodeContext(NULL, NULL, 0, 0, NULL);
+    xmlFreeURI(xmlParseURI(NULL));
+    xmlFreeURI(xmlParseURIRaw(NULL, 0));
+    xmlParseURIReference(NULL, NULL);
+    xmlParseURISafe(NULL, NULL);
+    xmlParserAddNodeInfo(NULL, NULL);
+    xmlParserFindNodeInfo(NULL, NULL);
+    xmlParserFindNodeInfoIndex(NULL, NULL);
+    xmlParserGetDirectory(NULL);
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateFd(0, 0));
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateFile(NULL, 0));
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateFilename(NULL, 0));
+    xmlParserInputBufferCreateFilenameDefault(0);
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateIO(0, 0, NULL, 0));
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateMem(NULL, 0, 0));
+    xmlFreeParserInputBuffer(xmlParserInputBufferCreateStatic(NULL, 0, 0));
+    xmlParserInputBufferGrow(NULL, 0);
+    xmlParserInputBufferPush(NULL, 0, NULL);
+    xmlParserInputBufferRead(NULL, 0);
+    xmlParserInputGrow(NULL, 0);
+    xmlParserInputRead(NULL, 0);
+    xmlParserInputShrink(NULL);
+    xmlParserPrintFileContext(NULL);
+    xmlParserPrintFileInfo(NULL);
+    xmlFree(xmlPathToURI(NULL));
+    xmlPedanticParserDefault(0);
+    xmlPopInput(NULL);
+    xmlPopInputCallbacks();
+    xmlFreeNode(xmlPreviousElementSibling(NULL));
+    xmlPrintURI(NULL, NULL);
+    xmlPushInput(NULL, NULL);
+    xmlRMutexLock(NULL);
+    xmlRMutexUnlock(NULL);
+    xmlFreeDoc(xmlReadDoc(NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlReadFile(NULL, NULL, 0));
+    xmlFreeDoc(xmlReadIO(0, 0, NULL, NULL, NULL, 0));
+    xmlFreeDoc(xmlReadMemory(NULL, 0, NULL, NULL, 0));
+    xmlReconciliateNs(NULL, NULL);
+    xmlRegisterCharEncodingHandler(NULL);
+    xmlRegisterDefaultInputCallbacks();
+    xmlRegisterInputCallbacks(0, 0, 0, 0);
+    xmlRegisterNodeDefault(0);
+    xmlRemoveID(NULL, NULL);
+    xmlRemoveProp(NULL);
+    xmlRemoveRef(NULL, NULL);
+    xmlFreeNode(xmlReplaceNode(NULL, NULL));
+    xmlResetError(NULL);
+    xmlResetLastError();
+    xmlSAX2AttributeDecl(NULL, NULL, NULL, 0, 0, NULL, NULL);
+    xmlSAX2CDataBlock(NULL, NULL, 0);
+    xmlSAX2Characters(NULL, NULL, 0);
+    xmlSAX2Comment(NULL, NULL);
+    xmlSAX2ElementDecl(NULL, NULL, 0, NULL);
+    xmlSAX2EndDocument(NULL);
+    xmlSAX2EndElement(NULL, NULL);
+    xmlSAX2EndElementNs(NULL, NULL, NULL, NULL);
+    xmlSAX2EntityDecl(NULL, NULL, 0, NULL, NULL, NULL);
+    xmlSAX2ExternalSubset(NULL, NULL, NULL, NULL);
+    xmlSAX2GetColumnNumber(NULL);
+    xmlSAX2GetEntity(NULL, NULL);
+    xmlSAX2GetLineNumber(NULL);
+    xmlSAX2GetParameterEntity(NULL, NULL);
+    xmlSAX2GetPublicId(NULL);
+    xmlSAX2GetSystemId(NULL);
+    xmlSAX2HasExternalSubset(NULL);
+    xmlSAX2HasInternalSubset(NULL);
+    xmlSAX2IgnorableWhitespace(NULL, NULL, 0);
+    xmlSAX2InitDefaultSAXHandler(NULL, 0);
+    xmlSAX2InternalSubset(NULL, NULL, NULL, NULL);
+    xmlSAX2IsStandalone(NULL);
+    xmlSAX2NotationDecl(NULL, NULL, NULL, NULL);
+    xmlSAX2ProcessingInstruction(NULL, NULL, NULL);
+    xmlSAX2Reference(NULL, NULL);
+    xmlFreeInputStream(xmlSAX2ResolveEntity(NULL, NULL, NULL));
+    xmlSAX2SetDocumentLocator(NULL, NULL);
+    xmlSAX2StartDocument(NULL);
+    xmlSAX2StartElement(NULL, NULL, NULL);
+    xmlSAX2StartElementNs(NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL);
+    xmlSAX2UnparsedEntityDecl(NULL, NULL, NULL, NULL, NULL);
+    xmlSAXVersion(NULL, 0);
+    xmlFree(xmlSaveUri(NULL));
+    xmlFreeNs(xmlSearchNs(NULL, NULL, NULL));
+    xmlFreeNs(xmlSearchNsByHref(NULL, NULL, NULL));
+    xmlSetBufferAllocationScheme(0);
+    xmlSetCompressMode(0);
+    xmlSetDocCompressMode(NULL, 0);
+    xmlSetExternalEntityLoader(0);
+    xmlSetGenericErrorFunc(NULL, 0);
+    xmlSetListDoc(NULL, NULL);
+    xmlSetNs(NULL, NULL);
+    xmlSetNsProp(NULL, NULL, NULL, NULL);
+    xmlSetProp(NULL, NULL, NULL);
+    xmlSetTreeDoc(NULL, NULL);
+    xmlSnprintfElementContent(NULL, 0, NULL, 0);
+    xmlFree(xmlSplitQName(NULL, NULL, NULL));
+    xmlFree(xmlSplitQName2(NULL, NULL));
+    xmlSplitQName3(NULL, NULL);
+    xmlStopParser(NULL);
+    xmlStrEqual(NULL, NULL);
+    xmlStrPrintf(NULL, 0, NULL, 0);
+    xmlStrQEqual(NULL, NULL, NULL);
+    xmlStrcasecmp(NULL, NULL);
+    xmlStrcasestr(NULL, NULL);
+    xmlFree(xmlStrcat(NULL, NULL));
+    xmlStrchr(NULL, 0);
+    xmlStrcmp(NULL, NULL);
+    xmlFree(xmlStrdup(NULL));
+    xmlStringCurrentChar(NULL, NULL, NULL);
+    xmlFree(xmlStringDecodeEntities(NULL, NULL, 0, 0, 0, 0));
+    xmlFreeNode(xmlStringGetNodeList(NULL, NULL));
+    xmlFree(xmlStringLenDecodeEntities(NULL, NULL, 0, 0, 0, 0, 0));
+    xmlFreeNode(xmlStringLenGetNodeList(NULL, NULL, 0));
+    xmlStrlen(NULL);
+    xmlStrncasecmp(NULL, NULL, 0);
+    xmlFree(xmlStrncat(NULL, NULL, 0));
+    xmlFree(xmlStrncatNew(NULL, NULL, 0));
+    xmlStrncmp(NULL, NULL, 0);
+    xmlFree(xmlStrndup(NULL, 0));
+    xmlStrstr(NULL, NULL);
+    xmlFree(xmlStrsub(NULL, 0, 0));
+    xmlSubstituteEntitiesDefault(0);
+    xmlSwitchEncoding(NULL, 0);
+    xmlSwitchEncodingName(NULL, NULL);
+    xmlSwitchInputEncoding(NULL, NULL, NULL);
+    xmlSwitchToEncoding(NULL, NULL);
+    xmlTextConcat(NULL, NULL, 0);
+    xmlFreeNode(xmlTextMerge(NULL, NULL));
+    xmlThrDefDeregisterNodeDefault(0);
+    xmlThrDefDoValidityCheckingDefaultValue(0);
+    xmlThrDefGetWarningsDefaultValue(0);
+    xmlThrDefKeepBlanksDefaultValue(0);
+    xmlThrDefLineNumbersDefaultValue(0);
+    xmlThrDefLoadExtDtdDefaultValue(0);
+    xmlThrDefOutputBufferCreateFilenameDefault(0);
+    xmlThrDefParserInputBufferCreateFilenameDefault(0);
+    xmlThrDefPedanticParserDefaultValue(0);
+    xmlThrDefRegisterNodeDefault(0);
+    xmlThrDefSetGenericErrorFunc(NULL, 0);
+    xmlThrDefSetStructuredErrorFunc(NULL, 0);
+    xmlThrDefSubstituteEntitiesDefaultValue(0);
+    xmlFree(xmlURIEscape(NULL));
+    xmlFree(xmlURIEscapeStr(NULL, NULL));
+    xmlURIUnescapeString(NULL, 0, NULL);
+    xmlUTF8Charcmp(NULL, NULL);
+    xmlUTF8Size(NULL);
+    xmlUTF8Strlen(NULL);
+    xmlUTF8Strloc(NULL, NULL);
+    xmlFree(xmlUTF8Strndup(NULL, 0));
+    xmlUTF8Strpos(NULL, 0);
+    xmlUTF8Strsize(NULL, 0);
+    xmlFree(xmlUTF8Strsub(NULL, 0, 0));
+    xmlUnlinkNode(NULL);
+    xmlUnlockLibrary();
+    xmlUnsetNsProp(NULL, NULL, NULL);
+    xmlUnsetProp(NULL, NULL);
+    xmlValidateNCName(NULL, 0);
+    xmlValidateNMToken(NULL, 0);
+    xmlValidateName(NULL, 0);
+    xmlValidateQName(NULL, 0);
+
+#ifdef LIBXML_C14N_ENABLED
+    xmlC14NDocDumpMemory(NULL, NULL, 0, NULL, 0, NULL);
+    xmlC14NDocSave(NULL, NULL, 0, NULL, 0, NULL, 0);
+    xmlC14NDocSaveTo(NULL, NULL, 0, NULL, 0, NULL);
+    xmlC14NExecute(NULL, 0, NULL, 0, NULL, 0, NULL);
+#endif /* LIBXML_C14N_ENABLED */
 
-    if (test_ret != 0)
-	printf("Module c14n: %d errors\n", test_ret);
-    return(test_ret);
-}
 #ifdef LIBXML_CATALOG_ENABLED
+    xmlACatalogAdd(NULL, NULL, NULL, NULL);
+    xmlACatalogRemove(NULL, NULL);
+    xmlFree(xmlACatalogResolve(NULL, NULL, NULL));
+    xmlFree(xmlACatalogResolvePublic(NULL, NULL));
+    xmlFree(xmlACatalogResolveSystem(NULL, NULL));
+    xmlFree(xmlACatalogResolveURI(NULL, NULL));
+    xmlCatalogAdd(NULL, NULL, NULL);
+    xmlCatalogAddLocal(NULL, NULL);
+    xmlCatalogCleanup();
+    xmlCatalogFreeLocal(NULL);
+    xmlCatalogGetDefaults();
+    xmlCatalogIsEmpty(NULL);
+    xmlFree(xmlCatalogLocalResolve(NULL, NULL, NULL));
+    xmlFree(xmlCatalogLocalResolveURI(NULL, NULL));
+    xmlCatalogRemove(NULL);
+    xmlFree(xmlCatalogResolve(NULL, NULL));
+    xmlFree(xmlCatalogResolvePublic(NULL));
+    xmlFree(xmlCatalogResolveSystem(NULL));
+    xmlFree(xmlCatalogResolveURI(NULL));
+    xmlCatalogSetDebug(0);
+    xmlCatalogSetDefaultPrefer(0);
+    xmlCatalogSetDefaults(0);
+    xmlFreeCatalog(NULL);
+    xmlInitializeCatalog();
+    xmlFreeCatalog(xmlLoadACatalog(NULL));
+    xmlLoadCatalog(NULL);
+    xmlLoadCatalogs(NULL);
+    xmlFreeCatalog(xmlNewCatalog(0));
+    xmlFreeDoc(xmlParseCatalogFile(NULL));
+#ifdef LIBXML_OUTPUT_ENABLED
+    xmlACatalogDump(NULL, NULL);
+    xmlCatalogDump(NULL);
+#endif /* LIBXML_OUTPUT_ENABLED */
+#endif /* LIBXML_CATALOG_ENABLED */
 
-#define gen_nb_xmlCatalogPtr 1
-#define gen_xmlCatalogPtr(no, nr) NULL
-#define des_xmlCatalogPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlACatalogAdd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * type; /* the type of record to add to the catalog */
-    int n_type;
-    const xmlChar * orig; /* the system, public or prefix to match */
-    int n_orig;
-    const xmlChar * replace; /* the replacement value for the match */
-    int n_replace;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_type = 0;n_type < gen_nb_const_xmlChar_ptr;n_type++) {
-    for (n_orig = 0;n_orig < gen_nb_const_xmlChar_ptr;n_orig++) {
-    for (n_replace = 0;n_replace < gen_nb_const_xmlChar_ptr;n_replace++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        type = gen_const_xmlChar_ptr(n_type, 1);
-        orig = gen_const_xmlChar_ptr(n_orig, 2);
-        replace = gen_const_xmlChar_ptr(n_replace, 3);
-
-        ret_val = xmlACatalogAdd(catal, type, orig, replace);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_type, type, 1);
-        des_const_xmlChar_ptr(n_orig, orig, 2);
-        des_const_xmlChar_ptr(n_replace, replace, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogAdd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_type);
-            printf(" %d", n_orig);
-            printf(" %d", n_replace);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    FILE * out; /* the file. */
-    int n_out;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_out = 0;n_out < gen_nb_FILE_ptr;n_out++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        out = gen_FILE_ptr(n_out, 1);
-
-        xmlACatalogDump(catal, out);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_FILE_ptr(n_out, out, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogRemove(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * value; /* the value to remove */
-    int n_value;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-
-        ret_val = xmlACatalogRemove(catal, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogRemove",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogResolve(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * pubID; /* the public ID string */
-    int n_pubID;
-    const xmlChar * sysID; /* the system ID string */
-    int n_sysID;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_pubID = 0;n_pubID < gen_nb_const_xmlChar_ptr;n_pubID++) {
-    for (n_sysID = 0;n_sysID < gen_nb_const_xmlChar_ptr;n_sysID++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        pubID = gen_const_xmlChar_ptr(n_pubID, 1);
-        sysID = gen_const_xmlChar_ptr(n_sysID, 2);
-
-        ret_val = xmlACatalogResolve(catal, pubID, sysID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_pubID, pubID, 1);
-        des_const_xmlChar_ptr(n_sysID, sysID, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogResolve",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_pubID);
-            printf(" %d", n_sysID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogResolvePublic(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * pubID; /* the public ID string */
-    int n_pubID;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_pubID = 0;n_pubID < gen_nb_const_xmlChar_ptr;n_pubID++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        pubID = gen_const_xmlChar_ptr(n_pubID, 1);
-
-        ret_val = xmlACatalogResolvePublic(catal, pubID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_pubID, pubID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogResolvePublic",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_pubID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogResolveSystem(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * sysID; /* the system ID string */
-    int n_sysID;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_sysID = 0;n_sysID < gen_nb_const_xmlChar_ptr;n_sysID++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        sysID = gen_const_xmlChar_ptr(n_sysID, 1);
-
-        ret_val = xmlACatalogResolveSystem(catal, sysID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_sysID, sysID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogResolveSystem",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_sysID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlACatalogResolveURI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlCatalogPtr catal; /* a Catalog */
-    int n_catal;
-    const xmlChar * URI; /* the URI */
-    int n_URI;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-        URI = gen_const_xmlChar_ptr(n_URI, 1);
-
-        ret_val = xmlACatalogResolveURI(catal, URI);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        des_const_xmlChar_ptr(n_URI, URI, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlACatalogResolveURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogAdd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * type; /* the type of record to add to the catalog */
-    int n_type;
-    const xmlChar * orig; /* the system, public or prefix to match */
-    int n_orig;
-    const xmlChar * replace; /* the replacement value for the match */
-    int n_replace;
-
-    for (n_type = 0;n_type < gen_nb_const_xmlChar_ptr;n_type++) {
-    for (n_orig = 0;n_orig < gen_nb_const_xmlChar_ptr;n_orig++) {
-    for (n_replace = 0;n_replace < gen_nb_const_xmlChar_ptr;n_replace++) {
-        mem_base = xmlMemBlocks();
-        type = gen_const_xmlChar_ptr(n_type, 0);
-        orig = gen_const_xmlChar_ptr(n_orig, 1);
-        replace = gen_const_xmlChar_ptr(n_replace, 2);
-
-        ret_val = xmlCatalogAdd(type, orig, replace);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_type, type, 0);
-        des_const_xmlChar_ptr(n_orig, orig, 1);
-        des_const_xmlChar_ptr(n_replace, replace, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogAdd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_orig);
-            printf(" %d", n_replace);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogCleanup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-
-
-        xmlCatalogCleanup();
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogConvert(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int ret_val;
-
-
-        ret_val = xmlCatalogConvert();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    FILE * out; /* the file. */
-    int n_out;
-
-    for (n_out = 0;n_out < gen_nb_FILE_ptr;n_out++) {
-        mem_base = xmlMemBlocks();
-        out = gen_FILE_ptr(n_out, 0);
-
-        xmlCatalogDump(out);
-        call_tests++;
-        des_FILE_ptr(n_out, out, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogGetDefaults(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlCatalogAllow ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlCatalogGetDefaults();
-        desret_xmlCatalogAllow(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogGetDefaults",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogIsEmpty(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlCatalogPtr catal; /* should this create an SGML catalog */
-    int n_catal;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-
-        ret_val = xmlCatalogIsEmpty(catal);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogIsEmpty",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogLocalResolve(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    void * catalogs; /* a document's list of catalogs */
-    int n_catalogs;
-    const xmlChar * pubID; /* the public ID string */
-    int n_pubID;
-    const xmlChar * sysID; /* the system ID string */
-    int n_sysID;
-
-    for (n_catalogs = 0;n_catalogs < gen_nb_void_ptr;n_catalogs++) {
-    for (n_pubID = 0;n_pubID < gen_nb_const_xmlChar_ptr;n_pubID++) {
-    for (n_sysID = 0;n_sysID < gen_nb_const_xmlChar_ptr;n_sysID++) {
-        mem_base = xmlMemBlocks();
-        catalogs = gen_void_ptr(n_catalogs, 0);
-        pubID = gen_const_xmlChar_ptr(n_pubID, 1);
-        sysID = gen_const_xmlChar_ptr(n_sysID, 2);
-
-        ret_val = xmlCatalogLocalResolve(catalogs, pubID, sysID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_void_ptr(n_catalogs, catalogs, 0);
-        des_const_xmlChar_ptr(n_pubID, pubID, 1);
-        des_const_xmlChar_ptr(n_sysID, sysID, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogLocalResolve",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catalogs);
-            printf(" %d", n_pubID);
-            printf(" %d", n_sysID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogLocalResolveURI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    void * catalogs; /* a document's list of catalogs */
-    int n_catalogs;
-    const xmlChar * URI; /* the URI */
-    int n_URI;
-
-    for (n_catalogs = 0;n_catalogs < gen_nb_void_ptr;n_catalogs++) {
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-        mem_base = xmlMemBlocks();
-        catalogs = gen_void_ptr(n_catalogs, 0);
-        URI = gen_const_xmlChar_ptr(n_URI, 1);
-
-        ret_val = xmlCatalogLocalResolveURI(catalogs, URI);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_void_ptr(n_catalogs, catalogs, 0);
-        des_const_xmlChar_ptr(n_URI, URI, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogLocalResolveURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catalogs);
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogRemove(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int ret_val;
-    const xmlChar * value; /* the value to remove */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlCatalogRemove(value);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogResolve(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    xmlChar * ret_val;
-    const xmlChar * pubID; /* the public ID string */
-    int n_pubID;
-    const xmlChar * sysID; /* the system ID string */
-    int n_sysID;
-
-    for (n_pubID = 0;n_pubID < gen_nb_const_xmlChar_ptr;n_pubID++) {
-    for (n_sysID = 0;n_sysID < gen_nb_const_xmlChar_ptr;n_sysID++) {
-        pubID = gen_const_xmlChar_ptr(n_pubID, 0);
-        sysID = gen_const_xmlChar_ptr(n_sysID, 1);
-
-        ret_val = xmlCatalogResolve(pubID, sysID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_pubID, pubID, 0);
-        des_const_xmlChar_ptr(n_sysID, sysID, 1);
-        xmlResetLastError();
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogResolvePublic(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * pubID; /* the public ID string */
-    int n_pubID;
-
-    for (n_pubID = 0;n_pubID < gen_nb_const_xmlChar_ptr;n_pubID++) {
-        mem_base = xmlMemBlocks();
-        pubID = gen_const_xmlChar_ptr(n_pubID, 0);
-
-        ret_val = xmlCatalogResolvePublic(pubID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_pubID, pubID, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogResolvePublic",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_pubID);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogResolveSystem(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * sysID; /* the system ID string */
-    int n_sysID;
-
-    for (n_sysID = 0;n_sysID < gen_nb_const_xmlChar_ptr;n_sysID++) {
-        mem_base = xmlMemBlocks();
-        sysID = gen_const_xmlChar_ptr(n_sysID, 0);
-
-        ret_val = xmlCatalogResolveSystem(sysID);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_sysID, sysID, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogResolveSystem",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sysID);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogResolveURI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * URI; /* the URI */
-    int n_URI;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-
-        ret_val = xmlCatalogResolveURI(URI);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogResolveURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogSetDefaultPrefer(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlCatalogPrefer ret_val;
-    xmlCatalogPrefer prefer; /* the default preference for delegation */
-    int n_prefer;
-
-    for (n_prefer = 0;n_prefer < gen_nb_xmlCatalogPrefer;n_prefer++) {
-        mem_base = xmlMemBlocks();
-        prefer = gen_xmlCatalogPrefer(n_prefer, 0);
-
-        ret_val = xmlCatalogSetDefaultPrefer(prefer);
-        desret_xmlCatalogPrefer(ret_val);
-        call_tests++;
-        des_xmlCatalogPrefer(n_prefer, prefer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogSetDefaultPrefer",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_prefer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCatalogSetDefaults(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlCatalogAllow allow; /* what catalogs should be accepted */
-    int n_allow;
-
-    for (n_allow = 0;n_allow < gen_nb_xmlCatalogAllow;n_allow++) {
-        mem_base = xmlMemBlocks();
-        allow = gen_xmlCatalogAllow(n_allow, 0);
-
-        xmlCatalogSetDefaults(allow);
-        call_tests++;
-        des_xmlCatalogAllow(n_allow, allow, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCatalogSetDefaults",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_allow);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlConvertSGMLCatalog(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlCatalogPtr catal; /* the catalog */
-    int n_catal;
-
-    for (n_catal = 0;n_catal < gen_nb_xmlCatalogPtr;n_catal++) {
-        mem_base = xmlMemBlocks();
-        catal = gen_xmlCatalogPtr(n_catal, 0);
-
-        ret_val = xmlConvertSGMLCatalog(catal);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCatalogPtr(n_catal, catal, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlConvertSGMLCatalog",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_catal);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitializeCatalog(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlInitializeCatalog();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitializeCatalog",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLoadACatalog(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlLoadCatalog(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int ret_val;
-    const char * filename; /* a file path */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlLoadCatalog(filename);
-        desret_int(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLoadCatalogs(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    const char * pathss; /* a list of directories separated by a colon or a space. */
-    int n_pathss;
-
-    for (n_pathss = 0;n_pathss < gen_nb_const_char_ptr;n_pathss++) {
-        pathss = gen_const_char_ptr(n_pathss, 0);
-
-        xmlLoadCatalogs(pathss);
-        call_tests++;
-        des_const_char_ptr(n_pathss, pathss, 0);
-        xmlResetLastError();
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLoadSGMLSuperCatalog(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewCatalog(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseCatalogFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_CATALOG_ENABLED)
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlParseCatalogFile(filename);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseCatalogFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_catalog(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing catalog : 27 of 36 functions ...\n");
-    test_ret += test_xmlACatalogAdd();
-    test_ret += test_xmlACatalogDump();
-    test_ret += test_xmlACatalogRemove();
-    test_ret += test_xmlACatalogResolve();
-    test_ret += test_xmlACatalogResolvePublic();
-    test_ret += test_xmlACatalogResolveSystem();
-    test_ret += test_xmlACatalogResolveURI();
-    test_ret += test_xmlCatalogAdd();
-    test_ret += test_xmlCatalogCleanup();
-    test_ret += test_xmlCatalogConvert();
-    test_ret += test_xmlCatalogDump();
-    test_ret += test_xmlCatalogGetDefaults();
-    test_ret += test_xmlCatalogIsEmpty();
-    test_ret += test_xmlCatalogLocalResolve();
-    test_ret += test_xmlCatalogLocalResolveURI();
-    test_ret += test_xmlCatalogRemove();
-    test_ret += test_xmlCatalogResolve();
-    test_ret += test_xmlCatalogResolvePublic();
-    test_ret += test_xmlCatalogResolveSystem();
-    test_ret += test_xmlCatalogResolveURI();
-    test_ret += test_xmlCatalogSetDefaultPrefer();
-    test_ret += test_xmlCatalogSetDefaults();
-    test_ret += test_xmlConvertSGMLCatalog();
-    test_ret += test_xmlInitializeCatalog();
-    test_ret += test_xmlLoadACatalog();
-    test_ret += test_xmlLoadCatalog();
-    test_ret += test_xmlLoadCatalogs();
-    test_ret += test_xmlLoadSGMLSuperCatalog();
-    test_ret += test_xmlNewCatalog();
-    test_ret += test_xmlParseCatalogFile();
-
-    if (test_ret != 0)
-	printf("Module catalog: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-#define gen_nb_const_xmlChRangeGroup_ptr 1
-#define gen_const_xmlChRangeGroup_ptr(no, nr) NULL
-#define des_const_xmlChRangeGroup_ptr(no, val, nr)
-
-static int
-test_xmlCharInRange(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int val; /* character to be validated */
-    int n_val;
-    const xmlChRangeGroup * rptr; /* pointer to range to be used to validate */
-    int n_rptr;
-
-    for (n_val = 0;n_val < gen_nb_unsigned_int;n_val++) {
-    for (n_rptr = 0;n_rptr < gen_nb_const_xmlChRangeGroup_ptr;n_rptr++) {
-        mem_base = xmlMemBlocks();
-        val = gen_unsigned_int(n_val, 0);
-        rptr = gen_const_xmlChRangeGroup_ptr(n_rptr, 1);
-
-        ret_val = xmlCharInRange(val, rptr);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_val, val, 0);
-        des_const_xmlChRangeGroup_ptr(n_rptr, rptr, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharInRange",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf(" %d", n_rptr);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsBaseChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsBaseChar(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsBaseChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsBlank(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsBlank(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsBlank",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsChar(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsCombining(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsCombining(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsCombining",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsDigit(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsDigit(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsDigit",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsExtender(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsExtender(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsExtender",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsIdeographic(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsIdeographic(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsIdeographic",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsPubidChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned int ch; /* character to validate */
-    int n_ch;
-
-    for (n_ch = 0;n_ch < gen_nb_unsigned_int;n_ch++) {
-        mem_base = xmlMemBlocks();
-        ch = gen_unsigned_int(n_ch, 0);
-
-        ret_val = xmlIsPubidChar(ch);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_int(n_ch, ch, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsPubidChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ch);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_chvalid(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing chvalid : 9 of 9 functions ...\n");
-    test_ret += test_xmlCharInRange();
-    test_ret += test_xmlIsBaseChar();
-    test_ret += test_xmlIsBlank();
-    test_ret += test_xmlIsChar();
-    test_ret += test_xmlIsCombining();
-    test_ret += test_xmlIsDigit();
-    test_ret += test_xmlIsExtender();
-    test_ret += test_xmlIsIdeographic();
-    test_ret += test_xmlIsPubidChar();
-
-    if (test_ret != 0)
-	printf("Module chvalid: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlDebugCheckDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    int ret_val;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlDebugCheckDocument(output, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugCheckDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpAttr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlAttrPtr attr; /* the attribute */
-    int n_attr;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        attr = gen_xmlAttrPtr(n_attr, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlDebugDumpAttr(output, attr, depth);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlAttrPtr(n_attr, attr, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpAttr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_attr);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpAttrList(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlAttrPtr attr; /* the attribute list */
-    int n_attr;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        attr = gen_xmlAttrPtr(n_attr, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlDebugDumpAttrList(output, attr, depth);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlAttrPtr(n_attr, attr, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpAttrList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_attr);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlDtdPtr dtd; /* the DTD */
-    int n_dtd;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        dtd = gen_xmlDtdPtr(n_dtd, 1);
-
-        xmlDebugDumpDTD(output, dtd);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlDtdPtr(n_dtd, dtd, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_dtd);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        xmlDebugDumpDocument(output, doc);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpDocumentHead(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        xmlDebugDumpDocumentHead(output, doc);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpDocumentHead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpEntities(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        xmlDebugDumpEntities(output, doc);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpEntities",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlDebugDumpNode(output, node, depth);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_node);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpNodeList(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlNodePtr node; /* the node list */
-    int n_node;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlDebugDumpNodeList(output, node, depth);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpNodeList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_node);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpOneNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlDebugDumpOneNode(output, node, depth);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpOneNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_node);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDebugDumpString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    const xmlChar * str; /* the string */
-    int n_str;
-
-    for (n_output = 0;n_output < gen_nb_debug_FILE_ptr;n_output++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        output = gen_debug_FILE_ptr(n_output, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-
-        xmlDebugDumpString(output, str);
-        call_tests++;
-        des_debug_FILE_ptr(n_output, output, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDebugDumpString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_debugXML(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing debugXML : 11 of 11 functions ...\n");
-    test_ret += test_xmlDebugCheckDocument();
-    test_ret += test_xmlDebugDumpAttr();
-    test_ret += test_xmlDebugDumpAttrList();
-    test_ret += test_xmlDebugDumpDTD();
-    test_ret += test_xmlDebugDumpDocument();
-    test_ret += test_xmlDebugDumpDocumentHead();
-    test_ret += test_xmlDebugDumpEntities();
-    test_ret += test_xmlDebugDumpNode();
-    test_ret += test_xmlDebugDumpNodeList();
-    test_ret += test_xmlDebugDumpOneNode();
-    test_ret += test_xmlDebugDumpString();
-
-    if (test_ret != 0)
-	printf("Module debugXML: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlDictCleanup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlDictCleanup();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictCleanup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictCreate(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDictPtr ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlDictCreate();
-        desret_xmlDictPtr(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictCreate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictCreateSub(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDictPtr ret_val;
-    xmlDictPtr sub; /* an existing dictionary */
-    int n_sub;
-
-    for (n_sub = 0;n_sub < gen_nb_xmlDictPtr;n_sub++) {
-        mem_base = xmlMemBlocks();
-        sub = gen_xmlDictPtr(n_sub, 0);
-
-        ret_val = xmlDictCreateSub(sub);
-        desret_xmlDictPtr(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_sub, sub, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictCreateSub",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sub);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictExists(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlDictPtr dict; /* the dictionary */
-    int n_dict;
-    const xmlChar * name; /* the name of the userdata */
-    int n_name;
-    int len; /* the length of the name, if -1 it is recomputed */
-    int n_len;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        len = gen_int(n_len, 2);
-        if ((name != NULL) &&
-            (len > xmlStrlen(BAD_CAST name)))
-            len = 0;
-
-        ret_val = xmlDictExists(dict, name, len);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictExists",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf(" %d", n_name);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictGetUsage(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictLookup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlDictPtr dict; /* dictionary */
-    int n_dict;
-    const xmlChar * name; /* string key */
-    int n_name;
-    int len; /* length of the key, if -1 it is recomputed */
-    int n_len;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        len = gen_int(n_len, 2);
-        if ((name != NULL) &&
-            (len > xmlStrlen(BAD_CAST name)))
-            len = 0;
-
-        ret_val = xmlDictLookup(dict, name, len);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf(" %d", n_name);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictOwns(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDictPtr dict; /* the dictionary */
-    int n_dict;
-    const xmlChar * str; /* the string */
-    int n_str;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-
-        ret_val = xmlDictOwns(dict, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictOwns",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictQLookup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlDictPtr dict; /* the dictionary */
-    int n_dict;
-    const xmlChar * prefix; /* the prefix */
-    int n_prefix;
-    const xmlChar * name; /* the name */
-    int n_name;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-
-        ret_val = xmlDictQLookup(dict, prefix, name);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictQLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictReference(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDictPtr dict; /* the dictionary */
-    int n_dict;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-
-        ret_val = xmlDictReference(dict);
-        xmlDictFree(dict);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictReference",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictSetLimit(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlDictSize(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDictPtr dict; /* the dictionary */
-    int n_dict;
-
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-        mem_base = xmlMemBlocks();
-        dict = gen_xmlDictPtr(n_dict, 0);
-
-        ret_val = xmlDictSize(dict);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDictPtr(n_dict, dict, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDictSize",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dict);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitializeDict(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlInitializeDict();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitializeDict",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_dict(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing dict : 10 of 13 functions ...\n");
-    test_ret += test_xmlDictCleanup();
-    test_ret += test_xmlDictCreate();
-    test_ret += test_xmlDictCreateSub();
-    test_ret += test_xmlDictExists();
-    test_ret += test_xmlDictGetUsage();
-    test_ret += test_xmlDictLookup();
-    test_ret += test_xmlDictOwns();
-    test_ret += test_xmlDictQLookup();
-    test_ret += test_xmlDictReference();
-    test_ret += test_xmlDictSetLimit();
-    test_ret += test_xmlDictSize();
-    test_ret += test_xmlInitializeDict();
-
-    if (test_ret != 0)
-	printf("Module dict: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAddEncodingAlias(void) {
-    int test_ret = 0;
-
-    int ret_val;
-    const char * name; /* the encoding name as parsed, in UTF-8 format (ASCII actually) */
-    int n_name;
-    const char * alias; /* the alias name as parsed, in UTF-8 format (ASCII actually) */
-    int n_alias;
-
-    for (n_name = 0;n_name < gen_nb_const_char_ptr;n_name++) {
-    for (n_alias = 0;n_alias < gen_nb_const_char_ptr;n_alias++) {
-        name = gen_const_char_ptr(n_name, 0);
-        alias = gen_const_char_ptr(n_alias, 1);
-
-        ret_val = xmlAddEncodingAlias(name, alias);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_name, name, 0);
-        des_const_char_ptr(n_alias, alias, 1);
-        xmlResetLastError();
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlCharEncodingHandler_ptr 1
-#define gen_xmlCharEncodingHandler_ptr(no, nr) NULL
-#define des_xmlCharEncodingHandler_ptr(no, val, nr)
-
-static int
-test_xmlCharEncCloseFunc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlCharEncodingHandler * handler; /* char encoding transformation data structure */
-    int n_handler;
-
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandler_ptr;n_handler++) {
-        mem_base = xmlMemBlocks();
-        handler = gen_xmlCharEncodingHandler_ptr(n_handler, 0);
-
-        ret_val = xmlCharEncCloseFunc(handler);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCharEncodingHandler_ptr(n_handler, handler, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharEncCloseFunc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_handler);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCharEncFirstLine(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlCharEncodingHandler * handler; /* char encoding transformation data structure */
-    int n_handler;
-    xmlBufferPtr out; /* an xmlBuffer for the output. */
-    int n_out;
-    xmlBufferPtr in; /* an xmlBuffer for the input */
-    int n_in;
-
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandler_ptr;n_handler++) {
-    for (n_out = 0;n_out < gen_nb_xmlBufferPtr;n_out++) {
-    for (n_in = 0;n_in < gen_nb_xmlBufferPtr;n_in++) {
-        mem_base = xmlMemBlocks();
-        handler = gen_xmlCharEncodingHandler_ptr(n_handler, 0);
-        out = gen_xmlBufferPtr(n_out, 1);
-        in = gen_xmlBufferPtr(n_in, 2);
-
-        ret_val = xmlCharEncFirstLine(handler, out, in);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCharEncodingHandler_ptr(n_handler, handler, 0);
-        des_xmlBufferPtr(n_out, out, 1);
-        des_xmlBufferPtr(n_in, in, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharEncFirstLine",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_handler);
-            printf(" %d", n_out);
-            printf(" %d", n_in);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCharEncInFunc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlCharEncodingHandler * handler; /* char encoding transformation data structure */
-    int n_handler;
-    xmlBufferPtr out; /* an xmlBuffer for the output. */
-    int n_out;
-    xmlBufferPtr in; /* an xmlBuffer for the input */
-    int n_in;
-
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandler_ptr;n_handler++) {
-    for (n_out = 0;n_out < gen_nb_xmlBufferPtr;n_out++) {
-    for (n_in = 0;n_in < gen_nb_xmlBufferPtr;n_in++) {
-        mem_base = xmlMemBlocks();
-        handler = gen_xmlCharEncodingHandler_ptr(n_handler, 0);
-        out = gen_xmlBufferPtr(n_out, 1);
-        in = gen_xmlBufferPtr(n_in, 2);
-
-        ret_val = xmlCharEncInFunc(handler, out, in);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCharEncodingHandler_ptr(n_handler, handler, 0);
-        des_xmlBufferPtr(n_out, out, 1);
-        des_xmlBufferPtr(n_in, in, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharEncInFunc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_handler);
-            printf(" %d", n_out);
-            printf(" %d", n_in);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCharEncNewCustomHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCharEncOutFunc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlCharEncodingHandler * handler; /* char encoding transformation data structure */
-    int n_handler;
-    xmlBufferPtr out; /* an xmlBuffer for the output. */
-    int n_out;
-    xmlBufferPtr in; /* an xmlBuffer for the input */
-    int n_in;
-
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandler_ptr;n_handler++) {
-    for (n_out = 0;n_out < gen_nb_xmlBufferPtr;n_out++) {
-    for (n_in = 0;n_in < gen_nb_xmlBufferPtr;n_in++) {
-        mem_base = xmlMemBlocks();
-        handler = gen_xmlCharEncodingHandler_ptr(n_handler, 0);
-        out = gen_xmlBufferPtr(n_out, 1);
-        in = gen_xmlBufferPtr(n_in, 2);
-
-        ret_val = xmlCharEncOutFunc(handler, out, in);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlCharEncodingHandler_ptr(n_handler, handler, 0);
-        des_xmlBufferPtr(n_out, out, 1);
-        des_xmlBufferPtr(n_in, in, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharEncOutFunc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_handler);
-            printf(" %d", n_out);
-            printf(" %d", n_in);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCleanupCharEncodingHandlers(void) {
-    int test_ret = 0;
-
-
-
-        xmlCleanupCharEncodingHandlers();
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCleanupEncodingAliases(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlCleanupEncodingAliases();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCleanupEncodingAliases",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlDelEncodingAlias(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const char * alias; /* the alias name as parsed, in UTF-8 format (ASCII actually) */
-    int n_alias;
-
-    for (n_alias = 0;n_alias < gen_nb_const_char_ptr;n_alias++) {
-        mem_base = xmlMemBlocks();
-        alias = gen_const_char_ptr(n_alias, 0);
-
-        ret_val = xmlDelEncodingAlias(alias);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_alias, alias, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDelEncodingAlias",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_alias);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDetectCharEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlCharEncoding ret_val;
-    const unsigned char * in; /* 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). */
-    int n_in;
-    int len; /* pointer to the length of the buffer */
-    int n_len;
-
-    for (n_in = 0;n_in < gen_nb_const_unsigned_char_ptr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        in = gen_const_unsigned_char_ptr(n_in, 0);
-        len = gen_int(n_len, 1);
-
-        ret_val = xmlDetectCharEncoding(in, len);
-        desret_xmlCharEncoding(ret_val);
-        call_tests++;
-        des_const_unsigned_char_ptr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDetectCharEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFindCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetCharEncodingName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const char * ret_val;
-    xmlCharEncoding enc; /* the encoding */
-    int n_enc;
-
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        enc = gen_xmlCharEncoding(n_enc, 0);
-
-        ret_val = xmlGetCharEncodingName(enc);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_xmlCharEncoding(n_enc, enc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetCharEncodingName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetEncodingAlias(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const char * ret_val;
-    const char * alias; /* the alias name as parsed, in UTF-8 format (ASCII actually) */
-    int n_alias;
-
-    for (n_alias = 0;n_alias < gen_nb_const_char_ptr;n_alias++) {
-        mem_base = xmlMemBlocks();
-        alias = gen_const_char_ptr(n_alias, 0);
-
-        ret_val = xmlGetEncodingAlias(alias);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_alias, alias, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetEncodingAlias",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_alias);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitCharEncodingHandlers(void) {
-    int test_ret = 0;
-
-
-
-        xmlInitCharEncodingHandlers();
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsolat1ToUTF8(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    unsigned char * out; /* a pointer to an array of bytes to store the result */
-    int n_out;
-    int * outlen; /* the length of @out */
-    int n_outlen;
-    const unsigned char * in; /* a pointer to an array of ISO Latin 1 chars */
-    int n_in;
-    int * inlen; /* the length of @in */
-    int n_inlen;
-
-    for (n_out = 0;n_out < gen_nb_unsigned_char_ptr;n_out++) {
-    for (n_outlen = 0;n_outlen < gen_nb_int_ptr;n_outlen++) {
-    for (n_in = 0;n_in < gen_nb_const_unsigned_char_ptr;n_in++) {
-    for (n_inlen = 0;n_inlen < gen_nb_int_ptr;n_inlen++) {
-        mem_base = xmlMemBlocks();
-        out = gen_unsigned_char_ptr(n_out, 0);
-        outlen = gen_int_ptr(n_outlen, 1);
-        in = gen_const_unsigned_char_ptr(n_in, 2);
-        inlen = gen_int_ptr(n_inlen, 3);
-
-        ret_val = xmlIsolat1ToUTF8(out, outlen, in, inlen);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_char_ptr(n_out, out, 0);
-        des_int_ptr(n_outlen, outlen, 1);
-        des_const_unsigned_char_ptr(n_in, in, 2);
-        des_int_ptr(n_inlen, inlen, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsolat1ToUTF8",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_outlen);
-            printf(" %d", n_in);
-            printf(" %d", n_inlen);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLookupCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlOpenCharEncodingHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseCharEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlCharEncoding ret_val;
-    const char * name; /* the encoding name as parsed, in UTF-8 format (ASCII actually) */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_char_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_char_ptr(n_name, 0);
-
-        ret_val = xmlParseCharEncoding(name);
-        desret_xmlCharEncoding(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseCharEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlCharEncodingHandlerPtr 1
-#define gen_xmlCharEncodingHandlerPtr(no, nr) NULL
-#define des_xmlCharEncodingHandlerPtr(no, val, nr)
-
-static int
-test_xmlRegisterCharEncodingHandler(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlCharEncodingHandlerPtr handler; /* the xmlCharEncodingHandlerPtr handler block */
-    int n_handler;
-
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandlerPtr;n_handler++) {
-        mem_base = xmlMemBlocks();
-        handler = gen_xmlCharEncodingHandlerPtr(n_handler, 0);
-
-        xmlRegisterCharEncodingHandler(handler);
-        call_tests++;
-        des_xmlCharEncodingHandlerPtr(n_handler, handler, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegisterCharEncodingHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_handler);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8ToIsolat1(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    unsigned char * out; /* a pointer to an array of bytes to store the result */
-    int n_out;
-    int * outlen; /* the length of @out */
-    int n_outlen;
-    const unsigned char * in; /* a pointer to an array of UTF-8 chars */
-    int n_in;
-    int * inlen; /* the length of @in */
-    int n_inlen;
-
-    for (n_out = 0;n_out < gen_nb_unsigned_char_ptr;n_out++) {
-    for (n_outlen = 0;n_outlen < gen_nb_int_ptr;n_outlen++) {
-    for (n_in = 0;n_in < gen_nb_const_unsigned_char_ptr;n_in++) {
-    for (n_inlen = 0;n_inlen < gen_nb_int_ptr;n_inlen++) {
-        mem_base = xmlMemBlocks();
-        out = gen_unsigned_char_ptr(n_out, 0);
-        outlen = gen_int_ptr(n_outlen, 1);
-        in = gen_const_unsigned_char_ptr(n_in, 2);
-        inlen = gen_int_ptr(n_inlen, 3);
-
-        ret_val = xmlUTF8ToIsolat1(out, outlen, in, inlen);
-        desret_int(ret_val);
-        call_tests++;
-        des_unsigned_char_ptr(n_out, out, 0);
-        des_int_ptr(n_outlen, outlen, 1);
-        des_const_unsigned_char_ptr(n_in, in, 2);
-        des_int_ptr(n_inlen, inlen, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8ToIsolat1",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_outlen);
-            printf(" %d", n_in);
-            printf(" %d", n_inlen);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_encoding(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing encoding : 16 of 23 functions ...\n");
-    test_ret += test_xmlAddEncodingAlias();
-    test_ret += test_xmlCharEncCloseFunc();
-    test_ret += test_xmlCharEncFirstLine();
-    test_ret += test_xmlCharEncInFunc();
-    test_ret += test_xmlCharEncNewCustomHandler();
-    test_ret += test_xmlCharEncOutFunc();
-    test_ret += test_xmlCleanupCharEncodingHandlers();
-    test_ret += test_xmlCleanupEncodingAliases();
-    test_ret += test_xmlCreateCharEncodingHandler();
-    test_ret += test_xmlDelEncodingAlias();
-    test_ret += test_xmlDetectCharEncoding();
-    test_ret += test_xmlFindCharEncodingHandler();
-    test_ret += test_xmlGetCharEncodingHandler();
-    test_ret += test_xmlGetCharEncodingName();
-    test_ret += test_xmlGetEncodingAlias();
-    test_ret += test_xmlInitCharEncodingHandlers();
-    test_ret += test_xmlIsolat1ToUTF8();
-    test_ret += test_xmlLookupCharEncodingHandler();
-    test_ret += test_xmlNewCharEncodingHandler();
-    test_ret += test_xmlOpenCharEncodingHandler();
-    test_ret += test_xmlParseCharEncoding();
-    test_ret += test_xmlRegisterCharEncodingHandler();
-    test_ret += test_xmlUTF8ToIsolat1();
-
-    if (test_ret != 0)
-	printf("Module encoding: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAddDocEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    int type; /* the entity type XML_xxx_yyy_ENTITY */
-    int n_type;
-    const xmlChar * ExternalID; /* the entity external ID if available */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the entity system ID if available */
-    int n_SystemID;
-    const xmlChar * content; /* the entity content */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_int(n_type, 2);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 3);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 4);
-        content = gen_const_xmlChar_ptr(n_content, 5);
-
-        ret_val = xmlAddDocEntity(doc, name, type, ExternalID, SystemID, content);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_type, type, 2);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 3);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 4);
-        des_const_xmlChar_ptr(n_content, content, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddDocEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddDtdEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    int type; /* the entity type XML_xxx_yyy_ENTITY */
-    int n_type;
-    const xmlChar * ExternalID; /* the entity external ID if available */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the entity system ID if available */
-    int n_SystemID;
-    const xmlChar * content; /* the entity content */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_int(n_type, 2);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 3);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 4);
-        content = gen_const_xmlChar_ptr(n_content, 5);
-
-        ret_val = xmlAddDtdEntity(doc, name, type, ExternalID, SystemID, content);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_type, type, 2);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 3);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 4);
-        des_const_xmlChar_ptr(n_content, content, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddDtdEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlEntityPtr_ptr 1
-#define gen_xmlEntityPtr_ptr(no, nr) NULL
-#define des_xmlEntityPtr_ptr(no, val, nr)
-
-static int
-test_xmlAddEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    int extSubset; /* add to the external or internal subset */
-    int n_extSubset;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    int type; /* the entity type XML_xxx_yyy_ENTITY */
-    int n_type;
-    const xmlChar * ExternalID; /* the entity external ID if available */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the entity system ID if available */
-    int n_SystemID;
-    const xmlChar * content; /* the entity content */
-    int n_content;
-    xmlEntityPtr * out; /* pointer to resulting entity (optional) */
-    int n_out;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_extSubset = 0;n_extSubset < gen_nb_int;n_extSubset++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_out = 0;n_out < gen_nb_xmlEntityPtr_ptr;n_out++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        extSubset = gen_int(n_extSubset, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        type = gen_int(n_type, 3);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 4);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 5);
-        content = gen_const_xmlChar_ptr(n_content, 6);
-        out = gen_xmlEntityPtr_ptr(n_out, 7);
-
-        ret_val = xmlAddEntity(doc, extSubset, name, type, ExternalID, SystemID, content, out);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_int(n_extSubset, extSubset, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_int(n_type, type, 3);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 4);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 5);
-        des_const_xmlChar_ptr(n_content, content, 6);
-        des_xmlEntityPtr_ptr(n_out, out, 7);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_extSubset);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf(" %d", n_content);
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyEntitiesTable(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateEntitiesTable(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlEntitiesTablePtr 1
-#define gen_xmlEntitiesTablePtr(no, nr) NULL
-#define des_xmlEntitiesTablePtr(no, val, nr)
-
-static int
-test_xmlDumpEntitiesTable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* An XML buffer. */
-    int n_buf;
-    xmlEntitiesTablePtr table; /* An entity table */
-    int n_table;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_table = 0;n_table < gen_nb_xmlEntitiesTablePtr;n_table++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        table = gen_xmlEntitiesTablePtr(n_table, 1);
-
-        xmlDumpEntitiesTable(buf, table);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlEntitiesTablePtr(n_table, table, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpEntitiesTable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_table);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlEntityPtr 1
-#define gen_xmlEntityPtr(no, nr) NULL
-#define des_xmlEntityPtr(no, val, nr)
-
-static int
-test_xmlDumpEntityDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* An XML buffer. */
-    int n_buf;
-    xmlEntityPtr ent; /* An entity table */
-    int n_ent;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_ent = 0;n_ent < gen_nb_xmlEntityPtr;n_ent++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        ent = gen_xmlEntityPtr(n_ent, 1);
-
-        xmlDumpEntityDecl(buf, ent);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlEntityPtr(n_ent, ent, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpEntityDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_ent);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlEncodeEntitiesReentrant(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlDocPtr doc; /* the document containing the string */
-    int n_doc;
-    const xmlChar * input; /* A string to convert to XML. */
-    int n_input;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_input = 0;n_input < gen_nb_const_xmlChar_ptr;n_input++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        input = gen_const_xmlChar_ptr(n_input, 1);
-
-        ret_val = xmlEncodeEntitiesReentrant(doc, input);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_input, input, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlEncodeEntitiesReentrant",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_const_xmlDoc_ptr 1
-#define gen_const_xmlDoc_ptr(no, nr) NULL
-#define des_const_xmlDoc_ptr(no, val, nr)
-
-static int
-test_xmlEncodeSpecialChars(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlDoc * doc; /* unused */
-    int n_doc;
-    const xmlChar * input; /* A string to convert to XML. */
-    int n_input;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_input = 0;n_input < gen_nb_const_xmlChar_ptr;n_input++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        input = gen_const_xmlChar_ptr(n_input, 1);
-
-        ret_val = xmlEncodeSpecialChars(doc, input);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_input, input, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlEncodeSpecialChars",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDocEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    const xmlDoc * doc; /* the document referencing the entity */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetDocEntity(doc, name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDocEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    xmlDocPtr doc; /* the document referencing the entity */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetDtdEntity(doc, name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDtdEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetParameterEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    xmlDocPtr doc; /* the document referencing the entity */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetParameterEntity(doc, name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetParameterEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetPredefinedEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-
-        ret_val = xmlGetPredefinedEntity(name);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetPredefinedEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlEntityPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    int type; /* the entity type XML_xxx_yyy_ENTITY */
-    int n_type;
-    const xmlChar * ExternalID; /* the entity external ID if available */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the entity system ID if available */
-    int n_SystemID;
-    const xmlChar * content; /* the entity content */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_int;n_type++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_int(n_type, 2);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 3);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 4);
-        content = gen_const_xmlChar_ptr(n_content, 5);
-
-        ret_val = xmlNewEntity(doc, name, type, ExternalID, SystemID, content);
-        desret_xmlEntityPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_int(n_type, type, 2);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 3);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 4);
-        des_const_xmlChar_ptr(n_content, content, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_entities(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing entities : 12 of 16 functions ...\n");
-    test_ret += test_xmlAddDocEntity();
-    test_ret += test_xmlAddDtdEntity();
-    test_ret += test_xmlAddEntity();
-    test_ret += test_xmlCopyEntitiesTable();
-    test_ret += test_xmlCreateEntitiesTable();
-    test_ret += test_xmlDumpEntitiesTable();
-    test_ret += test_xmlDumpEntityDecl();
-    test_ret += test_xmlEncodeEntitiesReentrant();
-    test_ret += test_xmlEncodeSpecialChars();
-    test_ret += test_xmlGetDocEntity();
-    test_ret += test_xmlGetDtdEntity();
-    test_ret += test_xmlGetParameterEntity();
-    test_ret += test_xmlGetPredefinedEntity();
-    test_ret += test_xmlNewEntity();
-
-    if (test_ret != 0)
-	printf("Module entities: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlHashAdd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* string key */
-    int n_key;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        payload = gen_void_ptr(n_payload, 2);
-
-        ret_val = xmlHashAdd(hash, key, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_void_ptr(n_payload, payload, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAdd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashAdd2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        payload = gen_void_ptr(n_payload, 3);
-
-        ret_val = xmlHashAdd2(hash, key, key2, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_void_ptr(n_payload, payload, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAdd2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashAdd3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    const xmlChar * key3; /* third string key */
-    int n_key3;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_key3 = 0;n_key3 < gen_nb_const_xmlChar_ptr;n_key3++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        key3 = gen_const_xmlChar_ptr(n_key3, 3);
-        payload = gen_void_ptr(n_payload, 4);
-
-        ret_val = xmlHashAdd3(hash, key, key2, key3, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_const_xmlChar_ptr(n_key3, key3, 3);
-        des_void_ptr(n_payload, payload, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAdd3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_key3);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashAddEntry(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* string key */
-    int n_key;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        payload = gen_void_ptr(n_payload, 2);
-
-        ret_val = xmlHashAddEntry(hash, key, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_void_ptr(n_payload, payload, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAddEntry",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashAddEntry2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        payload = gen_void_ptr(n_payload, 3);
-
-        ret_val = xmlHashAddEntry2(hash, key, key2, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_void_ptr(n_payload, payload, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAddEntry2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashAddEntry3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    const xmlChar * key3; /* third string key */
-    int n_key3;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_key3 = 0;n_key3 < gen_nb_const_xmlChar_ptr;n_key3++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        key3 = gen_const_xmlChar_ptr(n_key3, 3);
-        payload = gen_void_ptr(n_payload, 4);
-
-        ret_val = xmlHashAddEntry3(hash, key, key2, key3, payload);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_const_xmlChar_ptr(n_key3, key3, 3);
-        des_void_ptr(n_payload, payload, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashAddEntry3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_key3);
-            printf(" %d", n_payload);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashCopy(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashCopySafe(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashCreate(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashCreateDict(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashDefaultDeallocator(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * entry; /* hash table entry */
-    int n_entry;
-    const xmlChar * key; /* the entry's string key */
-    int n_key;
-
-    for (n_entry = 0;n_entry < gen_nb_void_ptr;n_entry++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-        mem_base = xmlMemBlocks();
-        entry = gen_void_ptr(n_entry, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-
-        xmlHashDefaultDeallocator(entry, key);
-        call_tests++;
-        des_void_ptr(n_entry, entry, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashDefaultDeallocator",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_entry);
-            printf(" %d", n_key);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashLookup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* string key */
-    int n_key;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-
-        ret_val = xmlHashLookup(hash, key);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashLookup2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-
-        ret_val = xmlHashLookup2(hash, key, key2);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashLookup2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashLookup3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    const xmlChar * key3; /* third string key */
-    int n_key3;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_key3 = 0;n_key3 < gen_nb_const_xmlChar_ptr;n_key3++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        key3 = gen_const_xmlChar_ptr(n_key3, 3);
-
-        ret_val = xmlHashLookup3(hash, key, key2, key3);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_const_xmlChar_ptr(n_key3, key3, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashLookup3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_key3);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashQLookup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * prefix; /* prefix of the string key */
-    int n_prefix;
-    const xmlChar * name; /* local name of the string key */
-    int n_name;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-
-        ret_val = xmlHashQLookup(hash, prefix, name);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashQLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashQLookup2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * prefix; /* first prefix */
-    int n_prefix;
-    const xmlChar * name; /* first local name */
-    int n_name;
-    const xmlChar * prefix2; /* second prefix */
-    int n_prefix2;
-    const xmlChar * name2; /* second local name */
-    int n_name2;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefix2 = 0;n_prefix2 < gen_nb_const_xmlChar_ptr;n_prefix2++) {
-    for (n_name2 = 0;n_name2 < gen_nb_const_xmlChar_ptr;n_name2++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        prefix2 = gen_const_xmlChar_ptr(n_prefix2, 3);
-        name2 = gen_const_xmlChar_ptr(n_name2, 4);
-
-        ret_val = xmlHashQLookup2(hash, prefix, name, prefix2, name2);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_prefix2, prefix2, 3);
-        des_const_xmlChar_ptr(n_name2, name2, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashQLookup2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_prefix2);
-            printf(" %d", n_name2);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashQLookup3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * prefix; /* first prefix */
-    int n_prefix;
-    const xmlChar * name; /* first local name */
-    int n_name;
-    const xmlChar * prefix2; /* second prefix */
-    int n_prefix2;
-    const xmlChar * name2; /* second local name */
-    int n_name2;
-    const xmlChar * prefix3; /* third prefix */
-    int n_prefix3;
-    const xmlChar * name3; /* third local name */
-    int n_name3;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefix2 = 0;n_prefix2 < gen_nb_const_xmlChar_ptr;n_prefix2++) {
-    for (n_name2 = 0;n_name2 < gen_nb_const_xmlChar_ptr;n_name2++) {
-    for (n_prefix3 = 0;n_prefix3 < gen_nb_const_xmlChar_ptr;n_prefix3++) {
-    for (n_name3 = 0;n_name3 < gen_nb_const_xmlChar_ptr;n_name3++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        prefix2 = gen_const_xmlChar_ptr(n_prefix2, 3);
-        name2 = gen_const_xmlChar_ptr(n_name2, 4);
-        prefix3 = gen_const_xmlChar_ptr(n_prefix3, 5);
-        name3 = gen_const_xmlChar_ptr(n_name3, 6);
-
-        ret_val = xmlHashQLookup3(hash, prefix, name, prefix2, name2, prefix3, name3);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_prefix2, prefix2, 3);
-        des_const_xmlChar_ptr(n_name2, name2, 4);
-        des_const_xmlChar_ptr(n_prefix3, prefix3, 5);
-        des_const_xmlChar_ptr(n_name3, name3, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashQLookup3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_prefix2);
-            printf(" %d", n_name2);
-            printf(" %d", n_prefix3);
-            printf(" %d", n_name3);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashRemoveEntry(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* string key */
-    int n_key;
-    xmlHashDeallocator dealloc; /* deallocator function for removed item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 2);
-
-        ret_val = xmlHashRemoveEntry(hash, key, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashRemoveEntry",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashRemoveEntry2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    xmlHashDeallocator dealloc; /* deallocator function for removed item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 3);
-
-        ret_val = xmlHashRemoveEntry2(hash, key, key2, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashRemoveEntry2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashRemoveEntry3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    const xmlChar * key3; /* third string key */
-    int n_key3;
-    xmlHashDeallocator dealloc; /* deallocator function for removed item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_key3 = 0;n_key3 < gen_nb_const_xmlChar_ptr;n_key3++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        key3 = gen_const_xmlChar_ptr(n_key3, 3);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 4);
-
-        ret_val = xmlHashRemoveEntry3(hash, key, key2, key3, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_const_xmlChar_ptr(n_key3, key3, 3);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashRemoveEntry3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_key3);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashScan(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashScan3(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashScanFull(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashScanFull3(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashSize(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-
-        ret_val = xmlHashSize(hash);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashSize",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashUpdateEntry(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* string key */
-    int n_key;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-    xmlHashDeallocator dealloc; /* deallocator function for replaced item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        payload = gen_void_ptr(n_payload, 2);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 3);
-
-        ret_val = xmlHashUpdateEntry(hash, key, payload, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_void_ptr(n_payload, payload, 2);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashUpdateEntry",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_payload);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashUpdateEntry2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-    xmlHashDeallocator dealloc; /* deallocator function for replaced item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        payload = gen_void_ptr(n_payload, 3);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 4);
-
-        ret_val = xmlHashUpdateEntry2(hash, key, key2, payload, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_void_ptr(n_payload, payload, 3);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashUpdateEntry2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_payload);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHashUpdateEntry3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlHashTablePtr hash; /* hash table */
-    int n_hash;
-    const xmlChar * key; /* first string key */
-    int n_key;
-    const xmlChar * key2; /* second string key */
-    int n_key2;
-    const xmlChar * key3; /* third string key */
-    int n_key3;
-    void * payload; /* pointer to the payload */
-    int n_payload;
-    xmlHashDeallocator dealloc; /* deallocator function for replaced item or NULL */
-    int n_dealloc;
-
-    for (n_hash = 0;n_hash < gen_nb_xmlHashTablePtr;n_hash++) {
-    for (n_key = 0;n_key < gen_nb_const_xmlChar_ptr;n_key++) {
-    for (n_key2 = 0;n_key2 < gen_nb_const_xmlChar_ptr;n_key2++) {
-    for (n_key3 = 0;n_key3 < gen_nb_const_xmlChar_ptr;n_key3++) {
-    for (n_payload = 0;n_payload < gen_nb_void_ptr;n_payload++) {
-    for (n_dealloc = 0;n_dealloc < gen_nb_xmlHashDeallocator;n_dealloc++) {
-        mem_base = xmlMemBlocks();
-        hash = gen_xmlHashTablePtr(n_hash, 0);
-        key = gen_const_xmlChar_ptr(n_key, 1);
-        key2 = gen_const_xmlChar_ptr(n_key2, 2);
-        key3 = gen_const_xmlChar_ptr(n_key3, 3);
-        payload = gen_void_ptr(n_payload, 4);
-        dealloc = gen_xmlHashDeallocator(n_dealloc, 5);
-
-        ret_val = xmlHashUpdateEntry3(hash, key, key2, key3, payload, dealloc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlHashTablePtr(n_hash, hash, 0);
-        des_const_xmlChar_ptr(n_key, key, 1);
-        des_const_xmlChar_ptr(n_key2, key2, 2);
-        des_const_xmlChar_ptr(n_key3, key3, 3);
-        des_void_ptr(n_payload, payload, 4);
-        des_xmlHashDeallocator(n_dealloc, dealloc, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHashUpdateEntry3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_hash);
-            printf(" %d", n_key);
-            printf(" %d", n_key2);
-            printf(" %d", n_key3);
-            printf(" %d", n_payload);
-            printf(" %d", n_dealloc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_hash(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing hash : 20 of 29 functions ...\n");
-    test_ret += test_xmlHashAdd();
-    test_ret += test_xmlHashAdd2();
-    test_ret += test_xmlHashAdd3();
-    test_ret += test_xmlHashAddEntry();
-    test_ret += test_xmlHashAddEntry2();
-    test_ret += test_xmlHashAddEntry3();
-    test_ret += test_xmlHashCopy();
-    test_ret += test_xmlHashCopySafe();
-    test_ret += test_xmlHashCreate();
-    test_ret += test_xmlHashCreateDict();
-    test_ret += test_xmlHashDefaultDeallocator();
-    test_ret += test_xmlHashLookup();
-    test_ret += test_xmlHashLookup2();
-    test_ret += test_xmlHashLookup3();
-    test_ret += test_xmlHashQLookup();
-    test_ret += test_xmlHashQLookup2();
-    test_ret += test_xmlHashQLookup3();
-    test_ret += test_xmlHashRemoveEntry();
-    test_ret += test_xmlHashRemoveEntry2();
-    test_ret += test_xmlHashRemoveEntry3();
-    test_ret += test_xmlHashScan();
-    test_ret += test_xmlHashScan3();
-    test_ret += test_xmlHashScanFull();
-    test_ret += test_xmlHashScanFull3();
-    test_ret += test_xmlHashSize();
-    test_ret += test_xmlHashUpdateEntry();
-    test_ret += test_xmlHashUpdateEntry2();
-    test_ret += test_xmlHashUpdateEntry3();
-
-    if (test_ret != 0)
-	printf("Module hash: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-#define gen_nb_xmlLinkPtr 1
-#define gen_xmlLinkPtr(no, nr) NULL
-#define des_xmlLinkPtr(no, val, nr)
-
-static int
-test_xmlLinkGetData(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlLinkPtr lk; /* a link */
-    int n_lk;
-
-    for (n_lk = 0;n_lk < gen_nb_xmlLinkPtr;n_lk++) {
-        mem_base = xmlMemBlocks();
-        lk = gen_xmlLinkPtr(n_lk, 0);
-
-        ret_val = xmlLinkGetData(lk);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlLinkPtr(n_lk, lk, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlLinkGetData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_lk);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListAppend(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* the data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListAppend(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListAppend",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListClear(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        xmlListClear(l);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListClear",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListCopy(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr cur; /* the new list */
-    int n_cur;
-    xmlListPtr old; /* the old list */
-    int n_old;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlListPtr;n_cur++) {
-    for (n_old = 0;n_old < gen_nb_xmlListPtr;n_old++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlListPtr(n_cur, 0);
-        old = gen_xmlListPtr(n_old, 1);
-
-        ret_val = xmlListCopy(cur, old);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_cur, cur, 0);
-        des_xmlListPtr(n_old, old, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListCopy",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_old);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListCreate(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlListDup(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlListEmpty(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        ret_val = xmlListEmpty(l);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListEmpty",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListEnd(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlListFront(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlListInsert(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* the data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListInsert(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListInsert",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListMerge(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l1; /* the original list */
-    int n_l1;
-    xmlListPtr l2; /* the new list */
-    int n_l2;
-
-    for (n_l1 = 0;n_l1 < gen_nb_xmlListPtr;n_l1++) {
-    for (n_l2 = 0;n_l2 < gen_nb_xmlListPtr;n_l2++) {
-        mem_base = xmlMemBlocks();
-        l1 = gen_xmlListPtr(n_l1, 0);
-        l2 = gen_xmlListPtr(n_l2, 1);
-
-        xmlListMerge(l1, l2);
-        call_tests++;
-        des_xmlListPtr(n_l1, l1, 0);
-        des_xmlListPtr(n_l2, l2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListMerge",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l1);
-            printf(" %d", n_l2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListPopBack(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        xmlListPopBack(l);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListPopBack",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListPopFront(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        xmlListPopFront(l);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListPopFront",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListPushBack(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* new data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListPushBack(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListPushBack",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListPushFront(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* new data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListPushFront(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListPushFront",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListRemoveAll(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* list data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListRemoveAll(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListRemoveAll",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListRemoveFirst(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* list data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListRemoveFirst(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListRemoveFirst",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListRemoveLast(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* list data */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListRemoveLast(l, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListRemoveLast",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListReverse(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        xmlListReverse(l);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListReverse",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListReverseSearch(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* a search value */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListReverseSearch(l, data);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListReverseSearch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListReverseWalk(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlListSearch(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-    void * data; /* a search value */
-    int n_data;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-        data = gen_userdata(n_data, 1);
-
-        ret_val = xmlListSearch(l, data);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        des_userdata(n_data, data, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListSearch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListSize(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        ret_val = xmlListSize(l);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListSize",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListSort(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlListPtr l; /* a list */
-    int n_l;
-
-    for (n_l = 0;n_l < gen_nb_xmlListPtr;n_l++) {
-        mem_base = xmlMemBlocks();
-        l = gen_xmlListPtr(n_l, 0);
-
-        xmlListSort(l);
-        call_tests++;
-        des_xmlListPtr(n_l, l, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlListSort",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_l);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlListWalk(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_list(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing list : 19 of 26 functions ...\n");
-    test_ret += test_xmlLinkGetData();
-    test_ret += test_xmlListAppend();
-    test_ret += test_xmlListClear();
-    test_ret += test_xmlListCopy();
-    test_ret += test_xmlListCreate();
-    test_ret += test_xmlListDup();
-    test_ret += test_xmlListEmpty();
-    test_ret += test_xmlListEnd();
-    test_ret += test_xmlListFront();
-    test_ret += test_xmlListInsert();
-    test_ret += test_xmlListMerge();
-    test_ret += test_xmlListPopBack();
-    test_ret += test_xmlListPopFront();
-    test_ret += test_xmlListPushBack();
-    test_ret += test_xmlListPushFront();
-    test_ret += test_xmlListRemoveAll();
-    test_ret += test_xmlListRemoveFirst();
-    test_ret += test_xmlListRemoveLast();
-    test_ret += test_xmlListReverse();
-    test_ret += test_xmlListReverseSearch();
-    test_ret += test_xmlListReverseWalk();
-    test_ret += test_xmlListSearch();
-    test_ret += test_xmlListSize();
-    test_ret += test_xmlListSort();
-    test_ret += test_xmlListWalk();
-
-    if (test_ret != 0)
-	printf("Module list: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlNanoHTTPAuthHeader(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    const char * ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-
-        ret_val = xmlNanoHTTPAuthHeader(ctx);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPAuthHeader",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPCleanup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlNanoHTTPCleanup();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPCleanup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPContentLength(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-
-        ret_val = xmlNanoHTTPContentLength(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPContentLength",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPEncoding(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    const char * ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-
-        ret_val = xmlNanoHTTPEncoding(ctx);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_char_ptr_ptr 1
-#define gen_char_ptr_ptr(no, nr) NULL
-#define des_char_ptr_ptr(no, val, nr)
-
-static int
-test_xmlNanoHTTPFetch(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * URL; /* The URL to load */
-    int n_URL;
-    const char * filename; /* the filename where the content should be saved */
-    int n_filename;
-    char ** contentType; /* if available the Content-Type information will be returned at that location */
-    int n_contentType;
-
-    for (n_URL = 0;n_URL < gen_nb_fileoutput;n_URL++) {
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_contentType = 0;n_contentType < gen_nb_char_ptr_ptr;n_contentType++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_fileoutput(n_URL, 0);
-        filename = gen_fileoutput(n_filename, 1);
-        contentType = gen_char_ptr_ptr(n_contentType, 2);
-
-        ret_val = xmlNanoHTTPFetch(URL, filename, contentType);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_URL, URL, 0);
-        des_fileoutput(n_filename, filename, 1);
-        des_char_ptr_ptr(n_contentType, contentType, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPFetch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_filename);
-            printf(" %d", n_contentType);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPInit(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlNanoHTTPInit();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPInit",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPMimeType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    const char * ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-
-        ret_val = xmlNanoHTTPMimeType(ctx);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPMimeType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPOpen(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    void * ret_val;
-    const char * URL; /* The URL to load */
-    int n_URL;
-    char ** contentType; /* if available the Content-Type information will be returned at that location */
-    int n_contentType;
-
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_contentType = 0;n_contentType < gen_nb_char_ptr_ptr;n_contentType++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_filepath(n_URL, 0);
-        contentType = gen_char_ptr_ptr(n_contentType, 1);
-
-        ret_val = xmlNanoHTTPOpen(URL, contentType);
-        desret_xmlNanoHTTPCtxtPtr(ret_val);
-        call_tests++;
-        des_filepath(n_URL, URL, 0);
-        des_char_ptr_ptr(n_contentType, contentType, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPOpen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_contentType);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPOpenRedir(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    void * ret_val;
-    const char * URL; /* The URL to load */
-    int n_URL;
-    char ** contentType; /* if available the Content-Type information will be returned at that location */
-    int n_contentType;
-    char ** redir; /* if available the redirected URL will be returned */
-    int n_redir;
-
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_contentType = 0;n_contentType < gen_nb_char_ptr_ptr;n_contentType++) {
-    for (n_redir = 0;n_redir < gen_nb_char_ptr_ptr;n_redir++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_filepath(n_URL, 0);
-        contentType = gen_char_ptr_ptr(n_contentType, 1);
-        redir = gen_char_ptr_ptr(n_redir, 2);
-
-        ret_val = xmlNanoHTTPOpenRedir(URL, contentType, redir);
-        desret_xmlNanoHTTPCtxtPtr(ret_val);
-        call_tests++;
-        des_filepath(n_URL, URL, 0);
-        des_char_ptr_ptr(n_contentType, contentType, 1);
-        des_char_ptr_ptr(n_redir, redir, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPOpenRedir",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_contentType);
-            printf(" %d", n_redir);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPRead(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-    void * dest; /* a buffer */
-    int n_dest;
-    int len; /* the buffer length */
-    int n_len;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-    for (n_dest = 0;n_dest < gen_nb_void_ptr;n_dest++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-        dest = gen_void_ptr(n_dest, 1);
-        len = gen_int(n_len, 2);
-
-        ret_val = xmlNanoHTTPRead(ctx, dest, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        des_void_ptr(n_dest, dest, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_dest);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPRedir(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPReturnCode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * ctx; /* the HTTP context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlNanoHTTPCtxtPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlNanoHTTPCtxtPtr(n_ctx, 0);
-
-        ret_val = xmlNanoHTTPReturnCode(ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNanoHTTPCtxtPtr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPReturnCode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPSave(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * ctxt; /* the HTTP context */
-    int n_ctxt;
-    const char * filename; /* the filename where the content should be saved */
-    int n_filename;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_void_ptr;n_ctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_void_ptr(n_ctxt, 0);
-        filename = gen_fileoutput(n_filename, 1);
-
-        ret_val = xmlNanoHTTPSave(ctxt, filename);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_ctxt, ctxt, 0);
-        des_fileoutput(n_filename, filename, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNanoHTTPSave",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNanoHTTPScanProxy(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    const char * URL; /* The proxy URL used to initialize the proxy context */
-    int n_URL;
-
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-        URL = gen_filepath(n_URL, 0);
-
-        xmlNanoHTTPScanProxy(URL);
-        call_tests++;
-        des_filepath(n_URL, URL, 0);
-        xmlResetLastError();
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_nanohttp(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing nanohttp : 13 of 17 functions ...\n");
-    test_ret += test_xmlNanoHTTPAuthHeader();
-    test_ret += test_xmlNanoHTTPCleanup();
-    test_ret += test_xmlNanoHTTPContentLength();
-    test_ret += test_xmlNanoHTTPEncoding();
-    test_ret += test_xmlNanoHTTPFetch();
-    test_ret += test_xmlNanoHTTPInit();
-    test_ret += test_xmlNanoHTTPMimeType();
-    test_ret += test_xmlNanoHTTPOpen();
-    test_ret += test_xmlNanoHTTPOpenRedir();
-    test_ret += test_xmlNanoHTTPRead();
-    test_ret += test_xmlNanoHTTPRedir();
-    test_ret += test_xmlNanoHTTPReturnCode();
-    test_ret += test_xmlNanoHTTPSave();
-    test_ret += test_xmlNanoHTTPScanProxy();
-
-    if (test_ret != 0)
-	printf("Module nanohttp: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlByteConsumed(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    long ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlByteConsumed(ctxt);
-        desret_long(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlByteConsumed",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCleanupGlobals(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlCleanupGlobals();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCleanupGlobals",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlClearNodeInfoSeq(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserNodeInfoSeqPtr seq; /* a node info sequence pointer */
-    int n_seq;
-
-    for (n_seq = 0;n_seq < gen_nb_xmlParserNodeInfoSeqPtr;n_seq++) {
-        mem_base = xmlMemBlocks();
-        seq = gen_xmlParserNodeInfoSeqPtr(n_seq, 0);
-
-        xmlClearNodeInfoSeq(seq);
-        call_tests++;
-        des_xmlParserNodeInfoSeqPtr(n_seq, seq, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlClearNodeInfoSeq",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_seq);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlClearParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        xmlClearParserCtxt(ctxt);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlClearParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateDocParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const xmlChar * str; /* a pointer to an array of xmlChar */
-    int n_str;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-
-        ret_val = xmlCreateDocParserCtxt(str);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateDocParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreatePushParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PUSH_ENABLED)
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    xmlSAXHandlerPtr sax; /* a SAX handler (optional) */
-    int n_sax;
-    void * user_data; /* user data for SAX callbacks (optional) */
-    int n_user_data;
-    const char * chunk; /* initial chunk (optional, deprecated) */
-    int n_chunk;
-    int size; /* size of initial chunk in bytes */
-    int n_size;
-    const char * filename; /* file name or URI (optional) */
-    int n_filename;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_chunk = 0;n_chunk < gen_nb_const_char_ptr;n_chunk++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        user_data = gen_userdata(n_user_data, 1);
-        chunk = gen_const_char_ptr(n_chunk, 2);
-        size = gen_int(n_size, 3);
-        filename = gen_fileoutput(n_filename, 4);
-        if ((chunk != NULL) &&
-            (size > xmlStrlen(BAD_CAST chunk)))
-            size = 0;
-
-        ret_val = xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_userdata(n_user_data, user_data, 1);
-        des_const_char_ptr(n_chunk, chunk, 2);
-        des_int(n_size, size, 3);
-        des_fileoutput(n_filename, filename, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreatePushParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_chunk);
-            printf(" %d", n_size);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetCatalogs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetCatalogs(ctxt);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetCatalogs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetDeclaredEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetDeclaredEncoding(ctxt);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetDeclaredEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetDocument(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetDocument(ctxt);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetOptions(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetOptions(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetPrivate(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetPrivate(ctxt);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetPrivate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetSaxHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetStandalone(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetStandalone(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetStandalone",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlParserCtxt_ptr 1
-#define gen_xmlParserCtxt_ptr(no, nr) NULL
-#define des_xmlParserCtxt_ptr(no, val, nr)
-
-static int
-test_xmlCtxtGetStatus(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserStatus ret_val;
-    xmlParserCtxt * ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxt_ptr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxt_ptr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetStatus(ctxt);
-        desret_xmlParserStatus(ret_val);
-        call_tests++;
-        des_xmlParserCtxt_ptr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetStatus",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetValidCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetVersion(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtGetVersion(ctxt);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtGetVersion",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtIsHtml(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtIsHtml(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtIsHtml",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtIsStopped(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtIsStopped(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtIsStopped",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtParseContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-    xmlParserInputPtr input; /* parser input */
-    int n_input;
-    xmlNodePtr node; /* target node or document */
-    int n_node;
-    int hasTextDecl; /* whether to parse text declaration */
-    int n_hasTextDecl;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_hasTextDecl = 0;n_hasTextDecl < gen_nb_int;n_hasTextDecl++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-        node = gen_xmlNodePtr(n_node, 2);
-        hasTextDecl = gen_int(n_hasTextDecl, 3);
-
-        ret_val = xmlCtxtParseContent(ctxt, input, node, hasTextDecl);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        des_xmlNodePtr(n_node, node, 2);
-        des_int(n_hasTextDecl, hasTextDecl, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtParseContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf(" %d", n_node);
-            printf(" %d", n_hasTextDecl);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtParseDocument(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserInputPtr input; /* parser input */
-    int n_input;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-
-        ret_val = xmlCtxtParseDocument(ctxt, input);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtParseDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtParseDtd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    xmlDtdPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* a parser context */
-    int n_ctxt;
-    xmlParserInputPtr input; /* a parser input */
-    int n_input;
-    const xmlChar * publicId; /* public ID of the DTD (optional) */
-    int n_publicId;
-    const xmlChar * systemId; /* system ID of the DTD (optional) */
-    int n_systemId;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-    for (n_publicId = 0;n_publicId < gen_nb_const_xmlChar_ptr;n_publicId++) {
-    for (n_systemId = 0;n_systemId < gen_nb_const_xmlChar_ptr;n_systemId++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-        publicId = gen_const_xmlChar_ptr(n_publicId, 2);
-        systemId = gen_const_xmlChar_ptr(n_systemId, 3);
-
-        ret_val = xmlCtxtParseDtd(ctxt, input, publicId, systemId);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        des_const_xmlChar_ptr(n_publicId, publicId, 2);
-        des_const_xmlChar_ptr(n_systemId, systemId, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtParseDtd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf(" %d", n_publicId);
-            printf(" %d", n_systemId);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtReadDoc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const xmlChar * str; /* a pointer to a zero terminated string */
-    int n_str;
-    const char * URL; /* base URL (optional) */
-    int n_URL;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        URL = gen_filepath(n_URL, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_parseroptions(n_options, 4);
-
-        ret_val = xmlCtxtReadDoc(ctxt, str, URL, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_filepath(n_URL, URL, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_parseroptions(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtReadDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_str);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtReadFile(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        filename = gen_filepath(n_filename, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_parseroptions(n_options, 3);
-
-        ret_val = xmlCtxtReadFile(ctxt, filename, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_filepath(n_filename, filename, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_parseroptions(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtReadFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtReadMemory(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * URL; /* base URL (optional) */
-    int n_URL;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        buffer = gen_const_char_ptr(n_buffer, 1);
-        size = gen_int(n_size, 2);
-        URL = gen_filepath(n_URL, 3);
-        encoding = gen_const_char_ptr(n_encoding, 4);
-        options = gen_parseroptions(n_options, 5);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlCtxtReadMemory(ctxt, buffer, size, URL, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_buffer, buffer, 1);
-        des_int(n_size, size, 2);
-        des_filepath(n_URL, URL, 3);
-        des_const_char_ptr(n_encoding, encoding, 4);
-        des_parseroptions(n_options, options, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtReadMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtReset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        xmlCtxtReset(ctxt);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtReset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtResetPush(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const char * chunk; /* a pointer to an array of chars */
-    int n_chunk;
-    int size; /* number of chars in the array */
-    int n_size;
-    const char * filename; /* an optional file name or URI */
-    int n_filename;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_chunk = 0;n_chunk < gen_nb_const_char_ptr;n_chunk++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        chunk = gen_const_char_ptr(n_chunk, 1);
-        size = gen_int(n_size, 2);
-        filename = gen_filepath(n_filename, 3);
-        encoding = gen_const_char_ptr(n_encoding, 4);
-        if ((chunk != NULL) &&
-            (size > xmlStrlen(BAD_CAST chunk)))
-            size = 0;
-
-        ret_val = xmlCtxtResetPush(ctxt, chunk, size, filename, encoding);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_chunk, chunk, 1);
-        des_int(n_size, size, 2);
-        des_filepath(n_filename, filename, 3);
-        des_const_char_ptr(n_encoding, encoding, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtResetPush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_chunk);
-            printf(" %d", n_size);
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetCatalogs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-    void * catalogs; /* catalogs pointer */
-    int n_catalogs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_catalogs = 0;n_catalogs < gen_nb_void_ptr;n_catalogs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        catalogs = gen_void_ptr(n_catalogs, 1);
-
-        xmlCtxtSetCatalogs(ctxt, catalogs);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_void_ptr(n_catalogs, catalogs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtSetCatalogs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_catalogs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetCharEncConvImpl(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetDict(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-    xmlDictPtr dict; /* dictionary */
-    int n_dict;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        dict = gen_xmlDictPtr(n_dict, 1);
-
-        xmlCtxtSetDict(ctxt, dict);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDictPtr(n_dict, dict, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtSetDict",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_dict);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetErrorHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetMaxAmplification(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetOptions(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    int options; /* a bitmask of xmlParserOption values */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        options = gen_parseroptions(n_options, 1);
-
-        ret_val = xmlCtxtSetOptions(ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_parseroptions(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtSetOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetPrivate(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-    void * priv; /* private application data */
-    int n_priv;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_priv = 0;n_priv < gen_nb_void_ptr;n_priv++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        priv = gen_void_ptr(n_priv, 1);
-
-        xmlCtxtSetPrivate(ctxt, priv);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_void_ptr(n_priv, priv, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtSetPrivate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_priv);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtSetResourceLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-#define gen_nb_const_xmlSAXHandler_ptr 1
-#define gen_const_xmlSAXHandler_ptr(no, nr) NULL
-#define des_const_xmlSAXHandler_ptr(no, val, nr)
-
-static int
-test_xmlCtxtSetSaxHandler(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* parser context */
-    int n_ctxt;
-    const xmlSAXHandler * sax; /* SAX handler */
-    int n_sax;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_sax = 0;n_sax < gen_nb_const_xmlSAXHandler_ptr;n_sax++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        sax = gen_const_xmlSAXHandler_ptr(n_sax, 1);
-
-        ret_val = xmlCtxtSetSaxHandler(ctxt, sax);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlSAXHandler_ptr(n_sax, sax, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtSetSaxHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_sax);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtUseOptions(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        options = gen_parseroptions(n_options, 1);
-
-        ret_val = xmlCtxtUseOptions(ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_parseroptions(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtUseOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtValidateDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* a parser context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlCtxtValidateDocument(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtValidateDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtValidateDtd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* a parser context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlDtdPtr dtd; /* a dtd instance */
-    int n_dtd;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        dtd = gen_xmlDtdPtr(n_dtd, 2);
-
-        ret_val = xmlCtxtValidateDtd(ctxt, doc, dtd);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlDtdPtr(n_dtd, dtd, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtValidateDtd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_dtd);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetExternalEntityLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlHasFeature(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlFeature feature; /* the feature to be examined */
-    int n_feature;
-
-    for (n_feature = 0;n_feature < gen_nb_xmlFeature;n_feature++) {
-        mem_base = xmlMemBlocks();
-        feature = gen_xmlFeature(n_feature, 0);
-
-        ret_val = xmlHasFeature(feature);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlFeature(n_feature, feature, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHasFeature",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_feature);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIOParseDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-#ifdef LIBXML_VALID_ENABLED
-    xmlDtdPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block or NULL */
-    int n_sax;
-    xmlParserInputBufferPtr input; /* an Input Buffer */
-    int n_input;
-    xmlCharEncoding enc; /* the charset encoding if known */
-    int n_enc;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputBufferPtr;n_input++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        input = gen_xmlParserInputBufferPtr(n_input, 1);
-        enc = gen_xmlCharEncoding(n_enc, 2);
-
-        ret_val = xmlIOParseDTD(sax, input, enc);
-        input = NULL;
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_xmlParserInputBufferPtr(n_input, input, 1);
-        des_xmlCharEncoding(n_enc, enc, 2);
-        xmlResetLastError();
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitGlobals(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlInitGlobals();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitGlobals",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitNodeInfoSeq(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserNodeInfoSeqPtr seq; /* a node info sequence pointer */
-    int n_seq;
-
-    for (n_seq = 0;n_seq < gen_nb_xmlParserNodeInfoSeqPtr;n_seq++) {
-        mem_base = xmlMemBlocks();
-        seq = gen_xmlParserNodeInfoSeqPtr(n_seq, 0);
-
-        xmlInitNodeInfoSeq(seq);
-        call_tests++;
-        des_xmlParserNodeInfoSeqPtr(n_seq, seq, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitNodeInfoSeq",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_seq);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitParser(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlInitParser();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitParser",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInitParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlInitParserCtxt(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInitParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlInputSetEncodingHandler(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserErrors ret_val;
-    xmlParserInputPtr input; /* the input stream */
-    int n_input;
-    xmlCharEncodingHandlerPtr handler; /* the encoding handler */
-    int n_handler;
-
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandlerPtr;n_handler++) {
-        mem_base = xmlMemBlocks();
-        input = gen_xmlParserInputPtr(n_input, 0);
-        handler = gen_xmlCharEncodingHandlerPtr(n_handler, 1);
-
-        ret_val = xmlInputSetEncodingHandler(input, handler);
-        desret_xmlParserErrors(ret_val);
-        call_tests++;
-        des_xmlParserInputPtr(n_input, input, 0);
-        des_xmlCharEncodingHandlerPtr(n_handler, handler, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlInputSetEncodingHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_input);
-            printf(" %d", n_handler);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlKeepBlanksDefault(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int val; /* int 0 or 1 */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlKeepBlanksDefault(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlKeepBlanksDefault",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLineNumbersDefault(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int val; /* int 0 or 1 */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlLineNumbersDefault(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlLineNumbersDefault",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLoadExternalEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    const char * URL; /* the URL for the entity to load */
-    int n_URL;
-    const char * ID; /* the Public ID for the entity to load */
-    int n_ID;
-    xmlParserCtxtPtr ctxt; /* the context in which the entity is called or NULL */
-    int n_ctxt;
-
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_ID = 0;n_ID < gen_nb_const_char_ptr;n_ID++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_filepath(n_URL, 0);
-        ID = gen_const_char_ptr(n_ID, 1);
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 2);
-
-        ret_val = xmlLoadExternalEntity(URL, ID, ctxt);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_filepath(n_URL, URL, 0);
-        des_const_char_ptr(n_ID, ID, 1);
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlLoadExternalEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_ID);
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewIOInputStream(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserInputBufferPtr buf; /* an input buffer */
-    int n_buf;
-    xmlCharEncoding enc; /* the charset encoding if known */
-    int n_enc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_buf = 0;n_buf < gen_nb_xmlParserInputBufferPtr;n_buf++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        buf = gen_xmlParserInputBufferPtr(n_buf, 1);
-        enc = gen_xmlCharEncoding(n_enc, 2);
-
-        ret_val = xmlNewIOInputStream(ctxt, buf, enc);
-        if (ret_val != NULL) buf = NULL;
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputBufferPtr(n_buf, buf, 1);
-        des_xmlCharEncoding(n_enc, enc, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewIOInputStream",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_buf);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewInputFromFd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    const char * url; /* base URL (optional) */
-    int n_url;
-    int fd; /* file descriptor */
-    int n_fd;
-    xmlParserInputFlags flags; /* input flags */
-    int n_flags;
-
-    for (n_url = 0;n_url < gen_nb_filepath;n_url++) {
-    for (n_fd = 0;n_fd < gen_nb_int;n_fd++) {
-    for (n_flags = 0;n_flags < gen_nb_xmlParserInputFlags;n_flags++) {
-        mem_base = xmlMemBlocks();
-        url = gen_filepath(n_url, 0);
-        fd = gen_int(n_fd, 1);
-        flags = gen_xmlParserInputFlags(n_flags, 2);
-
-        ret_val = xmlNewInputFromFd(url, fd, flags);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_filepath(n_url, url, 0);
-        des_int(n_fd, fd, 1);
-        des_xmlParserInputFlags(n_flags, flags, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewInputFromFd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_url);
-            printf(" %d", n_fd);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewInputFromIO(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewInputFromMemory(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewInputFromString(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    const char * url; /* base URL (optional) */
-    int n_url;
-    const char * str; /* zero-terminated string */
-    int n_str;
-    xmlParserInputFlags flags; /* optimization hints */
-    int n_flags;
-
-    for (n_url = 0;n_url < gen_nb_filepath;n_url++) {
-    for (n_str = 0;n_str < gen_nb_const_char_ptr;n_str++) {
-    for (n_flags = 0;n_flags < gen_nb_xmlParserInputFlags;n_flags++) {
-        mem_base = xmlMemBlocks();
-        url = gen_filepath(n_url, 0);
-        str = gen_const_char_ptr(n_str, 1);
-        flags = gen_xmlParserInputFlags(n_flags, 2);
-
-        ret_val = xmlNewInputFromString(url, str, flags);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_filepath(n_url, url, 0);
-        des_const_char_ptr(n_str, str, 1);
-        des_xmlParserInputFlags(n_flags, flags, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewInputFromString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_url);
-            printf(" %d", n_str);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlParserInputPtr_ptr 1
-#define gen_xmlParserInputPtr_ptr(no, nr) NULL
-#define des_xmlParserInputPtr_ptr(no, val, nr)
-
-static int
-test_xmlNewInputFromUrl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserErrors ret_val;
-    const char * filename; /* the filename to use as entity */
-    int n_filename;
-    xmlParserInputFlags flags; /* XML_INPUT flags */
-    int n_flags;
-    xmlParserInputPtr * out; /* pointer to new parser input */
-    int n_out;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_flags = 0;n_flags < gen_nb_xmlParserInputFlags;n_flags++) {
-    for (n_out = 0;n_out < gen_nb_xmlParserInputPtr_ptr;n_out++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-        flags = gen_xmlParserInputFlags(n_flags, 1);
-        out = gen_xmlParserInputPtr_ptr(n_out, 2);
-
-        ret_val = xmlNewInputFromUrl(filename, flags, out);
-        desret_xmlParserErrors(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_xmlParserInputFlags(n_flags, flags, 1);
-        des_xmlParserInputPtr_ptr(n_out, out, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewInputFromUrl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_flags);
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlNewParserCtxt();
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewSAXParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const xmlSAXHandler * sax; /* SAX handler */
-    int n_sax;
-    void * userData; /* user data */
-    int n_userData;
-
-    for (n_sax = 0;n_sax < gen_nb_const_xmlSAXHandler_ptr;n_sax++) {
-    for (n_userData = 0;n_userData < gen_nb_userdata;n_userData++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_const_xmlSAXHandler_ptr(n_sax, 0);
-        userData = gen_userdata(n_userData, 1);
-
-        ret_val = xmlNewSAXParserCtxt(sax, userData);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_xmlSAXHandler_ptr(n_sax, sax, 0);
-        des_userdata(n_userData, userData, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewSAXParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_userData);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlNodePtr_ptr 1
-#define gen_xmlNodePtr_ptr(no, nr) NULL
-#define des_xmlNodePtr_ptr(no, val, nr)
-
-static int
-test_xmlParseBalancedChunkMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document the chunk pertains to (must not be NULL) */
-    int n_doc;
-    xmlSAXHandlerPtr sax; /* the SAX handler block (possibly NULL) */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks (possibly NULL) */
-    int n_user_data;
-    int depth; /* Used for loop detection, use 0 */
-    int n_depth;
-    const xmlChar * string; /* the input string in UTF8 or ISO-Latin (zero terminated) */
-    int n_string;
-    xmlNodePtr * lst; /* the return value for the set of parsed nodes */
-    int n_lst;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr;n_string++) {
-    for (n_lst = 0;n_lst < gen_nb_xmlNodePtr_ptr;n_lst++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        sax = gen_xmlSAXHandlerPtr(n_sax, 1);
-        user_data = gen_userdata(n_user_data, 2);
-        depth = gen_int(n_depth, 3);
-        string = gen_const_xmlChar_ptr(n_string, 4);
-        lst = gen_xmlNodePtr_ptr(n_lst, 5);
-        
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-
-
-        ret_val = xmlParseBalancedChunkMemory(doc, sax, user_data, depth, string, lst);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlSAXHandlerPtr(n_sax, sax, 1);
-        des_userdata(n_user_data, user_data, 2);
-        des_int(n_depth, depth, 3);
-        des_const_xmlChar_ptr(n_string, string, 4);
-        des_xmlNodePtr_ptr(n_lst, lst, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseBalancedChunkMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_depth);
-            printf(" %d", n_string);
-            printf(" %d", n_lst);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseBalancedChunkMemoryRecover(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document the chunk pertains to (must not be NULL) */
-    int n_doc;
-    xmlSAXHandlerPtr sax; /* the SAX handler block (possibly NULL) */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks (possibly NULL) */
-    int n_user_data;
-    int depth; /* Used for loop detection, use 0 */
-    int n_depth;
-    const xmlChar * string; /* the input string in UTF8 or ISO-Latin (zero terminated) */
-    int n_string;
-    xmlNodePtr * listOut; /* the return value for the set of parsed nodes */
-    int n_listOut;
-    int recover; /* return nodes even if the data is broken (use 0) */
-    int n_recover;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr;n_string++) {
-    for (n_listOut = 0;n_listOut < gen_nb_xmlNodePtr_ptr;n_listOut++) {
-    for (n_recover = 0;n_recover < gen_nb_int;n_recover++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        sax = gen_xmlSAXHandlerPtr(n_sax, 1);
-        user_data = gen_userdata(n_user_data, 2);
-        depth = gen_int(n_depth, 3);
-        string = gen_const_xmlChar_ptr(n_string, 4);
-        listOut = gen_xmlNodePtr_ptr(n_listOut, 5);
-        recover = gen_int(n_recover, 6);
-        
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-
-
-        ret_val = xmlParseBalancedChunkMemoryRecover(doc, sax, user_data, depth, string, listOut, recover);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlSAXHandlerPtr(n_sax, sax, 1);
-        des_userdata(n_user_data, user_data, 2);
-        des_int(n_depth, depth, 3);
-        des_const_xmlChar_ptr(n_string, string, 4);
-        des_xmlNodePtr_ptr(n_listOut, listOut, 5);
-        des_int(n_recover, recover, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseBalancedChunkMemoryRecover",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_depth);
-            printf(" %d", n_string);
-            printf(" %d", n_listOut);
-            printf(" %d", n_recover);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseChunk(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PUSH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const char * chunk; /* chunk of memory */
-    int n_chunk;
-    int size; /* size of chunk in bytes */
-    int n_size;
-    int terminate; /* last chunk indicator */
-    int n_terminate;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_chunk = 0;n_chunk < gen_nb_const_char_ptr;n_chunk++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_terminate = 0;n_terminate < gen_nb_int;n_terminate++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        chunk = gen_const_char_ptr(n_chunk, 1);
-        size = gen_int(n_size, 2);
-        terminate = gen_int(n_terminate, 3);
-        if ((chunk != NULL) &&
-            (size > xmlStrlen(BAD_CAST chunk)))
-            size = 0;
-
-        ret_val = xmlParseChunk(ctxt, chunk, size, terminate);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_chunk, chunk, 1);
-        des_int(n_size, size, 2);
-        des_int(n_terminate, terminate, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseChunk",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_chunk);
-            printf(" %d", n_size);
-            printf(" %d", n_terminate);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseCtxtExternalEntity(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the existing parsing context */
-    int n_ctxt;
-    const xmlChar * URL; /* the URL for the entity to load */
-    int n_URL;
-    const xmlChar * ID; /* the System ID for the entity to load */
-    int n_ID;
-    xmlNodePtr * listOut; /* the return value for the set of parsed nodes */
-    int n_listOut;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_URL = 0;n_URL < gen_nb_const_xmlChar_ptr;n_URL++) {
-    for (n_ID = 0;n_ID < gen_nb_const_xmlChar_ptr;n_ID++) {
-    for (n_listOut = 0;n_listOut < gen_nb_xmlNodePtr_ptr;n_listOut++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        URL = gen_const_xmlChar_ptr(n_URL, 1);
-        ID = gen_const_xmlChar_ptr(n_ID, 2);
-        listOut = gen_xmlNodePtr_ptr(n_listOut, 3);
-
-        ret_val = xmlParseCtxtExternalEntity(ctxt, URL, ID, listOut);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_URL, URL, 1);
-        des_const_xmlChar_ptr(n_ID, ID, 2);
-        des_xmlNodePtr_ptr(n_listOut, listOut, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseCtxtExternalEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_URL);
-            printf(" %d", n_ID);
-            printf(" %d", n_listOut);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-#ifdef LIBXML_VALID_ENABLED
-    int mem_base;
-    xmlDtdPtr ret_val;
-    const xmlChar * ExternalID; /* a NAME* containing the External ID of the DTD */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* a NAME* containing the URL to the DTD */
-    int n_SystemID;
-
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 0);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 1);
-
-        ret_val = xmlParseDTD(ExternalID, SystemID);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 0);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const xmlChar * cur; /* a pointer to an array of xmlChar */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-
-        ret_val = xmlParseDoc(cur);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseDocument(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlParseDocument(ctxt);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlParseEntity(filename);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseExtParsedEnt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlParseExtParsedEnt(ctxt);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseExtParsedEnt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseExternalEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document the chunk pertains to */
-    int n_doc;
-    xmlSAXHandlerPtr sax; /* the SAX handler block (possibly NULL) */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks (possibly NULL) */
-    int n_user_data;
-    int depth; /* Used for loop detection, use 0 */
-    int n_depth;
-    const xmlChar * URL; /* the URL for the entity to load */
-    int n_URL;
-    const xmlChar * ID; /* the System ID for the entity to load */
-    int n_ID;
-    xmlNodePtr * list; /* the return value for the set of parsed nodes */
-    int n_list;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-    for (n_URL = 0;n_URL < gen_nb_const_xmlChar_ptr;n_URL++) {
-    for (n_ID = 0;n_ID < gen_nb_const_xmlChar_ptr;n_ID++) {
-    for (n_list = 0;n_list < gen_nb_xmlNodePtr_ptr;n_list++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        sax = gen_xmlSAXHandlerPtr(n_sax, 1);
-        user_data = gen_userdata(n_user_data, 2);
-        depth = gen_int(n_depth, 3);
-        URL = gen_const_xmlChar_ptr(n_URL, 4);
-        ID = gen_const_xmlChar_ptr(n_ID, 5);
-        list = gen_xmlNodePtr_ptr(n_list, 6);
-
-        ret_val = xmlParseExternalEntity(doc, sax, user_data, depth, URL, ID, list);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlSAXHandlerPtr(n_sax, sax, 1);
-        des_userdata(n_user_data, user_data, 2);
-        des_int(n_depth, depth, 3);
-        des_const_xmlChar_ptr(n_URL, URL, 4);
-        des_const_xmlChar_ptr(n_ID, ID, 5);
-        des_xmlNodePtr_ptr(n_list, list, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseExternalEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_depth);
-            printf(" %d", n_URL);
-            printf(" %d", n_ID);
-            printf(" %d", n_list);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlParseFile(filename);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseInNodeContext(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserErrors ret_val;
-    xmlNodePtr node; /* the context node */
-    int n_node;
-    const char * data; /* the input string */
-    int n_data;
-    int datalen; /* the input string length in bytes */
-    int n_datalen;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-    xmlNodePtr * listOut; /* the return value for the set of parsed nodes */
-    int n_listOut;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_data = 0;n_data < gen_nb_const_char_ptr;n_data++) {
-    for (n_datalen = 0;n_datalen < gen_nb_int;n_datalen++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-    for (n_listOut = 0;n_listOut < gen_nb_xmlNodePtr_ptr;n_listOut++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        data = gen_const_char_ptr(n_data, 1);
-        datalen = gen_int(n_datalen, 2);
-        options = gen_parseroptions(n_options, 3);
-        listOut = gen_xmlNodePtr_ptr(n_listOut, 4);
-
-        ret_val = xmlParseInNodeContext(node, data, datalen, options, listOut);
-        desret_xmlParserErrors(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_char_ptr(n_data, data, 1);
-        des_int(n_datalen, datalen, 2);
-        des_parseroptions(n_options, options, 3);
-        des_xmlNodePtr_ptr(n_listOut, listOut, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseInNodeContext",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_data);
-            printf(" %d", n_datalen);
-            printf(" %d", n_options);
-            printf(" %d", n_listOut);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * buffer; /* an pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlParseMemory(buffer, size);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlParserNodeInfoPtr 1
-#define gen_xmlParserNodeInfoPtr(no, nr) NULL
-#define des_xmlParserNodeInfoPtr(no, val, nr)
-
-static int
-test_xmlParserAddNodeInfo(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserNodeInfoPtr info; /* a node info sequence pointer */
-    int n_info;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_info = 0;n_info < gen_nb_xmlParserNodeInfoPtr;n_info++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        info = gen_xmlParserNodeInfoPtr(n_info, 1);
-
-        xmlParserAddNodeInfo(ctxt, info);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserNodeInfoPtr(n_info, info, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserAddNodeInfo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_info);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserFindNodeInfo(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlParserNodeInfo * ret_val;
-    xmlParserCtxtPtr ctx; /* an XML parser context */
-    int n_ctx;
-    xmlNodePtr node; /* an XML node within the tree */
-    int n_node;
-
-    for (n_ctx = 0;n_ctx < gen_nb_xmlParserCtxtPtr;n_ctx++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_xmlParserCtxtPtr(n_ctx, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlParserFindNodeInfo(ctx, node);
-        desret_const_xmlParserNodeInfo_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctx, ctx, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserFindNodeInfo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserFindNodeInfoIndex(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    unsigned long ret_val;
-    xmlParserNodeInfoSeqPtr seq; /* a node info sequence pointer */
-    int n_seq;
-    xmlNodePtr node; /* an XML node pointer */
-    int n_node;
-
-    for (n_seq = 0;n_seq < gen_nb_xmlParserNodeInfoSeqPtr;n_seq++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        seq = gen_xmlParserNodeInfoSeqPtr(n_seq, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlParserFindNodeInfoIndex(seq, node);
-        desret_unsigned_long(ret_val);
-        call_tests++;
-        des_xmlParserNodeInfoSeqPtr(n_seq, seq, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserFindNodeInfoIndex",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_seq);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputGrow(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserInputPtr in; /* an XML parser input */
-    int n_in;
-    int len; /* an indicative size for the lookahead */
-    int n_len;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputPtr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputPtr(n_in, 0);
-        len = gen_int(n_len, 1);
-
-        ret_val = xmlParserInputGrow(in, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserInputPtr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputGrow",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputRead(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserInputPtr in; /* an XML parser input */
-    int n_in;
-    int len; /* an indicative size for the lookahead */
-    int n_len;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputPtr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputPtr(n_in, 0);
-        len = gen_int(n_len, 1);
-
-        ret_val = xmlParserInputRead(in, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserInputPtr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPedanticParserDefault(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int val; /* int 0 or 1 */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlPedanticParserDefault(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPedanticParserDefault",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReadDoc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    const xmlChar * cur; /* a pointer to a zero terminated string */
-    int n_cur;
-    const char * URL; /* base URL (optional) */
-    int n_URL;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-        URL = gen_filepath(n_URL, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_parseroptions(n_options, 3);
-
-        ret_val = xmlReadDoc(cur, URL, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        des_filepath(n_URL, URL, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_parseroptions(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReadDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReadFile(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-        options = gen_parseroptions(n_options, 2);
-
-        ret_val = xmlReadFile(filename, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        des_parseroptions(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReadFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReadMemory(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * url; /* base URL (optional) */
-    int n_url;
-    const char * encoding; /* the document encoding (optional) */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_url = 0;n_url < gen_nb_filepath;n_url++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        url = gen_filepath(n_url, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_parseroptions(n_options, 4);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlReadMemory(buffer, size, url, encoding, options);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        des_filepath(n_url, url, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_parseroptions(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReadMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_url);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRecoverDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const xmlChar * cur; /* a pointer to an array of xmlChar */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-
-        ret_val = xmlRecoverDoc(cur);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRecoverDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRecoverFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlRecoverFile(filename);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRecoverFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRecoverMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    const char * buffer; /* an pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlRecoverMemory(buffer, size);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRecoverMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDtdPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const xmlChar * ExternalID; /* a NAME* containing the External ID of the DTD */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* a NAME* containing the URL to the DTD */
-    int n_SystemID;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 1);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 2);
-
-        ret_val = xmlSAXParseDTD(sax, ExternalID, SystemID);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 1);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const xmlChar * cur; /* a pointer to an array of xmlChar */
-    int n_cur;
-    int recovery; /* work in recovery mode, i.e. tries to read no Well Formed documents */
-    int n_recovery;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    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_const_xmlChar_ptr(n_cur, 1);
-        recovery = gen_int(n_recovery, 2);
-
-        ret_val = xmlSAXParseDoc(sax, cur, recovery);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_const_xmlChar_ptr(n_cur, cur, 1);
-        des_int(n_recovery, recovery, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_cur);
-            printf(" %d", n_recovery);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        filename = gen_filepath(n_filename, 1);
-
-        ret_val = xmlSAXParseEntity(sax, filename);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_filepath(n_filename, filename, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const char * filename; /* the filename */
-    int n_filename;
-    int recovery; /* work in recovery mode, i.e. tries to read no Well Formed documents */
-    int n_recovery;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_recovery = 0;n_recovery < gen_nb_int;n_recovery++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        filename = gen_filepath(n_filename, 1);
-        recovery = gen_int(n_recovery, 2);
-
-        ret_val = xmlSAXParseFile(sax, filename, recovery);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_filepath(n_filename, filename, 1);
-        des_int(n_recovery, recovery, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_filename);
-            printf(" %d", n_recovery);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseFileWithData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const char * filename; /* the filename */
-    int n_filename;
-    int recovery; /* work in recovery mode, i.e. tries to read no Well Formed documents */
-    int n_recovery;
-    void * data; /* the userdata */
-    int n_data;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_recovery = 0;n_recovery < gen_nb_int;n_recovery++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        filename = gen_filepath(n_filename, 1);
-        recovery = gen_int(n_recovery, 2);
-        data = gen_userdata(n_data, 3);
-
-        ret_val = xmlSAXParseFileWithData(sax, filename, recovery, data);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_filepath(n_filename, filename, 1);
-        des_int(n_recovery, recovery, 2);
-        des_userdata(n_data, data, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseFileWithData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_filename);
-            printf(" %d", n_recovery);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const char * buffer; /* an pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    int recovery; /* work in recovery mode, i.e. tries to read not Well Formed documents */
-    int n_recovery;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_recovery = 0;n_recovery < gen_nb_int;n_recovery++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        buffer = gen_const_char_ptr(n_buffer, 1);
-        size = gen_int(n_size, 2);
-        recovery = gen_int(n_recovery, 3);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlSAXParseMemory(sax, buffer, size, recovery);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_const_char_ptr(n_buffer, buffer, 1);
-        des_int(n_size, size, 2);
-        des_int(n_recovery, recovery, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_recovery);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXParseMemoryWithData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlSAXHandlerPtr sax; /* the SAX handler block */
-    int n_sax;
-    const char * buffer; /* an pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    int recovery; /* work in recovery mode, i.e. tries to read no Well Formed documents */
-    int n_recovery;
-    void * data; /* the userdata */
-    int n_data;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_recovery = 0;n_recovery < gen_nb_int;n_recovery++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        buffer = gen_const_char_ptr(n_buffer, 1);
-        size = gen_int(n_size, 2);
-        recovery = gen_int(n_recovery, 3);
-        data = gen_userdata(n_data, 4);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlSAXParseMemoryWithData(sax, buffer, size, recovery, data);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_const_char_ptr(n_buffer, buffer, 1);
-        des_int(n_size, size, 2);
-        des_int(n_recovery, recovery, 3);
-        des_userdata(n_data, data, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXParseMemoryWithData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_recovery);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXUserParseFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlSAXHandlerPtr sax; /* a SAX handler */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks */
-    int n_user_data;
-    const char * filename; /* a file name */
-    int n_filename;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        user_data = gen_userdata(n_user_data, 1);
-        filename = gen_filepath(n_filename, 2);
-        
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-
-
-        ret_val = xmlSAXUserParseFile(sax, user_data, filename);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_userdata(n_user_data, user_data, 1);
-        des_filepath(n_filename, filename, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXUserParseFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSAXUserParseMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlSAXHandlerPtr sax; /* a SAX handler */
-    int n_sax;
-    void * user_data; /* The user data returned on SAX callbacks */
-    int n_user_data;
-    const char * buffer; /* an in-memory XML document input */
-    int n_buffer;
-    int size; /* the length of the XML document in bytes */
-    int n_size;
-
-    for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        user_data = gen_userdata(n_user_data, 1);
-        buffer = gen_const_char_ptr(n_buffer, 2);
-        size = gen_int(n_size, 3);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-        
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-
-
-        ret_val = xmlSAXUserParseMemory(sax, user_data, buffer, size);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_userdata(n_user_data, user_data, 1);
-        des_const_char_ptr(n_buffer, buffer, 2);
-        des_int(n_size, size, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSAXUserParseMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetExternalEntityLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetupParserForBuffer(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SAX1_ENABLED)
-#ifdef LIBXML_SAX1_ENABLED
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const xmlChar * buffer; /* a xmlChar * buffer */
-    int n_buffer;
-    const char * filename; /* a file name */
-    int n_filename;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_xmlChar_ptr;n_buffer++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        buffer = gen_const_xmlChar_ptr(n_buffer, 1);
-        filename = gen_filepath(n_filename, 2);
-
-        xmlSetupParserForBuffer(ctxt, buffer, filename);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_buffer, buffer, 1);
-        des_filepath(n_filename, filename, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetupParserForBuffer",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_buffer);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStopParser(void) {
-    int test_ret = 0;
+#ifdef LIBXML_DEBUG_ENABLED
+    xmlDebugCheckDocument(NULL, NULL);
+    xmlDebugDumpAttr(NULL, NULL, 0);
+    xmlDebugDumpAttrList(NULL, NULL, 0);
+    xmlDebugDumpDocumentHead(NULL, NULL);
+    xmlDebugDumpEntities(NULL, NULL);
+    xmlDebugDumpNodeList(NULL, NULL, 0);
+    xmlDebugDumpOneNode(NULL, NULL, 0);
+#endif /* LIBXML_DEBUG_ENABLED */
 
+#ifdef LIBXML_HTML_ENABLED
+    htmlAttrAllowed(NULL, NULL, 0);
+    htmlAutoCloseTag(NULL, NULL, NULL);
+    htmlFreeParserCtxt(htmlCreateFileParserCtxt(NULL, NULL));
+    htmlFreeParserCtxt(htmlCreateMemoryParserCtxt(NULL, 0));
+    xmlFreeDoc(htmlCtxtParseDocument(NULL, NULL));
+    xmlFreeDoc(htmlCtxtReadDoc(NULL, NULL, NULL, NULL, 0));
+    xmlFreeDoc(htmlCtxtReadFd(NULL, 0, NULL, NULL, 0));
+    xmlFreeDoc(htmlCtxtReadFile(NULL, NULL, NULL, 0));
+    xmlFreeDoc(htmlCtxtReadIO(NULL, 0, 0, NULL, NULL, NULL, 0));
+    xmlFreeDoc(htmlCtxtReadMemory(NULL, NULL, 0, NULL, NULL, 0));
+    htmlCtxtReset(NULL);
+    htmlCtxtSetOptions(NULL, 0);
+    htmlCtxtUseOptions(NULL, 0);
+    htmlDefaultSAXHandlerInit();
+    htmlElementAllowedHere(NULL, NULL);
+    htmlElementStatusHere(NULL, NULL);
+    htmlEncodeEntities(NULL, NULL, NULL, NULL, 0);
+    htmlEntityLookup(NULL);
+    htmlEntityValueLookup(0);
+    htmlFreeParserCtxt(NULL);
+    htmlGetMetaEncoding(NULL);
+    htmlHandleOmittedElem(0);
+    htmlInitAutoClose();
+    htmlIsAutoClosed(NULL, NULL);
+    htmlIsBooleanAttr(NULL);
+    htmlIsScriptAttribute(NULL);
+    xmlFreeDoc(htmlNewDoc(NULL, NULL));
+    xmlFreeDoc(htmlNewDocNoDtD(NULL, NULL));
+    htmlFreeParserCtxt(htmlNewParserCtxt());
+    htmlFreeParserCtxt(htmlNewSAXParserCtxt(NULL, NULL));
+    htmlNodeStatus(NULL, 0);
+    htmlParseCharRef(NULL);
+    xmlFreeDoc(htmlParseDoc(NULL, NULL));
+    htmlParseDocument(NULL);
+    htmlParseElement(NULL);
+    htmlParseEntityRef(NULL, NULL);
+    xmlFreeDoc(htmlParseFile(NULL, NULL));
+    xmlFreeDoc(htmlReadDoc(NULL, NULL, NULL, 0));
+    xmlFreeDoc(htmlReadFile(NULL, NULL, 0));
+    xmlFreeDoc(htmlReadIO(0, 0, NULL, NULL, NULL, 0));
+    xmlFreeDoc(htmlReadMemory(NULL, 0, NULL, NULL, 0));
+    xmlFreeDoc(htmlSAXParseDoc(NULL, NULL, NULL, NULL));
+    xmlFreeDoc(htmlSAXParseFile(NULL, NULL, NULL, NULL));
+    htmlSetMetaEncoding(NULL, NULL);
+    htmlTagLookup(NULL);
+    htmlUTF8ToHtml(NULL, NULL, NULL, NULL);
+    xmlSAX2InitHtmlDefaultSAXHandler(NULL);
+#ifdef LIBXML_OUTPUT_ENABLED
+    htmlDocContentDumpFormatOutput(NULL, NULL, NULL, 0);
+    htmlDocContentDumpOutput(NULL, NULL, NULL);
+    htmlDocDump(NULL, NULL);
+    htmlDocDumpMemory(NULL, NULL, NULL);
+    htmlDocDumpMemoryFormat(NULL, NULL, NULL, 0);
+    htmlNodeDump(NULL, NULL, NULL);
+    htmlNodeDumpFile(NULL, NULL, NULL);
+    htmlNodeDumpFileFormat(NULL, NULL, NULL, NULL, 0);
+    htmlNodeDumpFormatOutput(NULL, NULL, NULL, NULL, 0);
+    htmlNodeDumpOutput(NULL, NULL, NULL, NULL);
+    htmlSaveFile(NULL, NULL);
+    htmlSaveFileEnc(NULL, NULL, NULL);
+    htmlSaveFileFormat(NULL, NULL, NULL, 0);
+#endif /* LIBXML_OUTPUT_ENABLED */
 #ifdef LIBXML_PUSH_ENABLED
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        xmlStopParser(ctxt);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStopParser",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSubstituteEntitiesDefault(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int val; /* int 0 or 1 */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlSubstituteEntitiesDefault(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSubstituteEntitiesDefault",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefDoValidityCheckingDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefDoValidityCheckingDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefDoValidityCheckingDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefGetWarningsDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefGetWarningsDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefGetWarningsDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefKeepBlanksDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefKeepBlanksDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefKeepBlanksDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefLineNumbersDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefLineNumbersDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefLineNumbersDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefLoadExtDtdDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefLoadExtDtdDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefLoadExtDtdDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefPedanticParserDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefPedanticParserDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefPedanticParserDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefSubstituteEntitiesDefaultValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefSubstituteEntitiesDefaultValue(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefSubstituteEntitiesDefaultValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_parser(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing parser : 92 of 110 functions ...\n");
-    test_ret += test_xmlByteConsumed();
-    test_ret += test_xmlCleanupGlobals();
-    test_ret += test_xmlClearNodeInfoSeq();
-    test_ret += test_xmlClearParserCtxt();
-    test_ret += test_xmlCreateDocParserCtxt();
-    test_ret += test_xmlCreatePushParserCtxt();
-    test_ret += test_xmlCtxtGetCatalogs();
-    test_ret += test_xmlCtxtGetDeclaredEncoding();
-    test_ret += test_xmlCtxtGetDocument();
-    test_ret += test_xmlCtxtGetOptions();
-    test_ret += test_xmlCtxtGetPrivate();
-    test_ret += test_xmlCtxtGetSaxHandler();
-    test_ret += test_xmlCtxtGetStandalone();
-    test_ret += test_xmlCtxtGetStatus();
-    test_ret += test_xmlCtxtGetValidCtxt();
-    test_ret += test_xmlCtxtGetVersion();
-    test_ret += test_xmlCtxtIsHtml();
-    test_ret += test_xmlCtxtIsStopped();
-    test_ret += test_xmlCtxtParseContent();
-    test_ret += test_xmlCtxtParseDocument();
-    test_ret += test_xmlCtxtParseDtd();
-    test_ret += test_xmlCtxtReadDoc();
-    test_ret += test_xmlCtxtReadFile();
-    test_ret += test_xmlCtxtReadMemory();
-    test_ret += test_xmlCtxtReset();
-    test_ret += test_xmlCtxtResetPush();
-    test_ret += test_xmlCtxtSetCatalogs();
-    test_ret += test_xmlCtxtSetCharEncConvImpl();
-    test_ret += test_xmlCtxtSetDict();
-    test_ret += test_xmlCtxtSetErrorHandler();
-    test_ret += test_xmlCtxtSetMaxAmplification();
-    test_ret += test_xmlCtxtSetOptions();
-    test_ret += test_xmlCtxtSetPrivate();
-    test_ret += test_xmlCtxtSetResourceLoader();
-    test_ret += test_xmlCtxtSetSaxHandler();
-    test_ret += test_xmlCtxtUseOptions();
-    test_ret += test_xmlCtxtValidateDocument();
-    test_ret += test_xmlCtxtValidateDtd();
-    test_ret += test_xmlGetExternalEntityLoader();
-    test_ret += test_xmlHasFeature();
-    test_ret += test_xmlIOParseDTD();
-    test_ret += test_xmlInitGlobals();
-    test_ret += test_xmlInitNodeInfoSeq();
-    test_ret += test_xmlInitParser();
-    test_ret += test_xmlInitParserCtxt();
-    test_ret += test_xmlInputSetEncodingHandler();
-    test_ret += test_xmlKeepBlanksDefault();
-    test_ret += test_xmlLineNumbersDefault();
-    test_ret += test_xmlLoadExternalEntity();
-    test_ret += test_xmlNewIOInputStream();
-    test_ret += test_xmlNewInputFromFd();
-    test_ret += test_xmlNewInputFromIO();
-    test_ret += test_xmlNewInputFromMemory();
-    test_ret += test_xmlNewInputFromString();
-    test_ret += test_xmlNewInputFromUrl();
-    test_ret += test_xmlNewParserCtxt();
-    test_ret += test_xmlNewSAXParserCtxt();
-    test_ret += test_xmlParseBalancedChunkMemory();
-    test_ret += test_xmlParseBalancedChunkMemoryRecover();
-    test_ret += test_xmlParseChunk();
-    test_ret += test_xmlParseCtxtExternalEntity();
-    test_ret += test_xmlParseDTD();
-    test_ret += test_xmlParseDoc();
-    test_ret += test_xmlParseDocument();
-    test_ret += test_xmlParseEntity();
-    test_ret += test_xmlParseExtParsedEnt();
-    test_ret += test_xmlParseExternalEntity();
-    test_ret += test_xmlParseFile();
-    test_ret += test_xmlParseInNodeContext();
-    test_ret += test_xmlParseMemory();
-    test_ret += test_xmlParserAddNodeInfo();
-    test_ret += test_xmlParserFindNodeInfo();
-    test_ret += test_xmlParserFindNodeInfoIndex();
-    test_ret += test_xmlParserInputGrow();
-    test_ret += test_xmlParserInputRead();
-    test_ret += test_xmlPedanticParserDefault();
-    test_ret += test_xmlReadDoc();
-    test_ret += test_xmlReadFile();
-    test_ret += test_xmlReadMemory();
-    test_ret += test_xmlRecoverDoc();
-    test_ret += test_xmlRecoverFile();
-    test_ret += test_xmlRecoverMemory();
-    test_ret += test_xmlSAXParseDTD();
-    test_ret += test_xmlSAXParseDoc();
-    test_ret += test_xmlSAXParseEntity();
-    test_ret += test_xmlSAXParseFile();
-    test_ret += test_xmlSAXParseFileWithData();
-    test_ret += test_xmlSAXParseMemory();
-    test_ret += test_xmlSAXParseMemoryWithData();
-    test_ret += test_xmlSAXUserParseFile();
-    test_ret += test_xmlSAXUserParseMemory();
-    test_ret += test_xmlSetExternalEntityLoader();
-    test_ret += test_xmlSetupParserForBuffer();
-    test_ret += test_xmlStopParser();
-    test_ret += test_xmlSubstituteEntitiesDefault();
-    test_ret += test_xmlThrDefDoValidityCheckingDefaultValue();
-    test_ret += test_xmlThrDefGetWarningsDefaultValue();
-    test_ret += test_xmlThrDefKeepBlanksDefaultValue();
-    test_ret += test_xmlThrDefLineNumbersDefaultValue();
-    test_ret += test_xmlThrDefLoadExtDtdDefaultValue();
-    test_ret += test_xmlThrDefPedanticParserDefaultValue();
-    test_ret += test_xmlThrDefSubstituteEntitiesDefaultValue();
-
-    if (test_ret != 0)
-	printf("Module parser: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlCheckLanguageID(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * lang; /* pointer to the string value */
-    int n_lang;
-
-    for (n_lang = 0;n_lang < gen_nb_const_xmlChar_ptr;n_lang++) {
-        mem_base = xmlMemBlocks();
-        lang = gen_const_xmlChar_ptr(n_lang, 0);
-
-        ret_val = xmlCheckLanguageID(lang);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_lang, lang, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCheckLanguageID",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_lang);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int len; /* Ignored, compatibility */
-    int n_len;
-    xmlChar * out; /* pointer to an array of xmlChar */
-    int n_out;
-    int val; /* the char value */
-    int n_val;
-
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-    for (n_out = 0;n_out < gen_nb_xmlChar_ptr;n_out++) {
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        len = gen_int(n_len, 0);
-        out = gen_xmlChar_ptr(n_out, 1);
-        val = gen_int(n_val, 2);
-
-        ret_val = xmlCopyChar(len, out, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_len, len, 0);
-        des_xmlChar_ptr(n_out, out, 1);
-        des_int(n_val, val, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_len);
-            printf(" %d", n_out);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyCharMultiByte(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlChar * out; /* pointer to an array of xmlChar */
-    int n_out;
-    int val; /* the char value */
-    int n_val;
-
-    for (n_out = 0;n_out < gen_nb_xmlChar_ptr;n_out++) {
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlChar_ptr(n_out, 0);
-        val = gen_int(n_val, 1);
-
-        ret_val = xmlCopyCharMultiByte(out, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlChar_ptr(n_out, out, 0);
-        des_int(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyCharMultiByte",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateEntityParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const xmlChar * URL; /* the entity URL */
-    int n_URL;
-    const xmlChar * ID; /* the entity PUBLIC ID */
-    int n_ID;
-    const xmlChar * base; /* a possible base for the target URI */
-    int n_base;
-
-    for (n_URL = 0;n_URL < gen_nb_const_xmlChar_ptr;n_URL++) {
-    for (n_ID = 0;n_ID < gen_nb_const_xmlChar_ptr;n_ID++) {
-    for (n_base = 0;n_base < gen_nb_const_xmlChar_ptr;n_base++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_const_xmlChar_ptr(n_URL, 0);
-        ID = gen_const_xmlChar_ptr(n_ID, 1);
-        base = gen_const_xmlChar_ptr(n_base, 2);
-
-        ret_val = xmlCreateEntityParserCtxt(URL, ID, base);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URL, URL, 0);
-        des_const_xmlChar_ptr(n_ID, ID, 1);
-        des_const_xmlChar_ptr(n_base, base, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateEntityParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_ID);
-            printf(" %d", n_base);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateFileParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const char * filename; /* the filename */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-
-        ret_val = xmlCreateFileParserCtxt(filename);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateFileParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateMemoryParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlCreateMemoryParserCtxt(buffer, size);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateMemoryParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateURLParserCtxt(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    const char * filename; /* the filename or URL */
-    int n_filename;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        options = gen_int(n_options, 1);
-
-        ret_val = xmlCreateURLParserCtxt(filename, options);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_int(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateURLParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtErrMemory(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        xmlCtxtErrMemory(ctxt);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtErrMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtPopInput(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlCtxtPopInput(ctxt);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtPopInput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtPushInput(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserInputPtr value; /* the parser input */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_value = 0;n_value < gen_nb_xmlParserInputPtr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        value = gen_xmlParserInputPtr(n_value, 1);
-
-        ret_val = xmlCtxtPushInput(ctxt, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtPushInput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCurrentChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the XML parser context */
-    int n_ctxt;
-    int * len; /* pointer to the length of the char read */
-    int n_len;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_len = 0;n_len < gen_nb_int_ptr;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        len = gen_int_ptr(n_len, 1);
-
-        ret_val = xmlCurrentChar(ctxt, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_int_ptr(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCurrentChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsLetter(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    int c; /* an unicode character (int) */
-    int n_c;
-
-    for (n_c = 0;n_c < gen_nb_int;n_c++) {
-        mem_base = xmlMemBlocks();
-        c = gen_int(n_c, 0);
-
-        ret_val = xmlIsLetter(c);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_c, c, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsLetter",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_c);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewEntityInputStream(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlEntityPtr ent; /* an Entity pointer */
-    int n_ent;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_ent = 0;n_ent < gen_nb_xmlEntityPtr;n_ent++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        ent = gen_xmlEntityPtr(n_ent, 1);
-
-        ret_val = xmlNewEntityInputStream(ctxt, ent);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlEntityPtr(n_ent, ent, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewEntityInputStream",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_ent);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
+    htmlFreeParserCtxt(htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL, 0));
+    htmlParseChunk(NULL, NULL, 0, 0);
+#endif /* LIBXML_PUSH_ENABLED */
+#endif /* LIBXML_HTML_ENABLED */
 
-static int
-test_xmlNewInputFromFile(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const char * filename; /* the filename to use as entity */
-    int n_filename;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        filename = gen_filepath(n_filename, 1);
-
-        ret_val = xmlNewInputFromFile(ctxt, filename);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_filepath(n_filename, filename, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewInputFromFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewInputStream(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlNewInputStream(ctxt);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewInputStream",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewStringInputStream(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const xmlChar * buffer; /* an memory buffer */
-    int n_buffer;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_xmlChar_ptr;n_buffer++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        buffer = gen_const_xmlChar_ptr(n_buffer, 1);
-
-        ret_val = xmlNewStringInputStream(ctxt, buffer);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_buffer, buffer, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewStringInputStream",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_buffer);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNextChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserCtxtPtr ctxt; /* the XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        xmlNextChar(ctxt);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNextChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputShrink(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr in; /* an XML parser input */
-    int n_in;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputPtr;n_in++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputPtr(n_in, 0);
-
-        xmlParserInputShrink(in);
-        call_tests++;
-        des_xmlParserInputPtr(n_in, in, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputShrink",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPopInput(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlPopInput(ctxt);
-        desret_xmlChar(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPopInput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPushInput(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserInputPtr input; /* an XML parser input fragment (entity, XML fragment ...). */
-    int n_input;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-
-        ret_val = xmlPushInput(ctxt, input);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPushInput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSplitQName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    const xmlChar * name; /* an XML parser context */
-    int n_name;
-    xmlChar ** prefixOut; /* a xmlChar ** */
-    int n_prefixOut;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefixOut = 0;n_prefixOut < gen_nb_xmlChar_ptr_ptr;n_prefixOut++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        prefixOut = gen_xmlChar_ptr_ptr(n_prefixOut, 2);
-
-        ret_val = xmlSplitQName(ctxt, name, prefixOut);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_xmlChar_ptr_ptr(n_prefixOut, prefixOut, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSplitQName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_name);
-            printf(" %d", n_prefixOut);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStringCurrentChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the XML parser context */
-    int n_ctxt;
-    const xmlChar * cur; /* pointer to the beginning of the char */
-    int n_cur;
-    int * len; /* pointer to the length of the char read */
-    int n_len;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_len = 0;n_len < gen_nb_int_ptr;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        cur = gen_const_xmlChar_ptr(n_cur, 1);
-        len = gen_int_ptr(n_len, 2);
-
-        ret_val = xmlStringCurrentChar(ctxt, cur, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_cur, cur, 1);
-        des_int_ptr(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStringCurrentChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStringDecodeEntities(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context */
-    int n_ctxt;
-    const xmlChar * str; /* the input string */
-    int n_str;
-    int what; /* combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF */
-    int n_what;
-    xmlChar end; /* an end marker xmlChar, 0 if none */
-    int n_end;
-    xmlChar end2; /* an end marker xmlChar, 0 if none */
-    int n_end2;
-    xmlChar end3; /* an end marker xmlChar, 0 if none */
-    int n_end3;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_what = 0;n_what < gen_nb_int;n_what++) {
-    for (n_end = 0;n_end < gen_nb_xmlChar;n_end++) {
-    for (n_end2 = 0;n_end2 < gen_nb_xmlChar;n_end2++) {
-    for (n_end3 = 0;n_end3 < gen_nb_xmlChar;n_end3++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        what = gen_int(n_what, 2);
-        end = gen_xmlChar(n_end, 3);
-        end2 = gen_xmlChar(n_end2, 4);
-        end3 = gen_xmlChar(n_end3, 5);
-
-        ret_val = xmlStringDecodeEntities(ctxt, str, what, end, end2, end3);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_int(n_what, what, 2);
-        des_xmlChar(n_end, end, 3);
-        des_xmlChar(n_end2, end2, 4);
-        des_xmlChar(n_end3, end3, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStringDecodeEntities",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_str);
-            printf(" %d", n_what);
-            printf(" %d", n_end);
-            printf(" %d", n_end2);
-            printf(" %d", n_end3);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStringLenDecodeEntities(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context */
-    int n_ctxt;
-    const xmlChar * str; /* the input string */
-    int n_str;
-    int len; /* the string length */
-    int n_len;
-    int what; /* combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF */
-    int n_what;
-    xmlChar end; /* an end marker xmlChar, 0 if none */
-    int n_end;
-    xmlChar end2; /* an end marker xmlChar, 0 if none */
-    int n_end2;
-    xmlChar end3; /* an end marker xmlChar, 0 if none */
-    int n_end3;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-    for (n_what = 0;n_what < gen_nb_int;n_what++) {
-    for (n_end = 0;n_end < gen_nb_xmlChar;n_end++) {
-    for (n_end2 = 0;n_end2 < gen_nb_xmlChar;n_end2++) {
-    for (n_end3 = 0;n_end3 < gen_nb_xmlChar;n_end3++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        len = gen_int(n_len, 2);
-        what = gen_int(n_what, 3);
-        end = gen_xmlChar(n_end, 4);
-        end2 = gen_xmlChar(n_end2, 5);
-        end3 = gen_xmlChar(n_end3, 6);
-        if ((str != NULL) &&
-            (len > xmlStrlen(BAD_CAST str)))
-            len = 0;
-
-        ret_val = xmlStringLenDecodeEntities(ctxt, str, len, what, end, end2, end3);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_int(n_len, len, 2);
-        des_int(n_what, what, 3);
-        des_xmlChar(n_end, end, 4);
-        des_xmlChar(n_end2, end2, 5);
-        des_xmlChar(n_end3, end3, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStringLenDecodeEntities",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_str);
-            printf(" %d", n_len);
-            printf(" %d", n_what);
-            printf(" %d", n_end);
-            printf(" %d", n_end2);
-            printf(" %d", n_end3);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSwitchEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context */
-    int n_ctxt;
-    xmlCharEncoding enc; /* the encoding value (number) */
-    int n_enc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        enc = gen_xmlCharEncoding(n_enc, 1);
-
-        ret_val = xmlSwitchEncoding(ctxt, enc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlCharEncoding(n_enc, enc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSwitchEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSwitchEncodingName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context */
-    int n_ctxt;
-    const char * encoding; /* the encoding name */
-    int n_encoding;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-
-        ret_val = xmlSwitchEncodingName(ctxt, encoding);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSwitchEncodingName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSwitchInputEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context, only for error reporting */
-    int n_ctxt;
-    xmlParserInputPtr input; /* the input stream */
-    int n_input;
-    xmlCharEncodingHandlerPtr handler; /* the encoding handler */
-    int n_handler;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandlerPtr;n_handler++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputPtr(n_input, 1);
-        handler = gen_xmlCharEncodingHandlerPtr(n_handler, 2);
-
-        ret_val = xmlSwitchInputEncoding(ctxt, input, handler);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_input, input, 1);
-        des_xmlCharEncodingHandlerPtr(n_handler, handler, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSwitchInputEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf(" %d", n_handler);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSwitchToEncoding(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserCtxtPtr ctxt; /* the parser context */
-    int n_ctxt;
-    xmlCharEncodingHandlerPtr handler; /* the encoding handler */
-    int n_handler;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_handler = 0;n_handler < gen_nb_xmlCharEncodingHandlerPtr;n_handler++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        handler = gen_xmlCharEncodingHandlerPtr(n_handler, 1);
-
-        ret_val = xmlSwitchToEncoding(ctxt, handler);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlCharEncodingHandlerPtr(n_handler, handler, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSwitchToEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_handler);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_parserInternals(void) {
-    int test_ret = 0;
+#ifdef LIBXML_MODULES_ENABLED
+    xmlModuleClose(NULL);
+    xmlModuleFree(NULL);
+    xmlModuleFree(xmlModuleOpen(NULL, 0));
+    xmlModuleSymbol(NULL, NULL, NULL);
+#endif /* LIBXML_MODULES_ENABLED */
 
-    if (quiet == 0) printf("Testing parserInternals : 28 of 75 functions ...\n");
-    test_ret += test_xmlCheckLanguageID();
-    test_ret += test_xmlCopyChar();
-    test_ret += test_xmlCopyCharMultiByte();
-    test_ret += test_xmlCreateEntityParserCtxt();
-    test_ret += test_xmlCreateFileParserCtxt();
-    test_ret += test_xmlCreateMemoryParserCtxt();
-    test_ret += test_xmlCreateURLParserCtxt();
-    test_ret += test_xmlCtxtErrMemory();
-    test_ret += test_xmlCtxtPopInput();
-    test_ret += test_xmlCtxtPushInput();
-    test_ret += test_xmlCurrentChar();
-    test_ret += test_xmlIsLetter();
-    test_ret += test_xmlNewEntityInputStream();
-    test_ret += test_xmlNewInputFromFile();
-    test_ret += test_xmlNewInputStream();
-    test_ret += test_xmlNewStringInputStream();
-    test_ret += test_xmlNextChar();
-    test_ret += test_xmlParserInputShrink();
-    test_ret += test_xmlPopInput();
-    test_ret += test_xmlPushInput();
-    test_ret += test_xmlSplitQName();
-    test_ret += test_xmlStringCurrentChar();
-    test_ret += test_xmlStringDecodeEntities();
-    test_ret += test_xmlStringLenDecodeEntities();
-    test_ret += test_xmlSwitchEncoding();
-    test_ret += test_xmlSwitchEncodingName();
-    test_ret += test_xmlSwitchInputEncoding();
-    test_ret += test_xmlSwitchToEncoding();
+#ifdef LIBXML_OUTPUT_ENABLED
+    xmlOutputBufferClose(__xmlOutputBufferCreateFilename(NULL, NULL, 0));
+    xmlOutputBufferClose(xmlAllocOutputBuffer(NULL));
+    xmlAttrSerializeTxtContent(NULL, NULL, NULL, NULL);
+    xmlBufNodeDump(NULL, NULL, NULL, 0, 0);
+    xmlCleanupOutputCallbacks();
+    xmlDocDump(NULL, NULL);
+    xmlDocDumpFormatMemory(NULL, NULL, NULL, 0);
+    xmlDocDumpFormatMemoryEnc(NULL, NULL, NULL, NULL, 0);
+    xmlDocDumpMemory(NULL, NULL, NULL);
+    xmlDocDumpMemoryEnc(NULL, NULL, NULL, NULL);
+    xmlDocFormatDump(NULL, NULL, 0);
+    xmlDumpAttributeDecl(NULL, NULL);
+    xmlDumpAttributeTable(NULL, NULL);
+    xmlDumpElementDecl(NULL, NULL);
+    xmlDumpElementTable(NULL, NULL);
+    xmlDumpEntitiesTable(NULL, NULL);
+    xmlDumpEntityDecl(NULL, NULL);
+    xmlDumpNotationDecl(NULL, NULL);
+    xmlDumpNotationTable(NULL, NULL);
+    xmlElemDump(NULL, NULL, NULL);
+    xmlNodeDump(NULL, NULL, NULL, 0, 0);
+    xmlNodeDumpOutput(NULL, NULL, NULL, 0, 0, NULL);
+    xmlOutputBufferClose(NULL);
+    xmlOutputBufferClose(xmlOutputBufferCreateBuffer(NULL, NULL));
+    xmlOutputBufferClose(xmlOutputBufferCreateFd(0, NULL));
+    xmlOutputBufferClose(xmlOutputBufferCreateFile(NULL, NULL));
+    xmlOutputBufferClose(xmlOutputBufferCreateFilename(NULL, NULL, 0));
+    xmlOutputBufferClose(xmlOutputBufferCreateIO(0, 0, NULL, NULL));
+    xmlOutputBufferFlush(NULL);
+    xmlOutputBufferGetContent(NULL);
+    xmlOutputBufferGetSize(NULL);
+    xmlOutputBufferWrite(NULL, 0, NULL);
+    xmlOutputBufferWriteEscape(NULL, NULL, 0);
+    xmlOutputBufferWriteString(NULL, NULL);
+    xmlPopOutputCallbacks();
+    xmlRegisterDefaultOutputCallbacks();
+    xmlRegisterOutputCallbacks(0, 0, 0, 0);
+    xmlSaveClose(NULL);
+    xmlSaveDoc(NULL, NULL);
+    xmlSaveFile(NULL, NULL);
+    xmlSaveFileEnc(NULL, NULL, NULL);
+    xmlSaveFileTo(NULL, NULL, NULL);
+    xmlSaveFinish(NULL);
+    xmlSaveFlush(NULL);
+    xmlSaveFormatFile(NULL, NULL, 0);
+    xmlSaveFormatFileEnc(NULL, NULL, NULL, 0);
+    xmlSaveFormatFileTo(NULL, NULL, NULL, 0);
+    xmlSaveSetAttrEscape(NULL, 0);
+    xmlSaveSetEscape(NULL, 0);
+    xmlSaveSetIndentString(NULL, NULL);
+    xmlSaveClose(xmlSaveToBuffer(NULL, NULL, 0));
+    xmlSaveClose(xmlSaveToFd(0, NULL, 0));
+    xmlSaveClose(xmlSaveToFilename(NULL, NULL, 0));
+    xmlSaveClose(xmlSaveToIO(0, 0, NULL, NULL, 0));
+    xmlSaveTree(NULL, NULL);
+    xmlSprintfElementContent(NULL, NULL, 0);
+    xmlThrDefIndentTreeOutput(0);
+    xmlThrDefSaveNoEmptyTags(0);
+    xmlThrDefTreeIndentString(NULL);
+    xmlUTF8ToIsolat1(NULL, NULL, NULL, NULL);
+#endif /* LIBXML_OUTPUT_ENABLED */
 
-    if (test_ret != 0)
-	printf("Module parserInternals: %d errors\n", test_ret);
-    return(test_ret);
-}
 #ifdef LIBXML_PATTERN_ENABLED
+    xmlFreePattern(NULL);
+    xmlFreePatternList(NULL);
+    xmlFreeStreamCtxt(NULL);
+    xmlPatternCompileSafe(NULL, NULL, 0, NULL, NULL);
+    xmlPatternFromRoot(NULL);
+    xmlPatternGetStreamCtxt(NULL);
+    xmlPatternMatch(NULL, NULL);
+    xmlPatternMaxDepth(NULL);
+    xmlPatternMinDepth(NULL);
+    xmlPatternStreamable(NULL);
+    xmlPatterncompile(NULL, NULL, 0, NULL);
+    xmlStreamPop(NULL);
+    xmlStreamPush(NULL, NULL, NULL);
+    xmlStreamPushAttr(NULL, NULL, NULL);
+    xmlStreamPushNode(NULL, NULL, NULL, 0);
+    xmlStreamWantsAnyNode(NULL);
+#endif /* LIBXML_PATTERN_ENABLED */
 
-#define gen_nb_xmlPatternPtr_ptr 1
-#define gen_xmlPatternPtr_ptr(no, nr) NULL
-#define des_xmlPatternPtr_ptr(no, val, nr)
-#endif
-
-
-static int
-test_xmlPatternCompileSafe(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * pattern; /* the pattern to compile */
-    int n_pattern;
-    xmlDict * dict; /* an optional dictionary for interned strings */
-    int n_dict;
-    int flags; /* compilation flags, see xmlPatternFlags */
-    int n_flags;
-    const xmlChar ** namespaces; /* the prefix definitions, array of [URI, prefix] or NULL */
-    int n_namespaces;
-    xmlPatternPtr * patternOut; /* output pattern */
-    int n_patternOut;
-
-    for (n_pattern = 0;n_pattern < gen_nb_const_xmlChar_ptr;n_pattern++) {
-    for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-    for (n_namespaces = 0;n_namespaces < gen_nb_const_xmlChar_ptr_ptr;n_namespaces++) {
-    for (n_patternOut = 0;n_patternOut < gen_nb_xmlPatternPtr_ptr;n_patternOut++) {
-        mem_base = xmlMemBlocks();
-        pattern = gen_const_xmlChar_ptr(n_pattern, 0);
-        dict = gen_xmlDictPtr(n_dict, 1);
-        flags = gen_int(n_flags, 2);
-        namespaces = gen_const_xmlChar_ptr_ptr(n_namespaces, 3);
-        patternOut = gen_xmlPatternPtr_ptr(n_patternOut, 4);
-
-        ret_val = xmlPatternCompileSafe(pattern, dict, flags, namespaces, patternOut);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_pattern, pattern, 0);
-        des_xmlDictPtr(n_dict, dict, 1);
-        des_int(n_flags, flags, 2);
-        des_const_xmlChar_ptr_ptr(n_namespaces, namespaces, 3);
-        des_xmlPatternPtr_ptr(n_patternOut, patternOut, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternCompileSafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_pattern);
-            printf(" %d", n_dict);
-            printf(" %d", n_flags);
-            printf(" %d", n_namespaces);
-            printf(" %d", n_patternOut);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternFromRoot(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlPatternPtr comp; /* the precompiled pattern */
-    int n_comp;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlPatternPtr(n_comp, 0);
-
-        ret_val = xmlPatternFromRoot(comp);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlPatternPtr(n_comp, comp, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternFromRoot",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternGetStreamCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternMatch(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlPatternPtr comp; /* the precompiled pattern */
-    int n_comp;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlPatternPtr(n_comp, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlPatternMatch(comp, node);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlPatternPtr(n_comp, comp, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternMatch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternMaxDepth(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlPatternPtr comp; /* the precompiled pattern */
-    int n_comp;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlPatternPtr(n_comp, 0);
-
-        ret_val = xmlPatternMaxDepth(comp);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlPatternPtr(n_comp, comp, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternMaxDepth",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternMinDepth(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlPatternPtr comp; /* the precompiled pattern */
-    int n_comp;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlPatternPtr(n_comp, 0);
-
-        ret_val = xmlPatternMinDepth(comp);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlPatternPtr(n_comp, comp, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternMinDepth",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatternStreamable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlPatternPtr comp; /* the precompiled pattern */
-    int n_comp;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlPatternPtr;n_comp++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlPatternPtr(n_comp, 0);
-
-        ret_val = xmlPatternStreamable(comp);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlPatternPtr(n_comp, comp, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPatternStreamable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPatterncompile(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
+#ifdef LIBXML_PUSH_ENABLED
+    xmlFreeParserCtxt(xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL));
+    xmlParseChunk(NULL, NULL, 0, 0);
+#endif /* LIBXML_PUSH_ENABLED */
 
+#ifdef LIBXML_READER_ENABLED
+    xmlFreeTextReader(NULL);
+    xmlNewTextReader(NULL, NULL);
+    xmlNewTextReaderFilename(NULL);
+    xmlReaderForDoc(NULL, NULL, NULL, 0);
+    xmlReaderForFile(NULL, NULL, 0);
+    xmlReaderForIO(0, 0, NULL, NULL, NULL, 0);
+    xmlReaderForMemory(NULL, 0, NULL, NULL, 0);
+    xmlReaderNewDoc(NULL, NULL, NULL, NULL, 0);
+    xmlReaderNewFd(NULL, 0, NULL, NULL, 0);
+    xmlReaderNewFile(NULL, NULL, NULL, 0);
+    xmlReaderNewIO(NULL, 0, 0, NULL, NULL, NULL, 0);
+    xmlReaderNewMemory(NULL, NULL, 0, NULL, NULL, 0);
+    xmlReaderNewWalker(NULL, NULL);
+    xmlReaderWalker(NULL);
+    xmlTextReaderAttributeCount(NULL);
+    xmlFree(xmlTextReaderBaseUri(NULL));
+    xmlTextReaderByteConsumed(NULL);
+    xmlTextReaderClose(NULL);
+    xmlTextReaderConstBaseUri(NULL);
+    xmlTextReaderConstEncoding(NULL);
+    xmlTextReaderConstLocalName(NULL);
+    xmlTextReaderConstName(NULL);
+    xmlTextReaderConstNamespaceUri(NULL);
+    xmlTextReaderConstPrefix(NULL);
+    xmlTextReaderConstString(NULL, NULL);
+    xmlTextReaderConstValue(NULL);
+    xmlTextReaderConstXmlLang(NULL);
+    xmlTextReaderConstXmlVersion(NULL);
+    xmlFreeDoc(xmlTextReaderCurrentDoc(NULL));
+    xmlFreeNode(xmlTextReaderCurrentNode(NULL));
+    xmlTextReaderDepth(NULL);
+    xmlFreeNode(xmlTextReaderExpand(NULL));
+    xmlFree(xmlTextReaderGetAttribute(NULL, NULL));
+    xmlFree(xmlTextReaderGetAttributeNo(NULL, 0));
+    xmlFree(xmlTextReaderGetAttributeNs(NULL, NULL, NULL));
+    xmlTextReaderGetErrorHandler(NULL, NULL, NULL);
+    xmlTextReaderGetLastError(NULL);
+    xmlTextReaderGetParserColumnNumber(NULL);
+    xmlTextReaderGetParserLineNumber(NULL);
+    xmlTextReaderGetParserProp(NULL, 0);
+    xmlFreeParserInputBuffer(xmlTextReaderGetRemainder(NULL));
+    xmlTextReaderHasAttributes(NULL);
+    xmlTextReaderHasValue(NULL);
+    xmlTextReaderIsDefault(NULL);
+    xmlTextReaderIsEmptyElement(NULL);
+    xmlTextReaderIsNamespaceDecl(NULL);
+    xmlTextReaderIsValid(NULL);
+    xmlFree(xmlTextReaderLocalName(NULL));
+    xmlFree(xmlTextReaderLocatorBaseURI(NULL));
+    xmlTextReaderLocatorLineNumber(NULL);
+    xmlFree(xmlTextReaderLookupNamespace(NULL, NULL));
+    xmlTextReaderMoveToAttribute(NULL, NULL);
+    xmlTextReaderMoveToAttributeNo(NULL, 0);
+    xmlTextReaderMoveToAttributeNs(NULL, NULL, NULL);
+    xmlTextReaderMoveToElement(NULL);
+    xmlTextReaderMoveToFirstAttribute(NULL);
+    xmlTextReaderMoveToNextAttribute(NULL);
+    xmlFree(xmlTextReaderName(NULL));
+    xmlFree(xmlTextReaderNamespaceUri(NULL));
+    xmlTextReaderNext(NULL);
+    xmlTextReaderNextSibling(NULL);
+    xmlTextReaderNodeType(NULL);
+    xmlTextReaderNormalization(NULL);
+    xmlFree(xmlTextReaderPrefix(NULL));
+    xmlFreeNode(xmlTextReaderPreserve(NULL));
+    xmlTextReaderQuoteChar(NULL);
+    xmlTextReaderRead(NULL);
+    xmlTextReaderReadAttributeValue(NULL);
+    xmlTextReaderReadState(NULL);
+    xmlFree(xmlTextReaderReadString(NULL));
+    xmlTextReaderSetErrorHandler(NULL, 0, NULL);
+    xmlTextReaderSetMaxAmplification(NULL, 0);
+    xmlTextReaderSetParserProp(NULL, 0, 0);
+    xmlTextReaderSetResourceLoader(NULL, 0, NULL);
+    xmlTextReaderSetStructuredErrorHandler(NULL, 0, NULL);
+    xmlTextReaderSetup(NULL, NULL, NULL, NULL, 0);
+    xmlTextReaderStandalone(NULL);
+    xmlFree(xmlTextReaderValue(NULL));
+    xmlFree(xmlTextReaderXmlLang(NULL));
 #ifdef LIBXML_PATTERN_ENABLED
-
-#define gen_nb_xmlStreamCtxtPtr 1
-#define gen_xmlStreamCtxtPtr(no, nr) NULL
-#define des_xmlStreamCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlStreamPop(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlStreamCtxtPtr stream; /* the stream context */
-    int n_stream;
-
-    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
-        mem_base = xmlMemBlocks();
-        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
-
-        ret_val = xmlStreamPop(stream);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlStreamCtxtPtr(n_stream, stream, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStreamPop",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_stream);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStreamPush(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlStreamCtxtPtr stream; /* the stream context */
-    int n_stream;
-    const xmlChar * name; /* the current name */
-    int n_name;
-    const xmlChar * ns; /* the namespace name */
-    int n_ns;
-
-    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ns = gen_const_xmlChar_ptr(n_ns, 2);
-
-        ret_val = xmlStreamPush(stream, name, ns);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlStreamCtxtPtr(n_stream, stream, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ns, ns, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStreamPush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_stream);
-            printf(" %d", n_name);
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStreamPushAttr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlStreamCtxtPtr stream; /* the stream context */
-    int n_stream;
-    const xmlChar * name; /* the current name */
-    int n_name;
-    const xmlChar * ns; /* the namespace name */
-    int n_ns;
-
-    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ns = gen_const_xmlChar_ptr(n_ns, 2);
-
-        ret_val = xmlStreamPushAttr(stream, name, ns);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlStreamCtxtPtr(n_stream, stream, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ns, ns, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStreamPushAttr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_stream);
-            printf(" %d", n_name);
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStreamPushNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlStreamCtxtPtr stream; /* the stream context */
-    int n_stream;
-    const xmlChar * name; /* the current name */
-    int n_name;
-    const xmlChar * ns; /* the namespace name */
-    int n_ns;
-    int nodeType; /* the type of the node being pushed */
-    int n_nodeType;
-
-    for (n_stream = 0;n_stream < gen_nb_xmlStreamCtxtPtr;n_stream++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
-    for (n_nodeType = 0;n_nodeType < gen_nb_int;n_nodeType++) {
-        mem_base = xmlMemBlocks();
-        stream = gen_xmlStreamCtxtPtr(n_stream, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ns = gen_const_xmlChar_ptr(n_ns, 2);
-        nodeType = gen_int(n_nodeType, 3);
-
-        ret_val = xmlStreamPushNode(stream, name, ns, nodeType);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlStreamCtxtPtr(n_stream, stream, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ns, ns, 2);
-        des_int(n_nodeType, nodeType, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStreamPushNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_stream);
-            printf(" %d", n_name);
-            printf(" %d", n_ns);
-            printf(" %d", n_nodeType);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStreamWantsAnyNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_PATTERN_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlStreamCtxtPtr streamCtxt; /* the stream context */
-    int n_streamCtxt;
-
-    for (n_streamCtxt = 0;n_streamCtxt < gen_nb_xmlStreamCtxtPtr;n_streamCtxt++) {
-        mem_base = xmlMemBlocks();
-        streamCtxt = gen_xmlStreamCtxtPtr(n_streamCtxt, 0);
-
-        ret_val = xmlStreamWantsAnyNode(streamCtxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlStreamCtxtPtr(n_streamCtxt, streamCtxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStreamWantsAnyNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_streamCtxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_pattern(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing pattern : 11 of 16 functions ...\n");
-    test_ret += test_xmlPatternCompileSafe();
-    test_ret += test_xmlPatternFromRoot();
-    test_ret += test_xmlPatternGetStreamCtxt();
-    test_ret += test_xmlPatternMatch();
-    test_ret += test_xmlPatternMaxDepth();
-    test_ret += test_xmlPatternMinDepth();
-    test_ret += test_xmlPatternStreamable();
-    test_ret += test_xmlPatterncompile();
-    test_ret += test_xmlStreamPop();
-    test_ret += test_xmlStreamPush();
-    test_ret += test_xmlStreamPushAttr();
-    test_ret += test_xmlStreamPushNode();
-    test_ret += test_xmlStreamWantsAnyNode();
-
-    if (test_ret != 0)
-	printf("Module pattern: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_RELAXNG_ENABLED
-
-#define gen_nb_xmlRelaxNGPtr 1
-#define gen_xmlRelaxNGPtr(no, nr) NULL
-#define des_xmlRelaxNGPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlRelaxNGDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    FILE * output; /* the file output */
-    int n_output;
-    xmlRelaxNGPtr schema; /* a schema structure */
-    int n_schema;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_schema = 0;n_schema < gen_nb_xmlRelaxNGPtr;n_schema++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        schema = gen_xmlRelaxNGPtr(n_schema, 1);
-
-        xmlRelaxNGDump(output, schema);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlRelaxNGPtr(n_schema, schema, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_schema);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGDumpTree(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    FILE * output; /* the file output */
-    int n_output;
-    xmlRelaxNGPtr schema; /* a schema structure */
-    int n_schema;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_schema = 0;n_schema < gen_nb_xmlRelaxNGPtr;n_schema++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        schema = gen_xmlRelaxNGPtr(n_schema, 1);
-
-        xmlRelaxNGDumpTree(output, schema);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlRelaxNGPtr(n_schema, schema, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGDumpTree",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_schema);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_RELAXNG_ENABLED
-
-#define gen_nb_xmlRelaxNGParserCtxtPtr 1
-#define gen_xmlRelaxNGParserCtxtPtr(no, nr) NULL
-#define des_xmlRelaxNGParserCtxtPtr(no, val, nr)
-#endif
-
-#ifdef LIBXML_RELAXNG_ENABLED
-
-#define gen_nb_xmlRelaxNGValidityErrorFunc_ptr 1
-#define gen_xmlRelaxNGValidityErrorFunc_ptr(no, nr) NULL
-#define des_xmlRelaxNGValidityErrorFunc_ptr(no, val, nr)
-#endif
-
+    xmlTextReaderPreservePattern(NULL, NULL, NULL);
+#endif /* LIBXML_PATTERN_ENABLED */
 #ifdef LIBXML_RELAXNG_ENABLED
+    xmlTextReaderRelaxNGSetSchema(NULL, NULL);
+    xmlTextReaderRelaxNGValidate(NULL, NULL);
+    xmlTextReaderRelaxNGValidateCtxt(NULL, NULL, 0);
+#endif /* LIBXML_RELAXNG_ENABLED */
+#ifdef LIBXML_SCHEMAS_ENABLED
+    xmlTextReaderSchemaValidate(NULL, NULL);
+    xmlTextReaderSchemaValidateCtxt(NULL, NULL, 0);
+    xmlTextReaderSetSchema(NULL, NULL);
+#endif /* LIBXML_SCHEMAS_ENABLED */
+#ifdef LIBXML_WRITER_ENABLED
+    xmlFree(xmlTextReaderReadInnerXml(NULL));
+    xmlFree(xmlTextReaderReadOuterXml(NULL));
+#endif /* LIBXML_WRITER_ENABLED */
+#endif /* LIBXML_READER_ENABLED */
 
-#define gen_nb_xmlRelaxNGValidityWarningFunc_ptr 1
-#define gen_xmlRelaxNGValidityWarningFunc_ptr(no, nr) NULL
-#define des_xmlRelaxNGValidityWarningFunc_ptr(no, val, nr)
-#endif
-
-
-static int
-test_xmlRelaxNGGetParserErrors(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGParserCtxtPtr ctxt; /* a Relax-NG validation context */
-    int n_ctxt;
-    xmlRelaxNGValidityErrorFunc * err; /* the error callback result */
-    int n_err;
-    xmlRelaxNGValidityWarningFunc * warn; /* the warning callback result */
-    int n_warn;
-    void ** ctx; /* contextual data for the callbacks result */
-    int n_ctx;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGParserCtxtPtr;n_ctxt++) {
-    for (n_err = 0;n_err < gen_nb_xmlRelaxNGValidityErrorFunc_ptr;n_err++) {
-    for (n_warn = 0;n_warn < gen_nb_xmlRelaxNGValidityWarningFunc_ptr;n_warn++) {
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGParserCtxtPtr(n_ctxt, 0);
-        err = gen_xmlRelaxNGValidityErrorFunc_ptr(n_err, 1);
-        warn = gen_xmlRelaxNGValidityWarningFunc_ptr(n_warn, 2);
-        ctx = gen_void_ptr_ptr(n_ctx, 3);
-
-        ret_val = xmlRelaxNGGetParserErrors(ctxt, err, warn, ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlRelaxNGValidityErrorFunc_ptr(n_err, err, 1);
-        des_xmlRelaxNGValidityWarningFunc_ptr(n_warn, warn, 2);
-        des_void_ptr_ptr(n_ctx, ctx, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGGetParserErrors",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_err);
-            printf(" %d", n_warn);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
+#ifdef LIBXML_REGEXP_ENABLED
+    xmlAutomataCompile(NULL);
+    xmlAutomataGetInitState(NULL);
+    xmlAutomataIsDeterminist(NULL);
+    xmlAutomataNewAllTrans(NULL, NULL, NULL, 0);
+    xmlAutomataNewCountTrans(NULL, NULL, NULL, NULL, 0, 0, NULL);
+    xmlAutomataNewCountTrans2(NULL, NULL, NULL, NULL, NULL, 0, 0, NULL);
+    xmlAutomataNewCountedTrans(NULL, NULL, NULL, 0);
+    xmlAutomataNewCounter(NULL, 0, 0);
+    xmlAutomataNewCounterTrans(NULL, NULL, NULL, 0);
+    xmlAutomataNewEpsilon(NULL, NULL, NULL);
+    xmlAutomataNewNegTrans(NULL, NULL, NULL, NULL, NULL, NULL);
+    xmlAutomataNewOnceTrans(NULL, NULL, NULL, NULL, 0, 0, NULL);
+    xmlAutomataNewOnceTrans2(NULL, NULL, NULL, NULL, NULL, 0, 0, NULL);
+    xmlAutomataNewState(NULL);
+    xmlAutomataNewTransition(NULL, NULL, NULL, NULL, NULL);
+    xmlAutomataNewTransition2(NULL, NULL, NULL, NULL, NULL, NULL);
+    xmlAutomataSetFinalState(NULL, NULL);
+    xmlFreeAutomata(NULL);
+    xmlFreeAutomata(xmlNewAutomata());
+    xmlRegExecErrInfo(NULL, NULL, NULL, NULL, NULL, NULL);
+    xmlRegExecNextValues(NULL, NULL, NULL, NULL, NULL);
+    xmlRegExecPushString(NULL, NULL, NULL);
+    xmlRegExecPushString2(NULL, NULL, NULL, NULL);
+    xmlRegFreeExecCtxt(NULL);
+    xmlRegFreeRegexp(NULL);
+    xmlRegNewExecCtxt(NULL, 0, NULL);
+    xmlRegexpCompile(NULL);
+    xmlRegexpExec(NULL, NULL);
+    xmlRegexpIsDeterminist(NULL);
+    xmlRegexpPrint(NULL, NULL);
+#endif /* LIBXML_REGEXP_ENABLED */
 
 #ifdef LIBXML_RELAXNG_ENABLED
-
-#define gen_nb_xmlRelaxNGValidCtxtPtr 1
-#define gen_xmlRelaxNGValidCtxtPtr(no, nr) NULL
-#define des_xmlRelaxNGValidCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlRelaxNGGetValidErrors(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* a Relax-NG validation context */
-    int n_ctxt;
-    xmlRelaxNGValidityErrorFunc * err; /* the error function result */
-    int n_err;
-    xmlRelaxNGValidityWarningFunc * warn; /* the warning function result */
-    int n_warn;
-    void ** ctx; /* the functions context result */
-    int n_ctx;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_err = 0;n_err < gen_nb_xmlRelaxNGValidityErrorFunc_ptr;n_err++) {
-    for (n_warn = 0;n_warn < gen_nb_xmlRelaxNGValidityWarningFunc_ptr;n_warn++) {
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        err = gen_xmlRelaxNGValidityErrorFunc_ptr(n_err, 1);
-        warn = gen_xmlRelaxNGValidityWarningFunc_ptr(n_warn, 2);
-        ctx = gen_void_ptr_ptr(n_ctx, 3);
-
-        ret_val = xmlRelaxNGGetValidErrors(ctxt, err, warn, ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlRelaxNGValidityErrorFunc_ptr(n_err, err, 1);
-        des_xmlRelaxNGValidityWarningFunc_ptr(n_warn, warn, 2);
-        des_void_ptr_ptr(n_ctx, ctx, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGGetValidErrors",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_err);
-            printf(" %d", n_warn);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGInitTypes(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlRelaxNGInitTypes();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGInitTypes",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGNewDocParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    xmlRelaxNGParserCtxtPtr ret_val;
-    xmlDocPtr doc; /* a preparsed document tree */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlRelaxNGNewDocParserCtxt(doc);
-        desret_xmlRelaxNGParserCtxtPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGNewDocParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGNewMemParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    xmlRelaxNGParserCtxtPtr ret_val;
-    const char * buffer; /* a pointer to a char array containing the schemas */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlRelaxNGNewMemParserCtxt(buffer, size);
-        desret_xmlRelaxNGParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGNewMemParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGNewParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    xmlRelaxNGParserCtxtPtr ret_val;
-    const char * URL; /* the location of the schema */
-    int n_URL;
-
-    for (n_URL = 0;n_URL < gen_nb_const_char_ptr;n_URL++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_const_char_ptr(n_URL, 0);
-
-        ret_val = xmlRelaxNGNewParserCtxt(URL);
-        desret_xmlRelaxNGParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_URL, URL, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGNewParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGNewValidCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGParse(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGSetParserErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGSetParserStructuredErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGSetResourceLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGSetValidErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGSetValidStructuredErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGValidateDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* a Relax-NG validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a parsed document tree */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlRelaxNGValidateDoc(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGValidateDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGValidateFullElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-
-        ret_val = xmlRelaxNGValidateFullElement(ctxt, doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGValidateFullElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGValidatePopElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* the RelaxNG validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-
-        ret_val = xmlRelaxNGValidatePopElement(ctxt, doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGValidatePopElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGValidatePushCData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* the RelaxNG validation context */
-    int n_ctxt;
-    const xmlChar * data; /* some character data read */
-    int n_data;
-    int len; /* the length of the data */
-    int n_len;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_data = 0;n_data < gen_nb_const_xmlChar_ptr;n_data++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        data = gen_const_xmlChar_ptr(n_data, 1);
-        len = gen_int(n_len, 2);
-        if ((data != NULL) &&
-            (len > xmlStrlen(BAD_CAST data)))
-            len = 0;
-
-        ret_val = xmlRelaxNGValidatePushCData(ctxt, data, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_data, data, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGValidatePushCData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_data);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxNGValidatePushElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-
-        ret_val = xmlRelaxNGValidatePushElement(ctxt, doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxNGValidatePushElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRelaxParserSetFlag(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRelaxNGParserCtxtPtr ctxt; /* a RelaxNG parser context */
-    int n_ctxt;
-    int flags; /* a set of flags values */
-    int n_flags;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGParserCtxtPtr;n_ctxt++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlRelaxNGParserCtxtPtr(n_ctxt, 0);
-        flags = gen_int(n_flags, 1);
-
-        ret_val = xmlRelaxParserSetFlag(ctxt, flags);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRelaxNGParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_flags, flags, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRelaxParserSetFlag",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_relaxng(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing relaxng : 14 of 25 functions ...\n");
-    test_ret += test_xmlRelaxNGDump();
-    test_ret += test_xmlRelaxNGDumpTree();
-    test_ret += test_xmlRelaxNGGetParserErrors();
-    test_ret += test_xmlRelaxNGGetValidErrors();
-    test_ret += test_xmlRelaxNGInitTypes();
-    test_ret += test_xmlRelaxNGNewDocParserCtxt();
-    test_ret += test_xmlRelaxNGNewMemParserCtxt();
-    test_ret += test_xmlRelaxNGNewParserCtxt();
-    test_ret += test_xmlRelaxNGNewValidCtxt();
-    test_ret += test_xmlRelaxNGParse();
-    test_ret += test_xmlRelaxNGSetParserErrors();
-    test_ret += test_xmlRelaxNGSetParserStructuredErrors();
-    test_ret += test_xmlRelaxNGSetResourceLoader();
-    test_ret += test_xmlRelaxNGSetValidErrors();
-    test_ret += test_xmlRelaxNGSetValidStructuredErrors();
-    test_ret += test_xmlRelaxNGValidateDoc();
-    test_ret += test_xmlRelaxNGValidateFullElement();
-    test_ret += test_xmlRelaxNGValidatePopElement();
-    test_ret += test_xmlRelaxNGValidatePushCData();
-    test_ret += test_xmlRelaxNGValidatePushElement();
-    test_ret += test_xmlRelaxParserSetFlag();
-
-    if (test_ret != 0)
-	printf("Module relaxng: %d errors\n", test_ret);
-    return(test_ret);
-}
-static int
-test_schemasInternals(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing schemasInternals : 0 of 2 functions ...\n");
-
-    if (test_ret != 0)
-	printf("Module schemasInternals: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlSchematronNewDocParserCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchematronNewMemParserCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchematronNewParserCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchematronNewValidCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchematronParse(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchematronSetValidStructuredErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_SCHEMATRON_ENABLED
-
-#define gen_nb_xmlSchematronValidCtxtPtr 1
-#define gen_xmlSchematronValidCtxtPtr(no, nr) NULL
-#define des_xmlSchematronValidCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchematronValidateDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMATRON_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchematronValidCtxtPtr ctxt; /* the schema validation context */
-    int n_ctxt;
-    xmlDocPtr instance; /* the document instance tree */
-    int n_instance;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchematronValidCtxtPtr;n_ctxt++) {
-    for (n_instance = 0;n_instance < gen_nb_xmlDocPtr;n_instance++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchematronValidCtxtPtr(n_ctxt, 0);
-        instance = gen_xmlDocPtr(n_instance, 1);
-
-        ret_val = xmlSchematronValidateDoc(ctxt, instance);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchematronValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_instance, instance, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchematronValidateDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_instance);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_schematron(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing schematron : 1 of 10 functions ...\n");
-    test_ret += test_xmlSchematronNewDocParserCtxt();
-    test_ret += test_xmlSchematronNewMemParserCtxt();
-    test_ret += test_xmlSchematronNewParserCtxt();
-    test_ret += test_xmlSchematronNewValidCtxt();
-    test_ret += test_xmlSchematronParse();
-    test_ret += test_xmlSchematronSetValidStructuredErrors();
-    test_ret += test_xmlSchematronValidateDoc();
-
-    if (test_ret != 0)
-	printf("Module schematron: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAddChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-    xmlNodePtr cur; /* the child node */
-    int n_cur;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlAddChild(parent, cur);
-        if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddChildList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-    xmlNodePtr cur; /* the first node in the list */
-    int n_cur;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlAddChildList(parent, cur);
-        if (ret_val == NULL) { xmlFreeNodeList(cur) ; cur = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddChildList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddNextSibling(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr prev; /* the target node */
-    int n_prev;
-    xmlNodePtr cur; /* the new node */
-    int n_cur;
-
-    for (n_prev = 0;n_prev < gen_nb_xmlNodePtr;n_prev++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        prev = gen_xmlNodePtr(n_prev, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlAddNextSibling(prev, cur);
-        if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_prev, prev, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddNextSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_prev);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddPrevSibling(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr next; /* the target node */
-    int n_next;
-    xmlNodePtr cur; /* the new node */
-    int n_cur;
-
-    for (n_next = 0;n_next < gen_nb_xmlNodePtr;n_next++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        next = gen_xmlNodePtr(n_next, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlAddPrevSibling(next, cur);
-        if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_next, next, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddPrevSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_next);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddSibling(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the target node */
-    int n_node;
-    xmlNodePtr cur; /* the new node */
-    int n_cur;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlAddSibling(node, cur);
-        if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAttrSerializeTxtContent(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
+    xmlRelaxNGCleanupTypes();
+    xmlRelaxNGFree(NULL);
+    xmlRelaxNGFreeParserCtxt(NULL);
+    xmlRelaxNGFreeValidCtxt(NULL);
+    xmlRelaxNGGetParserErrors(NULL, NULL, NULL, NULL);
+    xmlRelaxNGGetValidErrors(NULL, NULL, NULL, NULL);
+    xmlRelaxNGInitTypes();
+    xmlRelaxNGNewDocParserCtxt(NULL);
+    xmlRelaxNGNewMemParserCtxt(NULL, 0);
+    xmlRelaxNGNewParserCtxt(NULL);
+    xmlRelaxNGFreeValidCtxt(xmlRelaxNGNewValidCtxt(NULL));
+    xmlRelaxNGParse(NULL);
+    xmlRelaxNGSetParserErrors(NULL, 0, 0, NULL);
+    xmlRelaxNGSetParserStructuredErrors(NULL, 0, NULL);
+    xmlRelaxNGSetResourceLoader(NULL, 0, NULL);
+    xmlRelaxNGSetValidErrors(NULL, 0, 0, NULL);
+    xmlRelaxNGSetValidStructuredErrors(NULL, 0, NULL);
+    xmlRelaxNGValidateDoc(NULL, NULL);
+    xmlRelaxNGValidateFullElement(NULL, NULL, NULL);
+    xmlRelaxNGValidatePopElement(NULL, NULL, NULL);
+    xmlRelaxNGValidatePushCData(NULL, NULL, 0);
+    xmlRelaxNGValidatePushElement(NULL, NULL, NULL);
+    xmlRelaxParserSetFlag(NULL, 0);
+#ifdef LIBXML_DEBUG_ENABLED
+    xmlRelaxNGDump(NULL, NULL);
+#endif /* LIBXML_DEBUG_ENABLED */
 #ifdef LIBXML_OUTPUT_ENABLED
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlAttrPtr attr; /* the attribute node */
-    int n_attr;
-    const xmlChar * string; /* the text content */
-    int n_string;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr;n_string++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        attr = gen_xmlAttrPtr(n_attr, 2);
-        string = gen_const_xmlChar_ptr(n_string, 3);
-
-        xmlAttrSerializeTxtContent(buf, doc, attr, string);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlAttrPtr(n_attr, attr, 2);
-        des_const_xmlChar_ptr(n_string, string, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAttrSerializeTxtContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_attr);
-            printf(" %d", n_string);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_const_xmlBuf_ptr 1
-#define gen_const_xmlBuf_ptr(no, nr) NULL
-#define des_const_xmlBuf_ptr(no, val, nr)
-
-static int
-test_xmlBufContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlBuf * buf; /* the buffer */
-    int n_buf;
-
-    for (n_buf = 0;n_buf < gen_nb_const_xmlBuf_ptr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_const_xmlBuf_ptr(n_buf, 0);
-
-        ret_val = xmlBufContent(buf);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlBuf_ptr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlBufPtr 1
-#define gen_xmlBufPtr(no, nr) NULL
-#define des_xmlBufPtr(no, val, nr)
-
-static int
-test_xmlBufEnd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlBufPtr buf; /* the buffer */
-    int n_buf;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufPtr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufPtr(n_buf, 0);
-
-        ret_val = xmlBufEnd(buf);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlBufPtr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufEnd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_const_xmlNode_ptr 1
-#define gen_const_xmlNode_ptr(no, nr) NULL
-#define des_const_xmlNode_ptr(no, val, nr)
-
-static int
-test_xmlBufGetNodeContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufPtr buf; /* a buffer xmlBufPtr */
-    int n_buf;
-    const xmlNode * cur; /* the node being read */
-    int n_cur;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufPtr;n_buf++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufPtr(n_buf, 0);
-        cur = gen_const_xmlNode_ptr(n_cur, 1);
-
-        ret_val = xmlBufGetNodeContent(buf, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufPtr(n_buf, buf, 0);
-        des_const_xmlNode_ptr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufGetNodeContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufNodeDump(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufShrink(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufUse(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferAdd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer to dump */
-    int n_buf;
-    const xmlChar * str; /* the #xmlChar string */
-    int n_str;
-    int len; /* the number of #xmlChar to add */
-    int n_len;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        len = gen_int(n_len, 2);
-        if ((str != NULL) &&
-            (len > xmlStrlen(BAD_CAST str)))
-            len = 0;
-
-        ret_val = xmlBufferAdd(buf, str, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferAdd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_str);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferAddHead(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer */
-    int n_buf;
-    const xmlChar * str; /* the #xmlChar string */
-    int n_str;
-    int len; /* the number of #xmlChar to add */
-    int n_len;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        len = gen_int(n_len, 2);
-        if ((str != NULL) &&
-            (len > xmlStrlen(BAD_CAST str)))
-            len = 0;
-
-        ret_val = xmlBufferAddHead(buf, str, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferAddHead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_str);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferCCat(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer to dump */
-    int n_buf;
-    const char * str; /* the C char string */
-    int n_str;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_str = 0;n_str < gen_nb_const_char_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        str = gen_const_char_ptr(n_str, 1);
-
-        ret_val = xmlBufferCCat(buf, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_char_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferCCat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferCat(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer to add to */
-    int n_buf;
-    const xmlChar * str; /* the #xmlChar string */
-    int n_str;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-
-        ret_val = xmlBufferCat(buf, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferCat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_const_xmlBuffer_ptr 1
-#define gen_const_xmlBuffer_ptr(no, nr) NULL
-#define des_const_xmlBuffer_ptr(no, val, nr)
-
-static int
-test_xmlBufferContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlBuffer * buf; /* the buffer */
-    int n_buf;
+    xmlRelaxNGDumpTree(NULL, NULL);
+#endif /* LIBXML_OUTPUT_ENABLED */
+#endif /* LIBXML_RELAXNG_ENABLED */
+
+#ifdef LIBXML_SAX1_ENABLED
+    xmlParseBalancedChunkMemory(NULL, NULL, NULL, 0, NULL, NULL);
+    xmlParseBalancedChunkMemoryRecover(NULL, NULL, NULL, 0, NULL, NULL, 0);
+    xmlFreeDoc(xmlParseDoc(NULL));
+    xmlFreeDoc(xmlParseEntity(NULL));
+    xmlParseExternalEntity(NULL, NULL, NULL, 0, NULL, NULL, NULL);
+    xmlFreeDoc(xmlParseFile(NULL));
+    xmlFreeDoc(xmlParseMemory(NULL, 0));
+    xmlFreeDoc(xmlRecoverDoc(NULL));
+    xmlFreeDoc(xmlRecoverFile(NULL));
+    xmlFreeDoc(xmlRecoverMemory(NULL, 0));
+    xmlSAXDefaultVersion(0);
+    xmlFreeDoc(xmlSAXParseDoc(NULL, NULL, 0));
+    xmlFreeDoc(xmlSAXParseEntity(NULL, NULL));
+    xmlFreeDoc(xmlSAXParseFile(NULL, NULL, 0));
+    xmlFreeDoc(xmlSAXParseFileWithData(NULL, NULL, 0, NULL));
+    xmlFreeDoc(xmlSAXParseMemory(NULL, NULL, 0, 0));
+    xmlFreeDoc(xmlSAXParseMemoryWithData(NULL, NULL, 0, 0, NULL));
+    xmlSAXUserParseFile(NULL, NULL, NULL);
+    xmlSAXUserParseMemory(NULL, NULL, NULL, 0);
+    xmlSetupParserForBuffer(NULL, NULL, NULL);
+#endif /* LIBXML_SAX1_ENABLED */
 
-    for (n_buf = 0;n_buf < gen_nb_const_xmlBuffer_ptr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_const_xmlBuffer_ptr(n_buf, 0);
-
-        ret_val = xmlBufferContent(buf);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlBuffer_ptr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferCreate(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlBufferCreate();
-        desret_xmlBufferPtr(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferCreate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferCreateSize(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferCreateStatic(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferDetach(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlBufferPtr buf; /* the buffer */
-    int n_buf;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-
-        ret_val = xmlBufferDetach(buf);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferDetach",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferEmpty(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr buf; /* the buffer */
-    int n_buf;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-
-        xmlBufferEmpty(buf);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferEmpty",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferGrow(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer */
-    int n_buf;
-    unsigned int len; /* the minimum free size to allocate */
-    int n_len;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_len = 0;n_len < gen_nb_unsigned_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        len = gen_unsigned_int(n_len, 1);
-
-        ret_val = xmlBufferGrow(buf, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_unsigned_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferGrow",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferLength(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlBuffer * buf; /* the buffer */
-    int n_buf;
-
-    for (n_buf = 0;n_buf < gen_nb_const_xmlBuffer_ptr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_const_xmlBuffer_ptr(n_buf, 0);
-
-        ret_val = xmlBufferLength(buf);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlBuffer_ptr(n_buf, buf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferLength",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferResize(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer to resize */
-    int n_buf;
-    unsigned int size; /* the desired size */
-    int n_size;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_size = 0;n_size < gen_nb_unsigned_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        size = gen_unsigned_int(n_size, 1);
-
-        ret_val = xmlBufferResize(buf, size);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_unsigned_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferResize",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferSetAllocationScheme(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr buf; /* the buffer to tune */
-    int n_buf;
-    xmlBufferAllocationScheme scheme; /* allocation scheme to use */
-    int n_scheme;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_scheme = 0;n_scheme < gen_nb_xmlBufferAllocationScheme;n_scheme++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        scheme = gen_xmlBufferAllocationScheme(n_scheme, 1);
-
-        xmlBufferSetAllocationScheme(buf, scheme);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlBufferAllocationScheme(n_scheme, scheme, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferSetAllocationScheme",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_scheme);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferShrink(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the buffer to dump */
-    int n_buf;
-    unsigned int len; /* the number of xmlChar to remove */
-    int n_len;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_len = 0;n_len < gen_nb_unsigned_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        len = gen_unsigned_int(n_len, 1);
-
-        ret_val = xmlBufferShrink(buf, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_unsigned_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferShrink",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferWriteCHAR(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer */
-    int n_buf;
-    const xmlChar * string; /* the string to add */
-    int n_string;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr;n_string++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        string = gen_const_xmlChar_ptr(n_string, 1);
-
-        xmlBufferWriteCHAR(buf, string);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_xmlChar_ptr(n_string, string, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferWriteCHAR",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_string);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferWriteChar(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    const char * string; /* the string to add */
-    int n_string;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_string = 0;n_string < gen_nb_const_char_ptr;n_string++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        string = gen_const_char_ptr(n_string, 1);
-
-        xmlBufferWriteChar(buf, string);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_char_ptr(n_string, string, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferWriteChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_string);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBufferWriteQuotedString(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    const xmlChar * string; /* the string to add */
-    int n_string;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr;n_string++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        string = gen_const_xmlChar_ptr(n_string, 1);
-
-        xmlBufferWriteQuotedString(buf, string);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_const_xmlChar_ptr(n_string, string, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBufferWriteQuotedString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_string);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBuildQName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * ncname; /* the Name */
-    int n_ncname;
-    const xmlChar * prefix; /* the prefix */
-    int n_prefix;
-    xmlChar * memory; /* preallocated memory */
-    int n_memory;
-    int len; /* preallocated memory length */
-    int n_len;
-
-    for (n_ncname = 0;n_ncname < gen_nb_const_xmlChar_ptr;n_ncname++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_memory = 0;n_memory < gen_nb_xmlChar_ptr;n_memory++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ncname = gen_const_xmlChar_ptr(n_ncname, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        memory = gen_xmlChar_ptr(n_memory, 2);
-        len = gen_int(n_len, 3);
-        if ((prefix != NULL) &&
-            (len > xmlStrlen(BAD_CAST prefix)))
-            len = 0;
-
-        ret_val = xmlBuildQName(ncname, prefix, memory, len);
-        if ((ret_val != NULL) && (ret_val != ncname) &&
-              (ret_val != prefix) && (ret_val != memory))
-              xmlFree(ret_val);
-	  ret_val = NULL;
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_ncname, ncname, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_xmlChar_ptr(n_memory, memory, 2);
-        des_int(n_len, len, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBuildQName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ncname);
-            printf(" %d", n_prefix);
-            printf(" %d", n_memory);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlChildElementCount(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    unsigned long ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-
-        ret_val = xmlChildElementCount(parent);
-        desret_unsigned_long(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlChildElementCount",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyDoc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    int recursive; /* if not zero do a recursive copy. */
-    int n_recursive;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_recursive = 0;n_recursive < gen_nb_int;n_recursive++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        recursive = gen_int(n_recursive, 1);
-
-        ret_val = xmlCopyDoc(doc, recursive);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_int(n_recursive, recursive, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_recursive);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyDtd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDtdPtr ret_val;
-    xmlDtdPtr dtd; /* the DTD */
-    int n_dtd;
-
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-        mem_base = xmlMemBlocks();
-        dtd = gen_xmlDtdPtr(n_dtd, 0);
-
-        ret_val = xmlCopyDtd(dtd);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlDtdPtr(n_dtd, dtd, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyDtd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dtd);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyNamespace(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNsPtr ret_val;
-    xmlNsPtr cur; /* the namespace */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNsPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNsPtr(n_cur, 0);
-
-        ret_val = xmlCopyNamespace(cur);
-        if (ret_val != NULL) xmlFreeNs(ret_val);
-        desret_xmlNsPtr(ret_val);
-        call_tests++;
-        des_xmlNsPtr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyNamespace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyNamespaceList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNsPtr ret_val;
-    xmlNsPtr cur; /* the first namespace */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNsPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNsPtr(n_cur, 0);
-
-        ret_val = xmlCopyNamespaceList(cur);
-        if (ret_val != NULL) xmlFreeNsList(ret_val);
-        desret_xmlNsPtr(ret_val);
-        call_tests++;
-        des_xmlNsPtr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyNamespaceList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    int extended; /* if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable) */
-    int n_extended;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_extended = 0;n_extended < gen_nb_int;n_extended++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        extended = gen_int(n_extended, 1);
-
-        ret_val = xmlCopyNode(node, extended);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_int(n_extended, extended, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_extended);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyNodeList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the first node in the list. */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-
-        ret_val = xmlCopyNodeList(node);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyNodeList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr target; /* the element where the attribute will be grafted */
-    int n_target;
-    xmlAttrPtr cur; /* the attribute */
-    int n_cur;
-
-    for (n_target = 0;n_target < gen_nb_xmlNodePtr;n_target++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlAttrPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        target = gen_xmlNodePtr(n_target, 0);
-        cur = gen_xmlAttrPtr(n_cur, 1);
-
-        ret_val = xmlCopyProp(target, cur);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_target, target, 0);
-        des_xmlAttrPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_target);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyPropList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr target; /* the element where the attributes will be grafted */
-    int n_target;
-    xmlAttrPtr cur; /* the first attribute */
-    int n_cur;
-
-    for (n_target = 0;n_target < gen_nb_xmlNodePtr;n_target++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlAttrPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        target = gen_xmlNodePtr(n_target, 0);
-        cur = gen_xmlAttrPtr(n_cur, 1);
-
-        ret_val = xmlCopyPropList(target, cur);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_target, target, 0);
-        des_xmlAttrPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyPropList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_target);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateIntSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDtdPtr ret_val;
-    xmlDocPtr doc; /* the document pointer (optional) */
-    int n_doc;
-    const xmlChar * name; /* the DTD name (optional) */
-    int n_name;
-    const xmlChar * ExternalID; /* the external (PUBLIC) ID (optional) */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the system ID (optional) */
-    int n_SystemID;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 2);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 3);
-
-        ret_val = xmlCreateIntSubset(doc, name, ExternalID, SystemID);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 2);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCreateIntSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlDOMWrapCtxtPtr 1
-#define gen_xmlDOMWrapCtxtPtr(no, nr) NULL
-#define des_xmlDOMWrapCtxtPtr(no, val, nr)
-
-static int
-test_xmlDOMWrapAdoptNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDOMWrapCtxtPtr ctxt; /* the optional context for custom processing */
-    int n_ctxt;
-    xmlDocPtr sourceDoc; /* the optional sourceDoc */
-    int n_sourceDoc;
-    xmlNodePtr node; /* the node to start with */
-    int n_node;
-    xmlDocPtr destDoc; /* the destination doc */
-    int n_destDoc;
-    xmlNodePtr destParent; /* the optional new parent of @node in @destDoc */
-    int n_destParent;
-    int options; /* option flags */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlDOMWrapCtxtPtr;n_ctxt++) {
-    for (n_sourceDoc = 0;n_sourceDoc < gen_nb_xmlDocPtr;n_sourceDoc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_destDoc = 0;n_destDoc < gen_nb_xmlDocPtr;n_destDoc++) {
-    for (n_destParent = 0;n_destParent < gen_nb_xmlNodePtr;n_destParent++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlDOMWrapCtxtPtr(n_ctxt, 0);
-        sourceDoc = gen_xmlDocPtr(n_sourceDoc, 1);
-        node = gen_xmlNodePtr(n_node, 2);
-        destDoc = gen_xmlDocPtr(n_destDoc, 3);
-        destParent = gen_xmlNodePtr(n_destParent, 4);
-        options = gen_int(n_options, 5);
-
-        ret_val = xmlDOMWrapAdoptNode(ctxt, sourceDoc, node, destDoc, destParent, options);
-        if ((node != NULL) && (node->parent == NULL)) {xmlUnlinkNode(node);xmlFreeNode(node);node = NULL;}
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDOMWrapCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_sourceDoc, sourceDoc, 1);
-        des_xmlNodePtr(n_node, node, 2);
-        des_xmlDocPtr(n_destDoc, destDoc, 3);
-        des_xmlNodePtr(n_destParent, destParent, 4);
-        des_int(n_options, options, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDOMWrapAdoptNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_sourceDoc);
-            printf(" %d", n_node);
-            printf(" %d", n_destDoc);
-            printf(" %d", n_destParent);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDOMWrapCloneNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDOMWrapCtxtPtr ctxt; /* the optional context for custom processing */
-    int n_ctxt;
-    xmlDocPtr sourceDoc; /* the optional sourceDoc */
-    int n_sourceDoc;
-    xmlNodePtr node; /* the node to start with */
-    int n_node;
-    xmlNodePtr * resNode; /* the clone of the given @node */
-    int n_resNode;
-    xmlDocPtr destDoc; /* the destination doc */
-    int n_destDoc;
-    xmlNodePtr destParent; /* the optional new parent of @node in @destDoc */
-    int n_destParent;
-    int deep; /* descend into child if set */
-    int n_deep;
-    int options; /* option flags */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlDOMWrapCtxtPtr;n_ctxt++) {
-    for (n_sourceDoc = 0;n_sourceDoc < gen_nb_xmlDocPtr;n_sourceDoc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_resNode = 0;n_resNode < gen_nb_xmlNodePtr_ptr;n_resNode++) {
-    for (n_destDoc = 0;n_destDoc < gen_nb_xmlDocPtr;n_destDoc++) {
-    for (n_destParent = 0;n_destParent < gen_nb_xmlNodePtr;n_destParent++) {
-    for (n_deep = 0;n_deep < gen_nb_int;n_deep++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlDOMWrapCtxtPtr(n_ctxt, 0);
-        sourceDoc = gen_xmlDocPtr(n_sourceDoc, 1);
-        node = gen_xmlNodePtr(n_node, 2);
-        resNode = gen_xmlNodePtr_ptr(n_resNode, 3);
-        destDoc = gen_xmlDocPtr(n_destDoc, 4);
-        destParent = gen_xmlNodePtr(n_destParent, 5);
-        deep = gen_int(n_deep, 6);
-        options = gen_int(n_options, 7);
-
-        ret_val = xmlDOMWrapCloneNode(ctxt, sourceDoc, node, resNode, destDoc, destParent, deep, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDOMWrapCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_sourceDoc, sourceDoc, 1);
-        des_xmlNodePtr(n_node, node, 2);
-        des_xmlNodePtr_ptr(n_resNode, resNode, 3);
-        des_xmlDocPtr(n_destDoc, destDoc, 4);
-        des_xmlNodePtr(n_destParent, destParent, 5);
-        des_int(n_deep, deep, 6);
-        des_int(n_options, options, 7);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDOMWrapCloneNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_sourceDoc);
-            printf(" %d", n_node);
-            printf(" %d", n_resNode);
-            printf(" %d", n_destDoc);
-            printf(" %d", n_destParent);
-            printf(" %d", n_deep);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDOMWrapNewCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlDOMWrapReconcileNamespaces(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDOMWrapCtxtPtr ctxt; /* DOM wrapper context, unused at the moment */
-    int n_ctxt;
-    xmlNodePtr elem; /* the element-node */
-    int n_elem;
-    int options; /* option flags */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlDOMWrapCtxtPtr;n_ctxt++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlDOMWrapCtxtPtr(n_ctxt, 0);
-        elem = gen_xmlNodePtr(n_elem, 1);
-        options = gen_int(n_options, 2);
-
-        ret_val = xmlDOMWrapReconcileNamespaces(ctxt, elem, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDOMWrapCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_elem, elem, 1);
-        des_int(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDOMWrapReconcileNamespaces",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_elem);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDOMWrapRemoveNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDOMWrapCtxtPtr ctxt; /* a DOM wrapper context */
-    int n_ctxt;
-    xmlDocPtr doc; /* the doc */
-    int n_doc;
-    xmlNodePtr node; /* the node to be removed. */
-    int n_node;
-    int options; /* set of options, unused at the moment */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlDOMWrapCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlDOMWrapCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        node = gen_xmlNodePtr(n_node, 2);
-        options = gen_int(n_options, 3);
-
-        ret_val = xmlDOMWrapRemoveNode(ctxt, doc, node, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDOMWrapCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_node, node, 2);
-        des_int(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDOMWrapRemoveNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_node);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDeregisterNodeDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocCopyNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    int extended; /* if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable) */
-    int n_extended;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_extended = 0;n_extended < gen_nb_int;n_extended++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        extended = gen_int(n_extended, 2);
-
-        ret_val = xmlDocCopyNode(node, doc, extended);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_int(n_extended, extended, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocCopyNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_doc);
-            printf(" %d", n_extended);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocCopyNodeList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document */
-    int n_doc;
-    xmlNodePtr node; /* the first node in the list. */
-    int n_node;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlDocCopyNodeList(doc, node);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocCopyNodeList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    FILE * f; /* the FILE* */
-    int n_f;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-
-    for (n_f = 0;n_f < gen_nb_FILE_ptr;n_f++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        f = gen_FILE_ptr(n_f, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-
-        ret_val = xmlDocDump(f, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_f, f, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_f);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocDumpFormatMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    xmlChar ** mem; /* OUT: the memory pointer */
-    int n_mem;
-    int * size; /* OUT: the memory length */
-    int n_size;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_mem = 0;n_mem < gen_nb_xmlChar_ptr_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int_ptr;n_size++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlDocPtr(n_cur, 0);
-        mem = gen_xmlChar_ptr_ptr(n_mem, 1);
-        size = gen_int_ptr(n_size, 2);
-        format = gen_int(n_format, 3);
-
-        xmlDocDumpFormatMemory(cur, mem, size, format);
-        call_tests++;
-        des_xmlDocPtr(n_cur, cur, 0);
-        des_xmlChar_ptr_ptr(n_mem, mem, 1);
-        des_int_ptr(n_size, size, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocDumpFormatMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocDumpFormatMemoryEnc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr out_doc; /* Document to generate XML text from */
-    int n_out_doc;
-    xmlChar ** doc_txt_ptr; /* Memory pointer for allocated XML text */
-    int n_doc_txt_ptr;
-    int * doc_txt_len; /* Length of the generated XML text */
-    int n_doc_txt_len;
-    const char * txt_encoding; /* Character encoding to use when generating XML text */
-    int n_txt_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_out_doc = 0;n_out_doc < gen_nb_xmlDocPtr;n_out_doc++) {
-    for (n_doc_txt_ptr = 0;n_doc_txt_ptr < gen_nb_xmlChar_ptr_ptr;n_doc_txt_ptr++) {
-    for (n_doc_txt_len = 0;n_doc_txt_len < gen_nb_int_ptr;n_doc_txt_len++) {
-    for (n_txt_encoding = 0;n_txt_encoding < gen_nb_const_char_ptr;n_txt_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        out_doc = gen_xmlDocPtr(n_out_doc, 0);
-        doc_txt_ptr = gen_xmlChar_ptr_ptr(n_doc_txt_ptr, 1);
-        doc_txt_len = gen_int_ptr(n_doc_txt_len, 2);
-        txt_encoding = gen_const_char_ptr(n_txt_encoding, 3);
-        format = gen_int(n_format, 4);
-
-        xmlDocDumpFormatMemoryEnc(out_doc, doc_txt_ptr, doc_txt_len, txt_encoding, format);
-        call_tests++;
-        des_xmlDocPtr(n_out_doc, out_doc, 0);
-        des_xmlChar_ptr_ptr(n_doc_txt_ptr, doc_txt_ptr, 1);
-        des_int_ptr(n_doc_txt_len, doc_txt_len, 2);
-        des_const_char_ptr(n_txt_encoding, txt_encoding, 3);
-        des_int(n_format, format, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocDumpFormatMemoryEnc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out_doc);
-            printf(" %d", n_doc_txt_ptr);
-            printf(" %d", n_doc_txt_len);
-            printf(" %d", n_txt_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocDumpMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    xmlChar ** mem; /* OUT: the memory pointer */
-    int n_mem;
-    int * size; /* OUT: the memory length */
-    int n_size;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_mem = 0;n_mem < gen_nb_xmlChar_ptr_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int_ptr;n_size++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlDocPtr(n_cur, 0);
-        mem = gen_xmlChar_ptr_ptr(n_mem, 1);
-        size = gen_int_ptr(n_size, 2);
-
-        xmlDocDumpMemory(cur, mem, size);
-        call_tests++;
-        des_xmlDocPtr(n_cur, cur, 0);
-        des_xmlChar_ptr_ptr(n_mem, mem, 1);
-        des_int_ptr(n_size, size, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocDumpMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocDumpMemoryEnc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlDocPtr out_doc; /* Document to generate XML text from */
-    int n_out_doc;
-    xmlChar ** doc_txt_ptr; /* Memory pointer for allocated XML text */
-    int n_doc_txt_ptr;
-    int * doc_txt_len; /* Length of the generated XML text */
-    int n_doc_txt_len;
-    const char * txt_encoding; /* Character encoding to use when generating XML text */
-    int n_txt_encoding;
-
-    for (n_out_doc = 0;n_out_doc < gen_nb_xmlDocPtr;n_out_doc++) {
-    for (n_doc_txt_ptr = 0;n_doc_txt_ptr < gen_nb_xmlChar_ptr_ptr;n_doc_txt_ptr++) {
-    for (n_doc_txt_len = 0;n_doc_txt_len < gen_nb_int_ptr;n_doc_txt_len++) {
-    for (n_txt_encoding = 0;n_txt_encoding < gen_nb_const_char_ptr;n_txt_encoding++) {
-        mem_base = xmlMemBlocks();
-        out_doc = gen_xmlDocPtr(n_out_doc, 0);
-        doc_txt_ptr = gen_xmlChar_ptr_ptr(n_doc_txt_ptr, 1);
-        doc_txt_len = gen_int_ptr(n_doc_txt_len, 2);
-        txt_encoding = gen_const_char_ptr(n_txt_encoding, 3);
-
-        xmlDocDumpMemoryEnc(out_doc, doc_txt_ptr, doc_txt_len, txt_encoding);
-        call_tests++;
-        des_xmlDocPtr(n_out_doc, out_doc, 0);
-        des_xmlChar_ptr_ptr(n_doc_txt_ptr, doc_txt_ptr, 1);
-        des_int_ptr(n_doc_txt_len, doc_txt_len, 2);
-        des_const_char_ptr(n_txt_encoding, txt_encoding, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocDumpMemoryEnc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out_doc);
-            printf(" %d", n_doc_txt_ptr);
-            printf(" %d", n_doc_txt_len);
-            printf(" %d", n_txt_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocFormatDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    FILE * f; /* the FILE* */
-    int n_f;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_f = 0;n_f < gen_nb_FILE_ptr;n_f++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        f = gen_FILE_ptr(n_f, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        format = gen_int(n_format, 2);
-
-        ret_val = xmlDocFormatDump(f, cur, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_f, f, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_int(n_format, format, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocFormatDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_f);
-            printf(" %d", n_cur);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocGetRootElement(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlDoc * doc; /* the document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-
-        ret_val = xmlDocGetRootElement(doc);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocGetRootElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlDocSetRootElement(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr root; /* the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead. */
-    int n_root;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_root = 0;n_root < gen_nb_xmlNodePtr_in;n_root++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        root = gen_xmlNodePtr_in(n_root, 1);
-
-        ret_val = xmlDocSetRootElement(doc, root);
-        if (doc == NULL) { xmlFreeNode(root) ; root = NULL ; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr_in(n_root, root, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDocSetRootElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_root);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlElemDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    FILE * f; /* the FILE * for the output */
-    int n_f;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-
-    for (n_f = 0;n_f < gen_nb_FILE_ptr;n_f++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        f = gen_FILE_ptr(n_f, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-
-        xmlElemDump(f, doc, cur);
-        call_tests++;
-        des_FILE_ptr(n_f, f, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlElemDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_f);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFirstElementChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-
-        ret_val = xmlFirstElementChild(parent);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlFirstElementChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetBufferAllocationScheme(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferAllocationScheme ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlGetBufferAllocationScheme();
-        desret_xmlBufferAllocationScheme(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetBufferAllocationScheme",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetCompressMode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlGetCompressMode();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetCompressMode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDocCompressMode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlDoc * doc; /* the document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-
-        ret_val = xmlGetDocCompressMode(doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDocCompressMode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetIntSubset(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDtdPtr ret_val;
-    const xmlDoc * doc; /* the document pointer */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-
-        ret_val = xmlGetIntSubset(doc);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetIntSubset",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetLastChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlNode * parent; /* the parent node */
-    int n_parent;
-
-    for (n_parent = 0;n_parent < gen_nb_const_xmlNode_ptr;n_parent++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_const_xmlNode_ptr(n_parent, 0);
-
-        ret_val = xmlGetLastChild(parent);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_parent, parent, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetLastChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetLineNo(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    long ret_val;
-    const xmlNode * node; /* valid node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-
-        ret_val = xmlGetLineNo(node);
-        desret_long(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetLineNo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetNoNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetNoNsProp(node, name);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetNoNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetNodePath(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * node; /* a node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-
-        ret_val = xmlGetNodePath(node);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetNodePath",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetNsList(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetNsListSafe(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * nameSpace; /* the URI of the namespace */
-    int n_nameSpace;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_nameSpace = 0;n_nameSpace < gen_nb_const_xmlChar_ptr;n_nameSpace++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        nameSpace = gen_const_xmlChar_ptr(n_nameSpace, 2);
-
-        ret_val = xmlGetNsProp(node, name, nameSpace);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_nameSpace, nameSpace, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf(" %d", n_nameSpace);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetProp(node, name);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHasNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * nameSpace; /* the URI of the namespace */
-    int n_nameSpace;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_nameSpace = 0;n_nameSpace < gen_nb_const_xmlChar_ptr;n_nameSpace++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        nameSpace = gen_const_xmlChar_ptr(n_nameSpace, 2);
-
-        ret_val = xmlHasNsProp(node, name, nameSpace);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_nameSpace, nameSpace, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHasNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf(" %d", n_nameSpace);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlHasProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlHasProp(node, name);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlHasProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsBlankNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-
-        ret_val = xmlIsBlankNode(node);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsBlankNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsXHTML(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * systemID; /* the system identifier */
-    int n_systemID;
-    const xmlChar * publicID; /* the public identifier */
-    int n_publicID;
-
-    for (n_systemID = 0;n_systemID < gen_nb_const_xmlChar_ptr;n_systemID++) {
-    for (n_publicID = 0;n_publicID < gen_nb_const_xmlChar_ptr;n_publicID++) {
-        mem_base = xmlMemBlocks();
-        systemID = gen_const_xmlChar_ptr(n_systemID, 0);
-        publicID = gen_const_xmlChar_ptr(n_publicID, 1);
-
-        ret_val = xmlIsXHTML(systemID, publicID);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_systemID, systemID, 0);
-        des_const_xmlChar_ptr(n_publicID, publicID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsXHTML",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_systemID);
-            printf(" %d", n_publicID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlLastElementChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-
-        ret_val = xmlLastElementChild(parent);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlLastElementChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewCDataBlock(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document (optional) */
-    int n_doc;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-    int len; /* size of text content */
-    int n_len;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlNewCDataBlock(doc, content, len);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewCDataBlock",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewCharRef(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document (optional) */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlNewCharRef(doc, name);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewCharRef",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-    xmlNsPtr ns; /* a namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the name of the child */
-    int n_name;
-    const xmlChar * content; /* text content with XML references (optional) */
-    int n_content;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlNewChild(parent, ns, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewComment(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlChar * content; /* the comment content (optional) */
-    int n_content;
-
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        content = gen_const_xmlChar_ptr(n_content, 0);
-
-        ret_val = xmlNewComment(content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_content, content, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewComment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDoc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr ret_val;
-    const xmlChar * version; /* XML version string like "1.0" (optional) */
-    int n_version;
-
-    for (n_version = 0;n_version < gen_nb_const_xmlChar_ptr;n_version++) {
-        mem_base = xmlMemBlocks();
-        version = gen_const_xmlChar_ptr(n_version, 0);
-
-        ret_val = xmlNewDoc(version);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_version, version, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_version);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocComment(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * content; /* the comment content */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlNewDocComment(doc, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocComment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocFragment(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document (optional) */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlNewDocFragment(doc);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocFragment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document */
-    int n_doc;
-    xmlNsPtr ns; /* namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the node name */
-    int n_name;
-    const xmlChar * content; /* text content with XML references (optional) */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlNewDocNode(doc, ns, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocNodeEatName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document */
-    int n_doc;
-    xmlNsPtr ns; /* namespace (optional) */
-    int n_ns;
-    xmlChar * name; /* the node name */
-    int n_name;
-    const xmlChar * content; /* text content with XML references (optional) */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_eaten_name;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_eaten_name(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlNewDocNodeEatName(doc, ns, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_eaten_name(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocNodeEatName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocPI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document (optional) */
-    int n_doc;
-    const xmlChar * name; /* the processing instruction target */
-    int n_name;
-    const xmlChar * content; /* the PI content (optional) */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlNewDocPI(doc, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocPI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlDocPtr doc; /* the target document (optional) */
-    int n_doc;
-    const xmlChar * name; /* the name of the attribute */
-    int n_name;
-    const xmlChar * value; /* attribute value with XML references (optional) */
-    int n_value;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        value = gen_const_xmlChar_ptr(n_value, 2);
-
-        ret_val = xmlNewDocProp(doc, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_value, value, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocRawNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document */
-    int n_doc;
-    xmlNsPtr ns; /* namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the node name */
-    int n_name;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlNewDocRawNode(doc, ns, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocRawNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocText(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlDoc * doc; /* the target document */
-    int n_doc;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlNewDocText(doc, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocText",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocTextLen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlDocPtr doc; /* the target document */
-    int n_doc;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-    int len; /* size of text content */
-    int n_len;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlNewDocTextLen(doc, content, len);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocTextLen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
+#ifdef LIBXML_SCHEMAS_ENABLED
+    xmlSchemaCheckFacet(NULL, NULL, NULL, NULL);
+    xmlSchemaCleanupTypes();
+    xmlFree(xmlSchemaCollapseString(NULL));
+    xmlSchemaCompareValues(NULL, NULL);
+    xmlSchemaCompareValuesWhtsp(NULL, 0, NULL, 0);
+    xmlSchemaFreeValue(xmlSchemaCopyValue(NULL));
+    xmlSchemaFree(NULL);
+    xmlSchemaFreeFacet(NULL);
+    xmlSchemaFreeParserCtxt(NULL);
+    xmlSchemaFreeType(NULL);
+    xmlSchemaFreeValidCtxt(NULL);
+    xmlSchemaFreeValue(NULL);
+    xmlSchemaFreeWildcard(NULL);
+    xmlSchemaGetBuiltInListSimpleTypeItemType(NULL);
+    xmlSchemaGetBuiltInType(0);
+    xmlSchemaGetCanonValue(NULL, NULL);
+    xmlSchemaGetCanonValueWhtsp(NULL, NULL, 0);
+    xmlSchemaGetFacetValueAsULong(NULL);
+    xmlSchemaGetParserErrors(NULL, NULL, NULL, NULL);
+    xmlSchemaGetPredefinedType(NULL, NULL);
+    xmlSchemaGetValType(NULL);
+    xmlSchemaGetValidErrors(NULL, NULL, NULL, NULL);
+    xmlSchemaInitTypes();
+    xmlSchemaIsBuiltInTypeFacet(NULL, 0);
+    xmlSchemaIsValid(NULL);
+    xmlSchemaNewDocParserCtxt(NULL);
+    xmlSchemaFreeFacet(xmlSchemaNewFacet());
+    xmlSchemaNewMemParserCtxt(NULL, 0);
+    xmlSchemaFreeValue(xmlSchemaNewNOTATIONValue(NULL, NULL));
+    xmlSchemaNewParserCtxt(NULL);
+    xmlSchemaFreeValue(xmlSchemaNewQNameValue(NULL, NULL));
+    xmlSchemaFreeValue(xmlSchemaNewStringValue(0, NULL));
+    xmlSchemaFreeValidCtxt(xmlSchemaNewValidCtxt(NULL));
+    xmlSchemaParse(NULL);
+    xmlSchemaSAXPlug(NULL, NULL, NULL);
+    xmlSchemaSAXUnplug(NULL);
+    xmlSchemaSetParserErrors(NULL, 0, 0, NULL);
+    xmlSchemaSetParserStructuredErrors(NULL, 0, NULL);
+    xmlSchemaSetResourceLoader(NULL, 0, NULL);
+    xmlSchemaSetValidErrors(NULL, 0, 0, NULL);
+    xmlSchemaSetValidOptions(NULL, 0);
+    xmlSchemaSetValidStructuredErrors(NULL, 0, NULL);
+    xmlSchemaValPredefTypeNode(NULL, NULL, NULL, NULL);
+    xmlSchemaValPredefTypeNodeNoNorm(NULL, NULL, NULL, NULL);
+    xmlSchemaValidCtxtGetOptions(NULL);
+    xmlFreeParserCtxt(xmlSchemaValidCtxtGetParserCtxt(NULL));
+    xmlSchemaValidateDoc(NULL, NULL);
+    xmlSchemaValidateFacet(NULL, NULL, NULL, NULL);
+    xmlSchemaValidateFacetWhtsp(NULL, 0, 0, NULL, NULL, 0);
+    xmlSchemaValidateFile(NULL, NULL, 0);
+    xmlSchemaValidateLengthFacet(NULL, NULL, NULL, NULL, NULL);
+    xmlSchemaValidateLengthFacetWhtsp(NULL, 0, NULL, NULL, NULL, 0);
+    xmlSchemaValidateListSimpleTypeFacet(NULL, NULL, 0, NULL);
+    xmlSchemaValidateOneElement(NULL, NULL);
+    xmlSchemaValidatePredefinedType(NULL, NULL, NULL);
+    xmlSchemaValidateSetFilename(NULL, NULL);
+    xmlSchemaValidateSetLocator(NULL, 0, NULL);
+    xmlSchemaValidateStream(NULL, NULL, 0, NULL, NULL);
+    xmlSchemaValueAppend(NULL, NULL);
+    xmlSchemaValueGetAsBoolean(NULL);
+    xmlSchemaValueGetAsString(NULL);
+    xmlSchemaFreeValue(xmlSchemaValueGetNext(NULL));
+    xmlFree(xmlSchemaWhiteSpaceReplace(NULL));
+#ifdef LIBXML_DEBUG_ENABLED
+    xmlSchemaDump(NULL, NULL);
+#endif /* LIBXML_DEBUG_ENABLED */
+#endif /* LIBXML_SCHEMAS_ENABLED */
 
-    return(test_ret);
-}
+#ifdef LIBXML_SCHEMATRON_ENABLED
+    xmlSchematronFree(NULL);
+    xmlSchematronFreeParserCtxt(NULL);
+    xmlSchematronFreeValidCtxt(NULL);
+    xmlSchematronNewDocParserCtxt(NULL);
+    xmlSchematronNewMemParserCtxt(NULL, 0);
+    xmlSchematronNewParserCtxt(NULL);
+    xmlSchematronNewValidCtxt(NULL, 0);
+    xmlSchematronParse(NULL);
+    xmlSchematronSetValidStructuredErrors(NULL, 0, NULL);
+    xmlSchematronValidateDoc(NULL, NULL);
+#endif /* LIBXML_SCHEMATRON_ENABLED */
+
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+    xmlCatalogConvert();
+    xmlConvertSGMLCatalog(NULL);
+    xmlFreeCatalog(xmlLoadSGMLSuperCatalog(NULL));
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
 
+#ifdef LIBXML_VALID_ENABLED
+    xmlFreeValidCtxt(xmlCtxtGetValidCtxt(NULL));
+    xmlFreeDtd(xmlCtxtParseDtd(NULL, NULL, NULL, NULL));
+    xmlCtxtValidateDocument(NULL, NULL);
+    xmlCtxtValidateDtd(NULL, NULL, NULL);
+    xmlFreeValidCtxt(NULL);
+    xmlFreeDtd(xmlIOParseDTD(NULL, NULL, 0));
+    xmlFreeValidCtxt(xmlNewValidCtxt());
+    xmlFreeDtd(xmlParseDTD(NULL, NULL));
+    xmlFreeDtd(xmlSAXParseDTD(NULL, NULL, NULL));
+    xmlFree(xmlValidCtxtNormalizeAttributeValue(NULL, NULL, NULL, NULL, NULL));
+    xmlValidGetPotentialChildren(NULL, NULL, NULL, 0);
+    xmlValidGetValidElements(NULL, NULL, NULL, 0);
+    xmlFree(xmlValidNormalizeAttributeValue(NULL, NULL, NULL, NULL));
+    xmlValidateAttributeDecl(NULL, NULL, NULL);
+    xmlValidateAttributeValue(0, NULL);
+    xmlValidateDocument(NULL, NULL);
+    xmlValidateDocumentFinal(NULL, NULL);
+    xmlValidateDtd(NULL, NULL, NULL);
+    xmlValidateDtdFinal(NULL, NULL);
+    xmlValidateElement(NULL, NULL, NULL);
+    xmlValidateElementDecl(NULL, NULL, NULL);
+    xmlValidateNameValue(NULL);
+    xmlValidateNamesValue(NULL);
+    xmlValidateNmtokenValue(NULL);
+    xmlValidateNmtokensValue(NULL);
+    xmlValidateNotationDecl(NULL, NULL, NULL);
+    xmlValidateNotationUse(NULL, NULL, NULL);
+    xmlValidateOneAttribute(NULL, NULL, NULL, NULL, NULL);
+    xmlValidateOneElement(NULL, NULL, NULL);
+    xmlValidateOneNamespace(NULL, NULL, NULL, NULL, NULL, NULL);
+    xmlValidateRoot(NULL, NULL);
+#ifdef LIBXML_REGEXP_ENABLED
+    xmlValidBuildContentModel(NULL, NULL);
+    xmlValidatePopElement(NULL, NULL, NULL, NULL);
+    xmlValidatePushCData(NULL, NULL, 0);
+    xmlValidatePushElement(NULL, NULL, NULL, NULL);
+#endif /* LIBXML_REGEXP_ENABLED */
+#endif /* LIBXML_VALID_ENABLED */
 
-static int
-test_xmlNewDtd(void) {
-    int test_ret = 0;
+#ifdef LIBXML_WRITER_ENABLED
+    xmlFreeTextWriter(NULL);
+    xmlFreeTextWriter(xmlNewTextWriter(NULL));
+    xmlFreeTextWriter(xmlNewTextWriterDoc(NULL, 0));
+    xmlFreeTextWriter(xmlNewTextWriterFilename(NULL, 0));
+    xmlFreeTextWriter(xmlNewTextWriterMemory(NULL, 0));
+    xmlFreeTextWriter(xmlNewTextWriterPushParser(NULL, 0));
+    xmlFreeTextWriter(xmlNewTextWriterTree(NULL, NULL, 0));
+    xmlTextWriterClose(NULL);
+    xmlTextWriterEndAttribute(NULL);
+    xmlTextWriterEndCDATA(NULL);
+    xmlTextWriterEndComment(NULL);
+    xmlTextWriterEndDTD(NULL);
+    xmlTextWriterEndDTDAttlist(NULL);
+    xmlTextWriterEndDTDElement(NULL);
+    xmlTextWriterEndDTDEntity(NULL);
+    xmlTextWriterEndDocument(NULL);
+    xmlTextWriterEndElement(NULL);
+    xmlTextWriterEndPI(NULL);
+    xmlTextWriterFlush(NULL);
+    xmlTextWriterFullEndElement(NULL);
+    xmlTextWriterSetIndent(NULL, 0);
+    xmlTextWriterSetIndentString(NULL, NULL);
+    xmlTextWriterSetQuoteChar(NULL, 0);
+    xmlTextWriterStartAttribute(NULL, NULL);
+    xmlTextWriterStartAttributeNS(NULL, NULL, NULL, NULL);
+    xmlTextWriterStartCDATA(NULL);
+    xmlTextWriterStartComment(NULL);
+    xmlTextWriterStartDTD(NULL, NULL, NULL, NULL);
+    xmlTextWriterStartDTDAttlist(NULL, NULL);
+    xmlTextWriterStartDTDElement(NULL, NULL);
+    xmlTextWriterStartDTDEntity(NULL, 0, NULL);
+    xmlTextWriterStartDocument(NULL, NULL, NULL, NULL);
+    xmlTextWriterStartElement(NULL, NULL);
+    xmlTextWriterStartElementNS(NULL, NULL, NULL, NULL);
+    xmlTextWriterStartPI(NULL, NULL);
+    xmlTextWriterWriteAttribute(NULL, NULL, NULL);
+    xmlTextWriterWriteAttributeNS(NULL, NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteBase64(NULL, NULL, 0, 0);
+    xmlTextWriterWriteBinHex(NULL, NULL, 0, 0);
+    xmlTextWriterWriteCDATA(NULL, NULL);
+    xmlTextWriterWriteComment(NULL, NULL);
+    xmlTextWriterWriteDTD(NULL, NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteDTDAttlist(NULL, NULL, NULL);
+    xmlTextWriterWriteDTDElement(NULL, NULL, NULL);
+    xmlTextWriterWriteDTDEntity(NULL, 0, NULL, NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteDTDExternalEntity(NULL, 0, NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteDTDExternalEntityContents(NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteDTDInternalEntity(NULL, 0, NULL, NULL);
+    xmlTextWriterWriteDTDNotation(NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteElement(NULL, NULL, NULL);
+    xmlTextWriterWriteElementNS(NULL, NULL, NULL, NULL, NULL);
+    xmlTextWriterWriteFormatAttribute(NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatAttributeNS(NULL, NULL, NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatCDATA(NULL, NULL, 0);
+    xmlTextWriterWriteFormatComment(NULL, NULL, 0);
+    xmlTextWriterWriteFormatDTD(NULL, NULL, NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatDTDAttlist(NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatDTDElement(NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatDTDInternalEntity(NULL, 0, NULL, NULL, 0);
+    xmlTextWriterWriteFormatElement(NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatElementNS(NULL, NULL, NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatPI(NULL, NULL, NULL, 0);
+    xmlTextWriterWriteFormatRaw(NULL, NULL, 0);
+    xmlTextWriterWriteFormatString(NULL, NULL, 0);
+    xmlTextWriterWritePI(NULL, NULL, NULL);
+    xmlTextWriterWriteRaw(NULL, NULL);
+    xmlTextWriterWriteRawLen(NULL, NULL, 0);
+    xmlTextWriterWriteString(NULL, NULL);
+#endif /* LIBXML_WRITER_ENABLED */
 
-    int mem_base;
-    xmlDtdPtr ret_val;
-    xmlDocPtr doc; /* the document pointer (optional) */
-    int n_doc;
-    const xmlChar * name; /* the DTD name (optional) */
-    int n_name;
-    const xmlChar * ExternalID; /* the external ID (optional) */
-    int n_ExternalID;
-    const xmlChar * SystemID; /* the system ID (optional) */
-    int n_SystemID;
+#ifdef LIBXML_XINCLUDE_ENABLED
+    xmlXIncludeFreeContext(NULL);
+    xmlXIncludeGetLastError(NULL);
+    xmlXIncludeNewContext(NULL);
+    xmlXIncludeProcess(NULL);
+    xmlXIncludeProcessFlags(NULL, 0);
+    xmlXIncludeProcessFlagsData(NULL, 0, NULL);
+    xmlXIncludeProcessNode(NULL, NULL);
+    xmlXIncludeProcessTree(NULL);
+    xmlXIncludeProcessTreeFlags(NULL, 0);
+    xmlXIncludeProcessTreeFlagsData(NULL, 0, NULL);
+    xmlXIncludeSetErrorHandler(NULL, 0, NULL);
+    xmlXIncludeSetFlags(NULL, 0);
+    xmlXIncludeSetResourceLoader(NULL, 0, NULL);
+#endif /* LIBXML_XINCLUDE_ENABLED */
 
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ExternalID = 0;n_ExternalID < gen_nb_const_xmlChar_ptr;n_ExternalID++) {
-    for (n_SystemID = 0;n_SystemID < gen_nb_const_xmlChar_ptr;n_SystemID++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ExternalID = gen_const_xmlChar_ptr(n_ExternalID, 2);
-        SystemID = gen_const_xmlChar_ptr(n_SystemID, 3);
+#ifdef LIBXML_XPATH_ENABLED
+    xmlXPathAddValues(NULL);
+    xmlXPathBooleanFunction(NULL, 0);
+    xmlXPathCastBooleanToNumber(0);
+    xmlFree(xmlXPathCastBooleanToString(0));
+    xmlXPathCastNodeSetToBoolean(NULL);
+    xmlXPathCastNodeSetToNumber(NULL);
+    xmlFree(xmlXPathCastNodeSetToString(NULL));
+    xmlXPathCastNodeToNumber(NULL);
+    xmlFree(xmlXPathCastNodeToString(NULL));
+    xmlXPathCastNumberToBoolean(0);
+    xmlFree(xmlXPathCastNumberToString(0));
+    xmlXPathCastStringToBoolean(NULL);
+    xmlXPathCastStringToNumber(NULL);
+    xmlXPathCastToBoolean(NULL);
+    xmlXPathCastToNumber(NULL);
+    xmlFree(xmlXPathCastToString(NULL));
+    xmlXPathCeilingFunction(NULL, 0);
+    xmlXPathCmpNodes(NULL, NULL);
+    xmlXPathCompareValues(NULL, 0, 0);
+    xmlXPathCompile(NULL);
+    xmlXPathFreeObject(xmlXPathCompiledEval(NULL, NULL));
+    xmlXPathCompiledEvalToBoolean(NULL, NULL);
+    xmlXPathConcatFunction(NULL, 0);
+    xmlXPathContainsFunction(NULL, 0);
+    xmlXPathContextSetCache(NULL, 0, 0, 0);
+    xmlXPathFreeObject(xmlXPathConvertBoolean(NULL));
+    xmlXPathFreeObject(xmlXPathConvertNumber(NULL));
+    xmlXPathFreeObject(xmlXPathConvertString(NULL));
+    xmlXPathCountFunction(NULL, 0);
+    xmlXPathCtxtCompile(NULL, NULL);
+    xmlXPathFreeNodeSet(xmlXPathDifference(NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathDistinct(NULL));
+    xmlXPathFreeNodeSet(xmlXPathDistinctSorted(NULL));
+    xmlXPathDivValues(NULL);
+    xmlXPathEqualValues(NULL);
+    xmlXPathErr(NULL, 0);
+    xmlXPathFreeObject(xmlXPathEval(NULL, NULL));
+    xmlXPathEvalExpr(NULL);
+    xmlXPathFreeObject(xmlXPathEvalExpression(NULL, NULL));
+    xmlXPathEvalPredicate(NULL, NULL);
+    xmlXPathEvaluatePredicateResult(NULL, NULL);
+    xmlXPathFalseFunction(NULL, 0);
+    xmlXPathFloorFunction(NULL, 0);
+    xmlXPathFreeCompExpr(NULL);
+    xmlXPathFreeContext(NULL);
+    xmlXPathFreeNodeSet(NULL);
+    xmlXPathFreeNodeSetList(NULL);
+    xmlXPathFreeObject(NULL);
+    xmlXPathFreeParserContext(NULL);
+    xmlXPathFunctionLookup(NULL, NULL);
+    xmlXPathFunctionLookupNS(NULL, NULL, NULL);
+    xmlXPathHasSameNodes(NULL, NULL);
+    xmlXPathIdFunction(NULL, 0);
+    xmlXPathInit();
+    xmlXPathFreeNodeSet(xmlXPathIntersection(NULL, NULL));
+    xmlXPathIsInf(0);
+    xmlXPathIsNaN(0);
+    xmlXPathIsNodeType(NULL);
+    xmlXPathLangFunction(NULL, 0);
+    xmlXPathLastFunction(NULL, 0);
+    xmlXPathFreeNodeSet(xmlXPathLeading(NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathLeadingSorted(NULL, NULL));
+    xmlXPathLocalNameFunction(NULL, 0);
+    xmlXPathModValues(NULL);
+    xmlXPathMultValues(NULL);
+    xmlXPathNamespaceURIFunction(NULL, 0);
+    xmlXPathFreeObject(xmlXPathNewBoolean(0));
+    xmlXPathFreeObject(xmlXPathNewCString(NULL));
+    xmlXPathFreeContext(xmlXPathNewContext(NULL));
+    xmlXPathFreeObject(xmlXPathNewFloat(0));
+    xmlXPathFreeObject(xmlXPathNewNodeSet(NULL));
+    xmlXPathFreeObject(xmlXPathNewNodeSetList(NULL));
+    xmlXPathFreeParserContext(xmlXPathNewParserContext(NULL, NULL));
+    xmlXPathFreeObject(xmlXPathNewString(NULL));
+    xmlXPathFreeObject(xmlXPathNewValueTree(NULL));
+    xmlFreeNode(xmlXPathNextAncestor(NULL, NULL));
+    xmlFreeNode(xmlXPathNextAncestorOrSelf(NULL, NULL));
+    xmlFreeNode(xmlXPathNextAttribute(NULL, NULL));
+    xmlFreeNode(xmlXPathNextChild(NULL, NULL));
+    xmlFreeNode(xmlXPathNextDescendant(NULL, NULL));
+    xmlFreeNode(xmlXPathNextDescendantOrSelf(NULL, NULL));
+    xmlFreeNode(xmlXPathNextFollowing(NULL, NULL));
+    xmlFreeNode(xmlXPathNextFollowingSibling(NULL, NULL));
+    xmlFreeNode(xmlXPathNextNamespace(NULL, NULL));
+    xmlFreeNode(xmlXPathNextParent(NULL, NULL));
+    xmlFreeNode(xmlXPathNextPreceding(NULL, NULL));
+    xmlFreeNode(xmlXPathNextPrecedingSibling(NULL, NULL));
+    xmlFreeNode(xmlXPathNextSelf(NULL, NULL));
+    xmlXPathFreeObject(xmlXPathNodeEval(NULL, NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathNodeLeading(NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathNodeLeadingSorted(NULL, NULL));
+    xmlXPathNodeSetAdd(NULL, NULL);
+    xmlXPathNodeSetAddNs(NULL, NULL, NULL);
+    xmlXPathNodeSetAddUnique(NULL, NULL);
+    xmlXPathNodeSetContains(NULL, NULL);
+    xmlXPathFreeNodeSet(xmlXPathNodeSetCreate(NULL));
+    xmlXPathNodeSetDel(NULL, NULL);
+    xmlXPathNodeSetFreeNs(NULL);
+    xmlXPathFreeNodeSet(xmlXPathNodeSetMerge(NULL, NULL));
+    xmlXPathNodeSetRemove(NULL, 0);
+    xmlXPathNodeSetSort(NULL);
+    xmlXPathFreeNodeSet(xmlXPathNodeTrailing(NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathNodeTrailingSorted(NULL, NULL));
+    xmlXPathNormalizeFunction(NULL, 0);
+    xmlXPathNotEqualValues(NULL);
+    xmlXPathNotFunction(NULL, 0);
+    xmlXPathNsLookup(NULL, NULL);
+    xmlXPathNumberFunction(NULL, 0);
+    xmlXPathFreeObject(xmlXPathObjectCopy(NULL));
+    xmlXPathOrderDocElems(NULL);
+    xmlFree(xmlXPathParseNCName(NULL));
+    xmlFree(xmlXPathParseName(NULL));
+    xmlXPathPopBoolean(NULL);
+    xmlXPathPopExternal(NULL);
+    xmlXPathFreeNodeSet(xmlXPathPopNodeSet(NULL));
+    xmlXPathPopNumber(NULL);
+    xmlFree(xmlXPathPopString(NULL));
+    xmlXPathPositionFunction(NULL, 0);
+    xmlXPathRegisterAllFunctions(NULL);
+    xmlXPathRegisterFunc(NULL, NULL, 0);
+    xmlXPathRegisterFuncLookup(NULL, 0, NULL);
+    xmlXPathRegisterFuncNS(NULL, NULL, NULL, 0);
+    xmlXPathRegisterNs(NULL, NULL, NULL);
+    xmlXPathRegisterVariable(NULL, NULL, NULL);
+    xmlXPathRegisterVariableLookup(NULL, 0, NULL);
+    xmlXPathRegisterVariableNS(NULL, NULL, NULL, NULL);
+    xmlXPathRegisteredFuncsCleanup(NULL);
+    xmlXPathRegisteredNsCleanup(NULL);
+    xmlXPathRegisteredVariablesCleanup(NULL);
+    xmlXPathRoot(NULL);
+    xmlXPathRoundFunction(NULL, 0);
+    xmlXPathSetContextNode(NULL, NULL);
+    xmlXPathSetErrorHandler(NULL, 0, NULL);
+    xmlXPathStartsWithFunction(NULL, 0);
+    xmlXPathStringEvalNumber(NULL);
+    xmlXPathStringFunction(NULL, 0);
+    xmlXPathStringLengthFunction(NULL, 0);
+    xmlXPathSubValues(NULL);
+    xmlXPathSubstringAfterFunction(NULL, 0);
+    xmlXPathSubstringBeforeFunction(NULL, 0);
+    xmlXPathSubstringFunction(NULL, 0);
+    xmlXPathSumFunction(NULL, 0);
+    xmlXPathFreeNodeSet(xmlXPathTrailing(NULL, NULL));
+    xmlXPathFreeNodeSet(xmlXPathTrailingSorted(NULL, NULL));
+    xmlXPathTranslateFunction(NULL, 0);
+    xmlXPathTrueFunction(NULL, 0);
+    xmlXPathValueFlipSign(NULL);
+    xmlXPathFreeObject(xmlXPathValuePop(NULL));
+    xmlXPathValuePush(NULL, NULL);
+    xmlXPathFreeObject(xmlXPathVariableLookup(NULL, NULL));
+    xmlXPathFreeObject(xmlXPathVariableLookupNS(NULL, NULL, NULL));
+    xmlXPathFreeObject(xmlXPathWrapCString(NULL));
+    xmlXPathFreeObject(xmlXPathWrapExternal(NULL));
+    xmlXPathFreeObject(xmlXPathWrapNodeSet(NULL));
+    xmlXPathFreeObject(xmlXPathWrapString(NULL));
+    xmlXPatherror(NULL, NULL, 0, 0);
+#ifdef LIBXML_DEBUG_ENABLED
+    xmlXPathDebugDumpCompExpr(NULL, NULL, 0);
+    xmlXPathDebugDumpObject(NULL, NULL, 0);
+#endif /* LIBXML_DEBUG_ENABLED */
+#endif /* LIBXML_XPATH_ENABLED */
+
+#ifdef LIBXML_XPTR_ENABLED
+    xlinkGetDefaultDetect();
+    xlinkGetDefaultHandler();
+    xlinkIsLink(NULL, NULL);
+    xlinkSetDefaultDetect(0);
+    xlinkSetDefaultHandler(NULL);
+    xmlXPathFreeObject(xmlXPtrEval(NULL, NULL));
+    xmlXPathFreeContext(xmlXPtrNewContext(NULL, NULL, NULL));
+#endif /* LIBXML_XPTR_ENABLED */
 
-        ret_val = xmlNewDtd(doc, name, ExternalID, SystemID);
-        desret_xmlDtdPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ExternalID, ExternalID, 2);
-        des_const_xmlChar_ptr(n_SystemID, SystemID, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDtd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_ExternalID);
-            printf(" %d", n_SystemID);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNsPtr ns; /* namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the node name */
-    int n_name;
-
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ns = gen_xmlNsPtr(n_ns, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlNewNode(ns, name);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNsPtr(n_ns, ns, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewNodeEatName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNsPtr ns; /* namespace (optional) */
-    int n_ns;
-    xmlChar * name; /* the node name */
-    int n_name;
-
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_eaten_name;n_name++) {
-        mem_base = xmlMemBlocks();
-        ns = gen_xmlNsPtr(n_ns, 0);
-        name = gen_eaten_name(n_name, 1);
-
-        ret_val = xmlNewNodeEatName(ns, name);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNsPtr(n_ns, ns, 0);
-        des_eaten_name(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewNodeEatName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNsPtr ret_val;
-    xmlNodePtr node; /* the element carrying the namespace (optional) */
-    int n_node;
-    const xmlChar * href; /* the URI associated */
-    int n_href;
-    const xmlChar * prefix; /* the prefix for the namespace (optional) */
-    int n_prefix;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_href = 0;n_href < gen_nb_const_xmlChar_ptr;n_href++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        href = gen_const_xmlChar_ptr(n_href, 1);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 2);
-
-        ret_val = xmlNewNs(node, href, prefix);
-        if ((node == NULL) && (ret_val != NULL)) xmlFreeNs(ret_val);
-        desret_xmlNsPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_href, href, 1);
-        des_const_xmlChar_ptr(n_prefix, prefix, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_href);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr node; /* the parent node (optional) */
-    int n_node;
-    xmlNsPtr ns; /* the namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the local name of the attribute */
-    int n_name;
-    const xmlChar * value; /* the value of the attribute (optional) */
-    int n_value;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        value = gen_const_xmlChar_ptr(n_value, 3);
-
-        ret_val = xmlNewNsProp(node, ns, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_value, value, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewNsPropEatName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr node; /* the parent node (optional) */
-    int n_node;
-    xmlNsPtr ns; /* the namespace (optional) */
-    int n_ns;
-    xmlChar * name; /* the local name of the attribute */
-    int n_name;
-    const xmlChar * value; /* the value of the attribute (optional) */
-    int n_value;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_eaten_name;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_eaten_name(n_name, 2);
-        value = gen_const_xmlChar_ptr(n_value, 3);
-
-        ret_val = xmlNewNsPropEatName(node, ns, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_eaten_name(n_name, name, 2);
-        des_const_xmlChar_ptr(n_value, value, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewNsPropEatName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewPI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlChar * name; /* the processing instruction target */
-    int n_name;
-    const xmlChar * content; /* the PI content (optional) */
-    int n_content;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlNewPI(name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewPI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr node; /* the parent node (optional) */
-    int n_node;
-    const xmlChar * name; /* the name of the attribute */
-    int n_name;
-    const xmlChar * value; /* the value of the attribute (optional) */
-    int n_value;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        value = gen_const_xmlChar_ptr(n_value, 2);
-
-        ret_val = xmlNewProp(node, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_value, value, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewReference(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlDoc * doc; /* the target document (optional) */
-    int n_doc;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlNewReference(doc, name);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewReference",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewText(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        content = gen_const_xmlChar_ptr(n_content, 0);
-
-        ret_val = xmlNewText(content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_content, content, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewText",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextChild(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr parent; /* the parent node */
-    int n_parent;
-    xmlNsPtr ns; /* a namespace (optional) */
-    int n_ns;
-    const xmlChar * name; /* the name of the child */
-    int n_name;
-    const xmlChar * content; /* raw text content of the child (optional) */
-    int n_content;
-
-    for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        parent = gen_xmlNodePtr(n_parent, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlNewTextChild(parent, ns, name, content);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_parent, parent, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_parent);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextLen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlChar * content; /* raw text content (optional) */
-    int n_content;
-    int len; /* size of text content */
-    int n_len;
-
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        content = gen_const_xmlChar_ptr(n_content, 0);
-        len = gen_int(n_len, 1);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlNewTextLen(content, len);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_content, content, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextLen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNextElementSibling(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the current node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-
-        ret_val = xmlNextElementSibling(node);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNextElementSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeAddContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being modified */
-    int n_cur;
-    const xmlChar * content; /* extra content */
-    int n_content;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlNodeAddContent(cur, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeAddContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeAddContentLen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being modified */
-    int n_cur;
-    const xmlChar * content; /* extra content */
-    int n_content;
-    int len; /* the size of @content */
-    int n_len;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlNodeAddContentLen(cur, content, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeAddContentLen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeBufGetContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buffer; /* a buffer */
-    int n_buffer;
-    const xmlNode * cur; /* the node being read */
-    int n_cur;
-
-    for (n_buffer = 0;n_buffer < gen_nb_xmlBufferPtr;n_buffer++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_xmlBufferPtr(n_buffer, 0);
-        cur = gen_const_xmlNode_ptr(n_cur, 1);
-
-        ret_val = xmlNodeBufGetContent(buffer, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buffer, buffer, 0);
-        des_const_xmlNode_ptr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeBufGetContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-    int level; /* the imbrication level for indenting */
-    int n_level;
-    int format; /* is formatting allowed */
-    int n_format;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_level = 0;n_level < gen_nb_int;n_level++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-        level = gen_int(n_level, 3);
-        format = gen_int(n_format, 4);
-
-        ret_val = xmlNodeDump(buf, doc, cur, level, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        des_int(n_level, level, 3);
-        des_int(n_format, format, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_level);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeDumpOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr cur; /* the current node */
-    int n_cur;
-    int level; /* the imbrication level for indenting */
-    int n_level;
-    int format; /* is formatting allowed */
-    int n_format;
-    const char * encoding; /* an optional encoding string */
-    int n_encoding;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_level = 0;n_level < gen_nb_int;n_level++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        cur = gen_xmlNodePtr(n_cur, 2);
-        level = gen_int(n_level, 3);
-        format = gen_int(n_format, 4);
-        encoding = gen_const_char_ptr(n_encoding, 5);
-
-        xmlNodeDumpOutput(buf, doc, cur, level, format, encoding);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_cur, cur, 2);
-        des_int(n_level, level, 3);
-        des_int(n_format, format, 4);
-        des_const_char_ptr(n_encoding, encoding, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeDumpOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_level);
-            printf(" %d", n_format);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetAttrValue(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * nsUri; /* the URI of the namespace */
-    int n_nsUri;
-    xmlChar ** out; /* the returned string */
-    int n_out;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_nsUri = 0;n_nsUri < gen_nb_const_xmlChar_ptr;n_nsUri++) {
-    for (n_out = 0;n_out < gen_nb_xmlChar_ptr_ptr;n_out++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        nsUri = gen_const_xmlChar_ptr(n_nsUri, 2);
-        out = gen_xmlChar_ptr_ptr(n_out, 3);
-
-        ret_val = xmlNodeGetAttrValue(node, name, nsUri, out);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_nsUri, nsUri, 2);
-        des_xmlChar_ptr_ptr(n_out, out, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetAttrValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf(" %d", n_nsUri);
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetBase(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlDoc * doc; /* the document the node pertains to */
-    int n_doc;
-    const xmlNode * cur; /* the node being checked */
-    int n_cur;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        cur = gen_const_xmlNode_ptr(n_cur, 1);
-
-        ret_val = xmlNodeGetBase(doc, cur);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlNode_ptr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetBase",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetBaseSafe(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlDoc * doc; /* the document the node pertains to */
-    int n_doc;
-    const xmlNode * cur; /* the node being checked */
-    int n_cur;
-    xmlChar ** baseOut; /* pointer to base */
-    int n_baseOut;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-    for (n_baseOut = 0;n_baseOut < gen_nb_xmlChar_ptr_ptr;n_baseOut++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        cur = gen_const_xmlNode_ptr(n_cur, 1);
-        baseOut = gen_xmlChar_ptr_ptr(n_baseOut, 2);
-
-        ret_val = xmlNodeGetBaseSafe(doc, cur, baseOut);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlNode_ptr(n_cur, cur, 1);
-        des_xmlChar_ptr_ptr(n_baseOut, baseOut, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetBaseSafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf(" %d", n_baseOut);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * cur; /* the node being read */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlNode_ptr(n_cur, 0);
-
-        ret_val = xmlNodeGetContent(cur);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetLang(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlNode * cur; /* the node being checked */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlNode_ptr(n_cur, 0);
-
-        ret_val = xmlNodeGetLang(cur);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetLang",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeGetSpacePreserve(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlNode * cur; /* the node being checked */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlNode_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlNode_ptr(n_cur, 0);
-
-        ret_val = xmlNodeGetSpacePreserve(cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeGetSpacePreserve",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeIsText(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlNode * node; /* the node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_const_xmlNode_ptr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_const_xmlNode_ptr(n_node, 0);
-
-        ret_val = xmlNodeIsText(node);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlNode_ptr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeIsText",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeListGetRawString(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlDoc * doc; /* a document (optional) */
-    int n_doc;
-    const xmlNode * list; /* a node list of attribute children */
-    int n_list;
-    int inLine; /* whether entity references are substituted */
-    int n_inLine;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_list = 0;n_list < gen_nb_const_xmlNode_ptr;n_list++) {
-    for (n_inLine = 0;n_inLine < gen_nb_int;n_inLine++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        list = gen_const_xmlNode_ptr(n_list, 1);
-        inLine = gen_int(n_inLine, 2);
-
-        ret_val = xmlNodeListGetRawString(doc, list, inLine);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlNode_ptr(n_list, list, 1);
-        des_int(n_inLine, inLine, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeListGetRawString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_list);
-            printf(" %d", n_inLine);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeListGetString(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlDocPtr doc; /* a document (optional) */
-    int n_doc;
-    const xmlNode * list; /* a node list of attribute children */
-    int n_list;
-    int inLine; /* whether entity references are substituted */
-    int n_inLine;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_list = 0;n_list < gen_nb_const_xmlNode_ptr;n_list++) {
-    for (n_inLine = 0;n_inLine < gen_nb_int;n_inLine++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        list = gen_const_xmlNode_ptr(n_list, 1);
-        inLine = gen_int(n_inLine, 2);
-
-        ret_val = xmlNodeListGetString(doc, list, inLine);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlNode_ptr(n_list, list, 1);
-        des_int(n_inLine, inLine, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeListGetString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_list);
-            printf(" %d", n_inLine);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetBase(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being changed */
-    int n_cur;
-    const xmlChar * uri; /* the new base URI */
-    int n_uri;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_uri = 0;n_uri < gen_nb_const_xmlChar_ptr;n_uri++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        uri = gen_const_xmlChar_ptr(n_uri, 1);
-
-        ret_val = xmlNodeSetBase(cur, uri);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_uri, uri, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetBase",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_uri);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being modified */
-    int n_cur;
-    const xmlChar * content; /* the new value of the content */
-    int n_content;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlNodeSetContent(cur, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetContentLen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being modified */
-    int n_cur;
-    const xmlChar * content; /* the new value of the content */
-    int n_content;
-    int len; /* the size of @content */
-    int n_len;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlNodeSetContentLen(cur, content, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetContentLen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetLang(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being changed */
-    int n_cur;
-    const xmlChar * lang; /* the language description */
-    int n_lang;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_lang = 0;n_lang < gen_nb_const_xmlChar_ptr;n_lang++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        lang = gen_const_xmlChar_ptr(n_lang, 1);
-
-        ret_val = xmlNodeSetLang(cur, lang);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_lang, lang, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetLang",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_lang);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr cur; /* the node being changed */
-    int n_cur;
-    const xmlChar * name; /* the new tag name */
-    int n_name;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        xmlNodeSetName(cur, name);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNodeSetSpacePreserve(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr cur; /* the node being changed */
-    int n_cur;
-    int val; /* the xml:space value ("0": default, 1: "preserve") */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodePtr(n_cur, 0);
-        val = gen_int(n_val, 1);
-
-        ret_val = xmlNodeSetSpacePreserve(cur, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_cur, cur, 0);
-        des_int(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNodeSetSpacePreserve",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPreviousElementSibling(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr node; /* the current node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-
-        ret_val = xmlPreviousElementSibling(node);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPreviousElementSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReconciliateNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr tree; /* a node defining the subtree to reconciliate */
-    int n_tree;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_tree = 0;n_tree < gen_nb_xmlNodePtr;n_tree++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        tree = gen_xmlNodePtr(n_tree, 1);
-
-        ret_val = xmlReconciliateNs(doc, tree);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_tree, tree, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReconciliateNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_tree);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegisterNodeDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRemoveProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlAttrPtr cur; /* an attribute */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlAttrPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlAttrPtr(n_cur, 0);
-
-        ret_val = xmlRemoveProp(cur);
-        cur = NULL;
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAttrPtr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRemoveProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReplaceNode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr old; /* the old node */
-    int n_old;
-    xmlNodePtr cur; /* the node (optional) */
-    int n_cur;
-
-    for (n_old = 0;n_old < gen_nb_xmlNodePtr;n_old++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr_in;n_cur++) {
-        mem_base = xmlMemBlocks();
-        old = gen_xmlNodePtr(n_old, 0);
-        cur = gen_xmlNodePtr_in(n_cur, 1);
-
-        ret_val = xmlReplaceNode(old, cur);
-        if (cur != NULL) {
-              xmlUnlinkNode(cur);
-              xmlFreeNode(cur) ; cur = NULL ; }
-          if (old != NULL) {
-              xmlUnlinkNode(old);
-              xmlFreeNode(old) ; old = NULL ; }
-	  ret_val = NULL;
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_old, old, 0);
-        des_xmlNodePtr_in(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReplaceNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_old);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename (or URL) */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-
-        ret_val = xmlSaveFile(filename, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFileEnc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename (or URL) */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the name of an encoding (or NULL) */
-    int n_encoding;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-
-        ret_val = xmlSaveFileEnc(filename, cur, encoding);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFileEnc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFileTo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlOutputBufferPtr buf; /* an output I/O buffer */
-    int n_buf;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the encoding if any assuming the I/O layer handles the transcoding */
-    int n_encoding;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-
-        ret_val = xmlSaveFileTo(buf, cur, encoding);
-        buf = NULL;
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFileTo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFormatFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename (or URL) */
-    int n_filename;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        format = gen_int(n_format, 2);
-
-        ret_val = xmlSaveFormatFile(filename, cur, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_int(n_format, format, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFormatFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFormatFileEnc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the filename or URL to output */
-    int n_filename;
-    xmlDocPtr cur; /* the document being saved */
-    int n_cur;
-    const char * encoding; /* the name of the encoding to use or NULL. */
-    int n_encoding;
-    int format; /* should formatting spaces be added. */
-    int n_format;
-
-    for (n_filename = 0;n_filename < gen_nb_fileoutput;n_filename++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_fileoutput(n_filename, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        format = gen_int(n_format, 3);
-
-        ret_val = xmlSaveFormatFileEnc(filename, cur, encoding, format);
-        desret_int(ret_val);
-        call_tests++;
-        des_fileoutput(n_filename, filename, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFormatFileEnc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFormatFileTo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlOutputBufferPtr buf; /* an output I/O buffer */
-    int n_buf;
-    xmlDocPtr cur; /* the document */
-    int n_cur;
-    const char * encoding; /* the encoding if any assuming the I/O layer handles the transcoding */
-    int n_encoding;
-    int format; /* should formatting spaces been added */
-    int n_format;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlOutputBufferPtr;n_buf++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlDocPtr;n_cur++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_format = 0;n_format < gen_nb_int;n_format++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlOutputBufferPtr(n_buf, 0);
-        cur = gen_xmlDocPtr(n_cur, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        format = gen_int(n_format, 3);
-
-        ret_val = xmlSaveFormatFileTo(buf, cur, encoding, format);
-        buf = NULL;
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_buf, buf, 0);
-        des_xmlDocPtr(n_cur, cur, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_int(n_format, format, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFormatFileTo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_cur);
-            printf(" %d", n_encoding);
-            printf(" %d", n_format);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSearchNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNsPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr node; /* the current node */
-    int n_node;
-    const xmlChar * nameSpace; /* the namespace prefix */
-    int n_nameSpace;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_nameSpace = 0;n_nameSpace < gen_nb_const_xmlChar_ptr;n_nameSpace++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        nameSpace = gen_const_xmlChar_ptr(n_nameSpace, 2);
-
-        ret_val = xmlSearchNs(doc, node, nameSpace);
-        desret_xmlNsPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_const_xmlChar_ptr(n_nameSpace, nameSpace, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSearchNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_node);
-            printf(" %d", n_nameSpace);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSearchNsByHref(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNsPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr node; /* the current node */
-    int n_node;
-    const xmlChar * href; /* the namespace value */
-    int n_href;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_href = 0;n_href < gen_nb_const_xmlChar_ptr;n_href++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        href = gen_const_xmlChar_ptr(n_href, 2);
-
-        ret_val = xmlSearchNsByHref(doc, node, href);
-        desret_xmlNsPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_const_xmlChar_ptr(n_href, href, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSearchNsByHref",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_node);
-            printf(" %d", n_href);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetBufferAllocationScheme(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlBufferAllocationScheme scheme; /* allocation method to use */
-    int n_scheme;
-
-    for (n_scheme = 0;n_scheme < gen_nb_xmlBufferAllocationScheme;n_scheme++) {
-        mem_base = xmlMemBlocks();
-        scheme = gen_xmlBufferAllocationScheme(n_scheme, 0);
-
-        xmlSetBufferAllocationScheme(scheme);
-        call_tests++;
-        des_xmlBufferAllocationScheme(n_scheme, scheme, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetBufferAllocationScheme",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_scheme);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetCompressMode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int mode; /* the compression ratio */
-    int n_mode;
-
-    for (n_mode = 0;n_mode < gen_nb_int;n_mode++) {
-        mem_base = xmlMemBlocks();
-        mode = gen_int(n_mode, 0);
-
-        xmlSetCompressMode(mode);
-        call_tests++;
-        des_int(n_mode, mode, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetCompressMode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_mode);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetDocCompressMode(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    int mode; /* the compression ratio */
-    int n_mode;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_mode = 0;n_mode < gen_nb_int;n_mode++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        mode = gen_int(n_mode, 1);
-
-        xmlSetDocCompressMode(doc, mode);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_int(n_mode, mode, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetDocCompressMode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_mode);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetNs(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr node; /* a node in the document */
-    int n_node;
-    xmlNsPtr ns; /* a namespace pointer (optional) */
-    int n_ns;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-
-        xmlSetNs(node, ns);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    xmlNsPtr ns; /* the namespace definition */
-    int n_ns;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * value; /* the attribute value */
-    int n_value;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        value = gen_const_xmlChar_ptr(n_value, 3);
-
-        ret_val = xmlSetNsProp(node, ns, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_value, value, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name (a QName) */
-    int n_name;
-    const xmlChar * value; /* the attribute value */
-    int n_value;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        value = gen_const_xmlChar_ptr(n_value, 2);
-
-        ret_val = xmlSetProp(node, name, value);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_value, value, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSetProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSplitQName2(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * name; /* the full QName */
-    int n_name;
-    xmlChar ** prefix; /* a xmlChar ** */
-    int n_prefix;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefix = 0;n_prefix < gen_nb_xmlChar_ptr_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-        prefix = gen_xmlChar_ptr_ptr(n_prefix, 1);
-
-        ret_val = xmlSplitQName2(name, prefix);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        des_xmlChar_ptr_ptr(n_prefix, prefix, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSplitQName2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSplitQName3(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlChar * name; /* the full QName */
-    int n_name;
-    int * len; /* an int * */
-    int n_len;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_len = 0;n_len < gen_nb_int_ptr;n_len++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-        len = gen_int_ptr(n_len, 1);
-
-        ret_val = xmlSplitQName3(name, len);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        des_int_ptr(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSplitQName3",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStringGetNodeList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlDoc * doc; /* a document (optional) */
-    int n_doc;
-    const xmlChar * value; /* an attribute value */
-    int n_value;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-
-        ret_val = xmlStringGetNodeList(doc, value);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStringGetNodeList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStringLenGetNodeList(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    const xmlDoc * doc; /* a document (optional) */
-    int n_doc;
-    const xmlChar * value; /* an attribute value */
-    int n_value;
-    int len; /* maximum length of the attribute value */
-    int n_len;
-
-    for (n_doc = 0;n_doc < gen_nb_const_xmlDoc_ptr;n_doc++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_const_xmlDoc_ptr(n_doc, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        len = gen_int(n_len, 2);
-        if ((value != NULL) &&
-            (len > xmlStrlen(BAD_CAST value)))
-            len = 0;
-
-        ret_val = xmlStringLenGetNodeList(doc, value, len);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_const_xmlDoc_ptr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStringLenGetNodeList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_value);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextConcat(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    const xmlChar * content; /* the content */
-    int n_content;
-    int len; /* @content length */
-    int n_len;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlTextConcat(node, content, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextConcat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextMerge(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlNodePtr first; /* the first text node */
-    int n_first;
-    xmlNodePtr second; /* the second text node being merged */
-    int n_second;
-
-    for (n_first = 0;n_first < gen_nb_xmlNodePtr_in;n_first++) {
-    for (n_second = 0;n_second < gen_nb_xmlNodePtr_in;n_second++) {
-        mem_base = xmlMemBlocks();
-        first = gen_xmlNodePtr_in(n_first, 0);
-        second = gen_xmlNodePtr_in(n_second, 1);
-
-        ret_val = xmlTextMerge(first, second);
-        if (ret_val == NULL) {
-              xmlUnlinkNode(second);
-              xmlFreeNode(second) ; second = NULL ;
-              ret_val = first; }
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr_in(n_first, first, 0);
-        des_xmlNodePtr_in(n_second, second, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextMerge",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_first);
-            printf(" %d", n_second);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefDeregisterNodeDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefRegisterNodeDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlUnsetNsProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    xmlNsPtr ns; /* the namespace definition */
-    int n_ns;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ns = gen_xmlNsPtr(n_ns, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-
-        ret_val = xmlUnsetNsProp(node, ns, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlNsPtr(n_ns, ns, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUnsetNsProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUnsetProp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlNodePtr node; /* the node */
-    int n_node;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlUnsetProp(node, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUnsetProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNCName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    int space; /* allow spaces in front and end of the string */
-    int n_space;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_space = 0;n_space < gen_nb_int;n_space++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-        space = gen_int(n_space, 1);
-
-        ret_val = xmlValidateNCName(value, space);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        des_int(n_space, space, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNCName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf(" %d", n_space);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNMToken(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    int space; /* allow spaces in front and end of the string */
-    int n_space;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_space = 0;n_space < gen_nb_int;n_space++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-        space = gen_int(n_space, 1);
-
-        ret_val = xmlValidateNMToken(value, space);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        des_int(n_space, space, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNMToken",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf(" %d", n_space);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    int space; /* allow spaces in front and end of the string */
-    int n_space;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_space = 0;n_space < gen_nb_int;n_space++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-        space = gen_int(n_space, 1);
-
-        ret_val = xmlValidateName(value, space);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        des_int(n_space, space, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf(" %d", n_space);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateQName(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    int space; /* allow spaces in front and end of the string */
-    int n_space;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_space = 0;n_space < gen_nb_int;n_space++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-        space = gen_int(n_space, 1);
-
-        ret_val = xmlValidateQName(value, space);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        des_int(n_space, space, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateQName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf(" %d", n_space);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_tree(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing tree : 144 of 170 functions ...\n");
-    test_ret += test_xmlAddChild();
-    test_ret += test_xmlAddChildList();
-    test_ret += test_xmlAddNextSibling();
-    test_ret += test_xmlAddPrevSibling();
-    test_ret += test_xmlAddSibling();
-    test_ret += test_xmlAttrSerializeTxtContent();
-    test_ret += test_xmlBufContent();
-    test_ret += test_xmlBufEnd();
-    test_ret += test_xmlBufGetNodeContent();
-    test_ret += test_xmlBufNodeDump();
-    test_ret += test_xmlBufShrink();
-    test_ret += test_xmlBufUse();
-    test_ret += test_xmlBufferAdd();
-    test_ret += test_xmlBufferAddHead();
-    test_ret += test_xmlBufferCCat();
-    test_ret += test_xmlBufferCat();
-    test_ret += test_xmlBufferContent();
-    test_ret += test_xmlBufferCreate();
-    test_ret += test_xmlBufferCreateSize();
-    test_ret += test_xmlBufferCreateStatic();
-    test_ret += test_xmlBufferDetach();
-    test_ret += test_xmlBufferEmpty();
-    test_ret += test_xmlBufferGrow();
-    test_ret += test_xmlBufferLength();
-    test_ret += test_xmlBufferResize();
-    test_ret += test_xmlBufferSetAllocationScheme();
-    test_ret += test_xmlBufferShrink();
-    test_ret += test_xmlBufferWriteCHAR();
-    test_ret += test_xmlBufferWriteChar();
-    test_ret += test_xmlBufferWriteQuotedString();
-    test_ret += test_xmlBuildQName();
-    test_ret += test_xmlChildElementCount();
-    test_ret += test_xmlCopyDoc();
-    test_ret += test_xmlCopyDtd();
-    test_ret += test_xmlCopyNamespace();
-    test_ret += test_xmlCopyNamespaceList();
-    test_ret += test_xmlCopyNode();
-    test_ret += test_xmlCopyNodeList();
-    test_ret += test_xmlCopyProp();
-    test_ret += test_xmlCopyPropList();
-    test_ret += test_xmlCreateIntSubset();
-    test_ret += test_xmlDOMWrapAdoptNode();
-    test_ret += test_xmlDOMWrapCloneNode();
-    test_ret += test_xmlDOMWrapNewCtxt();
-    test_ret += test_xmlDOMWrapReconcileNamespaces();
-    test_ret += test_xmlDOMWrapRemoveNode();
-    test_ret += test_xmlDeregisterNodeDefault();
-    test_ret += test_xmlDocCopyNode();
-    test_ret += test_xmlDocCopyNodeList();
-    test_ret += test_xmlDocDump();
-    test_ret += test_xmlDocDumpFormatMemory();
-    test_ret += test_xmlDocDumpFormatMemoryEnc();
-    test_ret += test_xmlDocDumpMemory();
-    test_ret += test_xmlDocDumpMemoryEnc();
-    test_ret += test_xmlDocFormatDump();
-    test_ret += test_xmlDocGetRootElement();
-    test_ret += test_xmlDocSetRootElement();
-    test_ret += test_xmlElemDump();
-    test_ret += test_xmlFirstElementChild();
-    test_ret += test_xmlGetBufferAllocationScheme();
-    test_ret += test_xmlGetCompressMode();
-    test_ret += test_xmlGetDocCompressMode();
-    test_ret += test_xmlGetIntSubset();
-    test_ret += test_xmlGetLastChild();
-    test_ret += test_xmlGetLineNo();
-    test_ret += test_xmlGetNoNsProp();
-    test_ret += test_xmlGetNodePath();
-    test_ret += test_xmlGetNsList();
-    test_ret += test_xmlGetNsListSafe();
-    test_ret += test_xmlGetNsProp();
-    test_ret += test_xmlGetProp();
-    test_ret += test_xmlHasNsProp();
-    test_ret += test_xmlHasProp();
-    test_ret += test_xmlIsBlankNode();
-    test_ret += test_xmlIsXHTML();
-    test_ret += test_xmlLastElementChild();
-    test_ret += test_xmlNewCDataBlock();
-    test_ret += test_xmlNewCharRef();
-    test_ret += test_xmlNewChild();
-    test_ret += test_xmlNewComment();
-    test_ret += test_xmlNewDoc();
-    test_ret += test_xmlNewDocComment();
-    test_ret += test_xmlNewDocFragment();
-    test_ret += test_xmlNewDocNode();
-    test_ret += test_xmlNewDocNodeEatName();
-    test_ret += test_xmlNewDocPI();
-    test_ret += test_xmlNewDocProp();
-    test_ret += test_xmlNewDocRawNode();
-    test_ret += test_xmlNewDocText();
-    test_ret += test_xmlNewDocTextLen();
-    test_ret += test_xmlNewDtd();
-    test_ret += test_xmlNewNode();
-    test_ret += test_xmlNewNodeEatName();
-    test_ret += test_xmlNewNs();
-    test_ret += test_xmlNewNsProp();
-    test_ret += test_xmlNewNsPropEatName();
-    test_ret += test_xmlNewPI();
-    test_ret += test_xmlNewProp();
-    test_ret += test_xmlNewReference();
-    test_ret += test_xmlNewText();
-    test_ret += test_xmlNewTextChild();
-    test_ret += test_xmlNewTextLen();
-    test_ret += test_xmlNextElementSibling();
-    test_ret += test_xmlNodeAddContent();
-    test_ret += test_xmlNodeAddContentLen();
-    test_ret += test_xmlNodeBufGetContent();
-    test_ret += test_xmlNodeDump();
-    test_ret += test_xmlNodeDumpOutput();
-    test_ret += test_xmlNodeGetAttrValue();
-    test_ret += test_xmlNodeGetBase();
-    test_ret += test_xmlNodeGetBaseSafe();
-    test_ret += test_xmlNodeGetContent();
-    test_ret += test_xmlNodeGetLang();
-    test_ret += test_xmlNodeGetSpacePreserve();
-    test_ret += test_xmlNodeIsText();
-    test_ret += test_xmlNodeListGetRawString();
-    test_ret += test_xmlNodeListGetString();
-    test_ret += test_xmlNodeSetBase();
-    test_ret += test_xmlNodeSetContent();
-    test_ret += test_xmlNodeSetContentLen();
-    test_ret += test_xmlNodeSetLang();
-    test_ret += test_xmlNodeSetName();
-    test_ret += test_xmlNodeSetSpacePreserve();
-    test_ret += test_xmlPreviousElementSibling();
-    test_ret += test_xmlReconciliateNs();
-    test_ret += test_xmlRegisterNodeDefault();
-    test_ret += test_xmlRemoveProp();
-    test_ret += test_xmlReplaceNode();
-    test_ret += test_xmlSaveFile();
-    test_ret += test_xmlSaveFileEnc();
-    test_ret += test_xmlSaveFileTo();
-    test_ret += test_xmlSaveFormatFile();
-    test_ret += test_xmlSaveFormatFileEnc();
-    test_ret += test_xmlSaveFormatFileTo();
-    test_ret += test_xmlSearchNs();
-    test_ret += test_xmlSearchNsByHref();
-    test_ret += test_xmlSetBufferAllocationScheme();
-    test_ret += test_xmlSetCompressMode();
-    test_ret += test_xmlSetDocCompressMode();
-    test_ret += test_xmlSetNs();
-    test_ret += test_xmlSetNsProp();
-    test_ret += test_xmlSetProp();
-    test_ret += test_xmlSplitQName2();
-    test_ret += test_xmlSplitQName3();
-    test_ret += test_xmlStringGetNodeList();
-    test_ret += test_xmlStringLenGetNodeList();
-    test_ret += test_xmlTextConcat();
-    test_ret += test_xmlTextMerge();
-    test_ret += test_xmlThrDefDeregisterNodeDefault();
-    test_ret += test_xmlThrDefRegisterNodeDefault();
-    test_ret += test_xmlUnsetNsProp();
-    test_ret += test_xmlUnsetProp();
-    test_ret += test_xmlValidateNCName();
-    test_ret += test_xmlValidateNMToken();
-    test_ret += test_xmlValidateName();
-    test_ret += test_xmlValidateQName();
-
-    if (test_ret != 0)
-	printf("Module tree: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlBuildRelativeURI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * URI; /* the URI reference under consideration */
-    int n_URI;
-    const xmlChar * base; /* the base value */
-    int n_base;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_base = 0;n_base < gen_nb_const_xmlChar_ptr;n_base++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        base = gen_const_xmlChar_ptr(n_base, 1);
-
-        ret_val = xmlBuildRelativeURI(URI, base);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_base, base, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBuildRelativeURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_base);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBuildRelativeURISafe(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * URI; /* the URI reference under consideration */
-    int n_URI;
-    const xmlChar * base; /* the base value */
-    int n_base;
-    xmlChar ** valPtr; /* pointer to result URI */
-    int n_valPtr;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_base = 0;n_base < gen_nb_const_xmlChar_ptr;n_base++) {
-    for (n_valPtr = 0;n_valPtr < gen_nb_xmlChar_ptr_ptr;n_valPtr++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        base = gen_const_xmlChar_ptr(n_base, 1);
-        valPtr = gen_xmlChar_ptr_ptr(n_valPtr, 2);
-
-        ret_val = xmlBuildRelativeURISafe(URI, base, valPtr);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_base, base, 1);
-        des_xmlChar_ptr_ptr(n_valPtr, valPtr, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBuildRelativeURISafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_base);
-            printf(" %d", n_valPtr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBuildURI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * URI; /* the URI instance found in the document */
-    int n_URI;
-    const xmlChar * base; /* the base value */
-    int n_base;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_base = 0;n_base < gen_nb_const_xmlChar_ptr;n_base++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        base = gen_const_xmlChar_ptr(n_base, 1);
-
-        ret_val = xmlBuildURI(URI, base);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_base, base, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBuildURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_base);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlBuildURISafe(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * URI; /* the URI instance found in the document */
-    int n_URI;
-    const xmlChar * base; /* the base value */
-    int n_base;
-    xmlChar ** valPtr; /* pointer to result URI */
-    int n_valPtr;
-
-    for (n_URI = 0;n_URI < gen_nb_const_xmlChar_ptr;n_URI++) {
-    for (n_base = 0;n_base < gen_nb_const_xmlChar_ptr;n_base++) {
-    for (n_valPtr = 0;n_valPtr < gen_nb_xmlChar_ptr_ptr;n_valPtr++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_const_xmlChar_ptr(n_URI, 0);
-        base = gen_const_xmlChar_ptr(n_base, 1);
-        valPtr = gen_xmlChar_ptr_ptr(n_valPtr, 2);
-
-        ret_val = xmlBuildURISafe(URI, base, valPtr);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_URI, URI, 0);
-        des_const_xmlChar_ptr(n_base, base, 1);
-        des_xmlChar_ptr_ptr(n_valPtr, valPtr, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlBuildURISafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_base);
-            printf(" %d", n_valPtr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCanonicPath(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * path; /* the resource locator in a filesystem notation */
-    int n_path;
-
-    for (n_path = 0;n_path < gen_nb_const_xmlChar_ptr;n_path++) {
-        mem_base = xmlMemBlocks();
-        path = gen_const_xmlChar_ptr(n_path, 0);
-
-        ret_val = xmlCanonicPath(path);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_path, path, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCanonicPath",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_path);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateURI(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-#define gen_nb_char_ptr 1
-#define gen_char_ptr(no, nr) NULL
-#define des_char_ptr(no, val, nr)
-
-static int
-test_xmlNormalizeURIPath(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    char * path; /* pointer to the path string */
-    int n_path;
-
-    for (n_path = 0;n_path < gen_nb_char_ptr;n_path++) {
-        mem_base = xmlMemBlocks();
-        path = gen_char_ptr(n_path, 0);
-
-        ret_val = xmlNormalizeURIPath(path);
-        desret_int(ret_val);
-        call_tests++;
-        des_char_ptr(n_path, path, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNormalizeURIPath",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_path);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseURI(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParseURIRaw(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlURIPtr 1
-#define gen_xmlURIPtr(no, nr) NULL
-#define des_xmlURIPtr(no, val, nr)
-
-static int
-test_xmlParseURIReference(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlURIPtr uri; /* pointer to an URI structure */
-    int n_uri;
-    const char * str; /* the string to analyze */
-    int n_str;
-
-    for (n_uri = 0;n_uri < gen_nb_xmlURIPtr;n_uri++) {
-    for (n_str = 0;n_str < gen_nb_const_char_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        uri = gen_xmlURIPtr(n_uri, 0);
-        str = gen_const_char_ptr(n_str, 1);
-
-        ret_val = xmlParseURIReference(uri, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlURIPtr(n_uri, uri, 0);
-        des_const_char_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseURIReference",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_uri);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlURIPtr_ptr 1
-#define gen_xmlURIPtr_ptr(no, nr) NULL
-#define des_xmlURIPtr_ptr(no, val, nr)
-
-static int
-test_xmlParseURISafe(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const char * str; /* the URI string to analyze */
-    int n_str;
-    xmlURIPtr * uriOut; /* optional pointer to parsed URI */
-    int n_uriOut;
-
-    for (n_str = 0;n_str < gen_nb_filepath;n_str++) {
-    for (n_uriOut = 0;n_uriOut < gen_nb_xmlURIPtr_ptr;n_uriOut++) {
-        mem_base = xmlMemBlocks();
-        str = gen_filepath(n_str, 0);
-        uriOut = gen_xmlURIPtr_ptr(n_uriOut, 1);
-
-        ret_val = xmlParseURISafe(str, uriOut);
-        desret_int(ret_val);
-        call_tests++;
-        des_filepath(n_str, str, 0);
-        des_xmlURIPtr_ptr(n_uriOut, uriOut, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParseURISafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_uriOut);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPathToURI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * path; /* the resource locator in a filesystem notation */
-    int n_path;
-
-    for (n_path = 0;n_path < gen_nb_const_xmlChar_ptr;n_path++) {
-        mem_base = xmlMemBlocks();
-        path = gen_const_xmlChar_ptr(n_path, 0);
-
-        ret_val = xmlPathToURI(path);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_path, path, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPathToURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_path);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPrintURI(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    FILE * stream; /* a FILE* for the output */
-    int n_stream;
-    xmlURIPtr uri; /* pointer to an xmlURI */
-    int n_uri;
-
-    for (n_stream = 0;n_stream < gen_nb_FILE_ptr;n_stream++) {
-    for (n_uri = 0;n_uri < gen_nb_xmlURIPtr;n_uri++) {
-        mem_base = xmlMemBlocks();
-        stream = gen_FILE_ptr(n_stream, 0);
-        uri = gen_xmlURIPtr(n_uri, 1);
-
-        xmlPrintURI(stream, uri);
-        call_tests++;
-        des_FILE_ptr(n_stream, stream, 0);
-        des_xmlURIPtr(n_uri, uri, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPrintURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_stream);
-            printf(" %d", n_uri);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveUri(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    xmlURIPtr uri; /* pointer to an xmlURI */
-    int n_uri;
-
-    for (n_uri = 0;n_uri < gen_nb_xmlURIPtr;n_uri++) {
-        mem_base = xmlMemBlocks();
-        uri = gen_xmlURIPtr(n_uri, 0);
-
-        ret_val = xmlSaveUri(uri);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlURIPtr(n_uri, uri, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveUri",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_uri);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlURIEscape(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * str; /* the string of the URI to escape */
-    int n_str;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-
-        ret_val = xmlURIEscape(str);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlURIEscape",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlURIEscapeStr(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * str; /* string to escape */
-    int n_str;
-    const xmlChar * list; /* exception list string of chars not to escape */
-    int n_list;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_list = 0;n_list < gen_nb_const_xmlChar_ptr;n_list++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        list = gen_const_xmlChar_ptr(n_list, 1);
-
-        ret_val = xmlURIEscapeStr(str, list);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_const_xmlChar_ptr(n_list, list, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlURIEscapeStr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_list);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlURIUnescapeString(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_uri(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing uri : 13 of 18 functions ...\n");
-    test_ret += test_xmlBuildRelativeURI();
-    test_ret += test_xmlBuildRelativeURISafe();
-    test_ret += test_xmlBuildURI();
-    test_ret += test_xmlBuildURISafe();
-    test_ret += test_xmlCanonicPath();
-    test_ret += test_xmlCreateURI();
-    test_ret += test_xmlNormalizeURIPath();
-    test_ret += test_xmlParseURI();
-    test_ret += test_xmlParseURIRaw();
-    test_ret += test_xmlParseURIReference();
-    test_ret += test_xmlParseURISafe();
-    test_ret += test_xmlPathToURI();
-    test_ret += test_xmlPrintURI();
-    test_ret += test_xmlSaveUri();
-    test_ret += test_xmlURIEscape();
-    test_ret += test_xmlURIEscapeStr();
-    test_ret += test_xmlURIUnescapeString();
-
-    if (test_ret != 0)
-	printf("Module uri: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAddAttributeDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttributePtr ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDtdPtr dtd; /* pointer to the DTD */
-    int n_dtd;
-    const xmlChar * elem; /* the element name */
-    int n_elem;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * ns; /* the attribute namespace prefix */
-    int n_ns;
-    xmlAttributeType type; /* the attribute type */
-    int n_type;
-    xmlAttributeDefault def; /* the attribute default type */
-    int n_def;
-    const xmlChar * defaultValue; /* the attribute default value */
-    int n_defaultValue;
-    xmlEnumerationPtr tree; /* if it's an enumeration, the associated list */
-    int n_tree;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_elem = 0;n_elem < gen_nb_const_xmlChar_ptr;n_elem++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
-    for (n_type = 0;n_type < gen_nb_xmlAttributeType;n_type++) {
-    for (n_def = 0;n_def < gen_nb_xmlAttributeDefault;n_def++) {
-    for (n_defaultValue = 0;n_defaultValue < gen_nb_const_xmlChar_ptr;n_defaultValue++) {
-    for (n_tree = 0;n_tree < gen_nb_xmlEnumerationPtr;n_tree++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        dtd = gen_xmlDtdPtr(n_dtd, 1);
-        elem = gen_const_xmlChar_ptr(n_elem, 2);
-        name = gen_const_xmlChar_ptr(n_name, 3);
-        ns = gen_const_xmlChar_ptr(n_ns, 4);
-        type = gen_xmlAttributeType(n_type, 5);
-        def = gen_xmlAttributeDefault(n_def, 6);
-        defaultValue = gen_const_xmlChar_ptr(n_defaultValue, 7);
-        tree = gen_xmlEnumerationPtr(n_tree, 8);
-
-        ret_val = xmlAddAttributeDecl(ctxt, dtd, elem, name, ns, type, def, defaultValue, tree);
-        desret_xmlAttributePtr(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDtdPtr(n_dtd, dtd, 1);
-        des_const_xmlChar_ptr(n_elem, elem, 2);
-        des_const_xmlChar_ptr(n_name, name, 3);
-        des_const_xmlChar_ptr(n_ns, ns, 4);
-        des_xmlAttributeType(n_type, type, 5);
-        des_xmlAttributeDefault(n_def, def, 6);
-        des_const_xmlChar_ptr(n_defaultValue, defaultValue, 7);
-        des_xmlEnumerationPtr(n_tree, tree, 8);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddAttributeDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_dtd);
-            printf(" %d", n_elem);
-            printf(" %d", n_name);
-            printf(" %d", n_ns);
-            printf(" %d", n_type);
-            printf(" %d", n_def);
-            printf(" %d", n_defaultValue);
-            printf(" %d", n_tree);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddElementDecl(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementPtr ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDtdPtr dtd; /* pointer to the DTD */
-    int n_dtd;
-    const xmlChar * name; /* the entity name */
-    int n_name;
-    xmlElementTypeVal type; /* the element type */
-    int n_type;
-    xmlElementContentPtr content; /* the element content tree or NULL */
-    int n_content;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_xmlElementTypeVal;n_type++) {
-    for (n_content = 0;n_content < gen_nb_xmlElementContentPtr;n_content++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        dtd = gen_xmlDtdPtr(n_dtd, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        type = gen_xmlElementTypeVal(n_type, 3);
-        content = gen_xmlElementContentPtr(n_content, 4);
-
-        ret_val = xmlAddElementDecl(ctxt, dtd, name, type, content);
-        desret_xmlElementPtr(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDtdPtr(n_dtd, dtd, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_xmlElementTypeVal(n_type, type, 3);
-        des_xmlElementContentPtr(n_content, content, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddElementDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_dtd);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddID(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddIDSafe(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlAttrPtr attr; /* the attribute holding the ID */
-    int n_attr;
-    const xmlChar * value; /* the attribute (ID) value */
-    int n_value;
-
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        attr = gen_xmlAttrPtr(n_attr, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-
-        ret_val = xmlAddIDSafe(attr, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAttrPtr(n_attr, attr, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAddIDSafe",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_attr);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddNotationDecl(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAddRef(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyAttributeTable(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyDocElementContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementContentPtr ret_val;
-    xmlDocPtr doc; /* the document owning the element declaration */
-    int n_doc;
-    xmlElementContentPtr cur; /* An element content pointer. */
-    int n_cur;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlElementContentPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        cur = gen_xmlElementContentPtr(n_cur, 1);
-
-        ret_val = xmlCopyDocElementContent(doc, cur);
-        desret_xmlElementContentPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlElementContentPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyDocElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyElementContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementContentPtr ret_val;
-    xmlElementContentPtr cur; /* An element content pointer. */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlElementContentPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlElementContentPtr(n_cur, 0);
-
-        ret_val = xmlCopyElementContent(cur);
-        desret_xmlElementContentPtr(ret_val);
-        call_tests++;
-        des_xmlElementContentPtr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyElementTable(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyEnumeration(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCopyNotationTable(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCreateEnumeration(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlAttributePtr 1
-#define gen_xmlAttributePtr(no, nr) NULL
-#define des_xmlAttributePtr(no, val, nr)
-
-static int
-test_xmlDumpAttributeDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlAttributePtr attr; /* An attribute declaration */
-    int n_attr;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttributePtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        attr = gen_xmlAttributePtr(n_attr, 1);
-
-        xmlDumpAttributeDecl(buf, attr);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlAttributePtr(n_attr, attr, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpAttributeDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlAttributeTablePtr 1
-#define gen_xmlAttributeTablePtr(no, nr) NULL
-#define des_xmlAttributeTablePtr(no, val, nr)
-
-static int
-test_xmlDumpAttributeTable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlAttributeTablePtr table; /* An attribute table */
-    int n_table;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_table = 0;n_table < gen_nb_xmlAttributeTablePtr;n_table++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        table = gen_xmlAttributeTablePtr(n_table, 1);
-
-        xmlDumpAttributeTable(buf, table);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlAttributeTablePtr(n_table, table, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpAttributeTable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_table);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlElementPtr 1
-#define gen_xmlElementPtr(no, nr) NULL
-#define des_xmlElementPtr(no, val, nr)
-
-static int
-test_xmlDumpElementDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlElementPtr elem; /* An element table */
-    int n_elem;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlElementPtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        elem = gen_xmlElementPtr(n_elem, 1);
-
-        xmlDumpElementDecl(buf, elem);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlElementPtr(n_elem, elem, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpElementDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlElementTablePtr 1
-#define gen_xmlElementTablePtr(no, nr) NULL
-#define des_xmlElementTablePtr(no, val, nr)
-
-static int
-test_xmlDumpElementTable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlElementTablePtr table; /* An element table */
-    int n_table;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_table = 0;n_table < gen_nb_xmlElementTablePtr;n_table++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        table = gen_xmlElementTablePtr(n_table, 1);
-
-        xmlDumpElementTable(buf, table);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlElementTablePtr(n_table, table, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpElementTable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_table);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlNotationPtr 1
-#define gen_xmlNotationPtr(no, nr) NULL
-#define des_xmlNotationPtr(no, val, nr)
-
-static int
-test_xmlDumpNotationDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlNotationPtr nota; /* A notation declaration */
-    int n_nota;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_nota = 0;n_nota < gen_nb_xmlNotationPtr;n_nota++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        nota = gen_xmlNotationPtr(n_nota, 1);
-
-        xmlDumpNotationDecl(buf, nota);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlNotationPtr(n_nota, nota, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpNotationDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_nota);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlNotationTablePtr 1
-#define gen_xmlNotationTablePtr(no, nr) NULL
-#define des_xmlNotationTablePtr(no, val, nr)
-
-static int
-test_xmlDumpNotationTable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlBufferPtr buf; /* the XML buffer output */
-    int n_buf;
-    xmlNotationTablePtr table; /* A notation table */
-    int n_table;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_table = 0;n_table < gen_nb_xmlNotationTablePtr;n_table++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        table = gen_xmlNotationTablePtr(n_table, 1);
-
-        xmlDumpNotationTable(buf, table);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_xmlNotationTablePtr(n_table, table, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlDumpNotationTable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_table);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdAttrDesc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttributePtr ret_val;
-    xmlDtdPtr dtd; /* a pointer to the DtD to search */
-    int n_dtd;
-    const xmlChar * elem; /* the element name */
-    int n_elem;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_elem = 0;n_elem < gen_nb_const_xmlChar_ptr;n_elem++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        dtd = gen_xmlDtdPtr(n_dtd, 0);
-        elem = gen_const_xmlChar_ptr(n_elem, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-
-        ret_val = xmlGetDtdAttrDesc(dtd, elem, name);
-        desret_xmlAttributePtr(ret_val);
-        call_tests++;
-        des_xmlDtdPtr(n_dtd, dtd, 0);
-        des_const_xmlChar_ptr(n_elem, elem, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDtdAttrDesc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dtd);
-            printf(" %d", n_elem);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdElementDesc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementPtr ret_val;
-    xmlDtdPtr dtd; /* a pointer to the DtD to search */
-    int n_dtd;
-    const xmlChar * name; /* the element name */
-    int n_name;
-
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        dtd = gen_xmlDtdPtr(n_dtd, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlGetDtdElementDesc(dtd, name);
-        desret_xmlElementPtr(ret_val);
-        call_tests++;
-        des_xmlDtdPtr(n_dtd, dtd, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDtdElementDesc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dtd);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdNotationDesc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdQAttrDesc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttributePtr ret_val;
-    xmlDtdPtr dtd; /* a pointer to the DtD to search */
-    int n_dtd;
-    const xmlChar * elem; /* the element name */
-    int n_elem;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * prefix; /* the attribute namespace prefix */
-    int n_prefix;
-
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_elem = 0;n_elem < gen_nb_const_xmlChar_ptr;n_elem++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        dtd = gen_xmlDtdPtr(n_dtd, 0);
-        elem = gen_const_xmlChar_ptr(n_elem, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 3);
-
-        ret_val = xmlGetDtdQAttrDesc(dtd, elem, name, prefix);
-        desret_xmlAttributePtr(ret_val);
-        call_tests++;
-        des_xmlDtdPtr(n_dtd, dtd, 0);
-        des_const_xmlChar_ptr(n_elem, elem, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_prefix, prefix, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDtdQAttrDesc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dtd);
-            printf(" %d", n_elem);
-            printf(" %d", n_name);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetDtdQElementDesc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementPtr ret_val;
-    xmlDtdPtr dtd; /* a pointer to the DtD to search */
-    int n_dtd;
-    const xmlChar * name; /* the element name */
-    int n_name;
-    const xmlChar * prefix; /* the element namespace prefix */
-    int n_prefix;
-
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        dtd = gen_xmlDtdPtr(n_dtd, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 2);
-
-        ret_val = xmlGetDtdQElementDesc(dtd, name, prefix);
-        desret_xmlElementPtr(ret_val);
-        call_tests++;
-        des_xmlDtdPtr(n_dtd, dtd, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_prefix, prefix, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetDtdQElementDesc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_dtd);
-            printf(" %d", n_name);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetID(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlAttrPtr ret_val;
-    xmlDocPtr doc; /* pointer to the document */
-    int n_doc;
-    const xmlChar * ID; /* the ID value */
-    int n_ID;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_ID = 0;n_ID < gen_nb_const_xmlChar_ptr;n_ID++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        ID = gen_const_xmlChar_ptr(n_ID, 1);
-
-        ret_val = xmlGetID(doc, ID);
-        desret_xmlAttrPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_ID, ID, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetID",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_ID);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetRefs(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsID(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr elem; /* the element carrying the attribute */
-    int n_elem;
-    xmlAttrPtr attr; /* the attribute */
-    int n_attr;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        elem = gen_xmlNodePtr(n_elem, 1);
-        attr = gen_xmlAttrPtr(n_attr, 2);
-
-        ret_val = xmlIsID(doc, elem, attr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_elem, elem, 1);
-        des_xmlAttrPtr(n_attr, attr, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsID",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsMixedElement(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * name; /* the element name */
-    int n_name;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlIsMixedElement(doc, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsMixedElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIsRef(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr elem; /* the element carrying the attribute */
-    int n_elem;
-    xmlAttrPtr attr; /* the attribute */
-    int n_attr;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        elem = gen_xmlNodePtr(n_elem, 1);
-        attr = gen_xmlAttrPtr(n_attr, 2);
-
-        ret_val = xmlIsRef(doc, elem, attr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_elem, elem, 1);
-        des_xmlAttrPtr(n_attr, attr, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIsRef",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewDocElementContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementContentPtr ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * name; /* the subelement name or NULL */
-    int n_name;
-    xmlElementContentType type; /* the type of element content decl */
-    int n_type;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_xmlElementContentType;n_type++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        type = gen_xmlElementContentType(n_type, 2);
-
-        ret_val = xmlNewDocElementContent(doc, name, type);
-        xmlFreeDocElementContent(doc, ret_val); ret_val = NULL;
-        desret_xmlElementContentPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_xmlElementContentType(n_type, type, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewDocElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewElementContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlElementContentPtr ret_val;
-    const xmlChar * name; /* the subelement name or NULL */
-    int n_name;
-    xmlElementContentType type; /* the type of element content decl */
-    int n_type;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_type = 0;n_type < gen_nb_xmlElementContentType;n_type++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-        type = gen_xmlElementContentType(n_type, 1);
-
-        ret_val = xmlNewElementContent(name, type);
-        desret_xmlElementContentPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        des_xmlElementContentType(n_type, type, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf(" %d", n_type);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewValidCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRemoveID(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlAttrPtr attr; /* the attribute */
-    int n_attr;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        attr = gen_xmlAttrPtr(n_attr, 1);
-
-        ret_val = xmlRemoveID(doc, attr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlAttrPtr(n_attr, attr, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRemoveID",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRemoveRef(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlAttrPtr attr; /* the attribute */
-    int n_attr;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        attr = gen_xmlAttrPtr(n_attr, 1);
-
-        ret_val = xmlRemoveRef(doc, attr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlAttrPtr(n_attr, attr, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRemoveRef",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSnprintfElementContent(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    char * buf; /* an output buffer */
-    int n_buf;
-    int size; /* the buffer size */
-    int n_size;
-    xmlElementContentPtr content; /* An element table */
-    int n_content;
-    int englob; /* 1 if one must print the englobing parenthesis, 0 otherwise */
-    int n_englob;
-
-    for (n_buf = 0;n_buf < gen_nb_char_ptr;n_buf++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_content = 0;n_content < gen_nb_xmlElementContentPtr;n_content++) {
-    for (n_englob = 0;n_englob < gen_nb_int;n_englob++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_char_ptr(n_buf, 0);
-        size = gen_int(n_size, 1);
-        content = gen_xmlElementContentPtr(n_content, 2);
-        englob = gen_int(n_englob, 3);
-
-        xmlSnprintfElementContent(buf, size, content, englob);
-        call_tests++;
-        des_char_ptr(n_buf, buf, 0);
-        des_int(n_size, size, 1);
-        des_xmlElementContentPtr(n_content, content, 2);
-        des_int(n_englob, englob, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSnprintfElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_size);
-            printf(" %d", n_content);
-            printf(" %d", n_englob);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSprintfElementContent(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-#ifdef LIBXML_OUTPUT_ENABLED
-    int mem_base;
-    char * buf; /* an output buffer */
-    int n_buf;
-    xmlElementContentPtr content; /* An element table */
-    int n_content;
-    int englob; /* 1 if one must print the englobing parenthesis, 0 otherwise */
-    int n_englob;
-
-    for (n_buf = 0;n_buf < gen_nb_char_ptr;n_buf++) {
-    for (n_content = 0;n_content < gen_nb_xmlElementContentPtr;n_content++) {
-    for (n_englob = 0;n_englob < gen_nb_int;n_englob++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_char_ptr(n_buf, 0);
-        content = gen_xmlElementContentPtr(n_content, 1);
-        englob = gen_int(n_englob, 2);
-
-        xmlSprintfElementContent(buf, content, englob);
-        call_tests++;
-        des_char_ptr(n_buf, buf, 0);
-        des_xmlElementContentPtr(n_content, content, 1);
-        des_int(n_englob, englob, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSprintfElementContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_content);
-            printf(" %d", n_englob);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidBuildContentModel(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* a validation context */
-    int n_ctxt;
-    xmlElementPtr elem; /* an element declaration node */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlElementPtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        elem = gen_xmlElementPtr(n_elem, 1);
-
-        ret_val = xmlValidBuildContentModel(ctxt, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlElementPtr(n_elem, elem, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidBuildContentModel",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidCtxtNormalizeAttributeValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context or NULL */
-    int n_ctxt;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr elem; /* the parent */
-    int n_elem;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * value; /* the attribute value */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-        name = gen_const_xmlChar_ptr(n_name, 3);
-        value = gen_const_xmlChar_ptr(n_value, 4);
-
-        ret_val = xmlValidCtxtNormalizeAttributeValue(ctxt, doc, elem, name, value);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        des_const_xmlChar_ptr(n_name, name, 3);
-        des_const_xmlChar_ptr(n_value, value, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidCtxtNormalizeAttributeValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-#define gen_nb_xmlElementContent_ptr 1
-#define gen_xmlElementContent_ptr(no, nr) NULL
-#define des_xmlElementContent_ptr(no, val, nr)
-
-static int
-test_xmlValidGetPotentialChildren(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-#ifdef LIBXML_VALID_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlElementContent * ctree; /* an element content tree */
-    int n_ctree;
-    const xmlChar ** names; /* an array to store the list of child names */
-    int n_names;
-    int * len; /* a pointer to the number of element in the list */
-    int n_len;
-    int max; /* the size of the array */
-    int n_max;
-
-    for (n_ctree = 0;n_ctree < gen_nb_xmlElementContent_ptr;n_ctree++) {
-    for (n_names = 0;n_names < gen_nb_const_xmlChar_ptr_ptr;n_names++) {
-    for (n_len = 0;n_len < gen_nb_int_ptr;n_len++) {
-    for (n_max = 0;n_max < gen_nb_int;n_max++) {
-        mem_base = xmlMemBlocks();
-        ctree = gen_xmlElementContent_ptr(n_ctree, 0);
-        names = gen_const_xmlChar_ptr_ptr(n_names, 1);
-        len = gen_int_ptr(n_len, 2);
-        max = gen_int(n_max, 3);
-
-        ret_val = xmlValidGetPotentialChildren(ctree, names, len, max);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlElementContent_ptr(n_ctree, ctree, 0);
-        des_const_xmlChar_ptr_ptr(n_names, names, 1);
-        des_int_ptr(n_len, len, 2);
-        des_int(n_max, max, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidGetPotentialChildren",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctree);
-            printf(" %d", n_names);
-            printf(" %d", n_len);
-            printf(" %d", n_max);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidGetValidElements(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-#ifdef LIBXML_VALID_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlNode * prev; /* an element to insert after */
-    int n_prev;
-    xmlNode * next; /* an element to insert next */
-    int n_next;
-    const xmlChar ** names; /* an array to store the list of child names */
-    int n_names;
-    int max; /* the size of the array */
-    int n_max;
-
-    for (n_prev = 0;n_prev < gen_nb_xmlNodePtr;n_prev++) {
-    for (n_next = 0;n_next < gen_nb_xmlNodePtr;n_next++) {
-    for (n_names = 0;n_names < gen_nb_const_xmlChar_ptr_ptr;n_names++) {
-    for (n_max = 0;n_max < gen_nb_int;n_max++) {
-        mem_base = xmlMemBlocks();
-        prev = gen_xmlNodePtr(n_prev, 0);
-        next = gen_xmlNodePtr(n_next, 1);
-        names = gen_const_xmlChar_ptr_ptr(n_names, 2);
-        max = gen_int(n_max, 3);
-
-        ret_val = xmlValidGetValidElements(prev, next, names, max);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_prev, prev, 0);
-        des_xmlNodePtr(n_next, next, 1);
-        des_const_xmlChar_ptr_ptr(n_names, names, 2);
-        des_int(n_max, max, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidGetValidElements",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_prev);
-            printf(" %d", n_next);
-            printf(" %d", n_names);
-            printf(" %d", n_max);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidNormalizeAttributeValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    xmlNodePtr elem; /* the parent */
-    int n_elem;
-    const xmlChar * name; /* the attribute name */
-    int n_name;
-    const xmlChar * value; /* the attribute value */
-    int n_value;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        elem = gen_xmlNodePtr(n_elem, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        value = gen_const_xmlChar_ptr(n_value, 3);
-
-        ret_val = xmlValidNormalizeAttributeValue(doc, elem, name, value);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_elem, elem, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_value, value, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidNormalizeAttributeValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateAttributeDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlAttributePtr attr; /* an attribute definition */
-    int n_attr;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttributePtr;n_attr++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        attr = gen_xmlAttributePtr(n_attr, 2);
-
-        ret_val = xmlValidateAttributeDecl(ctxt, doc, attr);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlAttributePtr(n_attr, attr, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateAttributeDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_attr);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateAttributeValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlAttributeType type; /* an attribute type */
-    int n_type;
-    const xmlChar * value; /* an attribute value */
-    int n_value;
-
-    for (n_type = 0;n_type < gen_nb_xmlAttributeType;n_type++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlAttributeType(n_type, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-
-        ret_val = xmlValidateAttributeValue(type, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAttributeType(n_type, type, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateAttributeValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr vctxt; /* the validation context */
-    int n_vctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-
-    for (n_vctxt = 0;n_vctxt < gen_nb_xmlValidCtxtPtr;n_vctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        vctxt = gen_xmlValidCtxtPtr(n_vctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlValidateDocument(vctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_vctxt, vctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_vctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateDocumentFinal(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlValidateDocumentFinal(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateDocumentFinal",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateDtd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlDtdPtr dtd; /* a dtd instance */
-    int n_dtd;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_dtd = 0;n_dtd < gen_nb_xmlDtdPtr;n_dtd++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        dtd = gen_xmlDtdPtr(n_dtd, 2);
-
-        ret_val = xmlValidateDtd(ctxt, doc, dtd);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlDtdPtr(n_dtd, dtd, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateDtd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_dtd);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateDtdFinal(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlValidateDtdFinal(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateDtdFinal",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr root; /* an element instance */
-    int n_root;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_root = 0;n_root < gen_nb_xmlNodePtr;n_root++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        root = gen_xmlNodePtr(n_root, 2);
-
-        ret_val = xmlValidateElement(ctxt, doc, root);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_root, root, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_root);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateElementDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlElementPtr elem; /* an element definition */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlElementPtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlElementPtr(n_elem, 2);
-
-        ret_val = xmlValidateElementDecl(ctxt, doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlElementPtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateElementDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNameValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* an Name value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlValidateNameValue(value);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNameValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNamesValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* an Names value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlValidateNamesValue(value);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNamesValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNmtokenValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* an Nmtoken value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlValidateNmtokenValue(value);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNmtokenValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNmtokensValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * value; /* an Nmtokens value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlValidateNmtokensValue(value);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNmtokensValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNotationDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNotationPtr nota; /* a notation definition */
-    int n_nota;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_nota = 0;n_nota < gen_nb_xmlNotationPtr;n_nota++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        nota = gen_xmlNotationPtr(n_nota, 2);
-
-        ret_val = xmlValidateNotationDecl(ctxt, doc, nota);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNotationPtr(n_nota, nota, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNotationDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_nota);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateNotationUse(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* the document */
-    int n_doc;
-    const xmlChar * notationName; /* the notation name to check */
-    int n_notationName;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_notationName = 0;n_notationName < gen_nb_const_xmlChar_ptr;n_notationName++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        notationName = gen_const_xmlChar_ptr(n_notationName, 2);
-
-        ret_val = xmlValidateNotationUse(ctxt, doc, notationName);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_const_xmlChar_ptr(n_notationName, notationName, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateNotationUse",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_notationName);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateOneAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-    xmlAttrPtr attr; /* an attribute instance */
-    int n_attr;
-    const xmlChar * value; /* the attribute value (without entities processing) */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_attr = 0;n_attr < gen_nb_xmlAttrPtr;n_attr++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-        attr = gen_xmlAttrPtr(n_attr, 3);
-        value = gen_const_xmlChar_ptr(n_value, 4);
-
-        ret_val = xmlValidateOneAttribute(ctxt, doc, elem, attr, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        des_xmlAttrPtr(n_attr, attr, 3);
-        des_const_xmlChar_ptr(n_value, value, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateOneAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_attr);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateOneElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-
-        ret_val = xmlValidateOneElement(ctxt, doc, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateOneElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateOneNamespace(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-    const xmlChar * prefix; /* the namespace prefix */
-    int n_prefix;
-    xmlNsPtr ns; /* an namespace declaration instance */
-    int n_ns;
-    const xmlChar * value; /* the attribute value (without entities processing) */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 3);
-        ns = gen_xmlNsPtr(n_ns, 4);
-        value = gen_const_xmlChar_ptr(n_value, 5);
-
-        ret_val = xmlValidateOneNamespace(ctxt, doc, elem, prefix, ns, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        des_const_xmlChar_ptr(n_prefix, prefix, 3);
-        des_xmlNsPtr(n_ns, ns, 4);
-        des_const_xmlChar_ptr(n_value, value, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateOneNamespace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_prefix);
-            printf(" %d", n_ns);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidatePopElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-    const xmlChar * qname; /* the qualified name as appearing in the serialization */
-    int n_qname;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_qname = 0;n_qname < gen_nb_const_xmlChar_ptr;n_qname++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-        qname = gen_const_xmlChar_ptr(n_qname, 3);
-
-        ret_val = xmlValidatePopElement(ctxt, doc, elem, qname);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        des_const_xmlChar_ptr(n_qname, qname, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidatePopElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_qname);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidatePushCData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    const xmlChar * data; /* some character data read */
-    int n_data;
-    int len; /* the length of the data */
-    int n_len;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_data = 0;n_data < gen_nb_const_xmlChar_ptr;n_data++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        data = gen_const_xmlChar_ptr(n_data, 1);
-        len = gen_int(n_len, 2);
-        if ((data != NULL) &&
-            (len > xmlStrlen(BAD_CAST data)))
-            len = 0;
-
-        ret_val = xmlValidatePushCData(ctxt, data, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_data, data, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidatePushCData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_data);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidatePushElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-    xmlNodePtr elem; /* an element instance */
-    int n_elem;
-    const xmlChar * qname; /* the qualified name as appearing in the serialization */
-    int n_qname;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-    for (n_qname = 0;n_qname < gen_nb_const_xmlChar_ptr;n_qname++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-        elem = gen_xmlNodePtr(n_elem, 2);
-        qname = gen_const_xmlChar_ptr(n_qname, 3);
-
-        ret_val = xmlValidatePushElement(ctxt, doc, elem, qname);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        des_xmlNodePtr(n_elem, elem, 2);
-        des_const_xmlChar_ptr(n_qname, qname, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidatePushElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf(" %d", n_elem);
-            printf(" %d", n_qname);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlValidateRoot(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_VALID_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlValidCtxtPtr ctxt; /* the validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document instance */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlValidateRoot(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlValidateRoot",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_valid(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing valid : 51 of 71 functions ...\n");
-    test_ret += test_xmlAddAttributeDecl();
-    test_ret += test_xmlAddElementDecl();
-    test_ret += test_xmlAddID();
-    test_ret += test_xmlAddIDSafe();
-    test_ret += test_xmlAddNotationDecl();
-    test_ret += test_xmlAddRef();
-    test_ret += test_xmlCopyAttributeTable();
-    test_ret += test_xmlCopyDocElementContent();
-    test_ret += test_xmlCopyElementContent();
-    test_ret += test_xmlCopyElementTable();
-    test_ret += test_xmlCopyEnumeration();
-    test_ret += test_xmlCopyNotationTable();
-    test_ret += test_xmlCreateEnumeration();
-    test_ret += test_xmlDumpAttributeDecl();
-    test_ret += test_xmlDumpAttributeTable();
-    test_ret += test_xmlDumpElementDecl();
-    test_ret += test_xmlDumpElementTable();
-    test_ret += test_xmlDumpNotationDecl();
-    test_ret += test_xmlDumpNotationTable();
-    test_ret += test_xmlGetDtdAttrDesc();
-    test_ret += test_xmlGetDtdElementDesc();
-    test_ret += test_xmlGetDtdNotationDesc();
-    test_ret += test_xmlGetDtdQAttrDesc();
-    test_ret += test_xmlGetDtdQElementDesc();
-    test_ret += test_xmlGetID();
-    test_ret += test_xmlGetRefs();
-    test_ret += test_xmlIsID();
-    test_ret += test_xmlIsMixedElement();
-    test_ret += test_xmlIsRef();
-    test_ret += test_xmlNewDocElementContent();
-    test_ret += test_xmlNewElementContent();
-    test_ret += test_xmlNewValidCtxt();
-    test_ret += test_xmlRemoveID();
-    test_ret += test_xmlRemoveRef();
-    test_ret += test_xmlSnprintfElementContent();
-    test_ret += test_xmlSprintfElementContent();
-    test_ret += test_xmlValidBuildContentModel();
-    test_ret += test_xmlValidCtxtNormalizeAttributeValue();
-    test_ret += test_xmlValidGetPotentialChildren();
-    test_ret += test_xmlValidGetValidElements();
-    test_ret += test_xmlValidNormalizeAttributeValue();
-    test_ret += test_xmlValidateAttributeDecl();
-    test_ret += test_xmlValidateAttributeValue();
-    test_ret += test_xmlValidateDocument();
-    test_ret += test_xmlValidateDocumentFinal();
-    test_ret += test_xmlValidateDtd();
-    test_ret += test_xmlValidateDtdFinal();
-    test_ret += test_xmlValidateElement();
-    test_ret += test_xmlValidateElementDecl();
-    test_ret += test_xmlValidateNameValue();
-    test_ret += test_xmlValidateNamesValue();
-    test_ret += test_xmlValidateNmtokenValue();
-    test_ret += test_xmlValidateNmtokensValue();
-    test_ret += test_xmlValidateNotationDecl();
-    test_ret += test_xmlValidateNotationUse();
-    test_ret += test_xmlValidateOneAttribute();
-    test_ret += test_xmlValidateOneElement();
-    test_ret += test_xmlValidateOneNamespace();
-    test_ret += test_xmlValidatePopElement();
-    test_ret += test_xmlValidatePushCData();
-    test_ret += test_xmlValidatePushElement();
-    test_ret += test_xmlValidateRoot();
-
-    if (test_ret != 0)
-	printf("Module valid: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_XINCLUDE_ENABLED
-
-#define gen_nb_xmlXIncludeCtxtPtr 1
-#define gen_xmlXIncludeCtxtPtr(no, nr) NULL
-#define des_xmlXIncludeCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlXIncludeGetLastError(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXIncludeCtxtPtr ctxt; /* an XInclude processing context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXIncludeCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXIncludeCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlXIncludeGetLastError(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXIncludeCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeGetLastError",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeNewContext(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcess(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* an XML document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlXIncludeProcess(doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcess",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessFlags(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* an XML document */
-    int n_doc;
-    int flags; /* a set of xmlParserOption used for parsing XML includes */
-    int n_flags;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        flags = gen_int(n_flags, 1);
-
-        ret_val = xmlXIncludeProcessFlags(doc, flags);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_int(n_flags, flags, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessFlags",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessFlagsData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlDocPtr doc; /* an XML document */
-    int n_doc;
-    int flags; /* a set of xmlParserOption used for parsing XML includes */
-    int n_flags;
-    void * data; /* application data that will be passed to the parser context in the _private field of the parser context(s) */
-    int n_data;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        flags = gen_int(n_flags, 1);
-        data = gen_userdata(n_data, 2);
-
-        ret_val = xmlXIncludeProcessFlagsData(doc, flags, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_int(n_flags, flags, 1);
-        des_userdata(n_data, data, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessFlagsData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_flags);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXIncludeCtxtPtr ctxt; /* an existing XInclude context */
-    int n_ctxt;
-    xmlNodePtr node; /* a node in an XML document */
-    int n_node;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXIncludeCtxtPtr;n_ctxt++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXIncludeCtxtPtr(n_ctxt, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlXIncludeProcessNode(ctxt, node);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXIncludeCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessTree(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodePtr tree; /* a node in an XML document */
-    int n_tree;
-
-    for (n_tree = 0;n_tree < gen_nb_xmlNodePtr;n_tree++) {
-        mem_base = xmlMemBlocks();
-        tree = gen_xmlNodePtr(n_tree, 0);
-
-        ret_val = xmlXIncludeProcessTree(tree);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_tree, tree, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessTree",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_tree);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessTreeFlags(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodePtr tree; /* a node in an XML document */
-    int n_tree;
-    int flags; /* a set of xmlParserOption used for parsing XML includes */
-    int n_flags;
-
-    for (n_tree = 0;n_tree < gen_nb_xmlNodePtr;n_tree++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-        mem_base = xmlMemBlocks();
-        tree = gen_xmlNodePtr(n_tree, 0);
-        flags = gen_int(n_flags, 1);
-
-        ret_val = xmlXIncludeProcessTreeFlags(tree, flags);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_tree, tree, 0);
-        des_int(n_flags, flags, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessTreeFlags",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_tree);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeProcessTreeFlagsData(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodePtr tree; /* an XML node */
-    int n_tree;
-    int flags; /* a set of xmlParserOption used for parsing XML includes */
-    int n_flags;
-    void * data; /* application data that will be passed to the parser context in the _private field of the parser context(s) */
-    int n_data;
-
-    for (n_tree = 0;n_tree < gen_nb_xmlNodePtr;n_tree++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        tree = gen_xmlNodePtr(n_tree, 0);
-        flags = gen_int(n_flags, 1);
-        data = gen_userdata(n_data, 2);
-
-        ret_val = xmlXIncludeProcessTreeFlagsData(tree, flags, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_tree, tree, 0);
-        des_int(n_flags, flags, 1);
-        des_userdata(n_data, data, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeProcessTreeFlagsData",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_tree);
-            printf(" %d", n_flags);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeSetErrorHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeSetFlags(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XINCLUDE_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXIncludeCtxtPtr ctxt; /* an XInclude processing context */
-    int n_ctxt;
-    int flags; /* a set of xmlParserOption used for parsing XML includes */
-    int n_flags;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXIncludeCtxtPtr;n_ctxt++) {
-    for (n_flags = 0;n_flags < gen_nb_int;n_flags++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXIncludeCtxtPtr(n_ctxt, 0);
-        flags = gen_int(n_flags, 1);
-
-        ret_val = xmlXIncludeSetFlags(ctxt, flags);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXIncludeCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_flags, flags, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXIncludeSetFlags",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_flags);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXIncludeSetResourceLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xinclude(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xinclude : 9 of 13 functions ...\n");
-    test_ret += test_xmlXIncludeGetLastError();
-    test_ret += test_xmlXIncludeNewContext();
-    test_ret += test_xmlXIncludeProcess();
-    test_ret += test_xmlXIncludeProcessFlags();
-    test_ret += test_xmlXIncludeProcessFlagsData();
-    test_ret += test_xmlXIncludeProcessNode();
-    test_ret += test_xmlXIncludeProcessTree();
-    test_ret += test_xmlXIncludeProcessTreeFlags();
-    test_ret += test_xmlXIncludeProcessTreeFlagsData();
-    test_ret += test_xmlXIncludeSetErrorHandler();
-    test_ret += test_xmlXIncludeSetFlags();
-    test_ret += test_xmlXIncludeSetResourceLoader();
-
-    if (test_ret != 0)
-	printf("Module xinclude: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAllocOutputBuffer(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr ret_val;
-    xmlCharEncodingHandlerPtr encoder; /* the encoding converter or NULL */
-    int n_encoder;
-
-    for (n_encoder = 0;n_encoder < gen_nb_xmlCharEncodingHandlerPtr;n_encoder++) {
-        mem_base = xmlMemBlocks();
-        encoder = gen_xmlCharEncodingHandlerPtr(n_encoder, 0);
-
-        ret_val = xmlAllocOutputBuffer(encoder);
-        desret_xmlOutputBufferPtr(ret_val);
-        call_tests++;
-        des_xmlCharEncodingHandlerPtr(n_encoder, encoder, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAllocOutputBuffer",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_encoder);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAllocParserInputBuffer(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    xmlCharEncoding enc; /* the charset encoding if known (deprecated) */
-    int n_enc;
-
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        enc = gen_xmlCharEncoding(n_enc, 0);
-
-        ret_val = xmlAllocParserInputBuffer(enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_xmlCharEncoding(n_enc, enc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAllocParserInputBuffer",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCheckFilename(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const char * path; /* the path to check */
-    int n_path;
-
-    for (n_path = 0;n_path < gen_nb_const_char_ptr;n_path++) {
-        mem_base = xmlMemBlocks();
-        path = gen_const_char_ptr(n_path, 0);
-
-        ret_val = xmlCheckFilename(path);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_path, path, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCheckFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_path);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCheckHTTPInput(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* an XML parser context */
-    int n_ctxt;
-    xmlParserInputPtr ret; /* an XML parser input */
-    int n_ret;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_ret = 0;n_ret < gen_nb_xmlParserInputPtr;n_ret++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        ret = gen_xmlParserInputPtr(n_ret, 1);
-
-        ret_val = xmlCheckHTTPInput(ctxt, ret);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputPtr(n_ret, ret, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCheckHTTPInput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_ret);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCleanupInputCallbacks(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlCleanupInputCallbacks();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCleanupInputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCleanupOutputCallbacks(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlCleanupOutputCallbacks();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCleanupOutputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFileClose(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * context; /* the I/O context */
-    int n_context;
-
-    for (n_context = 0;n_context < gen_nb_void_ptr;n_context++) {
-        mem_base = xmlMemBlocks();
-        context = gen_void_ptr(n_context, 0);
-
-        ret_val = xmlFileClose(context);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_context, context, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlFileClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_context);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFileMatch(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the URI for matching */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlFileMatch(filename);
-        desret_int(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlFileMatch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFileOpen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ret_val;
-    const char * filename; /* the URI for matching */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlFileOpen(filename);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlFileOpen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFileRead(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    void * context; /* the I/O context */
-    int n_context;
-    char * buffer; /* where to drop data */
-    int n_buffer;
-    int len; /* number of bytes to write */
-    int n_len;
-
-    for (n_context = 0;n_context < gen_nb_void_ptr;n_context++) {
-    for (n_buffer = 0;n_buffer < gen_nb_char_ptr;n_buffer++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        context = gen_void_ptr(n_context, 0);
-        buffer = gen_char_ptr(n_buffer, 1);
-        len = gen_int(n_len, 2);
-
-        ret_val = xmlFileRead(context, buffer, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_context, context, 0);
-        des_char_ptr(n_buffer, buffer, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlFileRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_context);
-            printf(" %d", n_buffer);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIOHTTPClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * context; /* the I/O context */
-    int n_context;
-
-    for (n_context = 0;n_context < gen_nb_void_ptr;n_context++) {
-        mem_base = xmlMemBlocks();
-        context = gen_void_ptr(n_context, 0);
-
-        ret_val = xmlIOHTTPClose(context);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_context, context, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIOHTTPClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_context);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIOHTTPMatch(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    const char * filename; /* the URI for matching */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlIOHTTPMatch(filename);
-        desret_int(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIOHTTPMatch",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIOHTTPOpen(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    void * ret_val;
-    const char * filename; /* the URI for matching */
-    int n_filename;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-
-        ret_val = xmlIOHTTPOpen(filename);
-        desret_xmlNanoHTTPCtxtPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIOHTTPOpen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlIOHTTPRead(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-    int ret_val;
-    void * context; /* the I/O context */
-    int n_context;
-    char * buffer; /* where to drop data */
-    int n_buffer;
-    int len; /* number of bytes to write */
-    int n_len;
-
-    for (n_context = 0;n_context < gen_nb_void_ptr;n_context++) {
-    for (n_buffer = 0;n_buffer < gen_nb_char_ptr;n_buffer++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        context = gen_void_ptr(n_context, 0);
-        buffer = gen_char_ptr(n_buffer, 1);
-        len = gen_int(n_len, 2);
-
-        ret_val = xmlIOHTTPRead(context, buffer, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_void_ptr(n_context, context, 0);
-        des_char_ptr(n_buffer, buffer, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlIOHTTPRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_context);
-            printf(" %d", n_buffer);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNoNetExternalEntityLoader(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr ret_val;
-    const char * URL; /* the URL for the entity to load */
-    int n_URL;
-    const char * ID; /* the System ID for the entity to load */
-    int n_ID;
-    xmlParserCtxtPtr ctxt; /* the context in which the entity is called or NULL */
-    int n_ctxt;
-
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_ID = 0;n_ID < gen_nb_const_char_ptr;n_ID++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_filepath(n_URL, 0);
-        ID = gen_const_char_ptr(n_ID, 1);
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 2);
-
-        ret_val = xmlNoNetExternalEntityLoader(URL, ID, ctxt);
-        desret_xmlParserInputPtr(ret_val);
-        call_tests++;
-        des_filepath(n_URL, URL, 0);
-        des_const_char_ptr(n_ID, ID, 1);
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNoNetExternalEntityLoader",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf(" %d", n_ID);
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNormalizeWindowsPath(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * path; /* the input file path */
-    int n_path;
-
-    for (n_path = 0;n_path < gen_nb_const_xmlChar_ptr;n_path++) {
-        mem_base = xmlMemBlocks();
-        path = gen_const_xmlChar_ptr(n_path, 0);
-
-        ret_val = xmlNormalizeWindowsPath(path);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_path, path, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNormalizeWindowsPath",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_path);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferCreateBuffer(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr ret_val;
-    xmlBufferPtr buffer; /* a xmlBufferPtr */
-    int n_buffer;
-    xmlCharEncodingHandlerPtr encoder; /* the encoding converter or NULL */
-    int n_encoder;
-
-    for (n_buffer = 0;n_buffer < gen_nb_xmlBufferPtr;n_buffer++) {
-    for (n_encoder = 0;n_encoder < gen_nb_xmlCharEncodingHandlerPtr;n_encoder++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_xmlBufferPtr(n_buffer, 0);
-        encoder = gen_xmlCharEncodingHandlerPtr(n_encoder, 1);
-
-        ret_val = xmlOutputBufferCreateBuffer(buffer, encoder);
-        desret_xmlOutputBufferPtr(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buffer, buffer, 0);
-        des_xmlCharEncodingHandlerPtr(n_encoder, encoder, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferCreateBuffer",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_encoder);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferCreateFd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr ret_val;
-    int fd; /* a file descriptor number */
-    int n_fd;
-    xmlCharEncodingHandlerPtr encoder; /* the encoding converter or NULL */
-    int n_encoder;
-
-    for (n_fd = 0;n_fd < gen_nb_int;n_fd++) {
-    for (n_encoder = 0;n_encoder < gen_nb_xmlCharEncodingHandlerPtr;n_encoder++) {
-        mem_base = xmlMemBlocks();
-        fd = gen_int(n_fd, 0);
-        encoder = gen_xmlCharEncodingHandlerPtr(n_encoder, 1);
-
-        ret_val = xmlOutputBufferCreateFd(fd, encoder);
-        desret_xmlOutputBufferPtr(ret_val);
-        call_tests++;
-        des_int(n_fd, fd, 0);
-        des_xmlCharEncodingHandlerPtr(n_encoder, encoder, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferCreateFd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_fd);
-            printf(" %d", n_encoder);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferCreateFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr ret_val;
-    FILE * file; /* a FILE* */
-    int n_file;
-    xmlCharEncodingHandlerPtr encoder; /* the encoding converter or NULL */
-    int n_encoder;
-
-    for (n_file = 0;n_file < gen_nb_FILE_ptr;n_file++) {
-    for (n_encoder = 0;n_encoder < gen_nb_xmlCharEncodingHandlerPtr;n_encoder++) {
-        mem_base = xmlMemBlocks();
-        file = gen_FILE_ptr(n_file, 0);
-        encoder = gen_xmlCharEncodingHandlerPtr(n_encoder, 1);
-
-        ret_val = xmlOutputBufferCreateFile(file, encoder);
-        desret_xmlOutputBufferPtr(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_file, file, 0);
-        des_xmlCharEncodingHandlerPtr(n_encoder, encoder, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferCreateFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_file);
-            printf(" %d", n_encoder);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferCreateFilename(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlOutputBufferPtr ret_val;
-    const char * URI; /* a C string containing the URI or filename */
-    int n_URI;
-    xmlCharEncodingHandlerPtr encoder; /* the encoding converter or NULL */
-    int n_encoder;
-    int compression; /* the compression ration (0 none, 9 max). */
-    int n_compression;
-
-    for (n_URI = 0;n_URI < gen_nb_fileoutput;n_URI++) {
-    for (n_encoder = 0;n_encoder < gen_nb_xmlCharEncodingHandlerPtr;n_encoder++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_fileoutput(n_URI, 0);
-        encoder = gen_xmlCharEncodingHandlerPtr(n_encoder, 1);
-        compression = gen_int(n_compression, 2);
-
-        ret_val = xmlOutputBufferCreateFilename(URI, encoder, compression);
-        desret_xmlOutputBufferPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_URI, URI, 0);
-        des_xmlCharEncodingHandlerPtr(n_encoder, encoder, 1);
-        des_int(n_compression, compression, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferCreateFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_encoder);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferCreateFilenameDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferFlush(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlOutputBufferPtr out; /* a buffered output */
-    int n_out;
-
-    for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlOutputBufferPtr(n_out, 0);
-
-        ret_val = xmlOutputBufferFlush(out);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_out, out, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferFlush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferGetContent(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlOutputBufferPtr out; /* an xmlOutputBufferPtr */
-    int n_out;
-
-    for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlOutputBufferPtr(n_out, 0);
-
-        ret_val = xmlOutputBufferGetContent(out);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_out, out, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferGetContent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferGetSize(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferWrite(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlOutputBufferPtr out; /* a buffered parser output */
-    int n_out;
-    int len; /* the size in bytes of the array. */
-    int n_len;
-    const char * data; /* an char array */
-    int n_data;
-
-    for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-    for (n_data = 0;n_data < gen_nb_const_char_ptr;n_data++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlOutputBufferPtr(n_out, 0);
-        len = gen_int(n_len, 1);
-        data = gen_const_char_ptr(n_data, 2);
-        if ((data != NULL) &&
-            (len > xmlStrlen(BAD_CAST data)))
-            len = 0;
-
-        ret_val = xmlOutputBufferWrite(out, len, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_out, out, 0);
-        des_int(n_len, len, 1);
-        des_const_char_ptr(n_data, data, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferWrite",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_len);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferWriteEscape(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlOutputBufferWriteString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlOutputBufferPtr out; /* a buffered parser output */
-    int n_out;
-    const char * str; /* a zero terminated C string */
-    int n_str;
-
-    for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
-    for (n_str = 0;n_str < gen_nb_const_char_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlOutputBufferPtr(n_out, 0);
-        str = gen_const_char_ptr(n_str, 1);
-
-        ret_val = xmlOutputBufferWriteString(out, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_out, out, 0);
-        des_const_char_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlOutputBufferWriteString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserGetDirectory(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateFd(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    int fd; /* a file descriptor number */
-    int n_fd;
-    xmlCharEncoding enc; /* the charset encoding if known (deprecated) */
-    int n_enc;
-
-    for (n_fd = 0;n_fd < gen_nb_int;n_fd++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        fd = gen_int(n_fd, 0);
-        enc = gen_xmlCharEncoding(n_enc, 1);
-        if (fd >= 0) fd = -1;
-
-        ret_val = xmlParserInputBufferCreateFd(fd, enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_int(n_fd, fd, 0);
-        des_xmlCharEncoding(n_enc, enc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferCreateFd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_fd);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateFile(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    FILE * file; /* a FILE* */
-    int n_file;
-    xmlCharEncoding enc; /* the charset encoding if known (deprecated) */
-    int n_enc;
-
-    for (n_file = 0;n_file < gen_nb_FILE_ptr;n_file++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        file = gen_FILE_ptr(n_file, 0);
-        enc = gen_xmlCharEncoding(n_enc, 1);
-
-        ret_val = xmlParserInputBufferCreateFile(file, enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_FILE_ptr(n_file, file, 0);
-        des_xmlCharEncoding(n_enc, enc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferCreateFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_file);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateFilename(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    const char * URI; /* a C string containing the URI or filename */
-    int n_URI;
-    xmlCharEncoding enc; /* the charset encoding if known */
-    int n_enc;
-
-    for (n_URI = 0;n_URI < gen_nb_fileoutput;n_URI++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_fileoutput(n_URI, 0);
-        enc = gen_xmlCharEncoding(n_enc, 1);
-
-        ret_val = xmlParserInputBufferCreateFilename(URI, enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_URI, URI, 0);
-        des_xmlCharEncoding(n_enc, enc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferCreateFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateFilenameDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateMem(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    const char * mem; /* the memory input */
-    int n_mem;
-    int size; /* the length of the memory block */
-    int n_size;
-    xmlCharEncoding enc; /* the charset encoding if known (deprecated) */
-    int n_enc;
-
-    for (n_mem = 0;n_mem < gen_nb_const_char_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        mem = gen_const_char_ptr(n_mem, 0);
-        size = gen_int(n_size, 1);
-        enc = gen_xmlCharEncoding(n_enc, 2);
-        if ((mem != NULL) &&
-            (size > xmlStrlen(BAD_CAST mem)))
-            size = 0;
-
-        ret_val = xmlParserInputBufferCreateMem(mem, size, enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_mem, mem, 0);
-        des_int(n_size, size, 1);
-        des_xmlCharEncoding(n_enc, enc, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferCreateMem",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferCreateStatic(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    const char * mem; /* the memory input */
-    int n_mem;
-    int size; /* the length of the memory block */
-    int n_size;
-    xmlCharEncoding enc; /* the charset encoding if known */
-    int n_enc;
-
-    for (n_mem = 0;n_mem < gen_nb_const_char_ptr;n_mem++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-        mem_base = xmlMemBlocks();
-        mem = gen_const_char_ptr(n_mem, 0);
-        size = gen_int(n_size, 1);
-        enc = gen_xmlCharEncoding(n_enc, 2);
-        if ((mem != NULL) &&
-            (size > xmlStrlen(BAD_CAST mem)))
-            size = 0;
-
-        ret_val = xmlParserInputBufferCreateStatic(mem, size, enc);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_mem, mem, 0);
-        des_int(n_size, size, 1);
-        des_xmlCharEncoding(n_enc, enc, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferCreateStatic",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_mem);
-            printf(" %d", n_size);
-            printf(" %d", n_enc);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferGrow(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserInputBufferPtr in; /* a buffered parser input */
-    int n_in;
-    int len; /* indicative value of the amount of chars to read */
-    int n_len;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputBufferPtr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputBufferPtr(n_in, 0);
-        len = gen_int(n_len, 1);
-
-        ret_val = xmlParserInputBufferGrow(in, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserInputBufferPtr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferGrow",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferPush(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserInputBufferPtr in; /* a buffered parser input */
-    int n_in;
-    int len; /* the size in bytes of the array. */
-    int n_len;
-    const char * buf; /* an char array */
-    int n_buf;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputBufferPtr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-    for (n_buf = 0;n_buf < gen_nb_const_char_ptr;n_buf++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputBufferPtr(n_in, 0);
-        len = gen_int(n_len, 1);
-        buf = gen_const_char_ptr(n_buf, 2);
-        if ((buf != NULL) &&
-            (len > xmlStrlen(BAD_CAST buf)))
-            len = 0;
-
-        ret_val = xmlParserInputBufferPush(in, len, buf);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserInputBufferPtr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        des_const_char_ptr(n_buf, buf, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferPush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf(" %d", n_buf);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserInputBufferRead(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    xmlParserInputBufferPtr in; /* a buffered parser input */
-    int n_in;
-    int len; /* indicative value of the amount of chars to read */
-    int n_len;
-
-    for (n_in = 0;n_in < gen_nb_xmlParserInputBufferPtr;n_in++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        in = gen_xmlParserInputBufferPtr(n_in, 0);
-        len = gen_int(n_len, 1);
-
-        ret_val = xmlParserInputBufferRead(in, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlParserInputBufferPtr(n_in, in, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserInputBufferRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_in);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPopInputCallbacks(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlPopInputCallbacks();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPopInputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlPopOutputCallbacks(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-
-        mem_base = xmlMemBlocks();
-
-        ret_val = xmlPopOutputCallbacks();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlPopOutputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegisterDefaultInputCallbacks(void) {
-    int test_ret = 0;
-
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlRegisterDefaultInputCallbacks();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegisterDefaultInputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegisterDefaultOutputCallbacks(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlRegisterDefaultOutputCallbacks();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegisterDefaultOutputCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegisterHTTPPostCallbacks(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlRegisterHTTPPostCallbacks();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegisterHTTPPostCallbacks",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefOutputBufferCreateFilenameDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefParserInputBufferCreateFilenameDefault(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xmlIO(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlIO : 37 of 51 functions ...\n");
-    test_ret += test_xmlAllocOutputBuffer();
-    test_ret += test_xmlAllocParserInputBuffer();
-    test_ret += test_xmlCheckFilename();
-    test_ret += test_xmlCheckHTTPInput();
-    test_ret += test_xmlCleanupInputCallbacks();
-    test_ret += test_xmlCleanupOutputCallbacks();
-    test_ret += test_xmlFileClose();
-    test_ret += test_xmlFileMatch();
-    test_ret += test_xmlFileOpen();
-    test_ret += test_xmlFileRead();
-    test_ret += test_xmlIOHTTPClose();
-    test_ret += test_xmlIOHTTPMatch();
-    test_ret += test_xmlIOHTTPOpen();
-    test_ret += test_xmlIOHTTPRead();
-    test_ret += test_xmlNoNetExternalEntityLoader();
-    test_ret += test_xmlNormalizeWindowsPath();
-    test_ret += test_xmlOutputBufferCreateBuffer();
-    test_ret += test_xmlOutputBufferCreateFd();
-    test_ret += test_xmlOutputBufferCreateFile();
-    test_ret += test_xmlOutputBufferCreateFilename();
-    test_ret += test_xmlOutputBufferCreateFilenameDefault();
-    test_ret += test_xmlOutputBufferFlush();
-    test_ret += test_xmlOutputBufferGetContent();
-    test_ret += test_xmlOutputBufferGetSize();
-    test_ret += test_xmlOutputBufferWrite();
-    test_ret += test_xmlOutputBufferWriteEscape();
-    test_ret += test_xmlOutputBufferWriteString();
-    test_ret += test_xmlParserGetDirectory();
-    test_ret += test_xmlParserInputBufferCreateFd();
-    test_ret += test_xmlParserInputBufferCreateFile();
-    test_ret += test_xmlParserInputBufferCreateFilename();
-    test_ret += test_xmlParserInputBufferCreateFilenameDefault();
-    test_ret += test_xmlParserInputBufferCreateMem();
-    test_ret += test_xmlParserInputBufferCreateStatic();
-    test_ret += test_xmlParserInputBufferGrow();
-    test_ret += test_xmlParserInputBufferPush();
-    test_ret += test_xmlParserInputBufferRead();
-    test_ret += test_xmlPopInputCallbacks();
-    test_ret += test_xmlPopOutputCallbacks();
-    test_ret += test_xmlRegisterDefaultInputCallbacks();
-    test_ret += test_xmlRegisterDefaultOutputCallbacks();
-    test_ret += test_xmlRegisterHTTPPostCallbacks();
-    test_ret += test_xmlThrDefOutputBufferCreateFilenameDefault();
-    test_ret += test_xmlThrDefParserInputBufferCreateFilenameDefault();
-
-    if (test_ret != 0)
-	printf("Module xmlIO: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlAutomataCompile(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataGetInitState(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_AUTOMATA_ENABLED
-
-#define gen_nb_xmlAutomataPtr 1
-#define gen_xmlAutomataPtr(no, nr) NULL
-#define des_xmlAutomataPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlAutomataIsDeterminist(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlAutomataPtr am; /* an automata */
-    int n_am;
-
-    for (n_am = 0;n_am < gen_nb_xmlAutomataPtr;n_am++) {
-        mem_base = xmlMemBlocks();
-        am = gen_xmlAutomataPtr(n_am, 0);
-
-        ret_val = xmlAutomataIsDeterminist(am);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAutomataPtr(n_am, am, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAutomataIsDeterminist",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_am);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewAllTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewCountTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewCountTrans2(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewCountedTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewCounter(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlAutomataPtr am; /* an automata */
-    int n_am;
-    int min; /* the minimal value on the counter */
-    int n_min;
-    int max; /* the maximal value on the counter */
-    int n_max;
-
-    for (n_am = 0;n_am < gen_nb_xmlAutomataPtr;n_am++) {
-    for (n_min = 0;n_min < gen_nb_int;n_min++) {
-    for (n_max = 0;n_max < gen_nb_int;n_max++) {
-        mem_base = xmlMemBlocks();
-        am = gen_xmlAutomataPtr(n_am, 0);
-        min = gen_int(n_min, 1);
-        max = gen_int(n_max, 2);
-
-        ret_val = xmlAutomataNewCounter(am, min, max);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAutomataPtr(n_am, am, 0);
-        des_int(n_min, min, 1);
-        des_int(n_max, max, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAutomataNewCounter",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_am);
-            printf(" %d", n_min);
-            printf(" %d", n_max);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewCounterTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewEpsilon(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewNegTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewOnceTrans(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewOnceTrans2(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewState(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewTransition(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlAutomataNewTransition2(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_AUTOMATA_ENABLED
-
-#define gen_nb_xmlAutomataStatePtr 1
-#define gen_xmlAutomataStatePtr(no, nr) NULL
-#define des_xmlAutomataStatePtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlAutomataSetFinalState(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlAutomataPtr am; /* an automata */
-    int n_am;
-    xmlAutomataStatePtr state; /* a state in this automata */
-    int n_state;
-
-    for (n_am = 0;n_am < gen_nb_xmlAutomataPtr;n_am++) {
-    for (n_state = 0;n_state < gen_nb_xmlAutomataStatePtr;n_state++) {
-        mem_base = xmlMemBlocks();
-        am = gen_xmlAutomataPtr(n_am, 0);
-        state = gen_xmlAutomataStatePtr(n_state, 1);
-
-        ret_val = xmlAutomataSetFinalState(am, state);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlAutomataPtr(n_am, am, 0);
-        des_xmlAutomataStatePtr(n_state, state, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlAutomataSetFinalState",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_am);
-            printf(" %d", n_state);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewAutomata(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xmlautomata(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlautomata : 3 of 19 functions ...\n");
-    test_ret += test_xmlAutomataCompile();
-    test_ret += test_xmlAutomataGetInitState();
-    test_ret += test_xmlAutomataIsDeterminist();
-    test_ret += test_xmlAutomataNewAllTrans();
-    test_ret += test_xmlAutomataNewCountTrans();
-    test_ret += test_xmlAutomataNewCountTrans2();
-    test_ret += test_xmlAutomataNewCountedTrans();
-    test_ret += test_xmlAutomataNewCounter();
-    test_ret += test_xmlAutomataNewCounterTrans();
-    test_ret += test_xmlAutomataNewEpsilon();
-    test_ret += test_xmlAutomataNewNegTrans();
-    test_ret += test_xmlAutomataNewOnceTrans();
-    test_ret += test_xmlAutomataNewOnceTrans2();
-    test_ret += test_xmlAutomataNewState();
-    test_ret += test_xmlAutomataNewTransition();
-    test_ret += test_xmlAutomataNewTransition2();
-    test_ret += test_xmlAutomataSetFinalState();
-    test_ret += test_xmlNewAutomata();
-
-    if (test_ret != 0)
-	printf("Module xmlautomata: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-#define gen_nb_const_xmlError_ptr 1
-#define gen_const_xmlError_ptr(no, nr) NULL
-#define des_const_xmlError_ptr(no, val, nr)
-
-#define gen_nb_xmlErrorPtr 1
-#define gen_xmlErrorPtr(no, nr) NULL
-#define des_xmlErrorPtr(no, val, nr)
-
-static int
-test_xmlCopyError(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlError * from; /* a source error */
-    int n_from;
-    xmlErrorPtr to; /* a target error */
-    int n_to;
-
-    for (n_from = 0;n_from < gen_nb_const_xmlError_ptr;n_from++) {
-    for (n_to = 0;n_to < gen_nb_xmlErrorPtr;n_to++) {
-        mem_base = xmlMemBlocks();
-        from = gen_const_xmlError_ptr(n_from, 0);
-        to = gen_xmlErrorPtr(n_to, 1);
-
-        ret_val = xmlCopyError(from, to);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlError_ptr(n_from, from, 0);
-        des_xmlErrorPtr(n_to, to, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCopyError",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_from);
-            printf(" %d", n_to);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtGetLastError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlCtxtResetLastError(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    void * ctx; /* an XML parser context */
-    int n_ctx;
-
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctx = gen_void_ptr(n_ctx, 0);
-
-        xmlCtxtResetLastError(ctx);
-        call_tests++;
-        des_void_ptr(n_ctx, ctx, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCtxtResetLastError",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlFormatError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetLastError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserPrintFileContext(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr input; /* an xmlParserInputPtr input */
-    int n_input;
-
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-        mem_base = xmlMemBlocks();
-        input = gen_xmlParserInputPtr(n_input, 0);
-
-        xmlParserPrintFileContext(input);
-        call_tests++;
-        des_xmlParserInputPtr(n_input, input, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserPrintFileContext",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserPrintFileInfo(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlParserInputPtr input; /* an xmlParserInputPtr input */
-    int n_input;
-
-    for (n_input = 0;n_input < gen_nb_xmlParserInputPtr;n_input++) {
-        mem_base = xmlMemBlocks();
-        input = gen_xmlParserInputPtr(n_input, 0);
-
-        xmlParserPrintFileInfo(input);
-        call_tests++;
-        des_xmlParserInputPtr(n_input, input, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlParserPrintFileInfo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_input);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserValidityError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserValidityWarning(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlParserWarning(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlResetError(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlErrorPtr err; /* pointer to the error. */
-    int n_err;
-
-    for (n_err = 0;n_err < gen_nb_xmlErrorPtr;n_err++) {
-        mem_base = xmlMemBlocks();
-        err = gen_xmlErrorPtr(n_err, 0);
-
-        xmlResetError(err);
-        call_tests++;
-        des_xmlErrorPtr(n_err, err, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlResetError",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_err);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlResetLastError(void) {
-    int test_ret = 0;
-
-
-
-        xmlResetLastError();
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetGenericErrorFunc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSetStructuredErrorFunc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefSetGenericErrorFunc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefSetStructuredErrorFunc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xmlerror(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlerror : 6 of 17 functions ...\n");
-    test_ret += test_xmlCopyError();
-    test_ret += test_xmlCtxtGetLastError();
-    test_ret += test_xmlCtxtResetLastError();
-    test_ret += test_xmlFormatError();
-    test_ret += test_xmlGetLastError();
-    test_ret += test_xmlParserError();
-    test_ret += test_xmlParserPrintFileContext();
-    test_ret += test_xmlParserPrintFileInfo();
-    test_ret += test_xmlParserValidityError();
-    test_ret += test_xmlParserValidityWarning();
-    test_ret += test_xmlParserWarning();
-    test_ret += test_xmlResetError();
-    test_ret += test_xmlResetLastError();
-    test_ret += test_xmlSetGenericErrorFunc();
-    test_ret += test_xmlSetStructuredErrorFunc();
-    test_ret += test_xmlThrDefSetGenericErrorFunc();
-    test_ret += test_xmlThrDefSetStructuredErrorFunc();
-
-    if (test_ret != 0)
-	printf("Module xmlerror: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_MODULES_ENABLED
-
-#define gen_nb_xmlModulePtr 1
-#define gen_xmlModulePtr(no, nr) NULL
-#define des_xmlModulePtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlModuleClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_MODULES_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlModulePtr module; /* the module handle */
-    int n_module;
-
-    for (n_module = 0;n_module < gen_nb_xmlModulePtr;n_module++) {
-        mem_base = xmlMemBlocks();
-        module = gen_xmlModulePtr(n_module, 0);
-
-        ret_val = xmlModuleClose(module);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlModulePtr(n_module, module, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlModuleClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_module);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlModuleOpen(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlModuleSymbol(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_MODULES_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlModulePtr module; /* the module */
-    int n_module;
-    const char * name; /* the name of the symbol */
-    int n_name;
-    void ** symbol; /* the resulting symbol address */
-    int n_symbol;
-
-    for (n_module = 0;n_module < gen_nb_xmlModulePtr;n_module++) {
-    for (n_name = 0;n_name < gen_nb_const_char_ptr;n_name++) {
-    for (n_symbol = 0;n_symbol < gen_nb_void_ptr_ptr;n_symbol++) {
-        mem_base = xmlMemBlocks();
-        module = gen_xmlModulePtr(n_module, 0);
-        name = gen_const_char_ptr(n_name, 1);
-        symbol = gen_void_ptr_ptr(n_symbol, 2);
-
-        ret_val = xmlModuleSymbol(module, name, symbol);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlModulePtr(n_module, module, 0);
-        des_const_char_ptr(n_name, name, 1);
-        des_void_ptr_ptr(n_symbol, symbol, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlModuleSymbol",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_module);
-            printf(" %d", n_name);
-            printf(" %d", n_symbol);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlmodule(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlmodule : 2 of 4 functions ...\n");
-    test_ret += test_xmlModuleClose();
-    test_ret += test_xmlModuleOpen();
-    test_ret += test_xmlModuleSymbol();
-
-    if (test_ret != 0)
-	printf("Module xmlmodule: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlNewTextReader(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    xmlParserInputBufferPtr input; /* the xmlParserInputBufferPtr used to read data */
-    int n_input;
-    const char * URI; /* the URI information for the source if available */
-    int n_URI;
-
-    for (n_input = 0;n_input < gen_nb_xmlParserInputBufferPtr;n_input++) {
-    for (n_URI = 0;n_URI < gen_nb_filepath;n_URI++) {
-        mem_base = xmlMemBlocks();
-        input = gen_xmlParserInputBufferPtr(n_input, 0);
-        URI = gen_filepath(n_URI, 1);
-
-        ret_val = xmlNewTextReader(input, URI);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_xmlParserInputBufferPtr(n_input, input, 0);
-        des_filepath(n_URI, URI, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextReader",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_input);
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextReaderFilename(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    const char * URI; /* the URI of the resource to process */
-    int n_URI;
-
-    for (n_URI = 0;n_URI < gen_nb_filepath;n_URI++) {
-        mem_base = xmlMemBlocks();
-        URI = gen_filepath(n_URI, 0);
-
-        ret_val = xmlNewTextReaderFilename(URI);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_filepath(n_URI, URI, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextReaderFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URI);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderForDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    const xmlChar * cur; /* a pointer to a zero terminated string */
-    int n_cur;
-    const char * URL; /* the base URL to use for the document */
-    int n_URL;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-        URL = gen_filepath(n_URL, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_parseroptions(n_options, 3);
-
-        ret_val = xmlReaderForDoc(cur, URL, encoding, options);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        des_filepath(n_URL, URL, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_parseroptions(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderForDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderForFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        filename = gen_filepath(n_filename, 0);
-        encoding = gen_const_char_ptr(n_encoding, 1);
-        options = gen_parseroptions(n_options, 2);
-
-        ret_val = xmlReaderForFile(filename, encoding, options);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_filepath(n_filename, filename, 0);
-        des_const_char_ptr(n_encoding, encoding, 1);
-        des_parseroptions(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderForFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderForMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * URL; /* the base URL to use for the document */
-    int n_URL;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        URL = gen_filepath(n_URL, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_parseroptions(n_options, 4);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlReaderForMemory(buffer, size, URL, encoding, options);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        des_filepath(n_URL, URL, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_parseroptions(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderForMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderNewDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-    const xmlChar * cur; /* a pointer to a zero terminated string */
-    int n_cur;
-    const char * URL; /* the base URL to use for the document */
-    int n_URL;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        cur = gen_const_xmlChar_ptr(n_cur, 1);
-        URL = gen_filepath(n_URL, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_parseroptions(n_options, 4);
-
-        ret_val = xmlReaderNewDoc(reader, cur, URL, encoding, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_cur, cur, 1);
-        des_filepath(n_URL, URL, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_parseroptions(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderNewDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_cur);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderNewFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-    const char * filename; /* a file or URL */
-    int n_filename;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        filename = gen_filepath(n_filename, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        options = gen_parseroptions(n_options, 3);
-
-        ret_val = xmlReaderNewFile(reader, filename, encoding, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_filepath(n_filename, filename, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_parseroptions(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderNewFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_filename);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderNewMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-    const char * buffer; /* a pointer to a char array */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-    const char * URL; /* the base URL to use for the document */
-    int n_URL;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        buffer = gen_const_char_ptr(n_buffer, 1);
-        size = gen_int(n_size, 2);
-        URL = gen_filepath(n_URL, 3);
-        encoding = gen_const_char_ptr(n_encoding, 4);
-        options = gen_parseroptions(n_options, 5);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlReaderNewMemory(reader, buffer, size, URL, encoding, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_char_ptr(n_buffer, buffer, 1);
-        des_int(n_size, size, 2);
-        des_filepath(n_URL, URL, 3);
-        des_const_char_ptr(n_encoding, encoding, 4);
-        des_parseroptions(n_options, options, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderNewMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderNewWalker(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-    xmlDocPtr doc; /* a preparsed document */
-    int n_doc;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlReaderNewWalker(reader, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderNewWalker",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlReaderWalker(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr ret_val;
-    xmlDocPtr doc; /* a preparsed document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlReaderWalker(doc);
-        desret_xmlTextReaderPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlReaderWalker",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderAttributeCount(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderAttributeCount(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderAttributeCount",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderBaseUri(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderBaseUri(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderBaseUri",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderByteConsumed(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    long ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderByteConsumed(reader);
-        desret_long(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderByteConsumed",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderClose(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstBaseUri(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstBaseUri(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstBaseUri",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstEncoding(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstEncoding(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstEncoding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstLocalName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstLocalName(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstLocalName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstName(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstNamespaceUri(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstNamespaceUri(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstNamespaceUri",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstPrefix(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstPrefix(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstPrefix",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * str; /* the string to intern. */
-    int n_str;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-
-        ret_val = xmlTextReaderConstString(reader, str);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstValue(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstXmlLang(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstXmlLang(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstXmlLang",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderConstXmlVersion(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderConstXmlVersion(reader);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderConstXmlVersion",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderCurrentDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlDocPtr ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderCurrentDoc(reader);
-        desret_xmlDocPtr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderCurrentDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderCurrentNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderCurrentNode(reader);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderCurrentNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderDepth(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderDepth(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderDepth",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderExpand(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderExpand(reader);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderExpand",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * name; /* the qualified name of the attribute. */
-    int n_name;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextReaderGetAttribute(reader, name);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetAttributeNo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    int no; /* the zero-based index of the attribute relative to the containing element */
-    int n_no;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_no = 0;n_no < gen_nb_int;n_no++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        no = gen_int(n_no, 1);
-
-        ret_val = xmlTextReaderGetAttributeNo(reader, no);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_int(n_no, no, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetAttributeNo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_no);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetAttributeNs(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * localName; /* the local name of the attribute. */
-    int n_localName;
-    const xmlChar * namespaceURI; /* the namespace URI of the attribute. */
-    int n_namespaceURI;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_localName = 0;n_localName < gen_nb_const_xmlChar_ptr;n_localName++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        localName = gen_const_xmlChar_ptr(n_localName, 1);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 2);
-
-        ret_val = xmlTextReaderGetAttributeNs(reader, localName, namespaceURI);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_localName, localName, 1);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetAttributeNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_localName);
-            printf(" %d", n_namespaceURI);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_READER_ENABLED
-
-#define gen_nb_xmlTextReaderErrorFunc_ptr 1
-#define gen_xmlTextReaderErrorFunc_ptr(no, nr) NULL
-#define des_xmlTextReaderErrorFunc_ptr(no, val, nr)
-#endif
-
-
-static int
-test_xmlTextReaderGetErrorHandler(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    xmlTextReaderErrorFunc * f; /* the callback function or NULL is no callback has been registered */
-    int n_f;
-    void ** arg; /* a user argument */
-    int n_arg;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_f = 0;n_f < gen_nb_xmlTextReaderErrorFunc_ptr;n_f++) {
-    for (n_arg = 0;n_arg < gen_nb_void_ptr_ptr;n_arg++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        f = gen_xmlTextReaderErrorFunc_ptr(n_f, 1);
-        arg = gen_void_ptr_ptr(n_arg, 2);
-
-        xmlTextReaderGetErrorHandler(reader, f, arg);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlTextReaderErrorFunc_ptr(n_f, f, 1);
-        des_void_ptr_ptr(n_arg, arg, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetErrorHandler",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_f);
-            printf(" %d", n_arg);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetLastError(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetParserColumnNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the user data (XML reader context) */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderGetParserColumnNumber(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetParserColumnNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetParserLineNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the user data (XML reader context) */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderGetParserLineNumber(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetParserLineNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetParserProp(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    int prop; /* the xmlParserProperties to get */
-    int n_prop;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_prop = 0;n_prop < gen_nb_int;n_prop++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        prop = gen_int(n_prop, 1);
-
-        ret_val = xmlTextReaderGetParserProp(reader, prop);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_int(n_prop, prop, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetParserProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_prop);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderGetRemainder(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlParserInputBufferPtr ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderGetRemainder(reader);
-        desret_xmlParserInputBufferPtr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderGetRemainder",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderHasAttributes(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderHasAttributes(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderHasAttributes",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderHasValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderHasValue(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderHasValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderIsDefault(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderIsDefault(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderIsDefault",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderIsEmptyElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderIsEmptyElement(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderIsEmptyElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderIsNamespaceDecl(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderIsNamespaceDecl(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderIsNamespaceDecl",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderIsValid(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderIsValid(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderIsValid",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderLocalName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderLocalName(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderLocalName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_READER_ENABLED
-
-#define gen_nb_xmlTextReaderLocatorPtr 1
-#define gen_xmlTextReaderLocatorPtr(no, nr) NULL
-#define des_xmlTextReaderLocatorPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlTextReaderLocatorBaseURI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderLocatorPtr locator; /* the xmlTextReaderLocatorPtr used */
-    int n_locator;
-
-    for (n_locator = 0;n_locator < gen_nb_xmlTextReaderLocatorPtr;n_locator++) {
-        mem_base = xmlMemBlocks();
-        locator = gen_xmlTextReaderLocatorPtr(n_locator, 0);
-
-        ret_val = xmlTextReaderLocatorBaseURI(locator);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderLocatorPtr(n_locator, locator, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderLocatorBaseURI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_locator);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderLocatorLineNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderLocatorPtr locator; /* the xmlTextReaderLocatorPtr used */
-    int n_locator;
-
-    for (n_locator = 0;n_locator < gen_nb_xmlTextReaderLocatorPtr;n_locator++) {
-        mem_base = xmlMemBlocks();
-        locator = gen_xmlTextReaderLocatorPtr(n_locator, 0);
-
-        ret_val = xmlTextReaderLocatorLineNumber(locator);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderLocatorPtr(n_locator, locator, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderLocatorLineNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_locator);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderLookupNamespace(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * prefix; /* the prefix whose namespace URI is to be resolved. To return the default namespace, specify NULL */
-    int n_prefix;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-
-        ret_val = xmlTextReaderLookupNamespace(reader, prefix);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderLookupNamespace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * name; /* the qualified name of the attribute. */
-    int n_name;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextReaderMoveToAttribute(reader, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToAttributeNo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    int no; /* the zero-based index of the attribute relative to the containing element. */
-    int n_no;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_no = 0;n_no < gen_nb_int;n_no++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        no = gen_int(n_no, 1);
-
-        ret_val = xmlTextReaderMoveToAttributeNo(reader, no);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_int(n_no, no, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToAttributeNo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_no);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToAttributeNs(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * localName; /* the local name of the attribute. */
-    int n_localName;
-    const xmlChar * namespaceURI; /* the namespace URI of the attribute. */
-    int n_namespaceURI;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_localName = 0;n_localName < gen_nb_const_xmlChar_ptr;n_localName++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        localName = gen_const_xmlChar_ptr(n_localName, 1);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 2);
-
-        ret_val = xmlTextReaderMoveToAttributeNs(reader, localName, namespaceURI);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_localName, localName, 1);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToAttributeNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_localName);
-            printf(" %d", n_namespaceURI);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderMoveToElement(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToFirstAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderMoveToFirstAttribute(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToFirstAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderMoveToNextAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderMoveToNextAttribute(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderMoveToNextAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderName(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderNamespaceUri(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderNamespaceUri(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderNamespaceUri",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderNext(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderNext(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderNext",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderNextSibling(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderNextSibling(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderNextSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderNodeType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderNodeType(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderNodeType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderNormalization(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderNormalization(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderNormalization",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderPrefix(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderPrefix(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderPrefix",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderPreserve(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderPreserve(reader);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderPreserve",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderPreservePattern(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED)
-#ifdef LIBXML_PATTERN_ENABLED
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const xmlChar * pattern; /* an XPath subset pattern */
-    int n_pattern;
-    const xmlChar ** namespaces; /* the prefix definitions, array of [URI, prefix] or NULL */
-    int n_namespaces;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_pattern = 0;n_pattern < gen_nb_const_xmlChar_ptr;n_pattern++) {
-    for (n_namespaces = 0;n_namespaces < gen_nb_const_xmlChar_ptr_ptr;n_namespaces++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        pattern = gen_const_xmlChar_ptr(n_pattern, 1);
-        namespaces = gen_const_xmlChar_ptr_ptr(n_namespaces, 2);
-
-        ret_val = xmlTextReaderPreservePattern(reader, pattern, namespaces);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_xmlChar_ptr(n_pattern, pattern, 1);
-        des_const_xmlChar_ptr_ptr(n_namespaces, namespaces, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderPreservePattern",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_pattern);
-            printf(" %d", n_namespaces);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderQuoteChar(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderQuoteChar(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderQuoteChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderRead(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderRead(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderRead",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderReadAttributeValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderReadAttributeValue(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderReadAttributeValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderReadState(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderReadState(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderReadState",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderRelaxNGSetSchema(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    xmlRelaxNGPtr schema; /* a precompiled RelaxNG schema */
-    int n_schema;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_schema = 0;n_schema < gen_nb_xmlRelaxNGPtr;n_schema++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        schema = gen_xmlRelaxNGPtr(n_schema, 1);
-
-        ret_val = xmlTextReaderRelaxNGSetSchema(reader, schema);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlRelaxNGPtr(n_schema, schema, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderRelaxNGSetSchema",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_schema);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderRelaxNGValidate(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const char * rng; /* the path to a RelaxNG schema or NULL */
-    int n_rng;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_rng = 0;n_rng < gen_nb_const_char_ptr;n_rng++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        rng = gen_const_char_ptr(n_rng, 1);
-
-        ret_val = xmlTextReaderRelaxNGValidate(reader, rng);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_char_ptr(n_rng, rng, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderRelaxNGValidate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_rng);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderRelaxNGValidateCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_RELAXNG_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    xmlRelaxNGValidCtxtPtr ctxt; /* the RelaxNG schema validation context or NULL */
-    int n_ctxt;
-    int options; /* options (not used yet) */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlRelaxNGValidCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        ctxt = gen_xmlRelaxNGValidCtxtPtr(n_ctxt, 1);
-        options = gen_parseroptions(n_options, 2);
-
-        ret_val = xmlTextReaderRelaxNGValidateCtxt(reader, ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlRelaxNGValidCtxtPtr(n_ctxt, ctxt, 1);
-        des_parseroptions(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderRelaxNGValidateCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSchemaValidate(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    const char * xsd; /* the path to a W3C XSD schema or NULL */
-    int n_xsd;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_xsd = 0;n_xsd < gen_nb_const_char_ptr;n_xsd++) {
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        xsd = gen_const_char_ptr(n_xsd, 1);
-
-        ret_val = xmlTextReaderSchemaValidate(reader, xsd);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_const_char_ptr(n_xsd, xsd, 1);
-        xmlResetLastError();
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSchemaValidateCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    xmlSchemaValidCtxtPtr ctxt; /* the XML Schema validation context or NULL */
-    int n_ctxt;
-    int options; /* options (not used yet) */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 1);
-        options = gen_parseroptions(n_options, 2);
-
-        ret_val = xmlTextReaderSchemaValidateCtxt(reader, ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 1);
-        des_parseroptions(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderSchemaValidateCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetErrorHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetMaxAmplification(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetParserProp(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    int prop; /* the xmlParserProperties to set */
-    int n_prop;
-    int value; /* usually 0 or 1 to (de)activate it */
-    int n_value;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_prop = 0;n_prop < gen_nb_int;n_prop++) {
-    for (n_value = 0;n_value < gen_nb_int;n_value++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        prop = gen_int(n_prop, 1);
-        value = gen_int(n_value, 2);
-
-        ret_val = xmlTextReaderSetParserProp(reader, prop, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_int(n_prop, prop, 1);
-        des_int(n_value, value, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderSetParserProp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_prop);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetResourceLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetSchema(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-    xmlSchemaPtr schema; /* a precompiled Schema schema */
-    int n_schema;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_schema = 0;n_schema < gen_nb_xmlSchemaPtr;n_schema++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        schema = gen_xmlSchemaPtr(n_schema, 1);
-
-        ret_val = xmlTextReaderSetSchema(reader, schema);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_xmlSchemaPtr(n_schema, schema, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderSetSchema",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_schema);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetStructuredErrorHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderSetup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* an XML reader */
-    int n_reader;
-    xmlParserInputBufferPtr input; /* xmlParserInputBufferPtr used to feed the reader, will be destroyed with it. */
-    int n_input;
-    const char * URL; /* the base URL to use for the document */
-    int n_URL;
-    const char * encoding; /* the document encoding, or NULL */
-    int n_encoding;
-    int options; /* a combination of xmlParserOption */
-    int n_options;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputBufferPtr;n_input++) {
-    for (n_URL = 0;n_URL < gen_nb_filepath;n_URL++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_options = 0;n_options < gen_nb_parseroptions;n_options++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-        input = gen_xmlParserInputBufferPtr(n_input, 1);
-        URL = gen_filepath(n_URL, 2);
-        encoding = gen_const_char_ptr(n_encoding, 3);
-        options = gen_parseroptions(n_options, 4);
-
-        ret_val = xmlTextReaderSetup(reader, input, URL, encoding, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        des_filepath(n_URL, URL, 2);
-        des_const_char_ptr(n_encoding, encoding, 3);
-        des_parseroptions(n_options, options, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderSetup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf(" %d", n_input);
-            printf(" %d", n_URL);
-            printf(" %d", n_encoding);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderStandalone(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderStandalone(reader);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderStandalone",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderValue(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextReaderXmlLang(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_READER_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlTextReaderPtr reader; /* the xmlTextReaderPtr used */
-    int n_reader;
-
-    for (n_reader = 0;n_reader < gen_nb_xmlTextReaderPtr;n_reader++) {
-        mem_base = xmlMemBlocks();
-        reader = gen_xmlTextReaderPtr(n_reader, 0);
-
-        ret_val = xmlTextReaderXmlLang(reader);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlTextReaderPtr(n_reader, reader, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextReaderXmlLang",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_reader);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlreader(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlreader : 76 of 89 functions ...\n");
-    test_ret += test_xmlNewTextReader();
-    test_ret += test_xmlNewTextReaderFilename();
-    test_ret += test_xmlReaderForDoc();
-    test_ret += test_xmlReaderForFile();
-    test_ret += test_xmlReaderForMemory();
-    test_ret += test_xmlReaderNewDoc();
-    test_ret += test_xmlReaderNewFile();
-    test_ret += test_xmlReaderNewMemory();
-    test_ret += test_xmlReaderNewWalker();
-    test_ret += test_xmlReaderWalker();
-    test_ret += test_xmlTextReaderAttributeCount();
-    test_ret += test_xmlTextReaderBaseUri();
-    test_ret += test_xmlTextReaderByteConsumed();
-    test_ret += test_xmlTextReaderClose();
-    test_ret += test_xmlTextReaderConstBaseUri();
-    test_ret += test_xmlTextReaderConstEncoding();
-    test_ret += test_xmlTextReaderConstLocalName();
-    test_ret += test_xmlTextReaderConstName();
-    test_ret += test_xmlTextReaderConstNamespaceUri();
-    test_ret += test_xmlTextReaderConstPrefix();
-    test_ret += test_xmlTextReaderConstString();
-    test_ret += test_xmlTextReaderConstValue();
-    test_ret += test_xmlTextReaderConstXmlLang();
-    test_ret += test_xmlTextReaderConstXmlVersion();
-    test_ret += test_xmlTextReaderCurrentDoc();
-    test_ret += test_xmlTextReaderCurrentNode();
-    test_ret += test_xmlTextReaderDepth();
-    test_ret += test_xmlTextReaderExpand();
-    test_ret += test_xmlTextReaderGetAttribute();
-    test_ret += test_xmlTextReaderGetAttributeNo();
-    test_ret += test_xmlTextReaderGetAttributeNs();
-    test_ret += test_xmlTextReaderGetErrorHandler();
-    test_ret += test_xmlTextReaderGetLastError();
-    test_ret += test_xmlTextReaderGetParserColumnNumber();
-    test_ret += test_xmlTextReaderGetParserLineNumber();
-    test_ret += test_xmlTextReaderGetParserProp();
-    test_ret += test_xmlTextReaderGetRemainder();
-    test_ret += test_xmlTextReaderHasAttributes();
-    test_ret += test_xmlTextReaderHasValue();
-    test_ret += test_xmlTextReaderIsDefault();
-    test_ret += test_xmlTextReaderIsEmptyElement();
-    test_ret += test_xmlTextReaderIsNamespaceDecl();
-    test_ret += test_xmlTextReaderIsValid();
-    test_ret += test_xmlTextReaderLocalName();
-    test_ret += test_xmlTextReaderLocatorBaseURI();
-    test_ret += test_xmlTextReaderLocatorLineNumber();
-    test_ret += test_xmlTextReaderLookupNamespace();
-    test_ret += test_xmlTextReaderMoveToAttribute();
-    test_ret += test_xmlTextReaderMoveToAttributeNo();
-    test_ret += test_xmlTextReaderMoveToAttributeNs();
-    test_ret += test_xmlTextReaderMoveToElement();
-    test_ret += test_xmlTextReaderMoveToFirstAttribute();
-    test_ret += test_xmlTextReaderMoveToNextAttribute();
-    test_ret += test_xmlTextReaderName();
-    test_ret += test_xmlTextReaderNamespaceUri();
-    test_ret += test_xmlTextReaderNext();
-    test_ret += test_xmlTextReaderNextSibling();
-    test_ret += test_xmlTextReaderNodeType();
-    test_ret += test_xmlTextReaderNormalization();
-    test_ret += test_xmlTextReaderPrefix();
-    test_ret += test_xmlTextReaderPreserve();
-    test_ret += test_xmlTextReaderPreservePattern();
-    test_ret += test_xmlTextReaderQuoteChar();
-    test_ret += test_xmlTextReaderRead();
-    test_ret += test_xmlTextReaderReadAttributeValue();
-    test_ret += test_xmlTextReaderReadState();
-    test_ret += test_xmlTextReaderRelaxNGSetSchema();
-    test_ret += test_xmlTextReaderRelaxNGValidate();
-    test_ret += test_xmlTextReaderRelaxNGValidateCtxt();
-    test_ret += test_xmlTextReaderSchemaValidate();
-    test_ret += test_xmlTextReaderSchemaValidateCtxt();
-    test_ret += test_xmlTextReaderSetErrorHandler();
-    test_ret += test_xmlTextReaderSetMaxAmplification();
-    test_ret += test_xmlTextReaderSetParserProp();
-    test_ret += test_xmlTextReaderSetResourceLoader();
-    test_ret += test_xmlTextReaderSetSchema();
-    test_ret += test_xmlTextReaderSetStructuredErrorHandler();
-    test_ret += test_xmlTextReaderSetup();
-    test_ret += test_xmlTextReaderStandalone();
-    test_ret += test_xmlTextReaderValue();
-    test_ret += test_xmlTextReaderXmlLang();
-
-    if (test_ret != 0)
-	printf("Module xmlreader: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_REGEXP_ENABLED
-
-#define gen_nb_xmlRegExecCtxtPtr 1
-#define gen_xmlRegExecCtxtPtr(no, nr) NULL
-#define des_xmlRegExecCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlRegExecErrInfo(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegExecCtxtPtr exec; /* a regexp execution context generating an error */
-    int n_exec;
-    const xmlChar ** string; /* return value for the error string */
-    int n_string;
-    int * nbval; /* pointer to the number of accepted values IN/OUT */
-    int n_nbval;
-    int * nbneg; /* return number of negative transitions */
-    int n_nbneg;
-    xmlChar ** values; /* pointer to the array of acceptable values */
-    int n_values;
-    int * terminal; /* return value if this was a terminal state */
-    int n_terminal;
-
-    for (n_exec = 0;n_exec < gen_nb_xmlRegExecCtxtPtr;n_exec++) {
-    for (n_string = 0;n_string < gen_nb_const_xmlChar_ptr_ptr;n_string++) {
-    for (n_nbval = 0;n_nbval < gen_nb_int_ptr;n_nbval++) {
-    for (n_nbneg = 0;n_nbneg < gen_nb_int_ptr;n_nbneg++) {
-    for (n_values = 0;n_values < gen_nb_xmlChar_ptr_ptr;n_values++) {
-    for (n_terminal = 0;n_terminal < gen_nb_int_ptr;n_terminal++) {
-        mem_base = xmlMemBlocks();
-        exec = gen_xmlRegExecCtxtPtr(n_exec, 0);
-        string = gen_const_xmlChar_ptr_ptr(n_string, 1);
-        nbval = gen_int_ptr(n_nbval, 2);
-        nbneg = gen_int_ptr(n_nbneg, 3);
-        values = gen_xmlChar_ptr_ptr(n_values, 4);
-        terminal = gen_int_ptr(n_terminal, 5);
-
-        ret_val = xmlRegExecErrInfo(exec, string, nbval, nbneg, values, terminal);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegExecCtxtPtr(n_exec, exec, 0);
-        des_const_xmlChar_ptr_ptr(n_string, string, 1);
-        des_int_ptr(n_nbval, nbval, 2);
-        des_int_ptr(n_nbneg, nbneg, 3);
-        des_xmlChar_ptr_ptr(n_values, values, 4);
-        des_int_ptr(n_terminal, terminal, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegExecErrInfo",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_exec);
-            printf(" %d", n_string);
-            printf(" %d", n_nbval);
-            printf(" %d", n_nbneg);
-            printf(" %d", n_values);
-            printf(" %d", n_terminal);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegExecNextValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegExecCtxtPtr exec; /* a regexp execution context */
-    int n_exec;
-    int * nbval; /* pointer to the number of accepted values IN/OUT */
-    int n_nbval;
-    int * nbneg; /* return number of negative transitions */
-    int n_nbneg;
-    xmlChar ** values; /* pointer to the array of acceptable values */
-    int n_values;
-    int * terminal; /* return value if this was a terminal state */
-    int n_terminal;
-
-    for (n_exec = 0;n_exec < gen_nb_xmlRegExecCtxtPtr;n_exec++) {
-    for (n_nbval = 0;n_nbval < gen_nb_int_ptr;n_nbval++) {
-    for (n_nbneg = 0;n_nbneg < gen_nb_int_ptr;n_nbneg++) {
-    for (n_values = 0;n_values < gen_nb_xmlChar_ptr_ptr;n_values++) {
-    for (n_terminal = 0;n_terminal < gen_nb_int_ptr;n_terminal++) {
-        mem_base = xmlMemBlocks();
-        exec = gen_xmlRegExecCtxtPtr(n_exec, 0);
-        nbval = gen_int_ptr(n_nbval, 1);
-        nbneg = gen_int_ptr(n_nbneg, 2);
-        values = gen_xmlChar_ptr_ptr(n_values, 3);
-        terminal = gen_int_ptr(n_terminal, 4);
-
-        ret_val = xmlRegExecNextValues(exec, nbval, nbneg, values, terminal);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegExecCtxtPtr(n_exec, exec, 0);
-        des_int_ptr(n_nbval, nbval, 1);
-        des_int_ptr(n_nbneg, nbneg, 2);
-        des_xmlChar_ptr_ptr(n_values, values, 3);
-        des_int_ptr(n_terminal, terminal, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegExecNextValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_exec);
-            printf(" %d", n_nbval);
-            printf(" %d", n_nbneg);
-            printf(" %d", n_values);
-            printf(" %d", n_terminal);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegExecPushString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegExecCtxtPtr exec; /* a regexp execution context or NULL to indicate the end */
-    int n_exec;
-    const xmlChar * value; /* a string token input */
-    int n_value;
-    void * data; /* data associated to the token to reuse in callbacks */
-    int n_data;
-
-    for (n_exec = 0;n_exec < gen_nb_xmlRegExecCtxtPtr;n_exec++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        exec = gen_xmlRegExecCtxtPtr(n_exec, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        data = gen_userdata(n_data, 2);
-
-        ret_val = xmlRegExecPushString(exec, value, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegExecCtxtPtr(n_exec, exec, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_userdata(n_data, data, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegExecPushString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_exec);
-            printf(" %d", n_value);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegExecPushString2(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegExecCtxtPtr exec; /* a regexp execution context or NULL to indicate the end */
-    int n_exec;
-    const xmlChar * value; /* the first string token input */
-    int n_value;
-    const xmlChar * value2; /* the second string token input */
-    int n_value2;
-    void * data; /* data associated to the token to reuse in callbacks */
-    int n_data;
-
-    for (n_exec = 0;n_exec < gen_nb_xmlRegExecCtxtPtr;n_exec++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_value2 = 0;n_value2 < gen_nb_const_xmlChar_ptr;n_value2++) {
-    for (n_data = 0;n_data < gen_nb_userdata;n_data++) {
-        mem_base = xmlMemBlocks();
-        exec = gen_xmlRegExecCtxtPtr(n_exec, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        value2 = gen_const_xmlChar_ptr(n_value2, 2);
-        data = gen_userdata(n_data, 3);
-
-        ret_val = xmlRegExecPushString2(exec, value, value2, data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegExecCtxtPtr(n_exec, exec, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_const_xmlChar_ptr(n_value2, value2, 2);
-        des_userdata(n_data, data, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegExecPushString2",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_exec);
-            printf(" %d", n_value);
-            printf(" %d", n_value2);
-            printf(" %d", n_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegNewExecCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegexpCompile(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_REGEXP_ENABLED
-
-#define gen_nb_xmlRegexpPtr 1
-#define gen_xmlRegexpPtr(no, nr) NULL
-#define des_xmlRegexpPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlRegexpExec(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegexpPtr comp; /* the compiled regular expression */
-    int n_comp;
-    const xmlChar * content; /* the value to check against the regular expression */
-    int n_content;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlRegexpPtr;n_comp++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlRegexpPtr(n_comp, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlRegexpExec(comp, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegexpPtr(n_comp, comp, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegexpExec",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegexpIsDeterminist(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlRegexpPtr comp; /* the compiled regular expression */
-    int n_comp;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlRegexpPtr;n_comp++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlRegexpPtr(n_comp, 0);
-
-        ret_val = xmlRegexpIsDeterminist(comp);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlRegexpPtr(n_comp, comp, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegexpIsDeterminist",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlRegexpPrint(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_REGEXP_ENABLED)
-    int mem_base;
-    FILE * output; /* the file for the output debug */
-    int n_output;
-    xmlRegexpPtr regexp; /* the compiled regexp */
-    int n_regexp;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_regexp = 0;n_regexp < gen_nb_xmlRegexpPtr;n_regexp++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        regexp = gen_xmlRegexpPtr(n_regexp, 1);
-
-        xmlRegexpPrint(output, regexp);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlRegexpPtr(n_regexp, regexp, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlRegexpPrint",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_regexp);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlregexp(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlregexp : 7 of 11 functions ...\n");
-    test_ret += test_xmlRegExecErrInfo();
-    test_ret += test_xmlRegExecNextValues();
-    test_ret += test_xmlRegExecPushString();
-    test_ret += test_xmlRegExecPushString2();
-    test_ret += test_xmlRegNewExecCtxt();
-    test_ret += test_xmlRegexpCompile();
-    test_ret += test_xmlRegexpExec();
-    test_ret += test_xmlRegexpIsDeterminist();
-    test_ret += test_xmlRegexpPrint();
-
-    if (test_ret != 0)
-	printf("Module xmlregexp: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_OUTPUT_ENABLED
-
-#define gen_nb_xmlSaveCtxtPtr 1
-#define gen_xmlSaveCtxtPtr(no, nr) NULL
-#define des_xmlSaveCtxtPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSaveClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSaveCtxtPtr ctxt; /* a document saving context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSaveClose(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    long ret_val;
-    xmlSaveCtxtPtr ctxt; /* a document saving context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a document */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlSaveDoc(ctxt, doc);
-        desret_long(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFinish(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    xmlParserErrors ret_val;
-    xmlSaveCtxtPtr ctxt; /* a document saving context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSaveFinish(ctxt);
-        desret_xmlParserErrors(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFinish",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveFlush(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSaveCtxtPtr ctxt; /* a document saving context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSaveFlush(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveFlush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveSetAttrEscape(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveSetEscape(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveSetIndentString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSaveCtxtPtr ctxt; /* save context */
-    int n_ctxt;
-    const char * indent; /* indent string */
-    int n_indent;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-    for (n_indent = 0;n_indent < gen_nb_const_char_ptr;n_indent++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-        indent = gen_const_char_ptr(n_indent, 1);
-
-        ret_val = xmlSaveSetIndentString(ctxt, indent);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        des_const_char_ptr(n_indent, indent, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveSetIndentString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_indent);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveToBuffer(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveToFd(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveToFilename(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSaveTree(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    long ret_val;
-    xmlSaveCtxtPtr ctxt; /* a document saving context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the top node of the subtree to save */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSaveCtxtPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSaveCtxtPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlSaveTree(ctxt, cur);
-        desret_long(ret_val);
-        call_tests++;
-        des_xmlSaveCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSaveTree",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefIndentTreeOutput(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefIndentTreeOutput(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefIndentTreeOutput",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefSaveNoEmptyTags(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    int ret_val;
-    int v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_int;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_int(n_v, 0);
-
-        ret_val = xmlThrDefSaveNoEmptyTags(v);
-        desret_int(ret_val);
-        call_tests++;
-        des_int(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefSaveNoEmptyTags",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlThrDefTreeIndentString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_OUTPUT_ENABLED)
-    int mem_base;
-    const char * ret_val;
-    const char * v; /*  */
-    int n_v;
-
-    for (n_v = 0;n_v < gen_nb_const_char_ptr;n_v++) {
-        mem_base = xmlMemBlocks();
-        v = gen_const_char_ptr(n_v, 0);
-
-        ret_val = xmlThrDefTreeIndentString(v);
-        desret_const_char_ptr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_v, v, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlThrDefTreeIndentString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_v);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlsave(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlsave : 9 of 15 functions ...\n");
-    test_ret += test_xmlSaveClose();
-    test_ret += test_xmlSaveDoc();
-    test_ret += test_xmlSaveFinish();
-    test_ret += test_xmlSaveFlush();
-    test_ret += test_xmlSaveSetAttrEscape();
-    test_ret += test_xmlSaveSetEscape();
-    test_ret += test_xmlSaveSetIndentString();
-    test_ret += test_xmlSaveToBuffer();
-    test_ret += test_xmlSaveToFd();
-    test_ret += test_xmlSaveToFilename();
-    test_ret += test_xmlSaveTree();
-    test_ret += test_xmlThrDefIndentTreeOutput();
-    test_ret += test_xmlThrDefSaveNoEmptyTags();
-    test_ret += test_xmlThrDefTreeIndentString();
-
-    if (test_ret != 0)
-	printf("Module xmlsave: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlSchemaDump(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the file output */
-    int n_output;
-    xmlSchemaPtr schema; /* a schema structure */
-    int n_schema;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_schema = 0;n_schema < gen_nb_xmlSchemaPtr;n_schema++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        schema = gen_xmlSchemaPtr(n_schema, 1);
-
-        xmlSchemaDump(output, schema);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlSchemaPtr(n_schema, schema, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaDump",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_schema);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaParserCtxtPtr 1
-#define gen_xmlSchemaParserCtxtPtr(no, nr) NULL
-#define des_xmlSchemaParserCtxtPtr(no, val, nr)
-#endif
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaValidityErrorFunc_ptr 1
-#define gen_xmlSchemaValidityErrorFunc_ptr(no, nr) NULL
-#define des_xmlSchemaValidityErrorFunc_ptr(no, val, nr)
-#endif
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaValidityWarningFunc_ptr 1
-#define gen_xmlSchemaValidityWarningFunc_ptr(no, nr) NULL
-#define des_xmlSchemaValidityWarningFunc_ptr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchemaGetParserErrors(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaParserCtxtPtr ctxt; /* a XMl-Schema parser context */
-    int n_ctxt;
-    xmlSchemaValidityErrorFunc * err; /* the error callback result */
-    int n_err;
-    xmlSchemaValidityWarningFunc * warn; /* the warning callback result */
-    int n_warn;
-    void ** ctx; /* contextual data for the callbacks result */
-    int n_ctx;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaParserCtxtPtr;n_ctxt++) {
-    for (n_err = 0;n_err < gen_nb_xmlSchemaValidityErrorFunc_ptr;n_err++) {
-    for (n_warn = 0;n_warn < gen_nb_xmlSchemaValidityWarningFunc_ptr;n_warn++) {
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaParserCtxtPtr(n_ctxt, 0);
-        err = gen_xmlSchemaValidityErrorFunc_ptr(n_err, 1);
-        warn = gen_xmlSchemaValidityWarningFunc_ptr(n_warn, 2);
-        ctx = gen_void_ptr_ptr(n_ctx, 3);
-
-        ret_val = xmlSchemaGetParserErrors(ctxt, err, warn, ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlSchemaValidityErrorFunc_ptr(n_err, err, 1);
-        des_xmlSchemaValidityWarningFunc_ptr(n_warn, warn, 2);
-        des_void_ptr_ptr(n_ctx, ctx, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetParserErrors",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_err);
-            printf(" %d", n_warn);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetValidErrors(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a XML-Schema validation context */
-    int n_ctxt;
-    xmlSchemaValidityErrorFunc * err; /* the error function result */
-    int n_err;
-    xmlSchemaValidityWarningFunc * warn; /* the warning function result */
-    int n_warn;
-    void ** ctx; /* the functions context result */
-    int n_ctx;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_err = 0;n_err < gen_nb_xmlSchemaValidityErrorFunc_ptr;n_err++) {
-    for (n_warn = 0;n_warn < gen_nb_xmlSchemaValidityWarningFunc_ptr;n_warn++) {
-    for (n_ctx = 0;n_ctx < gen_nb_void_ptr_ptr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        err = gen_xmlSchemaValidityErrorFunc_ptr(n_err, 1);
-        warn = gen_xmlSchemaValidityWarningFunc_ptr(n_warn, 2);
-        ctx = gen_void_ptr_ptr(n_ctx, 3);
-
-        ret_val = xmlSchemaGetValidErrors(ctxt, err, warn, ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlSchemaValidityErrorFunc_ptr(n_err, err, 1);
-        des_xmlSchemaValidityWarningFunc_ptr(n_warn, warn, 2);
-        des_void_ptr_ptr(n_ctx, ctx, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetValidErrors",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_err);
-            printf(" %d", n_warn);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaIsValid(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* the schema validation context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSchemaIsValid(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaIsValid",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewDocParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaParserCtxtPtr ret_val;
-    xmlDocPtr doc; /* a preparsed document tree */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlSchemaNewDocParserCtxt(doc);
-        desret_xmlSchemaParserCtxtPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaNewDocParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewMemParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaParserCtxtPtr ret_val;
-    const char * buffer; /* a pointer to a char array containing the schemas */
-    int n_buffer;
-    int size; /* the size of the array */
-    int n_size;
-
-    for (n_buffer = 0;n_buffer < gen_nb_const_char_ptr;n_buffer++) {
-    for (n_size = 0;n_size < gen_nb_int;n_size++) {
-        mem_base = xmlMemBlocks();
-        buffer = gen_const_char_ptr(n_buffer, 0);
-        size = gen_int(n_size, 1);
-        if ((buffer != NULL) &&
-            (size > xmlStrlen(BAD_CAST buffer)))
-            size = 0;
-
-        ret_val = xmlSchemaNewMemParserCtxt(buffer, size);
-        desret_xmlSchemaParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_buffer, buffer, 0);
-        des_int(n_size, size, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaNewMemParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buffer);
-            printf(" %d", n_size);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaParserCtxtPtr ret_val;
-    const char * URL; /* the location of the schema */
-    int n_URL;
-
-    for (n_URL = 0;n_URL < gen_nb_const_char_ptr;n_URL++) {
-        mem_base = xmlMemBlocks();
-        URL = gen_const_char_ptr(n_URL, 0);
-
-        ret_val = xmlSchemaNewParserCtxt(URL);
-        desret_xmlSchemaParserCtxtPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_URL, URL, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaNewParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_URL);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewValidCtxt(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaParse(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSAXPlug(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaSAXPlugPtr 1
-#define gen_xmlSchemaSAXPlugPtr(no, nr) NULL
-#define des_xmlSchemaSAXPlugPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchemaSAXUnplug(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaSAXPlugPtr plug; /* a data structure returned by xmlSchemaSAXPlug */
-    int n_plug;
-
-    for (n_plug = 0;n_plug < gen_nb_xmlSchemaSAXPlugPtr;n_plug++) {
-        mem_base = xmlMemBlocks();
-        plug = gen_xmlSchemaSAXPlugPtr(n_plug, 0);
-
-        ret_val = xmlSchemaSAXUnplug(plug);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaSAXPlugPtr(n_plug, plug, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaSAXUnplug",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_plug);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetParserErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetParserStructuredErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetResourceLoader(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetValidErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetValidOptions(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-    int options; /* a combination of xmlSchemaValidOption */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        options = gen_int(n_options, 1);
-
-        ret_val = xmlSchemaSetValidOptions(ctxt, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_options, options, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaSetValidOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaSetValidStructuredErrors(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidCtxtGetOptions(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSchemaValidCtxtGetOptions(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidCtxtGetOptions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidCtxtGetParserCtxt(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlParserCtxtPtr ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-
-        ret_val = xmlSchemaValidCtxtGetParserCtxt(ctxt);
-        desret_xmlParserCtxtPtr(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidCtxtGetParserCtxt",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateDoc(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-    xmlDocPtr doc; /* a parsed document tree */
-    int n_doc;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        doc = gen_xmlDocPtr(n_doc, 1);
-
-        ret_val = xmlSchemaValidateDoc(ctxt, doc);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlDocPtr(n_doc, doc, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateDoc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateFile(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-    const char * filename; /* the URI of the instance */
-    int n_filename;
-    int options; /* a future set of options, currently unused */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        filename = gen_filepath(n_filename, 1);
-        options = gen_int(n_options, 2);
-
-        ret_val = xmlSchemaValidateFile(ctxt, filename, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_filepath(n_filename, filename, 1);
-        des_int(n_options, options, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateFile",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_filename);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateOneElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-    xmlNodePtr elem; /* an element node */
-    int n_elem;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_elem = 0;n_elem < gen_nb_xmlNodePtr;n_elem++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        elem = gen_xmlNodePtr(n_elem, 1);
-
-        ret_val = xmlSchemaValidateOneElement(ctxt, elem);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_elem, elem, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateOneElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_elem);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateSetFilename(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaValidCtxtPtr vctxt; /* the schema validation context */
-    int n_vctxt;
-    const char * filename; /* the file name */
-    int n_filename;
-
-    for (n_vctxt = 0;n_vctxt < gen_nb_xmlSchemaValidCtxtPtr;n_vctxt++) {
-    for (n_filename = 0;n_filename < gen_nb_filepath;n_filename++) {
-        mem_base = xmlMemBlocks();
-        vctxt = gen_xmlSchemaValidCtxtPtr(n_vctxt, 0);
-        filename = gen_filepath(n_filename, 1);
-
-        xmlSchemaValidateSetFilename(vctxt, filename);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_vctxt, vctxt, 0);
-        des_filepath(n_filename, filename, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateSetFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_vctxt);
-            printf(" %d", n_filename);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateSetLocator(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateStream(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValidCtxtPtr ctxt; /* a schema validation context */
-    int n_ctxt;
-    xmlParserInputBufferPtr input; /* the input to use for reading the data */
-    int n_input;
-    xmlCharEncoding enc; /* an optional encoding information */
-    int n_enc;
-    const xmlSAXHandler * sax; /* a SAX handler for the resulting events */
-    int n_sax;
-    void * user_data; /* the context to provide to the SAX handler. */
-    int n_user_data;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlSchemaValidCtxtPtr;n_ctxt++) {
-    for (n_input = 0;n_input < gen_nb_xmlParserInputBufferPtr;n_input++) {
-    for (n_enc = 0;n_enc < gen_nb_xmlCharEncoding;n_enc++) {
-    for (n_sax = 0;n_sax < gen_nb_const_xmlSAXHandler_ptr;n_sax++) {
-    for (n_user_data = 0;n_user_data < gen_nb_userdata;n_user_data++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlSchemaValidCtxtPtr(n_ctxt, 0);
-        input = gen_xmlParserInputBufferPtr(n_input, 1);
-        enc = gen_xmlCharEncoding(n_enc, 2);
-        sax = gen_const_xmlSAXHandler_ptr(n_sax, 3);
-        user_data = gen_userdata(n_user_data, 4);
-
-        ret_val = xmlSchemaValidateStream(ctxt, input, enc, sax, user_data);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValidCtxtPtr(n_ctxt, ctxt, 0);
-        des_xmlParserInputBufferPtr(n_input, input, 1);
-        des_xmlCharEncoding(n_enc, enc, 2);
-        des_const_xmlSAXHandler_ptr(n_sax, sax, 3);
-        des_userdata(n_user_data, user_data, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateStream",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_input);
-            printf(" %d", n_enc);
-            printf(" %d", n_sax);
-            printf(" %d", n_user_data);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlschemas(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlschemas : 16 of 28 functions ...\n");
-    test_ret += test_xmlSchemaDump();
-    test_ret += test_xmlSchemaGetParserErrors();
-    test_ret += test_xmlSchemaGetValidErrors();
-    test_ret += test_xmlSchemaIsValid();
-    test_ret += test_xmlSchemaNewDocParserCtxt();
-    test_ret += test_xmlSchemaNewMemParserCtxt();
-    test_ret += test_xmlSchemaNewParserCtxt();
-    test_ret += test_xmlSchemaNewValidCtxt();
-    test_ret += test_xmlSchemaParse();
-    test_ret += test_xmlSchemaSAXPlug();
-    test_ret += test_xmlSchemaSAXUnplug();
-    test_ret += test_xmlSchemaSetParserErrors();
-    test_ret += test_xmlSchemaSetParserStructuredErrors();
-    test_ret += test_xmlSchemaSetResourceLoader();
-    test_ret += test_xmlSchemaSetValidErrors();
-    test_ret += test_xmlSchemaSetValidOptions();
-    test_ret += test_xmlSchemaSetValidStructuredErrors();
-    test_ret += test_xmlSchemaValidCtxtGetOptions();
-    test_ret += test_xmlSchemaValidCtxtGetParserCtxt();
-    test_ret += test_xmlSchemaValidateDoc();
-    test_ret += test_xmlSchemaValidateFile();
-    test_ret += test_xmlSchemaValidateOneElement();
-    test_ret += test_xmlSchemaValidateSetFilename();
-    test_ret += test_xmlSchemaValidateSetLocator();
-    test_ret += test_xmlSchemaValidateStream();
-
-    if (test_ret != 0)
-	printf("Module xmlschemas: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaFacetPtr 1
-#define gen_xmlSchemaFacetPtr(no, nr) NULL
-#define des_xmlSchemaFacetPtr(no, val, nr)
-#endif
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaTypePtr 1
-#define gen_xmlSchemaTypePtr(no, nr) NULL
-#define des_xmlSchemaTypePtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchemaCheckFacet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaFacetPtr facet; /* the facet */
-    int n_facet;
-    xmlSchemaTypePtr typeDecl; /* the schema type definition */
-    int n_typeDecl;
-    xmlSchemaParserCtxtPtr pctxt; /* the schema parser context or NULL */
-    int n_pctxt;
-    const xmlChar * name; /* the optional name of the type */
-    int n_name;
-
-    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
-    for (n_typeDecl = 0;n_typeDecl < gen_nb_xmlSchemaTypePtr;n_typeDecl++) {
-    for (n_pctxt = 0;n_pctxt < gen_nb_xmlSchemaParserCtxtPtr;n_pctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        facet = gen_xmlSchemaFacetPtr(n_facet, 0);
-        typeDecl = gen_xmlSchemaTypePtr(n_typeDecl, 1);
-        pctxt = gen_xmlSchemaParserCtxtPtr(n_pctxt, 2);
-        name = gen_const_xmlChar_ptr(n_name, 3);
-
-        ret_val = xmlSchemaCheckFacet(facet, typeDecl, pctxt, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaFacetPtr(n_facet, facet, 0);
-        des_xmlSchemaTypePtr(n_typeDecl, typeDecl, 1);
-        des_xmlSchemaParserCtxtPtr(n_pctxt, pctxt, 2);
-        des_const_xmlChar_ptr(n_name, name, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaCheckFacet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_facet);
-            printf(" %d", n_typeDecl);
-            printf(" %d", n_pctxt);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaCleanupTypes(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-
-
-        xmlSchemaCleanupTypes();
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaCollapseString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * value; /* a value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlSchemaCollapseString(value);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaCollapseString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaValPtr 1
-#define gen_xmlSchemaValPtr(no, nr) NULL
-#define des_xmlSchemaValPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchemaCompareValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr x; /* a first value */
-    int n_x;
-    xmlSchemaValPtr y; /* a second value */
-    int n_y;
-
-    for (n_x = 0;n_x < gen_nb_xmlSchemaValPtr;n_x++) {
-    for (n_y = 0;n_y < gen_nb_xmlSchemaValPtr;n_y++) {
-        mem_base = xmlMemBlocks();
-        x = gen_xmlSchemaValPtr(n_x, 0);
-        y = gen_xmlSchemaValPtr(n_y, 1);
-
-        ret_val = xmlSchemaCompareValues(x, y);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_x, x, 0);
-        des_xmlSchemaValPtr(n_y, y, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaCompareValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_x);
-            printf(" %d", n_y);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaCompareValuesWhtsp(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr x; /* a first value */
-    int n_x;
-    xmlSchemaWhitespaceValueType xws; /* the whitespace value of x */
-    int n_xws;
-    xmlSchemaValPtr y; /* a second value */
-    int n_y;
-    xmlSchemaWhitespaceValueType yws; /* the whitespace value of y */
-    int n_yws;
-
-    for (n_x = 0;n_x < gen_nb_xmlSchemaValPtr;n_x++) {
-    for (n_xws = 0;n_xws < gen_nb_xmlSchemaWhitespaceValueType;n_xws++) {
-    for (n_y = 0;n_y < gen_nb_xmlSchemaValPtr;n_y++) {
-    for (n_yws = 0;n_yws < gen_nb_xmlSchemaWhitespaceValueType;n_yws++) {
-        mem_base = xmlMemBlocks();
-        x = gen_xmlSchemaValPtr(n_x, 0);
-        xws = gen_xmlSchemaWhitespaceValueType(n_xws, 1);
-        y = gen_xmlSchemaValPtr(n_y, 2);
-        yws = gen_xmlSchemaWhitespaceValueType(n_yws, 3);
-
-        ret_val = xmlSchemaCompareValuesWhtsp(x, xws, y, yws);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_x, x, 0);
-        des_xmlSchemaWhitespaceValueType(n_xws, xws, 1);
-        des_xmlSchemaValPtr(n_y, y, 2);
-        des_xmlSchemaWhitespaceValueType(n_yws, yws, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaCompareValuesWhtsp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_x);
-            printf(" %d", n_xws);
-            printf(" %d", n_y);
-            printf(" %d", n_yws);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaCopyValue(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetBuiltInListSimpleTypeItemType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaTypePtr ret_val;
-    xmlSchemaTypePtr type; /* the built-in simple type. */
-    int n_type;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-
-        ret_val = xmlSchemaGetBuiltInListSimpleTypeItemType(type);
-        desret_xmlSchemaTypePtr(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetBuiltInListSimpleTypeItemType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetBuiltInType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    xmlSchemaTypePtr ret_val;
-    xmlSchemaValType type; /* the type of the built in type */
-    int n_type;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaValType;n_type++) {
-        type = gen_xmlSchemaValType(n_type, 0);
-
-        ret_val = xmlSchemaGetBuiltInType(type);
-        desret_xmlSchemaTypePtr(ret_val);
-        call_tests++;
-        des_xmlSchemaValType(n_type, type, 0);
-        xmlResetLastError();
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetCanonValue(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr val; /* the precomputed value */
-    int n_val;
-    const xmlChar ** retValue; /* the returned value */
-    int n_retValue;
-
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
-    for (n_retValue = 0;n_retValue < gen_nb_const_xmlChar_ptr_ptr;n_retValue++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlSchemaValPtr(n_val, 0);
-        retValue = gen_const_xmlChar_ptr_ptr(n_retValue, 1);
-
-        ret_val = xmlSchemaGetCanonValue(val, retValue);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_val, val, 0);
-        des_const_xmlChar_ptr_ptr(n_retValue, retValue, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetCanonValue",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf(" %d", n_retValue);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetCanonValueWhtsp(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr val; /* the precomputed value */
-    int n_val;
-    const xmlChar ** retValue; /* the returned value */
-    int n_retValue;
-    xmlSchemaWhitespaceValueType ws; /* the whitespace type of the value */
-    int n_ws;
-
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
-    for (n_retValue = 0;n_retValue < gen_nb_const_xmlChar_ptr_ptr;n_retValue++) {
-    for (n_ws = 0;n_ws < gen_nb_xmlSchemaWhitespaceValueType;n_ws++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlSchemaValPtr(n_val, 0);
-        retValue = gen_const_xmlChar_ptr_ptr(n_retValue, 1);
-        ws = gen_xmlSchemaWhitespaceValueType(n_ws, 2);
-
-        ret_val = xmlSchemaGetCanonValueWhtsp(val, retValue, ws);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_val, val, 0);
-        des_const_xmlChar_ptr_ptr(n_retValue, retValue, 1);
-        des_xmlSchemaWhitespaceValueType(n_ws, ws, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetCanonValueWhtsp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf(" %d", n_retValue);
-            printf(" %d", n_ws);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetFacetValueAsULong(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    unsigned long ret_val;
-    xmlSchemaFacetPtr facet; /* an schemas type facet */
-    int n_facet;
-
-    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
-        mem_base = xmlMemBlocks();
-        facet = gen_xmlSchemaFacetPtr(n_facet, 0);
-
-        ret_val = xmlSchemaGetFacetValueAsULong(facet);
-        desret_unsigned_long(ret_val);
-        call_tests++;
-        des_xmlSchemaFacetPtr(n_facet, facet, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetFacetValueAsULong",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_facet);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaGetPredefinedType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlSchemaTypePtr ret_val;
-    const xmlChar * name; /* the type name */
-    int n_name;
-    const xmlChar * ns; /* the URI of the namespace usually "http://www.w3.org/2001/XMLSchema" */
-    int n_ns;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns = 0;n_ns < gen_nb_const_xmlChar_ptr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-        ns = gen_const_xmlChar_ptr(n_ns, 1);
-
-        ret_val = xmlSchemaGetPredefinedType(name, ns);
-        desret_xmlSchemaTypePtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        des_const_xmlChar_ptr(n_ns, ns, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaGetPredefinedType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-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;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int ret_val;
-
-
-        ret_val = xmlSchemaInitTypes();
-        desret_int(ret_val);
-        call_tests++;
-        xmlResetLastError();
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaIsBuiltInTypeFacet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr type; /* the built-in type */
-    int n_type;
-    int facetType; /* the facet type */
-    int n_facetType;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-    for (n_facetType = 0;n_facetType < gen_nb_int;n_facetType++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-        facetType = gen_int(n_facetType, 1);
-
-        ret_val = xmlSchemaIsBuiltInTypeFacet(type, facetType);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        des_int(n_facetType, facetType, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaIsBuiltInTypeFacet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_facetType);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewFacet(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewNOTATIONValue(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewQNameValue(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaNewStringValue(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_SCHEMAS_ENABLED
-
-#define gen_nb_xmlSchemaValPtr_ptr 1
-#define gen_xmlSchemaValPtr_ptr(no, nr) NULL
-#define des_xmlSchemaValPtr_ptr(no, val, nr)
-#endif
-
-
-static int
-test_xmlSchemaValPredefTypeNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr type; /* the predefined type */
-    int n_type;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    xmlSchemaValPtr * val; /* the return computed value */
-    int n_val;
-    xmlNodePtr node; /* the node containing the value */
-    int n_node;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr_ptr;n_val++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        val = gen_xmlSchemaValPtr_ptr(n_val, 2);
-        node = gen_xmlNodePtr(n_node, 3);
-
-        ret_val = xmlSchemaValPredefTypeNode(type, value, val, node);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_xmlSchemaValPtr_ptr(n_val, val, 2);
-        des_xmlNodePtr(n_node, node, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValPredefTypeNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_value);
-            printf(" %d", n_val);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValPredefTypeNodeNoNorm(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr type; /* the predefined type */
-    int n_type;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    xmlSchemaValPtr * val; /* the return computed value */
-    int n_val;
-    xmlNodePtr node; /* the node containing the value */
-    int n_node;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr_ptr;n_val++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        val = gen_xmlSchemaValPtr_ptr(n_val, 2);
-        node = gen_xmlNodePtr(n_node, 3);
-
-        ret_val = xmlSchemaValPredefTypeNodeNoNorm(type, value, val, node);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_xmlSchemaValPtr_ptr(n_val, val, 2);
-        des_xmlNodePtr(n_node, node, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValPredefTypeNodeNoNorm",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_value);
-            printf(" %d", n_val);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidateFacet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr base; /* the base type */
-    int n_base;
-    xmlSchemaFacetPtr facet; /* the facet to check */
-    int n_facet;
-    const xmlChar * value; /* the lexical repr of the value to validate */
-    int n_value;
-    xmlSchemaValPtr val; /* the precomputed value */
-    int n_val;
-
-    for (n_base = 0;n_base < gen_nb_xmlSchemaTypePtr;n_base++) {
-    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        base = gen_xmlSchemaTypePtr(n_base, 0);
-        facet = gen_xmlSchemaFacetPtr(n_facet, 1);
-        value = gen_const_xmlChar_ptr(n_value, 2);
-        val = gen_xmlSchemaValPtr(n_val, 3);
-
-        ret_val = xmlSchemaValidateFacet(base, facet, value, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_base, base, 0);
-        des_xmlSchemaFacetPtr(n_facet, facet, 1);
-        des_const_xmlChar_ptr(n_value, value, 2);
-        des_xmlSchemaValPtr(n_val, val, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateFacet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_base);
-            printf(" %d", n_facet);
-            printf(" %d", n_value);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-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;
-    const 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, 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, 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;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr type; /* the built-in type */
-    int n_type;
-    xmlSchemaFacetPtr facet; /* the facet to check */
-    int n_facet;
-    const 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;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
-    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++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-        facet = gen_xmlSchemaFacetPtr(n_facet, 1);
-        value = gen_const_xmlChar_ptr(n_value, 2);
-        val = gen_xmlSchemaValPtr(n_val, 3);
-        length = gen_unsigned_long_ptr(n_length, 4);
-
-        ret_val = xmlSchemaValidateLengthFacet(type, facet, value, val, length);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        des_xmlSchemaFacetPtr(n_facet, facet, 1);
-        des_const_xmlChar_ptr(n_value, value, 2);
-        des_xmlSchemaValPtr(n_val, val, 3);
-        des_unsigned_long_ptr(n_length, length, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateLengthFacet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_facet);
-            printf(" %d", n_value);
-            printf(" %d", n_val);
-            printf(" %d", n_length);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-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;
-    const 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, 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, 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;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaFacetPtr facet; /* the facet to check */
-    int n_facet;
-    const xmlChar * value; /* the lexical repr of the value to validate */
-    int n_value;
-    unsigned long actualLen; /* the number of list items */
-    int n_actualLen;
-    unsigned long * expectedLen; /* the resulting expected number of list items */
-    int n_expectedLen;
-
-    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_actualLen = 0;n_actualLen < gen_nb_unsigned_long;n_actualLen++) {
-    for (n_expectedLen = 0;n_expectedLen < gen_nb_unsigned_long_ptr;n_expectedLen++) {
-        mem_base = xmlMemBlocks();
-        facet = gen_xmlSchemaFacetPtr(n_facet, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        actualLen = gen_unsigned_long(n_actualLen, 2);
-        expectedLen = gen_unsigned_long_ptr(n_expectedLen, 3);
-
-        ret_val = xmlSchemaValidateListSimpleTypeFacet(facet, value, actualLen, expectedLen);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaFacetPtr(n_facet, facet, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_unsigned_long(n_actualLen, actualLen, 2);
-        des_unsigned_long_ptr(n_expectedLen, expectedLen, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidateListSimpleTypeFacet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_facet);
-            printf(" %d", n_value);
-            printf(" %d", n_actualLen);
-            printf(" %d", n_expectedLen);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValidatePredefinedType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaTypePtr type; /* the predefined type */
-    int n_type;
-    const xmlChar * value; /* the value to check */
-    int n_value;
-    xmlSchemaValPtr * val; /* the return computed value */
-    int n_val;
-
-    for (n_type = 0;n_type < gen_nb_xmlSchemaTypePtr;n_type++) {
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        type = gen_xmlSchemaTypePtr(n_type, 0);
-        value = gen_const_xmlChar_ptr(n_value, 1);
-        val = gen_xmlSchemaValPtr_ptr(n_val, 2);
-
-        ret_val = xmlSchemaValidatePredefinedType(type, value, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaTypePtr(n_type, type, 0);
-        des_const_xmlChar_ptr(n_value, value, 1);
-        des_xmlSchemaValPtr_ptr(n_val, val, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValidatePredefinedType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_type);
-            printf(" %d", n_value);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValueAppend(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr prev; /* the value */
-    int n_prev;
-    xmlSchemaValPtr cur; /* the value to be appended */
-    int n_cur;
-
-    for (n_prev = 0;n_prev < gen_nb_xmlSchemaValPtr;n_prev++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlSchemaValPtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        prev = gen_xmlSchemaValPtr(n_prev, 0);
-        cur = gen_xmlSchemaValPtr(n_cur, 1);
-
-        ret_val = xmlSchemaValueAppend(prev, cur);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_prev, prev, 0);
-        des_xmlSchemaValPtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValueAppend",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_prev);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValueGetAsBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlSchemaValPtr val; /* the 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 = xmlSchemaValueGetAsBoolean(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValueGetAsBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValueGetAsString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlSchemaValPtr val; /* the 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 = xmlSchemaValueGetAsString(val);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlSchemaValPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaValueGetAsString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaValueGetNext(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlSchemaWhiteSpaceReplace(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_SCHEMAS_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * value; /* a value */
-    int n_value;
-
-    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
-        mem_base = xmlMemBlocks();
-        value = gen_const_xmlChar_ptr(n_value, 0);
-
-        ret_val = xmlSchemaWhiteSpaceReplace(value);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_value, value, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlSchemaWhiteSpaceReplace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xmlschemastypes(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlschemastypes : 26 of 34 functions ...\n");
-    test_ret += test_xmlSchemaCheckFacet();
-    test_ret += test_xmlSchemaCleanupTypes();
-    test_ret += test_xmlSchemaCollapseString();
-    test_ret += test_xmlSchemaCompareValues();
-    test_ret += test_xmlSchemaCompareValuesWhtsp();
-    test_ret += test_xmlSchemaCopyValue();
-    test_ret += test_xmlSchemaGetBuiltInListSimpleTypeItemType();
-    test_ret += test_xmlSchemaGetBuiltInType();
-    test_ret += test_xmlSchemaGetCanonValue();
-    test_ret += test_xmlSchemaGetCanonValueWhtsp();
-    test_ret += test_xmlSchemaGetFacetValueAsULong();
-    test_ret += test_xmlSchemaGetPredefinedType();
-    test_ret += test_xmlSchemaGetValType();
-    test_ret += test_xmlSchemaInitTypes();
-    test_ret += test_xmlSchemaIsBuiltInTypeFacet();
-    test_ret += test_xmlSchemaNewFacet();
-    test_ret += test_xmlSchemaNewNOTATIONValue();
-    test_ret += test_xmlSchemaNewQNameValue();
-    test_ret += test_xmlSchemaNewStringValue();
-    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_xmlSchemaValueAppend();
-    test_ret += test_xmlSchemaValueGetAsBoolean();
-    test_ret += test_xmlSchemaValueGetAsString();
-    test_ret += test_xmlSchemaValueGetNext();
-    test_ret += test_xmlSchemaWhiteSpaceReplace();
-
-    if (test_ret != 0)
-	printf("Module xmlschemastypes: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlCharStrdup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const char * cur; /* the input char * */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_char_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_char_ptr(n_cur, 0);
-
-        ret_val = xmlCharStrdup(cur);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharStrdup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCharStrndup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const char * cur; /* the input char * */
-    int n_cur;
-    int len; /* the len of @cur */
-    int n_len;
-
-    for (n_cur = 0;n_cur < gen_nb_const_char_ptr;n_cur++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_char_ptr(n_cur, 0);
-        len = gen_int(n_len, 1);
-        if ((cur != NULL) &&
-            (len > xmlStrlen(BAD_CAST cur)))
-            len = 0;
-
-        ret_val = xmlCharStrndup(cur, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_cur, cur, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCharStrndup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlCheckUTF8(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const unsigned char * utf; /* Pointer to putative UTF-8 encoded string. */
-    int n_utf;
-
-    for (n_utf = 0;n_utf < gen_nb_const_unsigned_char_ptr;n_utf++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_unsigned_char_ptr(n_utf, 0);
-
-        ret_val = xmlCheckUTF8(utf);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_unsigned_char_ptr(n_utf, utf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlCheckUTF8",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlGetUTF8Char(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const unsigned char * utf; /* a sequence of UTF-8 encoded bytes */
-    int n_utf;
-    int * len; /* 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. */
-    int n_len;
-
-    for (n_utf = 0;n_utf < gen_nb_const_unsigned_char_ptr;n_utf++) {
-    for (n_len = 0;n_len < gen_nb_int_ptr;n_len++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_unsigned_char_ptr(n_utf, 0);
-        len = gen_int_ptr(n_len, 1);
-
-        ret_val = xmlGetUTF8Char(utf, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_unsigned_char_ptr(n_utf, utf, 0);
-        des_int_ptr(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlGetUTF8Char",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrEqual(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str1; /* the first xmlChar * */
-    int n_str1;
-    const xmlChar * str2; /* the second xmlChar * */
-    int n_str2;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-
-        ret_val = xmlStrEqual(str1, str2);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrEqual",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrPrintf(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrQEqual(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * pref; /* the prefix of the QName */
-    int n_pref;
-    const xmlChar * name; /* the localname of the QName */
-    int n_name;
-    const xmlChar * str; /* the second xmlChar * */
-    int n_str;
-
-    for (n_pref = 0;n_pref < gen_nb_const_xmlChar_ptr;n_pref++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        pref = gen_const_xmlChar_ptr(n_pref, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        str = gen_const_xmlChar_ptr(n_str, 2);
-
-        ret_val = xmlStrQEqual(pref, name, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_pref, pref, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_str, str, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrQEqual",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_pref);
-            printf(" %d", n_name);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrVPrintf(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrcasecmp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str1; /* the first xmlChar * */
-    int n_str1;
-    const xmlChar * str2; /* the second xmlChar * */
-    int n_str2;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-
-        ret_val = xmlStrcasecmp(str1, str2);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrcasecmp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrcasestr(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlChar * str; /* the xmlChar * array (haystack) */
-    int n_str;
-    const xmlChar * val; /* the xmlChar to search (needle) */
-    int n_val;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_val = 0;n_val < gen_nb_const_xmlChar_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        val = gen_const_xmlChar_ptr(n_val, 1);
-
-        ret_val = xmlStrcasestr(str, val);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_const_xmlChar_ptr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrcasestr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrchr(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlChar * str; /* the xmlChar * array */
-    int n_str;
-    xmlChar val; /* the xmlChar to search */
-    int n_val;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_val = 0;n_val < gen_nb_xmlChar;n_val++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        val = gen_xmlChar(n_val, 1);
-
-        ret_val = xmlStrchr(str, val);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_xmlChar(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrchr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrcmp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str1; /* the first xmlChar * */
-    int n_str1;
-    const xmlChar * str2; /* the second xmlChar * */
-    int n_str2;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-
-        ret_val = xmlStrcmp(str1, str2);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrcmp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrdup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * cur; /* the input xmlChar * */
-    int n_cur;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-
-        ret_val = xmlStrdup(cur);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrdup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrlen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str; /* the xmlChar * array */
-    int n_str;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-
-        ret_val = xmlStrlen(str);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrlen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrncasecmp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str1; /* the first xmlChar * */
-    int n_str1;
-    const xmlChar * str2; /* the second xmlChar * */
-    int n_str2;
-    int len; /* the max comparison length */
-    int n_len;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-        len = gen_int(n_len, 2);
-        if ((str2 != NULL) &&
-            (len > xmlStrlen(BAD_CAST str2)))
-            len = 0;
-
-        ret_val = xmlStrncasecmp(str1, str2, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrncasecmp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrncatNew(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * str1; /* first xmlChar string */
-    int n_str1;
-    const xmlChar * str2; /* second xmlChar string */
-    int n_str2;
-    int len; /* the len of @str2 or < 0 */
-    int n_len;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-        len = gen_int(n_len, 2);
-        if ((str2 != NULL) &&
-            (len > xmlStrlen(BAD_CAST str2)))
-            len = 0;
-
-        ret_val = xmlStrncatNew(str1, str2, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrncatNew",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrncmp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * str1; /* the first xmlChar * */
-    int n_str1;
-    const xmlChar * str2; /* the second xmlChar * */
-    int n_str2;
-    int len; /* the max comparison length */
-    int n_len;
-
-    for (n_str1 = 0;n_str1 < gen_nb_const_xmlChar_ptr;n_str1++) {
-    for (n_str2 = 0;n_str2 < gen_nb_const_xmlChar_ptr;n_str2++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        str1 = gen_const_xmlChar_ptr(n_str1, 0);
-        str2 = gen_const_xmlChar_ptr(n_str2, 1);
-        len = gen_int(n_len, 2);
-        if ((str2 != NULL) &&
-            (len > xmlStrlen(BAD_CAST str2)))
-            len = 0;
-
-        ret_val = xmlStrncmp(str1, str2, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str1, str1, 0);
-        des_const_xmlChar_ptr(n_str2, str2, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrncmp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str1);
-            printf(" %d", n_str2);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrndup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * cur; /* the input xmlChar * */
-    int n_cur;
-    int len; /* the len of @cur */
-    int n_len;
-
-    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_const_xmlChar_ptr(n_cur, 0);
-        len = gen_int(n_len, 1);
-        if ((cur != NULL) &&
-            (len > xmlStrlen(BAD_CAST cur)))
-            len = 0;
-
-        ret_val = xmlStrndup(cur, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_cur, cur, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrndup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrstr(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlChar * str; /* the xmlChar * array (haystack) */
-    int n_str;
-    const xmlChar * val; /* the xmlChar to search (needle) */
-    int n_val;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_val = 0;n_val < gen_nb_const_xmlChar_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        val = gen_const_xmlChar_ptr(n_val, 1);
-
-        ret_val = xmlStrstr(str, val);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_const_xmlChar_ptr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrstr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlStrsub(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * str; /* the xmlChar * array (haystack) */
-    int n_str;
-    int start; /* the index of the first char (zero based) */
-    int n_start;
-    int len; /* the length of the substring */
-    int n_len;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_start = 0;n_start < gen_nb_int;n_start++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        start = gen_int(n_start, 1);
-        len = gen_int(n_len, 2);
-        if ((str != NULL) &&
-            (start > xmlStrlen(BAD_CAST str)))
-            start = 0;
-        if ((str != NULL) &&
-            (len > xmlStrlen(BAD_CAST str)))
-            len = 0;
-
-        ret_val = xmlStrsub(str, start, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_int(n_start, start, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlStrsub",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_start);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Charcmp(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * utf1; /* pointer to first UTF8 char */
-    int n_utf1;
-    const xmlChar * utf2; /* pointer to second UTF8 char */
-    int n_utf2;
-
-    for (n_utf1 = 0;n_utf1 < gen_nb_const_xmlChar_ptr;n_utf1++) {
-    for (n_utf2 = 0;n_utf2 < gen_nb_const_xmlChar_ptr;n_utf2++) {
-        mem_base = xmlMemBlocks();
-        utf1 = gen_const_xmlChar_ptr(n_utf1, 0);
-        utf2 = gen_const_xmlChar_ptr(n_utf2, 1);
-
-        ret_val = xmlUTF8Charcmp(utf1, utf2);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf1, utf1, 0);
-        des_const_xmlChar_ptr(n_utf2, utf2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Charcmp",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf1);
-            printf(" %d", n_utf2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Size(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * utf; /* pointer to the UTF8 character */
-    int n_utf;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-
-        ret_val = xmlUTF8Size(utf);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Size",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strlen(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * utf; /* a sequence of UTF-8 encoded bytes */
-    int n_utf;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-
-        ret_val = xmlUTF8Strlen(utf);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strlen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf("\n");
-        }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strloc(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * utf; /* the input UTF8 * */
-    int n_utf;
-    const xmlChar * utfchar; /* the UTF8 character to be found */
-    int n_utfchar;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-    for (n_utfchar = 0;n_utfchar < gen_nb_const_xmlChar_ptr;n_utfchar++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-        utfchar = gen_const_xmlChar_ptr(n_utfchar, 1);
-
-        ret_val = xmlUTF8Strloc(utf, utfchar);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        des_const_xmlChar_ptr(n_utfchar, utfchar, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strloc",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_utfchar);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strndup(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * utf; /* the input UTF8 * */
-    int n_utf;
-    int len; /* the len of @utf (in chars) */
-    int n_len;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-        len = gen_int(n_len, 1);
-        if ((utf != NULL) &&
-            (len > xmlStrlen(BAD_CAST utf)))
-            len = 0;
-
-        ret_val = xmlUTF8Strndup(utf, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strndup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strpos(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    const xmlChar * ret_val;
-    const xmlChar * utf; /* the input UTF8 * */
-    int n_utf;
-    int pos; /* the position of the desired UTF8 char (in chars) */
-    int n_pos;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-    for (n_pos = 0;n_pos < gen_nb_int;n_pos++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-        pos = gen_int(n_pos, 1);
-
-        ret_val = xmlUTF8Strpos(utf, pos);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        des_int(n_pos, pos, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strpos",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_pos);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strsize(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    int ret_val;
-    const xmlChar * utf; /* a sequence of UTF-8 encoded bytes */
-    int n_utf;
-    int len; /* the number of characters in the array */
-    int n_len;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-        len = gen_int(n_len, 1);
-        if ((utf != NULL) &&
-            (len > xmlStrlen(BAD_CAST utf)))
-            len = 0;
-
-        ret_val = xmlUTF8Strsize(utf, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        des_int(n_len, len, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strsize",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlUTF8Strsub(void) {
-    int test_ret = 0;
-
-    int mem_base;
-    xmlChar * ret_val;
-    const xmlChar * utf; /* a sequence of UTF-8 encoded bytes */
-    int n_utf;
-    int start; /* relative pos of first char */
-    int n_start;
-    int len; /* total number to copy */
-    int n_len;
-
-    for (n_utf = 0;n_utf < gen_nb_const_xmlChar_ptr;n_utf++) {
-    for (n_start = 0;n_start < gen_nb_int;n_start++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        utf = gen_const_xmlChar_ptr(n_utf, 0);
-        start = gen_int(n_start, 1);
-        len = gen_int(n_len, 2);
-        if ((utf != NULL) &&
-            (start > xmlStrlen(BAD_CAST utf)))
-            start = 0;
-        if ((utf != NULL) &&
-            (len > xmlStrlen(BAD_CAST utf)))
-            len = 0;
-
-        ret_val = xmlUTF8Strsub(utf, start, len);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_utf, utf, 0);
-        des_int(n_start, start, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlUTF8Strsub",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_utf);
-            printf(" %d", n_start);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-
-    return(test_ret);
-}
-
-static int
-test_xmlstring(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlstring : 26 of 30 functions ...\n");
-    test_ret += test_xmlCharStrdup();
-    test_ret += test_xmlCharStrndup();
-    test_ret += test_xmlCheckUTF8();
-    test_ret += test_xmlGetUTF8Char();
-    test_ret += test_xmlStrEqual();
-    test_ret += test_xmlStrPrintf();
-    test_ret += test_xmlStrQEqual();
-    test_ret += test_xmlStrVPrintf();
-    test_ret += test_xmlStrcasecmp();
-    test_ret += test_xmlStrcasestr();
-    test_ret += test_xmlStrchr();
-    test_ret += test_xmlStrcmp();
-    test_ret += test_xmlStrdup();
-    test_ret += test_xmlStrlen();
-    test_ret += test_xmlStrncasecmp();
-    test_ret += test_xmlStrncatNew();
-    test_ret += test_xmlStrncmp();
-    test_ret += test_xmlStrndup();
-    test_ret += test_xmlStrstr();
-    test_ret += test_xmlStrsub();
-    test_ret += test_xmlUTF8Charcmp();
-    test_ret += test_xmlUTF8Size();
-    test_ret += test_xmlUTF8Strlen();
-    test_ret += test_xmlUTF8Strloc();
-    test_ret += test_xmlUTF8Strndup();
-    test_ret += test_xmlUTF8Strpos();
-    test_ret += test_xmlUTF8Strsize();
-    test_ret += test_xmlUTF8Strsub();
-
-    if (test_ret != 0)
-	printf("Module xmlstring: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlNewTextWriter(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    xmlTextWriterPtr ret_val;
-    xmlOutputBufferPtr out; /* an xmlOutputBufferPtr */
-    int n_out;
-
-    for (n_out = 0;n_out < gen_nb_xmlOutputBufferPtr;n_out++) {
-        mem_base = xmlMemBlocks();
-        out = gen_xmlOutputBufferPtr(n_out, 0);
-
-        ret_val = xmlNewTextWriter(out);
-        if (ret_val != NULL) out = NULL;
-        desret_xmlTextWriterPtr(ret_val);
-        call_tests++;
-        des_xmlOutputBufferPtr(n_out, out, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextWriter",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_out);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextWriterFilename(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    xmlTextWriterPtr ret_val;
-    const char * uri; /* the URI of the resource for the output */
-    int n_uri;
-    int compression; /* compress the output? */
-    int n_compression;
-
-    for (n_uri = 0;n_uri < gen_nb_fileoutput;n_uri++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        uri = gen_fileoutput(n_uri, 0);
-        compression = gen_int(n_compression, 1);
-
-        ret_val = xmlNewTextWriterFilename(uri, compression);
-        desret_xmlTextWriterPtr(ret_val);
-        call_tests++;
-        des_fileoutput(n_uri, uri, 0);
-        des_int(n_compression, compression, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextWriterFilename",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_uri);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextWriterMemory(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    xmlTextWriterPtr ret_val;
-    xmlBufferPtr buf; /* xmlBufferPtr */
-    int n_buf;
-    int compression; /* compress the output? */
-    int n_compression;
-
-    for (n_buf = 0;n_buf < gen_nb_xmlBufferPtr;n_buf++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        buf = gen_xmlBufferPtr(n_buf, 0);
-        compression = gen_int(n_compression, 1);
-
-        ret_val = xmlNewTextWriterMemory(buf, compression);
-        desret_xmlTextWriterPtr(ret_val);
-        call_tests++;
-        des_xmlBufferPtr(n_buf, buf, 0);
-        des_int(n_compression, compression, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextWriterMemory",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_buf);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextWriterPushParser(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    xmlTextWriterPtr ret_val;
-    xmlParserCtxtPtr ctxt; /* xmlParserCtxtPtr to hold the new XML document tree */
-    int n_ctxt;
-    int compression; /* compress the output? */
-    int n_compression;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlParserCtxtPtr;n_ctxt++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlParserCtxtPtr(n_ctxt, 0);
-        compression = gen_int(n_compression, 1);
-
-        ret_val = xmlNewTextWriterPushParser(ctxt, compression);
-        if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;} if (ret_val != NULL) ctxt = NULL;
-        desret_xmlTextWriterPtr(ret_val);
-        call_tests++;
-        des_xmlParserCtxtPtr(n_ctxt, ctxt, 0);
-        des_int(n_compression, compression, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextWriterPushParser",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlNewTextWriterTree(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    xmlTextWriterPtr ret_val;
-    xmlDocPtr doc; /* xmlDocPtr */
-    int n_doc;
-    xmlNodePtr node; /* xmlNodePtr or NULL for doc->children */
-    int n_node;
-    int compression; /* compress the output? */
-    int n_compression;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_compression = 0;n_compression < gen_nb_int;n_compression++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        compression = gen_int(n_compression, 2);
-
-        ret_val = xmlNewTextWriterTree(doc, node, compression);
-        desret_xmlTextWriterPtr(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_int(n_compression, compression, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlNewTextWriterTree",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf(" %d", n_node);
-            printf(" %d", n_compression);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterClose(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterClose(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterClose",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndAttribute(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndCDATA(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndCDATA(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndCDATA",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndComment(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndComment(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndComment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndDTD(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndDTDAttlist(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndDTDAttlist(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndDTDAttlist",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndDTDElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndDTDElement(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndDTDElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndDTDEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndDTDEntity(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndDTDEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndDocument(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndElement(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterEndPI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterEndPI(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterEndPI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterFlush(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterFlush(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterFlush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterFullEndElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterFullEndElement(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterFullEndElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterSetIndent(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    int indent; /* do indentation? */
-    int n_indent;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_indent = 0;n_indent < gen_nb_int;n_indent++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        indent = gen_int(n_indent, 1);
-
-        ret_val = xmlTextWriterSetIndent(writer, indent);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_int(n_indent, indent, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterSetIndent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_indent);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterSetIndentString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * str; /* the xmlChar string */
-    int n_str;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-
-        ret_val = xmlTextWriterSetIndentString(writer, str);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterSetIndentString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterSetQuoteChar(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    xmlChar quotechar; /* the quote character */
-    int n_quotechar;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_quotechar = 0;n_quotechar < gen_nb_xmlChar;n_quotechar++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        quotechar = gen_xmlChar(n_quotechar, 1);
-
-        ret_val = xmlTextWriterSetQuoteChar(writer, quotechar);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_xmlChar(n_quotechar, quotechar, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterSetQuoteChar",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_quotechar);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* element name */
-    int n_name;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextWriterStartAttribute(writer, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartAttributeNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * prefix; /* namespace prefix or NULL */
-    int n_prefix;
-    const xmlChar * name; /* element local name */
-    int n_name;
-    const xmlChar * namespaceURI; /* namespace URI or NULL */
-    int n_namespaceURI;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 3);
-
-        ret_val = xmlTextWriterStartAttributeNS(writer, prefix, name, namespaceURI);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartAttributeNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_namespaceURI);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartCDATA(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterStartCDATA(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartCDATA",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartComment(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-
-        ret_val = xmlTextWriterStartComment(writer);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartComment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD */
-    int n_name;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 2);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 3);
-
-        ret_val = xmlTextWriterStartDTD(writer, name, pubid, sysid);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_pubid, pubid, 2);
-        des_const_xmlChar_ptr(n_sysid, sysid, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartDTDAttlist(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD ATTLIST */
-    int n_name;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextWriterStartDTDAttlist(writer, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartDTDAttlist",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartDTDElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD element */
-    int n_name;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextWriterStartDTDElement(writer, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartDTDElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartDTDEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    int pe; /* TRUE if this is a parameter entity, FALSE if not */
-    int n_pe;
-    const xmlChar * name; /* the name of the DTD ATTLIST */
-    int n_name;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_pe = 0;n_pe < gen_nb_int;n_pe++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        pe = gen_int(n_pe, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-
-        ret_val = xmlTextWriterStartDTDEntity(writer, pe, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_int(n_pe, pe, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartDTDEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_pe);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartDocument(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const char * version; /* the xml version ("1.0") or NULL for default ("1.0") */
-    int n_version;
-    const char * encoding; /* the encoding or NULL for default */
-    int n_encoding;
-    const char * standalone; /* "yes" or "no" or NULL for default */
-    int n_standalone;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_version = 0;n_version < gen_nb_const_char_ptr;n_version++) {
-    for (n_encoding = 0;n_encoding < gen_nb_const_char_ptr;n_encoding++) {
-    for (n_standalone = 0;n_standalone < gen_nb_const_char_ptr;n_standalone++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        version = gen_const_char_ptr(n_version, 1);
-        encoding = gen_const_char_ptr(n_encoding, 2);
-        standalone = gen_const_char_ptr(n_standalone, 3);
-
-        ret_val = xmlTextWriterStartDocument(writer, version, encoding, standalone);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_char_ptr(n_version, version, 1);
-        des_const_char_ptr(n_encoding, encoding, 2);
-        des_const_char_ptr(n_standalone, standalone, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartDocument",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_version);
-            printf(" %d", n_encoding);
-            printf(" %d", n_standalone);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* element name */
-    int n_name;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlTextWriterStartElement(writer, name);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartElementNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * prefix; /* namespace prefix or NULL */
-    int n_prefix;
-    const xmlChar * name; /* element local name */
-    int n_name;
-    const xmlChar * namespaceURI; /* namespace URI or NULL */
-    int n_namespaceURI;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 3);
-
-        ret_val = xmlTextWriterStartElementNS(writer, prefix, name, namespaceURI);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartElementNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_namespaceURI);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterStartPI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * target; /* PI target */
-    int n_target;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_target = 0;n_target < gen_nb_const_xmlChar_ptr;n_target++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        target = gen_const_xmlChar_ptr(n_target, 1);
-
-        ret_val = xmlTextWriterStartPI(writer, target);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_target, target, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterStartPI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_target);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* attribute name */
-    int n_name;
-    const xmlChar * content; /* attribute content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlTextWriterWriteAttribute(writer, name, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteAttributeNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * prefix; /* namespace prefix */
-    int n_prefix;
-    const xmlChar * name; /* attribute local name */
-    int n_name;
-    const xmlChar * namespaceURI; /* namespace URI */
-    int n_namespaceURI;
-    const xmlChar * content; /* attribute content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 3);
-        content = gen_const_xmlChar_ptr(n_content, 4);
-
-        ret_val = xmlTextWriterWriteAttributeNS(writer, prefix, name, namespaceURI, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 3);
-        des_const_xmlChar_ptr(n_content, content, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteAttributeNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_namespaceURI);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteBase64(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const char * data; /* binary data */
-    int n_data;
-    int start; /* the position within the data of the first byte to encode */
-    int n_start;
-    int len; /* the number of bytes to encode */
-    int n_len;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_data = 0;n_data < gen_nb_const_char_ptr;n_data++) {
-    for (n_start = 0;n_start < gen_nb_int;n_start++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        data = gen_const_char_ptr(n_data, 1);
-        start = gen_int(n_start, 2);
-        len = gen_int(n_len, 3);
-        if ((data != NULL) &&
-            (start > xmlStrlen(BAD_CAST data)))
-            start = 0;
-        if ((data != NULL) &&
-            (len > xmlStrlen(BAD_CAST data)))
-            len = 0;
-
-        ret_val = xmlTextWriterWriteBase64(writer, data, start, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_char_ptr(n_data, data, 1);
-        des_int(n_start, start, 2);
-        des_int(n_len, len, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteBase64",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_data);
-            printf(" %d", n_start);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteBinHex(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const char * data; /* binary data */
-    int n_data;
-    int start; /* the position within the data of the first byte to encode */
-    int n_start;
-    int len; /* the number of bytes to encode */
-    int n_len;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_data = 0;n_data < gen_nb_const_char_ptr;n_data++) {
-    for (n_start = 0;n_start < gen_nb_int;n_start++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        data = gen_const_char_ptr(n_data, 1);
-        start = gen_int(n_start, 2);
-        len = gen_int(n_len, 3);
-        if ((data != NULL) &&
-            (start > xmlStrlen(BAD_CAST data)))
-            start = 0;
-        if ((data != NULL) &&
-            (len > xmlStrlen(BAD_CAST data)))
-            len = 0;
-
-        ret_val = xmlTextWriterWriteBinHex(writer, data, start, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_char_ptr(n_data, data, 1);
-        des_int(n_start, start, 2);
-        des_int(n_len, len, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteBinHex",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_data);
-            printf(" %d", n_start);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteCDATA(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * content; /* CDATA content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlTextWriterWriteCDATA(writer, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteCDATA",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteComment(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * content; /* comment string */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlTextWriterWriteComment(writer, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteComment",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTD(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD */
-    int n_name;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-    const xmlChar * subset; /* string content of the DTD */
-    int n_subset;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-    for (n_subset = 0;n_subset < gen_nb_const_xmlChar_ptr;n_subset++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 2);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 3);
-        subset = gen_const_xmlChar_ptr(n_subset, 4);
-
-        ret_val = xmlTextWriterWriteDTD(writer, name, pubid, sysid, subset);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_pubid, pubid, 2);
-        des_const_xmlChar_ptr(n_sysid, sysid, 3);
-        des_const_xmlChar_ptr(n_subset, subset, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTD",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf(" %d", n_subset);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDAttlist(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD ATTLIST */
-    int n_name;
-    const xmlChar * content; /* content of the ATTLIST */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlTextWriterWriteDTDAttlist(writer, name, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDAttlist",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the DTD element */
-    int n_name;
-    const xmlChar * content; /* content of the element */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlTextWriterWriteDTDElement(writer, name, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    int pe; /* TRUE if this is a parameter entity, FALSE if not */
-    int n_pe;
-    const xmlChar * name; /* the name of the DTD entity */
-    int n_name;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-    const xmlChar * ndataid; /* the xml notation name. */
-    int n_ndataid;
-    const xmlChar * content; /* content of the entity */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_pe = 0;n_pe < gen_nb_int;n_pe++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-    for (n_ndataid = 0;n_ndataid < gen_nb_const_xmlChar_ptr;n_ndataid++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        pe = gen_int(n_pe, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 3);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 4);
-        ndataid = gen_const_xmlChar_ptr(n_ndataid, 5);
-        content = gen_const_xmlChar_ptr(n_content, 6);
-
-        ret_val = xmlTextWriterWriteDTDEntity(writer, pe, name, pubid, sysid, ndataid, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_int(n_pe, pe, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_pubid, pubid, 3);
-        des_const_xmlChar_ptr(n_sysid, sysid, 4);
-        des_const_xmlChar_ptr(n_ndataid, ndataid, 5);
-        des_const_xmlChar_ptr(n_content, content, 6);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_pe);
-            printf(" %d", n_name);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf(" %d", n_ndataid);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDExternalEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    int pe; /* TRUE if this is a parameter entity, FALSE if not */
-    int n_pe;
-    const xmlChar * name; /* the name of the DTD entity */
-    int n_name;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-    const xmlChar * ndataid; /* the xml notation name. */
-    int n_ndataid;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_pe = 0;n_pe < gen_nb_int;n_pe++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-    for (n_ndataid = 0;n_ndataid < gen_nb_const_xmlChar_ptr;n_ndataid++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        pe = gen_int(n_pe, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 3);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 4);
-        ndataid = gen_const_xmlChar_ptr(n_ndataid, 5);
-
-        ret_val = xmlTextWriterWriteDTDExternalEntity(writer, pe, name, pubid, sysid, ndataid);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_int(n_pe, pe, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_pubid, pubid, 3);
-        des_const_xmlChar_ptr(n_sysid, sysid, 4);
-        des_const_xmlChar_ptr(n_ndataid, ndataid, 5);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDExternalEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_pe);
-            printf(" %d", n_name);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf(" %d", n_ndataid);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDExternalEntityContents(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-    const xmlChar * ndataid; /* the xml notation name. */
-    int n_ndataid;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-    for (n_ndataid = 0;n_ndataid < gen_nb_const_xmlChar_ptr;n_ndataid++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 1);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 2);
-        ndataid = gen_const_xmlChar_ptr(n_ndataid, 3);
-
-        ret_val = xmlTextWriterWriteDTDExternalEntityContents(writer, pubid, sysid, ndataid);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_pubid, pubid, 1);
-        des_const_xmlChar_ptr(n_sysid, sysid, 2);
-        des_const_xmlChar_ptr(n_ndataid, ndataid, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDExternalEntityContents",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf(" %d", n_ndataid);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDInternalEntity(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    int pe; /* TRUE if this is a parameter entity, FALSE if not */
-    int n_pe;
-    const xmlChar * name; /* the name of the DTD entity */
-    int n_name;
-    const xmlChar * content; /* content of the entity */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_pe = 0;n_pe < gen_nb_int;n_pe++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        pe = gen_int(n_pe, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        content = gen_const_xmlChar_ptr(n_content, 3);
-
-        ret_val = xmlTextWriterWriteDTDInternalEntity(writer, pe, name, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_int(n_pe, pe, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_content, content, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDInternalEntity",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_pe);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteDTDNotation(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* the name of the xml notation */
-    int n_name;
-    const xmlChar * pubid; /* the public identifier, which is an alternative to the system identifier */
-    int n_pubid;
-    const xmlChar * sysid; /* the system identifier, which is the URI of the DTD */
-    int n_sysid;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_pubid = 0;n_pubid < gen_nb_const_xmlChar_ptr;n_pubid++) {
-    for (n_sysid = 0;n_sysid < gen_nb_const_xmlChar_ptr;n_sysid++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        pubid = gen_const_xmlChar_ptr(n_pubid, 2);
-        sysid = gen_const_xmlChar_ptr(n_sysid, 3);
-
-        ret_val = xmlTextWriterWriteDTDNotation(writer, name, pubid, sysid);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_pubid, pubid, 2);
-        des_const_xmlChar_ptr(n_sysid, sysid, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteDTDNotation",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_pubid);
-            printf(" %d", n_sysid);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteElement(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * name; /* element name */
-    int n_name;
-    const xmlChar * content; /* element content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlTextWriterWriteElement(writer, name, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteElement",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_name);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteElementNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * prefix; /* namespace prefix */
-    int n_prefix;
-    const xmlChar * name; /* element local name */
-    int n_name;
-    const xmlChar * namespaceURI; /* namespace URI */
-    int n_namespaceURI;
-    const xmlChar * content; /* element content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_namespaceURI = 0;n_namespaceURI < gen_nb_const_xmlChar_ptr;n_namespaceURI++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        name = gen_const_xmlChar_ptr(n_name, 2);
-        namespaceURI = gen_const_xmlChar_ptr(n_namespaceURI, 3);
-        content = gen_const_xmlChar_ptr(n_content, 4);
-
-        ret_val = xmlTextWriterWriteElementNS(writer, prefix, name, namespaceURI, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_name, name, 2);
-        des_const_xmlChar_ptr(n_namespaceURI, namespaceURI, 3);
-        des_const_xmlChar_ptr(n_content, content, 4);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteElementNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_prefix);
-            printf(" %d", n_name);
-            printf(" %d", n_namespaceURI);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatAttribute(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatAttributeNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatCDATA(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatComment(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatDTD(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatDTDAttlist(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatDTDElement(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatDTDInternalEntity(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatElement(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatElementNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatPI(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatRaw(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteFormatString(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWritePI(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * target; /* PI target */
-    int n_target;
-    const xmlChar * content; /* PI content */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_target = 0;n_target < gen_nb_const_xmlChar_ptr;n_target++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        target = gen_const_xmlChar_ptr(n_target, 1);
-        content = gen_const_xmlChar_ptr(n_content, 2);
-
-        ret_val = xmlTextWriterWritePI(writer, target, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_target, target, 1);
-        des_const_xmlChar_ptr(n_content, content, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWritePI",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_target);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteRaw(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * content; /* text string */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlTextWriterWriteRaw(writer, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteRaw",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteRawLen(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * content; /* text string */
-    int n_content;
-    int len; /* length of the text string */
-    int n_len;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-    for (n_len = 0;n_len < gen_nb_int;n_len++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-        len = gen_int(n_len, 2);
-        if ((content != NULL) &&
-            (len > xmlStrlen(BAD_CAST content)))
-            len = 0;
-
-        ret_val = xmlTextWriterWriteRawLen(writer, content, len);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        des_int(n_len, len, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteRawLen",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_content);
-            printf(" %d", n_len);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_WRITER_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlTextWriterPtr writer; /* the xmlTextWriterPtr */
-    int n_writer;
-    const xmlChar * content; /* text string */
-    int n_content;
-
-    for (n_writer = 0;n_writer < gen_nb_xmlTextWriterPtr;n_writer++) {
-    for (n_content = 0;n_content < gen_nb_const_xmlChar_ptr;n_content++) {
-        mem_base = xmlMemBlocks();
-        writer = gen_xmlTextWriterPtr(n_writer, 0);
-        content = gen_const_xmlChar_ptr(n_content, 1);
-
-        ret_val = xmlTextWriterWriteString(writer, content);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlTextWriterPtr(n_writer, writer, 0);
-        des_const_xmlChar_ptr(n_content, content, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlTextWriterWriteString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_writer);
-            printf(" %d", n_content);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatAttribute(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatAttributeNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatCDATA(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatComment(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatDTD(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatDTDAttlist(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatDTDElement(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatDTDInternalEntity(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatElement(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatElementNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatPI(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatRaw(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlTextWriterWriteVFormatString(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xmlwriter(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xmlwriter : 53 of 81 functions ...\n");
-    test_ret += test_xmlNewTextWriter();
-    test_ret += test_xmlNewTextWriterFilename();
-    test_ret += test_xmlNewTextWriterMemory();
-    test_ret += test_xmlNewTextWriterPushParser();
-    test_ret += test_xmlNewTextWriterTree();
-    test_ret += test_xmlTextWriterClose();
-    test_ret += test_xmlTextWriterEndAttribute();
-    test_ret += test_xmlTextWriterEndCDATA();
-    test_ret += test_xmlTextWriterEndComment();
-    test_ret += test_xmlTextWriterEndDTD();
-    test_ret += test_xmlTextWriterEndDTDAttlist();
-    test_ret += test_xmlTextWriterEndDTDElement();
-    test_ret += test_xmlTextWriterEndDTDEntity();
-    test_ret += test_xmlTextWriterEndDocument();
-    test_ret += test_xmlTextWriterEndElement();
-    test_ret += test_xmlTextWriterEndPI();
-    test_ret += test_xmlTextWriterFlush();
-    test_ret += test_xmlTextWriterFullEndElement();
-    test_ret += test_xmlTextWriterSetIndent();
-    test_ret += test_xmlTextWriterSetIndentString();
-    test_ret += test_xmlTextWriterSetQuoteChar();
-    test_ret += test_xmlTextWriterStartAttribute();
-    test_ret += test_xmlTextWriterStartAttributeNS();
-    test_ret += test_xmlTextWriterStartCDATA();
-    test_ret += test_xmlTextWriterStartComment();
-    test_ret += test_xmlTextWriterStartDTD();
-    test_ret += test_xmlTextWriterStartDTDAttlist();
-    test_ret += test_xmlTextWriterStartDTDElement();
-    test_ret += test_xmlTextWriterStartDTDEntity();
-    test_ret += test_xmlTextWriterStartDocument();
-    test_ret += test_xmlTextWriterStartElement();
-    test_ret += test_xmlTextWriterStartElementNS();
-    test_ret += test_xmlTextWriterStartPI();
-    test_ret += test_xmlTextWriterWriteAttribute();
-    test_ret += test_xmlTextWriterWriteAttributeNS();
-    test_ret += test_xmlTextWriterWriteBase64();
-    test_ret += test_xmlTextWriterWriteBinHex();
-    test_ret += test_xmlTextWriterWriteCDATA();
-    test_ret += test_xmlTextWriterWriteComment();
-    test_ret += test_xmlTextWriterWriteDTD();
-    test_ret += test_xmlTextWriterWriteDTDAttlist();
-    test_ret += test_xmlTextWriterWriteDTDElement();
-    test_ret += test_xmlTextWriterWriteDTDEntity();
-    test_ret += test_xmlTextWriterWriteDTDExternalEntity();
-    test_ret += test_xmlTextWriterWriteDTDExternalEntityContents();
-    test_ret += test_xmlTextWriterWriteDTDInternalEntity();
-    test_ret += test_xmlTextWriterWriteDTDNotation();
-    test_ret += test_xmlTextWriterWriteElement();
-    test_ret += test_xmlTextWriterWriteElementNS();
-    test_ret += test_xmlTextWriterWriteFormatAttribute();
-    test_ret += test_xmlTextWriterWriteFormatAttributeNS();
-    test_ret += test_xmlTextWriterWriteFormatCDATA();
-    test_ret += test_xmlTextWriterWriteFormatComment();
-    test_ret += test_xmlTextWriterWriteFormatDTD();
-    test_ret += test_xmlTextWriterWriteFormatDTDAttlist();
-    test_ret += test_xmlTextWriterWriteFormatDTDElement();
-    test_ret += test_xmlTextWriterWriteFormatDTDInternalEntity();
-    test_ret += test_xmlTextWriterWriteFormatElement();
-    test_ret += test_xmlTextWriterWriteFormatElementNS();
-    test_ret += test_xmlTextWriterWriteFormatPI();
-    test_ret += test_xmlTextWriterWriteFormatRaw();
-    test_ret += test_xmlTextWriterWriteFormatString();
-    test_ret += test_xmlTextWriterWritePI();
-    test_ret += test_xmlTextWriterWriteRaw();
-    test_ret += test_xmlTextWriterWriteRawLen();
-    test_ret += test_xmlTextWriterWriteString();
-    test_ret += test_xmlTextWriterWriteVFormatAttribute();
-    test_ret += test_xmlTextWriterWriteVFormatAttributeNS();
-    test_ret += test_xmlTextWriterWriteVFormatCDATA();
-    test_ret += test_xmlTextWriterWriteVFormatComment();
-    test_ret += test_xmlTextWriterWriteVFormatDTD();
-    test_ret += test_xmlTextWriterWriteVFormatDTDAttlist();
-    test_ret += test_xmlTextWriterWriteVFormatDTDElement();
-    test_ret += test_xmlTextWriterWriteVFormatDTDInternalEntity();
-    test_ret += test_xmlTextWriterWriteVFormatElement();
-    test_ret += test_xmlTextWriterWriteVFormatElementNS();
-    test_ret += test_xmlTextWriterWriteVFormatPI();
-    test_ret += test_xmlTextWriterWriteVFormatRaw();
-    test_ret += test_xmlTextWriterWriteVFormatString();
-
-    if (test_ret != 0)
-	printf("Module xmlwriter: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlXPathCastBooleanToNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    int val; /* a boolean */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlXPathCastBooleanToNumber(val);
-        desret_double(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastBooleanToNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastBooleanToString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    int val; /* a boolean */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlXPathCastBooleanToString(val);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastBooleanToString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNodeSetToBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr ns; /* a node-set */
-    int n_ns;
-
-    for (n_ns = 0;n_ns < gen_nb_xmlNodeSetPtr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        ns = gen_xmlNodeSetPtr(n_ns, 0);
-
-        ret_val = xmlXPathCastNodeSetToBoolean(ns);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_ns, ns, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNodeSetToBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNodeSetToNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    xmlNodeSetPtr ns; /* a node-set */
-    int n_ns;
-
-    for (n_ns = 0;n_ns < gen_nb_xmlNodeSetPtr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        ns = gen_xmlNodeSetPtr(n_ns, 0);
-
-        ret_val = xmlXPathCastNodeSetToNumber(ns);
-        desret_double(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_ns, ns, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNodeSetToNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNodeSetToString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlNodeSetPtr ns; /* a node-set */
-    int n_ns;
-
-    for (n_ns = 0;n_ns < gen_nb_xmlNodeSetPtr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        ns = gen_xmlNodeSetPtr(n_ns, 0);
-
-        ret_val = xmlXPathCastNodeSetToString(ns);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_ns, ns, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNodeSetToString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNodeToNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-
-        ret_val = xmlXPathCastNodeToNumber(node);
-        desret_double(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNodeToNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNodeToString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-
-        ret_val = xmlXPathCastNodeToString(node);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNodeToString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNumberToBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    double val; /* a number */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_double;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_double(n_val, 0);
-
-        ret_val = xmlXPathCastNumberToBoolean(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_double(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNumberToBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastNumberToString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    double val; /* a number */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_double;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_double(n_val, 0);
-
-        ret_val = xmlXPathCastNumberToString(val);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_double(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastNumberToString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastStringToBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * val; /* a string */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_const_xmlChar_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_const_xmlChar_ptr(n_val, 0);
-
-        ret_val = xmlXPathCastStringToBoolean(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastStringToBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastStringToNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    const xmlChar * val; /* a string */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_const_xmlChar_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_const_xmlChar_ptr(n_val, 0);
-
-        ret_val = xmlXPathCastStringToNumber(val);
-        desret_double(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastStringToNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastToBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathCastToBoolean(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastToBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastToNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathCastToNumber(val);
-        desret_double(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastToNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCastToString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathCastToString(val);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCastToString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCmpNodes(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodePtr node1; /* the first node */
-    int n_node1;
-    xmlNodePtr node2; /* the second node */
-    int n_node2;
-
-    for (n_node1 = 0;n_node1 < gen_nb_xmlNodePtr;n_node1++) {
-    for (n_node2 = 0;n_node2 < gen_nb_xmlNodePtr;n_node2++) {
-        mem_base = xmlMemBlocks();
-        node1 = gen_xmlNodePtr(n_node1, 0);
-        node2 = gen_xmlNodePtr(n_node2, 1);
-
-        ret_val = xmlXPathCmpNodes(node1, node2);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node1, node1, 0);
-        des_xmlNodePtr(n_node2, node2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCmpNodes",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node1);
-            printf(" %d", n_node2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCompile(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-#ifdef LIBXML_XPATH_ENABLED
-
-#define gen_nb_xmlXPathCompExprPtr 1
-#define gen_xmlXPathCompExprPtr(no, nr) NULL
-#define des_xmlXPathCompExprPtr(no, val, nr)
-#endif
-
-#ifdef LIBXML_XPATH_ENABLED
-
-#define gen_nb_xmlXPathContextPtr 1
-#define gen_xmlXPathContextPtr(no, nr) NULL
-#define des_xmlXPathContextPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlXPathCompiledEval(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathCompExprPtr comp; /* the compiled XPath expression */
-    int n_comp;
-    xmlXPathContextPtr ctx; /* the XPath context */
-    int n_ctx;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlXPathCompExprPtr;n_comp++) {
-    for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlXPathCompExprPtr(n_comp, 0);
-        ctx = gen_xmlXPathContextPtr(n_ctx, 1);
-
-        ret_val = xmlXPathCompiledEval(comp, ctx);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathCompExprPtr(n_comp, comp, 0);
-        des_xmlXPathContextPtr(n_ctx, ctx, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCompiledEval",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCompiledEvalToBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathCompExprPtr comp; /* the compiled XPath expression */
-    int n_comp;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_comp = 0;n_comp < gen_nb_xmlXPathCompExprPtr;n_comp++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        comp = gen_xmlXPathCompExprPtr(n_comp, 0);
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 1);
-
-        ret_val = xmlXPathCompiledEvalToBoolean(comp, ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathCompExprPtr(n_comp, comp, 0);
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCompiledEvalToBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_comp);
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathContextSetCache(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    int active; /* enables/disables (creates/frees) the cache */
-    int n_active;
-    int value; /* a value with semantics dependent on @options */
-    int n_value;
-    int options; /* options (currently only the value 0 is used) */
-    int n_options;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_active = 0;n_active < gen_nb_int;n_active++) {
-    for (n_value = 0;n_value < gen_nb_int;n_value++) {
-    for (n_options = 0;n_options < gen_nb_int;n_options++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        active = gen_int(n_active, 1);
-        value = gen_int(n_value, 2);
-        options = gen_int(n_options, 3);
-
-        ret_val = xmlXPathContextSetCache(ctxt, active, value, options);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_active, active, 1);
-        des_int(n_value, value, 2);
-        des_int(n_options, options, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathContextSetCache",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_active);
-            printf(" %d", n_value);
-            printf(" %d", n_options);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathConvertBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathConvertBoolean(val);
-        val = NULL;
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathConvertBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathConvertNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathConvertNumber(val);
-        val = NULL;
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathConvertNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathConvertString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathObjectPtr val; /* an XPath object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathConvertString(val);
-        val = NULL;
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathConvertString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCtxtCompile(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEval(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    const xmlChar * str; /* the XPath expression */
-    int n_str;
-    xmlXPathContextPtr ctx; /* the XPath context */
-    int n_ctx;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        ctx = gen_xmlXPathContextPtr(n_ctx, 1);
-
-        ret_val = xmlXPathEval(str, ctx);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_xmlXPathContextPtr(n_ctx, ctx, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEval",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEvalExpression(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    const xmlChar * str; /* the XPath expression */
-    int n_str;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 1);
-
-        ret_val = xmlXPathEvalExpression(str, ctxt);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEvalExpression",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEvalPredicate(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    xmlXPathObjectPtr res; /* the Predicate Expression evaluation result */
-    int n_res;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_res = 0;n_res < gen_nb_xmlXPathObjectPtr;n_res++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        res = gen_xmlXPathObjectPtr(n_res, 1);
-
-        ret_val = xmlXPathEvalPredicate(ctxt, res);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_xmlXPathObjectPtr(n_res, res, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEvalPredicate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_res);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathInit(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-
-        mem_base = xmlMemBlocks();
-
-        xmlXPathInit();
-        call_tests++;
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathInit",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf("\n");
-        }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathIsInf(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    double val; /* a double value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_double;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_double(n_val, 0);
-
-        ret_val = xmlXPathIsInf(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_double(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathIsInf",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathIsNaN(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    double val; /* a double value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_double;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_double(n_val, 0);
-
-        ret_val = xmlXPathIsNaN(val);
-        desret_int(ret_val);
-        call_tests++;
-        des_double(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathIsNaN",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewContext(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeEval(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlNodePtr node; /* the node to to use as the context node */
-    int n_node;
-    const xmlChar * str; /* the XPath expression */
-    int n_str;
-    xmlXPathContextPtr ctx; /* the XPath context */
-    int n_ctx;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        str = gen_const_xmlChar_ptr(n_str, 1);
-        ctx = gen_xmlXPathContextPtr(n_ctx, 2);
-
-        ret_val = xmlXPathNodeEval(node, str, ctx);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_const_xmlChar_ptr(n_str, str, 1);
-        des_xmlXPathContextPtr(n_ctx, ctx, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeEval",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_str);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetCreate(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodePtr val; /* an initial xmlNodePtr, or NULL */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlNodePtr(n_val, 0);
-
-        ret_val = xmlXPathNodeSetCreate(val);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetCreate",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathObjectCopy(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathObjectPtr val; /* the original object */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlXPathObjectPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlXPathObjectPtr(n_val, 0);
-
-        ret_val = xmlXPathObjectCopy(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathObjectPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathObjectCopy",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathOrderDocElems(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    long ret_val;
-    xmlDocPtr doc; /* an input document */
-    int n_doc;
-
-    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
-        mem_base = xmlMemBlocks();
-        doc = gen_xmlDocPtr(n_doc, 0);
-
-        ret_val = xmlXPathOrderDocElems(doc);
-        desret_long(ret_val);
-        call_tests++;
-        des_xmlDocPtr(n_doc, doc, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathOrderDocElems",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_doc);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSetContextNode(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodePtr node; /* the node to to use as the context node */
-    int n_node;
-    xmlXPathContextPtr ctx; /* the XPath context */
-    int n_ctx;
-
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        node = gen_xmlNodePtr(n_node, 0);
-        ctx = gen_xmlXPathContextPtr(n_ctx, 1);
-
-        ret_val = xmlXPathSetContextNode(node, ctx);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_node, node, 0);
-        des_xmlXPathContextPtr(n_ctx, ctx, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSetContextNode",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_node);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSetErrorHandler(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xpath(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xpath : 32 of 41 functions ...\n");
-    test_ret += test_xmlXPathCastBooleanToNumber();
-    test_ret += test_xmlXPathCastBooleanToString();
-    test_ret += test_xmlXPathCastNodeSetToBoolean();
-    test_ret += test_xmlXPathCastNodeSetToNumber();
-    test_ret += test_xmlXPathCastNodeSetToString();
-    test_ret += test_xmlXPathCastNodeToNumber();
-    test_ret += test_xmlXPathCastNodeToString();
-    test_ret += test_xmlXPathCastNumberToBoolean();
-    test_ret += test_xmlXPathCastNumberToString();
-    test_ret += test_xmlXPathCastStringToBoolean();
-    test_ret += test_xmlXPathCastStringToNumber();
-    test_ret += test_xmlXPathCastToBoolean();
-    test_ret += test_xmlXPathCastToNumber();
-    test_ret += test_xmlXPathCastToString();
-    test_ret += test_xmlXPathCmpNodes();
-    test_ret += test_xmlXPathCompile();
-    test_ret += test_xmlXPathCompiledEval();
-    test_ret += test_xmlXPathCompiledEvalToBoolean();
-    test_ret += test_xmlXPathContextSetCache();
-    test_ret += test_xmlXPathConvertBoolean();
-    test_ret += test_xmlXPathConvertNumber();
-    test_ret += test_xmlXPathConvertString();
-    test_ret += test_xmlXPathCtxtCompile();
-    test_ret += test_xmlXPathEval();
-    test_ret += test_xmlXPathEvalExpression();
-    test_ret += test_xmlXPathEvalPredicate();
-    test_ret += test_xmlXPathInit();
-    test_ret += test_xmlXPathIsInf();
-    test_ret += test_xmlXPathIsNaN();
-    test_ret += test_xmlXPathNewContext();
-    test_ret += test_xmlXPathNodeEval();
-    test_ret += test_xmlXPathNodeSetCreate();
-    test_ret += test_xmlXPathObjectCopy();
-    test_ret += test_xmlXPathOrderDocElems();
-    test_ret += test_xmlXPathSetContextNode();
-    test_ret += test_xmlXPathSetErrorHandler();
-
-    if (test_ret != 0)
-	printf("Module xpath: %d errors\n", test_ret);
-    return(test_ret);
-}
-#ifdef LIBXML_XPATH_ENABLED
-
-#define gen_nb_xmlXPathParserContextPtr 1
-#define gen_xmlXPathParserContextPtr(no, nr) NULL
-#define des_xmlXPathParserContextPtr(no, val, nr)
-#endif
-
-
-static int
-test_xmlXPathAddValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathAddValues(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathAddValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathBooleanFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathBooleanFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathBooleanFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCeilingFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathCeilingFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCeilingFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCompareValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int inf; /* less than (1) or greater than (0) */
-    int n_inf;
-    int strict; /* is the comparison strict */
-    int n_strict;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_inf = 0;n_inf < gen_nb_int;n_inf++) {
-    for (n_strict = 0;n_strict < gen_nb_int;n_strict++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        inf = gen_int(n_inf, 1);
-        strict = gen_int(n_strict, 2);
-
-        ret_val = xmlXPathCompareValues(ctxt, inf, strict);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_inf, inf, 1);
-        des_int(n_strict, strict, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCompareValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_inf);
-            printf(" %d", n_strict);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathConcatFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathConcatFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathConcatFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathContainsFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathContainsFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathContainsFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathCountFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathCountFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathCountFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDebugDumpCompExpr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * for the output */
-    int n_output;
-    xmlXPathCompExprPtr comp; /* the precompiled XPath expression */
-    int n_comp;
-    int depth; /* the indentation level. */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_comp = 0;n_comp < gen_nb_xmlXPathCompExprPtr;n_comp++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        comp = gen_xmlXPathCompExprPtr(n_comp, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlXPathDebugDumpCompExpr(output, comp, depth);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlXPathCompExprPtr(n_comp, comp, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDebugDumpCompExpr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_comp);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDebugDumpObject(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
-    int mem_base;
-    FILE * output; /* the FILE * to dump the output */
-    int n_output;
-    xmlXPathObjectPtr cur; /* the object to inspect */
-    int n_cur;
-    int depth; /* indentation level */
-    int n_depth;
-
-    for (n_output = 0;n_output < gen_nb_FILE_ptr;n_output++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlXPathObjectPtr;n_cur++) {
-    for (n_depth = 0;n_depth < gen_nb_int;n_depth++) {
-        mem_base = xmlMemBlocks();
-        output = gen_FILE_ptr(n_output, 0);
-        cur = gen_xmlXPathObjectPtr(n_cur, 1);
-        depth = gen_int(n_depth, 2);
-
-        xmlXPathDebugDumpObject(output, cur, depth);
-        call_tests++;
-        des_FILE_ptr(n_output, output, 0);
-        des_xmlXPathObjectPtr(n_cur, cur, 1);
-        des_int(n_depth, depth, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDebugDumpObject",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_output);
-            printf(" %d", n_cur);
-            printf(" %d", n_depth);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDifference(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathDifference(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDifference",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDistinct(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set */
-    int n_nodes;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-
-        ret_val = xmlXPathDistinct(nodes);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDistinct",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDistinctSorted(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set, sorted by document order */
-    int n_nodes;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-
-        ret_val = xmlXPathDistinctSorted(nodes);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDistinctSorted",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathDivValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathDivValues(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathDivValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEqualValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathEqualValues(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEqualValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathErr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* a XPath parser context */
-    int n_ctxt;
-    int code; /* the error code */
-    int n_code;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_code = 0;n_code < gen_nb_int;n_code++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        code = gen_int(n_code, 1);
-
-        xmlXPathErr(ctxt, code);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_code, code, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathErr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_code);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEvalExpr(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathEvalExpr(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEvalExpr",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathEvaluatePredicateResult(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlXPathObjectPtr res; /* the Predicate Expression evaluation result */
-    int n_res;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_res = 0;n_res < gen_nb_xmlXPathObjectPtr;n_res++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        res = gen_xmlXPathObjectPtr(n_res, 1);
-
-        ret_val = xmlXPathEvaluatePredicateResult(ctxt, res);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlXPathObjectPtr(n_res, res, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathEvaluatePredicateResult",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_res);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathFalseFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathFalseFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathFalseFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathFloorFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathFloorFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathFloorFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathFunctionLookup(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathFunctionLookupNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathHasSameNodes(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathHasSameNodes(nodes1, nodes2);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathHasSameNodes",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathIdFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathIdFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathIdFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathIntersection(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathIntersection(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathIntersection",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathIsNodeType(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    const xmlChar * name; /* a name string */
-    int n_name;
-
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        name = gen_const_xmlChar_ptr(n_name, 0);
-
-        ret_val = xmlXPathIsNodeType(name);
-        desret_int(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_name, name, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathIsNodeType",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathLangFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathLangFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathLangFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathLastFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathLastFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathLastFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathLeading(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathLeading(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathLeading",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathLeadingSorted(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set, sorted by document order */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set, sorted by document order */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathLeadingSorted(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathLeadingSorted",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathLocalNameFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathLocalNameFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathLocalNameFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathModValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathModValues(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathModValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathMultValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathMultValues(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathMultValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNamespaceURIFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathNamespaceURIFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNamespaceURIFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    int val; /* the boolean value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_int(n_val, 0);
-
-        ret_val = xmlXPathNewBoolean(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_int(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewCString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    const char * val; /* the char * value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_const_char_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_const_char_ptr(n_val, 0);
-
-        ret_val = xmlXPathNewCString(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_const_char_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewCString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewFloat(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    double val; /* the double value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_double;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_double(n_val, 0);
-
-        ret_val = xmlXPathNewFloat(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_double(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewFloat",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewNodeSet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlNodePtr val; /* the NodePtr value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlNodePtr(n_val, 0);
-
-        ret_val = xmlXPathNewNodeSet(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlNodePtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewNodeSet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewNodeSetList(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlNodeSetPtr val; /* an existing NodeSet */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlNodeSetPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlNodeSetPtr(n_val, 0);
-
-        ret_val = xmlXPathNewNodeSetList(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewNodeSetList",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewParserContext(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNewString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    const xmlChar * val; /* the xmlChar * value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_const_xmlChar_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_const_xmlChar_ptr(n_val, 0);
-
-        ret_val = xmlXPathNewString(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNewString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextAncestor(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextAncestor(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextAncestor",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextAncestorOrSelf(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextAncestorOrSelf(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextAncestorOrSelf",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextAttribute(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current attribute in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextAttribute(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextAttribute",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextChild(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextChild(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextChild",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextDescendant(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextDescendant(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextDescendant",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextDescendantOrSelf(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextDescendantOrSelf(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextDescendantOrSelf",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextFollowing(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextFollowing(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextFollowing",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextFollowingSibling(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextFollowingSibling(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextFollowingSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextNamespace(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current attribute in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextNamespace(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextNamespace",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextParent(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextParent(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextParent",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextPreceding(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextPreceding(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextPreceding",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextPrecedingSibling(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextPrecedingSibling(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextPrecedingSibling",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNextSelf(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodePtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    xmlNodePtr cur; /* the current node in the traversal */
-    int n_cur;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlNodePtr;n_cur++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        cur = gen_xmlNodePtr(n_cur, 1);
-
-        ret_val = xmlXPathNextSelf(ctxt, cur);
-        desret_xmlNodePtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlNodePtr(n_cur, cur, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNextSelf",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_cur);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeLeading(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set */
-    int n_nodes;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlXPathNodeLeading(nodes, node);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeLeading",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeLeadingSorted(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set, sorted by document order */
-    int n_nodes;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlXPathNodeLeadingSorted(nodes, node);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeLeadingSorted",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetAdd(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr cur; /* the initial node set */
-    int n_cur;
-    xmlNodePtr val; /* a new xmlNodePtr */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        val = gen_xmlNodePtr(n_val, 1);
-
-        ret_val = xmlXPathNodeSetAdd(cur, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_xmlNodePtr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetAdd",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetAddNs(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr cur; /* the initial node set */
-    int n_cur;
-    xmlNodePtr node; /* the hosting node */
-    int n_node;
-    xmlNsPtr ns; /* a the namespace node */
-    int n_ns;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-    for (n_ns = 0;n_ns < gen_nb_xmlNsPtr;n_ns++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-        ns = gen_xmlNsPtr(n_ns, 2);
-
-        ret_val = xmlXPathNodeSetAddNs(cur, node, ns);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        des_xmlNsPtr(n_ns, ns, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetAddNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_node);
-            printf(" %d", n_ns);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetAddUnique(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr cur; /* the initial node set */
-    int n_cur;
-    xmlNodePtr val; /* a new xmlNodePtr */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        val = gen_xmlNodePtr(n_val, 1);
-
-        ret_val = xmlXPathNodeSetAddUnique(cur, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_xmlNodePtr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetAddUnique",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetContains(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlNodeSetPtr cur; /* the node-set */
-    int n_cur;
-    xmlNodePtr val; /* the node */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        val = gen_xmlNodePtr(n_val, 1);
-
-        ret_val = xmlXPathNodeSetContains(cur, val);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_xmlNodePtr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetContains",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetDel(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr cur; /* the initial node set */
-    int n_cur;
-    xmlNodePtr val; /* an xmlNodePtr */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_xmlNodePtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        val = gen_xmlNodePtr(n_val, 1);
-
-        xmlXPathNodeSetDel(cur, val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_xmlNodePtr(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetDel",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetMerge(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr val1; /* the first NodeSet or NULL */
-    int n_val1;
-    xmlNodeSetPtr val2; /* the second NodeSet */
-    int n_val2;
-
-    for (n_val1 = 0;n_val1 < gen_nb_xmlNodeSetPtr;n_val1++) {
-    for (n_val2 = 0;n_val2 < gen_nb_xmlNodeSetPtr;n_val2++) {
-        mem_base = xmlMemBlocks();
-        val1 = gen_xmlNodeSetPtr(n_val1, 0);
-        val2 = gen_xmlNodeSetPtr(n_val2, 1);
-
-        ret_val = xmlXPathNodeSetMerge(val1, val2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_val1, val1, 0);
-        des_xmlNodeSetPtr(n_val2, val2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetMerge",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val1);
-            printf(" %d", n_val2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetRemove(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr cur; /* the initial node set */
-    int n_cur;
-    int val; /* the index to remove */
-    int n_val;
-
-    for (n_cur = 0;n_cur < gen_nb_xmlNodeSetPtr;n_cur++) {
-    for (n_val = 0;n_val < gen_nb_int;n_val++) {
-        mem_base = xmlMemBlocks();
-        cur = gen_xmlNodeSetPtr(n_cur, 0);
-        val = gen_int(n_val, 1);
-
-        xmlXPathNodeSetRemove(cur, val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_cur, cur, 0);
-        des_int(n_val, val, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetRemove",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_cur);
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeSetSort(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr set; /* the node set */
-    int n_set;
-
-    for (n_set = 0;n_set < gen_nb_xmlNodeSetPtr;n_set++) {
-        mem_base = xmlMemBlocks();
-        set = gen_xmlNodeSetPtr(n_set, 0);
-
-        xmlXPathNodeSetSort(set);
-        call_tests++;
-        des_xmlNodeSetPtr(n_set, set, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeSetSort",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_set);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeTrailing(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set */
-    int n_nodes;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlXPathNodeTrailing(nodes, node);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeTrailing",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNodeTrailingSorted(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes; /* a node-set, sorted by document order */
-    int n_nodes;
-    xmlNodePtr node; /* a node */
-    int n_node;
-
-    for (n_nodes = 0;n_nodes < gen_nb_xmlNodeSetPtr;n_nodes++) {
-    for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
-        mem_base = xmlMemBlocks();
-        nodes = gen_xmlNodeSetPtr(n_nodes, 0);
-        node = gen_xmlNodePtr(n_node, 1);
-
-        ret_val = xmlXPathNodeTrailingSorted(nodes, node);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes, nodes, 0);
-        des_xmlNodePtr(n_node, node, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNodeTrailingSorted",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes);
-            printf(" %d", n_node);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNormalizeFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathNormalizeFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNormalizeFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNotEqualValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathNotEqualValues(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNotEqualValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNotFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathNotFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNotFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNsLookup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    const xmlChar * ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * prefix; /* the namespace prefix value */
-    int n_prefix;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-
-        ret_val = xmlXPathNsLookup(ctxt, prefix);
-        desret_const_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNsLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_prefix);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathNumberFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathNumberFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathNumberFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathParseNCName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathParseNCName(ctxt);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathParseNCName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathParseName(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathParseName(ctxt);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathParseName",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPopBoolean(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathPopBoolean(ctxt);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPopBoolean",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPopExternal(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    void * ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathPopExternal(ctxt);
-        desret_void_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPopExternal",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPopNodeSet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathPopNodeSet(ctxt);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPopNodeSet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPopNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathPopNumber(ctxt);
-        desret_double(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPopNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPopString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlChar * ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathPopString(ctxt);
-        desret_xmlChar_ptr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPopString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathPositionFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathPositionFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathPositionFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterAllFunctions(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-
-        xmlXPathRegisterAllFunctions(ctxt);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisterAllFunctions",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterFunc(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterFuncLookup(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterFuncNS(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterNs(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * prefix; /* the namespace prefix cannot be NULL or empty string */
-    int n_prefix;
-    const xmlChar * ns_uri; /* the namespace name */
-    int n_ns_uri;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_prefix = 0;n_prefix < gen_nb_const_xmlChar_ptr;n_prefix++) {
-    for (n_ns_uri = 0;n_ns_uri < gen_nb_const_xmlChar_ptr;n_ns_uri++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        prefix = gen_const_xmlChar_ptr(n_prefix, 1);
-        ns_uri = gen_const_xmlChar_ptr(n_ns_uri, 2);
-
-        ret_val = xmlXPathRegisterNs(ctxt, prefix, ns_uri);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_prefix, prefix, 1);
-        des_const_xmlChar_ptr(n_ns_uri, ns_uri, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisterNs",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_prefix);
-            printf(" %d", n_ns_uri);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterVariable(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * name; /* the variable name */
-    int n_name;
-    xmlXPathObjectPtr value; /* the variable value or NULL */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_value = 0;n_value < gen_nb_xmlXPathObjectPtr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        value = gen_xmlXPathObjectPtr(n_value, 2);
-
-        ret_val = xmlXPathRegisterVariable(ctxt, name, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_xmlXPathObjectPtr(n_value, value, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisterVariable",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_name);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterVariableLookup(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisterVariableNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * name; /* the variable name */
-    int n_name;
-    const xmlChar * ns_uri; /* the variable namespace URI */
-    int n_ns_uri;
-    xmlXPathObjectPtr value; /* the variable value or NULL */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns_uri = 0;n_ns_uri < gen_nb_const_xmlChar_ptr;n_ns_uri++) {
-    for (n_value = 0;n_value < gen_nb_xmlXPathObjectPtr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ns_uri = gen_const_xmlChar_ptr(n_ns_uri, 2);
-        value = gen_xmlXPathObjectPtr(n_value, 3);
-
-        ret_val = xmlXPathRegisterVariableNS(ctxt, name, ns_uri, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ns_uri, ns_uri, 2);
-        des_xmlXPathObjectPtr(n_value, value, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisterVariableNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_name);
-            printf(" %d", n_ns_uri);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisteredFuncsCleanup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-
-        xmlXPathRegisteredFuncsCleanup(ctxt);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisteredFuncsCleanup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisteredNsCleanup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-
-        xmlXPathRegisteredNsCleanup(ctxt);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisteredNsCleanup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRegisteredVariablesCleanup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-
-        xmlXPathRegisteredVariablesCleanup(ctxt);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRegisteredVariablesCleanup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRoot(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathRoot(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRoot",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathRoundFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathRoundFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathRoundFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathStartsWithFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathStartsWithFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathStartsWithFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathStringEvalNumber(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    double ret_val;
-    const xmlChar * str; /* A string to scan */
-    int n_str;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-
-        ret_val = xmlXPathStringEvalNumber(str);
-        desret_double(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathStringEvalNumber",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathStringFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathStringFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathStringFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathStringLengthFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathStringLengthFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathStringLengthFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSubValues(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathSubValues(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSubValues",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSubstringAfterFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathSubstringAfterFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSubstringAfterFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSubstringBeforeFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathSubstringBeforeFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSubstringBeforeFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSubstringFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathSubstringFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSubstringFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathSumFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathSumFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathSumFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathTrailing(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathTrailing(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathTrailing",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathTrailingSorted(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlNodeSetPtr ret_val;
-    xmlNodeSetPtr nodes1; /* a node-set, sorted by document order */
-    int n_nodes1;
-    xmlNodeSetPtr nodes2; /* a node-set, sorted by document order */
-    int n_nodes2;
-
-    for (n_nodes1 = 0;n_nodes1 < gen_nb_xmlNodeSetPtr;n_nodes1++) {
-    for (n_nodes2 = 0;n_nodes2 < gen_nb_xmlNodeSetPtr;n_nodes2++) {
-        mem_base = xmlMemBlocks();
-        nodes1 = gen_xmlNodeSetPtr(n_nodes1, 0);
-        nodes2 = gen_xmlNodeSetPtr(n_nodes2, 1);
-
-        ret_val = xmlXPathTrailingSorted(nodes1, nodes2);
-        desret_xmlNodeSetPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_nodes1, nodes1, 0);
-        des_xmlNodeSetPtr(n_nodes2, nodes2, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathTrailingSorted",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_nodes1);
-            printf(" %d", n_nodes2);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathTranslateFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathTranslateFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathTranslateFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathTrueFunction(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    int nargs; /* the number of arguments */
-    int n_nargs;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_nargs = 0;n_nargs < gen_nb_int;n_nargs++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        nargs = gen_int(n_nargs, 1);
-
-        xmlXPathTrueFunction(ctxt, nargs);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_int(n_nargs, nargs, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathTrueFunction",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_nargs);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathValueFlipSign(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        xmlXPathValueFlipSign(ctxt);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathValueFlipSign",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathValuePop(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath evaluation context */
-    int n_ctxt;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-
-        ret_val = xmlXPathValuePop(ctxt);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathValuePop",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathValuePush(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    int ret_val;
-    xmlXPathParserContextPtr ctxt; /* an XPath evaluation context */
-    int n_ctxt;
-    xmlXPathObjectPtr value; /* the XPath object */
-    int n_value;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_value = 0;n_value < gen_nb_xmlXPathObjectPtr;n_value++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        value = gen_xmlXPathObjectPtr(n_value, 1);
-
-        ret_val = xmlXPathValuePush(ctxt, value);
-        desret_int(ret_val);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_xmlXPathObjectPtr(n_value, value, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathValuePush",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_value);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathVariableLookup(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * name; /* the variable name */
-    int n_name;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-
-        ret_val = xmlXPathVariableLookup(ctxt, name);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathVariableLookup",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_name);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathVariableLookupNS(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlXPathContextPtr ctxt; /* the XPath context */
-    int n_ctxt;
-    const xmlChar * name; /* the variable name */
-    int n_name;
-    const xmlChar * ns_uri; /* the variable namespace URI */
-    int n_ns_uri;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathContextPtr;n_ctxt++) {
-    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
-    for (n_ns_uri = 0;n_ns_uri < gen_nb_const_xmlChar_ptr;n_ns_uri++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathContextPtr(n_ctxt, 0);
-        name = gen_const_xmlChar_ptr(n_name, 1);
-        ns_uri = gen_const_xmlChar_ptr(n_ns_uri, 2);
-
-        ret_val = xmlXPathVariableLookupNS(ctxt, name, ns_uri);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlXPathContextPtr(n_ctxt, ctxt, 0);
-        des_const_xmlChar_ptr(n_name, name, 1);
-        des_const_xmlChar_ptr(n_ns_uri, ns_uri, 2);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathVariableLookupNS",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_name);
-            printf(" %d", n_ns_uri);
-            printf("\n");
-        }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathWrapCString(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    char * val; /* the char * value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_char_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_char_ptr(n_val, 0);
-
-        ret_val = xmlXPathWrapCString(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_char_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathWrapCString",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathWrapExternal(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    void * val; /* the user data */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_void_ptr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_void_ptr(n_val, 0);
-
-        ret_val = xmlXPathWrapExternal(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_void_ptr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathWrapExternal",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPathWrapNodeSet(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    xmlNodeSetPtr val; /* the NodePtr value */
-    int n_val;
-
-    for (n_val = 0;n_val < gen_nb_xmlNodeSetPtr;n_val++) {
-        mem_base = xmlMemBlocks();
-        val = gen_xmlNodeSetPtr(n_val, 0);
-
-        ret_val = xmlXPathWrapNodeSet(val);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_xmlNodeSetPtr(n_val, val, 0);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPathWrapNodeSet",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_val);
-            printf("\n");
-        }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPatherror(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPATH_ENABLED)
-    int mem_base;
-    xmlXPathParserContextPtr ctxt; /* the XPath Parser context */
-    int n_ctxt;
-    const char * file; /* the file name */
-    int n_file;
-    int line; /* the line number */
-    int n_line;
-    int no; /* the error number */
-    int n_no;
-
-    for (n_ctxt = 0;n_ctxt < gen_nb_xmlXPathParserContextPtr;n_ctxt++) {
-    for (n_file = 0;n_file < gen_nb_filepath;n_file++) {
-    for (n_line = 0;n_line < gen_nb_int;n_line++) {
-    for (n_no = 0;n_no < gen_nb_int;n_no++) {
-        mem_base = xmlMemBlocks();
-        ctxt = gen_xmlXPathParserContextPtr(n_ctxt, 0);
-        file = gen_filepath(n_file, 1);
-        line = gen_int(n_line, 2);
-        no = gen_int(n_no, 3);
-
-        xmlXPatherror(ctxt, file, line, no);
-        call_tests++;
-        des_xmlXPathParserContextPtr(n_ctxt, ctxt, 0);
-        des_filepath(n_file, file, 1);
-        des_int(n_line, line, 2);
-        des_int(n_no, no, 3);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPatherror",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_ctxt);
-            printf(" %d", n_file);
-            printf(" %d", n_line);
-            printf(" %d", n_no);
-            printf("\n");
-        }
-    }
-    }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-static int
-test_xpathInternals(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xpathInternals : 106 of 117 functions ...\n");
-    test_ret += test_xmlXPathAddValues();
-    test_ret += test_xmlXPathBooleanFunction();
-    test_ret += test_xmlXPathCeilingFunction();
-    test_ret += test_xmlXPathCompareValues();
-    test_ret += test_xmlXPathConcatFunction();
-    test_ret += test_xmlXPathContainsFunction();
-    test_ret += test_xmlXPathCountFunction();
-    test_ret += test_xmlXPathDebugDumpCompExpr();
-    test_ret += test_xmlXPathDebugDumpObject();
-    test_ret += test_xmlXPathDifference();
-    test_ret += test_xmlXPathDistinct();
-    test_ret += test_xmlXPathDistinctSorted();
-    test_ret += test_xmlXPathDivValues();
-    test_ret += test_xmlXPathEqualValues();
-    test_ret += test_xmlXPathErr();
-    test_ret += test_xmlXPathEvalExpr();
-    test_ret += test_xmlXPathEvaluatePredicateResult();
-    test_ret += test_xmlXPathFalseFunction();
-    test_ret += test_xmlXPathFloorFunction();
-    test_ret += test_xmlXPathFunctionLookup();
-    test_ret += test_xmlXPathFunctionLookupNS();
-    test_ret += test_xmlXPathHasSameNodes();
-    test_ret += test_xmlXPathIdFunction();
-    test_ret += test_xmlXPathIntersection();
-    test_ret += test_xmlXPathIsNodeType();
-    test_ret += test_xmlXPathLangFunction();
-    test_ret += test_xmlXPathLastFunction();
-    test_ret += test_xmlXPathLeading();
-    test_ret += test_xmlXPathLeadingSorted();
-    test_ret += test_xmlXPathLocalNameFunction();
-    test_ret += test_xmlXPathModValues();
-    test_ret += test_xmlXPathMultValues();
-    test_ret += test_xmlXPathNamespaceURIFunction();
-    test_ret += test_xmlXPathNewBoolean();
-    test_ret += test_xmlXPathNewCString();
-    test_ret += test_xmlXPathNewFloat();
-    test_ret += test_xmlXPathNewNodeSet();
-    test_ret += test_xmlXPathNewNodeSetList();
-    test_ret += test_xmlXPathNewParserContext();
-    test_ret += test_xmlXPathNewString();
-    test_ret += test_xmlXPathNextAncestor();
-    test_ret += test_xmlXPathNextAncestorOrSelf();
-    test_ret += test_xmlXPathNextAttribute();
-    test_ret += test_xmlXPathNextChild();
-    test_ret += test_xmlXPathNextDescendant();
-    test_ret += test_xmlXPathNextDescendantOrSelf();
-    test_ret += test_xmlXPathNextFollowing();
-    test_ret += test_xmlXPathNextFollowingSibling();
-    test_ret += test_xmlXPathNextNamespace();
-    test_ret += test_xmlXPathNextParent();
-    test_ret += test_xmlXPathNextPreceding();
-    test_ret += test_xmlXPathNextPrecedingSibling();
-    test_ret += test_xmlXPathNextSelf();
-    test_ret += test_xmlXPathNodeLeading();
-    test_ret += test_xmlXPathNodeLeadingSorted();
-    test_ret += test_xmlXPathNodeSetAdd();
-    test_ret += test_xmlXPathNodeSetAddNs();
-    test_ret += test_xmlXPathNodeSetAddUnique();
-    test_ret += test_xmlXPathNodeSetContains();
-    test_ret += test_xmlXPathNodeSetDel();
-    test_ret += test_xmlXPathNodeSetMerge();
-    test_ret += test_xmlXPathNodeSetRemove();
-    test_ret += test_xmlXPathNodeSetSort();
-    test_ret += test_xmlXPathNodeTrailing();
-    test_ret += test_xmlXPathNodeTrailingSorted();
-    test_ret += test_xmlXPathNormalizeFunction();
-    test_ret += test_xmlXPathNotEqualValues();
-    test_ret += test_xmlXPathNotFunction();
-    test_ret += test_xmlXPathNsLookup();
-    test_ret += test_xmlXPathNumberFunction();
-    test_ret += test_xmlXPathParseNCName();
-    test_ret += test_xmlXPathParseName();
-    test_ret += test_xmlXPathPopBoolean();
-    test_ret += test_xmlXPathPopExternal();
-    test_ret += test_xmlXPathPopNodeSet();
-    test_ret += test_xmlXPathPopNumber();
-    test_ret += test_xmlXPathPopString();
-    test_ret += test_xmlXPathPositionFunction();
-    test_ret += test_xmlXPathRegisterAllFunctions();
-    test_ret += test_xmlXPathRegisterFunc();
-    test_ret += test_xmlXPathRegisterFuncLookup();
-    test_ret += test_xmlXPathRegisterFuncNS();
-    test_ret += test_xmlXPathRegisterNs();
-    test_ret += test_xmlXPathRegisterVariable();
-    test_ret += test_xmlXPathRegisterVariableLookup();
-    test_ret += test_xmlXPathRegisterVariableNS();
-    test_ret += test_xmlXPathRegisteredFuncsCleanup();
-    test_ret += test_xmlXPathRegisteredNsCleanup();
-    test_ret += test_xmlXPathRegisteredVariablesCleanup();
-    test_ret += test_xmlXPathRoot();
-    test_ret += test_xmlXPathRoundFunction();
-    test_ret += test_xmlXPathStartsWithFunction();
-    test_ret += test_xmlXPathStringEvalNumber();
-    test_ret += test_xmlXPathStringFunction();
-    test_ret += test_xmlXPathStringLengthFunction();
-    test_ret += test_xmlXPathSubValues();
-    test_ret += test_xmlXPathSubstringAfterFunction();
-    test_ret += test_xmlXPathSubstringBeforeFunction();
-    test_ret += test_xmlXPathSubstringFunction();
-    test_ret += test_xmlXPathSumFunction();
-    test_ret += test_xmlXPathTrailing();
-    test_ret += test_xmlXPathTrailingSorted();
-    test_ret += test_xmlXPathTranslateFunction();
-    test_ret += test_xmlXPathTrueFunction();
-    test_ret += test_xmlXPathValueFlipSign();
-    test_ret += test_xmlXPathValuePop();
-    test_ret += test_xmlXPathValuePush();
-    test_ret += test_xmlXPathVariableLookup();
-    test_ret += test_xmlXPathVariableLookupNS();
-    test_ret += test_xmlXPathWrapCString();
-    test_ret += test_xmlXPathWrapExternal();
-    test_ret += test_xmlXPathWrapNodeSet();
-    test_ret += test_xmlXPatherror();
-
-    if (test_ret != 0)
-	printf("Module xpathInternals: %d errors\n", test_ret);
-    return(test_ret);
-}
-
-static int
-test_xmlXPtrEval(void) {
-    int test_ret = 0;
-
-#if defined(LIBXML_XPTR_ENABLED)
-    int mem_base;
-    xmlXPathObjectPtr ret_val;
-    const xmlChar * str; /* the XPointer expression */
-    int n_str;
-    xmlXPathContextPtr ctx; /* the XPointer context */
-    int n_ctx;
-
-    for (n_str = 0;n_str < gen_nb_const_xmlChar_ptr;n_str++) {
-    for (n_ctx = 0;n_ctx < gen_nb_xmlXPathContextPtr;n_ctx++) {
-        mem_base = xmlMemBlocks();
-        str = gen_const_xmlChar_ptr(n_str, 0);
-        ctx = gen_xmlXPathContextPtr(n_ctx, 1);
-
-        ret_val = xmlXPtrEval(str, ctx);
-        desret_xmlXPathObjectPtr(ret_val);
-        call_tests++;
-        des_const_xmlChar_ptr(n_str, str, 0);
-        des_xmlXPathContextPtr(n_ctx, ctx, 1);
-        xmlResetLastError();
-        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %d blocks found in xmlXPtrEval",
-	           xmlMemBlocks() - mem_base);
-	    test_ret++;
-            printf(" %d", n_str);
-            printf(" %d", n_ctx);
-            printf("\n");
-        }
-    }
-    }
-    function_tests++;
-#endif
-
-    return(test_ret);
-}
-
-
-static int
-test_xmlXPtrNewContext(void) {
-    int test_ret = 0;
-
-
-    /* missing type support */
-    return(test_ret);
-}
-
-static int
-test_xpointer(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing xpointer : 1 of 2 functions ...\n");
-    test_ret += test_xmlXPtrEval();
-    test_ret += test_xmlXPtrNewContext();
-
-    if (test_ret != 0)
-	printf("Module xpointer: %d errors\n", test_ret);
-    return(test_ret);
-}
-static int
-test_module(const char *module) {
-    if (!strcmp(module, "HTMLparser")) return(test_HTMLparser());
-    if (!strcmp(module, "HTMLtree")) return(test_HTMLtree());
-    if (!strcmp(module, "SAX2")) return(test_SAX2());
-    if (!strcmp(module, "c14n")) return(test_c14n());
-    if (!strcmp(module, "catalog")) return(test_catalog());
-    if (!strcmp(module, "chvalid")) return(test_chvalid());
-    if (!strcmp(module, "debugXML")) return(test_debugXML());
-    if (!strcmp(module, "dict")) return(test_dict());
-    if (!strcmp(module, "encoding")) return(test_encoding());
-    if (!strcmp(module, "entities")) return(test_entities());
-    if (!strcmp(module, "hash")) return(test_hash());
-    if (!strcmp(module, "list")) return(test_list());
-    if (!strcmp(module, "nanohttp")) return(test_nanohttp());
-    if (!strcmp(module, "parser")) return(test_parser());
-    if (!strcmp(module, "parserInternals")) return(test_parserInternals());
-    if (!strcmp(module, "pattern")) return(test_pattern());
-    if (!strcmp(module, "relaxng")) return(test_relaxng());
-    if (!strcmp(module, "schemasInternals")) return(test_schemasInternals());
-    if (!strcmp(module, "schematron")) return(test_schematron());
-    if (!strcmp(module, "tree")) return(test_tree());
-    if (!strcmp(module, "uri")) return(test_uri());
-    if (!strcmp(module, "valid")) return(test_valid());
-    if (!strcmp(module, "xinclude")) return(test_xinclude());
-    if (!strcmp(module, "xmlIO")) return(test_xmlIO());
-    if (!strcmp(module, "xmlautomata")) return(test_xmlautomata());
-    if (!strcmp(module, "xmlerror")) return(test_xmlerror());
-    if (!strcmp(module, "xmlmodule")) return(test_xmlmodule());
-    if (!strcmp(module, "xmlreader")) return(test_xmlreader());
-    if (!strcmp(module, "xmlregexp")) return(test_xmlregexp());
-    if (!strcmp(module, "xmlsave")) return(test_xmlsave());
-    if (!strcmp(module, "xmlschemas")) return(test_xmlschemas());
-    if (!strcmp(module, "xmlschemastypes")) return(test_xmlschemastypes());
-    if (!strcmp(module, "xmlstring")) return(test_xmlstring());
-    if (!strcmp(module, "xmlwriter")) return(test_xmlwriter());
-    if (!strcmp(module, "xpath")) return(test_xpath());
-    if (!strcmp(module, "xpathInternals")) return(test_xpathInternals());
-    if (!strcmp(module, "xpointer")) return(test_xpointer());
-    return(0);
+    xmlCleanupParser();
+    return 0;
 }
diff -pruN 2.14.6+dfsg-0.1/testchar.c 2.15.0+dfsg-0.3/testchar.c
--- 2.14.6+dfsg-0.1/testchar.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testchar.c	2025-09-15 11:55:59.000000000 +0000
@@ -14,7 +14,7 @@
 #include <libxml/parser.h>
 #include <libxml/parserInternals.h>
 
-int lastError;
+static int lastError;
 
 static void errorHandler(void *unused, const xmlError *err) {
     if ((unused == NULL) && (err != NULL) && (lastError == 0)) {
@@ -22,8 +22,8 @@ static void errorHandler(void *unused, c
     }
 }
 
-char document1[100] = "<doc>XXXX</doc>";
-char document2[100] = "<doc foo='XXXX'/>";
+static char document1[100] = "<doc>XXXX</doc>";
+static char document2[100] = "<doc foo='XXXX'/>";
 
 static int testDocumentRangeByte1(xmlParserCtxtPtr ctxt, char *document,
                   int len,  char *data, int forbid1, int forbid2) {
@@ -153,8 +153,6 @@ static int testDocumentRangeByte2(xmlPar
 }
 
 /**
- * testDocumentRanges:
- *
  * Test the correct UTF8 character parsing in context of XML documents
  * Those are in-context injection tests checking the parser behaviour on
  * edge case values at different point in content, beginning and end of
@@ -624,8 +622,6 @@ static int testCharRangeByte4(xmlParserC
 }
 
 /**
- * testCharRanges:
- *
  * Test the correct UTF8 character parsing in isolation i.e.
  * not when parsing a full document, this is less expensive and we can
  * cover the full range of UTF-8 chars accepted by XML-1.0
@@ -979,6 +975,9 @@ testUTF16(void) {
                        utf16BE, sizeof(utf16BE) - 1) != 0)
         ret = -1;
 
+    xmlCharEncCloseFunc(handler16LE);
+    xmlCharEncCloseFunc(handler16BE);
+
     return(ret);
 }
 
diff -pruN 2.14.6+dfsg-0.1/testlimits.c 2.15.0+dfsg-0.3/testlimits.c
--- 2.14.6+dfsg-0.1/testlimits.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testlimits.c	2025-09-15 11:55:59.000000000 +0000
@@ -7,7 +7,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #include "libxml.h"
@@ -39,7 +39,7 @@ static int tests_quiet = 0;
 #define MAX_TIME 2 /* seconds */
 
 static clock_t t0;
-int timeout = 0;
+static int timeout = 0;
 
 static void reset_timout(void) {
     timeout = 0;
@@ -89,12 +89,10 @@ static unsigned int currentTest = 0;
 static int instate = 0;
 
 /**
- * hugeMatch:
- * @URI: an URI to test
- *
  * Check for an huge: query
  *
- * Returns 1 if yes and 0 if another Input module should be used
+ * @param URI  an URI to test
+ * @returns 1 if yes and 0 if another Input module should be used
  */
 static int
 hugeMatch(const char * URI) {
@@ -104,13 +102,11 @@ hugeMatch(const char * URI) {
 }
 
 /**
- * hugeOpen:
- * @URI: an URI to test
- *
- * Return a pointer to the huge: query handler, in this example simply
+ * Returns a pointer to the huge: query handler, in this example simply
  * the current pointer...
  *
- * Returns an Input context or NULL in case or error
+ * @param URI  an URI to test
+ * @returns an Input context or NULL in case or error
  */
 static void *
 hugeOpen(const char * URI) {
@@ -132,12 +128,10 @@ found:
 }
 
 /**
- * hugeClose:
- * @context: the read context
- *
  * Close the huge: query handler
  *
- * Returns 0 or -1 in case of error
+ * @param context  the read context
+ * @returns 0 or -1 in case of error
  */
 static int
 hugeClose(void * context) {
@@ -148,7 +142,7 @@ hugeClose(void * context) {
 
 #define CHUNK 4096
 
-char filling[CHUNK + 1];
+static char filling[CHUNK + 1];
 
 static void fillFilling(void) {
     int i;
@@ -159,19 +153,17 @@ static void fillFilling(void) {
     filling[CHUNK] = 0;
 }
 
-size_t maxlen = 64 * 1024 * 1024;
-size_t curlen = 0;
-size_t dotlen;
+static size_t maxlen = 64 * 1024 * 1024;
+static size_t curlen = 0;
+static size_t dotlen;
 
 /**
- * hugeRead:
- * @context: the read context
- * @buffer: where to store data
- * @len: number of bytes to read
- *
  * Implement an huge: query read.
  *
- * Returns the number of bytes read or -1 in case of error
+ * @param context  the read context
+ * @param buffer  where to store data
+ * @param len  number of bytes to read
+ * @returns the number of bytes read or -1 in case of error
  */
 static int
 hugeRead(void *context, char *buffer, int len)
@@ -229,9 +221,9 @@ hugeRead(void *context, char *buffer, in
  *									*
  ************************************************************************/
 
-unsigned int crazy_indx = 0;
+static unsigned int crazy_indx = 0;
 
-const char *crazy = "<?xml version='1.0' encoding='UTF-8'?>\
+static const char *const crazy = "<?xml version='1.0' encoding='UTF-8'?>\
 <?tst ?>\
 <!-- tst -->\
 <!DOCTYPE foo [\
@@ -252,12 +244,10 @@ foo\
 <!-- tst -->";
 
 /**
- * crazyMatch:
- * @URI: an URI to test
- *
  * Check for a crazy: query
  *
- * Returns 1 if yes and 0 if another Input module should be used
+ * @param URI  an URI to test
+ * @returns 1 if yes and 0 if another Input module should be used
  */
 static int
 crazyMatch(const char * URI) {
@@ -267,13 +257,11 @@ crazyMatch(const char * URI) {
 }
 
 /**
- * crazyOpen:
- * @URI: an URI to test
- *
- * Return a pointer to the crazy: query handler, in this example simply
+ * Returns a pointer to the crazy: query handler, in this example simply
  * the current pointer...
  *
- * Returns an Input context or NULL in case or error
+ * @param URI  an URI to test
+ * @returns an Input context or NULL in case or error
  */
 static void *
 crazyOpen(const char * URI) {
@@ -290,12 +278,10 @@ crazyOpen(const char * URI) {
 }
 
 /**
- * crazyClose:
- * @context: the read context
- *
  * Close the crazy: query handler
  *
- * Returns 0 or -1 in case of error
+ * @param context  the read context
+ * @returns 0 or -1 in case of error
  */
 static int
 crazyClose(void * context) {
@@ -305,14 +291,12 @@ crazyClose(void * context) {
 
 
 /**
- * crazyRead:
- * @context: the read context
- * @buffer: where to store data
- * @len: number of bytes to read
- *
  * Implement an crazy: query read.
  *
- * Returns the number of bytes read or -1 in case of error
+ * @param context  the read context
+ * @param buffer  where to store data
+ * @param len  number of bytes to read
+ * @returns the number of bytes read or -1 in case of error
  */
 static int
 crazyRead(void *context, char *buffer, int len)
@@ -402,15 +386,13 @@ initializeLibxml2(void) {
  *									*
  ************************************************************************/
 
-unsigned long callbacks = 0;
+static unsigned long callbacks = 0;
 
 /**
- * isStandaloneCallback:
- * @ctxt:  An XML parser context
- *
  * Is this document tagged standalone ?
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 isStandaloneCallback(void *ctx ATTRIBUTE_UNUSED)
@@ -420,12 +402,10 @@ isStandaloneCallback(void *ctx ATTRIBUTE
 }
 
 /**
- * hasInternalSubsetCallback:
- * @ctxt:  An XML parser context
- *
  * Does this document has an internal subset
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 hasInternalSubsetCallback(void *ctx ATTRIBUTE_UNUSED)
@@ -435,12 +415,10 @@ hasInternalSubsetCallback(void *ctx ATTR
 }
 
 /**
- * hasExternalSubsetCallback:
- * @ctxt:  An XML parser context
- *
  * Does this document has an external subset
  *
- * Returns 1 if true
+ * @param ctxt  An XML parser context
+ * @returns 1 if true
  */
 static int
 hasExternalSubsetCallback(void *ctx ATTRIBUTE_UNUSED)
@@ -450,10 +428,9 @@ hasExternalSubsetCallback(void *ctx ATTR
 }
 
 /**
- * internalSubsetCallback:
- * @ctxt:  An XML parser context
- *
  * Does this document has an internal subset
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 internalSubsetCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -465,10 +442,9 @@ internalSubsetCallback(void *ctx ATTRIBU
 }
 
 /**
- * externalSubsetCallback:
- * @ctxt:  An XML parser context
- *
  * Does this document has an external subset
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 externalSubsetCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -480,18 +456,16 @@ externalSubsetCallback(void *ctx ATTRIBU
 }
 
 /**
- * resolveEntityCallback:
- * @ctxt:  An XML parser context
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * Special entity resolver, better left to the parser, it has
  * more context than the application layer.
  * The default behaviour is to NOT resolve the entities, in that case
  * the ENTITY_REF nodes are built in the structure (and the parameter
  * values).
  *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ * @param ctxt  An XML parser context
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @returns the xmlParserInput if inlined or NULL for DOM behaviour.
  */
 static xmlParserInputPtr
 resolveEntityCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -503,13 +477,11 @@ resolveEntityCallback(void *ctx ATTRIBUT
 }
 
 /**
- * getEntityCallback:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
  * Get an entity by name
  *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
+ * @returns the xmlParserInput if inlined or NULL for DOM behaviour.
  */
 static xmlEntityPtr
 getEntityCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -520,13 +492,11 @@ getEntityCallback(void *ctx ATTRIBUTE_UN
 }
 
 /**
- * getParameterEntityCallback:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
  * Get a parameter entity by name
  *
- * Returns the xmlParserInputPtr
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
+ * @returns the xmlParserInput
  */
 static xmlEntityPtr
 getParameterEntityCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -538,15 +508,14 @@ getParameterEntityCallback(void *ctx ATT
 
 
 /**
- * entityDeclCallback:
- * @ctxt:  An XML parser context
- * @name:  the entity name
- * @type:  the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
- *
  * An entity definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the entity name
+ * @param type  the entity type
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param content  the entity value (without processing).
  */
 static void
 entityDeclCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -560,12 +529,11 @@ entityDeclCallback(void *ctx ATTRIBUTE_U
 }
 
 /**
- * attributeDeclCallback:
- * @ctxt:  An XML parser context
- * @name:  the attribute name
- * @type:  the attribute type
- *
  * An attribute definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the attribute name
+ * @param type  the attribute type
  */
 static void
 attributeDeclCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -579,13 +547,12 @@ attributeDeclCallback(void *ctx ATTRIBUT
 }
 
 /**
- * elementDeclCallback:
- * @ctxt:  An XML parser context
- * @name:  the element name
- * @type:  the element type
- * @content: the element value (without processing).
- *
  * An element definition has been parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  the element name
+ * @param type  the element type
+ * @param content  the element value (without processing).
  */
 static void
 elementDeclCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -597,13 +564,12 @@ elementDeclCallback(void *ctx ATTRIBUTE_
 }
 
 /**
- * notationDeclCallback:
- * @ctxt:  An XML parser context
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
  * What to do when a notation declaration has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The name of the notation
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
  */
 static void
 notationDeclCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -615,14 +581,13 @@ notationDeclCallback(void *ctx ATTRIBUTE
 }
 
 /**
- * unparsedEntityDeclCallback:
- * @ctxt:  An XML parser context
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
- *
  * What to do when an unparsed entity declaration is parsed
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The name of the entity
+ * @param publicId  The public ID of the entity
+ * @param systemId  The system ID of the entity
+ * @param notationName  the name of the notation
  */
 static void
 unparsedEntityDeclCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -635,12 +600,11 @@ unparsedEntityDeclCallback(void *ctx ATT
 }
 
 /**
- * setDocumentLocatorCallback:
- * @ctxt:  An XML parser context
- * @loc: A SAX Locator
- *
  * Receive the document locator at startup, actually xmlDefaultSAXLocator
  * Everything is available on the context, so this is useless in our case.
+ *
+ * @param ctxt  An XML parser context
+ * @param loc  A SAX Locator
  */
 static void
 setDocumentLocatorCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -650,10 +614,9 @@ setDocumentLocatorCallback(void *ctx ATT
 }
 
 /**
- * startDocumentCallback:
- * @ctxt:  An XML parser context
- *
  * called when the document start being processed.
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 startDocumentCallback(void *ctx ATTRIBUTE_UNUSED)
@@ -662,10 +625,9 @@ startDocumentCallback(void *ctx ATTRIBUT
 }
 
 /**
- * endDocumentCallback:
- * @ctxt:  An XML parser context
- *
  * called when the document end has been detected.
+ *
+ * @param ctxt  An XML parser context
  */
 static void
 endDocumentCallback(void *ctx ATTRIBUTE_UNUSED)
@@ -675,11 +637,10 @@ endDocumentCallback(void *ctx ATTRIBUTE_
 
 #if 0
 /**
- * startElementCallback:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 startElementCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -691,11 +652,10 @@ startElementCallback(void *ctx ATTRIBUTE
 }
 
 /**
- * endElementCallback:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when the end of an element has been detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 endElementCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -707,13 +667,12 @@ endElementCallback(void *ctx ATTRIBUTE_U
 #endif
 
 /**
- * charactersCallback:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some chars from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 static void
 charactersCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -724,11 +683,10 @@ charactersCallback(void *ctx ATTRIBUTE_U
 }
 
 /**
- * referenceCallback:
- * @ctxt:  An XML parser context
- * @name:  The entity name
- *
  * called when an entity reference is detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The entity name
  */
 static void
 referenceCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -738,14 +696,13 @@ referenceCallback(void *ctx ATTRIBUTE_UN
 }
 
 /**
- * ignorableWhitespaceCallback:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @start: the first char in the string
- * @len: the number of xmlChar
- *
  * receiving some ignorable whitespaces from the parser.
  * Question: how much at a time ???
+ *
+ * @param ctxt  An XML parser context
+ * @param ch  a xmlChar string
+ * @param start  the first char in the string
+ * @param len  the number of xmlChar
  */
 static void
 ignorableWhitespaceCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -756,13 +713,12 @@ ignorableWhitespaceCallback(void *ctx AT
 }
 
 /**
- * processingInstructionCallback:
- * @ctxt:  An XML parser context
- * @target:  the target name
- * @data: the PI data's
- * @len: the number of xmlChar
- *
  * A processing instruction has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param target  the target name
+ * @param data  the PI data's
+ * @param len  the number of xmlChar
  */
 static void
 processingInstructionCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -773,12 +729,11 @@ processingInstructionCallback(void *ctx
 }
 
 /**
- * cdataBlockCallback:
- * @ctx: the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
- *
  * called when a pcdata block has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param value  The pcdata content
+ * @param len  the block length
  */
 static void
 cdataBlockCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -789,11 +744,10 @@ cdataBlockCallback(void *ctx ATTRIBUTE_U
 }
 
 /**
- * commentCallback:
- * @ctxt:  An XML parser context
- * @value:  the comment content
- *
  * A comment has been parsed.
+ *
+ * @param ctxt  An XML parser context
+ * @param value  the comment content
  */
 static void
 commentCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -803,13 +757,12 @@ commentCallback(void *ctx ATTRIBUTE_UNUS
 }
 
 /**
- * warningCallback:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a warning messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 warningCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -819,13 +772,12 @@ warningCallback(void *ctx ATTRIBUTE_UNUS
 }
 
 /**
- * errorCallback:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a error messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 errorCallback(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
@@ -835,13 +787,12 @@ errorCallback(void *ctx ATTRIBUTE_UNUSED
 }
 
 /**
- * fatalErrorCallback:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
  * Display and format a fatalError messages, gives file, line, position and
  * extra parameters.
+ *
+ * @param ctxt  An XML parser context
+ * @param msg  the message to display/transmit
+ * @param ...  extra parameters for the message display
  */
 static void
 fatalErrorCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -855,11 +806,10 @@ fatalErrorCallback(void *ctx ATTRIBUTE_U
  */
 
 /**
- * startElementNsCallback:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 startElementNsCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -876,11 +826,10 @@ startElementNsCallback(void *ctx ATTRIBU
 }
 
 /**
- * endElementCallback:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
  * called when the end of an element has been detected.
+ *
+ * @param ctxt  An XML parser context
+ * @param name  The element name
  */
 static void
 endElementNsCallback(void *ctx ATTRIBUTE_UNUSED,
@@ -935,15 +884,13 @@ static xmlSAXHandlerPtr callbackSAX2Hand
  ************************************************************************/
 
 /**
- * readerTest:
- * @filename: the file to parse
- * @max_size: size of the limit to test
- * @options: parsing options
- * @fail: should a failure be reported
- *
  * Parse a memory generated file using SAX
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param max_size  size of the limit to test
+ * @param options  parsing options
+ * @param fail  should a failure be reported
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 saxTest(const char *filename, size_t limit, int options, int fail) {
@@ -987,15 +934,13 @@ saxTest(const char *filename, size_t lim
 }
 #ifdef LIBXML_READER_ENABLED
 /**
- * readerTest:
- * @filename: the file to parse
- * @max_size: size of the limit to test
- * @options: parsing options
- * @fail: should a failure be reported
- *
  * Parse a memory generated file using the xmlReader
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param max_size  size of the limit to test
+ * @param options  parsing options
+ * @param fail  should a failure be reported
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 readerTest(const char *filename, size_t limit, int options, int fail) {
diff -pruN 2.14.6+dfsg-0.1/testparser.c 2.15.0+dfsg-0.3/testparser.c
--- 2.14.6+dfsg-0.1/testparser.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testparser.c	2025-09-15 11:55:59.000000000 +0000
@@ -14,6 +14,7 @@
 #include <libxml/xmlsave.h>
 #include <libxml/xmlwriter.h>
 #include <libxml/HTMLparser.h>
+#include <libxml/HTMLtree.h>
 
 #include <string.h>
 
@@ -201,6 +202,75 @@ testInvalidCharRecovery(void) {
     return err;
 }
 
+static void
+testCtxtInputGetterError(void *errCtxt, const xmlError *error) {
+    int *err = errCtxt;
+    xmlParserCtxt *ctxt = error->ctxt;
+    const char *filename;
+    int line, col;
+    unsigned long bytePos;
+    const xmlChar *start;
+    int size, offset;
+
+    xmlCtxtGetInputPosition(ctxt, 0, &filename, &line, &col, &bytePos);
+
+    if (strcmp(filename, "test.xml") != 0 ||
+        line != 4 || col != 11 || bytePos != 62) {
+        fprintf(stderr, "unexpected position: %s %d %d %lu\n",
+                filename, line, col, bytePos);
+        *err = 1;
+    }
+
+    size = 80;
+    xmlCtxtGetInputWindow(ctxt, 0, &start, &size, &offset);
+
+    if (strncmp((char *) start, "<doc>&ent;", 10) != 0 ||
+        size != 16 || offset != 10) {
+        fprintf(stderr, "unexpected window: %.10s %d %d\n",
+                start, size, offset);
+        *err = 1;
+    }
+
+    xmlCtxtGetInputPosition(ctxt, -1, &filename, &line, &col, &bytePos);
+
+    if (filename != NULL ||
+        line != 1 || col != 11 || bytePos != 10) {
+        fprintf(stderr, "unexpected position: %s %d %d %lu\n",
+                filename, line, col, bytePos);
+        *err = 1;
+    }
+
+    size = 80;
+    xmlCtxtGetInputWindow(ctxt, -1, &start, &size, &offset);
+
+    if (strncmp((char *) start, "xxx &fail;", 10) != 0 ||
+        size != 14 || offset != 10) {
+        fprintf(stderr, "unexpected window: %.10s %d %d\n",
+                start, size, offset);
+        *err = 1;
+    }
+}
+
+static int
+testCtxtInputGetters(void) {
+    const char *xml =
+        "<!DOCTYPE doc [\n"
+        "  <!ENTITY ent 'xxx &fail; xxx'>\n"
+        "]>\n"
+        "<doc>&ent;</doc>\n";
+    xmlParserCtxt *ctxt;
+    xmlDoc *doc;
+    int err = 0;
+
+    ctxt = xmlNewParserCtxt();
+    xmlCtxtSetErrorHandler(ctxt, testCtxtInputGetterError, &err);
+    doc = xmlCtxtReadDoc(ctxt, BAD_CAST xml, "test.xml", NULL, 0);
+    xmlFreeDoc(doc);
+    xmlFreeParserCtxt(ctxt);
+
+    return err;
+}
+
 #ifdef LIBXML_VALID_ENABLED
 static void
 testSwitchDtdExtSubset(void *vctxt, const xmlChar *name ATTRIBUTE_UNUSED,
@@ -405,6 +475,30 @@ testSaveNullEnc(void) {
 
     return err;
 }
+
+static int
+testDocDumpFormatMemoryEnc(void) {
+    const char *xml = "<doc>\xC3\x98</doc>";
+    const char *expect =
+        "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"
+        "<doc>\xD8</doc>\n";
+    xmlDocPtr doc;
+    xmlChar *text;
+    int len;
+    int err = 0;
+
+    doc = xmlReadDoc(BAD_CAST xml, NULL, NULL, 0);
+    xmlDocDumpFormatMemoryEnc(doc, &text, &len, "iso-8859-1", 0);
+
+    if (strcmp((char *) text, expect) != 0) {
+        fprintf(stderr, "xmlDocDumpFormatMemoryEnc failed\n");
+        err = 1;
+    }
+
+    xmlFree(text);
+    xmlFreeDoc(doc);
+    return err;
+}
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 #ifdef LIBXML_SAX1_ENABLED
@@ -530,7 +624,7 @@ testPushCDataEnd(void) {
     int err = 0;
     int k;
 
-    for (k = 0; k < 2; k++) {
+    for (k = 0; k < 4; k++) {
         xmlBufferPtr buf;
         xmlChar *chunk;
         xmlParserCtxtPtr ctxt;
@@ -548,7 +642,7 @@ testPushCDataEnd(void) {
         /*
          * Also test xmlParseCharDataCopmlex
          */
-        if (k == 0)
+        if (k & 1)
             xmlBufferCCat(buf, "x");
         else
             xmlBufferCCat(buf, "\xC3\xA4");
@@ -560,12 +654,19 @@ testPushCDataEnd(void) {
         for (i = 0; i < 2000; i++)
             xmlBufferCCat(buf, "x");
 
-        xmlBufferCCat(buf, "]");
+        if (k & 2)
+            xmlBufferCCat(buf, "]");
+        else
+            xmlBufferCCat(buf, "]]");
+
         chunk = xmlBufferDetach(buf);
         xmlBufferFree(buf);
 
         xmlParseChunk(ctxt, (char *) chunk, xmlStrlen(chunk), 0);
-        xmlParseChunk(ctxt, "]>xxx</doc>", 11, 1);
+        if (k & 2)
+            xmlParseChunk(ctxt, "]>xxx</doc>", 11, 1);
+        else
+            xmlParseChunk(ctxt, ">xxx</doc>", 10, 1);
 
         if (ctxt->errNo != XML_ERR_MISPLACED_CDATA_END) {
             fprintf(stderr, "xmlParseChunk failed to detect CData end: %d\n",
@@ -606,6 +707,131 @@ testHtmlIds(void) {
     return 0;
 }
 
+#define MHE "meta http-equiv=\"Content-Type\""
+
+#ifdef LIBXML_OUTPUT_ENABLED
+static int
+testHtmlInsertMetaEncoding(void) {
+    /* We currently require a head element to be present. */
+    const char *html =
+        "<html>"
+        "<head></head>"
+        "<body>text</body>"
+        "</html>\n";
+    const char *expect =
+        "<html>"
+        "<head><meta charset=\"utf-8\"></head>"
+        "<body>text</body>"
+        "</html>\n";
+    htmlDocPtr doc;
+    xmlBufferPtr buf;
+    xmlSaveCtxtPtr save;
+    xmlChar *out;
+    int size, err = 0;
+
+
+    doc = htmlReadDoc(BAD_CAST html, NULL, NULL, HTML_PARSE_NODEFDTD);
+
+    /* xmlSave updates meta tags */
+    buf = xmlBufferCreate();
+    save = xmlSaveToBuffer(buf, "utf-8", 0);
+    xmlSaveDoc(save, doc);
+    xmlSaveClose(save);
+    if (!xmlStrEqual(xmlBufferContent(buf), BAD_CAST expect)) {
+        fprintf(stderr, "meta tag insertion failed when serializing\n");
+        err = 1;
+    }
+    xmlBufferFree(buf);
+
+    htmlSetMetaEncoding(doc, BAD_CAST "utf-8");
+    /* htmlDocDumpMemoryFormat doesn't update meta tags */
+    htmlDocDumpMemoryFormat(doc, &out, &size, 0);
+    if (!xmlStrEqual(out, BAD_CAST expect)) {
+        fprintf(stderr, "htmlSetMetaEncoding insertion failed\n");
+        err = 1;
+    }
+    xmlFree(out);
+
+    xmlFreeDoc(doc);
+    return err;
+}
+
+static int
+testHtmlUpdateMetaEncoding(void) {
+    /* We rely on the implementation adjusting all meta tags */
+    const char *html =
+        "<html>\n"
+        "    <head>\n"
+        "        <meta charset=\"utf-8\">\n"
+        "        <meta charset=\"  foo  \">\n"
+        "        <meta charset=\"\">\n"
+        "        <" MHE " content=\"text/html; ChArSeT=foo\">\n"
+        "        <" MHE " content=\"text/html; charset = \">\n"
+        "        <" MHE " content=\"text/html; charset = '  foo  '\">\n"
+        "        <" MHE " content=\"text/html; charset = '  foo  \">\n"
+        "        <" MHE " content='text/html; charset = \"  foo  \"'>\n"
+        "        <" MHE " content='text/html; charset = \"  foo  '>\n"
+        "        <" MHE " content=\"charset ; charset = bar; baz\">\n"
+        "        <" MHE " content=\"text/html\">\n"
+        "        <" MHE " content=\"\">\n"
+        "        <" MHE ">\n"
+        "    </head>\n"
+        "    <body></body>\n"
+        "</html>\n";
+    const char *expect =
+        "<html>\n"
+        "    <head>\n"
+        "        <meta charset=\"utf-8\">\n"
+        "        <meta charset=\"  utf-8  \">\n"
+        "        <meta charset=\"utf-8\">\n"
+        "        <" MHE " content=\"text/html; ChArSeT=utf-8\">\n"
+        "        <" MHE " content=\"text/html; charset = \">\n"
+        "        <" MHE " content=\"text/html; charset = '  utf-8  '\">\n"
+        "        <" MHE " content=\"text/html; charset = '  foo  \">\n"
+        "        <" MHE " content=\"text/html; charset = &quot;  utf-8  &quot;\">\n"
+        "        <" MHE " content=\"text/html; charset = &quot;  foo  \">\n"
+        "        <" MHE " content=\"charset ; charset = utf-8; baz\">\n"
+        "        <" MHE " content=\"text/html\">\n"
+        "        <" MHE " content=\"\">\n"
+        "        <" MHE ">\n"
+        "    </head>\n"
+        "    <body></body>\n"
+        "</html>\n";
+    htmlDocPtr doc;
+    xmlBufferPtr buf;
+    xmlSaveCtxtPtr save;
+    xmlChar *out;
+    int size, err = 0;
+
+    doc = htmlReadDoc(BAD_CAST html, NULL, NULL, HTML_PARSE_NODEFDTD);
+
+    /* xmlSave updates meta tags */
+    buf = xmlBufferCreate();
+    save = xmlSaveToBuffer(buf, NULL, 0);
+    xmlSaveDoc(save, doc);
+    xmlSaveClose(save);
+    if (!xmlStrEqual(xmlBufferContent(buf), BAD_CAST expect)) {
+        fprintf(stderr, "meta tag update failed when serializing\n");
+        err = 1;
+    }
+    xmlBufferFree(buf);
+
+    xmlFree((xmlChar *) doc->encoding);
+    doc->encoding = NULL;
+    htmlSetMetaEncoding(doc, BAD_CAST "utf-8");
+    /* htmlDocDumpMemoryFormat doesn't update meta tags */
+    htmlDocDumpMemoryFormat(doc, &out, &size, 0);
+    if (!xmlStrEqual(out, BAD_CAST expect)) {
+        fprintf(stderr, "htmlSetMetaEncoding update failed\n");
+        err = 1;
+    }
+    xmlFree(out);
+
+    xmlFreeDoc(doc);
+    return err;
+}
+#endif /* LIBXML_OUTPUT_ENABLED */
+
 #ifdef LIBXML_PUSH_ENABLED
 static int
 testHtmlPushWithEncoding(void) {
@@ -670,6 +896,7 @@ testReaderEncoding(void) {
     return err;
 }
 
+#ifdef LIBXML_OUTPUT_ENABLED
 static int
 testReaderContent(void) {
     xmlTextReader *reader;
@@ -704,6 +931,7 @@ testReaderContent(void) {
     xmlFreeTextReader(reader);
     return err;
 }
+#endif /* LIBXML_OUTPUT_ENABLED */
 
 static int
 testReaderNode(xmlTextReader *reader) {
@@ -1270,6 +1498,7 @@ main(void) {
     err |= testCFileIO();
     err |= testUndeclEntInContent();
     err |= testInvalidCharRecovery();
+    err |= testCtxtInputGetters();
 #ifdef LIBXML_VALID_ENABLED
     err |= testSwitchDtd();
 #endif
@@ -1277,6 +1506,7 @@ main(void) {
     err |= testCtxtParseContent();
     err |= testNoBlanks();
     err |= testSaveNullEnc();
+    err |= testDocDumpFormatMemoryEnc();
 #endif
 #ifdef LIBXML_SAX1_ENABLED
     err |= testBalancedChunk();
@@ -1288,13 +1518,19 @@ main(void) {
 #endif
 #ifdef LIBXML_HTML_ENABLED
     err |= testHtmlIds();
+#ifdef LIBXML_OUTPUT_ENABLED
+    err |= testHtmlInsertMetaEncoding();
+    err |= testHtmlUpdateMetaEncoding();
+#endif
 #ifdef LIBXML_PUSH_ENABLED
     err |= testHtmlPushWithEncoding();
 #endif
 #endif
 #ifdef LIBXML_READER_ENABLED
     err |= testReaderEncoding();
+#ifdef LIBXML_OUTPUT_ENABLED
     err |= testReaderContent();
+#endif
     err |= testReader();
 #ifdef LIBXML_XINCLUDE_ENABLED
     err |= testReaderXIncludeError();
diff -pruN 2.14.6+dfsg-0.1/testrecurse.c 2.15.0+dfsg-0.3/testrecurse.c
--- 2.14.6+dfsg-0.1/testrecurse.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/testrecurse.c	2025-09-15 11:55:59.000000000 +0000
@@ -7,7 +7,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define XML_DEPRECATED_MEMBER
@@ -99,13 +99,13 @@ static int glob(const char *pattern, ATT
     if (hFind == INVALID_HANDLE_VALUE)
         return(0);
     nb_paths = 20;
-    ret->gl_pathv = (char **) malloc(nb_paths * sizeof(char *));
+    ret->gl_pathv = (char **) xmlMalloc(nb_paths * sizeof(char *));
     if (ret->gl_pathv == NULL) {
 	FindClose(hFind);
         return(-1);
     }
     strncpy(directory + len, FindFileData.cFileName, 499 - len);
-    ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+    ret->gl_pathv[ret->gl_pathc] = xmlMemStrdup(directory);
     if (ret->gl_pathv[ret->gl_pathc] == NULL)
         goto done;
     ret->gl_pathc++;
@@ -113,14 +113,14 @@ static int glob(const char *pattern, ATT
         if (FindFileData.cFileName[0] == '.')
 	    continue;
         if (ret->gl_pathc + 2 > nb_paths) {
-            char **tmp = realloc(ret->gl_pathv, nb_paths * 2 * sizeof(char *));
+            char **tmp = xmlRealloc(ret->gl_pathv, nb_paths * 2 * sizeof(char *));
             if (tmp == NULL)
                 break;
             ret->gl_pathv = tmp;
             nb_paths *= 2;
 	}
 	strncpy(directory + len, FindFileData.cFileName, 499 - len);
-	ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+	ret->gl_pathv[ret->gl_pathc] = xmlMemStrdup(directory);
         if (ret->gl_pathv[ret->gl_pathc] == NULL)
             break;
         ret->gl_pathc++;
@@ -141,7 +141,7 @@ static void globfree(glob_t *pglob) {
 
     for (i = 0;i < pglob->gl_pathc;i++) {
          if (pglob->gl_pathv[i] != NULL)
-             free(pglob->gl_pathv[i]);
+             xmlFree(pglob->gl_pathv[i]);
     }
 }
 
@@ -244,12 +244,10 @@ static const char *current;
 static int rlen;
 
 /**
- * hugeMatch:
- * @URI: an URI to test
- *
  * Check for a huge query
  *
- * Returns 1 if yes and 0 if another Input module should be used
+ * @param URI  an URI to test
+ * @returns 1 if yes and 0 if another Input module should be used
  */
 static int
 hugeMatch(const char * URI) {
@@ -267,13 +265,11 @@ hugeMatch(const char * URI) {
 }
 
 /**
- * hugeOpen:
- * @URI: an URI to test
- *
- * Return a pointer to the huge query handler, in this example simply
+ * Returns a pointer to the huge query handler, in this example simply
  * the current pointer...
  *
- * Returns an Input context or NULL in case or error
+ * @param URI  an URI to test
+ * @returns an Input context or NULL in case or error
  */
 static void *
 hugeOpen(const char * URI) {
@@ -296,12 +292,10 @@ hugeOpen(const char * URI) {
 }
 
 /**
- * hugeClose:
- * @context: the read context
- *
  * Close the huge query handler
  *
- * Returns 0 or -1 in case of error
+ * @param context  the read context
+ * @returns 0 or -1 in case of error
  */
 static int
 hugeClose(void * context) {
@@ -312,14 +306,12 @@ hugeClose(void * context) {
 #define MAX_NODES 1000
 
 /**
- * hugeRead:
- * @context: the read context
- * @buffer: where to store data
- * @len: number of bytes to read
- *
  * Implement an huge query read.
  *
- * Returns the number of bytes read or -1 in case of error
+ * @param context  the read context
+ * @param buffer  where to store data
+ * @param len  number of bytes to read
+ * @returns the number of bytes read or -1 in case of error
  */
 static int
 hugeRead(void *context, char *buffer, int len)
@@ -438,7 +430,7 @@ static char *resultFilename(const char *
 
     if (snprintf(res, 499, "%s%s%s", out, base, suffixbuff) >= 499)
         res[499] = 0;
-    return(strdup(res));
+    return(xmlMemStrdup(res));
 }
 
 static int checkTestFile(const char *filename) {
@@ -466,15 +458,13 @@ static int checkTestFile(const char *fil
  *									*
  ************************************************************************/
 /**
- * recursiveDetectTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a file loading DTD and replacing entities check it fails for
  * lol cases
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 recursiveDetectTest(const char *filename,
@@ -514,15 +504,13 @@ recursiveDetectTest(const char *filename
 }
 
 /**
- * notRecursiveDetectTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a file loading DTD and replacing entities check it works for
  * good cases
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 notRecursiveDetectTest(const char *filename,
@@ -557,15 +545,13 @@ notRecursiveDetectTest(const char *filen
 }
 
 /**
- * notRecursiveHugeTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a memory generated file
  * good cases
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 notRecursiveHugeTest(const char *filename ATTRIBUTE_UNUSED,
@@ -659,15 +645,13 @@ notRecursiveHugeTest(const char *filenam
 }
 
 /**
- * notRecursiveHugeTest:
- * @filename: the file to parse
- * @result: the file with expected result
- * @err: the file with error messages: unused
- *
  * Parse a memory generated file
  * good cases
  *
- * Returns 0 in case of success, an error code otherwise
+ * @param filename  the file to parse
+ * @param result  the file with expected result
+ * @param err  the file with error messages: unused
+ * @returns 0 in case of success, an error code otherwise
  */
 static int
 hugeDtdTest(const char *filename ATTRIBUTE_UNUSED,
@@ -862,9 +846,9 @@ launchTests(testDescPtr tst) {
 		}
 	    }
 	    if (result)
-		free(result);
+		xmlFree(result);
 	    if (error)
-		free(error);
+		xmlFree(error);
 	}
 	globfree(&globbuf);
     } else {
diff -pruN 2.14.6+dfsg-0.1/threads.c 2.15.0+dfsg-0.3/threads.c
--- 2.14.6+dfsg-0.1/threads.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/threads.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,8 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Gary Pennington <Gary.Pennington@uk.sun.com>
- * daniel@veillard.com
+ * Author: Gary Pennington, Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -49,13 +48,12 @@
 static xmlRMutex xmlLibraryLock;
 
 /**
- * xmlInitMutex:
- * @mutex:  the mutex
- *
  * Initialize a mutex.
+ *
+ * @param mutex  the mutex
  */
 void
-xmlInitMutex(xmlMutexPtr mutex)
+xmlInitMutex(xmlMutex *mutex)
 {
 #ifdef HAVE_POSIX_THREADS
     pthread_mutex_init(&mutex->lock, NULL);
@@ -67,14 +65,12 @@ xmlInitMutex(xmlMutexPtr mutex)
 }
 
 /**
- * xmlNewMutex:
- *
- * xmlNewMutex() is used to allocate a libxml2 token struct for use in
+ * #xmlNewMutex is used to allocate a libxml2 token struct for use in
  * synchronizing access to data.
  *
- * Returns a new simple mutex pointer or NULL in case of error
+ * @returns a new simple mutex pointer or NULL in case of error
  */
-xmlMutexPtr
+xmlMutex *
 xmlNewMutex(void)
 {
     xmlMutexPtr tok;
@@ -87,13 +83,12 @@ xmlNewMutex(void)
 }
 
 /**
- * xmlCleanupMutex:
- * @mutex:  the simple mutex
- *
  * Reclaim resources associated with a mutex.
+ *
+ * @param mutex  the simple mutex
  */
 void
-xmlCleanupMutex(xmlMutexPtr mutex)
+xmlCleanupMutex(xmlMutex *mutex)
 {
 #ifdef HAVE_POSIX_THREADS
     pthread_mutex_destroy(&mutex->lock);
@@ -105,13 +100,12 @@ xmlCleanupMutex(xmlMutexPtr mutex)
 }
 
 /**
- * xmlFreeMutex:
- * @tok:  the simple mutex
- *
  * Free a mutex.
+ *
+ * @param tok  the simple mutex
  */
 void
-xmlFreeMutex(xmlMutexPtr tok)
+xmlFreeMutex(xmlMutex *tok)
 {
     if (tok == NULL)
         return;
@@ -121,13 +115,12 @@ xmlFreeMutex(xmlMutexPtr tok)
 }
 
 /**
- * xmlMutexLock:
- * @tok:  the simple mutex
+ * #xmlMutexLock is used to lock a libxml2 token.
  *
- * xmlMutexLock() is used to lock a libxml2 token.
+ * @param tok  the simple mutex
  */
 void
-xmlMutexLock(xmlMutexPtr tok)
+xmlMutexLock(xmlMutex *tok)
 {
     if (tok == NULL)
         return;
@@ -144,13 +137,12 @@ xmlMutexLock(xmlMutexPtr tok)
 }
 
 /**
- * xmlMutexUnlock:
- * @tok:  the simple mutex
+ * #xmlMutexUnlock is used to unlock a libxml2 token.
  *
- * xmlMutexUnlock() is used to unlock a libxml2 token.
+ * @param tok  the simple mutex
  */
 void
-xmlMutexUnlock(xmlMutexPtr tok)
+xmlMutexUnlock(xmlMutex *tok)
 {
     if (tok == NULL)
         return;
@@ -162,13 +154,12 @@ xmlMutexUnlock(xmlMutexPtr tok)
 }
 
 /**
- * xmlInitRMutex:
- * @tok:  mutex
- *
  * Initialize the mutex.
+ *
+ * @param tok  mutex
  */
 void
-xmlInitRMutex(xmlRMutexPtr tok) {
+xmlInitRMutex(xmlRMutex *tok) {
     (void) tok;
 
 #ifdef HAVE_POSIX_THREADS
@@ -182,16 +173,14 @@ xmlInitRMutex(xmlRMutexPtr tok) {
 }
 
 /**
- * xmlNewRMutex:
- *
- * xmlRNewMutex() is used to allocate a reentrant mutex for use in
+ * 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.
  *
- * Returns the new reentrant mutex pointer or NULL in case of error
+ * @returns the new reentrant mutex pointer or NULL in case of error
  */
-xmlRMutexPtr
+xmlRMutex *
 xmlNewRMutex(void)
 {
     xmlRMutexPtr tok;
@@ -204,13 +193,12 @@ xmlNewRMutex(void)
 }
 
 /**
- * xmlCleanupRMutex:
- * @tok:  mutex
- *
  * Cleanup the mutex.
+ *
+ * @param tok  mutex
  */
 void
-xmlCleanupRMutex(xmlRMutexPtr tok) {
+xmlCleanupRMutex(xmlRMutex *tok) {
     (void) tok;
 
 #ifdef HAVE_POSIX_THREADS
@@ -222,14 +210,13 @@ xmlCleanupRMutex(xmlRMutexPtr tok) {
 }
 
 /**
- * xmlFreeRMutex:
- * @tok:  the reentrant mutex
- *
- * xmlRFreeMutex() is used to reclaim resources associated with a
+ * Used to reclaim resources associated with a
  * reentrant mutex.
+ *
+ * @param tok  the reentrant mutex
  */
 void
-xmlFreeRMutex(xmlRMutexPtr tok)
+xmlFreeRMutex(xmlRMutex *tok)
 {
     if (tok == NULL)
         return;
@@ -238,13 +225,12 @@ xmlFreeRMutex(xmlRMutexPtr tok)
 }
 
 /**
- * xmlRMutexLock:
- * @tok:  the reentrant mutex
+ * #xmlRMutexLock is used to lock a libxml2 token_r.
  *
- * xmlRMutexLock() is used to lock a libxml2 token_r.
+ * @param tok  the reentrant mutex
  */
 void
-xmlRMutexLock(xmlRMutexPtr tok)
+xmlRMutexLock(xmlRMutex *tok)
 {
     if (tok == NULL)
         return;
@@ -271,13 +257,12 @@ xmlRMutexLock(xmlRMutexPtr tok)
 }
 
 /**
- * xmlRMutexUnlock:
- * @tok:  the reentrant mutex
+ * #xmlRMutexUnlock is used to unlock a libxml2 token_r.
  *
- * xmlRMutexUnlock() is used to unlock a libxml2 token_r.
+ * @param tok  the reentrant mutex
  */
 void
-xmlRMutexUnlock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
+xmlRMutexUnlock(xmlRMutex *tok ATTRIBUTE_UNUSED)
 {
     if (tok == NULL)
         return;
@@ -302,9 +287,7 @@ xmlRMutexUnlock(xmlRMutexPtr tok ATTRIBU
  ************************************************************************/
 
 /**
- * xmlLockLibrary:
- *
- * xmlLockLibrary() is used to take out a re-entrant lock on the libxml2
+ * #xmlLockLibrary is used to take out a re-entrant lock on the libxml2
  * library.
  */
 void
@@ -314,9 +297,7 @@ xmlLockLibrary(void)
 }
 
 /**
- * xmlUnlockLibrary:
- *
- * xmlUnlockLibrary() is used to release a re-entrant lock on the libxml2
+ * #xmlUnlockLibrary is used to release a re-entrant lock on the libxml2
  * library.
  */
 void
@@ -326,9 +307,7 @@ xmlUnlockLibrary(void)
 }
 
 /**
- * xmlInitThreads:
- *
- * DEPRECATED: Alias for xmlInitParser.
+ * @deprecated Alias for #xmlInitParser.
  */
 void
 xmlInitThreads(void)
@@ -337,10 +316,8 @@ xmlInitThreads(void)
 }
 
 /**
- * xmlCleanupThreads:
- *
- * DEPRECATED: This function is a no-op. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function is a no-op. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  */
@@ -393,6 +370,12 @@ xmlInitParserInternal(void) {
 #ifdef LIBXML_CATALOG_ENABLED
     xmlInitCatalogInternal();
 #endif
+#ifdef LIBXML_SCHEMAS_ENABLED
+    xmlInitSchemasTypesInternal();
+#endif
+#ifdef LIBXML_RELAXNG_ENABLED
+    xmlInitRelaxNGInternal();
+#endif
 
     xmlParserInitialized = 1;
 }
@@ -408,8 +391,6 @@ xmlInitParserWinWrapper(INIT_ONCE *initO
 #endif
 
 /**
- * xmlInitParser:
- *
  * Initialization function for the XML parser.
  *
  * For older versions, it's recommended to call this function once
@@ -434,20 +415,29 @@ xmlInitParser(void) {
 }
 
 /**
- * xmlCleanupParser:
+ * Free global memory allocations.
  *
  * This function is named somewhat misleadingly. It does not clean up
- * parser state but global memory allocated by the library itself.
+ * parser state but frees global memory allocated by various components
+ * of the library.
  *
- * Since 2.9.11, cleanup is performed automatically if a shared or
- * dynamic libxml2 library is unloaded. This function should only
- * be used to avoid false positives from memory leak checkers in
- * static builds.
- *
- * WARNING: xmlCleanupParser assumes that all other threads that called
- * libxml2 functions have terminated. No library calls must be made
- * after calling this function. In general, THIS FUNCTION SHOULD ONLY
- * BE CALLED RIGHT BEFORE THE WHOLE PROCESS EXITS.
+ * Since 2.9.11, cleanup is performed automatically on most platforms
+ * and there's no need at all for manual cleanup. This includes all
+ * compilers and platforms that support GCC-style destructor attributes
+ * as well as Windows DLLs.
+ *
+ * This function should only be used to avoid false positives from
+ * memory leak checkers if automatic cleanup isn't possible, for
+ * example with static builds on MSVC.
+ *
+ * WARNING: xmlCleanupParser is not thread-safe. If this function is
+ * called and any threads that could make calls into libxml2 are
+ * still running, memory corruption is likely to occur.
+ *
+ * No library calls must be made (from any thread) after calling this
+ * function. In general, *this function should only be called right
+ * before the whole process exits.* Calling this function too early
+ * will lead to memory corruption.
  */
 void
 xmlCleanupParser(void) {
@@ -472,6 +462,14 @@ xmlCleanupParser(void) {
     xmlRelaxNGCleanupTypes();
 #endif
 
+#ifdef LIBXML_SCHEMAS_ENABLED
+    /* Must be after xmlRelaxNGCleanupTypes */
+    xmlCleanupSchemasTypesInternal();
+#endif
+#ifdef LIBXML_RELAXNG_ENABLED
+    xmlCleanupRelaxNGInternal();
+#endif
+
     xmlCleanupDictInternal();
     xmlCleanupRandom();
     xmlCleanupGlobalsInternal();
diff -pruN 2.14.6+dfsg-0.1/tools/genChRanges.py 2.15.0+dfsg-0.3/tools/genChRanges.py
--- 2.14.6+dfsg-0.1/tools/genChRanges.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/tools/genChRanges.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,577 +0,0 @@
-#!/usr/bin/env python3
-#
-# Portions of this script have been (shamelessly) stolen from the
-# prior work of Daniel Veillard (genUnicode.py)
-#
-# I, however, take full credit for any bugs, errors or difficulties :-)
-#
-# William Brack
-# October 2003
-#
-# 18 October 2003
-# Modified to maintain binary compatibility with previous library versions
-# by adding a suffix 'Q' ('quick') to the macro generated for the original,
-# function, and adding generation of a function (with the original name) which
-# instantiates the macro.
-#
-
-import sys
-import time
-
-#
-# A routine to take a list of yes/no (1, 0) values and turn it
-# into a list of ranges.  This will later be used to determine whether
-# to generate single-byte lookup tables, or inline comparisons
-#
-def makeRange(lst):
-    ret = []
-    pos = 0
-    while pos < len(lst):
-        try:            # index generates exception if not present
-            s = lst[pos:].index(1)      # look for start of next range
-        except:
-            break                       # if no more, finished
-        pos += s                        # pointer to start of possible range
-        try:
-            e = lst[pos:].index(0)      # look for end of range
-            e += pos
-        except:                         # if no end, set to end of list
-            e = len(lst)
-        ret.append((pos, e-1))          # append range tuple to list
-        pos = e + 1                     # ready to check for next range
-    return ret
-
-sources = "chvalid.def"                 # input filename
-
-# minTableSize gives the minimum number of ranges which must be present
-# before a 256-byte lookup table is produced.  If there are less than this
-# number, a macro with inline comparisons is generated
-minTableSize = 6
-
-# dictionary of functions, key=name, element contains char-map and range-list
-Functs = {}
-
-state = 0
-
-try:
-    defines = open("chvalid.def", "r")
-except:
-    print("Missing chvalid.def, aborting ...")
-    sys.exit(1)
-
-#
-# The lines in the .def file have three types:-
-#   name:   Defines a new function block
-#   ur:     Defines individual or ranges of unicode values
-#   end:    Indicates the end of the function block
-#
-# These lines are processed below.
-#
-for line in defines.readlines():
-    # ignore blank lines, or lines beginning with '#'
-    if line[0] == '#':
-        continue
-    line = line.strip()
-    if line == '':
-        continue
-    # split line into space-separated fields, then split on type
-    try:
-        fields = line.split(' ')
-        #
-        # name line:
-        #   validate any previous function block already ended
-        #   validate this function not already defined
-        #   initialize an entry in the function dicitonary
-        #       including a mask table with no values yet defined
-        #
-        if fields[0] == 'name':
-            name = fields[1]
-            if state != 0:
-                print("'name' %s found before previous name" \
-                      "completed" % (fields[1]))
-                continue
-            state = 1
-            if name in Functs:
-                print("name '%s' already present - may give" \
-                      " wrong results" % (name))
-            else:
-                # dict entry with two list elements (chdata, rangedata)
-                Functs[name] = [ [], [] ]
-                for v in range(256):
-                    Functs[name][0].append(0)
-        #
-        # end line:
-        #   validate there was a preceding function name line
-        #   set state to show no current function active
-        #
-        elif fields[0] == 'end':
-            if state == 0:
-                print("'end' found outside of function block")
-                continue
-            state = 0
-
-        #
-        # ur line:
-        #   validate function has been defined
-        #   process remaining fields on the line, which may be either
-        #       individual unicode values or ranges of values
-        #
-        elif fields[0] == 'ur':
-            if state != 1:
-                raise Exception("'ur' found outside of 'name' block")
-            for el in fields[1:]:
-                pos = el.find('..')
-                # pos <=0 means not a range, so must be individual value
-                if pos <= 0:
-                    # cheap handling of hex or decimal values
-                    if el[0:2] == '0x':
-                        value = int(el[2:],16)
-                    elif el[0] == "'":
-                        value = ord(el[1])
-                    else:
-                        value = int(el)
-                    if ((value < 0) | (value > 0x1fffff)):
-                        raise Exception('Illegal value (%s) in ch for'\
-                                ' name %s' % (el,name))
-                    # for ur we have only ranges (makes things simpler),
-                    # so convert val to range
-                    currange = (value, value)
-                # pos > 0 means this is a range, so isolate/validate
-                # the interval
-                else:
-                    # split the range into it's first-val, last-val
-                    (first, last) = el.split("..")
-                    # convert values from text into binary
-                    if first[0:2] == '0x':
-                        start = int(first[2:],16)
-                    elif first[0] == "'":
-                        start = ord(first[1])
-                    else:
-                        start = int(first)
-                    if last[0:2] == '0x':
-                        end = int(last[2:],16)
-                    elif last[0] == "'":
-                        end = ord(last[1])
-                    else:
-                        end = int(last)
-                    if (start < 0) | (end > 0x1fffff) | (start > end):
-                        raise Exception("Invalid range '%s'" % el)
-                    currange = (start, end)
-                # common path - 'currange' has the range, now take care of it
-                # We split on single-byte values vs. multibyte
-                if currange[1] < 0x100: # single-byte
-                    for ch in range(currange[0],currange[1]+1):
-                        # validate that value not previously defined
-                        if Functs[name][0][ch]:
-                            msg = "Duplicate ch value '%s' for name '%s'" % (el, name)
-                            raise Exception(msg)
-                        Functs[name][0][ch] = 1
-                else:                   # multi-byte
-                    if currange in Functs[name][1]:
-                        raise Exception("range already defined in" \
-                                " function")
-                    else:
-                        Functs[name][1].append(currange)
-
-    except:
-        print("Failed to process line: %s" % (line))
-        raise
-#
-# At this point, the entire definition file has been processed.  Now we
-# enter the output phase, where we generate the two files chvalid.c and'
-# chvalid.h
-#
-# To do this, we first output the 'static' data (heading, fixed
-# definitions, etc.), then output the 'dynamic' data (the results
-# of the above processing), and finally output closing 'static' data
-# (e.g. the subroutine to process the ranges)
-#
-
-#
-# Generate the headings:
-#
-try:
-    header = open("include/libxml/chvalid.h", "w")
-except:
-    print("Failed to open include/libxml/chvalid.h")
-    sys.exit(1)
-
-try:
-    output = open("chvalid.c", "w")
-except:
-    print("Failed to open chvalid.c")
-    sys.exit(1)
-
-date = time.asctime(time.localtime(time.time()))
-
-header.write(
-"""/*
- * Summary: Unicode character range checking
- * Description: this module exports interfaces for the character
- *               range validation APIs
- *
- * This file is automatically generated from the cvs source
- * definition files using the genChRanges.py Python script
- *
- * Generation date: %s
- * Sources: %s
- * Author: William Brack <wbrack@mmm.com.hk>
- */
-
-#ifndef __XML_CHVALID_H__
-#define __XML_CHVALID_H__
-
-#include <libxml/xmlversion.h>
-#include <libxml/xmlstring.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Define our typedefs and structures
- *
- */
-typedef struct _xmlChSRange xmlChSRange;
-typedef xmlChSRange *xmlChSRangePtr;
-struct _xmlChSRange {
-    unsigned short\tlow;
-    unsigned short\thigh;
-};
-
-typedef struct _xmlChLRange xmlChLRange;
-typedef xmlChLRange *xmlChLRangePtr;
-struct _xmlChLRange {
-    unsigned int\tlow;
-    unsigned int\thigh;
-};
-
-typedef struct _xmlChRangeGroup xmlChRangeGroup;
-typedef xmlChRangeGroup *xmlChRangeGroupPtr;
-struct _xmlChRangeGroup {
-    int\t\t\tnbShortRange;
-    int\t\t\tnbLongRange;
-    const xmlChSRange\t*shortRange;\t/* points to an array of ranges */
-    const xmlChLRange\t*longRange;
-};
-
-/**
- * Range checking routine
- */
-XMLPUBFUN int
-\t\txmlCharInRange(unsigned int val, const xmlChRangeGroup *group);
-
-""" % (date, sources));
-output.write(
-"""/*
- * chvalid.c:\tthis module implements the character range
- *\t\tvalidation APIs
- *
- * This file is automatically generated from the cvs source
- * definition files using the genChRanges.py Python script
- *
- * Generation date: %s
- * Sources: %s
- * William Brack <wbrack@mmm.com.hk>
- */
-
-#define IN_LIBXML
-#include "libxml.h"
-#include <libxml/chvalid.h>
-
-#include <stddef.h>
-
-/*
- * The initial tables ({func_name}_tab) are used to validate whether a
- * single-byte character is within the specified group.  Each table
- * contains 256 bytes, with each byte representing one of the 256
- * possible characters.  If the table byte is set, the character is
- * allowed.
- *
- */
-""" % (date, sources));
-
-#
-# Now output the generated data.
-# We try to produce the best execution times.  Tests have shown that validation
-# with direct table lookup is, when there are a "small" number of valid items,
-# still not as fast as a sequence of inline compares.  So, if the single-byte
-# portion of a range has a "small" number of ranges, we output a macro for inline
-# compares, otherwise we output a 256-byte table and a macro to use it.
-#
-
-fkeys = sorted(Functs.keys())
-
-for f in fkeys:
-
-# First we convert the specified single-byte values into a group of ranges.
-# If the total number of such ranges is less than minTableSize, we generate
-# an inline macro for direct comparisons; if greater, we generate a lookup
-# table.
-    if max(Functs[f][0]) > 0:   # only check if at least one entry
-        rangeTable = makeRange(Functs[f][0])
-        numRanges = len(rangeTable)
-        if numRanges >= minTableSize:   # table is worthwhile
-            header.write("XMLPUBVAR const unsigned char %s_tab[256];\n" % f)
-            header.write("""
-/**
- * %s_ch:
- * @c: char to validate
- *
- * Automatically generated by genChRanges.py
- */
-""" % f)
-            header.write("#define %s_ch(c)\t(%s_tab[(c)])\n" % (f, f))
-
-            # write the constant data to the code file
-            output.write("const unsigned char %s_tab[256] = {\n" % f)
-            pline = "   "
-            for n in range(255):
-                pline += " 0x%02x," % Functs[f][0][n]
-                if len(pline) > 72:
-                    output.write(pline + "\n")
-                    pline = "   "
-            output.write(pline + " 0x%02x };\n\n" % Functs[f][0][255])
-
-        else:           # inline check is used
-            # first another little optimisation - if space is present,
-            # put it at the front of the list so it is checked first
-            try:
-                ix = rangeTable.remove((0x20, 0x20))
-                rangeTable.insert(0, (0x20, 0x20))
-            except:
-                pass
-            firstFlag = 1
-
-            header.write("""
-/**
- * %s_ch:
- * @c: char to validate
- *
- * Automatically generated by genChRanges.py
- */
-""" % f)
-            # okay, I'm tired of the messy lineup - let's automate it!
-            pline = "#define %s_ch(c)" % f
-            # 'ntab' is number of tabs needed to position to col. 33 from name end
-            ntab = 4 - (len(pline)) // 8
-            if ntab < 0:
-                ntab = 0
-            just = ""
-            for i in range(ntab):
-                just += "\t"
-            pline = pline + just + "("
-            for rg in rangeTable:
-                if not firstFlag:
-                    pline += " || \\\n\t\t\t\t "
-                else:
-                    firstFlag = 0
-                if rg[0] == rg[1]:              # single value - check equal
-                    pline += "((c) == 0x%x)" % rg[0]
-                else:                           # value range
-                # since we are doing char, also change range ending in 0xff
-                    if rg[1] != 0xff:
-                        pline += "((0x%x <= (c)) &&" % rg[0]
-                        pline += " ((c) <= 0x%x))" % rg[1]
-                    else:
-                        pline += " (0x%x <= (c))" % rg[0]
-            pline += ")\n"
-            header.write(pline)
-
-    header.write("""
-/**
- * %sQ:
- * @c: char to validate
- *
- * Automatically generated by genChRanges.py
- */
-""" % f)
-    pline = "#define %sQ(c)" % f
-    ntab = 4 - (len(pline)) // 8
-    if ntab < 0:
-        ntab = 0
-    just = ""
-    for i in range(ntab):
-        just += "\t"
-    header.write(pline + just + "(((c) < 0x100) ? \\\n\t\t\t\t ")
-    if max(Functs[f][0]) > 0:
-        header.write("%s_ch((c)) :" % f)
-    else:
-        header.write("0 :")
-
-    # if no ranges defined, value invalid if >= 0x100
-    numRanges = len(Functs[f][1])
-    if numRanges == 0:
-        header.write(" 0)\n\n")
-    else:
-        if numRanges >= minTableSize:
-            header.write(" \\\n\t\t\t\t xmlCharInRange((c), &%sGroup))\n\n"  % f)
-        else:           # if < minTableSize, generate inline code
-            firstFlag = 1
-            for rg in Functs[f][1]:
-                if not firstFlag:
-                    pline += " || \\\n\t\t\t\t "
-                else:
-                    firstFlag = 0
-                    pline = "\\\n\t\t\t\t("
-                if rg[0] == rg[1]:              # single value - check equal
-                    pline += "((c) == 0x%x)" % rg[0]
-                else:                           # value range
-                    pline += "((0x%x <= (c)) &&" % rg[0]
-                    pline += " ((c) <= 0x%x))" % rg[1]
-            pline += "))\n\n"
-            header.write(pline)
-
-
-    if len(Functs[f][1]) > 0:
-        header.write("XMLPUBVAR const xmlChRangeGroup %sGroup;\n" % f)
-
-
-#
-# Next we do the unicode ranges
-#
-
-for f in fkeys:
-    if len(Functs[f][1]) > 0:   # only generate if unicode ranges present
-        rangeTable = Functs[f][1]
-        rangeTable.sort()       # ascending tuple sequence
-        numShort = 0
-        numLong  = 0
-        for rg in rangeTable:
-            if rg[1] < 0x10000: # if short value
-                if numShort == 0:       # first occurrence
-                    pline = "static const xmlChSRange %s_srng[] = {" % f
-                else:
-                    pline += ","
-                numShort += 1
-                if len(pline) > 60:
-                    output.write(pline + "\n")
-                    pline = "    "
-                else:
-                    pline += " "
-                pline += "{0x%x, 0x%x}" % (rg[0], rg[1])
-            else:               # if long value
-                if numLong == 0:        # first occurrence
-                    if numShort > 0:    # if there were shorts, finish them off
-                        output.write(pline + "};\n")
-                    pline = "static const xmlChLRange %s_lrng[] = { " % f
-                else:
-                    pline += ", "
-                numLong += 1
-                if len(pline) > 60:
-                    output.write(pline + "\n")
-                    pline = "    "
-                pline += "{0x%x, 0x%x}" % (rg[0], rg[1])
-        output.write(pline + "};\n")    # finish off last group
-
-        pline = "const xmlChRangeGroup %sGroup =\n\t{%d, %d, " % (f, numShort, numLong)
-        if numShort > 0:
-            pline += "%s_srng" % f
-        else:
-            pline += "(xmlChSRangePtr)0"
-        if numLong > 0:
-            pline += ", %s_lrng" % f
-        else:
-            pline += ", (xmlChLRangePtr)0"
-
-        output.write(pline + "};\n\n")
-
-output.write(
-"""
-/**
- * xmlCharInRange:
- * @val: character to be validated
- * @rptr: pointer to range to be used to validate
- *
- * Does a binary search of the range table to determine if char
- * is valid
- *
- * Returns: true if character valid, false otherwise
- */
-int
-xmlCharInRange (unsigned int val, const xmlChRangeGroup *rptr) {
-    int low, high, mid;
-    const xmlChSRange *sptr;
-    const xmlChLRange *lptr;
-
-    if (rptr == NULL) return(0);
-    if (val < 0x10000) {\t/* is val in 'short' or 'long'  array? */
-\tif (rptr->nbShortRange == 0)
-\t    return 0;
-\tlow = 0;
-\thigh = rptr->nbShortRange - 1;
-\tsptr = rptr->shortRange;
-\twhile (low <= high) {
-\t    mid = (low + high) / 2;
-\t    if ((unsigned short) val < sptr[mid].low) {
-\t\thigh = mid - 1;
-\t    } else {
-\t\tif ((unsigned short) val > sptr[mid].high) {
-\t\t    low = mid + 1;
-\t\t} else {
-\t\t    return 1;
-\t\t}
-\t    }
-\t}
-    } else {
-\tif (rptr->nbLongRange == 0) {
-\t    return 0;
-\t}
-\tlow = 0;
-\thigh = rptr->nbLongRange - 1;
-\tlptr = rptr->longRange;
-\twhile (low <= high) {
-\t    mid = (low + high) / 2;
-\t    if (val < lptr[mid].low) {
-\t\thigh = mid - 1;
-\t    } else {
-\t\tif (val > lptr[mid].high) {
-\t\t    low = mid + 1;
-\t\t} else {
-\t\t    return 1;
-\t\t}
-\t    }
-\t}
-    }
-    return 0;
-}
-
-""");
-
-#
-# finally, generate the ABI compatibility functions
-#
-for f in fkeys:
-    output.write("""
-/**
- * %s:
- * @ch:  character to validate
- *
- * This function is DEPRECATED.
-""" % f);
-    if max(Functs[f][0]) > 0:
-        output.write(" * Use %s_ch or %sQ instead" % (f, f))
-    else:
-        output.write(" * Use %sQ instead" % f)
-    output.write("""
- *
- * Returns true if argument valid, false otherwise
- */
-""")
-    output.write("int\n%s(unsigned int ch) {\n    return(%sQ(ch));\n}\n\n" % (f,f))
-    header.write("XMLPUBFUN int\n\t\t%s(unsigned int ch);\n" % f);
-#
-# Run complete - write trailers and close the output files
-#
-
-header.write("""
-#ifdef __cplusplus
-}
-#endif
-#endif /* __XML_CHVALID_H__ */
-""")
-
-header.close()
-
-output.close()
-
diff -pruN 2.14.6+dfsg-0.1/tools/genEscape.py 2.15.0+dfsg-0.3/tools/genEscape.py
--- 2.14.6+dfsg-0.1/tools/genEscape.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/tools/genEscape.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,78 +0,0 @@
-#!/usr/bin/env python3
-
-entities = [
-    [ '',   '&#xFFFD;' ],
-    [ '\t', '&#9;' ],
-    [ '\n', '&#10;' ],
-    [ '\r', '&#13;' ],
-    [ '"',  '&quot;' ],
-    [ '&',  '&amp;' ],
-    [ '<',  '&lt;' ],
-    [ '>',  '&gt;' ],
-]
-
-### xmlEscapeContent
-
-offset = [ None ] * 128
-pos = 0
-r = ''
-
-for rec in entities:
-    char, repl = rec
-
-    if char:
-        offset[ord(char)] = pos
-
-    if pos % 12 == 0: r += '\n    '
-    else: r += ' '
-    r += '%3d,' % len(repl)
-    pos += 1
-
-    for c in repl:
-        if pos % 12 == 0: r += '\n    '
-        else: r += ' '
-        r += "'%s'," % c
-        pos += 1
-
-print('static const signed char xmlEscapeContent[] = {%s\n};\n' % r)
-
-### xmlEscapeTab
-
-escape = '\r&<>'
-r = ''
-
-for i in range(0x80):
-
-    if chr(i) in escape:
-        v = offset[i]
-    elif i != 9 and i != 10 and i < 32:
-        v = 0
-    else:
-        v = -1
-
-    if i % 16 == 0: r += '\n    '
-    else: r += ' '
-    r += '%2d,' % v
-
-print('static const signed char xmlEscapeTab[128] = {%s\n};\n' % r)
-
-### xmlEscapeTabAttr
-
-escape = '\t\n\r"&<>'
-r = ''
-
-for i in range(0x80):
-
-    if chr(i) in escape:
-        v = offset[i]
-    elif i != 9 and i != 10 and i < 32:
-        v = 0
-    else:
-        v = -1
-
-    if i % 16 == 0: r += '\n    '
-    else: r += ' '
-    r += '%2d,' % v
-
-print('static const char xmlEscapeTabAttr[128] = {%s\n};\n' % r)
-
diff -pruN 2.14.6+dfsg-0.1/tools/genUnicode.py 2.15.0+dfsg-0.3/tools/genUnicode.py
--- 2.14.6+dfsg-0.1/tools/genUnicode.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/tools/genUnicode.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,429 +0,0 @@
-#!/usr/bin/env python3
-#
-# Original script modified in November 2003 to take advantage of
-# the character-validation range routines, and updated to the
-# current Unicode information (Version 4.0.1)
-#
-# NOTE: there is an 'alias' facility for blocks which are not present in
-#	the current release, but are needed for ABI compatibility.  This
-#	must be accomplished MANUALLY!  Please see the comments below under
-#     'blockAliases'
-#
-import sys
-import string
-import time
-
-webpage = "http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html"
-sources = "Blocks-4.0.1.txt UnicodeData-4.0.1.txt"
-
-#
-# blockAliases is a small hack - it is used for mapping block names which
-# were were used in the 3.1 release, but are missing or changed in the current
-# release.  The format is "OldBlockName:NewBlockName1[,NewBlockName2[,...]]"
-blockAliases = []
-blockAliases.append("CombiningMarksforSymbols:CombiningDiacriticalMarksforSymbols")
-blockAliases.append("Greek:GreekandCoptic")
-blockAliases.append("PrivateUse:PrivateUseArea,SupplementaryPrivateUseArea-A," + 
-	"SupplementaryPrivateUseArea-B")
-
-# minTableSize gives the minimum number of ranges which must be present
-# before a range table is produced.  If there are less than this
-# number, inline comparisons are generated
-minTableSize = 8
-
-(blockfile, catfile) = sources.split()
-
-
-#
-# Now process the "blocks" file, reducing it to a dictionary
-# indexed by blockname, containing a tuple with the applicable
-# block range
-#
-BlockNames = {}
-try:
-    blocks = open(blockfile, "r")
-except:
-    print("Missing %s, aborting ..." % blockfile)
-    sys.exit(1)
-
-for line in blocks.readlines():
-    if line[0] == '#':
-        continue
-    line = line.strip()
-    if line == '':
-        continue
-    try:
-        fields = line.split(';')
-        range = fields[0].strip()
-        (start, end) = range.split("..")
-        name = fields[1].strip()
-        name = name.replace(' ', '')
-    except:
-        print("Failed to process line: %s" % (line))
-        continue
-    start = "0x" + start
-    end = "0x" + end
-    try:
-        BlockNames[name].append((start, end))
-    except:
-        BlockNames[name] = [(start, end)]
-blocks.close()
-print("Parsed %d blocks descriptions" % (len(BlockNames.keys())))
-
-for block in blockAliases:
-    alias = block.split(':')
-    alist = alias[1].split(',')
-    for comp in alist:
-        if comp in BlockNames:
-            if alias[0] not in BlockNames:
-                BlockNames[alias[0]] = []
-            for r in BlockNames[comp]:
-                BlockNames[alias[0]].append(r)
-        else:
-            print("Alias %s: %s not in Blocks" % (alias[0], comp))
-            continue
-
-#
-# Next process the Categories file. This is more complex, since
-# the file is in code sequence, and we need to invert it.  We use
-# a dictionary with index category-name, with each entry containing
-# all the ranges (codepoints) of that category.  Note that category
-# names comprise two parts - the general category, and the "subclass"
-# within that category.  Therefore, both "general category" (which is
-# the first character of the 2-character category-name) and the full
-# (2-character) name are entered into this dictionary.
-#
-try:
-    data = open(catfile, "r")
-except:
-    print("Missing %s, aborting ..." % catfile)
-    sys.exit(1)
-
-nbchar = 0;
-Categories = {}
-for line in data.readlines():
-    if line[0] == '#':
-        continue
-    line = line.strip()
-    if line == '':
-        continue
-    try:
-        fields = line.split(';')
-        point = fields[0].strip()
-        value = 0
-        while point != '':
-            value = value * 16
-            if point[0] >= '0' and point[0] <= '9':
-                value = value + ord(point[0]) - ord('0')
-            elif point[0] >= 'A' and point[0] <= 'F':
-                value = value + 10 + ord(point[0]) - ord('A')
-            elif point[0] >= 'a' and point[0] <= 'f':
-                value = value + 10 + ord(point[0]) - ord('a')
-            point = point[1:]
-        name = fields[2]
-    except:
-        print("Failed to process line: %s" % (line))
-        continue
-    
-    nbchar = nbchar + 1
-    # update entry for "full name"
-    try:
-        Categories[name].append(value)
-    except:
-        try:
-            Categories[name] = [value]
-        except:
-            print("Failed to process line: %s" % (line))
-    # update "general category" name
-    try:
-        Categories[name[0]].append(value)
-    except:
-        try:
-            Categories[name[0]] = [value]
-        except:
-            print("Failed to process line: %s" % (line))
-
-blocks.close()
-print("Parsed %d char generating %d categories" % (nbchar, len(Categories.keys())))
-
-#
-# The data is now all read.  Time to process it into a more useful form.
-#
-# reduce the number list into ranges
-for cat in Categories.keys():
-    list = Categories[cat]
-    start = -1
-    prev = -1
-    end = -1
-    ranges = []
-    for val in list:
-        if start == -1:
-            start = val
-            prev = val
-            continue
-        elif val == prev + 1:
-            prev = val
-            continue
-        elif prev == start:
-            ranges.append((prev, prev))
-            start = val
-            prev = val
-            continue
-        else:
-            ranges.append((start, prev))
-            start = val
-            prev = val
-            continue
-    if prev == start:
-        ranges.append((prev, prev))
-    else:
-        ranges.append((start, prev))
-    Categories[cat] = ranges
-
-#
-# Assure all data is in alphabetic order, since we will be doing binary
-# searches on the tables.
-#
-bkeys = sorted(BlockNames.keys())
-
-ckeys = sorted(Categories.keys())
-
-#
-# Generate the resulting files
-#
-try:
-    output = open("xmlunicode.c", "w")
-except:
-    print("Failed to open xmlunicode.c")
-    sys.exit(1)
-
-date = time.asctime(time.localtime(time.time()))
-
-output.write(
-"""/*
- * xmlunicode.c: this module implements the Unicode character APIs
- *
- * This file is automatically generated from the
- * UCS description files of the Unicode Character Database
- * %s
- * using the genUnicode.py Python script.
- *
- * Generation date: %s
- * Sources: %s
- * Daniel Veillard <veillard@redhat.com>
- */
-
-#define IN_LIBXML
-#include "libxml.h"
-
-#ifdef LIBXML_REGEXP_ENABLED
-
-#include <string.h>
-#include <libxml/xmlversion.h>
-#include <libxml/chvalid.h>
-
-#include "private/unicode.h"
-
-typedef int (xmlIntFunc)(int);	/* just to keep one's mind untwisted */
-
-typedef struct {
-    const char *rangename;
-    xmlIntFunc *func;
-} xmlUnicodeRange;
-
-typedef struct {
-    const xmlUnicodeRange *table;
-    int		    numentries;
-} xmlUnicodeNameTable;
-
-
-static xmlIntFunc *xmlUnicodeLookup(const xmlUnicodeNameTable *tptr, const char *tname);
-
-""" % (webpage, date, sources));
-
-#
-# For any categories with more than minTableSize ranges we generate
-# a range table suitable for xmlCharInRange
-#
-for name in ckeys:
-  if len(Categories[name]) > minTableSize:
-    numshort = 0
-    numlong = 0
-    ranges = Categories[name]
-    sptr = "NULL"
-    lptr = "NULL"
-    for range in ranges:
-      (low, high) = range
-      if high < 0x10000:
-        if numshort == 0:
-          pline = "static const xmlChSRange xml%sS[] = {" % name
-          sptr = "xml%sS" % name
-        else:
-          pline += ","
-        numshort += 1
-      else:
-        if numlong == 0:
-          if numshort > 0:
-            output.write(pline + " };\n")
-          pline = "static const xmlChLRange xml%sL[] = {" % name
-          lptr = "xml%sL" % name
-        else:
-          pline += ","
-        numlong += 1
-      if len(pline) > 60:
-        output.write(pline + "\n")
-        pline = "    "
-      elif pline[-1:] == ",":
-        pline += " "
-      pline += "{%s, %s}" % (hex(low), hex(high))
-    output.write(pline + " };\nstatic const xmlChRangeGroup xml%sG = {%s,%s,%s,%s};\n\n"
-         % (name, numshort, numlong, sptr, lptr))
-
-
-output.write(
-"""/**
- * xmlUnicodeLookup:
- * @tptr: pointer to the name table
- * @name: name to be found
- *
- * binary table lookup for user-supplied name
- *
- * Returns pointer to range function if found, otherwise NULL
- */
-static xmlIntFunc
-*xmlUnicodeLookup(const xmlUnicodeNameTable *tptr, const char *tname) {
-    int low, high, mid, cmp;
-    const xmlUnicodeRange *sptr;
-
-    if ((tptr == NULL) || (tname == NULL)) return(NULL);
-
-    low = 0;
-    high = tptr->numentries - 1;
-    sptr = tptr->table;
-    while (low <= high) {
-	mid = (low + high) / 2;
-	cmp = strcmp(tname, sptr[mid].rangename);
-	if (cmp == 0)
-	    return (sptr[mid].func);
-	if (cmp < 0)
-	    high = mid - 1;
-	else
-	    low = mid + 1;
-    }
-    return (NULL);
-}
-
-""")
-
-for block in bkeys:
-    name = block.replace('-', '')
-    output.write("/**\n * xmlUCSIs%s:\n * @code: UCS code point\n" % (name))
-    output.write(" *\n * Check whether the character is part of %s UCS Block\n"%
-                 (block))
-    output.write(" *\n * Returns 1 if true 0 otherwise\n */\n");
-    output.write("static int\nxmlUCSIs%s(int code) {\n    return(" % name)
-    flag = 0
-    for (start, end) in BlockNames[block]:
-        if flag:
-            output.write(" ||\n           ")
-        else:
-            flag = 1
-        output.write("((code >= %s) && (code <= %s))" % (start, end))
-    output.write(");\n}\n\n")
-
-for name in ckeys:
-    ranges = Categories[name]
-    output.write("/**\n * xmlUCSIsCat%s:\n * @code: UCS code point\n" % (name))
-    output.write(" *\n * Check whether the character is part of %s UCS Category\n"%
-                 (name))
-    output.write(" *\n * Returns 1 if true 0 otherwise\n */\n");
-    output.write("int\nxmlUCSIsCat%s(int code) {\n" % name)
-    if len(Categories[name]) > minTableSize:
-        output.write("    return(xmlCharInRange((unsigned int)code, &xml%sG)"
-            % name)
-    else:
-        start = 1
-        for range in ranges:
-            (begin, end) = range;
-            if start:
-                output.write("    return(");
-                start = 0
-            else:
-                output.write(" ||\n           ");
-            if (begin == end):
-                output.write("(code == %s)" % (hex(begin)))
-            else:
-                output.write("((code >= %s) && (code <= %s))" % (
-                         hex(begin), hex(end)))
-    output.write(");\n}\n\n")
-
-output.write(
-"""static const xmlUnicodeRange xmlUnicodeBlocks[] = {""")
-
-flag = 0
-for block in bkeys:
-    name = block.replace('-', '')
-    if flag:
-        output.write(',\n')
-    else:
-        flag = 1
-    output.write('  {"%s", xmlUCSIs%s}' % (block, name))
-output.write('};\n\n')
-
-output.write('static const xmlUnicodeRange xmlUnicodeCats[] = {\n')
-flag = 0;
-for name in ckeys:
-    if flag:
-        output.write(',\n')
-    else:
-        flag = 1
-    output.write('  {"%s", xmlUCSIsCat%s}' % (name, name))
-
-output.write(
-"""};
-
-static const xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, %s};
-static const xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, %s};
-
-/**
- * xmlUCSIsBlock:
- * @code: UCS code point
- * @block: UCS block name
- *
- * Check whether the character is part of the UCS Block
- *
- * Returns 1 if true, 0 if false and -1 on unknown block
- */
-int
-xmlUCSIsBlock(int code, const char *block) {
-    xmlIntFunc *func;
-
-    func = xmlUnicodeLookup(&xmlUnicodeBlockTbl, block);
-    if (func == NULL)
-	return (-1);
-    return (func(code));
-}
-
-/**
- * xmlUCSIsCat:
- * @code: UCS code point
- * @cat: UCS Category name
- *
- * Check whether the character is part of the UCS Category
- *
- * Returns 1 if true, 0 if false and -1 on unknown category
- */
-int
-xmlUCSIsCat(int code, const char *cat) {
-    xmlIntFunc *func;
-
-    func = xmlUnicodeLookup(&xmlUnicodeCatTbl, cat);
-    if (func == NULL)
-	return (-1);
-    return (func(code));
-}
-
-#endif /* LIBXML_REGEXP_ENABLED */
-""" % (len(BlockNames), len(Categories)))
-
-output.close()
diff -pruN 2.14.6+dfsg-0.1/tools/gentest.py 2.15.0+dfsg-0.3/tools/gentest.py
--- 2.14.6+dfsg-0.1/tools/gentest.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/tools/gentest.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,953 +0,0 @@
-#!/usr/bin/env python3
-#
-# generate a tester program for the API
-#
-import sys
-import os
-import string
-try:
-    import libxml2
-except:
-    print("libxml2 python bindings not available, skipping testapi.c generation")
-    sys.exit(0)
-
-if len(sys.argv) > 1:
-    srcPref = sys.argv[1] + '/'
-else:
-    srcPref = ''
-
-#
-# Modules we want to skip in API test
-#
-skipped_modules = [ "SAX", "xlink", "threads", "globals",
-  "xmlmemory", "xmlversion", "xmlexports", "xmlunicode", "nanoftp",
-]
-
-#
-# defines for each module
-#
-modules_defines = {
-    "HTMLparser": "LIBXML_HTML_ENABLED",
-    "catalog": "LIBXML_CATALOG_ENABLED",
-    "xmlreader": "LIBXML_READER_ENABLED",
-    "relaxng": "LIBXML_RELAXNG_ENABLED",
-    "schemasInternals": "LIBXML_SCHEMAS_ENABLED",
-    "xmlschemas": "LIBXML_SCHEMAS_ENABLED",
-    "xmlschemastypes": "LIBXML_SCHEMAS_ENABLED",
-    "xpath": "LIBXML_XPATH_ENABLED",
-    "xpathInternals": "LIBXML_XPATH_ENABLED",
-    "xinclude": "LIBXML_XINCLUDE_ENABLED",
-    "xpointer": "LIBXML_XPTR_ENABLED",
-    "xmlregexp" : "LIBXML_REGEXP_ENABLED",
-    "xmlautomata" : "LIBXML_AUTOMATA_ENABLED",
-    "xmlsave" : "LIBXML_OUTPUT_ENABLED",
-    "xmlmodule" : "LIBXML_MODULES_ENABLED",
-    "pattern" : "LIBXML_PATTERN_ENABLED",
-    "schematron" : "LIBXML_SCHEMATRON_ENABLED",
-}
-
-#
-# defines for specific functions
-#
-function_defines = {
-    "htmlDefaultSAXHandlerInit": "LIBXML_HTML_ENABLED",
-    "xmlSAX2EndElement" : "LIBXML_SAX1_ENABLED",
-    "xmlSAX2StartElement" : "LIBXML_SAX1_ENABLED",
-    "xmlSAXDefaultVersion" : "LIBXML_SAX1_ENABLED",
-    "UTF8Toisolat1" : "LIBXML_OUTPUT_ENABLED",
-    "xmlIOParseDTD": "LIBXML_VALID_ENABLED",
-    "xmlParseDTD": "LIBXML_VALID_ENABLED",
-    "xmlParseDoc": "LIBXML_SAX1_ENABLED",
-    "xmlParseMemory": "LIBXML_SAX1_ENABLED",
-    "xmlRecoverDoc": "LIBXML_SAX1_ENABLED",
-    "xmlParseFile": "LIBXML_SAX1_ENABLED",
-    "xmlRecoverFile": "LIBXML_SAX1_ENABLED",
-    "xmlRecoverMemory": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseFileWithData": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseMemory": "LIBXML_SAX1_ENABLED",
-    "xmlSAXUserParseMemory": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseDoc": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseDTD": "LIBXML_SAX1_ENABLED",
-    "xmlSAXUserParseFile": "LIBXML_SAX1_ENABLED",
-    "xmlParseEntity": "LIBXML_SAX1_ENABLED",
-    "xmlParseExternalEntity": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseMemoryWithData": "LIBXML_SAX1_ENABLED",
-    "xmlParseBalancedChunkMemory": "LIBXML_SAX1_ENABLED",
-    "xmlParseBalancedChunkMemoryRecover": "LIBXML_SAX1_ENABLED",
-    "xmlSetupParserForBuffer": "LIBXML_SAX1_ENABLED",
-    "xmlStopParser": "LIBXML_PUSH_ENABLED",
-    "xmlAttrSerializeTxtContent": "LIBXML_OUTPUT_ENABLED",
-    "xmlSAXParseFile": "LIBXML_SAX1_ENABLED",
-    "xmlSAXParseEntity": "LIBXML_SAX1_ENABLED",
-    "xmlSprintfElementContent": "LIBXML_OUTPUT_ENABLED",
-    "xmlValidGetPotentialChildren" : "LIBXML_VALID_ENABLED",
-    "xmlValidGetValidElements" : "LIBXML_VALID_ENABLED",
-    "xmlTextReaderPreservePattern" : "LIBXML_PATTERN_ENABLED",
-}
-
-#
-# Some functions really need to be skipped for the tests.
-#
-skipped_functions = [
-# block on I/O
-"xmlFdRead", "xmlReadFd", "xmlCtxtReadFd",
-"htmlFdRead", "htmlReadFd", "htmlCtxtReadFd",
-"xmlReaderNewFd", "xmlReaderForFd",
-"xmlIORead", "xmlReadIO", "xmlCtxtReadIO",
-"htmlIORead", "htmlReadIO", "htmlCtxtReadIO",
-"xmlReaderNewIO", "xmlBufferDump",
-"xmlNanoHTTPMethod", "xmlNanoHTTPMethodRedir",
-# Complex I/O APIs
-"xmlCreateIOParserCtxt", "xmlParserInputBufferCreateIO",
-"xmlRegisterInputCallbacks", "xmlReaderForIO",
-"xmlOutputBufferCreateIO", "xmlRegisterOutputCallbacks",
-"xmlSaveToIO", "xmlIOHTTPOpenW",
-# library state cleanup, generate false leak information and other
-# troubles, heavillyb tested otherwise.
-"xmlCleanupParser", "xmlRelaxNGCleanupTypes", "xmlSetListDoc",
-"xmlSetTreeDoc", "xmlUnlinkNode",
-# hard to avoid leaks in the tests
-"xmlStrcat", "xmlStrncat", "xmlCatalogAddLocal", "xmlNewTextWriterDoc",
-"xmlXPathNewValueTree", "xmlXPathWrapString",
-# unimplemented
-"xmlTextReaderReadInnerXml", "xmlTextReaderReadOuterXml",
-"xmlTextReaderReadString",
-# destructor
-"xmlListDelete", "xmlOutputBufferClose", "xmlNanoHTTPClose",
-# deprecated
-"xmlCatalogGetPublic", "xmlCatalogGetSystem", "xmlEncodeEntities",
-"xmlNewGlobalNs", "xmlHandleEntity", "xmlNamespaceParseNCName",
-"xmlNamespaceParseNSDef", "xmlNamespaceParseQName",
-"xmlParseNamespace", "xmlParseQuotedString", "xmlParserHandleReference",
-"xmlScanName",
-"xmlDecodeEntities", 
-# allocators
-"xmlMemFree",
-# verbosity
-"xmlCatalogSetDebug", "xmlShellPrintXPathError", "xmlShellPrintNode",
-# Internal functions, no user space should really call them
-"xmlParseAttribute", "xmlParseAttributeListDecl", "xmlParseName",
-"xmlParseNmtoken", "xmlParseEntityValue", "xmlParseAttValue",
-"xmlParseSystemLiteral", "xmlParsePubidLiteral", "xmlParseCharData",
-"xmlParseExternalID", "xmlParseComment", "xmlParsePITarget", "xmlParsePI",
-"xmlParseNotationDecl", "xmlParseEntityDecl", "xmlParseDefaultDecl",
-"xmlParseNotationType", "xmlParseEnumerationType", "xmlParseEnumeratedType",
-"xmlParseAttributeType", "xmlParseAttributeListDecl",
-"xmlParseElementMixedContentDecl", "xmlParseElementChildrenContentDecl",
-"xmlParseElementContentDecl", "xmlParseElementDecl", "xmlParseMarkupDecl",
-"xmlParseCharRef", "xmlParseEntityRef", "xmlParseReference",
-"xmlParsePEReference", "xmlParseDocTypeDecl", "xmlParseAttribute",
-"xmlParseStartTag", "xmlParseEndTag", "xmlParseCDSect", "xmlParseContent",
-"xmlParseElement", "xmlParseVersionNum", "xmlParseVersionInfo",
-"xmlParseEncName", "xmlParseEncodingDecl", "xmlParseSDDecl",
-"xmlParseXMLDecl", "xmlParseTextDecl", "xmlParseMisc",
-"xmlParseExternalSubset", "xmlParserHandlePEReference",
-"xmlSkipBlankChars",
-# Shouldn't free result
-"xmlCtxtGetDict",
-]
-
-#
-# These functions have side effects on the global state
-# and hence generate errors on memory allocation tests
-#
-skipped_memcheck = [ "xmlLoadCatalog", "xmlAddEncodingAlias",
-   "xmlSchemaInitTypes",
-   "xmlNanoHTTPScanProxy", "xmlResetLastError", "xmlCatalogConvert",
-   "xmlCatalogRemove", "xmlLoadCatalogs", "xmlCleanupCharEncodingHandlers",
-   "xmlInitCharEncodingHandlers", "xmlCatalogCleanup",
-   "xmlSchemaGetBuiltInType",
-   "htmlParseFile", "htmlCtxtReadFile", # loads the catalogs
-   "xmlTextReaderSchemaValidate", "xmlSchemaCleanupTypes", # initialize the schemas type system
-   "xmlCatalogResolve", "xmlIOParseDTD" # loads the catalogs
-]
-
-#
-# Extra code needed for some test cases
-#
-extra_pre_call = {
-   "xmlSAXUserParseFile": """
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-""",
-   "xmlSAXUserParseMemory": """
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-""",
-   "xmlParseBalancedChunkMemory": """
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-""",
-   "xmlParseBalancedChunkMemoryRecover": """
-#ifdef LIBXML_SAX1_ENABLED
-        if (sax == (xmlSAXHandlerPtr)&xmlDefaultSAXHandler) user_data = NULL;
-#endif
-""",
-   "xmlParserInputBufferCreateFd":
-       "if (fd >= 0) fd = -1;",
-   "xmlSAXDefaultVersion": """
-        {
-            int original_version = xmlSAXDefaultVersion(2);
-""",
-}
-extra_post_call = {
-   "xmlAddChild": 
-       "if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }",
-   "xmlAddChildList": 
-       "if (ret_val == NULL) { xmlFreeNodeList(cur) ; cur = NULL ; }",
-   "xmlAddSibling":
-       "if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }",
-   "xmlAddNextSibling":
-       "if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }",
-   "xmlAddPrevSibling": 
-       "if (ret_val == NULL) { xmlFreeNode(cur) ; cur = NULL ; }",
-   "xmlDocSetRootElement": 
-       "if (doc == NULL) { xmlFreeNode(root) ; root = NULL ; }",
-   "xmlReplaceNode": 
-       """if (cur != NULL) {
-              xmlUnlinkNode(cur);
-              xmlFreeNode(cur) ; cur = NULL ; }
-          if (old != NULL) {
-              xmlUnlinkNode(old);
-              xmlFreeNode(old) ; old = NULL ; }
-\t  ret_val = NULL;""",
-   "xmlTextMerge": 
-       """if (ret_val == NULL) {
-              xmlUnlinkNode(second);
-              xmlFreeNode(second) ; second = NULL ;
-              ret_val = first; }""",
-   "xmlBuildQName": 
-       """if ((ret_val != NULL) && (ret_val != ncname) &&
-              (ret_val != prefix) && (ret_val != memory))
-              xmlFree(ret_val);
-\t  ret_val = NULL;""",
-   "xmlNewDocElementContent":
-       """xmlFreeDocElementContent(doc, ret_val); ret_val = NULL;""",
-   "xmlDictReference": "xmlDictFree(dict);",
-   # Functions which deallocates one of their parameters
-   "xmlXPathConvertBoolean": """val = NULL;""",
-   "xmlXPathConvertNumber": """val = NULL;""",
-   "xmlXPathConvertString": """val = NULL;""",
-   "xmlSaveFileTo": """buf = NULL;""",
-   "xmlSaveFormatFileTo": """buf = NULL;""",
-   "xmlIOParseDTD": "input = NULL;",
-   "xmlRemoveProp": "cur = NULL;",
-   "xmlNewNs": "if ((node == NULL) && (ret_val != NULL)) xmlFreeNs(ret_val);",
-   "xmlCopyNamespace": "if (ret_val != NULL) xmlFreeNs(ret_val);",
-   "xmlCopyNamespaceList": "if (ret_val != NULL) xmlFreeNsList(ret_val);",
-   "xmlNewTextWriter": "if (ret_val != NULL) out = NULL;",
-   "xmlNewTextWriterPushParser": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;} if (ret_val != NULL) ctxt = NULL;",
-   "xmlNewIOInputStream": "if (ret_val != NULL) buf = NULL;",
-   "htmlParseChunk": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}",
-   "htmlParseDocument": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}",
-   "xmlParseDocument": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}",
-   "xmlParseChunk": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}",
-   "xmlParseExtParsedEnt": "if (ctxt != NULL) {xmlFreeDoc(ctxt->myDoc); ctxt->myDoc = NULL;}",
-   "xmlDOMWrapAdoptNode": "if ((node != NULL) && (node->parent == NULL)) {xmlUnlinkNode(node);xmlFreeNode(node);node = NULL;}",
-   "xmlSAXDefaultVersion": """
-            (void)xmlSAXDefaultVersion(original_version);
-        }
-""",
-}
-
-modules = []
-
-def is_skipped_module(name):
-    for mod in skipped_modules:
-        if mod == name:
-            return 1
-    return 0
-
-def is_skipped_function(name):
-    for fun in skipped_functions:
-        if fun == name:
-            return 1
-    # Do not test destructors
-    if name.find('Free') != -1:
-        return 1
-    return 0
-
-def is_skipped_memcheck(name):
-    for fun in skipped_memcheck:
-        if fun == name:
-            return 1
-    return 0
-
-missing_types = {}
-def add_missing_type(name, func):
-    try:
-        list = missing_types[name]
-        list.append(func)
-    except:
-        missing_types[name] = [func]
-
-generated_param_types = []
-def add_generated_param_type(name):
-    generated_param_types.append(name)
-
-generated_return_types = []
-def add_generated_return_type(name):
-    generated_return_types.append(name)
-
-missing_functions = {}
-missing_functions_nr = 0
-def add_missing_functions(name, module):
-    global missing_functions_nr
-
-    missing_functions_nr = missing_functions_nr + 1
-    try:
-        list = missing_functions[module]
-        list.append(name)
-    except:
-        missing_functions[module] = [name]
-
-#
-# Provide the type generators and destructors for the parameters
-#
-
-def type_convert(str, name, info, module, function, pos):
-#    res = str.replace("    ", " ")
-#    res = str.replace("   ", " ")
-#    res = str.replace("  ", " ")
-    res = str.replace(" *", "_ptr")
-#    res = str.replace("*", "_ptr")
-    res = res.replace(" ", "_")
-    if res == 'const_char_ptr':
-        if name.find("file") != -1 or \
-           name.find("uri") != -1 or \
-           name.find("URI") != -1 or \
-           info.find("filename") != -1 or \
-           info.find("URI") != -1 or \
-           info.find("URL") != -1:
-            if function.find("Save") != -1 or \
-               function.find("Create") != -1 or \
-               function.find("Write") != -1 or \
-               function.find("Fetch") != -1:
-                return('fileoutput')
-            return('filepath')
-    if res == 'void_ptr':
-        if module == 'nanohttp' and name == 'ctx':
-            return('xmlNanoHTTPCtxtPtr')
-        if function == 'xmlNanoHTTPMethod' or \
-           function == 'xmlNanoHTTPMethodRedir' or \
-           function == 'xmlNanoHTTPOpen' or \
-           function == 'xmlNanoHTTPOpenRedir':
-            return('xmlNanoHTTPCtxtPtr');
-        if function == 'xmlIOHTTPOpen':
-            return('xmlNanoHTTPCtxtPtr')
-        if name.find("data") != -1:
-            return('userdata')
-        if name.find("user") != -1:
-            return('userdata')
-    if res == 'xmlDoc_ptr':
-        res = 'xmlDocPtr'
-    if res == 'xmlNode_ptr':
-        res = 'xmlNodePtr'
-    if res == 'xmlDict_ptr':
-        res = 'xmlDictPtr'
-    if res == 'xmlNodePtr' and pos != 0:
-        if (function == 'xmlAddChild' and pos == 2) or \
-           (function == 'xmlAddChildList' and pos == 2) or \
-           (function == 'xmlAddNextSibling' and pos == 2) or \
-           (function == 'xmlAddSibling' and pos == 2) or \
-           (function == 'xmlDocSetRootElement' and pos == 2) or \
-           (function == 'xmlReplaceNode' and pos == 2) or \
-           (function == 'xmlTextMerge') or \
-           (function == 'xmlAddPrevSibling' and pos == 2):
-            return('xmlNodePtr_in');
-    if res == 'const xmlBufferPtr':
-        res = 'xmlBufferPtr'
-    if res == 'xmlChar_ptr' and name == 'name' and \
-       function.find("EatName") != -1:
-        return('eaten_name')
-    if res == 'void_ptr*':
-        res = 'void_ptr_ptr'
-    if res == 'char_ptr*':
-        res = 'char_ptr_ptr'
-    if res == 'xmlChar_ptr*':
-        res = 'xmlChar_ptr_ptr'
-    if res == 'const_xmlChar_ptr*':
-        res = 'const_xmlChar_ptr_ptr'
-    if res == 'const_char_ptr*':
-        res = 'const_char_ptr_ptr'
-    if res == 'FILE_ptr' and module == 'debugXML':
-        res = 'debug_FILE_ptr';
-    if res == 'int' and name == 'options':
-        if module == 'parser' or module == 'xmlreader':
-            res = 'parseroptions'
-
-    return res
-
-known_param_types = []
-
-def is_known_param_type(name):
-    for type in known_param_types:
-        if type == name:
-            return 1
-    return name[-3:] == 'Ptr' or name[-4:] == '_ptr'
-
-def generate_param_type(name, rtype):
-    global test
-    for type in known_param_types:
-        if type == name:
-            return
-    for type in generated_param_types:
-        if type == name:
-            return
-
-    if name[-3:] == 'Ptr' or name[-4:] == '_ptr':
-        define = 0
-        if module in modules_defines:
-            test.write("#ifdef %s\n" % (modules_defines[module]))
-            define = 1
-        test.write("""
-#define gen_nb_%s 1
-#define gen_%s(no, nr) NULL
-#define des_%s(no, val, nr)
-""" % (name, name, name))
-        if define == 1:
-            test.write("#endif\n\n")
-        add_generated_param_type(name)
-
-#
-# Provide the type destructors for the return values
-#
-
-known_return_types = []
-
-def is_known_return_type(name):
-    for type in known_return_types:
-        if type == name:
-            return 1
-    return 0
-
-#
-# Copy the beginning of the C test program result
-#
-
-try:
-    input = open("testapi.c", "r")
-except:
-    input = open(srcPref + "testapi.c", "r")
-test = open('testapi.c.new', 'w')
-
-def compare_and_save():
-    global test
-
-    test.close()
-    try:
-        input = open("testapi.c", "r").read()
-    except:
-        input = ''
-    test = open('testapi.c.new', "r").read()
-    if input != test:
-        try:
-            os.system("rm testapi.c; mv testapi.c.new testapi.c")
-        except:
-            os.system("mv testapi.c.new testapi.c")
-        print("Updated testapi.c")
-    else:
-        print("Generated testapi.c is identical")
-
-line = input.readline()
-while line != "":
-    if line == "/* CUT HERE: everything below that line is generated */\n":
-        break;
-    if line[0:15] == "#define gen_nb_":
-        type = line[15:].split()[0]
-        known_param_types.append(type)
-    if line[0:19] == "static void desret_":
-        type = line[19:].split('(')[0]
-        known_return_types.append(type)
-    test.write(line)
-    line = input.readline()
-input.close()
-
-if line == "":
-    print("Could not find the CUT marker in testapi.c skipping generation")
-    test.close()
-    sys.exit(0)
-
-print("Scanned testapi.c: found %d parameters types and %d return types\n" % (
-      len(known_param_types), len(known_return_types)))
-test.write("/* CUT HERE: everything below that line is generated */\n")
-
-
-#
-# Open the input API description
-#
-doc = libxml2.readFile(srcPref + 'doc/libxml2-api.xml', None, 0)
-if doc == None:
-    print("Failed to load doc/libxml2-api.xml")
-    sys.exit(1)
-ctxt = doc.xpathNewContext()
-
-#
-# Generate a list of all function parameters and select only
-# those used in the api tests
-#
-argtypes = {}
-args = ctxt.xpathEval("/api/symbols/function/arg")
-for arg in args:
-    mod = arg.xpathEval('string(../@file)')
-    func = arg.xpathEval('string(../@name)')
-    if (mod not in skipped_modules) and (func not in skipped_functions):
-        type = arg.xpathEval('string(@type)')
-        if type not in argtypes:
-            argtypes[type] = func
-
-# similarly for return types
-rettypes = {}
-rets = ctxt.xpathEval("/api/symbols/function/return")
-for ret in rets:
-    mod = ret.xpathEval('string(../@file)')
-    func = ret.xpathEval('string(../@name)')
-    if (mod not in skipped_modules) and (func not in skipped_functions):
-        type = ret.xpathEval('string(@type)')
-        if type not in rettypes:
-            rettypes[type] = func
-
-#
-# Generate constructors and return type handling for all enums
-# which are used as function parameters
-#
-enums = ctxt.xpathEval("/api/symbols/typedef[@type='enum']")
-for enum in enums:
-    module = enum.xpathEval('string(@file)')
-    name = enum.xpathEval('string(@name)')
-    #
-    # Skip any enums which are not in our filtered lists
-    #
-    if (name == None) or ((name not in argtypes) and (name not in rettypes)):
-        continue;
-    if name == 'xmlCharEncFlags':
-        continue
-    define = 0
-
-    if (name in argtypes) and is_known_param_type(name) == 0:
-        values = ctxt.xpathEval("/api/symbols/enum[@type='%s']" % name)
-        i = 0
-        vals = []
-        for value in values:
-            vname = value.xpathEval('string(@name)')
-            if vname == None:
-                continue;
-            i = i + 1
-            if i >= 5:
-                break;
-            vals.append(vname)
-        if vals == []:
-            print("Didn't find any value for enum %s" % (name))
-            continue
-        if module in modules_defines:
-            test.write("#ifdef %s\n" % (modules_defines[module]))
-            define = 1
-        test.write("#define gen_nb_%s %d\n" % (name, len(vals)))
-        test.write("""static %s gen_%s(int no, int nr ATTRIBUTE_UNUSED) {\n""" %
-                   (name, name))
-        i = 1
-        for value in vals:
-            test.write("    if (no == %d) return(%s);\n" % (i, value))
-            i = i + 1
-        test.write("""    return(0);
-}
-
-static void des_%s(int no ATTRIBUTE_UNUSED, %s val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
-}
-
-""" % (name, name));
-        known_param_types.append(name)
-
-    if (is_known_return_type(name) == 0) and (name in rettypes):
-        if define == 0 and (module in modules_defines):
-            test.write("#ifdef %s\n" % (modules_defines[module]))
-            define = 1
-        test.write("""static void desret_%s(%s val ATTRIBUTE_UNUSED) {
-}
-
-""" % (name, name))
-        known_return_types.append(name)
-    if define == 1:
-        test.write("#endif\n\n")
-
-#
-# Load the interfaces
-# 
-headers = ctxt.xpathEval("/api/files/file")
-for file in headers:
-    name = file.xpathEval('string(@name)')
-    if (name == None) or (name == ''):
-        continue
-
-    #
-    # Some module may be skipped because they don't really consists
-    # of user callable APIs
-    #
-    if is_skipped_module(name):
-        continue
-
-    #
-    # do not test deprecated APIs
-    #
-    desc = file.xpathEval('string(description)')
-    if desc.find('DEPRECATED') != -1:
-        print("Skipping deprecated interface %s" % name)
-        continue;
-
-    test.write("#include <libxml/%s.h>\n" % name)
-    modules.append(name)
-        
-#
-# Generate the callers signatures
-# 
-for module in modules:
-    test.write("static int test_%s(void);\n" % module);
-
-#
-# Generate the top caller
-# 
-
-test.write("""
-/**
- * testlibxml2:
- *
- * Main entry point of the tester for the full libxml2 module,
- * it calls all the tester entry point for each module.
- *
- * Returns the number of error found
- */
-static int
-testlibxml2(void)
-{
-    int test_ret = 0;
-
-""")
-
-for module in modules:
-    test.write("    test_ret += test_%s();\n" % module)
-
-test.write("""
-    printf("Total: %d functions, %d tests, %d errors\\n",
-           function_tests, call_tests, test_ret);
-    return(test_ret);
-}
-
-""")
-
-#
-# How to handle a function
-# 
-nb_tests = 0
-
-def generate_test(module, node):
-    global test
-    global nb_tests
-    nb_cond = 0
-    no_gen = 0
-
-    name = node.xpathEval('string(@name)')
-    if is_skipped_function(name):
-        return
-
-    #
-    # check we know how to handle the args and return values
-    # and store the information for the generation
-    #
-    try:
-        args = node.xpathEval("arg")
-    except:
-        args = []
-    t_args = []
-    n = 0
-    for arg in args:
-        n = n + 1
-        rtype = arg.xpathEval("string(@type)")
-        if rtype == 'void':
-            break;
-        info = arg.xpathEval("string(@info)")
-        nam = arg.xpathEval("string(@name)")
-        type = type_convert(rtype, nam, info, module, name, n)
-        if is_known_param_type(type) == 0:
-            add_missing_type(type, name);
-            no_gen = 1
-        t_args.append((nam, type, rtype, info))
-    
-    try:
-        rets = node.xpathEval("return")
-    except:
-        rets = []
-    t_ret = None
-    for ret in rets:
-        rtype = ret.xpathEval("string(@type)")
-        info = ret.xpathEval("string(@info)")
-        type = type_convert(rtype, 'return', info, module, name, 0)
-        if rtype == 'void':
-            break
-        if is_known_return_type(type) == 0:
-            add_missing_type(type, name);
-            no_gen = 1
-        t_ret = (type, rtype, info)
-        break
-
-    if no_gen == 0:
-        for t_arg in t_args:
-            (nam, type, rtype, info) = t_arg
-            generate_param_type(type, rtype)
-
-    test.write("""
-static int
-test_%s(void) {
-    int test_ret = 0;
-
-""" % (name))
-
-    if no_gen == 1:
-        add_missing_functions(name, module)
-        test.write("""
-    /* missing type support */
-    return(test_ret);
-}
-
-""")
-        return
-
-    try:
-        conds = node.xpathEval("cond")
-        for cond in conds:
-            test.write("#if %s\n" % (cond.get_content()))
-            nb_cond = nb_cond + 1
-    except:
-        pass
-
-    define = 0
-    if name in function_defines:
-        test.write("#ifdef %s\n" % (function_defines[name]))
-        define = 1
-    
-    # Declare the memory usage counter
-    no_mem = is_skipped_memcheck(name)
-    if no_mem == 0:
-        test.write("    int mem_base;\n");
-
-    # Declare the return value
-    if t_ret != None:
-        test.write("    %s ret_val;\n" % (t_ret[1]))
-
-    # Declare the arguments
-    for arg in t_args:
-        (nam, type, rtype, info) = arg;
-        # add declaration
-        test.write("    %s %s; /* %s */\n" % (rtype, nam, info))
-        test.write("    int n_%s;\n" % (nam))
-    test.write("\n")
-
-    # Cascade loop on of each argument list of values
-    for arg in t_args:
-        (nam, type, rtype, info) = arg;
-        #
-        test.write("    for (n_%s = 0;n_%s < gen_nb_%s;n_%s++) {\n" % (
-                   nam, nam, type, nam))
-    
-    # log the memory usage
-    if no_mem == 0:
-        test.write("        mem_base = xmlMemBlocks();\n");
-
-    # prepare the call
-    i = 0;
-    for arg in t_args:
-        (nam, type, rtype, info) = arg;
-        #
-        test.write("        %s = gen_%s(n_%s, %d);\n" % (nam, type, nam, i))
-        i = i + 1;
-
-    # add checks to avoid out-of-bounds array access
-    i = 0;
-    for arg in t_args:
-        (nam, type, rtype, info) = arg;
-        # assume that "size", "len", and "start" parameters apply to either
-        # the nearest preceding or following char pointer
-        if type == "int" and (nam == "size" or nam == "len" or nam == "start"):
-            for j in (list(range(i - 1, -1, -1)) + list(range(i + 1, len(t_args)))):
-                (bnam, btype) = t_args[j][:2]
-                if btype == "const_char_ptr" or btype == "const_xmlChar_ptr":
-                    test.write(
-                        "        if ((%s != NULL) &&\n"
-                        "            (%s > xmlStrlen(BAD_CAST %s)))\n"
-                        "            %s = 0;\n"
-                        % (bnam, nam, bnam, nam))
-                    break
-        i = i + 1;
-
-    # do the call, and clanup the result
-    if name in extra_pre_call:
-        test.write("        %s\n"% (extra_pre_call[name]))
-    if t_ret != None:
-        test.write("\n        ret_val = %s(" % (name))
-        need = 0
-        for arg in t_args:
-            (nam, type, rtype, info) = arg
-            if need:
-                test.write(", ")
-            else:
-                need = 1
-            test.write("%s" % nam);
-        test.write(");\n")
-        if name in extra_post_call:
-            test.write("        %s\n"% (extra_post_call[name]))
-        test.write("        desret_%s(ret_val);\n" % t_ret[0])
-    else:
-        test.write("\n        %s(" % (name));
-        need = 0;
-        for arg in t_args:
-            (nam, type, rtype, info) = arg;
-            if need:
-                test.write(", ")
-            else:
-                need = 1
-            test.write("%s" % nam)
-        test.write(");\n")
-        if name in extra_post_call:
-            test.write("        %s\n"% (extra_post_call[name]))
-
-    test.write("        call_tests++;\n");
-
-    # Free the arguments
-    i = 0;
-    for arg in t_args:
-        (nam, type, rtype, info) = arg;
-        # This is a hack to prevent generating a destructor for the
-        # 'input' argument in xmlTextReaderSetup.  There should be
-        # a better, more generic way to do this!
-        if info.find('destroy') == -1:
-            test.write("        des_%s(n_%s, " % (type, nam))
-            test.write("%s, %d);\n" % (nam, i))
-        i = i + 1;
-
-    test.write("        xmlResetLastError();\n");
-    # Check the memory usage
-    if no_mem == 0:
-        test.write("""        if (mem_base != xmlMemBlocks()) {
-            printf("Leak of %%d blocks found in %s",
-\t           xmlMemBlocks() - mem_base);
-\t    test_ret++;
-""" % (name));
-        for arg in t_args:
-            (nam, type, rtype, info) = arg;
-            test.write("""            printf(" %%d", n_%s);\n""" % (nam))
-        test.write("""            printf("\\n");\n""")
-        test.write("        }\n")
-
-    for arg in t_args:
-        test.write("    }\n")
-
-    test.write("    function_tests++;\n")
-    #
-    # end of conditional
-    #
-    while nb_cond > 0:
-        test.write("#endif\n")
-        nb_cond = nb_cond -1
-    if define == 1:
-        test.write("#endif\n")
-
-    nb_tests = nb_tests + 1;
-
-    test.write("""
-    return(test_ret);
-}
-
-""")
-    
-#
-# Generate all module callers
-#
-for module in modules:
-    # gather all the functions exported by that module
-    try:
-        functions = ctxt.xpathEval("/api/symbols/function[@file='%s']" % (module))
-    except:
-        print("Failed to gather functions from module %s" % (module))
-        continue;
-
-    # iterate over all functions in the module generating the test
-    i = 0
-    nb_tests_old = nb_tests
-    for function in functions:
-        i = i + 1
-        generate_test(module, function);
-
-    # header
-    test.write("""static int
-test_%s(void) {
-    int test_ret = 0;
-
-    if (quiet == 0) printf("Testing %s : %d of %d functions ...\\n");
-""" % (module, module, nb_tests - nb_tests_old, i))
-
-    # iterate over all functions in the module generating the call
-    for function in functions:
-        name = function.xpathEval('string(@name)')
-        if is_skipped_function(name):
-            continue
-        test.write("    test_ret += test_%s();\n" % (name))
-
-    # footer
-    test.write("""
-    if (test_ret != 0)
-\tprintf("Module %s: %%d errors\\n", test_ret);
-    return(test_ret);
-}
-""" % (module))
-
-#
-# Generate direct module caller
-#
-test.write("""static int
-test_module(const char *module) {
-""");
-for module in modules:
-    test.write("""    if (!strcmp(module, "%s")) return(test_%s());\n""" % (
-        module, module))
-test.write("""    return(0);
-}
-""");
-
-print("Generated test for %d modules and %d functions" %(len(modules), nb_tests))
-
-compare_and_save()
-
-missing_list = []
-for missing in missing_types.keys():
-    if missing == 'va_list' or missing == '...':
-        continue;
-
-    n = len(missing_types[missing])
-    missing_list.append((n, missing))
-
-missing_list.sort(key=lambda a: a[0])
-print("Missing support for %d functions and %d types see missing.lst" % (missing_functions_nr, len(missing_list)))
-lst = open("missing.lst", "w")
-lst.write("Missing support for %d types" % (len(missing_list)))
-lst.write("\n")
-for miss in missing_list:
-    lst.write("%s: %d :" % (miss[1], miss[0]))
-    i = 0
-    for n in missing_types[miss[1]]:
-        i = i + 1
-        if i > 5:
-            lst.write(" ...")
-            break
-        lst.write(" %s" % (n))
-    lst.write("\n")
-lst.write("\n")
-lst.write("\n")
-lst.write("Missing support per module");
-for module in missing_functions.keys():
-    lst.write("module %s:\n   %s\n" % (module, missing_functions[module]))
-
-lst.close()
-
-
diff -pruN 2.14.6+dfsg-0.1/tree.c 2.15.0+dfsg-0.3/tree.c
--- 2.14.6+dfsg-0.1/tree.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/tree.c	2025-09-15 11:55:59.000000000 +0000
@@ -6,7 +6,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  *
  */
 
@@ -43,6 +43,8 @@
 #include "private/entities.h"
 #include "private/error.h"
 #include "private/memory.h"
+#include "private/io.h"
+#include "private/parser.h"
 #include "private/tree.h"
 
 #ifndef SIZE_MAX
@@ -107,14 +109,11 @@ static int xmlCompressMode = 0;
 #include <libxml/hash.h>
 
 /**
- * xmlGetEntityFromDtd:
- * @dtd:  A pointer to the DTD to search
- * @name:  The entity name
- *
  * Do an entity lookup in the DTD entity hash table and
- * return the corresponding entity, if found.
  *
- * Returns A pointer to the entity structure or NULL if not found.
+ * @param dtd  A pointer to the DTD to search
+ * @param name  The entity name
+ * @returns the corresponding entity, if found.
  */
 static xmlEntityPtr
 xmlGetEntityFromDtd(const xmlDtd *dtd, const xmlChar *name) {
@@ -128,14 +127,11 @@ xmlGetEntityFromDtd(const xmlDtd *dtd, c
     return(NULL);
 }
 /**
- * xmlGetParameterEntityFromDtd:
- * @dtd:  A pointer to the DTD to search
- * @name:  The entity name
- *
  * Do an entity lookup in the DTD parameter entity hash table and
- * return the corresponding entity, if found.
  *
- * Returns A pointer to the entity structure or NULL if not found.
+ * @param dtd  A pointer to the DTD to search
+ * @param name  The entity name
+ * @returns the corresponding entity, if found.
  */
 static xmlEntityPtr
 xmlGetParameterEntityFromDtd(const xmlDtd *dtd, const xmlChar *name) {
@@ -156,18 +152,18 @@ xmlGetParameterEntityFromDtd(const xmlDt
  ************************************************************************/
 
 /**
- * xmlBuildQName:
- * @ncname:  the Name
- * @prefix:  the prefix
- * @memory:  preallocated memory
- * @len:  preallocated memory length
+ * Build a QName from prefix and local name.
  *
- * Builds the QName @prefix:@ncname in @memory if there is enough space
+ * 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.
  *
- * Returns the new string which must be freed by the caller if different from
- *         @memory and @ncname or NULL in case of error
+ * @param ncname  the Name
+ * @param prefix  the prefix
+ * @param memory  preallocated memory
+ * @param len  preallocated memory length
+ * @returns the new string which must be freed by the caller if different from
+ *         `memory` and `ncname` or NULL in case of error
  */
 xmlChar *
 xmlBuildQName(const xmlChar *ncname, const xmlChar *prefix,
@@ -204,21 +200,19 @@ xmlBuildQName(const xmlChar *ncname, con
 }
 
 /**
- * xmlSplitQName2:
- * @name:  the full QName
- * @prefix:  a xmlChar **
+ * Parse an XML qualified name.
  *
- * DEPRECATED: This function doesn't report malloc failures.
+ * @deprecated This function doesn't report malloc failures.
  *
- * parse an XML qualified name string
+ *     [NS 5] QName ::= (Prefix ':')? LocalPart
  *
- * [NS 5] QName ::= (Prefix ':')? LocalPart
+ *     [NS 6] Prefix ::= NCName
  *
- * [NS 6] Prefix ::= NCName
+ *     [NS 7] LocalPart ::= NCName
  *
- * [NS 7] LocalPart ::= NCName
- *
- * Returns NULL if the name doesn't have a prefix. Otherwise, returns the
+ * @param name  the full QName
+ * @param prefix  a xmlChar **
+ * @returns NULL if the name doesn't have a prefix. Otherwise, returns the
  * local part, and prefix is updated to get the Prefix. Both the return value
  * and the prefix must be freed by the caller.
  */
@@ -261,13 +255,11 @@ xmlSplitQName2(const xmlChar *name, xmlC
 }
 
 /**
- * xmlSplitQName3:
- * @name:  the full QName
- * @len: an int *
- *
- * parse an XML qualified name string,i
+ * Parse an XML qualified name.
  *
- * returns NULL if it is not a Qualified Name, otherwise, update len
+ * @param name  the full QName
+ * @param len  an int *
+ * @returns NULL if it is not a Qualified Name, otherwise, update len
  *         with the length in byte of the prefix and return a pointer
  *         to the start of the name without the prefix
  */
@@ -299,16 +291,16 @@ xmlSplitQName3(const xmlChar *name, int
 }
 
 /**
- * xmlSplitQName4:
- * @name:  the full QName
- * @prefixPtr:  pointer to resulting prefix
+ * Parse a QName.
  *
- * Parse a QName. The return value points to the start of the local
+ * The return value points to the start of the local
  * name in the input string. If the QName has a prefix, it will be
- * allocated and stored in @prefixPtr. This string must be freed by
- * the caller. If there's no prefix, @prefixPtr is set to NULL.
+ * allocated and stored in `prefixPtr`. This string must be freed by
+ * the caller. If there's no prefix, `prefixPtr` is set to NULL.
  *
- * Returns the local name or NULL if a memory allocation failed.
+ * @param name  the full QName
+ * @param prefixPtr  pointer to resulting prefix
+ * @returns the local name or NULL if a memory allocation failed.
  */
 const xmlChar *
 xmlSplitQName4(const xmlChar *name, xmlChar **prefixPtr) {
@@ -351,317 +343,152 @@ xmlSplitQName4(const xmlChar *name, xmlC
  *									*
  ************************************************************************/
 
-#define CUR_SCHAR(s, l) xmlStringCurrentChar(NULL, s, &l)
-
 /**
- * xmlValidateNCName:
- * @value: the value to check
- * @space: allow spaces in front and end of the string
- *
  * Check that a value conforms to the lexical space of NCName
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param value  the value to check
+ * @param space  allow spaces in front and end of the string
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
 xmlValidateNCName(const xmlChar *value, int space) {
-    const xmlChar *cur = value;
-    int c,l;
+    const xmlChar *cur;
 
     if (value == NULL)
         return(-1);
 
-    /*
-     * First quick algorithm for ASCII range
-     */
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (((*cur >= 'a') && (*cur <= 'z')) || ((*cur >= 'A') && (*cur <= 'Z')) ||
-	(*cur == '_'))
-	cur++;
-    else
-	goto try_complex;
-    while (((*cur >= 'a') && (*cur <= 'z')) ||
-	   ((*cur >= 'A') && (*cur <= 'Z')) ||
-	   ((*cur >= '0') && (*cur <= '9')) ||
-	   (*cur == '_') || (*cur == '-') || (*cur == '.'))
-	cur++;
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (*cur == 0)
-	return(0);
-
-try_complex:
-    /*
-     * Second check for chars outside the ASCII range
-     */
     cur = value;
-    c = CUR_SCHAR(cur, l);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
-    }
-    if ((!IS_LETTER(c)) && (c != '_'))
-	return(1);
-    cur += l;
-    c = CUR_SCHAR(cur, l);
-    while (IS_LETTER(c) || IS_DIGIT(c) || (c == '.') ||
-	   (c == '-') || (c == '_') || IS_COMBINING(c) ||
-	   IS_EXTENDER(c)) {
-	cur += l;
-	c = CUR_SCHAR(cur, l);
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
+
+    value = cur;
+    cur = xmlScanName(value, SIZE_MAX, XML_SCAN_NC);
+    if ((cur == NULL) || (cur == value))
+        return(1);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
-    if (c != 0)
-	return(1);
 
-    return(0);
+    return(*cur != 0);
 }
 
 /**
- * xmlValidateQName:
- * @value: the value to check
- * @space: allow spaces in front and end of the string
- *
  * Check that a value conforms to the lexical space of QName
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param value  the value to check
+ * @param space  allow spaces in front and end of the string
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
 xmlValidateQName(const xmlChar *value, int space) {
-    const xmlChar *cur = value;
-    int c,l;
+    const xmlChar *cur;
 
     if (value == NULL)
         return(-1);
-    /*
-     * First quick algorithm for ASCII range
-     */
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (((*cur >= 'a') && (*cur <= 'z')) || ((*cur >= 'A') && (*cur <= 'Z')) ||
-	(*cur == '_'))
-	cur++;
-    else
-	goto try_complex;
-    while (((*cur >= 'a') && (*cur <= 'z')) ||
-	   ((*cur >= 'A') && (*cur <= 'Z')) ||
-	   ((*cur >= '0') && (*cur <= '9')) ||
-	   (*cur == '_') || (*cur == '-') || (*cur == '.'))
-	cur++;
-    if (*cur == ':') {
-	cur++;
-	if (((*cur >= 'a') && (*cur <= 'z')) ||
-	    ((*cur >= 'A') && (*cur <= 'Z')) ||
-	    (*cur == '_'))
-	    cur++;
-	else
-	    goto try_complex;
-	while (((*cur >= 'a') && (*cur <= 'z')) ||
-	       ((*cur >= 'A') && (*cur <= 'Z')) ||
-	       ((*cur >= '0') && (*cur <= '9')) ||
-	       (*cur == '_') || (*cur == '-') || (*cur == '.'))
-	    cur++;
-    }
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (*cur == 0)
-	return(0);
 
-try_complex:
-    /*
-     * Second check for chars outside the ASCII range
-     */
     cur = value;
-    c = CUR_SCHAR(cur, l);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
-    if ((!IS_LETTER(c)) && (c != '_'))
-	return(1);
-    cur += l;
-    c = CUR_SCHAR(cur, l);
-    while (IS_LETTER(c) || IS_DIGIT(c) || (c == '.') ||
-	   (c == '-') || (c == '_') || IS_COMBINING(c) ||
-	   IS_EXTENDER(c)) {
-	cur += l;
-	c = CUR_SCHAR(cur, l);
-    }
-    if (c == ':') {
-	cur += l;
-	c = CUR_SCHAR(cur, l);
-	if ((!IS_LETTER(c)) && (c != '_'))
-	    return(1);
-	cur += l;
-	c = CUR_SCHAR(cur, l);
-	while (IS_LETTER(c) || IS_DIGIT(c) || (c == '.') ||
-	       (c == '-') || (c == '_') || IS_COMBINING(c) ||
-	       IS_EXTENDER(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+
+    value = cur;
+    cur = xmlScanName(value, SIZE_MAX, XML_SCAN_NC);
+    if ((cur == NULL) || (cur == value))
+        return(1);
+
+    if (*cur == ':') {
+        cur += 1;
+        value = cur;
+        cur = xmlScanName(value, SIZE_MAX, XML_SCAN_NC);
+        if ((cur == NULL) || (cur == value))
+            return(1);
     }
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
-    if (c != 0)
-	return(1);
-    return(0);
+
+    return(*cur != 0);
 }
 
 /**
- * xmlValidateName:
- * @value: the value to check
- * @space: allow spaces in front and end of the string
- *
  * Check that a value conforms to the lexical space of Name
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param value  the value to check
+ * @param space  allow spaces in front and end of the string
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
 xmlValidateName(const xmlChar *value, int space) {
-    const xmlChar *cur = value;
-    int c,l;
+    const xmlChar *cur;
 
     if (value == NULL)
         return(-1);
-    /*
-     * First quick algorithm for ASCII range
-     */
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (((*cur >= 'a') && (*cur <= 'z')) || ((*cur >= 'A') && (*cur <= 'Z')) ||
-	(*cur == '_') || (*cur == ':'))
-	cur++;
-    else
-	goto try_complex;
-    while (((*cur >= 'a') && (*cur <= 'z')) ||
-	   ((*cur >= 'A') && (*cur <= 'Z')) ||
-	   ((*cur >= '0') && (*cur <= '9')) ||
-	   (*cur == '_') || (*cur == '-') || (*cur == '.') || (*cur == ':'))
-	cur++;
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (*cur == 0)
-	return(0);
 
-try_complex:
-    /*
-     * Second check for chars outside the ASCII range
-     */
     cur = value;
-    c = CUR_SCHAR(cur, l);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
-    }
-    if ((!IS_LETTER(c)) && (c != '_') && (c != ':'))
-	return(1);
-    cur += l;
-    c = CUR_SCHAR(cur, l);
-    while (IS_LETTER(c) || IS_DIGIT(c) || (c == '.') || (c == ':') ||
-	   (c == '-') || (c == '_') || IS_COMBINING(c) || IS_EXTENDER(c)) {
-	cur += l;
-	c = CUR_SCHAR(cur, l);
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
+
+    value = cur;
+    cur = xmlScanName(value, SIZE_MAX, 0);
+    if ((cur == NULL) || (cur == value))
+        return(1);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
-    if (c != 0)
-	return(1);
-    return(0);
+
+    return(*cur != 0);
 }
 
 /**
- * xmlValidateNMToken:
- * @value: the value to check
- * @space: allow spaces in front and end of the string
- *
  * Check that a value conforms to the lexical space of NMToken
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param value  the value to check
+ * @param space  allow spaces in front and end of the string
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
 xmlValidateNMToken(const xmlChar *value, int space) {
-    const xmlChar *cur = value;
-    int c,l;
+    const xmlChar *cur;
 
     if (value == NULL)
         return(-1);
-    /*
-     * First quick algorithm for ASCII range
-     */
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (((*cur >= 'a') && (*cur <= 'z')) ||
-        ((*cur >= 'A') && (*cur <= 'Z')) ||
-        ((*cur >= '0') && (*cur <= '9')) ||
-        (*cur == '_') || (*cur == '-') || (*cur == '.') || (*cur == ':'))
-	cur++;
-    else
-	goto try_complex;
-    while (((*cur >= 'a') && (*cur <= 'z')) ||
-	   ((*cur >= 'A') && (*cur <= 'Z')) ||
-	   ((*cur >= '0') && (*cur <= '9')) ||
-	   (*cur == '_') || (*cur == '-') || (*cur == '.') || (*cur == ':'))
-	cur++;
-    if (space)
-	while (IS_BLANK_CH(*cur)) cur++;
-    if (*cur == 0)
-	return(0);
 
-try_complex:
-    /*
-     * Second check for chars outside the ASCII range
-     */
     cur = value;
-    c = CUR_SCHAR(cur, l);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
-    }
-    if (!(IS_LETTER(c) || IS_DIGIT(c) || (c == '.') || (c == ':') ||
-        (c == '-') || (c == '_') || IS_COMBINING(c) || IS_EXTENDER(c)))
-	return(1);
-    cur += l;
-    c = CUR_SCHAR(cur, l);
-    while (IS_LETTER(c) || IS_DIGIT(c) || (c == '.') || (c == ':') ||
-	   (c == '-') || (c == '_') || IS_COMBINING(c) || IS_EXTENDER(c)) {
-	cur += l;
-	c = CUR_SCHAR(cur, l);
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
+
+    value = cur;
+    cur = xmlScanName(value, SIZE_MAX, XML_SCAN_NMTOKEN);
+    if ((cur == NULL) || (cur == value))
+        return(1);
+
     if (space) {
-	while (IS_BLANK(c)) {
-	    cur += l;
-	    c = CUR_SCHAR(cur, l);
-	}
+	while (IS_BLANK_CH(*cur))
+            cur++;
     }
-    if (c != 0)
-	return(1);
-    return(0);
+
+    return(*cur != 0);
 }
 
 /************************************************************************
@@ -671,25 +498,23 @@ try_complex:
  ************************************************************************/
 
 /**
- * xmlNewNs:
- * @node:  the element carrying the namespace (optional)
- * @href:  the URI associated
- * @prefix:  the prefix for the namespace (optional)
- *
- * Create a new namespace. For a default namespace, @prefix should be
- * NULL. The namespace URI in @href is not checked. You should make sure
+ * Create a new namespace. For a default namespace, `prefix` should be
+ * NULL. The namespace URI in `href` is not checked. You should make sure
  * to pass a valid URI.
  *
- * If @node is provided, it must be an element node. The namespace will
+ * If `node` is provided, it must be an element node. The namespace will
  * be appended to the node's namespace declarations. It is an error if
  * the node already has a definition for the prefix or default
  * namespace.
  *
- * Returns a new namespace pointer or NULL if arguments are invalid,
+ * @param node  the element carrying the namespace (optional)
+ * @param href  the URI associated
+ * @param prefix  the prefix for the namespace (optional)
+ * @returns a new namespace pointer or NULL if arguments are invalid,
  * the prefix is already in use or a memory allocation failed.
  */
-xmlNsPtr
-xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
+xmlNs *
+xmlNewNs(xmlNode *node, const xmlChar *href, const xmlChar *prefix) {
     xmlNsPtr cur;
 
     if ((node != NULL) && (node->type != XML_ELEMENT_NODE))
@@ -745,15 +570,14 @@ error:
 }
 
 /**
- * xmlSetNs:
- * @node:  a node in the document
- * @ns:  a namespace pointer (optional)
- *
  * Set the namespace of an element or attribute node. Passing a NULL
  * namespace unsets the namespace.
+ *
+ * @param node  a node in the document
+ * @param ns  a namespace pointer (optional)
  */
 void
-xmlSetNs(xmlNodePtr node, xmlNsPtr ns) {
+xmlSetNs(xmlNode *node, xmlNs *ns) {
     if (node == NULL) {
 	return;
     }
@@ -763,13 +587,12 @@ xmlSetNs(xmlNodePtr node, xmlNsPtr ns) {
 }
 
 /**
- * xmlFreeNs:
- * @cur:  the namespace pointer
- *
  * Free an xmlNs object.
+ *
+ * @param cur  the namespace pointer
  */
 void
-xmlFreeNs(xmlNsPtr cur) {
+xmlFreeNs(xmlNs *cur) {
     if (cur == NULL) {
 	return;
     }
@@ -779,13 +602,12 @@ xmlFreeNs(xmlNsPtr cur) {
 }
 
 /**
- * xmlFreeNsList:
- * @cur:  the first namespace pointer
- *
  * Free a list of xmlNs objects.
+ *
+ * @param cur  the first namespace pointer
  */
 void
-xmlFreeNsList(xmlNsPtr cur) {
+xmlFreeNsList(xmlNs *cur) {
     xmlNsPtr next;
     if (cur == NULL) {
 	return;
@@ -798,26 +620,24 @@ xmlFreeNsList(xmlNsPtr cur) {
 }
 
 /**
- * xmlNewDtd:
- * @doc:  the document pointer (optional)
- * @name:  the DTD name (optional)
- * @ExternalID:  the external ID (optional)
- * @SystemID:  the system ID (optional)
- *
  * Create a DTD node.
  *
  * If a document is provided, it is an error if it already has an
  * external subset. If the document has no external subset, it
  * will be set to the created DTD.
  *
- * To create an internal subset, use xmlCreateIntSubset().
+ * To create an internal subset, use #xmlCreateIntSubset.
  *
- * Returns a pointer to the new DTD object or NULL if arguments are
+ * @param doc  the document pointer (optional)
+ * @param name  the DTD name (optional)
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD (optional)
+ * @returns a pointer to the new DTD object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlDtdPtr
-xmlNewDtd(xmlDocPtr doc, const xmlChar *name,
-                    const xmlChar *ExternalID, const xmlChar *SystemID) {
+xmlDtd *
+xmlNewDtd(xmlDoc *doc, const xmlChar *name, const xmlChar *publicId,
+          const xmlChar *systemId) {
     xmlDtdPtr cur;
 
     if ((doc != NULL) && (doc->extSubset != NULL)) {
@@ -838,13 +658,13 @@ xmlNewDtd(xmlDocPtr doc, const xmlChar *
         if (cur->name == NULL)
             goto error;
     }
-    if (ExternalID != NULL) {
-	cur->ExternalID = xmlStrdup(ExternalID);
+    if (publicId != NULL) {
+	cur->ExternalID = xmlStrdup(publicId);
         if (cur->ExternalID == NULL)
             goto error;
     }
-    if (SystemID != NULL) {
-	cur->SystemID = xmlStrdup(SystemID);
+    if (systemId != NULL) {
+	cur->SystemID = xmlStrdup(systemId);
         if (cur->SystemID == NULL)
             goto error;
     }
@@ -862,14 +682,12 @@ error:
 }
 
 /**
- * xmlGetIntSubset:
- * @doc:  the document pointer
- *
  * Get the internal subset of a document.
  *
- * Returns a pointer to the DTD object or NULL if not found.
+ * @param doc  the document pointer
+ * @returns a pointer to the DTD object or NULL if not found.
  */
-xmlDtdPtr
+xmlDtd *
 xmlGetIntSubset(const xmlDoc *doc) {
     xmlNodePtr cur;
 
@@ -885,12 +703,6 @@ xmlGetIntSubset(const xmlDoc *doc) {
 }
 
 /**
- * xmlCreateIntSubset:
- * @doc:  the document pointer (optional)
- * @name:  the DTD name (optional)
- * @ExternalID:  the external (PUBLIC) ID (optional)
- * @SystemID:  the system ID (optional)
- *
  * Create a DTD node.
  *
  * If a document is provided and it already has an internal subset,
@@ -898,12 +710,16 @@ xmlGetIntSubset(const xmlDoc *doc) {
  * If the document has no internal subset, it will be set to the
  * created DTD.
  *
- * Returns a pointer to the new or existing DTD object or NULL if
+ * @param doc  the document pointer (optional)
+ * @param name  the DTD name (optional)
+ * @param publicId  public identifier of the DTD (optional)
+ * @param systemId  system identifier (URL) of the DTD (optional)
+ * @returns a pointer to the new or existing DTD object or NULL if
  * arguments are invalid or a memory allocation failed.
  */
-xmlDtdPtr
-xmlCreateIntSubset(xmlDocPtr doc, const xmlChar *name,
-                   const xmlChar *ExternalID, const xmlChar *SystemID) {
+xmlDtd *
+xmlCreateIntSubset(xmlDoc *doc, const xmlChar *name, const xmlChar *publicId,
+                   const xmlChar *systemId) {
     xmlDtdPtr cur;
 
     if (doc != NULL) {
@@ -926,13 +742,13 @@ xmlCreateIntSubset(xmlDocPtr doc, const
 	if (cur->name == NULL)
             goto error;
     }
-    if (ExternalID != NULL) {
-	cur->ExternalID = xmlStrdup(ExternalID);
+    if (publicId != NULL) {
+	cur->ExternalID = xmlStrdup(publicId);
 	if (cur->ExternalID  == NULL)
             goto error;
     }
-    if (SystemID != NULL) {
-	cur->SystemID = xmlStrdup(SystemID);
+    if (systemId != NULL) {
+	cur->SystemID = xmlStrdup(systemId);
 	if (cur->SystemID == NULL)
             goto error;
     }
@@ -985,11 +801,10 @@ error:
 }
 
 /**
- * DICT_FREE:
- * @str:  a string
- *
  * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
+ *
+ * @param str  a string
  */
 #define DICT_FREE(str)						\
 	if ((str) && ((!dict) ||				\
@@ -997,13 +812,12 @@ error:
 	    xmlFree((char *)(str));
 
 /**
- * xmlFreeDtd:
- * @cur:  the DTD structure to free up
- *
  * Free a DTD structure.
+ *
+ * @param cur  the DTD structure to free up
  */
 void
-xmlFreeDtd(xmlDtdPtr cur) {
+xmlFreeDtd(xmlDtd *cur) {
     xmlDictPtr dict = NULL;
 
     if (cur == NULL) {
@@ -1032,9 +846,14 @@ xmlFreeDtd(xmlDtdPtr cur) {
 	    c = next;
 	}
     }
+
     DICT_FREE(cur->name)
-    DICT_FREE(cur->SystemID)
-    DICT_FREE(cur->ExternalID)
+
+    if (cur->SystemID != NULL)
+        xmlFree(cur->SystemID);
+    if (cur->ExternalID != NULL)
+        xmlFree(cur->ExternalID);
+
     /* TODO !!! */
     if (cur->notations != NULL)
         xmlFreeNotationTable((xmlNotationTablePtr) cur->notations);
@@ -1052,14 +871,12 @@ xmlFreeDtd(xmlDtdPtr cur) {
 }
 
 /**
- * xmlNewDoc:
- * @version:  XML version string like "1.0" (optional)
+ * Creates a new XML document. If version is NULL, `"1.0"` is used.
  *
- * Creates a new XML document. If version is NULL, "1.0" is used.
- *
- * Returns a new document or NULL if a memory allocation failed.
+ * @param version  XML version string like `"1.0"` (optional)
+ * @returns a new document or NULL if a memory allocation failed.
  */
-xmlDocPtr
+xmlDoc *
 xmlNewDoc(const xmlChar *version) {
     xmlDocPtr cur;
 
@@ -1098,13 +915,12 @@ xmlNewDoc(const xmlChar *version) {
 }
 
 /**
- * xmlFreeDoc:
- * @cur:  pointer to the document
- *
  * Free a document including all children and associated DTDs.
+ *
+ * @param cur  pointer to the document
  */
 void
-xmlFreeDoc(xmlDocPtr cur) {
+xmlFreeDoc(xmlDoc *cur) {
     xmlDtdPtr extSubset, intSubset;
     xmlDictPtr dict = NULL;
 
@@ -1142,30 +958,44 @@ xmlFreeDoc(xmlDocPtr cur) {
     if (cur->children != NULL) xmlFreeNodeList(cur->children);
     if (cur->oldNs != NULL) xmlFreeNsList(cur->oldNs);
 
-    DICT_FREE(cur->version)
     DICT_FREE(cur->name)
-    DICT_FREE(cur->encoding)
-    DICT_FREE(cur->URL)
+
+    if (cur->version != NULL)
+        xmlFree(cur->version);
+    if (cur->encoding != NULL)
+        xmlFree(cur->encoding);
+    if (cur->URL != NULL)
+        xmlFree(cur->URL);
+
     xmlFree(cur);
     if (dict) xmlDictFree(dict);
 }
 
 /**
- * xmlNodeParseContentInternal:
- * @doc:  a document (optional)
- * @parent:  an element or attribute (optional)
- * @value:  an attribute value
- * @len:  maximum length of the attribute value
- * @listPtr:  pointer to the resulting node list (optional)
+ * Parse an attribute value and replace the node's children with
+ * the resulting node list.
  *
- * See xmlNodeParseContent.
+ * `content` is expected to be a valid XML attribute value possibly
+ * containing character and entity references. Syntax errors
+ * and references to undeclared entities are ignored silently.
+ * Only references are handled, nested elements, comments or PIs are
+ * not.
  *
- * Returns 0 on success, -1 if a memory allocation failed.
+ * This function is used by the SAX parser to parse attribute
+ * values a second time if entities aren't substituted. It's also
+ * used to parse node content in the tree API, but this is a
+ * historical mistake.
+ *
+ * @param doc  a document (optional)
+ * @param attr  an attribute or element (optional)
+ * @param value  an attribute value
+ * @param len  maximum length of the attribute value
+ * @param listPtr  pointer to the resulting node list (optional)
+ * @returns 0 on success, -1 if a memory allocation failed.
  */
-static int
-xmlNodeParseContentInternal(const xmlDoc *doc, xmlNodePtr parent,
-                            const xmlChar *value, int len,
-                            xmlNodePtr *listPtr) {
+int
+xmlNodeParseAttValue(const xmlDoc *doc, xmlAttr *attr,
+                     const xmlChar *value, size_t len, xmlNode **listPtr) {
     xmlNodePtr head = NULL, last = NULL;
     xmlNodePtr node;
     xmlChar *val = NULL;
@@ -1173,16 +1003,11 @@ xmlNodeParseContentInternal(const xmlDoc
     const xmlChar *q;
     xmlEntityPtr ent;
     xmlBufPtr buf;
-    int remaining;
+    size_t remaining = len;
 
     if (listPtr != NULL)
         *listPtr = NULL;
 
-    if (len < 0)
-        remaining = INT_MAX;
-    else
-        remaining = len;
-
     if ((value == NULL) || (value[0] == 0))
         goto done;
 
@@ -1279,7 +1104,8 @@ xmlNodeParseContentInternal(const xmlDoc
                          */
 			if (xmlBufCat(buf, ent->content))
 			    goto out;
-		    } else {
+                    } else if (ent == NULL ||
+                               (ent->flags & XML_ENT_EXPANDING) == 0) {
 			/*
 			 * Flush buffer so far
 			 */
@@ -1288,7 +1114,7 @@ xmlNodeParseContentInternal(const xmlDoc
 			    if (node == NULL)
 				goto out;
 			    node->content = xmlBufDetach(buf);
-                            node->parent = parent;
+                            node->parent = (xmlNode *) attr;
 
 			    if (last == NULL) {
 				head = node;
@@ -1301,13 +1127,13 @@ xmlNodeParseContentInternal(const xmlDoc
 
 			if ((ent != NULL) &&
                             ((ent->flags & XML_ENT_PARSED) == 0) &&
-                            ((ent->flags & XML_ENT_EXPANDING) == 0) &&
                             (ent->content != NULL)) {
                             int res;
 
                             ent->flags |= XML_ENT_EXPANDING;
-                            res = xmlNodeParseContentInternal(doc,
-                                    (xmlNodePtr) ent, ent->content, -1, NULL);
+                            res = xmlNodeParseAttValue(doc, (xmlAttr *) ent,
+                                                       ent->content, SIZE_MAX,
+                                                       NULL);
                             ent->flags &= ~XML_ENT_EXPANDING;
                             if (res < 0)
                                 goto out;
@@ -1321,7 +1147,7 @@ xmlNodeParseContentInternal(const xmlDoc
                         val = NULL;
 			if (node == NULL)
 			    goto out;
-                        node->parent = parent;
+                        node->parent = (xmlNode *) attr;
                         node->last = (xmlNodePtr) ent;
                         if (ent != NULL) {
                             node->children = (xmlNodePtr) ent;
@@ -1374,7 +1200,7 @@ xmlNodeParseContentInternal(const xmlDoc
 	node = xmlNewDocText(doc, NULL);
 	if (node == NULL)
             goto out;
-        node->parent = parent;
+        node->parent = (xmlNode *) attr;
 	node->content = xmlBufDetach(buf);
 
 	if (last == NULL) {
@@ -1388,18 +1214,18 @@ xmlNodeParseContentInternal(const xmlDoc
         head = xmlNewDocText(doc, BAD_CAST "");
         if (head == NULL)
             goto out;
-        head->parent = parent;
+        head->parent = (xmlNode *) attr;
         last = head;
     }
 
     xmlBufFree(buf);
 
 done:
-    if (parent != NULL) {
-        if (parent->children != NULL)
-            xmlFreeNodeList(parent->children);
-        parent->children = head;
-        parent->last = last;
+    if (attr != NULL) {
+        if (attr->children != NULL)
+            xmlFreeNodeList(attr->children);
+        attr->children = head;
+        attr->last = last;
     }
 
     if (listPtr != NULL)
@@ -1417,92 +1243,65 @@ out:
 }
 
 /**
- * xmlNodeParseContent:
- * @node:  an element or attribute
- * @content:  text content with XML references
- * @len:  maximum length of content
- *
- * Parse content and replace the node's children with the resulting
- * node list.
+ * See #xmlStringGetNodeList.
  *
- * @content is expected to be a valid XML attribute value possibly
- * containing character and entity references. Syntax errors
- * and references to undeclared entities are ignored silently.
- * Only references are handled, nested elements, comments or PIs are
- * not.
+ * @deprecated Internal function, don't use.
  *
- * Returns 0 on success, -1 if a memory allocation failed.
- */
-int
-xmlNodeParseContent(xmlNodePtr node, const xmlChar *content, int len) {
-    return(xmlNodeParseContentInternal(node->doc, node, content, len, NULL));
-}
-
-/**
- * xmlStringLenGetNodeList:
- * @doc:  a document (optional)
- * @value:  an attribute value
- * @len:  maximum length of the attribute value
- *
- * DEPRECATED: Use xmlNodeSetContentLen.
- *
- * See xmlStringGetNodeList.
- *
- * Returns a pointer to the first child or NULL if the value if empty
+ * @param doc  a document (optional)
+ * @param value  an attribute value
+ * @param len  maximum length of the attribute value
+ * @returns a pointer to the first child or NULL if the value if empty
  * or a memory allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlStringLenGetNodeList(const xmlDoc *doc, const xmlChar *value, int len) {
     xmlNodePtr ret;
+    size_t maxSize = len < 0 ? SIZE_MAX : (size_t) len;
 
-    xmlNodeParseContentInternal(doc, NULL, value, len, &ret);
+    xmlNodeParseAttValue(doc, NULL, value, maxSize, &ret);
     return(ret);
 }
 
 /**
- * xmlStringGetNodeList:
- * @doc:  a document (optional)
- * @value:  an attribute value
- *
- * DEPRECATED: Use xmlNodeSetContent.
- *
- * Parse an attribute value and build a node list containing only
+ * Parse an attribute value and build a node list with
  * text and entity reference nodes. The resulting nodes will be
  * associated with the document if provided. The document is also
  * used to look up entities.
  *
+ * @deprecated Internal function, don't use.
+ *
  * The input is not validated. Syntax errors or references to
  * undeclared entities will be ignored silently with unspecified
  * results.
  *
- * Returns a pointer to the first child or NULL if the value if empty
+ * @param doc  a document (optional)
+ * @param value  an attribute value
+ * @returns a pointer to the first child or NULL if the value if empty
  * or a memory allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlStringGetNodeList(const xmlDoc *doc, const xmlChar *value) {
     xmlNodePtr ret;
 
-    xmlNodeParseContentInternal(doc, NULL, value, -1, &ret);
+    xmlNodeParseAttValue(doc, NULL, value, SIZE_MAX, &ret);
     return(ret);
 }
 
 /**
- * xmlNodeListGetStringInternal:
- * @doc:  a document (optional)
- * @node:  a node list
- * @escMode: escape mode (0 = no, 1 = elem, 2 = attr, 3 = raw)
- *
- * Returns a pointer to the string.
+ * @param node  a node list
+ * @param escape  whether to escape characters and keep entity refs
+ * @param flags  escape flags
+ * @returns a pointer to the string.
  */
-static xmlChar *
-xmlNodeListGetStringInternal(xmlDocPtr doc, const xmlNode *node, int escMode) {
+xmlChar *
+xmlNodeListGetStringInternal(const xmlNode *node, int escape, int flags) {
     xmlBufPtr buf;
     xmlChar *ret;
 
     if (node == NULL)
         return(xmlStrdup(BAD_CAST ""));
 
-    if ((escMode == 0) &&
+    if ((escape == 0) &&
         ((node->type == XML_TEXT_NODE) ||
          (node->type == XML_CDATA_SECTION_NODE)) &&
         (node->next == NULL)) {
@@ -1519,19 +1318,12 @@ xmlNodeListGetStringInternal(xmlDocPtr d
         if ((node->type == XML_TEXT_NODE) ||
             (node->type == XML_CDATA_SECTION_NODE)) {
             if (node->content != NULL) {
-                if (escMode == 0) {
+                if (escape == 0) {
                     xmlBufCat(buf, node->content);
                 } else {
                     xmlChar *encoded;
 
-                    if (escMode == 1)
-                        encoded = xmlEncodeEntitiesInternal(doc, node->content,
-                                                            0);
-                    else if (escMode == 2)
-                        encoded = xmlEncodeEntitiesInternal(doc, node->content,
-                                                            XML_ESCAPE_ATTR);
-                    else
-                        encoded = xmlEncodeSpecialChars(doc, node->content);
+                    encoded = xmlEscapeText(node->content, flags);
                     if (encoded == NULL)
                         goto error;
                     xmlBufCat(buf, encoded);
@@ -1539,7 +1331,7 @@ xmlNodeListGetStringInternal(xmlDocPtr d
                 }
             }
         } else if (node->type == XML_ENTITY_REF_NODE) {
-            if (escMode == 0) {
+            if (escape == 0) {
                 xmlBufGetNodeContent(buf, node);
             } else {
                 xmlBufAdd(buf, BAD_CAST "&", 1);
@@ -1561,68 +1353,79 @@ error:
 }
 
 /**
- * xmlNodeListGetString:
- * @doc:  a document (optional)
- * @list:  a node list of attribute children
- * @inLine:  whether entity references are substituted
- *
  * Serializes attribute children (text and entity reference nodes)
  * into a string.
  *
- * If @inLine is true, entity references will be substituted.
+ * If `inLine` is true, entity references will be substituted.
  * Otherwise, entity references will be kept and special characters
- * like '&' as well as non-ASCII chars will be escaped. See
- * xmlNodeListGetRawString for an alternative option.
- *
- * Returns a string or NULL if a memory allocation failed.
+ * like `&` as well as non-ASCII chars will be escaped. See
+ * #xmlEncodeEntitiesReentrant for details. If `list` is the child
+ * of an attribute, escaping rules apply are adjusted.
+ *
+ * See #xmlNodeListGetRawString for an alternative option.
+ *
+ * @param doc  a document (optional)
+ * @param list  a node list of attribute children
+ * @param inLine  whether entity references are substituted
+ * @returns a string or NULL if a memory allocation failed.
  */
 xmlChar *
-xmlNodeListGetString(xmlDocPtr doc, const xmlNode *list, int inLine)
+xmlNodeListGetString(xmlDoc *doc, const xmlNode *list, int inLine)
 {
-    int escMode;
+    int flags = 0;
+    int escape = 0;
 
     /* backward compatibility */
     if (list == NULL)
         return(NULL);
 
-    if (inLine) {
-        escMode = 0;
-    } else {
+    if (!inLine) {
+        escape = 1;
+
+        if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE))
+            flags |= XML_ESCAPE_HTML;
+        else if ((doc == NULL) || (doc->encoding == NULL))
+            flags |= XML_ESCAPE_NON_ASCII;
+
         if ((list->parent != NULL) &&
             (list->parent->type == XML_ATTRIBUTE_NODE))
-            escMode = 2;
-        else
-            escMode = 1;
+            flags |= XML_ESCAPE_ATTR;
     }
 
-    return(xmlNodeListGetStringInternal(doc, list, escMode));
+    return(xmlNodeListGetStringInternal(list, escape, flags));
 }
 
 /**
- * xmlNodeListGetRawString:
- * @doc:  a document (optional)
- * @list:  a node list of attribute children
- * @inLine:  whether entity references are substituted
- *
  * Serializes attribute children (text and entity reference nodes)
  * into a string.
  *
- * If @inLine is true, entity references will be substituted.
+ * If `inLine` is true, entity references will be substituted.
  * Otherwise, entity references will be kept and special characters
- * like '&' will be escaped.
+ * like `&` will be escaped. See #xmlEncodeSpecialChars for
+ * details.
  *
- * Returns a string or NULL if a memory allocation failed.
+ * @param doc  a document (unused)
+ * @param list  a node list of attribute children
+ * @param inLine  whether entity references are substituted
+ * @returns a string or NULL if a memory allocation failed.
  */
 xmlChar *
-xmlNodeListGetRawString(const xmlDoc *doc, const xmlNode *list, int inLine)
+xmlNodeListGetRawString(const xmlDoc *doc ATTRIBUTE_UNUSED,
+                        const xmlNode *list, int inLine)
 {
-    int escMode = inLine ? 0 : 3;
+    int escape = 0;
+    int flags = 0;
 
     /* backward compatibility */
     if (list == NULL)
         return(NULL);
 
-    return(xmlNodeListGetStringInternal((xmlDocPtr) doc, list, escMode));
+    if (!inLine) {
+        escape = 1;
+        flags = XML_ESCAPE_QUOT;
+    }
+
+    return(xmlNodeListGetStringInternal(list, escape, flags));
 }
 
 static xmlAttrPtr
@@ -1724,24 +1527,22 @@ error:
 }
 
 /**
- * xmlNewProp:
- * @node:  the parent node (optional)
- * @name:  the name of the attribute
- * @value:  the value of the attribute (optional)
- *
  * Create an attribute node.
  *
- * If provided, @value should be a raw, unescaped string.
+ * If provided, `value` should be a raw, unescaped string.
  *
- * If @node is provided, the created attribute will be appended without
- * checking for duplicate names. It is an error if @node is not an
+ * If `node` is provided, the created attribute will be appended without
+ * checking for duplicate names. It is an error if `node` is not an
  * element.
  *
- * Returns a pointer to the attribute or NULL if arguments are invalid
+ * @param node  the parent node (optional)
+ * @param name  the name of the attribute
+ * @param value  the value of the attribute (optional)
+ * @returns a pointer to the attribute or NULL if arguments are invalid
  * or a memory allocation failed.
  */
-xmlAttrPtr
-xmlNewProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) {
+xmlAttr *
+xmlNewProp(xmlNode *node, const xmlChar *name, const xmlChar *value) {
 
     if (name == NULL) {
 	return(NULL);
@@ -1751,25 +1552,23 @@ xmlNewProp(xmlNodePtr node, const xmlCha
 }
 
 /**
- * xmlNewNsProp:
- * @node:  the parent node (optional)
- * @ns:  the namespace (optional)
- * @name:  the local name of the attribute
- * @value:  the value of the attribute (optional)
- *
- * Create an attribute object.
+ * Create an attribute node.
  *
- * If provided, @value should be a raw, unescaped string.
+ * If provided, `value` should be a raw, unescaped string.
  *
- * If @node is provided, the created attribute will be appended without
- * checking for duplicate names. It is an error if @node is not an
+ * If `node` is provided, the created attribute will be appended without
+ * checking for duplicate names. It is an error if `node` is not an
  * element.
  *
- * Returns a pointer to the attribute or NULL if arguments are invalid
+ * @param node  the parent node (optional)
+ * @param ns  the namespace (optional)
+ * @param name  the local name of the attribute
+ * @param value  the value of the attribute (optional)
+ * @returns a pointer to the attribute or NULL if arguments are invalid
  * or a memory allocation failed.
  */
-xmlAttrPtr
-xmlNewNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
+xmlAttr *
+xmlNewNsProp(xmlNode *node, xmlNs *ns, const xmlChar *name,
            const xmlChar *value) {
 
     if (name == NULL) {
@@ -1780,21 +1579,21 @@ xmlNewNsProp(xmlNodePtr node, xmlNsPtr n
 }
 
 /**
- * xmlNewNsPropEatName:
- * @node:  the parent node (optional)
- * @ns:  the namespace (optional)
- * @name:  the local name of the attribute
- * @value:  the value of the attribute (optional)
+ * Create an attribute node.
  *
- * Like xmlNewNsProp, but the @name string will be used directly
- * without making a copy. Takes ownership of @name which will also
+ * Like #xmlNewNsProp, but the `name` string will be used directly
+ * without making a copy. Takes ownership of `name` which will also
  * be freed on error.
  *
- * Returns a pointer to the attribute or NULL if arguments are invalid
+ * @param node  the parent node (optional)
+ * @param ns  the namespace (optional)
+ * @param name  the local name of the attribute
+ * @param value  the value of the attribute (optional)
+ * @returns a pointer to the attribute or NULL if arguments are invalid
  * or a memory allocation failed.
  */
-xmlAttrPtr
-xmlNewNsPropEatName(xmlNodePtr node, xmlNsPtr ns, xmlChar *name,
+xmlAttr *
+xmlNewNsPropEatName(xmlNode *node, xmlNs *ns, xmlChar *name,
            const xmlChar *value) {
 
     if (name == NULL) {
@@ -1805,23 +1604,21 @@ xmlNewNsPropEatName(xmlNodePtr node, xml
 }
 
 /**
- * xmlNewDocProp:
- * @doc:  the target document (optional)
- * @name:  the name of the attribute
- * @value:  attribute value with XML references (optional)
- *
- * Create an attribute object.
+ * Create an attribute node.
  *
- * If provided, @value is expected to be a valid XML attribute value
+ * If provided, `value` is expected to be a valid XML attribute value
  * possibly containing character and entity references. Syntax errors
  * and references to undeclared entities are ignored silently.
- * If you want to pass a raw string, see xmlNewProp.
+ * If you want to pass a raw string, see #xmlNewProp.
  *
- * Returns a pointer to the attribute or NULL if arguments are invalid
+ * @param doc  the target document (optional)
+ * @param name  the name of the attribute
+ * @param value  attribute value with XML references (optional)
+ * @returns a pointer to the attribute or NULL if arguments are invalid
  * or a memory allocation failed.
  */
-xmlAttrPtr
-xmlNewDocProp(xmlDocPtr doc, const xmlChar *name, const xmlChar *value) {
+xmlAttr *
+xmlNewDocProp(xmlDoc *doc, const xmlChar *name, const xmlChar *value) {
     xmlAttrPtr cur;
 
     if (name == NULL) {
@@ -1845,7 +1642,11 @@ xmlNewDocProp(xmlDocPtr doc, const xmlCh
         goto error;
     cur->doc = doc;
     if (value != NULL) {
-	if (xmlNodeParseContent((xmlNodePtr) cur, value, -1) < 0)
+        /*
+         * We shouldn't parse the attribute value here,
+         * but the API can't be changed.
+         */
+        if (xmlNodeParseAttValue(doc, cur, value, SIZE_MAX, NULL) < 0)
             goto error;
     }
 
@@ -1859,13 +1660,12 @@ error:
 }
 
 /**
- * xmlFreePropList:
- * @cur:  the first attribute in the list
- *
  * Free an attribute list including all children.
+ *
+ * @param cur  the first attribute in the list
  */
 void
-xmlFreePropList(xmlAttrPtr cur) {
+xmlFreePropList(xmlAttr *cur) {
     xmlAttrPtr next;
     if (cur == NULL) return;
     while (cur != NULL) {
@@ -1876,13 +1676,12 @@ xmlFreePropList(xmlAttrPtr cur) {
 }
 
 /**
- * xmlFreeProp:
- * @cur:  an attribute
- *
  * Free an attribute including all children.
+ *
+ * @param cur  an attribute
  */
 void
-xmlFreeProp(xmlAttrPtr cur) {
+xmlFreeProp(xmlAttr *cur) {
     xmlDictPtr dict = NULL;
     if (cur == NULL) return;
 
@@ -1901,20 +1700,18 @@ xmlFreeProp(xmlAttrPtr cur) {
 }
 
 /**
- * xmlRemoveProp:
- * @cur:  an attribute
- *
  * Unlink and free an attribute including all children.
  *
  * Note this doesn't work for namespace declarations.
  *
  * The attribute must have a non-NULL parent pointer.
  *
- * Returns 0 on success or -1 if the attribute was not found or
+ * @param cur  an attribute
+ * @returns 0 on success or -1 if the attribute was not found or
  * arguments are invalid.
  */
 int
-xmlRemoveProp(xmlAttrPtr cur) {
+xmlRemoveProp(xmlAttr *cur) {
     xmlAttrPtr tmp;
     if (cur == NULL) {
 	return(-1);
@@ -1944,18 +1741,16 @@ xmlRemoveProp(xmlAttrPtr cur) {
 }
 
 /**
- * xmlNewDocPI:
- * @doc:  the target document (optional)
- * @name:  the processing instruction target
- * @content:  the PI content (optional)
- *
  * Create a processing instruction object.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document (optional)
+ * @param name  the processing instruction target
+ * @param content  the PI content (optional)
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewDocPI(xmlDocPtr doc, const xmlChar *name, const xmlChar *content) {
+xmlNode *
+xmlNewDocPI(xmlDoc *doc, const xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur;
 
     if (name == NULL) {
@@ -1994,57 +1789,51 @@ error:
 }
 
 /**
- * xmlNewPI:
- * @name:  the processing instruction target
- * @content:  the PI content (optional)
- *
  * Create a processing instruction node.
  *
- * Use of this function is DISCOURAGED in favor of xmlNewDocPI.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocPI.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param name  the processing instruction target
+ * @param content  the PI content (optional)
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewPI(const xmlChar *name, const xmlChar *content) {
     return(xmlNewDocPI(NULL, name, content));
 }
 
 /**
- * xmlNewNode:
- * @ns:  namespace (optional)
- * @name:  the node name
- *
  * Create an element node.
  *
- * Use of this function is DISCOURAGED in favor of xmlNewDocNode.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocNode.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param ns  namespace (optional)
+ * @param name  the node name
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewNode(xmlNsPtr ns, const xmlChar *name) {
+xmlNode *
+xmlNewNode(xmlNs *ns, const xmlChar *name) {
     return(xmlNewDocNode(NULL, ns, name, NULL));
 }
 
 /**
- * xmlNewNodeEatName:
- * @ns:  namespace (optional)
- * @name:  the node name
- *
  * Create an element node.
  *
- * Use of this function is DISCOURAGED in favor of xmlNewDocNodeEatName.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocNodeEatName.
  *
- * Like xmlNewNode, but the @name string will be used directly
- * without making a copy. Takes ownership of @name which will also
+ * Like #xmlNewNode, but the `name` string will be used directly
+ * without making a copy. Takes ownership of `name` which will also
  * be freed on error.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param ns  namespace (optional)
+ * @param name  the node name
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewNodeEatName(xmlNsPtr ns, xmlChar *name) {
+xmlNode *
+xmlNewNodeEatName(xmlNs *ns, xmlChar *name) {
     return(xmlNewDocNodeEatName(NULL, ns, name, NULL));
 }
 
@@ -2064,7 +1853,12 @@ xmlNewElem(xmlDocPtr doc, xmlNsPtr ns, c
     cur->ns = ns;
 
     if (content != NULL) {
-        if (xmlNodeParseContent(cur, content, -1) < 0) {
+        /*
+         * We shouldn't parse the content as attribute value here,
+         * but the API can't be changed.
+         */
+        if (xmlNodeParseAttValue(doc, (xmlAttr *) cur, content, SIZE_MAX,
+                                 NULL) < 0) {
             /* Don't free name on error */
             xmlFree(cur);
             return(NULL);
@@ -2078,19 +1872,13 @@ xmlNewElem(xmlDocPtr doc, xmlNsPtr ns, c
 }
 
 /**
- * xmlNewDocNode:
- * @doc:  the target document
- * @ns:  namespace (optional)
- * @name:  the node name
- * @content:  text content with XML references (optional)
- *
  * Create an element node.
  *
- * If provided, @content is expected to be a valid XML attribute value
+ * If provided, `content` is expected to be a valid XML attribute value
  * possibly containing character and entity references. Syntax errors
  * and references to undeclared entities are ignored silently.
  * Only references are handled, nested elements, comments or PIs are
- * not. See xmlNewDocRawNode for an alternative.
+ * not. See #xmlNewDocRawNode for an alternative.
  *
  * General notes on object creation:
  *
@@ -2100,11 +1888,15 @@ xmlNewElem(xmlDocPtr doc, xmlNsPtr ns, c
  * tree. Note that a document only owns nodes reachable from the root
  * node. Unlinked subtrees must be freed manually.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document
+ * @param ns  namespace (optional)
+ * @param name  the node name
+ * @param content  text content with XML references (optional)
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
+xmlNode *
+xmlNewDocNode(xmlDoc *doc, xmlNs *ns,
               const xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur;
     xmlChar *copy;
@@ -2134,23 +1926,21 @@ xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns
 }
 
 /**
- * xmlNewDocNodeEatName:
- * @doc:  the target document
- * @ns:  namespace (optional)
- * @name:  the node name
- * @content:  text content with XML references (optional)
- *
  * Create an element node.
  *
- * Like xmlNewDocNode, but the @name string will be used directly
- * without making a copy. Takes ownership of @name which will also
+ * Like #xmlNewDocNode, but the `name` string will be used directly
+ * without making a copy. Takes ownership of `name` which will also
  * be freed on error.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document
+ * @param ns  namespace (optional)
+ * @param name  the node name
+ * @param content  text content with XML references (optional)
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewDocNodeEatName(xmlDocPtr doc, xmlNsPtr ns,
+xmlNode *
+xmlNewDocNodeEatName(xmlDoc *doc, xmlNs *ns,
                      xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur;
 
@@ -2171,21 +1961,19 @@ xmlNewDocNodeEatName(xmlDocPtr doc, xmlN
 }
 
 /**
- * xmlNewDocRawNode:
- * @doc:  the target document
- * @ns:  namespace (optional)
- * @name:  the node name
- * @content:  raw text content (optional)
- *
  * Create an element node.
  *
- * If provided, @value should be a raw, unescaped string.
+ * If provided, `value` should be a raw, unescaped string.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document
+ * @param ns  namespace (optional)
+ * @param name  the node name
+ * @param content  raw text content (optional)
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewDocRawNode(xmlDocPtr doc, xmlNsPtr ns,
+xmlNode *
+xmlNewDocRawNode(xmlDoc *doc, xmlNs *ns,
                  const xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur;
 
@@ -2210,16 +1998,14 @@ xmlNewDocRawNode(xmlDocPtr doc, xmlNsPtr
 }
 
 /**
- * xmlNewDocFragment:
- * @doc:  the target document (optional)
- *
  * Create a document fragment node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param doc  the target document (optional)
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
-xmlNewDocFragment(xmlDocPtr doc) {
+xmlNode *
+xmlNewDocFragment(xmlDoc *doc) {
     xmlNodePtr cur;
 
     /*
@@ -2239,17 +2025,15 @@ xmlNewDocFragment(xmlDocPtr doc) {
 }
 
 /**
- * xmlNewText:
- * @content:  raw text content (optional)
- *
  * Create a text node.
  *
- * Use of this function is DISCOURAGED in favor of xmlNewDocText.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocText.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param content  raw text content (optional)
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewText(const xmlChar *content) {
     xmlNodePtr cur;
 
@@ -2279,25 +2063,23 @@ error:
 }
 
 /**
- * xmlNewTextChild:
- * @parent:  the parent node
- * @ns:  a namespace (optional)
- * @name:  the name of the child
- * @content:  raw text content of the child (optional)
- *
  * Create a new child element and append it to a parent element.
  *
- * If @ns is NULL, the newly created element inherits the namespace
+ * If `ns` is NULL, the newly created element inherits the namespace
  * of the parent.
  *
- * If @content is provided, a text node will be added to the child
- * element, see xmlNewDocRawNode.
+ * If `content` is provided, a text node will be added to the child
+ * element, see #xmlNewDocRawNode.
  *
- * Returns a pointer to the new node object or NULL if arguments
+ * @param parent  the parent node
+ * @param ns  a namespace (optional)
+ * @param name  the name of the child
+ * @param content  raw text content of the child (optional)
+ * @returns a pointer to the new node object or NULL if arguments
  * are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewTextChild(xmlNodePtr parent, xmlNsPtr ns,
+xmlNode *
+xmlNewTextChild(xmlNode *parent, xmlNs *ns,
             const xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur, prev;
 
@@ -2341,16 +2123,14 @@ xmlNewTextChild(xmlNodePtr parent, xmlNs
 }
 
 /**
- * xmlNewEntityRef:
- * @doc: the target document (optional)
- * @name:  the entity name
- *
  * Create an empty entity reference node. This function doesn't attempt
- * to look up the entity in @doc.
+ * to look up the entity in `doc`.
  *
- * @name is consumed.
+ * `name` is consumed.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document (optional)
+ * @param name  the entity name
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
 static xmlNodePtr
@@ -2377,23 +2157,22 @@ xmlNewEntityRef(xmlDocPtr doc, xmlChar *
 }
 
 /**
- * xmlNewCharRef:
- * @doc: the target document (optional)
- * @name:  the entity name
+ * Create an empty entity reference node.
  *
  * This function is MISNAMED. It doesn't create a character reference
  * but an entity reference.
  *
- * Create an empty entity reference node. This function doesn't attempt
- * to look up the entity in @doc.
+ * This function doesn't attempt to look up the entity in `doc`.
  *
- * Entity names like '&entity;' are handled as well.
+ * Entity names like `&entity;` are handled as well.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document (optional)
+ * @param name  the entity name
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewCharRef(xmlDocPtr doc, const xmlChar *name) {
+xmlNode *
+xmlNewCharRef(xmlDoc *doc, const xmlChar *name) {
     xmlChar *copy;
 
     if (name == NULL)
@@ -2416,19 +2195,17 @@ xmlNewCharRef(xmlDocPtr doc, const xmlCh
 }
 
 /**
- * xmlNewReference:
- * @doc: the target document (optional)
- * @name:  the entity name
- *
  * Create a new entity reference node, linking the result with the
- * entity in @doc if found.
+ * entity in `doc` if found.
  *
- * Entity names like '&entity;' are handled as well.
+ * Entity names like `&entity;` are handled as well.
  *
- * Returns a pointer to the new node object or NULL if arguments are
+ * @param doc  the target document (optional)
+ * @param name  the entity name
+ * @returns a pointer to the new node object or NULL if arguments are
  * invalid or a memory allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewReference(const xmlDoc *doc, const xmlChar *name) {
     xmlNodePtr cur;
     xmlEntityPtr ent;
@@ -2481,16 +2258,14 @@ error:
 }
 
 /**
- * xmlNewDocText:
- * @doc:  the target document
- * @content:  raw text content (optional)
- *
  * Create a new text node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param doc  the target document
+ * @param content  raw text content (optional)
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewDocText(const xmlDoc *doc, const xmlChar *content) {
     xmlNodePtr cur;
 
@@ -2500,16 +2275,16 @@ xmlNewDocText(const xmlDoc *doc, const x
 }
 
 /**
- * xmlNewTextLen:
- * @content:  raw text content (optional)
- * @len:  size of text content
+ * Create a new text node.
  *
- * Use of this function is DISCOURAGED in favor of xmlNewDocTextLen.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocTextLen.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param content  raw text content (optional)
+ * @param len  size of text content
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewTextLen(const xmlChar *content, int len) {
     xmlNodePtr cur;
 
@@ -2537,18 +2312,16 @@ xmlNewTextLen(const xmlChar *content, in
 }
 
 /**
- * xmlNewDocTextLen:
- * @doc:  the target document
- * @content:  raw text content (optional)
- * @len:  size of text content
- *
  * Create a new text node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param doc  the target document
+ * @param content  raw text content (optional)
+ * @param len  size of text content
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
-xmlNewDocTextLen(xmlDocPtr doc, const xmlChar *content, int len) {
+xmlNode *
+xmlNewDocTextLen(xmlDoc *doc, const xmlChar *content, int len) {
     xmlNodePtr cur;
 
     cur = xmlNewTextLen(content, len);
@@ -2557,17 +2330,15 @@ xmlNewDocTextLen(xmlDocPtr doc, const xm
 }
 
 /**
- * xmlNewComment:
- * @content:  the comment content (optional)
- *
- * Use of this function is DISCOURAGED in favor of xmlNewDocComment.
+ * Use of this function is DISCOURAGED in favor of #xmlNewDocComment.
  *
  * Create a comment node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param content  the comment content (optional)
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
+xmlNode *
 xmlNewComment(const xmlChar *content) {
     xmlNodePtr cur;
 
@@ -2597,18 +2368,16 @@ error:
 }
 
 /**
- * xmlNewCDataBlock:
- * @doc:  the target document (optional)
- * @content:  raw text content (optional)
- * @len:  size of text content
- *
  * Create a CDATA section node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param doc  the target document (optional)
+ * @param content  raw text content (optional)
+ * @param len  size of text content
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
-xmlNewCDataBlock(xmlDocPtr doc, const xmlChar *content, int len) {
+xmlNode *
+xmlNewCDataBlock(xmlDoc *doc, const xmlChar *content, int len) {
     xmlNodePtr cur;
 
     /*
@@ -2635,17 +2404,15 @@ xmlNewCDataBlock(xmlDocPtr doc, const xm
 }
 
 /**
- * xmlNewDocComment:
- * @doc:  the document
- * @content:  the comment content
- *
  * Create a comment node.
  *
- * Returns a pointer to the new node object or NULL if a memory
+ * @param doc  the document
+ * @param content  the comment content
+ * @returns a pointer to the new node object or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr
-xmlNewDocComment(xmlDocPtr doc, const xmlChar *content) {
+xmlNode *
+xmlNewDocComment(xmlDoc *doc, const xmlChar *content) {
     xmlNodePtr cur;
 
     cur = xmlNewComment(content);
@@ -2800,26 +2567,24 @@ xmlNodeSetDoc(xmlNodePtr node, xmlDocPtr
 }
 
 /**
- * xmlSetTreeDoc:
- * @tree:  root of a subtree
- * @doc:  new document
+ * Associate all nodes in a tree with a new document.
  *
  * This is an internal function which shouldn't be used. It is
- * invoked by functions like xmlAddChild, xmlAddSibling or
- * xmlReplaceNode. @tree must be the root node of an unlinked
+ * invoked by functions like #xmlAddChild, #xmlAddSibling or
+ * #xmlReplaceNode. `tree` must be the root node of an unlinked
  * subtree.
  *
- * Associate all nodes in a tree with a new document.
- *
  * Also copy strings from the old document's dictionary and
  * remove ID attributes from the old ID table.
  *
- * Returns 0 on success. If a memory allocation fails, returns -1.
+ * @param tree  root of a subtree
+ * @param doc  new document
+ * @returns 0 on success. If a memory allocation fails, returns -1.
  * The whole tree will be updated on failure but some strings
  * may be lost.
  */
 int
-xmlSetTreeDoc(xmlNodePtr tree, xmlDocPtr doc) {
+xmlSetTreeDoc(xmlNode *tree, xmlDoc *doc) {
     int ret = 0;
 
     if ((tree == NULL) || (tree->type == XML_NAMESPACE_DECL))
@@ -2856,20 +2621,18 @@ xmlSetTreeDoc(xmlNodePtr tree, xmlDocPtr
 }
 
 /**
- * xmlSetListDoc:
- * @list:  a node list
- * @doc:  new document
+ * Associate all subtrees in `list` with a new document.
  *
- * Associate all subtrees in @list with a new document.
+ * Internal function, see #xmlSetTreeDoc.
  *
- * Internal function, see xmlSetTreeDoc.
- *
- * Returns 0 on success. If a memory allocation fails, returns -1.
+ * @param list  a node list
+ * @param doc  new document
+ * @returns 0 on success. If a memory allocation fails, returns -1.
  * All subtrees will be updated on failure but some strings
  * may be lost.
  */
 int
-xmlSetListDoc(xmlNodePtr list, xmlDocPtr doc) {
+xmlSetListDoc(xmlNode *list, xmlDoc *doc) {
     xmlNodePtr cur;
     int ret = 0;
 
@@ -2889,27 +2652,25 @@ xmlSetListDoc(xmlNodePtr list, xmlDocPtr
 }
 
 /**
- * xmlNewChild:
- * @parent:  the parent node
- * @ns:  a namespace (optional)
- * @name:  the name of the child
- * @content:  text content with XML references (optional)
- *
  * Create a new child element and append it to a parent element.
  *
- * If @ns is NULL, the newly created element inherits the namespace
+ * If `ns` is NULL, the newly created element inherits the namespace
  * of the parent.
  *
- * If provided, @content is expected to be a valid XML attribute
+ * If provided, `content` is expected to be a valid XML attribute
  * value possibly containing character and entity references. Text
  * and entity reference node will be added to the child element,
- * see xmlNewDocNode.
+ * see #xmlNewDocNode.
  *
- * Returns a pointer to the new node object or NULL if arguments
+ * @param parent  the parent node
+ * @param ns  a namespace (optional)
+ * @param name  the name of the child
+ * @param content  text content with XML references (optional)
+ * @returns a pointer to the new node object or NULL if arguments
  * are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
+xmlNode *
+xmlNewChild(xmlNode *parent, xmlNs *ns,
             const xmlChar *name, const xmlChar *content) {
     xmlNodePtr cur, prev;
 
@@ -3113,25 +2874,23 @@ xmlInsertNode(xmlDocPtr doc, xmlNodePtr
 }
 
 /**
- * xmlAddNextSibling:
- * @prev:  the target node
- * @cur:  the new node
+ * Unlinks `cur` and inserts it as next sibling after `prev`.
  *
- * Unlinks @cur and inserts it as next sibling after @prev.
+ * Unlike #xmlAddChild this function does not merge text nodes.
  *
- * Unlike xmlAddChild this function does not merge text nodes.
+ * If `cur` is an attribute node, it is inserted after attribute
+ * `prev`. If the attribute list contains an attribute with a name
+ * matching `cur`, the old attribute is destroyed.
  *
- * If @cur is an attribute node, it is inserted after attribute
- * @prev. If the attribute list contains an attribute with a name
- * matching @cur, the old attribute is destroyed.
+ * See the notes in #xmlAddChild.
  *
- * See the notes in xmlAddChild.
- *
- * Returns @cur or a sibling if @cur was merged. Returns NULL
+ * @param prev  the target node
+ * @param cur  the new node
+ * @returns `cur` or a sibling if `cur` was merged. Returns NULL
  * if arguments are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlAddNextSibling(xmlNodePtr prev, xmlNodePtr cur) {
+xmlNode *
+xmlAddNextSibling(xmlNode *prev, xmlNode *cur) {
     if ((prev == NULL) || (prev->type == XML_NAMESPACE_DECL) ||
         (cur == NULL) || (cur->type == XML_NAMESPACE_DECL) ||
         (cur == prev))
@@ -3144,25 +2903,23 @@ xmlAddNextSibling(xmlNodePtr prev, xmlNo
 }
 
 /**
- * xmlAddPrevSibling:
- * @next:  the target node
- * @cur:  the new node
- *
- * Unlinks @cur and inserts it as previous sibling before @next.
+ * Unlinks `cur` and inserts it as previous sibling before `next`.
  *
- * Unlike xmlAddChild this function does not merge text nodes.
+ * Unlike #xmlAddChild this function does not merge text nodes.
  *
- * If @cur is an attribute node, it is inserted before attribute
- * @next. If the attribute list contains an attribute with a name
- * matching @cur, the old attribute is destroyed.
+ * If `cur` is an attribute node, it is inserted before attribute
+ * `next`. If the attribute list contains an attribute with a name
+ * matching `cur`, the old attribute is destroyed.
  *
- * See the notes in xmlAddChild.
+ * See the notes in #xmlAddChild.
  *
- * Returns @cur or a sibling if @cur was merged. Returns NULL
+ * @param next  the target node
+ * @param cur  the new node
+ * @returns `cur` or a sibling if `cur` was merged. Returns NULL
  * if arguments are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlAddPrevSibling(xmlNodePtr next, xmlNodePtr cur) {
+xmlNode *
+xmlAddPrevSibling(xmlNode *next, xmlNode *cur) {
     if ((next == NULL) || (next->type == XML_NAMESPACE_DECL) ||
         (cur == NULL) || (cur->type == XML_NAMESPACE_DECL) ||
         (cur == next))
@@ -3175,27 +2932,25 @@ xmlAddPrevSibling(xmlNodePtr next, xmlNo
 }
 
 /**
- * xmlAddSibling:
- * @node:  the target node
- * @cur:  the new node
- *
- * Unlinks @cur and inserts it as last sibling of @node.
+ * Unlinks `cur` and inserts it as last sibling of `node`.
  *
- * If @cur is a text node, it may be merged with an adjacent text
+ * If `cur` is a text node, it may be merged with an adjacent text
  * node and freed. In this case the text node containing the merged
  * content is returned.
  *
- * If @cur is an attribute node, it is appended to the attribute
- * list containing @node. If the attribute list contains an attribute
- * with a name matching @cur, the old attribute is destroyed.
- *
- * See the notes in xmlAddChild.
- *
- * Returns @cur or a sibling if @cur was merged. Returns NULL
+ * If `cur` is an attribute node, it is appended to the attribute
+ * list containing `node`. If the attribute list contains an attribute
+ * with a name matching `cur`, the old attribute is destroyed.
+ *
+ * See the notes in #xmlAddChild.
+ *
+ * @param node  the target node
+ * @param cur  the new node
+ * @returns `cur` or a sibling if `cur` was merged. Returns NULL
  * if arguments are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlAddSibling(xmlNodePtr node, xmlNodePtr cur) {
+xmlNode *
+xmlAddSibling(xmlNode *node, xmlNode *cur) {
     if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) ||
         (cur == NULL) || (cur->type == XML_NAMESPACE_DECL) ||
         (cur == node))
@@ -3220,18 +2975,16 @@ xmlAddSibling(xmlNodePtr node, xmlNodePt
 }
 
 /**
- * xmlAddChildList:
- * @parent:  the parent node
- * @cur:  the first node in the list
- *
  * Append a node list to another node.
  *
- * See xmlAddChild.
+ * See #xmlAddChild.
  *
- * Returns the last child or NULL in case of error.
+ * @param parent  the parent node
+ * @param cur  the first node in the list
+ * @returns the last child or NULL in case of error.
  */
-xmlNodePtr
-xmlAddChildList(xmlNodePtr parent, xmlNodePtr cur) {
+xmlNode *
+xmlAddChildList(xmlNode *parent, xmlNode *cur) {
     xmlNodePtr iter;
     xmlNodePtr prev;
     int oom;
@@ -3297,30 +3050,30 @@ xmlAddChildList(xmlNodePtr parent, xmlNo
 }
 
 /**
- * xmlAddChild:
- * @parent:  the parent node
- * @cur:  the child node
- *
- * Unlink @cur and append it to the children of @parent.
+ * Unlink `cur` and append it to the children of `parent`.
  *
- * If @cur is a text node, it may be merged with an adjacent text
+ * If `cur` is a text node, it may be merged with an adjacent text
  * node and freed. In this case the text node containing the merged
  * content is returned.
  *
- * If @cur is an attribute node, it is appended to the attributes of
- * @parent. If the attribute list contains an attribute with a name
- * matching @cur, the old attribute is destroyed.
+ * If `cur` is an attribute node, it is appended to the attributes of
+ * `parent`. If the attribute list contains an attribute with a name
+ * matching `cur`, the old attribute is destroyed.
+ *
+ * Before version 2.13, this function didn't unlink `cur` before
+ * moving it. Callers must unlink the node manually if it has
+ * siblings.
  *
  * General notes:
  *
- * Move operations like xmlAddChild can cause element or attribute
+ * Move operations like #xmlAddChild can cause element or attribute
  * nodes to reference namespaces that aren't declared in one of
  * their ancestors. This can lead to use-after-free errors if the
  * elements containing the declarations are freed later, especially
  * when moving nodes from one document to another. You should
- * consider calling xmlReconciliateNs after a move operation to
+ * consider calling #xmlReconciliateNs after a move operation to
  * normalize namespaces. Another option is to call
- * xmlDOMWrapAdoptNode with the target parent before moving a node.
+ * #xmlDOMWrapAdoptNode with the target parent before moving a node.
  *
  * For the most part, move operations don't check whether the
  * resulting tree structure is valid. Users must make sure that
@@ -3336,11 +3089,13 @@ xmlAddChildList(xmlNodePtr parent, xmlNo
  *
  * Moving DTDs between documents isn't supported.
  *
- * Returns @cur or a sibling if @cur was merged. Returns NULL
+ * @param parent  the parent node
+ * @param cur  the child node
+ * @returns `cur` or a sibling if `cur` was merged. Returns NULL
  * if arguments are invalid or a memory allocation failed.
  */
-xmlNodePtr
-xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
+xmlNode *
+xmlAddChild(xmlNode *parent, xmlNode *cur) {
     xmlNodePtr prev;
 
     if ((parent == NULL) || (parent->type == XML_NAMESPACE_DECL) ||
@@ -3376,14 +3131,12 @@ xmlAddChild(xmlNodePtr parent, xmlNodePt
 }
 
 /**
- * xmlGetLastChild:
- * @parent:  the parent node
- *
  * Find the last child of a node.
  *
- * Returns the last child or NULL if parent has no children.
+ * @param parent  the parent node
+ * @returns the last child or NULL if parent has no children.
  */
-xmlNodePtr
+xmlNode *
 xmlGetLastChild(const xmlNode *parent) {
     if ((parent == NULL) || (parent->type == XML_NAMESPACE_DECL)) {
 	return(NULL);
@@ -3396,18 +3149,16 @@ xmlGetLastChild(const xmlNode *parent) {
  */
 
 /**
- * xmlChildElementCount:
- * @parent: the parent node
- *
  * Count the number of child nodes which are elements.
  *
  * Note that entity references are not expanded.
  *
- * Returns the number of element children or 0 if arguments are
+ * @param parent  the parent node
+ * @returns the number of element children or 0 if arguments are
  * invalid.
  */
 unsigned long
-xmlChildElementCount(xmlNodePtr parent) {
+xmlChildElementCount(xmlNode *parent) {
     unsigned long ret = 0;
     xmlNodePtr cur = NULL;
 
@@ -3433,17 +3184,15 @@ xmlChildElementCount(xmlNodePtr parent)
 }
 
 /**
- * xmlFirstElementChild:
- * @parent: the parent node
- *
  * Find the first child node which is an element.
  *
  * Note that entity references are not expanded.
  *
- * Returns the first element or NULL if parent has no children.
+ * @param parent  the parent node
+ * @returns the first element or NULL if parent has no children.
  */
-xmlNodePtr
-xmlFirstElementChild(xmlNodePtr parent) {
+xmlNode *
+xmlFirstElementChild(xmlNode *parent) {
     xmlNodePtr cur = NULL;
 
     if (parent == NULL)
@@ -3468,17 +3217,15 @@ xmlFirstElementChild(xmlNodePtr parent)
 }
 
 /**
- * xmlLastElementChild:
- * @parent: the parent node
- *
  * Find the last child node which is an element.
  *
  * Note that entity references are not expanded.
  *
- * Returns the last element or NULL if parent has no children.
+ * @param parent  the parent node
+ * @returns the last element or NULL if parent has no children.
  */
-xmlNodePtr
-xmlLastElementChild(xmlNodePtr parent) {
+xmlNode *
+xmlLastElementChild(xmlNode *parent) {
     xmlNodePtr cur = NULL;
 
     if (parent == NULL)
@@ -3503,17 +3250,15 @@ xmlLastElementChild(xmlNodePtr parent) {
 }
 
 /**
- * xmlPreviousElementSibling:
- * @node: the current node
- *
  * Find the closest preceding sibling which is a element.
  *
  * Note that entity references are not expanded.
  *
- * Returns the sibling or NULL if no sibling was found.
+ * @param node  the current node
+ * @returns the sibling or NULL if no sibling was found.
  */
-xmlNodePtr
-xmlPreviousElementSibling(xmlNodePtr node) {
+xmlNode *
+xmlPreviousElementSibling(xmlNode *node) {
     if (node == NULL)
         return(NULL);
     switch (node->type) {
@@ -3539,17 +3284,15 @@ xmlPreviousElementSibling(xmlNodePtr nod
 }
 
 /**
- * xmlNextElementSibling:
- * @node: the current node
- *
  * Find the closest following sibling which is a element.
  *
  * Note that entity references are not expanded.
  *
- * Returns the sibling or NULL if no sibling was found.
+ * @param node  the current node
+ * @returns the sibling or NULL if no sibling was found.
  */
-xmlNodePtr
-xmlNextElementSibling(xmlNodePtr node) {
+xmlNode *
+xmlNextElementSibling(xmlNode *node) {
     if (node == NULL)
         return(NULL);
     switch (node->type) {
@@ -3576,13 +3319,12 @@ xmlNextElementSibling(xmlNodePtr node) {
 }
 
 /**
- * xmlFreeNodeList:
- * @cur:  the first node in the list
- *
  * Free a node list including all children.
+ *
+ * @param cur  the first node in the list
  */
 void
-xmlFreeNodeList(xmlNodePtr cur) {
+xmlFreeNodeList(xmlNode *cur) {
     xmlNodePtr next;
     xmlNodePtr parent;
     xmlDictPtr dict = NULL;
@@ -3664,16 +3406,15 @@ xmlFreeNodeList(xmlNodePtr cur) {
 }
 
 /**
- * xmlFreeNode:
- * @cur:  the node
- *
  * Free a node including all the children.
  *
- * This doesn't unlink the node from the tree. Call xmlUnlinkNode first
- * unless @cur is a root node.
+ * This doesn't unlink the node from the tree. Call #xmlUnlinkNode first
+ * unless `cur` is a root node.
+ *
+ * @param cur  the node
  */
 void
-xmlFreeNode(xmlNodePtr cur) {
+xmlFreeNode(xmlNode *cur) {
     xmlDictPtr dict = NULL;
 
     if (cur == NULL) return;
@@ -3732,13 +3473,12 @@ xmlFreeNode(xmlNodePtr cur) {
 }
 
 /**
- * xmlUnlinkNodeInternal:
- * @cur:  the node
- *
  * Unlink a node from its tree.
  *
  * This function only unlinks the node from the tree. It doesn't
  * clear references to DTD nodes.
+ *
+ * @param cur  the node
  */
 static void
 xmlUnlinkNodeInternal(xmlNodePtr cur) {
@@ -3766,16 +3506,15 @@ xmlUnlinkNodeInternal(xmlNodePtr cur) {
 }
 
 /**
- * xmlUnlinkNode:
- * @cur:  the node
- *
  * Unlink a node from its tree.
  *
  * The node is not freed. Unless it is reinserted, it must be managed
- * manually and freed eventually by calling xmlFreeNode.
+ * manually and freed eventually by calling #xmlFreeNode.
+ *
+ * @param cur  the node
  */
 void
-xmlUnlinkNode(xmlNodePtr cur) {
+xmlUnlinkNode(xmlNode *cur) {
     if (cur == NULL)
 	return;
 
@@ -3800,25 +3539,23 @@ xmlUnlinkNode(xmlNodePtr cur) {
 }
 
 /**
- * xmlReplaceNode:
- * @old:  the old node
- * @cur:  the node (optional)
- *
- * Unlink the old node. If @cur is provided, it is unlinked and
- * inserted in place of @old.
+ * Unlink the old node. If `cur` is provided, it is unlinked and
+ * inserted in place of `old`.
  *
- * It is an error if @old has no parent.
+ * It is an error if `old` has no parent.
  *
- * Unlike xmlAddChild, this function doesn't merge text nodes or
+ * Unlike #xmlAddChild, this function doesn't merge text nodes or
  * delete duplicate attributes.
  *
- * See the notes in xmlAddChild.
+ * See the notes in #xmlAddChild.
  *
- * Returns @old or NULL if arguments are invalid or a memory
+ * @param old  the old node
+ * @param cur  the node (optional)
+ * @returns `old` or NULL if arguments are invalid or a memory
  * allocation failed.
  */
-xmlNodePtr
-xmlReplaceNode(xmlNodePtr old, xmlNodePtr cur) {
+xmlNode *
+xmlReplaceNode(xmlNode *old, xmlNode *cur) {
     if (old == cur) return(NULL);
     if ((old == NULL) || (old->type == XML_NAMESPACE_DECL) ||
         (old->parent == NULL)) {
@@ -3868,16 +3605,14 @@ xmlReplaceNode(xmlNodePtr old, xmlNodePt
  ************************************************************************/
 
 /**
- * xmlCopyNamespace:
- * @cur:  the namespace
- *
  * Copy a namespace.
  *
- * Returns the copied namespace or NULL if a memory allocation
+ * @param cur  the namespace
+ * @returns the copied namespace or NULL if a memory allocation
  * failed.
  */
-xmlNsPtr
-xmlCopyNamespace(xmlNsPtr cur) {
+xmlNs *
+xmlCopyNamespace(xmlNs *cur) {
     xmlNsPtr ret;
 
     if (cur == NULL) return(NULL);
@@ -3892,16 +3627,14 @@ xmlCopyNamespace(xmlNsPtr cur) {
 }
 
 /**
- * xmlCopyNamespaceList:
- * @cur:  the first namespace
- *
  * Copy a namespace list.
  *
- * Returns the head of the copied list or NULL if a memory
+ * @param cur  the first namespace
+ * @returns the head of the copied list or NULL if a memory
  * allocation failed.
  */
-xmlNsPtr
-xmlCopyNamespaceList(xmlNsPtr cur) {
+xmlNs *
+xmlCopyNamespaceList(xmlNs *cur) {
     xmlNsPtr ret = NULL;
     xmlNsPtr p = NULL,q;
 
@@ -4043,38 +3776,34 @@ error:
 }
 
 /**
- * xmlCopyProp:
- * @target:  the element where the attribute will be grafted
- * @cur:  the attribute
- *
  * Create a copy of the attribute. This function sets the parent
- * pointer of the copy to @target but doesn't set the attribute on
+ * pointer of the copy to `target` but doesn't set the attribute on
  * the target element. Users should consider to set the attribute
- * by calling xmlAddChild afterwards or reset the parent pointer to
+ * by calling #xmlAddChild afterwards or reset the parent pointer to
  * NULL.
  *
- * Returns the copied attribute or NULL if a memory allocation
+ * @param target  the element where the attribute will be grafted
+ * @param cur  the attribute
+ * @returns the copied attribute or NULL if a memory allocation
  * failed.
  */
-xmlAttrPtr
-xmlCopyProp(xmlNodePtr target, xmlAttrPtr cur) {
+xmlAttr *
+xmlCopyProp(xmlNode *target, xmlAttr *cur) {
 	return xmlCopyPropInternal(NULL, target, cur);
 }
 
 /**
- * xmlCopyPropList:
- * @target:  the element where the attributes will be grafted
- * @cur:  the first attribute
- *
  * Create a copy of an attribute list. This function sets the
- * parent pointers of the copied attributes to @target but doesn't
+ * parent pointers of the copied attributes to `target` but doesn't
  * set the attributes on the target element.
  *
- * Returns the head of the copied list or NULL if a memory
+ * @param target  the element where the attributes will be grafted
+ * @param cur  the first attribute
+ * @returns the head of the copied list or NULL if a memory
  * allocation failed.
  */
-xmlAttrPtr
-xmlCopyPropList(xmlNodePtr target, xmlAttrPtr cur) {
+xmlAttr *
+xmlCopyPropList(xmlNode *target, xmlAttr *cur) {
     xmlAttrPtr ret = NULL;
     xmlAttrPtr p = NULL,q;
 
@@ -4118,18 +3847,16 @@ xmlCopyPropList(xmlNodePtr target, xmlAt
  */
 
 /**
- * xmlStaticCopyNode:
- * @node:  source node
- * @doc:  target document
- * @parent:  target parent
- * @extended:  flags
- *
  * Copy a node.
  *
- * Returns the copy or NULL if a memory allocation failed.
+ * @param node  source node
+ * @param doc  target document
+ * @param parent  target parent
+ * @param extended  flags
+ * @returns the copy or NULL if a memory allocation failed.
  */
-xmlNodePtr
-xmlStaticCopyNode(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
+xmlNode *
+xmlStaticCopyNode(xmlNode *node, xmlDoc *doc, xmlNode *parent,
                   int extended) {
     xmlNodePtr ret;
 
@@ -4313,19 +4040,17 @@ error:
 }
 
 /**
- * xmlStaticCopyNodeList:
- * @node:  node to copy
- * @doc:  target document
- * @parent:  target node (optional)
- *
- * Copy a node list. If @parent is provided, sets the parent pointer
+ * Copy a node list. If `parent` is provided, sets the parent pointer
  * of the copied nodes, but doesn't update the children and last
- * pointer of @parent.
+ * pointer of `parent`.
  *
- * Returns a the copy or NULL in case of error.
+ * @param node  node to copy
+ * @param doc  target document
+ * @param parent  target node (optional)
+ * @returns a the copy or NULL in case of error.
  */
-xmlNodePtr
-xmlStaticCopyNodeList(xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent) {
+xmlNode *
+xmlStaticCopyNodeList(xmlNode *node, xmlDoc *doc, xmlNode *parent) {
     xmlNodePtr ret = NULL;
     xmlNodePtr p = NULL,q;
     xmlDtdPtr newSubset = NULL;
@@ -4399,20 +4124,24 @@ error:
 }
 
 /**
- * xmlCopyNode:
- * @node:  the node
- * @extended:   if 1 do a recursive copy (properties, namespaces and children
- *			when applicable)
- *		if 2 copy properties and namespaces (when applicable)
- *
  * Copy a node.
  *
- * Use of this function is DISCOURAGED in favor of xmlDocCopyNode.
+ * If `extended` is 0, make a shallow copy.
+ *
+ * If `extended` is 1, make a deep copy (properties, namespaces
+ * and children when applicable).
  *
- * Returns the copied node or NULL if a memory allocation failed.
+ * If `extended` is 2, make a shallow copy including properties and
+ * namespaces of elements.
+ *
+ * Use of this function is DISCOURAGED in favor of #xmlDocCopyNode.
+ *
+ * @param node  the node
+ * @param extended  mode of operation
+ * @returns the copied node or NULL if a memory allocation failed.
  */
-xmlNodePtr
-xmlCopyNode(xmlNodePtr node, int extended) {
+xmlNode *
+xmlCopyNode(xmlNode *node, int extended) {
     xmlNodePtr ret;
 
     ret = xmlStaticCopyNode(node, NULL, NULL, extended);
@@ -4420,19 +4149,23 @@ xmlCopyNode(xmlNodePtr node, int extende
 }
 
 /**
- * xmlDocCopyNode:
- * @node:  the node
- * @doc:  the document
- * @extended:   if 1 do a recursive copy (properties, namespaces and children
- *			when applicable)
- *		if 2 copy properties and namespaces (when applicable)
- *
  * Copy a node into another document.
  *
- * Returns the copied node or NULL if a memory allocation failed.
+ * If `extended` is 0, make a shallow copy.
+ *
+ * If `extended` is 1, make a deep copy (properties, namespaces
+ * and children when applicable).
+ *
+ * If `extended` is 2, make a shallow copy including properties and
+ * namespaces of elements.
+ *
+ * @param node  the node
+ * @param doc  the document
+ * @param extended  mode of operation
+ * @returns the copied node or NULL if a memory allocation failed.
  */
-xmlNodePtr
-xmlDocCopyNode(xmlNodePtr node, xmlDocPtr doc, int extended) {
+xmlNode *
+xmlDocCopyNode(xmlNode *node, xmlDoc *doc, int extended) {
     xmlNodePtr ret;
 
     ret = xmlStaticCopyNode(node, doc, NULL, extended);
@@ -4440,46 +4173,40 @@ xmlDocCopyNode(xmlNodePtr node, xmlDocPt
 }
 
 /**
- * xmlDocCopyNodeList:
- * @doc: the target document
- * @node:  the first node in the list.
- *
  * Copy a node list and all children into a new document.
  *
- * Returns the head of the copied list or NULL if a memory
+ * @param doc  the target document
+ * @param node  the first node in the list.
+ * @returns the head of the copied list or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr xmlDocCopyNodeList(xmlDocPtr doc, xmlNodePtr node) {
+xmlNode *xmlDocCopyNodeList(xmlDoc *doc, xmlNode *node) {
     xmlNodePtr ret = xmlStaticCopyNodeList(node, doc, NULL);
     return(ret);
 }
 
 /**
- * xmlCopyNodeList:
- * @node:  the first node in the list.
- *
  * Copy a node list and all children.
  *
- * Use of this function is DISCOURAGED in favor of xmlDocCopyNodeList.
+ * Use of this function is DISCOURAGED in favor of #xmlDocCopyNodeList.
  *
- * Returns the head of the copied list or NULL if a memory
+ * @param node  the first node in the list.
+ * @returns the head of the copied list or NULL if a memory
  * allocation failed.
  */
-xmlNodePtr xmlCopyNodeList(xmlNodePtr node) {
+xmlNode *xmlCopyNodeList(xmlNode *node) {
     xmlNodePtr ret = xmlStaticCopyNodeList(node, NULL, NULL);
     return(ret);
 }
 
 /**
- * xmlCopyDtd:
- * @dtd:  the DTD
- *
  * Copy a DTD.
  *
- * Returns the copied DTD or NULL if a memory allocation failed.
+ * @param dtd  the DTD
+ * @returns the copied DTD or NULL if a memory allocation failed.
  */
-xmlDtdPtr
-xmlCopyDtd(xmlDtdPtr dtd) {
+xmlDtd *
+xmlCopyDtd(xmlDtd *dtd) {
     xmlDtdPtr ret;
     xmlNodePtr cur, p = NULL, q;
 
@@ -4577,18 +4304,16 @@ error:
 }
 
 /**
- * xmlCopyDoc:
- * @doc:  the document
- * @recursive:  if not zero do a recursive copy.
- *
  * Copy a document. If recursive, the content tree will
  * be copied too as well as DTD, namespaces and entities.
  *
- * Returns the copied document or NULL if a memory allocation
+ * @param doc  the document
+ * @param recursive  if not zero do a recursive copy.
+ * @returns the copied document or NULL if a memory allocation
  * failed.
  */
-xmlDocPtr
-xmlCopyDoc(xmlDocPtr doc, int recursive) {
+xmlDoc *
+xmlCopyDoc(xmlDoc *doc, int recursive) {
     xmlDocPtr ret;
 
     if (doc == NULL) return(NULL);
@@ -4658,14 +4383,13 @@ error:
  ************************************************************************/
 
 /**
- * xmlGetLineNoInternal:
- * @node: valid node
- * @depth: used to limit any risk of recursion
- *
- * Get line number of @node.
- * Try to override the limitation of lines being store in 16 bits ints
- *
- * Returns the line number if successful, -1 otherwise
+ * Get line number of `node`. Try to work around the limitation of
+ * line numbers being stored as 16 bits ints. Requires xmlParserOption
+ * XML_PARSE_BIG_LINES to be set when parsing.
+ *
+ * @param node  valid node
+ * @param depth  used to limit any risk of recursion
+ * @returns the line number if successful, -1 otherwise
  */
 static long
 xmlGetLineNoInternal(const xmlNode *node, int depth)
@@ -4708,14 +4432,12 @@ xmlGetLineNoInternal(const xmlNode *node
 }
 
 /**
- * xmlGetLineNo:
- * @node: valid node
- *
- * Get line number of @node.
- * Try to override the limitation of lines being store in 16 bits ints
- * if XML_PARSE_BIG_LINES parser option was used
+ * Get line number of `node`. Try to work around the limitation of
+ * line numbers being stored as 16 bits ints. Requires xmlParserOption
+ * XML_PARSE_BIG_LINES to be set when parsing.
  *
- * Returns the line number if successful, -1 otherwise
+ * @param node  valid node
+ * @returns the line number if successful, -1 otherwise
  */
 long
 xmlGetLineNo(const xmlNode *node)
@@ -4724,71 +4446,77 @@ xmlGetLineNo(const xmlNode *node)
 }
 
 /**
- * xmlGetNodePath:
- * @node: a node
- *
  * Build a structure based Path for the given node
  *
- * Returns the new path or NULL in case of error. The caller must free
+ * @param node  a node
+ * @returns the new path or NULL in case of error. The caller must free
  *     the returned string
  */
 xmlChar *
 xmlGetNodePath(const xmlNode *node)
 {
-    const xmlNode *cur, *tmp, *next;
-    xmlChar *buffer = NULL;
-    size_t buf_len, len;
-    xmlChar *buf;
-    const char *sep;
-    const char *name;
-    char nametemp[100];
-    int occur = 0, generic;
+    const xmlNode *cur, *tmp;
+    const xmlNode **nodes = NULL;
+    xmlChar *ret = NULL;
+    xmlBuf *buf;
+    size_t numNodes, i;
 
     if ((node == NULL) || (node->type == XML_NAMESPACE_DECL))
-        return (NULL);
+        return(NULL);
 
-    buf_len = 500;
-    buffer = xmlMalloc(buf_len);
-    if (buffer == NULL)
-        return (NULL);
-    buf = xmlMalloc(buf_len);
-    if (buf == NULL) {
-        xmlFree(buffer);
-        return (NULL);
-    }
+    buf = xmlBufCreate(50);
+    if (buf == NULL)
+        return(NULL);
+
+    /*
+     * Get list of ancestors
+     */
+    numNodes = 0;
+    for (cur = node; cur != NULL; cur = cur->parent)
+        numNodes += 1;
+    if (numNodes > SIZE_MAX / sizeof(nodes[0]))
+        goto error;
+    nodes = xmlMalloc(numNodes * sizeof(nodes[0]));
+    if (nodes == NULL)
+        goto error;
+    i = 0;
+    for (cur = node; cur != NULL && i < numNodes; cur = cur->parent)
+        nodes[i++] = cur;
+
+    /*
+     * Iterate in reverse to start at root
+     */
+    while (i > 0) {
+        int occur = 0;
+
+        i -= 1;
+        cur = nodes[i];
 
-    buffer[0] = 0;
-    cur = node;
-    do {
-        name = "";
-        sep = "?";
-        occur = 0;
         if ((cur->type == XML_DOCUMENT_NODE) ||
             (cur->type == XML_HTML_DOCUMENT_NODE)) {
-            if (buffer[0] == '/')
-                break;
-            sep = "/";
-            next = NULL;
+            if (i == 0)
+                xmlBufCat(buf, BAD_CAST "/");
         } else if (cur->type == XML_ELEMENT_NODE) {
-	    generic = 0;
-            sep = "/";
-            name = (const char *) cur->name;
+            int generic = 0;
+
+            xmlBufCat(buf, BAD_CAST "/");
+
             if (cur->ns) {
 		if (cur->ns->prefix != NULL) {
-                    snprintf(nametemp, sizeof(nametemp) - 1, "%s:%s",
-			(char *)cur->ns->prefix, (char *)cur->name);
-		    nametemp[sizeof(nametemp) - 1] = 0;
-		    name = nametemp;
+                    xmlBufCat(buf, cur->ns->prefix);
+                    xmlBufCat(buf, BAD_CAST ":");
+                    xmlBufCat(buf, cur->name);
 		} else {
 		    /*
 		    * We cannot express named elements in the default
 		    * namespace, so use "*".
 		    */
 		    generic = 1;
-		    name = "*";
+                    xmlBufCat(buf, BAD_CAST "*");
 		}
+            } else {
+                xmlBufCat(buf, cur->name);
             }
-            next = cur->parent;
 
             /*
              * Thumbler index computation
@@ -4822,9 +4550,7 @@ xmlGetNodePath(const xmlNode *node)
             } else
                 occur++;
         } else if (cur->type == XML_COMMENT_NODE) {
-            sep = "/";
-	    name = "comment()";
-            next = cur->parent;
+            xmlBufCat(buf, BAD_CAST "/comment()");
 
             /*
              * Thumbler index computation
@@ -4848,9 +4574,7 @@ xmlGetNodePath(const xmlNode *node)
                 occur++;
         } else if ((cur->type == XML_TEXT_NODE) ||
                    (cur->type == XML_CDATA_SECTION_NODE)) {
-            sep = "/";
-	    name = "text()";
-            next = cur->parent;
+            xmlBufCat(buf, BAD_CAST "/text()");
 
             /*
              * Thumbler index computation
@@ -4880,13 +4604,9 @@ xmlGetNodePath(const xmlNode *node)
             } else
                 occur++;
         } else if (cur->type == XML_PI_NODE) {
-            sep = "/";
-	    snprintf(nametemp, sizeof(nametemp) - 1,
-		     "processing-instruction('%s')", (char *)cur->name);
-            nametemp[sizeof(nametemp) - 1] = 0;
-            name = nametemp;
-
-	    next = cur->parent;
+            xmlBufCat(buf, BAD_CAST "/processing-instruction('");
+            xmlBufCat(buf, cur->name);
+            xmlBufCat(buf, BAD_CAST "')");
 
             /*
              * Thumbler index computation
@@ -4912,82 +4632,43 @@ xmlGetNodePath(const xmlNode *node)
                 occur++;
 
         } else if (cur->type == XML_ATTRIBUTE_NODE) {
-            sep = "/@";
-            name = (const char *) (((xmlAttrPtr) cur)->name);
-            if (cur->ns) {
-	        if (cur->ns->prefix != NULL)
-                    snprintf(nametemp, sizeof(nametemp) - 1, "%s:%s",
-			(char *)cur->ns->prefix, (char *)cur->name);
-		else
-		    snprintf(nametemp, sizeof(nametemp) - 1, "%s",
-			(char *)cur->name);
-                nametemp[sizeof(nametemp) - 1] = 0;
-                name = nametemp;
+            xmlBufCat(buf, BAD_CAST "/@");
+            if (cur->ns && cur->ns->prefix != NULL) {
+                xmlBufCat(buf, cur->ns->prefix);
+                xmlBufCat(buf, BAD_CAST ":");
             }
-            next = ((xmlAttrPtr) cur)->parent;
+            xmlBufCat(buf, cur->name);
         } else {
-            xmlFree(buf);
-            xmlFree(buffer);
-            return (NULL);
+            goto error;
         }
 
-        /*
-         * Make sure there is enough room
-         */
-        len = strlen((const char *) buffer);
-        if (buf_len - len < sizeof(nametemp) + 20) {
-            xmlChar *temp;
-            int newSize;
-
-            if ((buf_len > SIZE_MAX / 2) ||
-                (2 * buf_len > SIZE_MAX - len - sizeof(nametemp) - 20)) {
-                xmlFree(buf);
-                xmlFree(buffer);
-                return (NULL);
-            }
-            newSize = 2 * buf_len + len + sizeof(nametemp) + 20;
+        if (occur > 0) {
+            char tmpbuf[30];
 
-            temp = xmlRealloc(buffer, newSize);
-            if (temp == NULL) {
-                xmlFree(buf);
-                xmlFree(buffer);
-                return (NULL);
-            }
-            buffer = temp;
+            snprintf(tmpbuf, sizeof(tmpbuf), "[%d]", occur);
+            xmlBufCat(buf, BAD_CAST tmpbuf);
+        }
+    }
 
-            temp = xmlRealloc(buf, newSize);
-            if (temp == NULL) {
-                xmlFree(buf);
-                xmlFree(buffer);
-                return (NULL);
-            }
-            buf = temp;
+    ret = xmlBufDetach(buf);
 
-            buf_len = newSize;
-        }
-        if (occur == 0)
-            snprintf((char *) buf, buf_len, "%s%s%s",
-                     sep, name, (char *) buffer);
-        else
-            snprintf((char *) buf, buf_len, "%s%s[%d]%s",
-                     sep, name, occur, (char *) buffer);
-        snprintf((char *) buffer, buf_len, "%s", (char *)buf);
-        cur = next;
-    } while (cur != NULL);
-    xmlFree(buf);
-    return (buffer);
+error:
+    xmlBufFree(buf);
+    xmlFree(nodes);
+    return(ret);
 }
 
 /**
- * xmlDocGetRootElement:
- * @doc:  the document
+ * Get the root element of the document.
  *
- * Get the root element of the document (doc->children is a list
- * containing possibly comments, PIs, etc ...).
+ * Searches the document's children for the root element. The first
+ * child is not necessarily the root element, but could also be a
+ * DTD, comment or PI.
  *
- * Returns the root element or NULL if no element was found.
+ * @param doc  the document
+ * @returns the root element or NULL if no element was found.
  */
-xmlNodePtr
+xmlNode *
 xmlDocGetRootElement(const xmlDoc *doc) {
     xmlNodePtr ret;
 
@@ -5002,21 +4683,21 @@ xmlDocGetRootElement(const xmlDoc *doc)
 }
 
 /**
- * xmlDocSetRootElement:
- * @doc:  the document
- * @root:  the new document root element, if root is NULL no action is taken,
- *         to remove a node from a document use xmlUnlinkNode(root) instead.
+ * If `root` is NULL no action is taken. To remove a node from a
+ * document, use #xmlUnlinkNode instead.
  *
- * Set the root element of the document (doc->children is a list
+ * Set the root element of the document (`doc->children` is a list
  * containing possibly comments, PIs, etc ...).
  *
- * @root must be an element node. It is unlinked before insertion.
+ * `root` must be an element node. It is unlinked before insertion.
  *
- * Returns the unlinked old root element or NULL if the document
+ * @param doc  the document
+ * @param root  the new document root element
+ * @returns the unlinked old root element or NULL if the document
  * didn't have a root element or a memory allocation failed.
  */
-xmlNodePtr
-xmlDocSetRootElement(xmlDocPtr doc, xmlNodePtr root) {
+xmlNode *
+xmlDocSetRootElement(xmlDoc *doc, xmlNode *root) {
     xmlNodePtr old = NULL;
 
     if (doc == NULL) return(NULL);
@@ -5048,18 +4729,15 @@ xmlDocSetRootElement(xmlDocPtr doc, xmlN
 }
 
 /**
- * xmlNodeSetLang:
- * @cur:  the node being changed
- * @lang:  the language description
- *
- * Set the language of a node, i.e. the values of the xml:lang
- * attribute.
+ * Set the `xml:lang` attribute of a node.
  *
- * Return 0 on success, 1 if arguments are invalid, -1 if a
+ * @param cur  the node being changed
+ * @param lang  the language description
+ * @returns 0 on success, 1 if arguments are invalid, -1 if a
  * memory allocation failed.
  */
 int
-xmlNodeSetLang(xmlNodePtr cur, const xmlChar *lang) {
+xmlNodeSetLang(xmlNode *cur, const xmlChar *lang) {
     xmlNsPtr ns;
     xmlAttrPtr attr;
     int res;
@@ -5078,14 +4756,14 @@ xmlNodeSetLang(xmlNodePtr cur, const xml
 }
 
 /**
- * xmlNodeGetLang:
- * @cur:  the node being checked
+ * Find the `xml:lang` of a node.
  *
- * Searches the language of a node, i.e. the values of the xml:lang
- * attribute or the one carried by the nearest ancestor.
+ * Look up the value of the `xml:lang` attribute or the one carried
+ * by the nearest ancestor.
  *
- * Returns a pointer to the lang value, or NULL if not found
- *     It's up to the caller to free the memory with xmlFree().
+ * @param cur  the node being checked
+ * @returns a pointer to the lang value, or NULL if not found
+ *     It's up to the caller to free the memory with #xmlFree.
  */
 xmlChar *
 xmlNodeGetLang(const xmlNode *cur) {
@@ -5111,18 +4789,15 @@ xmlNodeGetLang(const xmlNode *cur) {
 
 
 /**
- * xmlNodeSetSpacePreserve:
- * @cur:  the node being changed
- * @val:  the xml:space value ("0": default, 1: "preserve")
+ * Set the `xml:space` attribute of a node.
  *
- * Set (or reset) the space preserving behaviour of a node, i.e. the
- * value of the xml:space attribute.
- *
- * Return 0 on success, 1 if arguments are invalid, -1 if a
+ * @param cur  the node being changed
+ * @param val  the xml:space value ("0": default, 1: "preserve")
+ * @returns 0 on success, 1 if arguments are invalid, -1 if a
  * memory allocation failed.
  */
 int
-xmlNodeSetSpacePreserve(xmlNodePtr cur, int val) {
+xmlNodeSetSpacePreserve(xmlNode *cur, int val) {
     xmlNsPtr ns;
     xmlAttrPtr attr;
     const char *string;
@@ -5148,14 +4823,13 @@ xmlNodeSetSpacePreserve(xmlNodePtr cur,
 }
 
 /**
- * xmlNodeGetSpacePreserve:
- * @cur:  the node being checked
+ * Find the `xml:space` of a node.
  *
- * 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.
+ * Look up the value of the `xml:space` attribute or the one carried
+ * by the nearest ancestor.
  *
- * Returns -1 if xml:space is not inherited, 0 if "default", 1 if "preserve"
+ * @param cur  the node being checked
+ * @returns -1 if xml:space is not inherited, 0 if "default", 1 if "preserve"
  */
 int
 xmlNodeGetSpacePreserve(const xmlNode *cur) {
@@ -5189,14 +4863,13 @@ xmlNodeGetSpacePreserve(const xmlNode *c
 }
 
 /**
- * xmlNodeSetName:
- * @cur:  the node being changed
- * @name:  the new tag name
- *
  * Set (or reset) the name of a node.
+ *
+ * @param cur  the node being changed
+ * @param name  the new tag name
  */
 void
-xmlNodeSetName(xmlNodePtr cur, const xmlChar *name) {
+xmlNodeSetName(xmlNode *cur, const xmlChar *name) {
     xmlDocPtr doc;
     xmlDictPtr dict;
     const xmlChar *copy;
@@ -5235,17 +4908,15 @@ xmlNodeSetName(xmlNodePtr cur, const xml
 }
 
 /**
- * xmlNodeSetBase:
- * @cur:  the node being changed
- * @uri:  the new base URI
- *
  * Set (or reset) the base URI of a node, i.e. the value of the
- * xml:base attribute.
+ * `xml:base` attribute.
  *
- * Returns 0 on success, -1 on error.
+ * @param cur  the node being changed
+ * @param uri  the new base URI
+ * @returns 0 on success, -1 on error.
  */
 int
-xmlNodeSetBase(xmlNodePtr cur, const xmlChar* uri) {
+xmlNodeSetBase(xmlNode *cur, const xmlChar* uri) {
     xmlNsPtr ns;
     xmlChar* fixed;
 
@@ -5260,7 +4931,7 @@ xmlNodeSetBase(xmlNodePtr cur, const xml
 	    xmlDocPtr doc = (xmlDocPtr) cur;
 
 	    if (doc->URL != NULL)
-		xmlFree((xmlChar *) doc->URL);
+		xmlFree(doc->URL);
 	    if (uri == NULL) {
 		doc->URL = NULL;
             } else {
@@ -5290,23 +4961,19 @@ xmlNodeSetBase(xmlNodePtr cur, const xml
 }
 
 /**
- * xmlNodeGetBaseSafe:
- * @doc:  the document the node pertains to
- * @cur:  the node being checked
- * @baseOut:  pointer to base
- *
- * Searches for the BASE URL. The code should work on both XML
+ * Searches for the base URI. 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
- * doc->URL in this case
- *
- * Available since 2.13.0.
- *
- * Return 0 in case of success, 1 if a URI or argument is invalid, -1 if a
+ * 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 `doc->URL` in this case.
+ *
+ * @since 2.13.0
+ *
+ * @param doc  the document the node pertains to
+ * @param cur  the node being checked
+ * @param baseOut  pointer to base
+ * @returns 0 in case of success, 1 if a URI or argument is invalid, -1 if a
  * memory allocation failed.
  */
 int
@@ -5410,15 +5077,13 @@ found:
 }
 
 /**
- * xmlNodeGetBase:
- * @doc:  the document the node pertains to
- * @cur:  the node being checked
- *
- * See xmlNodeGetBaseSafe. This function doesn't allow to distinguish
+ * See #xmlNodeGetBaseSafe. This function doesn't allow to distinguish
  * memory allocation failures from a non-existing base.
  *
- * Returns a pointer to the base URL, or NULL if not found
- *     It's up to the caller to free the memory with xmlFree().
+ * @param doc  the document the node pertains to
+ * @param cur  the node being checked
+ * @returns a pointer to the base URL, or NULL if not found
+ *     It's up to the caller to free the memory with #xmlFree.
  */
 xmlChar *
 xmlNodeGetBase(const xmlDoc *doc, const xmlNode *cur) {
@@ -5429,20 +5094,19 @@ xmlNodeGetBase(const xmlDoc *doc, const
 }
 
 /**
- * xmlNodeBufGetContent:
- * @buffer:  a buffer
- * @cur:  the node being read
- *
- * Read the value of a node @cur, this can be either the text carried
- * directly by this node if it's a TEXT node or the aggregate string
- * of the values carried by this node child's (TEXT and ENTITY_REF).
+ * Append the string value of a node to `buffer`. For text nodes,
+ * the string value is the text content. Otherwise, the string value
+ * is the concatenation of the string values of the node's
+ * descendants.
+ *
  * Entity references are substituted.
- * Fills up the buffer @buffer with this value
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param buffer  a buffer
+ * @param cur  the node being read
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlNodeBufGetContent(xmlBufferPtr buffer, const xmlNode *cur)
+xmlNodeBufGetContent(xmlBuffer *buffer, const xmlNode *cur)
 {
     xmlBufPtr buf;
     int ret1, ret2;
@@ -5520,20 +5184,19 @@ xmlBufGetChildContent(xmlBufPtr buf, con
 }
 
 /**
- * xmlBufGetNodeContent:
- * @buf:  a buffer xmlBufPtr
- * @cur:  the node being read
- *
- * Read the value of a node @cur, this can be either the text carried
- * directly by this node if it's a TEXT node or the aggregate string
- * of the values carried by this node child's (TEXT and ENTITY_REF).
+ * Append the string value of a node to `buf`. For text nodes,
+ * the string value is the text content. Otherwise, the string value
+ * is the concatenation of the string values of the node's
+ * descendants.
+ *
  * Entity references are substituted.
- * Fills up the buffer @buf with this value
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param buf  a buffer xmlBuf
+ * @param cur  the node being read
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlBufGetNodeContent(xmlBufPtr buf, const xmlNode *cur)
+xmlBufGetNodeContent(xmlBuf *buf, const xmlNode *cur)
 {
     if ((cur == NULL) || (buf == NULL))
         return(-1);
@@ -5571,15 +5234,17 @@ xmlBufGetNodeContent(xmlBufPtr buf, cons
 }
 
 /**
- * xmlNodeGetContent:
- * @cur:  the node being read
+ * Returns the string value of a node. For text nodes, the string
+ * value is the text content. Otherwise, the string value is the
+ * concatenation of the string values of the node's descendants.
  *
- * Read the value of a node, this can be either the text carried
- * directly by this node if it's a TEXT node or the aggregate string
- * of the values carried by this node child's (TEXT and ENTITY_REF).
  * Entity references are substituted.
- * Returns a new #xmlChar * or NULL if no content is available.
- *     It's up to the caller to free the memory with xmlFree().
+ *
+ * It's up to the caller to free the result with #xmlFree.
+ *
+ * @param cur  the node being read
+ * @returns a new string or NULL if arguments are invalid or a
+ * memory allocation failed.
  */
 xmlChar *
 xmlNodeGetContent(const xmlNode *cur)
@@ -5651,10 +5316,18 @@ xmlNodeSetContentInternal(xmlNodePtr cur
     switch (cur->type) {
         case XML_DOCUMENT_FRAG_NODE:
         case XML_ELEMENT_NODE:
-        case XML_ATTRIBUTE_NODE:
-            if (xmlNodeParseContent(cur, content, len) < 0)
+        case XML_ATTRIBUTE_NODE: {
+            size_t maxSize = len < 0 ? SIZE_MAX : (size_t) len;
+
+            /*
+             * We shouldn't parse the content as attribute value here,
+             * but the API can't be changed.
+             */
+            if (xmlNodeParseAttValue(cur->doc, (xmlAttr *) cur,
+                                     content, maxSize, NULL) < 0)
                 return(-1);
 	    break;
+        }
 
         case XML_TEXT_NODE:
         case XML_CDATA_SECTION_NODE:
@@ -5683,63 +5356,60 @@ xmlNodeSetContentInternal(xmlNodePtr cur
 }
 
 /**
- * xmlNodeSetContent:
- * @cur:  the node being modified
- * @content:  the new value of the content
- *
  * Replace the text content of a node.
  *
  * Sets the raw text content of text, CDATA, comment or PI nodes.
  *
  * For element and attribute nodes, removes all children and
- * replaces them by parsing @content which is expected to be a
+ * replaces them by parsing `content` which is expected to be a
  * valid XML attribute value possibly containing character and
  * entity references. Syntax errors and references to undeclared
  * entities are ignored silently. Unfortunately, there isn't an
  * API to pass raw content directly. An inefficient work-around
- * is to escape the content with xmlEncodeSpecialChars before
+ * is to escape the content with #xmlEncodeSpecialChars before
  * passing it. A better trick is clearing the old content
- * with xmlNodeSetContent(node, NULL) first and then calling
- * xmlNodeAddContent(node, content). Unlike this function,
- * xmlNodeAddContent accepts raw text.
- *
- * Returns 0 on success, 1 on error, -1 if a memory allocation failed.
+ * with `xmlNodeSetContent(node, NULL)` first and then calling
+ * `xmlNodeAddContent(node, content)`. Unlike this function,
+ * #xmlNodeAddContent accepts raw text.
+ *
+ * @param cur  the node being modified
+ * @param content  the new value of the content
+ * @returns 0 on success, 1 on error, -1 if a memory allocation failed.
  */
 int
-xmlNodeSetContent(xmlNodePtr cur, const xmlChar *content) {
+xmlNodeSetContent(xmlNode *cur, const xmlChar *content) {
     return(xmlNodeSetContentInternal(cur, content, -1));
 }
 
 /**
- * xmlNodeSetContentLen:
- * @cur:  the node being modified
- * @content:  the new value of the content
- * @len:  the size of @content
- *
- * See xmlNodeSetContent.
+ * See #xmlNodeSetContent.
  *
- * Returns 0 on success, 1 on error, -1 if a memory allocation failed.
+ * @param cur  the node being modified
+ * @param content  the new value of the content
+ * @param len  the size of `content`
+ * @returns 0 on success, 1 on error, -1 if a memory allocation failed.
  */
 int
-xmlNodeSetContentLen(xmlNodePtr cur, const xmlChar *content, int len) {
+xmlNodeSetContentLen(xmlNode *cur, const xmlChar *content, int len) {
     return(xmlNodeSetContentInternal(cur, content, len));
 }
 
 /**
- * xmlNodeAddContentLen:
- * @cur:  the node being modified
- * @content:  extra content
- * @len:  the size of @content
- *
  * Append the extra substring to the node content.
- * NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be
- *       raw text, so unescaped XML special chars are allowed, entity
- *       references are not supported.
  *
- * Returns 0 on success, 1 on error, -1 if a memory allocation failed.
+ * NOTE: In contrast to #xmlNodeSetContentLen, `content` is supposed
+ * to be raw text, so unescaped XML special chars are allowed, entity
+ * references are not supported.
+ *
+ * This doesn't work on attributes before version 2.15.
+ *
+ * @param cur  the node being modified
+ * @param content  extra content
+ * @param len  the size of `content`
+ * @returns 0 on success, 1 on error, -1 if a memory allocation failed.
  */
 int
-xmlNodeAddContentLen(xmlNodePtr cur, const xmlChar *content, int len) {
+xmlNodeAddContentLen(xmlNode *cur, const xmlChar *content, int len) {
     if (cur == NULL)
 	return(1);
     if ((content == NULL) || (len <= 0))
@@ -5747,7 +5417,8 @@ xmlNodeAddContentLen(xmlNodePtr cur, con
 
     switch (cur->type) {
         case XML_DOCUMENT_FRAG_NODE:
-        case XML_ELEMENT_NODE: {
+        case XML_ELEMENT_NODE:
+        case XML_ATTRIBUTE_NODE: {
 	    xmlNodePtr newNode, tmp;
 
 	    newNode = xmlNewDocTextLen(cur->doc, content, len);
@@ -5760,7 +5431,6 @@ xmlNodeAddContentLen(xmlNodePtr cur, con
             }
 	    break;
 	}
-        case XML_ATTRIBUTE_NODE:
 	    break;
         case XML_TEXT_NODE:
         case XML_CDATA_SECTION_NODE:
@@ -5775,35 +5445,34 @@ xmlNodeAddContentLen(xmlNodePtr cur, con
 }
 
 /**
- * xmlNodeAddContent:
- * @cur:  the node being modified
- * @content:  extra content
- *
  * Append the extra substring to the node content.
- * NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be
- *       raw text, so unescaped XML special chars are allowed, entity
- *       references are not supported.
  *
- * Returns 0 on success, 1 on error, -1 if a memory allocation failed.
+ * NOTE: In contrast to #xmlNodeSetContent, `content` is supposed
+ * to be raw text, so unescaped XML special chars are allowed, entity
+ * references are not supported.
+ *
+ * This doesn't work on attributes before version 2.15.
+ *
+ * @param cur  the node being modified
+ * @param content  extra content
+ * @returns 0 on success, 1 on error, -1 if a memory allocation failed.
  */
 int
-xmlNodeAddContent(xmlNodePtr cur, const xmlChar *content) {
+xmlNodeAddContent(xmlNode *cur, const xmlChar *content) {
     return(xmlNodeAddContentLen(cur, content, xmlStrlen(content)));
 }
 
 /**
- * xmlTextMerge:
- * @first:  the first text node
- * @second:  the second text node being merged
- *
- * Merge the second text node into the first. If @first is NULL,
- * @second is returned. Otherwise, the second node is unlinked and
+ * Merge the second text node into the first. If `first` is NULL,
+ * `second` is returned. Otherwise, the second node is unlinked and
  * freed.
  *
- * Returns the first text node augmented or NULL in case of error.
+ * @param first  the first text node
+ * @param second  the second text node being merged
+ * @returns the first text node augmented or NULL in case of error.
  */
-xmlNodePtr
-xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
+xmlNode *
+xmlTextMerge(xmlNode *first, xmlNode *second) {
     if (first == NULL)
         return(second);
     if (second == NULL)
@@ -5824,23 +5493,21 @@ xmlTextMerge(xmlNodePtr first, xmlNodePt
 }
 
 /**
- * xmlGetNsListSafe:
- * @doc:  the document
- * @node:  the current node
- * @out:  the returned namespace array
- *
- * Find all in-scope namespaces of a node. @out returns a NULL
+ * Find all in-scope namespaces of a node. `out` returns a NULL
  * terminated array of namespace pointers that must be freed by
  * the caller.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 on success, 1 if no namespaces were found, -1 if a
+ * @param doc  the document
+ * @param node  the current node
+ * @param out  the returned namespace array
+ * @returns 0 on success, 1 if no namespaces were found, -1 if a
  * memory allocation failed.
  */
 int
 xmlGetNsListSafe(const xmlDoc *doc ATTRIBUTE_UNUSED, const xmlNode *node,
-                 xmlNsPtr **out)
+                 xmlNs ***out)
 {
     xmlNsPtr cur;
     xmlNsPtr *namespaces = NULL;
@@ -5902,19 +5569,17 @@ xmlGetNsListSafe(const xmlDoc *doc ATTRI
 }
 
 /**
- * xmlGetNsList:
- * @doc:  the document
- * @node:  the current node
- *
  * Find all in-scope namespaces of a node.
  *
- * Use xmlGetNsListSafe for better error reporting.
+ * Use #xmlGetNsListSafe for better error reporting.
  *
- * Returns a NULL terminated array of namespace pointers that must
+ * @param doc  the document
+ * @param node  the current node
+ * @returns a NULL terminated array of namespace pointers that must
  * be freed by the caller or NULL if no namespaces were found or
  * a memory allocation failed.
  */
-xmlNsPtr *
+xmlNs **
 xmlGetNsList(const xmlDoc *doc, const xmlNode *node)
 {
     xmlNsPtr *ret;
@@ -5970,19 +5635,17 @@ xmlTreeEnsureXMLDecl(xmlDocPtr doc)
 }
 
 /**
- * xmlSearchNsSafe:
- * @node:  a node
- * @prefix:  a namespace prefix
- * @out:  pointer to resulting namespace
+ * Search for a namespace with `prefix` in scope of `node`.
  *
- * Search a namespace with @prefix in scope of @node.
- *
- * Returns 0 on success, -1 if a memory allocation failed, 1 on
+ * @param node  a node
+ * @param prefix  a namespace prefix
+ * @param out  pointer to resulting namespace
+ * @returns 0 on success, -1 if a memory allocation failed, 1 on
  * other errors.
  */
 int
-xmlSearchNsSafe(xmlNodePtr node, const xmlChar *prefix,
-                xmlNsPtr *out) {
+xmlSearchNsSafe(xmlNode *node, const xmlChar *prefix,
+                xmlNs **out) {
     xmlNsPtr cur;
     xmlDocPtr doc;
     xmlNodePtr orig = node;
@@ -6053,25 +5716,24 @@ xmlSearchNsSafe(xmlNodePtr node, const x
 }
 
 /**
- * xmlSearchNs:
- * @doc:  the document
- * @node:  the current node
- * @nameSpace:  the namespace prefix
+ * Search for a namespace with `prefix` in scope of `node`.
  *
- * Search a Ns registered under a given name space for a document.
- * recurse on the parents until it finds the defined namespace
+ * 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't allow to cross entities boundaries. If you don't declare
- * the namespace within those you will be in troubles !!! A warning
- * is generated to cover this case.
  *
- * Returns the namespace pointer or NULL if no namespace was found or
- * a memory allocation failed. Allocations can only fail if the "xml"
+ * If `nameSpace` is NULL, the default namespace is looked up.
+ *
+ * Namespace search doesn't cross entity boundaries.
+ *
+ * @param doc  the document
+ * @param node  the current node
+ * @param nameSpace  the namespace prefix
+ * @returns the namespace pointer or NULL if no namespace was found or
+ * a memory allocation failed. Allocations can only fail if the `xml`
  * namespace is queried.
  */
-xmlNsPtr
-xmlSearchNs(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node,
+xmlNs *
+xmlSearchNs(xmlDoc *doc ATTRIBUTE_UNUSED, xmlNode *node,
             const xmlChar *nameSpace) {
     xmlNsPtr cur;
 
@@ -6080,16 +5742,14 @@ xmlSearchNs(xmlDocPtr doc ATTRIBUTE_UNUS
 }
 
 /**
- * xmlNsInScope:
- * @doc:  the document
- * @node:  the current node
- * @ancestor:  the ancestor carrying the namespace
- * @prefix:  the namespace prefix
- *
- * Verify that the given namespace held on @ancestor is still in scope
+ * Verify that the given namespace held on `ancestor` is still in scope
  * on node.
  *
- * Returns 1 if true, 0 if false and -1 in case of error.
+ * @param doc  the document
+ * @param node  the current node
+ * @param ancestor  the ancestor carrying the namespace
+ * @param prefix  the namespace prefix
+ * @returns 1 if true, 0 if false and -1 in case of error.
  */
 static int
 xmlNsInScope(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node,
@@ -6122,19 +5782,17 @@ xmlNsInScope(xmlDocPtr doc ATTRIBUTE_UNU
 }
 
 /**
- * xmlSearchNsByHrefSafe:
- * @node:  a node
- * @href:  a namespace URI
- * @out:  pointer to resulting namespace
+ * Search for a namespace matching `URI` in scope of `node`.
  *
- * Search a namespace matching @URI in scope of @node.
- *
- * Returns 0 on success, -1 if a memory allocation failed, 1 on
+ * @param node  a node
+ * @param href  a namespace URI
+ * @param out  pointer to resulting namespace
+ * @returns 0 on success, -1 if a memory allocation failed, 1 on
  * other errors.
  */
 int
-xmlSearchNsByHrefSafe(xmlNodePtr node, const xmlChar *href,
-                      xmlNsPtr *out) {
+xmlSearchNsByHrefSafe(xmlNode *node, const xmlChar *href,
+                      xmlNs **out) {
     xmlNsPtr cur;
     xmlDocPtr doc;
     xmlNodePtr orig = node;
@@ -6214,20 +5872,17 @@ xmlSearchNsByHrefSafe(xmlNodePtr node, c
 }
 
 /**
- * xmlSearchNsByHref:
- * @doc:  the document
- * @node:  the current node
- * @href:  the namespace value
- *
- * Search a Ns aliasing a given URI. Recurse on the parents until it finds
- * the defined namespace or return NULL otherwise.
+ * Search for a namespace matching `URI` in scope of `node`.
  *
- * Returns the namespace pointer or NULL if no namespace was found or
- * a memory allocation failed. Allocations can only fail if the "xml"
+ * @param doc  the document
+ * @param node  the current node
+ * @param href  the namespace value
+ * @returns the namespace pointer or NULL if no namespace was found or
+ * a memory allocation failed. Allocations can only fail if the `xml`
  * namespace is queried.
  */
-xmlNsPtr
-xmlSearchNsByHref(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node,
+xmlNs *
+xmlSearchNsByHref(xmlDoc *doc ATTRIBUTE_UNUSED, xmlNode *node,
                   const xmlChar * href) {
     xmlNsPtr cur;
 
@@ -6236,17 +5891,17 @@ xmlSearchNsByHref(xmlDocPtr doc ATTRIBUT
 }
 
 /**
- * xmlNewReconciledNs:
- * @doc:  the document
- * @tree:  a node expected to hold the new namespace
- * @ns:  the original namespace
+ * Fix up namespace declarations.
  *
  * This function tries to locate a namespace definition in a tree
  * ancestors, or create a new namespace definition node similar to
- * @ns trying to reuse the same prefix. However if the given prefix is
+ * `ns` trying to reuse the same prefix. However if the given prefix is
  * null (default namespace) or reused within the subtree defined by
- * @tree or on one of its ancestors then a new prefix is generated.
- * Returns the (new) namespace definition or NULL in case of error
+ * `tree` or on one of its ancestors then a new prefix is generated.
+ *
+ * @param tree  a node expected to hold the new namespace
+ * @param ns  the original namespace
+ * @returns the (new) namespace definition or NULL in case of error
  */
 static xmlNsPtr
 xmlNewReconciledNs(xmlNodePtr tree, xmlNsPtr ns) {
@@ -6325,22 +5980,20 @@ xmlGrowNsCache(xmlNsCache **cache, int *
 }
 
 /**
- * xmlReconciliateNs:
- * @doc:  the document
- * @tree:  a node defining the subtree to reconciliate
- *
  * This function checks that all the namespaces declared within the given
- * tree are properly declared. This is needed for example after Copy or Cut
+ * 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
+ * as possible the function tries 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.
+ * on `tree` at the top of the given subtree.
  *
- * Returns 0 on success or -1 in case of error.
+ * @param doc  the document
+ * @param tree  a node defining the subtree to reconciliate
+ * @returns 0 on success or -1 in case of error.
  */
 int
-xmlReconciliateNs(xmlDocPtr doc, xmlNodePtr tree) {
+xmlReconciliateNs(xmlDoc *doc, xmlNode *tree) {
     xmlNsCache *cache = NULL;
     int sizeCache = 0;
     int nbCache = 0;
@@ -6602,19 +6255,18 @@ xmlGetPropNodeValueInternal(const xmlAtt
 }
 
 /**
- * xmlHasProp:
- * @node:  the node
- * @name:  the attribute name
+ * Search for an attribute of an element.
  *
- * Search an attribute associated to a node
- * This function also looks in DTD attribute declaration for #FIXED or
+ * This function also looks in DTD attribute declaration for \#FIXED or
  * default declaration values.
  *
- * Returns the attribute or the attribute declaration or NULL if
- * neither was found. Also returns NULL if a memory allocation failed
+ * @param node  the element
+ * @param name  the attribute name
+ * @returns the attribute or the attribute declaration or NULL if
+ * neither was found. Also returns NULL if a memory allocation failed,
  * making this function unreliable.
  */
-xmlAttrPtr
+xmlAttr *
 xmlHasProp(const xmlNode *node, const xmlChar *name) {
     xmlAttrPtr prop;
     xmlDocPtr doc;
@@ -6653,43 +6305,43 @@ xmlHasProp(const xmlNode *node, const xm
 }
 
 /**
- * xmlHasNsProp:
- * @node:  the node
- * @name:  the attribute name
- * @nameSpace:  the URI of the namespace
- *
- * 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
+ * Search for an attribute of an element.
+ *
+ * The attribute has to match the specified namespace. A namespace of
+ * NULL means that the attribute must have no namespace.
+ *
+ * This function also looks in DTD attribute declaration for \#FIXED or
  * default declaration values.
- * Note that a namespace of NULL indicates to use the default namespace.
  *
- * Returns the attribute or the attribute declaration or NULL if
+ * @param node  the element
+ * @param name  the attribute name
+ * @param nameSpace  the URI of the namespace
+ * @returns the attribute or the attribute declaration or NULL if
  * neither was found. Also returns NULL if a memory allocation failed
  * making this function unreliable.
  */
-xmlAttrPtr
+xmlAttr *
 xmlHasNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace) {
 
     return(xmlGetPropNodeInternal(node, name, nameSpace, 1));
 }
 
 /**
- * xmlNodeGetAttrValue:
- * @node:  the node
- * @name:  the attribute name
- * @nsUri:  the URI of the namespace
- * @out:  the returned string
- *
- * 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. The returned value must be
- * freed by the caller.
+ * Look up the value of an element's attribute.
  *
- * Available since 2.13.0.
+ * The attribute has to match the specified namespace. A namespace of
+ * NULL means that the attribute must have no namespace.
  *
- * Returns 0 on success, 1 if no attribute was found, -1 if a
+ * Entities are substituted. The returned value must be freed by the
+ * caller.
+ *
+ * @since 2.13.0
+ *
+ * @param node  the element
+ * @param name  the attribute name
+ * @param nsUri  the URI of the namespace
+ * @param out  the returned string
+ * @returns 0 on success, 1 if no attribute was found, -1 if a
  * memory allocation failed.
  */
 int
@@ -6712,24 +6364,24 @@ xmlNodeGetAttrValue(const xmlNode *node,
 }
 
 /**
- * xmlGetProp:
- * @node:  the node
- * @name:  the attribute name
- *
- * 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
+ * Look up the value of an element's attribute.
+ *
+ * Entities are substituted. The returned value must be freed by the
+ * caller.
+ *
+ * This function looks in DTD attribute declarations for \#FIXED or
  * default declaration values.
  *
- * NOTE: This function acts independently of namespaces associated
- *       to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp()
- *       for namespace aware processing.
+ * NOTE: This function is ignores namespaces. Use #xmlGetNsProp or
+ * #xmlGetNoNsProp for namespace aware processing.
  *
  * NOTE: This function doesn't allow to distinguish malloc failures from
- *       missing attributes. It's more robust to use xmlNodeGetAttrValue.
+ * missing attributes.
  *
- * Returns the attribute value or NULL if not found or a memory allocation
- * failed. It's up to the caller to free the memory with xmlFree().
+ * @param node  the element
+ * @param name  the attribute name
+ * @returns the attribute value or NULL if not found or a memory allocation
+ * failed.
  */
 xmlChar *
 xmlGetProp(const xmlNode *node, const xmlChar *name) {
@@ -6742,22 +6394,24 @@ xmlGetProp(const xmlNode *node, const xm
 }
 
 /**
- * xmlGetNoNsProp:
- * @node:  the node
- * @name:  the attribute name
- *
- * 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
+ * Look up the value of an element's attribute.
+ *
+ * Entities are substituted. The returned value must be freed by the
+ * caller.
+ *
+ * This function looks in DTD attribute declarations for \#FIXED or
  * default declaration values.
- * This function is similar to xmlGetProp except it will accept only
+ *
+ * This function is similar to #xmlGetProp except it will accept only
  * an attribute in no namespace.
  *
  * NOTE: This function doesn't allow to distinguish malloc failures from
- *       missing attributes. It's more robust to use xmlNodeGetAttrValue.
+ * missing attributes. It's more robust to use #xmlNodeGetAttrValue.
  *
- * Returns the attribute value or NULL if not found or a memory allocation
- * failed. It's up to the caller to free the memory with xmlFree().
+ * @param node  the element
+ * @param name  the attribute name
+ * @returns the attribute value or NULL if not found or a memory allocation
+ * failed.
  */
 xmlChar *
 xmlGetNoNsProp(const xmlNode *node, const xmlChar *name) {
@@ -6770,22 +6424,25 @@ xmlGetNoNsProp(const xmlNode *node, cons
 }
 
 /**
- * xmlGetNsProp:
- * @node:  the node
- * @name:  the attribute name
- * @nameSpace:  the URI of the namespace
- *
- * 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
+ * Look up the value of an element's attribute.
+ *
+ * The attribute has to match the specified namespace. A namespace of
+ * NULL means that the attribute must have no namespace.
+ *
+ * Entities are substituted. The returned value must be freed by the
+ * caller.
+ *
+ * This function looks in DTD attribute declaration for \#FIXED or
  * default declaration values.
  *
  * NOTE: This function doesn't allow to distinguish malloc failures from
- *       missing attributes. It's more robust to use xmlNodeGetAttrValue.
+ * missing attributes. It's more robust to use #xmlNodeGetAttrValue.
  *
- * Returns the attribute value or NULL if not found or a memory allocation
- * failed. It's up to the caller to free the memory with xmlFree().
+ * @param node  the element
+ * @param name  the attribute name
+ * @param nameSpace  the URI of the namespace
+ * @returns the attribute value or NULL if not found or a memory allocation
+ * failed.
  */
 xmlChar *
 xmlGetNsProp(const xmlNode *node, const xmlChar *name, const xmlChar *nameSpace) {
@@ -6798,16 +6455,15 @@ xmlGetNsProp(const xmlNode *node, const
 }
 
 /**
- * xmlUnsetProp:
- * @node:  the node
- * @name:  the attribute name
- *
- * Remove an attribute carried by a node.
+ * Remove an attribute of an element.
  * This handles only attributes in no namespace.
- * Returns 0 if successful, -1 if not found
+ *
+ * @param node  the element
+ * @param name  the attribute name
+ * @returns 0 if successful, -1 if not found
  */
 int
-xmlUnsetProp(xmlNodePtr node, const xmlChar *name) {
+xmlUnsetProp(xmlNode *node, const xmlChar *name) {
     xmlAttrPtr prop;
 
     prop = xmlGetPropNodeInternal(node, name, NULL, 0);
@@ -6819,16 +6475,15 @@ xmlUnsetProp(xmlNodePtr node, const xmlC
 }
 
 /**
- * xmlUnsetNsProp:
- * @node:  the node
- * @ns:  the namespace definition
- * @name:  the attribute name
+ * Remove an attribute of an element.
  *
- * Remove an attribute carried by a node.
- * Returns 0 if successful, -1 if not found
+ * @param node  the element
+ * @param ns  the namespace definition
+ * @param name  the attribute name
+ * @returns 0 if successful, -1 if not found
  */
 int
-xmlUnsetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name) {
+xmlUnsetNsProp(xmlNode *node, xmlNs *ns, const xmlChar *name) {
     xmlAttrPtr prop;
 
     prop = xmlGetPropNodeInternal(node, name,
@@ -6841,21 +6496,17 @@ xmlUnsetNsProp(xmlNodePtr node, xmlNsPtr
 }
 
 /**
- * xmlSetProp:
- * @node:  the node
- * @name:  the attribute name (a QName)
- * @value:  the attribute value
- *
- * Set (or reset) an attribute carried by a node.
- * If @name has a prefix, then the corresponding
- * namespace-binding will be used, if in scope; it is an
- * error it there's no such ns-binding for the prefix in
- * scope.
- * Returns the attribute pointer.
- *
+ * Set (or reset) an element's attribute. If `name` has a prefix,
+ * the corresponding namespace will be used. It is an error if
+ * there's no such binding for the prefix in scope.
+ *
+ * @param node  the node
+ * @param name  the attribute name (a QName)
+ * @param value  the attribute value
+ * @returns the attribute pointer.
  */
-xmlAttrPtr
-xmlSetProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) {
+xmlAttr *
+xmlSetProp(xmlNode *node, const xmlChar *name, const xmlChar *value) {
     xmlNsPtr ns = NULL;
     const xmlChar *localname;
     xmlChar *prefix;
@@ -6884,19 +6535,18 @@ xmlSetProp(xmlNodePtr node, const xmlCha
 }
 
 /**
- * xmlSetNsProp:
- * @node:  the node
- * @ns:  the namespace definition
- * @name:  the attribute name
- * @value:  the attribute value
+ * Set (or reset) an element's attribute.
  *
- * Set (or reset) an attribute carried by a node.
- * The ns structure must be in scope, this is not checked
+ * The namespace must be in scope.
  *
- * Returns the attribute pointer.
+ * @param node  the node
+ * @param ns  the namespace definition
+ * @param name  the attribute name
+ * @param value  the attribute value
+ * @returns the attribute pointer.
  */
-xmlAttrPtr
-xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
+xmlAttr *
+xmlSetNsProp(xmlNode *node, xmlNs *ns, const xmlChar *name,
 	     const xmlChar *value)
 {
     xmlAttrPtr prop;
@@ -6954,11 +6604,10 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr n
 }
 
 /**
- * xmlNodeIsText:
- * @node:  the node
+ * Check whether the node is a text node.
  *
- * Is this node a Text node ?
- * Returns 1 yes, 0 no
+ * @param node  the node
+ * @returns 1 if yes, 0 if no
  */
 int
 xmlNodeIsText(const xmlNode *node) {
@@ -6969,13 +6618,11 @@ xmlNodeIsText(const xmlNode *node) {
 }
 
 /**
- * xmlIsBlankNode:
- * @node:  the node
- *
- * Checks whether this node is an empty or whitespace only
- * (and possibly ignorable) text-node.
+ * Checks whether this node is an empty or whitespace-only
+ * text node.
  *
- * Returns 1 yes, 0 no
+ * @param node  the node
+ * @returns 1 if yes, 0 if no
  */
 int
 xmlIsBlankNode(const xmlNode *node) {
@@ -6996,20 +6643,18 @@ xmlIsBlankNode(const xmlNode *node) {
 }
 
 /**
- * xmlTextConcat:
- * @node:  the node
- * @content:  the content
- * @len:  @content length
- *
  * Concat the given string at the end of the existing node content.
  *
- * If @len is -1, the string length will be calculated.
+ * If `len` is -1, the string length will be calculated.
  *
- * Returns -1 in case of error, 0 otherwise
+ * @param node  the node
+ * @param content  the content
+ * @param len  `content` length
+ * @returns -1 in case of error, 0 otherwise
  */
 
 int
-xmlTextConcat(xmlNodePtr node, const xmlChar *content, int len) {
+xmlTextConcat(xmlNode *node, const xmlChar *content, int len) {
     if (node == NULL)
         return(-1);
 
@@ -7023,11 +6668,10 @@ xmlTextConcat(xmlNodePtr node, const xml
 }
 
 /**
- * xmlGetDocCompressMode:
- * @doc:  the document
+ * Get the compression level of a document, ZLIB based.
  *
- * get the compression ratio for a document, ZLIB based
- * Returns 0 (uncompressed) to 9 (max compression)
+ * @param doc  the document
+ * @returns 0 (uncompressed) to 9 (max compression)
  */
 int
 xmlGetDocCompressMode (const xmlDoc *doc) {
@@ -7036,15 +6680,15 @@ xmlGetDocCompressMode (const xmlDoc *doc
 }
 
 /**
- * xmlSetDocCompressMode:
- * @doc:  the document
- * @mode:  the compression ratio
+ * Set the compression level of a document, ZLIB based.
  *
- * set the compression ratio for a document, ZLIB based
  * Correct values: 0 (uncompressed) to 9 (max compression)
+ *
+ * @param doc  the document
+ * @param mode  the compression ratio
  */
 void
-xmlSetDocCompressMode (xmlDocPtr doc, int mode) {
+xmlSetDocCompressMode (xmlDoc *doc, int mode) {
     if (doc == NULL) return;
     if (mode < 0) doc->compression = 0;
     else if (mode > 9) doc->compression = 9;
@@ -7052,12 +6696,11 @@ xmlSetDocCompressMode (xmlDocPtr doc, in
 }
 
 /**
- * xmlGetCompressMode:
+ * Get the global compression level, ZLIB based.
  *
- * DEPRECATED: Use xmlGetDocCompressMode
+ * @deprecated Use #xmlGetDocCompressMode
  *
- * get the default compression mode used, ZLIB based.
- * Returns 0 (uncompressed) to 9 (max compression)
+ * @returns 0 (uncompressed) to 9 (max compression)
  */
 int
 xmlGetCompressMode(void)
@@ -7066,13 +6709,13 @@ xmlGetCompressMode(void)
 }
 
 /**
- * xmlSetCompressMode:
- * @mode:  the compression ratio
+ * Set the global compression level, ZLIB based.
  *
- * DEPRECATED: Use xmlSetDocCompressMode
+ * @deprecated Use #xmlSetDocCompressMode
  *
- * set the default compression mode used, ZLIB based
  * Correct values: 0 (uncompressed) to 9 (max compression)
+ *
+ * @param mode  the compression ratio
  */
 void
 xmlSetCompressMode(int mode) {
@@ -7123,12 +6766,11 @@ struct xmlNsMap {
     (i)->next = (m)->pool; \
     (m)->pool = i;
 
-/*
-* xmlDOMWrapNsMapFree:
-* @map: the ns-map
-*
-* Frees the ns-map
-*/
+/**
+ * Frees the ns-map
+ *
+ * @param nsmap  the ns-map
+ */
 static void
 xmlDOMWrapNsMapFree(xmlNsMapPtr nsmap)
 {
@@ -7151,15 +6793,16 @@ xmlDOMWrapNsMapFree(xmlNsMapPtr nsmap)
     xmlFree(nsmap);
 }
 
-/*
-* xmlDOMWrapNsMapAddItem:
-* @map: the ns-map
-* @oldNs: the old ns-struct
-* @newNs: the new ns-struct
-* @depth: depth and ns-kind information
-*
-* Adds an ns-mapping item.
-*/
+/**
+ * Adds an ns-mapping item.
+ *
+ * @param nsmap  the ns-map
+ * @param position  position
+ * @param oldNs  the old ns-struct
+ * @param newNs  the new ns-struct
+ * @param depth  depth and ns-kind information
+ * @returns the added item.
+ */
 static xmlNsMapItemPtr
 xmlDOMWrapNsMapAddItem(xmlNsMapPtr *nsmap, int position,
 		       xmlNsPtr oldNs, xmlNsPtr newNs, int depth)
@@ -7230,18 +6873,16 @@ xmlDOMWrapNsMapAddItem(xmlNsMapPtr *nsma
     return (ret);
 }
 
-/*
-* xmlDOMWrapStoreNs:
-* @doc: the doc
-* @nsName: the namespace name
-* @prefix: the prefix
-*
-* Creates or reuses an xmlNs struct on doc->oldNs with
-* the given prefix and namespace name.
-*
-* Returns the acquired ns struct or NULL in case of an API
-*         or internal error.
-*/
+/**
+ * Creates or reuses an xmlNs struct on doc->oldNs with
+ * the given prefix and namespace name.
+ *
+ * @param doc  the doc
+ * @param nsName  the namespace name
+ * @param prefix  the prefix
+ * @returns the acquired ns struct or NULL in case of an API
+ *          or internal error.
+ */
 static xmlNsPtr
 xmlDOMWrapStoreNs(xmlDocPtr doc,
 		   const xmlChar *nsName,
@@ -7276,14 +6917,12 @@ xmlDOMWrapStoreNs(xmlDocPtr doc,
     return(NULL);
 }
 
-/*
-* xmlDOMWrapNewCtxt:
-*
-* Allocates and initializes a new DOM-wrapper context.
-*
-* Returns the xmlDOMWrapCtxtPtr or NULL in case of an internal error.
-*/
-xmlDOMWrapCtxtPtr
+/**
+ * Allocates and initializes a new DOM-wrapper context.
+ *
+ * @returns the xmlDOMWrapCtxt or NULL in case of an internal error.
+ */
+xmlDOMWrapCtxt *
 xmlDOMWrapNewCtxt(void)
 {
     xmlDOMWrapCtxtPtr ret;
@@ -7295,14 +6934,13 @@ xmlDOMWrapNewCtxt(void)
     return (ret);
 }
 
-/*
-* xmlDOMWrapFreeCtxt:
-* @ctxt: the DOM-wrapper context
-*
-* Frees the DOM-wrapper context.
-*/
+/**
+ * Frees the DOM-wrapper context.
+ *
+ * @param ctxt  the DOM-wrapper context
+ */
 void
-xmlDOMWrapFreeCtxt(xmlDOMWrapCtxtPtr ctxt)
+xmlDOMWrapFreeCtxt(xmlDOMWrapCtxt *ctxt)
 {
     if (ctxt == NULL)
 	return;
@@ -7314,16 +6952,14 @@ xmlDOMWrapFreeCtxt(xmlDOMWrapCtxtPtr ctx
     xmlFree(ctxt);
 }
 
-/*
-* xmlTreeLookupNsListByPrefix:
-* @nsList: a list of ns-structs
-* @prefix: the searched prefix
-*
-* Searches for a ns-decl with the given prefix in @nsList.
-*
-* Returns the ns-decl if found, NULL if not found and on
-*         API errors.
-*/
+/**
+ * Searches for a ns-decl with the given prefix in `nsList`.
+ *
+ * @param nsList  a list of ns-structs
+ * @param prefix  the searched prefix
+ * @returns the ns-decl if found, NULL if not found and on
+ *          API errors.
+ */
 static xmlNsPtr
 xmlTreeNSListLookupByPrefix(xmlNsPtr nsList, const xmlChar *prefix)
 {
@@ -7343,16 +6979,13 @@ xmlTreeNSListLookupByPrefix(xmlNsPtr nsL
     return (NULL);
 }
 
-/*
-*
-* xmlDOMWrapNSNormGatherInScopeNs:
-* @map: the namespace map
-* @node: the node to start with
-*
-* Puts in-scope namespaces into the ns-map.
-*
-* Returns 0 on success, -1 on API or internal errors.
-*/
+/**
+ * Puts in-scope namespaces into the ns-map.
+ *
+ * @param map  the namespace map
+ * @param node  the node to start with
+ * @returns 0 on success, -1 on API or internal errors.
+ */
 static int
 xmlDOMWrapNSNormGatherInScopeNs(xmlNsMapPtr *map,
 				xmlNodePtr node)
@@ -7407,12 +7040,10 @@ xmlDOMWrapNSNormGatherInScopeNs(xmlNsMap
 }
 
 /*
-* xmlDOMWrapNSNormAddNsMapItem2:
-*
-* For internal use. Adds a ns-decl mapping.
-*
-* Returns 0 on success, -1 on internal errors.
-*/
+ * For internal use. Adds a ns-decl mapping.
+ *
+ * Returns 0 on success, -1 on internal errors.
+ */
 static int
 xmlDOMWrapNSNormAddNsMapItem2(xmlNsPtr **list, int *size, int *number,
 			xmlNsPtr oldNs, xmlNsPtr newNs)
@@ -7437,26 +7068,25 @@ xmlDOMWrapNSNormAddNsMapItem2(xmlNsPtr *
     return (0);
 }
 
-/*
-* xmlDOMWrapRemoveNode:
-* @ctxt: a DOM wrapper context
-* @doc: the doc
-* @node: the node to be removed.
-* @options: set of options, unused at the moment
-*
-* Unlinks the given node from its owner.
-* This will substitute ns-references to node->nsDef for
-* ns-references to doc->oldNs, thus ensuring the removed
-* branch to be autark wrt ns-references.
-*
-* NOTE: This function was not intensively tested.
-*
-* Returns 0 on success, 1 if the node is not supported,
-*         -1 on API and internal errors.
-*/
+/**
+ * Unlinks the given node from its owner.
+ *
+ * This will substitute ns-references to node->nsDef for
+ * ns-references to doc->oldNs, thus ensuring the removed
+ * branch to be autark wrt ns-references.
+ *
+ * NOTE: This function was not intensively tested.
+ *
+ * @param ctxt  a DOM wrapper context
+ * @param doc  the doc
+ * @param node  the node to be removed.
+ * @param options  set of options, unused at the moment
+ * @returns 0 on success, 1 if the node is not supported,
+ *          -1 on API and internal errors.
+ */
 int
-xmlDOMWrapRemoveNode(xmlDOMWrapCtxtPtr ctxt, xmlDocPtr doc,
-		     xmlNodePtr node, int options ATTRIBUTE_UNUSED)
+xmlDOMWrapRemoveNode(xmlDOMWrapCtxt *ctxt, xmlDoc *doc,
+		     xmlNode *node, int options ATTRIBUTE_UNUSED)
 {
     xmlNsPtr *list = NULL;
     int sizeList = 0, nbList = 0, ret = 0, i, j;
@@ -7576,20 +7206,19 @@ next_sibling:
     return (ret);
 }
 
-/*
-* xmlSearchNsByNamespaceStrict:
-* @doc: the document
-* @node: the start node
-* @nsName: the searched namespace name
-* @retNs: the resulting ns-decl
-* @prefixed: if the found ns-decl must have a prefix (for attributes)
-*
-* Dynamically searches for a ns-declaration which matches
-* the given @nsName in the ancestor-or-self axis of @node.
-*
-* Returns 1 if a ns-decl was found, 0 if not and -1 on API
-*         and internal errors.
-*/
+/**
+ * Dynamically searches for a ns-declaration which matches
+ * the given `nsName` in the ancestor-or-self axis of `node`.
+ *
+ * @param doc  the document
+ * @param node  the start node
+ * @param nsName  the searched namespace name
+ * @param retNs  the resulting ns-decl
+ * @param prefixed  if the found ns-decl must have a prefix
+ *                  (for attributes)
+ * @returns 1 if a ns-decl was found, 0 if not and -1 on API
+ *          and internal errors.
+ */
 static int
 xmlSearchNsByNamespaceStrict(xmlDocPtr doc, xmlNodePtr node,
 			     const xmlChar* nsName,
@@ -7678,19 +7307,17 @@ xmlSearchNsByNamespaceStrict(xmlDocPtr d
     return (0);
 }
 
-/*
-* xmlSearchNsByPrefixStrict:
-* @doc: the document
-* @node: the start node
-* @prefix: the searched namespace prefix
-* @retNs: the resulting ns-decl
-*
-* Dynamically searches for a ns-declaration which matches
-* the given @nsName in the ancestor-or-self axis of @node.
-*
-* Returns 1 if a ns-decl was found, 0 if not and -1 on API
-*         and internal errors.
-*/
+/**
+ * Dynamically searches for a ns-declaration which matches
+ * the given `nsName` in the ancestor-or-self axis of `node`.
+ *
+ * @param doc  the document
+ * @param node  the start node
+ * @param prefix  the searched namespace prefix
+ * @param retNs  the resulting ns-decl
+ * @returns 1 if a ns-decl was found, 0 if not and -1 on API
+ *          and internal errors.
+ */
 static int
 xmlSearchNsByPrefixStrict(xmlDocPtr doc, xmlNodePtr node,
 			  const xmlChar* prefix,
@@ -7740,21 +7367,20 @@ xmlSearchNsByPrefixStrict(xmlDocPtr doc,
     return (0);
 }
 
-/*
-* xmlDOMWrapNSNormDeclareNsForced:
-* @doc: the doc
-* @elem: the element-node to declare on
-* @nsName: the namespace-name of the ns-decl
-* @prefix: the preferred prefix of the ns-decl
-* @checkShadow: ensure that the new ns-decl doesn't shadow ancestor ns-decls
-*
-* Declares a new namespace on @elem. It tries to use the
-* given @prefix; if a ns-decl with the given prefix is already existent
-* on @elem, it will generate an other prefix.
-*
-* Returns 1 if a ns-decl was found, 0 if not and -1 on API
-*         and internal errors.
-*/
+/**
+ * Declares a new namespace on `elem`. It tries to use the
+ * given `prefix`. If a ns-decl with the given prefix is already existent
+ * on `elem`, it will generate an other prefix.
+ *
+ * @param doc  the doc
+ * @param elem  the element-node to declare on
+ * @param nsName  the namespace-name of the ns-decl
+ * @param prefix  the preferred prefix of the ns-decl
+ * @param checkShadow  ensure that the new ns-decl doesn't shadow
+ *                     ancestor ns-decls
+ * @returns 1 if a ns-decl was found, 0 if not and -1 on API
+ *          and internal errors.
+ */
 static xmlNsPtr
 xmlDOMWrapNSNormDeclareNsForced(xmlDocPtr doc,
 				xmlNodePtr elem,
@@ -7815,25 +7441,24 @@ ns_next_prefix:
     }
 }
 
-/*
-* xmlDOMWrapNSNormAcquireNormalizedNs:
-* @doc: the doc
-* @elem: the element-node to declare namespaces on
-* @ns: the ns-struct to use for the search
-* @retNs: the found/created ns-struct
-* @nsMap: the ns-map
-* @depth: the current tree depth
-* @ancestorsOnly: search in ancestor ns-decls only
-* @prefixed: if the searched ns-decl must have a prefix (for attributes)
-*
-* Searches for a matching ns-name in the ns-decls of @nsMap, if not
-* found it will either declare it on @elem, or store it in doc->oldNs.
-* If a new ns-decl needs to be declared on @elem, it tries to use the
-* @ns->prefix for it, if this prefix is already in use on @elem, it will
-* change the prefix or the new ns-decl.
-*
-* Returns 0 if succeeded, -1 otherwise and on API/internal errors.
-*/
+/**
+ * Searches for a matching ns-name in the ns-decls of `nsMap`, if not
+ * found it will either declare it on `elem`, or store it in `doc->oldNs`.
+ * If a new ns-decl needs to be declared on `elem`, it tries to use the
+ * `ns->prefix` for it, if this prefix is already in use on `elem`, it will
+ * change the prefix or the new ns-decl.
+ *
+ * @param doc  the doc
+ * @param elem  the element-node to declare namespaces on
+ * @param ns  the ns-struct to use for the search
+ * @param retNs  the found/created ns-struct
+ * @param nsMap  the ns-map
+ * @param depth  the current tree depth
+ * @param ancestorsOnly  search in ancestor ns-decls only
+ * @param prefixed  if the searched ns-decl must have a prefix
+ *                  (for attributes)
+ * @returns 0 if succeeded, -1 otherwise and on API/internal errors.
+ */
 static int
 xmlDOMWrapNSNormAcquireNormalizedNs(xmlDocPtr doc,
 				   xmlNodePtr elem,
@@ -7957,26 +7582,25 @@ typedef enum {
     XML_DOM_RECONNS_REMOVEREDUND = 1<<0
 } xmlDOMReconcileNSOptions;
 
-/*
-* xmlDOMWrapReconcileNamespaces:
-* @ctxt: DOM wrapper context, unused at the moment
-* @elem: the element-node
-* @options: option flags
-*
-* Ensures that ns-references point to ns-decls hold on element-nodes.
-* Ensures that the tree is namespace wellformed by creating additional
-* ns-decls where needed. Note that, since prefixes of already existent
-* ns-decls can be shadowed by this process, it could break QNames in
-* attribute values or element content.
-*
-* NOTE: This function was not intensively tested.
-*
-* Returns 0 if succeeded, -1 otherwise and on API/internal errors.
-*/
-
+/**
+ * Fix up namespaces.
+ *
+ * Ensures that ns-references point to ns-decls hold on element-nodes.
+ * Ensures that the tree is namespace wellformed by creating additional
+ * ns-decls where needed. Note that, since prefixes of already existent
+ * ns-decls can be shadowed by this process, it could break QNames in
+ * attribute values or element content.
+ *
+ * NOTE: This function was not intensively tested.
+ *
+ * @param ctxt  DOM wrapper context, unused at the moment
+ * @param elem  the element-node
+ * @param options  option flags
+ * @returns 0 if succeeded, -1 otherwise and on API/internal errors.
+ */
 int
-xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt ATTRIBUTE_UNUSED,
-			      xmlNodePtr elem,
+xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxt *ctxt ATTRIBUTE_UNUSED,
+			      xmlNode *elem,
 			      int options)
 {
     int depth = -1, adoptns = 0, parnsdone = 0;
@@ -8212,28 +7836,27 @@ next_sibling:
     return (ret);
 }
 
-/*
-* xmlDOMWrapAdoptBranch:
-* @ctxt: the optional context for custom processing
-* @sourceDoc: the optional sourceDoc
-* @node: the element-node to start with
-* @destDoc: the destination doc for adoption
-* @destParent: the optional new parent of @node in @destDoc
-* @options: option flags
-*
-* Ensures that ns-references point to @destDoc: either to
-* elements->nsDef entries if @destParent is given, or to
-* @destDoc->oldNs otherwise.
-* If @destParent is given, it ensures that the tree is namespace
-* wellformed by creating additional ns-decls where needed.
-* Note that, since prefixes of already existent ns-decls can be
-* shadowed by this process, it could break QNames in attribute
-* values or element content.
-*
-* NOTE: This function was not intensively tested.
-*
-* Returns 0 if succeeded, -1 otherwise and on API/internal errors.
-*/
+/**
+ * Ensures that ns-references point to `destDoc`: either to
+ * `elements->nsDef` entries if `destParent` is given, or to
+ * `destDoc->oldNs` otherwise.
+ *
+ * If `destParent` is given, it ensures that the tree is namespace
+ * wellformed by creating additional ns-decls where needed.
+ * Note that, since prefixes of already existent ns-decls can be
+ * shadowed by this process, it could break QNames in attribute
+ * values or element content.
+ *
+ * NOTE: This function was not intensively tested.
+ *
+ * @param ctxt  the optional context for custom processing
+ * @param sourceDoc  the optional sourceDoc
+ * @param node  the element-node to start with
+ * @param destDoc  the destination doc for adoption
+ * @param destParent  the optional new parent of `node` in `destDoc`
+ * @param options  option flags
+ * @returns 0 if succeeded, -1 otherwise and on API/internal errors.
+ */
 static int
 xmlDOMWrapAdoptBranch(xmlDOMWrapCtxtPtr ctxt,
 		      xmlDocPtr sourceDoc ATTRIBUTE_UNUSED,
@@ -8493,43 +8116,40 @@ leave_node:
     return(ret);
 }
 
-/*
-* xmlDOMWrapCloneNode:
-* @ctxt: the optional context for custom processing
-* @sourceDoc: the optional sourceDoc
-* @node: the node to start with
-* @resNode: the clone of the given @node
-* @destDoc: the destination doc
-* @destParent: the optional new parent of @node in @destDoc
-* @deep: descend into child if set
-* @options: option flags
-*
-* References of out-of scope ns-decls are remapped to point to @destDoc:
-* 1) If @destParent is given, then nsDef entries on element-nodes are used
-* 2) If *no* @destParent is given, then @destDoc->oldNs entries are used.
-*    This is the case when you don't know already where the cloned branch
-*    will be added to.
-*
-* If @destParent is given, it ensures that the tree is namespace
-* wellformed by creating additional ns-decls where needed.
-* Note that, since prefixes of already existent ns-decls can be
-* shadowed by this process, it could break QNames in attribute
-* values or element content.
-* TODO:
-*   1) What to do with XInclude? Currently this returns an error for XInclude.
-*
-* Returns 0 if the operation succeeded,
-*         1 if a node of unsupported (or not yet supported) type was given,
-*         -1 on API/internal errors.
-*/
-
+/**
+ * Clone a node and fix namespaces.
+ *
+ * References of out-of scope ns-decls are remapped to point to `destDoc`.
+ * If `destParent` is given, then nsDef entries on element-nodes are used.
+ * If *no* `destParent` is given, then `destDoc->oldNs` entries are used.
+ * This is the case when you don't know already where the cloned branch
+ * will be added to.
+ *
+ * If `destParent` is given, it ensures that the tree is namespace
+ * wellformed by creating additional ns-decls where needed.
+ * Note that, since prefixes of already existent ns-decls can be
+ * shadowed by this process, it could break QNames in attribute
+ * values or element content.
+ *
+ * @param ctxt  the optional context for custom processing
+ * @param sourceDoc  the optional sourceDoc
+ * @param node  the node to start with
+ * @param resNode  the clone of the given `node`
+ * @param destDoc  the destination doc
+ * @param destParent  the optional new parent of `node` in `destDoc`
+ * @param deep  descend into child if set
+ * @param options  option flags
+ * @returns 0 if the operation succeeded,
+ *          1 if a node of unsupported (or not yet supported) type was given,
+ *          -1 on API/internal errors.
+ */
 int
-xmlDOMWrapCloneNode(xmlDOMWrapCtxtPtr ctxt,
-		      xmlDocPtr sourceDoc,
-		      xmlNodePtr node,
-		      xmlNodePtr *resNode,
-		      xmlDocPtr destDoc,
-		      xmlNodePtr destParent,
+xmlDOMWrapCloneNode(xmlDOMWrapCtxt *ctxt,
+		      xmlDoc *sourceDoc,
+		      xmlNode *node,
+		      xmlNode **resNode,
+		      xmlDoc *destDoc,
+		      xmlNode *destParent,
 		      int deep,
 		      int options ATTRIBUTE_UNUSED)
 {
@@ -9035,22 +8655,20 @@ exit:
     return (ret);
 }
 
-/*
-* xmlDOMWrapAdoptAttr:
-* @ctxt: the optional context for custom processing
-* @sourceDoc: the optional source document of attr
-* @attr: the attribute-node to be adopted
-* @destDoc: the destination doc for adoption
-* @destParent: the optional new parent of @attr in @destDoc
-* @options: option flags
-*
-* @attr is adopted by @destDoc.
-* Ensures that ns-references point to @destDoc: either to
-* elements->nsDef entries if @destParent is given, or to
-* @destDoc->oldNs otherwise.
-*
-* Returns 0 if succeeded, -1 otherwise and on API/internal errors.
-*/
+/**
+ * `attr` is adopted by `destDoc`.
+ * Ensures that ns-references point to `destDoc`: either to
+ * `elements->nsDef` entries if `destParent` is given, or to
+ * `destDoc->oldNs` otherwise.
+ *
+ * @param ctxt  the optional context for custom processing
+ * @param sourceDoc  unused
+ * @param attr  the attribute-node to be adopted
+ * @param destDoc  the destination doc for adoption
+ * @param destParent  the optional new parent of `attr` in `destDoc`
+ * @param options  option flags (unused)
+ * @returns 0 if succeeded, -1 otherwise and on API/internal errors.
+ */
 static int
 xmlDOMWrapAdoptAttr(xmlDOMWrapCtxtPtr ctxt,
 		    xmlDocPtr sourceDoc ATTRIBUTE_UNUSED,
@@ -9103,39 +8721,40 @@ xmlDOMWrapAdoptAttr(xmlDOMWrapCtxtPtr ct
     return (ret);
 }
 
-/*
-* xmlDOMWrapAdoptNode:
-* @ctxt: the optional context for custom processing
-* @sourceDoc: the optional sourceDoc
-* @node: the node to start with
-* @destDoc: the destination doc
-* @destParent: the optional new parent of @node in @destDoc
-* @options: option flags
-*
-* References of out-of scope ns-decls are remapped to point to @destDoc:
-* 1) If @destParent is given, then nsDef entries on element-nodes are used
-* 2) If *no* @destParent is given, then @destDoc->oldNs entries are used
-*    This is the case when you have an unlinked node and just want to move it
-*    to the context of
-*
-* If @destParent is given, it ensures that the tree is namespace
-* wellformed by creating additional ns-decls where needed.
-* Note that, since prefixes of already existent ns-decls can be
-* shadowed by this process, it could break QNames in attribute
-* values or element content.
-* NOTE: This function was not intensively tested.
-*
-* Returns 0 if the operation succeeded,
-*         1 if a node of unsupported type was given,
-*         2 if a node of not yet supported type was given and
-*         -1 on API/internal errors.
-*/
+/**
+ * Fix up namespaces before moving a node.
+ *
+ * References of out-of scope ns-decls are remapped to point to `destDoc`:
+ * If `destParent` is given, then nsDef entries on element-nodes are used.
+ * If *no* `destParent` is given, then `destDoc->oldNs` entries are used
+ * This is the case when you have an unlinked node and just want to move it
+ * to the context of.
+ *
+ * If `destParent` is given, it ensures that the tree is namespace
+ * wellformed by creating additional ns-decls where needed.
+ * Note that, since prefixes of already existent ns-decls can be
+ * shadowed by this process, it could break QNames in attribute
+ * values or element content.
+ *
+ * NOTE: This function was not intensively tested.
+ *
+ * @param ctxt  the optional context for custom processing
+ * @param sourceDoc  the optional sourceDoc
+ * @param node  the node to start with
+ * @param destDoc  the destination doc
+ * @param destParent  the optional new parent of `node` in `destDoc`
+ * @param options  option flags
+ * @returns 0 if the operation succeeded,
+ *          1 if a node of unsupported type was given,
+ *          2 if a node of not yet supported type was given and
+ *          -1 on API/internal errors.
+ */
 int
-xmlDOMWrapAdoptNode(xmlDOMWrapCtxtPtr ctxt,
-		    xmlDocPtr sourceDoc,
-		    xmlNodePtr node,
-		    xmlDocPtr destDoc,
-		    xmlNodePtr destParent,
+xmlDOMWrapAdoptNode(xmlDOMWrapCtxt *ctxt,
+		    xmlDoc *sourceDoc,
+		    xmlNode *node,
+		    xmlDoc *destDoc,
+		    xmlNode *destParent,
 		    int options)
 {
     int ret = 0;
@@ -9215,13 +8834,11 @@ xmlDOMWrapAdoptNode(xmlDOMWrapCtxtPtr ct
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
 
 /**
- * xmlIsXHTML:
- * @systemID:  the system identifier
- * @publicID:  the public identifier
- *
  * Try to find if the document correspond to an XHTML DTD
  *
- * Returns 1 if true, 0 if not and -1 in case of error
+ * @param systemID  the system identifier
+ * @param publicID  the public identifier
+ * @returns 1 if true, 0 if not and -1 in case of error
  */
 int
 xmlIsXHTML(const xmlChar *systemID, const xmlChar *publicID) {
@@ -9247,14 +8864,12 @@ xmlIsXHTML(const xmlChar *systemID, cons
  ************************************************************************/
 
 /**
- * xmlRegisterNodeDefault:
- * @func: function pointer to the new RegisterNodeFunc
- *
- * DEPRECATED: don't use
- *
  * Registers a callback for node creation
  *
- * Returns the old value of the registration function
+ * @deprecated don't use
+ *
+ * @param func  function pointer to the new RegisterNodeFunc
+ * @returns the old value of the registration function
  */
 xmlRegisterNodeFunc
 xmlRegisterNodeDefault(xmlRegisterNodeFunc func)
@@ -9267,14 +8882,12 @@ xmlRegisterNodeDefault(xmlRegisterNodeFu
 }
 
 /**
- * xmlDeregisterNodeDefault:
- * @func: function pointer to the new DeregisterNodeFunc
- *
- * DEPRECATED: don't use
- *
  * Registers a callback for node destruction
  *
- * Returns the previous value of the deregistration function
+ * @deprecated don't use
+ *
+ * @param func  function pointer to the new DeregisterNodeFunc
+ * @returns the previous value of the deregistration function
  */
 xmlDeregisterNodeFunc
 xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func)
diff -pruN 2.14.6+dfsg-0.1/uri.c 2.15.0+dfsg-0.3/uri.c
--- 2.14.6+dfsg-0.1/uri.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/uri.c	2025-09-15 11:55:59.000000000 +0000
@@ -5,7 +5,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -22,8 +22,6 @@
 #include "private/memory.h"
 
 /**
- * MAX_URI_LENGTH:
- *
  * The definition of the URI regexp in the above RFC has no size limit
  * In practice they are usually relatively short except for the
  * data URI scheme as defined in RFC 2397. Even for data URI the usual
@@ -144,7 +142,7 @@ static void xmlCleanURI(xmlURIPtr uri);
        ((*(p) == '=')) || ((*(p) == '\'')))
 
 /*
- *    gen-delims    = ":" / "/" / "?" / "#" / "[" / "]" / "@"
+ *    gen-delims    = ":" / "/" / "?" / "\#" / "[" / "]" / "@"
  */
 #define ISA_GEN_DELIM(p)						\
       (((*(p) == ':')) || ((*(p) == '/')) || ((*(p) == '?')) ||         \
@@ -214,15 +212,13 @@ xmlIsUnreserved(xmlURIPtr uri, const cha
 }
 
 /**
- * xmlParse3986Scheme:
- * @uri:  pointer to an URI structure
- * @str:  pointer to the string to analyze
- *
  * Parse an URI scheme
  *
  * ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Scheme(xmlURIPtr uri, const char **str) {
@@ -254,10 +250,6 @@ xmlParse3986Scheme(xmlURIPtr uri, const
 }
 
 /**
- * xmlParse3986Fragment:
- * @uri:  pointer to an URI structure
- * @str:  pointer to the string to analyze
- *
  * Parse the query part of an URI
  *
  * fragment      = *( pchar / "/" / "?" )
@@ -266,7 +258,9 @@ xmlParse3986Scheme(xmlURIPtr uri, const
  *       xpointer scheme selection, so we are allowing it here to not break
  *       for example all the DocBook processing chains.
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Fragment(xmlURIPtr uri, const char **str)
@@ -293,15 +287,13 @@ xmlParse3986Fragment(xmlURIPtr uri, cons
 }
 
 /**
- * xmlParse3986Query:
- * @uri:  pointer to an URI structure
- * @str:  pointer to the string to analyze
- *
  * Parse the query part of an URI
  *
  * query = *uric
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Query(xmlURIPtr uri, const char **str)
@@ -336,16 +328,14 @@ xmlParse3986Query(xmlURIPtr uri, const c
 }
 
 /**
- * xmlParse3986Port:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse a port part and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * port          = *DIGIT
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Port(xmlURIPtr uri, const char **str)
@@ -375,16 +365,14 @@ xmlParse3986Port(xmlURIPtr uri, const ch
 }
 
 /**
- * xmlParse3986Userinfo:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an user information part and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * userinfo      = *( unreserved / pct-encoded / sub-delims / ":" )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Userinfo(xmlURIPtr uri, const char **str)
@@ -412,9 +400,6 @@ xmlParse3986Userinfo(xmlURIPtr uri, cons
 }
 
 /**
- * xmlParse3986DecOctet:
- * @str:  the string to analyze
- *
  *    dec-octet     = DIGIT                 ; 0-9
  *                  / %x31-39 DIGIT         ; 10-99
  *                  / "1" 2DIGIT            ; 100-199
@@ -423,7 +408,8 @@ xmlParse3986Userinfo(xmlURIPtr uri, cons
  *
  * Skip a dec-octet.
  *
- * Returns 0 if found and skipped, 1 otherwise
+ * @param str  the string to analyze
+ * @returns 0 if found and skipped, 1 otherwise
  */
 static int
 xmlParse3986DecOctet(const char **str) {
@@ -449,19 +435,17 @@ xmlParse3986DecOctet(const char **str) {
     return(0);
 }
 /**
- * xmlParse3986Host:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an host part and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * host          = IP-literal / IPv4address / reg-name
  * IP-literal    = "[" ( IPv6address / IPvFuture  ) "]"
  * IPv4address   = dec-octet "." dec-octet "." dec-octet "." dec-octet
  * reg-name      = *( unreserved / pct-encoded / sub-delims )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Host(xmlURIPtr uri, const char **str)
@@ -531,16 +515,14 @@ found:
 }
 
 /**
- * xmlParse3986Authority:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an authority part and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * authority     = [ userinfo "@" ] host [ ":" port ]
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Authority(xmlURIPtr uri, const char **str)
@@ -571,20 +553,19 @@ xmlParse3986Authority(xmlURIPtr uri, con
 }
 
 /**
- * xmlParse3986Segment:
- * @str:  the string to analyze
- * @forbid: an optional forbidden character
- * @empty: allow an empty segment
- *
  * Parse a segment and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * segment       = *pchar
  * segment-nz    = 1*pchar
  * segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
  *               ; non-zero-length segment without any colon ":"
  *
- * Returns 0 or the error code
+ * @param uri  the URI
+ * @param str  the string to analyze
+ * @param forbid  an optional forbidden character
+ * @param empty  allow an empty segment
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986Segment(xmlURIPtr uri, const char **str, char forbid, int empty)
@@ -614,16 +595,14 @@ xmlParse3986Segment(xmlURIPtr uri, const
 }
 
 /**
- * xmlParse3986PathAbEmpty:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an path absolute or empty and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * path-abempty  = *( "/" segment )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986PathAbEmpty(xmlURIPtr uri, const char **str)
@@ -656,16 +635,14 @@ xmlParse3986PathAbEmpty(xmlURIPtr uri, c
 }
 
 /**
- * xmlParse3986PathAbsolute:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an path absolute and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * path-absolute = "/" [ segment-nz *( "/" segment ) ]
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986PathAbsolute(xmlURIPtr uri, const char **str)
@@ -704,16 +681,14 @@ xmlParse3986PathAbsolute(xmlURIPtr uri,
 }
 
 /**
- * xmlParse3986PathRootless:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an path without root and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * path-rootless = segment-nz *( "/" segment )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986PathRootless(xmlURIPtr uri, const char **str)
@@ -748,16 +723,14 @@ xmlParse3986PathRootless(xmlURIPtr uri,
 }
 
 /**
- * xmlParse3986PathNoScheme:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an path which is not a scheme and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * path-noscheme = segment-nz-nc *( "/" segment )
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986PathNoScheme(xmlURIPtr uri, const char **str)
@@ -792,19 +765,17 @@ xmlParse3986PathNoScheme(xmlURIPtr uri,
 }
 
 /**
- * xmlParse3986HierPart:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an hierarchical part and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * hier-part     = "//" authority path-abempty
  *                / path-absolute
  *                / path-rootless
  *                / path-empty
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986HierPart(xmlURIPtr uri, const char **str)
@@ -845,20 +816,18 @@ xmlParse3986HierPart(xmlURIPtr uri, cons
 }
 
 /**
- * xmlParse3986RelativeRef:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an URI string and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
- * relative-ref  = relative-part [ "?" query ] [ "#" fragment ]
+ * relative-ref  = relative-part [ "?" query ] [ "\#" fragment ]
  * relative-part = "//" authority path-abempty
  *               / path-absolute
  *               / path-noscheme
  *               / path-empty
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986RelativeRef(xmlURIPtr uri, const char *str) {
@@ -903,16 +872,14 @@ xmlParse3986RelativeRef(xmlURIPtr uri, c
 
 
 /**
- * xmlParse3986URI:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an URI string and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
- * scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+ * scheme ":" hier-part [ "?" query ] [ "\#" fragment ]
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986URI(xmlURIPtr uri, const char *str) {
@@ -944,16 +911,14 @@ xmlParse3986URI(xmlURIPtr uri, const cha
 }
 
 /**
- * xmlParse3986URIReference:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an URI reference string and fills in the appropriate fields
- * of the @uri structure
+ * of the `uri` structure
  *
  * URI-reference = URI / relative-ref
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 static int
 xmlParse3986URIReference(xmlURIPtr uri, const char *str) {
@@ -982,21 +947,19 @@ xmlParse3986URIReference(xmlURIPtr uri,
 }
 
 /**
- * xmlParseURISafe:
- * @str:  the URI string to analyze
- * @uriOut:  optional pointer to parsed URI
- *
  * Parse an URI based on RFC 3986
  *
- * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
+ * URI-reference = [ absoluteURI | relativeURI ] [ "\#" fragment ]
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 on success, an error code (typically 1) if the URI is invalid
+ * @param str  the URI string to analyze
+ * @param uriOut  optional pointer to parsed URI
+ * @returns 0 on success, an error code (typically 1) if the URI is invalid
  * or -1 if a memory allocation failed.
  */
 int
-xmlParseURISafe(const char *str, xmlURIPtr *uriOut) {
+xmlParseURISafe(const char *str, xmlURI **uriOut) {
     xmlURIPtr uri;
     int ret;
 
@@ -1021,16 +984,14 @@ xmlParseURISafe(const char *str, xmlURIP
 }
 
 /**
- * xmlParseURI:
- * @str:  the URI string to analyze
- *
  * Parse an URI based on RFC 3986
  *
- * URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
+ * URI-reference = [ absoluteURI | relativeURI ] [ "\#" fragment ]
  *
- * Returns a newly built xmlURIPtr or NULL in case of error
+ * @param str  the URI string to analyze
+ * @returns a newly built xmlURI or NULL in case of error
  */
-xmlURIPtr
+xmlURI *
 xmlParseURI(const char *str) {
     xmlURIPtr uri;
     xmlParseURISafe(str, &uri);
@@ -1038,34 +999,30 @@ xmlParseURI(const char *str) {
 }
 
 /**
- * xmlParseURIReference:
- * @uri:  pointer to an URI structure
- * @str:  the string to analyze
- *
  * Parse an URI reference string based on RFC 3986 and fills in the
- * appropriate fields of the @uri structure
+ * appropriate fields of the `uri` structure
  *
  * URI-reference = URI / relative-ref
  *
- * Returns 0 or the error code
+ * @param uri  pointer to an URI structure
+ * @param str  the string to analyze
+ * @returns 0 or the error code
  */
 int
-xmlParseURIReference(xmlURIPtr uri, const char *str) {
+xmlParseURIReference(xmlURI *uri, const char *str) {
     return(xmlParse3986URIReference(uri, str));
 }
 
 /**
- * xmlParseURIRaw:
- * @str:  the URI string to analyze
- * @raw:  if 1 unescaping of URI pieces are disabled
- *
  * Parse an URI but allows to keep intact the original fragments.
  *
  * URI-reference = URI / relative-ref
  *
- * Returns a newly built xmlURIPtr or NULL in case of error
+ * @param str  the URI string to analyze
+ * @param raw  if 1 unescaping of URI pieces are disabled
+ * @returns a newly built xmlURI or NULL in case of error
  */
-xmlURIPtr
+xmlURI *
 xmlParseURIRaw(const char *str, int raw) {
     xmlURIPtr uri;
     int ret;
@@ -1093,13 +1050,11 @@ xmlParseURIRaw(const char *str, int raw)
  ************************************************************************/
 
 /**
- * xmlCreateURI:
- *
  * Simply creates an empty xmlURI
  *
- * Returns the new structure or NULL in case of error
+ * @returns the new structure or NULL in case of error
  */
-xmlURIPtr
+xmlURI *
 xmlCreateURI(void) {
     xmlURIPtr ret;
 
@@ -1112,8 +1067,6 @@ xmlCreateURI(void) {
 }
 
 /**
- * xmlSaveUriRealloc:
- *
  * Function to handle properly a reallocation when saving an URI
  * Also imposes some limit on the length of an URI string output
  */
@@ -1133,15 +1086,13 @@ xmlSaveUriRealloc(xmlChar *ret, int *max
 }
 
 /**
- * xmlSaveUri:
- * @uri:  pointer to an xmlURI
- *
  * Save the URI as an escaped string
  *
- * Returns a new string (to be deallocated by caller)
+ * @param uri  pointer to an xmlURI
+ * @returns a new string (to be deallocated by caller)
  */
 xmlChar *
-xmlSaveUri(xmlURIPtr uri) {
+xmlSaveUri(xmlURI *uri) {
     xmlChar *ret = NULL;
     xmlChar *temp;
     const char *p;
@@ -1407,14 +1358,13 @@ mem_error:
 }
 
 /**
- * xmlPrintURI:
- * @stream:  a FILE* for the output
- * @uri:  pointer to an xmlURI
+ * Prints the URI in the stream `stream`.
  *
- * Prints the URI in the stream @stream.
+ * @param stream  a FILE* for the output
+ * @param uri  pointer to an xmlURI
  */
 void
-xmlPrintURI(FILE *stream, xmlURIPtr uri) {
+xmlPrintURI(FILE *stream, xmlURI *uri) {
     xmlChar *out;
 
     out = xmlSaveUri(uri);
@@ -1425,10 +1375,9 @@ xmlPrintURI(FILE *stream, xmlURIPtr uri)
 }
 
 /**
- * xmlCleanURI:
- * @uri:  pointer to an xmlURI
- *
  * Make sure the xmlURI struct is free of content
+ *
+ * @param uri  pointer to an xmlURI
  */
 static void
 xmlCleanURI(xmlURIPtr uri) {
@@ -1455,13 +1404,12 @@ xmlCleanURI(xmlURIPtr uri) {
 }
 
 /**
- * xmlFreeURI:
- * @uri:  pointer to an xmlURI
- *
  * Free up the xmlURI struct
+ *
+ * @param uri  pointer to an xmlURI
  */
 void
-xmlFreeURI(xmlURIPtr uri) {
+xmlFreeURI(xmlURI *uri) {
     if (uri == NULL) return;
 
     if (uri->scheme != NULL) xmlFree(uri->scheme);
@@ -1498,13 +1446,11 @@ xmlIsPathSeparator(int c, int isFile) {
 }
 
 /**
- * xmlNormalizePath:
- * @path:  pointer to the path string
- * @isFile:  true for filesystem paths, false for URIs
- *
  * Normalize a filesystem path or URI.
  *
- * Returns 0 or an error code
+ * @param path  pointer to the path string
+ * @param isFile  true for filesystem paths, false for URIs
+ * @returns 0 or an error code
  */
 static int
 xmlNormalizePath(char *path, int isFile) {
@@ -1597,15 +1543,13 @@ xmlNormalizePath(char *path, int isFile)
 }
 
 /**
- * xmlNormalizeURIPath:
- * @path:  pointer to the path string
- *
  * 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
  *
- * Returns 0 or an error code
+ * @param path  pointer to the path string
+ * @returns 0 or an error code
  */
 int
 xmlNormalizeURIPath(char *path) {
@@ -1621,17 +1565,15 @@ static int is_hex(char c) {
 }
 
 /**
- * xmlURIUnescapeString:
- * @str:  the string to unescape
- * @len:   the length in bytes to unescape (or <= 0 to indicate full string)
- * @target:  optional destination buffer
- *
  * Unescaping routine, but does not check that the string is an URI. The
  * output is a direct unsigned char translation of %XX values (no encoding)
  * Note that the length of the result can only be smaller or same size as
  * the input string.
  *
- * Returns a copy of the string, but unescaped, will return NULL only in case
+ * @param str  the string to unescape
+ * @param len  the length in bytes to unescape (or <= 0 to indicate full string)
+ * @param target  optional destination buffer
+ * @returns a copy of the string, but unescaped, will return NULL only in case
  * of error
  */
 char *
@@ -1683,15 +1625,13 @@ xmlURIUnescapeString(const char *str, in
 }
 
 /**
- * xmlURIEscapeStr:
- * @str:  string to escape
- * @list: exception list string of chars not to escape
- *
  * This routine escapes a string to hex, ignoring unreserved characters
  * a-z, A-Z, 0-9, "-._~", a few sub-delims "!*'()", the gen-delim "@"
  * (why?) and the characters in the exception list.
  *
- * Returns a new escaped string or NULL in case of error.
+ * @param str  string to escape
+ * @param list  exception list string of chars not to escape
+ * @returns a new escaped string or NULL in case of error.
  */
 xmlChar *
 xmlURIEscapeStr(const xmlChar *str, const xmlChar *list) {
@@ -1756,19 +1696,16 @@ xmlURIEscapeStr(const xmlChar *str, cons
 }
 
 /**
- * xmlURIEscape:
- * @str:  the string of the URI to escape
- *
  * Escaping routine, does not do validity checks !
  * It will try to escape the chars needing this, but this is heuristic
  * based it's impossible to be sure.
  *
- * Returns an copy of the string, but escaped
- *
  * 25 May 2001
- * Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly
+ * Uses #xmlParseURI and #xmlURIEscapeStr to try to escape correctly
  * according to RFC2396.
  *   - Carl Douglas
+ * @param str  the string of the URI to escape
+ * @returns an copy of the string, but escaped
  */
 xmlChar *
 xmlURIEscape(const xmlChar * str)
@@ -1912,14 +1849,12 @@ xmlIsAbsolutePath(const xmlChar *path) {
 }
 
 /**
- * xmlResolvePath:
- * @ref:  the filesystem path
- * @base:  the base value
- * @out:  pointer to result URI
- *
  * Resolves a filesystem path from a base path.
  *
- * Returns 0 on success, -1 if a memory allocation failed or an error
+ * @param escRef  the filesystem path
+ * @param base  the base value
+ * @param out  pointer to result URI
+ * @returns 0 on success, -1 if a memory allocation failed or an error
  * code if URI or base are invalid.
  */
 static int
@@ -2016,11 +1951,6 @@ err_memory:
 }
 
 /**
- * xmlBuildURISafe:
- * @URI:  the URI instance found in the document
- * @base:  the base value
- * @valPtr:  pointer to result URI
- *
  * 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
@@ -2028,9 +1958,12 @@ err_memory:
  *
  * 5.2. Resolving Relative References to Absolute Form
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 on success, -1 if a memory allocation failed or an error
+ * @param URI  the URI instance found in the document
+ * @param base  the base value
+ * @param valPtr  pointer to result URI
+ * @returns 0 on success, -1 if a memory allocation failed or an error
  * code if URI or base are invalid.
  */
 int
@@ -2385,10 +2318,6 @@ done:
 }
 
 /**
- * xmlBuildURI:
- * @URI:  the URI instance found in the document
- * @base:  the base value
- *
  * 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
@@ -2396,7 +2325,9 @@ done:
  *
  * 5.2. Resolving Relative References to Absolute Form
  *
- * Returns a new URI string (to be freed by the caller) or NULL in case
+ * @param URI  the URI instance found in the document
+ * @param base  the base value
+ * @returns a new URI string (to be freed by the caller) or NULL in case
  *         of error.
  */
 xmlChar *
@@ -2531,11 +2462,6 @@ done:
 }
 
 /**
- * xmlBuildRelativeURISafe:
- * @URI:  the URI reference under consideration
- * @base:  the base value
- * @valPtr:  pointer to result URI
- *
  * Expresses the URI of the reference in terms relative to the
  * base. Some examples of this operation include:
  *
@@ -2551,9 +2477,12 @@ done:
  *     img/pic1.gif                     ../img/pic1.gif
  *     http://site1.com/docs/pic1.gif   http://site1.com/docs/pic1.gif
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns 0 on success, -1 if a memory allocation failed or an error
+ * @param URI  the URI reference under consideration
+ * @param base  the base value
+ * @param valPtr  pointer to result URI
+ * @returns 0 on success, -1 if a memory allocation failed or an error
  * code if URI or base are invalid.
  */
 int
@@ -2773,14 +2702,12 @@ done:
     return(ret);
 }
 
-/*
- * xmlBuildRelativeURI:
- * @URI:  the URI reference under consideration
- * @base:  the base value
- *
- * See xmlBuildRelativeURISafe.
+/**
+ * See #xmlBuildRelativeURISafe.
  *
- * Returns a new URI string (to be freed by the caller) or NULL in case
+ * @param URI  the URI reference under consideration
+ * @param base  the base value
+ * @returns a new URI string (to be freed by the caller) or NULL in case
  * error.
  */
 xmlChar *
@@ -2793,9 +2720,6 @@ xmlBuildRelativeURI(const xmlChar * URI,
 }
 
 /**
- * xmlCanonicPath:
- * @path:  the resource locator in a filesystem notation
- *
  * Prepares a path.
  *
  * If the path contains the substring "://", it is considered a
@@ -2809,7 +2733,8 @@ xmlBuildRelativeURI(const xmlChar * URI,
  * by the returned string. If there is insufficient memory available, or the
  * argument is NULL, the function returns NULL.
  *
- * Returns the escaped path.
+ * @param path  the resource locator in a filesystem notation
+ * @returns the escaped path.
  */
 xmlChar *
 xmlCanonicPath(const xmlChar *path)
@@ -2837,12 +2762,10 @@ xmlCanonicPath(const xmlChar *path)
 }
 
 /**
- * xmlPathToURI:
- * @path:  the resource locator in a filesystem notation
- *
  * Constructs an URI expressing the existing path
  *
- * Returns a new URI, or a duplicate of the path parameter if the
+ * @param path  the resource locator in a filesystem notation
+ * @returns a new URI, 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.
diff -pruN 2.14.6+dfsg-0.1/valid.c 2.15.0+dfsg-0.3/valid.c
--- 2.14.6+dfsg-0.1/valid.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/valid.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -45,11 +45,9 @@ xmlValidateAttributeValueInternal(xmlDoc
  ************************************************************************/
 
 /**
- * xmlVErrMemory:
- * @ctxt:  an XML validation parser context
- * @extra:  extra information
- *
  * Handle an out of memory error
+ *
+ * @param ctxt  an XML validation parser context
  */
 static void
 xmlVErrMemory(xmlValidCtxtPtr ctxt)
@@ -66,7 +64,10 @@ xmlVErrMemory(xmlValidCtxtPtr ctxt)
     }
 }
 
-static void
+/*
+ * @returns 0 on success, -1 if a memory allocation failed
+ */
+static int
 xmlDoErrValid(xmlValidCtxtPtr ctxt, xmlNodePtr node,
               xmlParserErrors code, int level,
               const xmlChar *str1, const xmlChar *str2, const xmlChar *str3,
@@ -74,9 +75,10 @@ xmlDoErrValid(xmlValidCtxtPtr ctxt, xmlN
               const char *msg, ...) {
     xmlParserCtxtPtr pctxt = NULL;
     va_list ap;
+    int ret = 0;
 
     if (ctxt == NULL)
-        return;
+        return -1;
     if (ctxt->flags & XML_VCTXT_USE_PCTXT)
         pctxt = ctxt->userData;
 
@@ -84,6 +86,8 @@ xmlDoErrValid(xmlValidCtxtPtr ctxt, xmlN
     if (pctxt != NULL) {
         xmlCtxtVErr(pctxt, node, XML_FROM_VALID, code, level,
                     str1, str2, str3, int1, msg, ap);
+        if (pctxt->errNo == XML_ERR_NO_MEMORY)
+            ret = -1;
     } else {
         xmlGenericErrorFunc channel = NULL;
         void *data = NULL;
@@ -98,39 +102,26 @@ xmlDoErrValid(xmlValidCtxtPtr ctxt, xmlN
                              (const char *) str1, (const char *) str2,
                              (const char *) str2, int1, 0,
                              msg, ap);
-        if (res < 0)
+        if (res < 0) {
             xmlVErrMemory(ctxt);
+            ret = -1;
+        }
     }
     va_end(ap);
-}
 
-/**
- * xmlErrValid:
- * @ctxt:  an XML validation parser context
- * @error:  the error number
- * @extra:  extra information
- *
- * Handle a validation error
- */
-static void LIBXML_ATTR_FORMAT(3,0)
-xmlErrValid(xmlValidCtxtPtr ctxt, xmlParserErrors error,
-            const char *msg, const char *extra)
-{
-    xmlDoErrValid(ctxt, NULL, error, XML_ERR_ERROR, (const xmlChar *) extra,
-                  NULL, NULL, 0, msg, extra);
+    return ret;
 }
 
-#ifdef LIBXML_VALID_ENABLED
 /**
- * xmlErrValidNode:
- * @ctxt:  an XML validation parser context
- * @node:  the node raising the error
- * @error:  the error number
- * @str1:  extra information
- * @str2:  extra information
- * @str3:  extra information
- *
  * Handle a validation error, provide contextual information
+ *
+ * @param ctxt  an XML validation parser context
+ * @param node  the node raising the error
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra information
+ * @param str2  extra information
+ * @param str3  extra information
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidNode(xmlValidCtxtPtr ctxt,
@@ -142,16 +133,33 @@ xmlErrValidNode(xmlValidCtxtPtr ctxt,
                   msg, str1, str2, str3);
 }
 
+#ifdef LIBXML_VALID_ENABLED
 /**
- * xmlErrValidNodeNr:
- * @ctxt:  an XML validation parser context
- * @node:  the node raising the error
- * @error:  the error number
- * @str1:  extra information
- * @int2:  extra information
- * @str3:  extra information
+ * Handle a validation error
  *
+ * @param ctxt  an XML validation parser context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param extra  extra information
+ */
+static void LIBXML_ATTR_FORMAT(3,0)
+xmlErrValid(xmlValidCtxtPtr ctxt, xmlParserErrors error,
+            const char *msg, const char *extra)
+{
+    xmlDoErrValid(ctxt, NULL, error, XML_ERR_ERROR, (const xmlChar *) extra,
+                  NULL, NULL, 0, msg, extra);
+}
+
+/**
  * Handle a validation error, provide contextual information
+ *
+ * @param ctxt  an XML validation parser context
+ * @param node  the node raising the error
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra information
+ * @param int2  extra information
+ * @param str3  extra information
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidNodeNr(xmlValidCtxtPtr ctxt,
@@ -164,24 +172,25 @@ xmlErrValidNodeNr(xmlValidCtxtPtr ctxt,
 }
 
 /**
- * xmlErrValidWarning:
- * @ctxt:  an XML validation parser context
- * @node:  the node raising the error
- * @error:  the error number
- * @str1:  extra information
- * @str2:  extra information
- * @str3:  extra information
- *
  * Handle a validation error, provide contextual information
+ *
+ * @param ctxt  an XML validation parser context
+ * @param node  the node raising the error
+ * @param error  the error number
+ * @param msg  the error message
+ * @param str1  extra information
+ * @param str2  extra information
+ * @param str3  extra information
+ * @returns 0 on success, -1 if a memory allocation failed
  */
-static void LIBXML_ATTR_FORMAT(4,0)
+static int LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidWarning(xmlValidCtxtPtr ctxt,
                 xmlNodePtr node, xmlParserErrors error,
                 const char *msg, const xmlChar * str1,
                 const xmlChar * str2, const xmlChar * str3)
 {
-    xmlDoErrValid(ctxt, node, error, XML_ERR_WARNING, str1, str2, str3, 0,
-                  msg, str1, str2, str3);
+    return xmlDoErrValid(ctxt, node, error, XML_ERR_WARNING, str1, str2, str3,
+                         0, msg, str1, str2, str3);
 }
 
 
@@ -419,14 +428,12 @@ nodeVPop(xmlValidCtxtPtr ctxt)
  ************************************************************************/
 
 /**
- * xmlValidBuildAContentModel:
- * @content:  the content model
- * @ctxt:  the schema parser context
- * @name:  the element name whose content is being built
- *
  * Generate the automata sequence needed for that type
  *
- * Returns 1 if successful or 0 in case of error.
+ * @param content  the content model
+ * @param ctxt  the schema parser context
+ * @param name  the element name whose content is being built
+ * @returns 1 if successful or 0 in case of error.
  */
 static int
 xmlValidBuildAContentModel(xmlElementContentPtr content,
@@ -577,19 +584,17 @@ xmlValidBuildAContentModel(xmlElementCon
     return(1);
 }
 /**
- * xmlValidBuildContentModel:
- * @ctxt:  a validation context
- * @elem:  an element declaration node
- *
- * DEPRECATED: Internal function, don't use.
- *
  * (Re)Build the automata associated to the content model of this
  * element
  *
- * Returns 1 in case of success, 0 in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  a validation context
+ * @param elem  an element declaration node
+ * @returns 1 in case of success, 0 in case of error
  */
 int
-xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, xmlElementPtr elem) {
+xmlValidBuildContentModel(xmlValidCtxt *ctxt, xmlElement *elem) {
     int ret = 0;
 
     if ((ctxt == NULL) || (elem == NULL))
@@ -651,13 +656,12 @@ done:
  ****************************************************************/
 
 /**
- * xmlNewValidCtxt:
- *
  * Allocate a validation context structure.
  *
- * Returns NULL if not, otherwise the new validation context structure
+ * @returns the new validation context or NULL if a memory
+ * allocation failed.
  */
-xmlValidCtxtPtr xmlNewValidCtxt(void) {
+xmlValidCtxt *xmlNewValidCtxt(void) {
     xmlValidCtxtPtr ret;
 
     ret = xmlMalloc(sizeof (xmlValidCtxt));
@@ -665,18 +669,18 @@ xmlValidCtxtPtr xmlNewValidCtxt(void) {
 	return (NULL);
 
     (void) memset(ret, 0, sizeof (xmlValidCtxt));
+    ret->flags |= XML_VCTXT_VALIDATE;
 
     return (ret);
 }
 
 /**
- * xmlFreeValidCtxt:
- * @cur:  the validation context to free
- *
  * Free a validation context structure.
+ *
+ * @param cur  the validation context to free
  */
 void
-xmlFreeValidCtxt(xmlValidCtxtPtr cur) {
+xmlFreeValidCtxt(xmlValidCtxt *cur) {
     if (cur == NULL)
         return;
     if (cur->vstateTab != NULL)
@@ -689,19 +693,18 @@ xmlFreeValidCtxt(xmlValidCtxtPtr cur) {
 #endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmlNewDocElementContent:
- * @doc:  the document
- * @name:  the subelement name or NULL
- * @type:  the type of element content decl
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Allocate an element content structure for the document.
  *
- * Returns NULL if not, otherwise the new element content structure
+ * @deprecated Internal function, don't use.
+ *
+ * @param doc  the document
+ * @param name  the subelement name or NULL
+ * @param type  the type of element content decl
+ * @returns the new element content structure or NULL on
+ * error.
  */
-xmlElementContentPtr
-xmlNewDocElementContent(xmlDocPtr doc, const xmlChar *name,
+xmlElementContent *
+xmlNewDocElementContent(xmlDoc *doc, const xmlChar *name,
                         xmlElementContentType type) {
     xmlElementContentPtr ret;
     xmlDictPtr dict = NULL;
@@ -709,29 +712,6 @@ xmlNewDocElementContent(xmlDocPtr doc, c
     if (doc != NULL)
         dict = doc->dict;
 
-    switch(type) {
-	case XML_ELEMENT_CONTENT_ELEMENT:
-	    if (name == NULL) {
-	        xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
-			"xmlNewElementContent : name == NULL !\n",
-			NULL);
-	    }
-	    break;
-        case XML_ELEMENT_CONTENT_PCDATA:
-	case XML_ELEMENT_CONTENT_SEQ:
-	case XML_ELEMENT_CONTENT_OR:
-	    if (name != NULL) {
-	        xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
-			"xmlNewElementContent : name != NULL !\n",
-			NULL);
-	    }
-	    break;
-	default:
-	    xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
-		    "Internal: ELEMENT content corrupted invalid type\n",
-		    NULL);
-	    return(NULL);
-    }
     ret = (xmlElementContentPtr) xmlMalloc(sizeof(xmlElementContent));
     if (ret == NULL)
 	return(NULL);
@@ -770,35 +750,32 @@ error:
 }
 
 /**
- * xmlNewElementContent:
- * @name:  the subelement name or NULL
- * @type:  the type of element content decl
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Allocate an element content structure.
- * Deprecated in favor of xmlNewDocElementContent
+ * Deprecated in favor of #xmlNewDocElementContent
+ *
+ * @deprecated Internal function, don't use.
  *
- * Returns NULL if not, otherwise the new element content structure
+ * @param name  the subelement name or NULL
+ * @param type  the type of element content decl
+ * @returns the new element content structure or NULL on
+ * error.
  */
-xmlElementContentPtr
+xmlElementContent *
 xmlNewElementContent(const xmlChar *name, xmlElementContentType type) {
     return(xmlNewDocElementContent(NULL, name, type));
 }
 
 /**
- * xmlCopyDocElementContent:
- * @doc:  the document owning the element declaration
- * @cur:  An element content pointer.
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Build a copy of an element content description.
  *
- * Returns the new xmlElementContentPtr or NULL in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param doc  the document owning the element declaration
+ * @param cur  An element content pointer.
+ * @returns the new xmlElementContent or NULL in case of error.
  */
-xmlElementContentPtr
-xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
+xmlElementContent *
+xmlCopyDocElementContent(xmlDoc *doc, xmlElementContent *cur) {
     xmlElementContentPtr ret = NULL, prev = NULL, tmp;
     xmlDictPtr dict = NULL;
 
@@ -883,32 +860,29 @@ error:
 }
 
 /**
- * xmlCopyElementContent:
- * @cur:  An element content pointer.
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Build a copy of an element content description.
- * Deprecated, use xmlCopyDocElementContent instead
+ * Deprecated, use #xmlCopyDocElementContent instead
+ *
+ * @deprecated Internal function, don't use.
  *
- * Returns the new xmlElementContentPtr or NULL in case of error.
+ * @param cur  An element content pointer.
+ * @returns the new xmlElementContent or NULL in case of error.
  */
-xmlElementContentPtr
-xmlCopyElementContent(xmlElementContentPtr cur) {
+xmlElementContent *
+xmlCopyElementContent(xmlElementContent *cur) {
     return(xmlCopyDocElementContent(NULL, cur));
 }
 
 /**
- * xmlFreeDocElementContent:
- * @doc: the document owning the element declaration
- * @cur:  the element content tree to free
+ * Free an element content structure. The whole subtree is removed.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Free an element content structure. The whole subtree is removed.
+ * @param doc  the document owning the element declaration
+ * @param cur  the element content tree to free
  */
 void
-xmlFreeDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur) {
+xmlFreeDocElementContent(xmlDoc *doc, xmlElementContent *cur) {
     xmlDictPtr dict = NULL;
     size_t depth = 0;
 
@@ -925,18 +899,6 @@ xmlFreeDocElementContent(xmlDocPtr doc,
             depth += 1;
         }
 
-	switch (cur->type) {
-	    case XML_ELEMENT_CONTENT_PCDATA:
-	    case XML_ELEMENT_CONTENT_ELEMENT:
-	    case XML_ELEMENT_CONTENT_SEQ:
-	    case XML_ELEMENT_CONTENT_OR:
-		break;
-	    default:
-		xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
-			"Internal: ELEMENT content corrupted invalid type\n",
-			NULL);
-		return;
-	}
 	if (dict) {
 	    if ((cur->name != NULL) && (!xmlDictOwns(dict, cur->name)))
 	        xmlFree((xmlChar *) cur->name);
@@ -967,51 +929,48 @@ xmlFreeDocElementContent(xmlDocPtr doc,
 }
 
 /**
- * xmlFreeElementContent:
- * @cur:  the element content tree to free
+ * Free an element content structure. The whole subtree is removed.
+ * Deprecated, use #xmlFreeDocElementContent instead
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Free an element content structure. The whole subtree is removed.
- * Deprecated, use xmlFreeDocElementContent instead
+ * @param cur  the element content tree to free
  */
 void
-xmlFreeElementContent(xmlElementContentPtr cur) {
+xmlFreeElementContent(xmlElementContent *cur) {
     xmlFreeDocElementContent(NULL, cur);
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlSprintfElementContent:
- * @buf:  an output buffer
- * @content:  An element table
- * @englob: 1 if one must print the englobing parenthesis, 0 otherwise
+ * Deprecated, unsafe, use #xmlSnprintfElementContent
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Deprecated, unsafe, use xmlSnprintfElementContent
+ * @param buf  an output buffer
+ * @param content  An element table
+ * @param englob  1 if one must print the englobing parenthesis, 0 otherwise
  */
 void
 xmlSprintfElementContent(char *buf ATTRIBUTE_UNUSED,
-	                 xmlElementContentPtr content ATTRIBUTE_UNUSED,
+	                 xmlElementContent *content ATTRIBUTE_UNUSED,
 			 int englob ATTRIBUTE_UNUSED) {
 }
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlSnprintfElementContent:
- * @buf:  an output buffer
- * @size:  the buffer size
- * @content:  An element table
- * @englob: 1 if one must print the englobing parenthesis, 0 otherwise
- *
- * DEPRECATED: Internal function, don't use.
- *
  * This will dump the content of the element content definition
  * Intended just for the debug routine
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param buf  an output buffer
+ * @param size  the buffer size
+ * @param content  An element table
+ * @param englob  1 if one must print the englobing parenthesis, 0 otherwise
  */
 void
-xmlSnprintfElementContent(char *buf, int size, xmlElementContentPtr content, int englob) {
+xmlSnprintfElementContent(char *buf, int size, xmlElementContent *content, int englob) {
     int len;
 
     if (content == NULL) return;
@@ -1109,10 +1068,9 @@ xmlSnprintfElementContent(char *buf, int
  ****************************************************************/
 
 /**
- * xmlFreeElement:
- * @elem:  An element
- *
  * Deallocate the memory used by an element definition
+ *
+ * @param elem  an element
  */
 static void
 xmlFreeElement(xmlElementPtr elem) {
@@ -1132,72 +1090,42 @@ xmlFreeElement(xmlElementPtr elem) {
 
 
 /**
- * xmlAddElementDecl:
- * @ctxt:  the validation context
- * @dtd:  pointer to the DTD
- * @name:  the entity name
- * @type:  the element type
- * @content:  the element content tree or NULL
- *
- * Register a new element declaration
- *
- * Returns NULL if not, otherwise the entity
- */
-xmlElementPtr
-xmlAddElementDecl(xmlValidCtxtPtr ctxt,
-                  xmlDtdPtr dtd, const xmlChar *name,
+ * Register a new element declaration.
+ *
+ * @param ctxt  the validation context (optional)
+ * @param dtd  pointer to the DTD
+ * @param name  the entity name
+ * @param type  the element type
+ * @param content  the element content tree or NULL
+ * @returns the entity or NULL on error.
+ */
+xmlElement *
+xmlAddElementDecl(xmlValidCtxt *ctxt,
+                  xmlDtd *dtd, const xmlChar *name,
                   xmlElementTypeVal type,
-		  xmlElementContentPtr content) {
+		  xmlElementContent *content) {
     xmlElementPtr ret;
     xmlElementTablePtr table;
     xmlAttributePtr oldAttributes = NULL;
     const xmlChar *localName;
     xmlChar *prefix = NULL;
 
-    if (dtd == NULL) {
-	return(NULL);
-    }
-    if (name == NULL) {
+    if ((dtd == NULL) || (name == NULL))
 	return(NULL);
-    }
 
     switch (type) {
         case XML_ELEMENT_TYPE_EMPTY:
-	    if (content != NULL) {
-		xmlErrValid(ctxt, XML_DTD_CONTENT_ERROR,
-		        "xmlAddElementDecl: content != NULL for EMPTY\n",
-			NULL);
-		return(NULL);
-	    }
-	    break;
-	case XML_ELEMENT_TYPE_ANY:
-	    if (content != NULL) {
-		xmlErrValid(ctxt, XML_DTD_CONTENT_ERROR,
-		        "xmlAddElementDecl: content != NULL for ANY\n",
-			NULL);
-		return(NULL);
-	    }
-	    break;
-	case XML_ELEMENT_TYPE_MIXED:
-	    if (content == NULL) {
-		xmlErrValid(ctxt, XML_DTD_CONTENT_ERROR,
-		        "xmlAddElementDecl: content == NULL for MIXED\n",
-			NULL);
-		return(NULL);
-	    }
-	    break;
-	case XML_ELEMENT_TYPE_ELEMENT:
-	    if (content == NULL) {
-		xmlErrValid(ctxt, XML_DTD_CONTENT_ERROR,
-		        "xmlAddElementDecl: content == NULL for ELEMENT\n",
-			NULL);
-		return(NULL);
-	    }
-	    break;
-	default:
-	    xmlErrValid(ctxt, XML_ERR_ARGUMENT,
-		    "xmlAddElementDecl: invalid type\n", NULL);
-	    return(NULL);
+        case XML_ELEMENT_TYPE_ANY:
+            if (content != NULL)
+                return(NULL);
+            break;
+        case XML_ELEMENT_TYPE_MIXED:
+        case XML_ELEMENT_TYPE_ELEMENT:
+            if (content == NULL)
+                return(NULL);
+            break;
+        default:
+            return(NULL);
     }
 
     /*
@@ -1248,9 +1176,10 @@ xmlAddElementDecl(xmlValidCtxtPtr ctxt,
 	    /*
 	     * The element is already defined in this DTD.
 	     */
-	    xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ELEM_REDEFINED,
-	                    "Redefinition of element %s\n",
-			    name, NULL, NULL);
+            if ((ctxt != NULL) && (ctxt->flags & XML_VCTXT_VALIDATE))
+                xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ELEM_REDEFINED,
+                                "Redefinition of element %s\n",
+                                name, NULL, NULL);
 #endif /* LIBXML_VALID_ENABLED */
             if (prefix != NULL)
 	        xmlFree(prefix);
@@ -1345,25 +1274,23 @@ xmlFreeElementTableEntry(void *elem, con
 }
 
 /**
- * xmlFreeElementTable:
- * @table:  An element table
+ * Deallocate the memory used by an element hash table.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Deallocate the memory used by an element hash table.
+ * @param table  An element table
  */
 void
-xmlFreeElementTable(xmlElementTablePtr table) {
+xmlFreeElementTable(xmlElementTable *table) {
     xmlHashFree(table, xmlFreeElementTableEntry);
 }
 
 /**
- * xmlCopyElement:
- * @elem:  An element
- *
  * Build a copy of an element.
  *
- * Returns the new xmlElementPtr or NULL in case of error.
+ * @param payload  an element
+ * @param name  unused
+ * @returns the new xmlElement or NULL in case of error.
  */
 static void *
 xmlCopyElement(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -1401,33 +1328,30 @@ error:
 }
 
 /**
- * xmlCopyElementTable:
- * @table:  An element table
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Build a copy of an element table.
  *
- * Returns the new xmlElementTablePtr or NULL in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param table  An element table
+ * @returns the new xmlElementTable or NULL in case of error.
  */
-xmlElementTablePtr
-xmlCopyElementTable(xmlElementTablePtr table) {
+xmlElementTable *
+xmlCopyElementTable(xmlElementTable *table) {
     return(xmlHashCopySafe(table, xmlCopyElement, xmlFreeElementTableEntry));
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlDumpElementDecl:
- * @buf:  the XML buffer output
- * @elem:  An element table
+ * This will dump the content of the element declaration as an XML
+ * DTD definition.
  *
- * DEPRECATED: Use xmlSaveTree.
+ * @deprecated Use #xmlSaveTree.
  *
- * This will dump the content of the element declaration as an XML
- * DTD definition
+ * @param buf  the XML buffer output
+ * @param elem  An element table
  */
 void
-xmlDumpElementDecl(xmlBufferPtr buf, xmlElementPtr elem) {
+xmlDumpElementDecl(xmlBuffer *buf, xmlElement *elem) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (elem == NULL))
@@ -1440,12 +1364,12 @@ xmlDumpElementDecl(xmlBufferPtr buf, xml
 }
 
 /**
- * xmlDumpElementDeclScan:
- * @elem:  An element table
- * @buf:  the XML buffer output
- *
  * This routine is used by the hash scan function.  It just reverses
  * the arguments.
+ *
+ * @param elem  an element declaration
+ * @param save  a save context
+ * @param name  unused
  */
 static void
 xmlDumpElementDeclScan(void *elem, void *save,
@@ -1454,16 +1378,16 @@ xmlDumpElementDeclScan(void *elem, void
 }
 
 /**
- * xmlDumpElementTable:
- * @buf:  the XML buffer output
- * @table:  An element table
+ * This will dump the content of the element table as an XML DTD
+ * definition.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * This will dump the content of the element table as an XML DTD definition
+ * @param buf  the XML buffer output
+ * @param table  An element table
  */
 void
-xmlDumpElementTable(xmlBufferPtr buf, xmlElementTablePtr table) {
+xmlDumpElementTable(xmlBuffer *buf, xmlElementTable *table) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (table == NULL))
@@ -1477,17 +1401,15 @@ xmlDumpElementTable(xmlBufferPtr buf, xm
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlCreateEnumeration:
- * @name:  the enumeration name or NULL
- *
- * DEPRECATED: Internal function, don't use.
+ * Create and initialize an enumeration attribute node.
  *
- * create and initialize an enumeration attribute node.
+ * @deprecated Internal function, don't use.
  *
- * Returns the xmlEnumerationPtr just created or NULL in case
- *                of error.
+ * @param name  the enumeration name or NULL
+ * @returns the xmlEnumeration just created or NULL in case
+ * of error.
  */
-xmlEnumerationPtr
+xmlEnumeration *
 xmlCreateEnumeration(const xmlChar *name) {
     xmlEnumerationPtr ret;
 
@@ -1508,13 +1430,12 @@ xmlCreateEnumeration(const xmlChar *name
 }
 
 /**
- * xmlFreeEnumeration:
- * @cur:  the tree to free.
+ * Free an enumeration attribute node (recursive).
  *
- * free an enumeration attribute node (recursive).
+ * @param cur  the tree to free.
  */
 void
-xmlFreeEnumeration(xmlEnumerationPtr cur) {
+xmlFreeEnumeration(xmlEnumeration *cur) {
     while (cur != NULL) {
         xmlEnumerationPtr next = cur->next;
 
@@ -1526,18 +1447,16 @@ xmlFreeEnumeration(xmlEnumerationPtr cur
 }
 
 /**
- * xmlCopyEnumeration:
- * @cur:  the tree to copy.
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Copy an enumeration attribute node (recursive).
  *
- * Returns the xmlEnumerationPtr just created or NULL in case
- *                of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param cur  the tree to copy.
+ * @returns the xmlEnumeration just created or NULL in case
+ * of error.
  */
-xmlEnumerationPtr
-xmlCopyEnumeration(xmlEnumerationPtr cur) {
+xmlEnumeration *
+xmlCopyEnumeration(xmlEnumeration *cur) {
     xmlEnumerationPtr ret = NULL;
     xmlEnumerationPtr last = NULL;
 
@@ -1564,15 +1483,13 @@ xmlCopyEnumeration(xmlEnumerationPtr cur
 
 #ifdef LIBXML_VALID_ENABLED
 /**
- * xmlScanIDAttributeDecl:
- * @ctxt:  the validation context
- * @elem:  the element name
- * @err: whether to raise errors here
- *
- * Verify that the element don't have too many ID attributes
+ * Verify that the element doesn't have too many ID attributes
  * declared.
  *
- * Returns the number of ID attributes found.
+ * @param ctxt  the validation context
+ * @param elem  the element name
+ * @param err  whether to raise errors here
+ * @returns the number of ID attributes found.
  */
 static int
 xmlScanIDAttributeDecl(xmlValidCtxtPtr ctxt, xmlElementPtr elem, int err) {
@@ -1596,10 +1513,9 @@ xmlScanIDAttributeDecl(xmlValidCtxtPtr c
 #endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmlFreeAttribute:
- * @elem:  An attribute
+ * Deallocate the memory used by an attribute definition.
  *
- * Deallocate the memory used by an attribute definition
+ * @param attr  an attribute
  */
 static void
 xmlFreeAttribute(xmlAttributePtr attr) {
@@ -1620,46 +1536,40 @@ xmlFreeAttribute(xmlAttributePtr attr) {
 	    xmlFree((xmlChar *) attr->name);
         if ((attr->prefix != NULL) && (!xmlDictOwns(dict, attr->prefix)))
 	    xmlFree((xmlChar *) attr->prefix);
-        if ((attr->defaultValue != NULL) &&
-	    (!xmlDictOwns(dict, attr->defaultValue)))
-	    xmlFree((xmlChar *) attr->defaultValue);
     } else {
 	if (attr->elem != NULL)
 	    xmlFree((xmlChar *) attr->elem);
 	if (attr->name != NULL)
 	    xmlFree((xmlChar *) attr->name);
-	if (attr->defaultValue != NULL)
-	    xmlFree((xmlChar *) attr->defaultValue);
 	if (attr->prefix != NULL)
 	    xmlFree((xmlChar *) attr->prefix);
     }
+    if (attr->defaultValue != NULL)
+        xmlFree(attr->defaultValue);
     xmlFree(attr);
 }
 
 
 /**
- * xmlAddAttributeDecl:
- * @ctxt:  the validation context
- * @dtd:  pointer to the DTD
- * @elem:  the element name
- * @name:  the attribute name
- * @ns:  the attribute namespace prefix
- * @type:  the attribute type
- * @def:  the attribute default type
- * @defaultValue:  the attribute default value
- * @tree:  if it's an enumeration, the associated list
- *
- * Register a new attribute declaration
- * Note that @tree becomes the ownership of the DTD
- *
- * Returns NULL if not new, otherwise the attribute decl
- */
-xmlAttributePtr
-xmlAddAttributeDecl(xmlValidCtxtPtr ctxt,
-                    xmlDtdPtr dtd, const xmlChar *elem,
+ * Register a new attribute declaration.
+ *
+ * @param ctxt  the validation context (optional)
+ * @param dtd  pointer to the DTD
+ * @param elem  the element name
+ * @param name  the attribute name
+ * @param ns  the attribute namespace prefix
+ * @param type  the attribute type
+ * @param def  the attribute default type
+ * @param defaultValue  the attribute default value
+ * @param tree  if it's an enumeration, the associated list
+ * @returns the attribute decl or NULL on error.
+ */
+xmlAttribute *
+xmlAddAttributeDecl(xmlValidCtxt *ctxt,
+                    xmlDtd *dtd, const xmlChar *elem,
                     const xmlChar *name, const xmlChar *ns,
 		    xmlAttributeType type, xmlAttributeDefault def,
-		    const xmlChar *defaultValue, xmlEnumerationPtr tree) {
+		    const xmlChar *defaultValue, xmlEnumeration *tree) {
     xmlAttributePtr ret = NULL;
     xmlAttributeTablePtr table;
     xmlElementPtr elemDef;
@@ -1682,37 +1592,8 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt
 	dict = dtd->doc->dict;
 
 #ifdef LIBXML_VALID_ENABLED
-    /*
-     * Check the type and possibly the default value.
-     */
-    switch (type) {
-        case XML_ATTRIBUTE_CDATA:
-	    break;
-        case XML_ATTRIBUTE_ID:
-	    break;
-        case XML_ATTRIBUTE_IDREF:
-	    break;
-        case XML_ATTRIBUTE_IDREFS:
-	    break;
-        case XML_ATTRIBUTE_ENTITY:
-	    break;
-        case XML_ATTRIBUTE_ENTITIES:
-	    break;
-        case XML_ATTRIBUTE_NMTOKEN:
-	    break;
-        case XML_ATTRIBUTE_NMTOKENS:
-	    break;
-        case XML_ATTRIBUTE_ENUMERATION:
-	    break;
-        case XML_ATTRIBUTE_NOTATION:
-	    break;
-	default:
-	    xmlErrValid(ctxt, XML_ERR_ARGUMENT,
-		    "xmlAddAttributeDecl: invalid type\n", NULL);
-	    xmlFreeEnumeration(tree);
-	    return(NULL);
-    }
-    if ((defaultValue != NULL) &&
+    if ((ctxt != NULL) && (ctxt->flags & XML_VCTXT_VALIDATE) &&
+        (defaultValue != NULL) &&
         (!xmlValidateAttributeValueInternal(dtd->doc, type, defaultValue))) {
 	xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_ATTRIBUTE_DEFAULT,
 	                "Attribute %s of %s: invalid default value\n",
@@ -1785,10 +1666,7 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt
     ret->tree = tree;
     tree = NULL;
     if (defaultValue != NULL) {
-        if (dict)
-	    ret->defaultValue = xmlDictLookup(dict, defaultValue, -1);
-	else
-	    ret->defaultValue = xmlStrdup(defaultValue);
+	ret->defaultValue = xmlStrdup(defaultValue);
         if (ret->defaultValue == NULL)
             goto mem_error;
     }
@@ -1809,31 +1687,17 @@ xmlAddAttributeDecl(xmlValidCtxtPtr ctxt
         /*
          * The attribute is already defined in this DTD.
          */
-        xmlErrValidWarning(ctxt, (xmlNodePtr) dtd,
-                XML_DTD_ATTRIBUTE_REDEFINED,
-                "Attribute %s of element %s: already defined\n",
-                name, elem, NULL);
+        if ((ctxt != NULL) && (ctxt->flags & XML_VCTXT_VALIDATE))
+            xmlErrValidWarning(ctxt, (xmlNodePtr) dtd,
+                    XML_DTD_ATTRIBUTE_REDEFINED,
+                    "Attribute %s of element %s: already defined\n",
+                    name, elem, NULL);
 #endif /* LIBXML_VALID_ENABLED */
 	xmlFreeAttribute(ret);
 	return(NULL);
     }
 
     /*
-     * Validity Check:
-     * Multiple ID per element
-     */
-#ifdef LIBXML_VALID_ENABLED
-    if ((type == XML_ATTRIBUTE_ID) &&
-        (xmlScanIDAttributeDecl(ctxt, elemDef, 1) != 0)) {
-        xmlErrValidNode(ctxt, (xmlNodePtr) dtd, XML_DTD_MULTIPLE_ID,
-       "Element %s has too may ID attributes defined : %s\n",
-               elem, name, NULL);
-        if (ctxt != NULL)
-            ctxt->valid = 0;
-    }
-#endif /* LIBXML_VALID_ENABLED */
-
-    /*
      * Insert namespace default def first they need to be
      * processed first.
      */
@@ -1888,25 +1752,23 @@ xmlFreeAttributeTableEntry(void *attr, c
 }
 
 /**
- * xmlFreeAttributeTable:
- * @table:  An attribute table
+ * Deallocate the memory used by an entities hash table.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Deallocate the memory used by an entities hash table.
+ * @param table  An attribute table
  */
 void
-xmlFreeAttributeTable(xmlAttributeTablePtr table) {
+xmlFreeAttributeTable(xmlAttributeTable *table) {
     xmlHashFree(table, xmlFreeAttributeTableEntry);
 }
 
 /**
- * xmlCopyAttribute:
- * @attr:  An attribute
- *
- * Build a copy of an attribute.
+ * Build a copy of an attribute declaration.
  *
- * Returns the new xmlAttributePtr or NULL in case of error.
+ * @param payload  an attribute declaration
+ * @param name  unused
+ * @returns the new xmlAttribute or NULL in case of error.
  */
 static void *
 xmlCopyAttribute(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -1953,34 +1815,31 @@ error:
 }
 
 /**
- * xmlCopyAttributeTable:
- * @table:  An attribute table
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Build a copy of an attribute table.
  *
- * Returns the new xmlAttributeTablePtr or NULL in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param table  An attribute table
+ * @returns the new xmlAttributeTable or NULL in case of error.
  */
-xmlAttributeTablePtr
-xmlCopyAttributeTable(xmlAttributeTablePtr table) {
+xmlAttributeTable *
+xmlCopyAttributeTable(xmlAttributeTable *table) {
     return(xmlHashCopySafe(table, xmlCopyAttribute,
                            xmlFreeAttributeTableEntry));
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlDumpAttributeDecl:
- * @buf:  the XML buffer output
- * @attr:  An attribute declaration
+ * This will dump the content of the attribute declaration as an XML
+ * DTD definition.
  *
- * DEPRECATED: Use xmlSaveTree.
+ * @deprecated Use #xmlSaveTree.
  *
- * This will dump the content of the attribute declaration as an XML
- * DTD definition
+ * @param buf  the XML buffer output
+ * @param attr  An attribute declaration
  */
 void
-xmlDumpAttributeDecl(xmlBufferPtr buf, xmlAttributePtr attr) {
+xmlDumpAttributeDecl(xmlBuffer *buf, xmlAttribute *attr) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (attr == NULL))
@@ -1993,11 +1852,12 @@ xmlDumpAttributeDecl(xmlBufferPtr buf, x
 }
 
 /**
- * xmlDumpAttributeDeclScan:
- * @attr:  An attribute declaration
- * @buf:  the XML buffer output
+ * This is used with the hash scan function - just reverses
+ * arguments.
  *
- * This is used with the hash scan function - just reverses arguments
+ * @param attr  an attribute declaration
+ * @param save  a save context
+ * @param name  unused
  */
 static void
 xmlDumpAttributeDeclScan(void *attr, void *save,
@@ -2006,16 +1866,16 @@ xmlDumpAttributeDeclScan(void *attr, voi
 }
 
 /**
- * xmlDumpAttributeTable:
- * @buf:  the XML buffer output
- * @table:  An attribute table
+ * This will dump the content of the attribute table as an XML
+ * DTD definition.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * This will dump the content of the attribute table as an XML DTD definition
+ * @param buf  the XML buffer output
+ * @param table  an attribute table
  */
 void
-xmlDumpAttributeTable(xmlBufferPtr buf, xmlAttributeTablePtr table) {
+xmlDumpAttributeTable(xmlBuffer *buf, xmlAttributeTable *table) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (table == NULL))
@@ -2034,10 +1894,9 @@ xmlDumpAttributeTable(xmlBufferPtr buf,
  *									*
  ************************************************************************/
 /**
- * xmlFreeNotation:
- * @not:  A notation
+ * Deallocate the memory used by an notation definition.
  *
- * Deallocate the memory used by an notation definition
+ * @param nota  a notation
  */
 static void
 xmlFreeNotation(xmlNotationPtr nota) {
@@ -2053,21 +1912,18 @@ xmlFreeNotation(xmlNotationPtr nota) {
 
 
 /**
- * xmlAddNotationDecl:
- * @dtd:  pointer to the DTD
- * @ctxt:  the validation context
- * @name:  the entity name
- * @PublicID:  the public identifier or NULL
- * @SystemID:  the system identifier or NULL
- *
- * Register a new notation declaration
- *
- * Returns NULL if not, otherwise the entity
- */
-xmlNotationPtr
-xmlAddNotationDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd,
-	           const xmlChar *name,
-                   const xmlChar *PublicID, const xmlChar *SystemID) {
+ * Register a new notation declaration.
+ *
+ * @param ctxt  the validation context (optional)
+ * @param dtd  pointer to the DTD
+ * @param name  the entity name
+ * @param publicId  the public identifier or NULL
+ * @param systemId  the system identifier or NULL
+ * @returns the notation or NULL on error.
+ */
+xmlNotation *
+xmlAddNotationDecl(xmlValidCtxt *ctxt, xmlDtd *dtd, const xmlChar *name,
+                   const xmlChar *publicId, const xmlChar *systemId) {
     xmlNotationPtr ret = NULL;
     xmlNotationTablePtr table;
     int res;
@@ -2078,7 +1934,7 @@ xmlAddNotationDecl(xmlValidCtxtPtr ctxt,
     if (name == NULL) {
 	return(NULL);
     }
-    if ((PublicID == NULL) && (SystemID == NULL)) {
+    if ((publicId == NULL) && (systemId == NULL)) {
 	return(NULL);
     }
 
@@ -2107,13 +1963,13 @@ xmlAddNotationDecl(xmlValidCtxtPtr ctxt,
     ret->name = xmlStrdup(name);
     if (ret->name == NULL)
         goto mem_error;
-    if (SystemID != NULL) {
-        ret->SystemID = xmlStrdup(SystemID);
+    if (systemId != NULL) {
+        ret->SystemID = xmlStrdup(systemId);
         if (ret->SystemID == NULL)
             goto mem_error;
     }
-    if (PublicID != NULL) {
-        ret->PublicID = xmlStrdup(PublicID);
+    if (publicId != NULL) {
+        ret->PublicID = xmlStrdup(publicId);
         if (ret->PublicID == NULL)
             goto mem_error;
     }
@@ -2127,9 +1983,10 @@ xmlAddNotationDecl(xmlValidCtxtPtr ctxt,
         if (res < 0)
             goto mem_error;
 #ifdef LIBXML_VALID_ENABLED
-        xmlErrValid(ctxt, XML_DTD_NOTATION_REDEFINED,
-                    "xmlAddNotationDecl: %s already defined\n",
-                    (const char *) name);
+        if ((ctxt != NULL) && (ctxt->flags & XML_VCTXT_VALIDATE))
+            xmlErrValid(ctxt, XML_DTD_NOTATION_REDEFINED,
+                        "xmlAddNotationDecl: %s already defined\n",
+                        (const char *) name);
 #endif /* LIBXML_VALID_ENABLED */
 	xmlFreeNotation(ret);
 	return(NULL);
@@ -2148,25 +2005,23 @@ xmlFreeNotationTableEntry(void *nota, co
 }
 
 /**
- * xmlFreeNotationTable:
- * @table:  An notation table
+ * Deallocate the memory used by an entities hash table.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Deallocate the memory used by an entities hash table.
+ * @param table  An notation table
  */
 void
-xmlFreeNotationTable(xmlNotationTablePtr table) {
+xmlFreeNotationTable(xmlNotationTable *table) {
     xmlHashFree(table, xmlFreeNotationTableEntry);
 }
 
 /**
- * xmlCopyNotation:
- * @nota:  A notation
- *
  * Build a copy of a notation.
  *
- * Returns the new xmlNotationPtr or NULL in case of error.
+ * @param payload  a notation
+ * @param name  unused
+ * @returns the new xmlNotation or NULL in case of error.
  */
 static void *
 xmlCopyNotation(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -2200,32 +2055,30 @@ error:
 }
 
 /**
- * xmlCopyNotationTable:
- * @table:  A notation table
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Build a copy of a notation table.
  *
- * Returns the new xmlNotationTablePtr or NULL in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param table  A notation table
+ * @returns the new xmlNotationTable or NULL in case of error.
  */
-xmlNotationTablePtr
-xmlCopyNotationTable(xmlNotationTablePtr table) {
+xmlNotationTable *
+xmlCopyNotationTable(xmlNotationTable *table) {
     return(xmlHashCopySafe(table, xmlCopyNotation, xmlFreeNotationTableEntry));
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlDumpNotationDecl:
- * @buf:  the XML buffer output
- * @nota:  A notation declaration
+ * This will dump the content the notation declaration as an XML
+ * DTD definition.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * This will dump the content the notation declaration as an XML DTD definition
+ * @param buf  the XML buffer output
+ * @param nota  A notation declaration
  */
 void
-xmlDumpNotationDecl(xmlBufferPtr buf, xmlNotationPtr nota) {
+xmlDumpNotationDecl(xmlBuffer *buf, xmlNotation *nota) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (nota == NULL))
@@ -2238,16 +2091,16 @@ xmlDumpNotationDecl(xmlBufferPtr buf, xm
 }
 
 /**
- * xmlDumpNotationTable:
- * @buf:  the XML buffer output
- * @table:  A notation table
+ * This will dump the content of the notation table as an XML
+ * DTD definition.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * This will dump the content of the notation table as an XML DTD definition
+ * @param buf  the XML buffer output
+ * @param table  A notation table
  */
 void
-xmlDumpNotationTable(xmlBufferPtr buf, xmlNotationTablePtr table) {
+xmlDumpNotationTable(xmlBuffer *buf, xmlNotationTable *table) {
     xmlSaveCtxtPtr save;
 
     if ((buf == NULL) || (table == NULL))
@@ -2265,12 +2118,12 @@ xmlDumpNotationTable(xmlBufferPtr buf, x
  *				IDs					*
  *									*
  ************************************************************************/
+
 /**
- * DICT_FREE:
- * @str:  a string
- *
- * Free a string if it is not owned by the "dict" dictionary in the
+ * Free a string if it is not owned by the dictionary in the
  * current scope
+ *
+ * @param str  a string
  */
 #define DICT_FREE(str)						\
 	if ((str) && ((!dict) ||				\
@@ -2290,10 +2143,9 @@ xmlIsStreaming(xmlValidCtxtPtr ctxt) {
 }
 
 /**
- * xmlFreeID:
- * @not:  A id
+ * Deallocate the memory used by an id definition.
  *
- * Deallocate the memory used by an id definition
+ * @param id  an id
  */
 static void
 xmlFreeID(xmlIDPtr id) {
@@ -2305,7 +2157,7 @@ xmlFreeID(xmlIDPtr id) {
         dict = id->doc->dict;
 
     if (id->value != NULL)
-	DICT_FREE(id->value)
+	xmlFree(id->value);
     if (id->name != NULL)
 	DICT_FREE(id->name)
     if (id->attr != NULL) {
@@ -2318,14 +2170,12 @@ xmlFreeID(xmlIDPtr id) {
 
 
 /**
- * xmlAddIDInternal:
- * @attr:  the attribute holding the ID
- * @value:  the attribute (ID) value
- * @idPtr:  pointer to resulting ID
- *
- * Register a new id declaration
+ * Add an attribute to the docment's ID table.
  *
- * Returns 1 on success, 0 if the ID already exists, -1 if a memory
+ * @param attr  the attribute holding the ID
+ * @param value  the attribute (ID) value
+ * @param idPtr  pointer to resulting ID
+ * @returns 1 on success, 0 if the ID already exists, -1 if a memory
  * allocation fails.
  */
 static int
@@ -2351,7 +2201,7 @@ xmlAddIDInternal(xmlAttrPtr attr, const
      */
     table = (xmlIDTablePtr) doc->ids;
     if (table == NULL)  {
-        doc->ids = table = xmlHashCreateDict(0, doc->dict);
+        doc->ids = table = xmlHashCreate(0);
         if (table == NULL)
             return(-1);
     } else {
@@ -2396,36 +2246,32 @@ xmlAddIDInternal(xmlAttrPtr attr, const
 }
 
 /**
- * xmlAddIDSafe:
- * @attr:  the attribute holding the ID
- * @value:  the attribute (ID) value
+ * Add an attribute to the docment's ID table.
  *
- * Register a new id declaration
+ * @since 2.13.0
  *
- * Available since 2.13.0.
- *
- * Returns 1 on success, 0 if the ID already exists, -1 if a memory
+ * @param attr  the attribute holding the ID
+ * @param value  the attribute (ID) value
+ * @returns 1 on success, 0 if the ID already exists, -1 if a memory
  * allocation fails.
  */
 int
-xmlAddIDSafe(xmlAttrPtr attr, const xmlChar *value) {
+xmlAddIDSafe(xmlAttr *attr, const xmlChar *value) {
     return(xmlAddIDInternal(attr, value, NULL));
 }
 
 /**
- * xmlAddID:
- * @ctxt:  the validation context
- * @doc:  pointer to the document
- * @value:  the value name
- * @attr:  the attribute holding the ID
- *
- * Register a new id declaration
- *
- * Returns NULL if not, otherwise the new xmlIDPtr
- */
-xmlIDPtr
-xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
-         xmlAttrPtr attr) {
+ * Add an attribute to the docment's ID table.
+ *
+ * @param ctxt  the validation context (optional)
+ * @param doc  pointer to the document, must equal `attr->doc`
+ * @param value  the attribute (ID) value
+ * @param attr  the attribute holding the ID
+ * @returns the new xmlID or NULL on error.
+ */
+xmlID *
+xmlAddID(xmlValidCtxt *ctxt, xmlDoc *doc, const xmlChar *value,
+         xmlAttr *attr) {
     xmlIDPtr id;
     int res;
 
@@ -2436,7 +2282,6 @@ xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr
     if (res < 0) {
         xmlVErrMemory(ctxt);
     }
-#ifdef LIBXML_VALID_ENABLED
     else if (res == 0) {
         if (ctxt != NULL) {
             /*
@@ -2446,7 +2291,6 @@ xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr
                             "ID %s already defined\n", value, NULL, NULL);
         }
     }
-#endif /* LIBXML_VALID_ENABLED */
 
     return(id);
 }
@@ -2457,32 +2301,29 @@ xmlFreeIDTableEntry(void *id, const xmlC
 }
 
 /**
- * xmlFreeIDTable:
- * @table:  An id table
- *
  * Deallocate the memory used by an ID hash table.
+ *
+ * @param table  An id table
  */
 void
-xmlFreeIDTable(xmlIDTablePtr table) {
+xmlFreeIDTable(xmlIDTable *table) {
     xmlHashFree(table, xmlFreeIDTableEntry);
 }
 
 /**
- * xmlIsID:
- * @doc:  the document
- * @elem:  the element carrying the attribute
- * @attr:  the attribute
- *
  * 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
+ * then this is done if DTD loading has been requested. In case
+ * of HTML documents parsed with the HTML parser, ID detection is
  * done systematically.
  *
- * Returns 0 or 1 depending on the lookup result or -1 if a memory allocation
- * failed.
+ * @param doc  the document
+ * @param elem  the element carrying the attribute
+ * @param attr  the attribute
+ * @returns 0 or 1 depending on the lookup result or -1 if a memory
+ * allocation failed.
  */
 int
-xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
+xmlIsID(xmlDoc *doc, xmlNode *elem, xmlAttr *attr) {
     if ((attr == NULL) || (attr->name == NULL))
         return(0);
 
@@ -2543,16 +2384,14 @@ xmlIsID(xmlDocPtr doc, xmlNodePtr elem,
 }
 
 /**
- * xmlRemoveID:
- * @doc:  the document
- * @attr:  the attribute
- *
- * Remove the given attribute from the ID table maintained internally.
+ * Remove the given attribute from the document's ID table.
  *
- * Returns -1 if the lookup failed and 0 otherwise
+ * @param doc  the document
+ * @param attr  the attribute
+ * @returns -1 if the lookup failed and 0 otherwise.
  */
 int
-xmlRemoveID(xmlDocPtr doc, xmlAttrPtr attr) {
+xmlRemoveID(xmlDoc *doc, xmlAttr *attr) {
     xmlIDTablePtr table;
 
     if (doc == NULL) return(-1);
@@ -2569,16 +2408,15 @@ xmlRemoveID(xmlDocPtr doc, xmlAttrPtr at
 }
 
 /**
- * xmlGetID:
- * @doc:  pointer to the document
- * @ID:  the ID value
- *
- * Search the attribute declaring the given ID
+ * Search the document's ID table for the attribute with the
+ * given ID.
  *
- * Returns NULL if not found, otherwise the xmlAttrPtr defining the ID
+ * @param doc  pointer to the document
+ * @param ID  the ID value
+ * @returns the attribute or NULL if not found.
  */
-xmlAttrPtr
-xmlGetID(xmlDocPtr doc, const xmlChar *ID) {
+xmlAttr *
+xmlGetID(xmlDoc *doc, const xmlChar *ID) {
     xmlIDTablePtr table;
     xmlIDPtr id;
 
@@ -2629,10 +2467,9 @@ typedef struct xmlValidateMemo_t
 typedef xmlValidateMemo *xmlValidateMemoPtr;
 
 /**
- * xmlFreeRef:
- * @lk:  A list link
+ * Deallocate the memory used by a ref definition.
  *
- * Deallocate the memory used by a ref definition
+ * @param lk  A list link
  */
 static void
 xmlFreeRef(xmlLinkPtr lk) {
@@ -2646,10 +2483,10 @@ xmlFreeRef(xmlLinkPtr lk) {
 }
 
 /**
- * xmlFreeRefTableEntry:
- * @list_ref:  A list of references.
+ * Deallocate the memory used by a list of references.
  *
- * Deallocate the memory used by a list of references
+ * @param payload  A list of references.
+ * @param name  unused
  */
 static void
 xmlFreeRefTableEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) {
@@ -2659,11 +2496,9 @@ xmlFreeRefTableEntry(void *payload, cons
 }
 
 /**
- * xmlWalkRemoveRef:
- * @data:  Contents of current link
- * @user:  Value supplied by the user
- *
- * Returns 0 to abort the walk or 1 to continue
+ * @param data  Contents of current link
+ * @param user  Value supplied by the user
+ * @returns 0 to abort the walk or 1 to continue.
  */
 static int
 xmlWalkRemoveRef(const void *data, void *user)
@@ -2680,11 +2515,11 @@ xmlWalkRemoveRef(const void *data, void
 }
 
 /**
- * xmlDummyCompare
- * @data0:  Value supplied by the user
- * @data1:  Value supplied by the user
+ * Do nothing. Used to create unordered lists.
  *
- * Do nothing, return 0. Used to create unordered lists.
+ * @param data0  Value supplied by the user
+ * @param data1  Value supplied by the user
+ * @returns 0
  */
 static int
 xmlDummyCompare(const void *data0 ATTRIBUTE_UNUSED,
@@ -2694,21 +2529,20 @@ xmlDummyCompare(const void *data0 ATTRIB
 }
 
 /**
- * xmlAddRef:
- * @ctxt:  the validation context
- * @doc:  pointer to the document
- * @value:  the value name
- * @attr:  the attribute holding the Ref
- *
- * DEPRECATED, do not use. This function will be removed from the public API.
+ * Register a new ref declaration.
  *
- * Register a new ref declaration
+ * @deprecated Don't use. This function will be removed from the
+ * public API.
  *
- * Returns NULL if not, otherwise the new xmlRefPtr
- */
-xmlRefPtr
-xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
-    xmlAttrPtr attr) {
+ * @param ctxt  the validation context
+ * @param doc  pointer to the document
+ * @param value  the value name
+ * @param attr  the attribute holding the Ref
+ * @returns the new xmlRef or NULL o error.
+ */
+xmlRef *
+xmlAddRef(xmlValidCtxt *ctxt, xmlDoc *doc, const xmlChar *value,
+    xmlAttr *attr) {
     xmlRefPtr ret = NULL;
     xmlRefTablePtr table;
     xmlListPtr ref_list;
@@ -2728,7 +2562,7 @@ xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPt
      */
     table = (xmlRefTablePtr) doc->refs;
     if (table == NULL) {
-        doc->refs = table = xmlHashCreateDict(0, doc->dict);
+        doc->refs = table = xmlHashCreate(0);
         if (table == NULL)
             goto failed;
     }
@@ -2795,34 +2629,33 @@ failed:
 }
 
 /**
- * xmlFreeRefTable:
- * @table:  An ref table
+ * Deallocate the memory used by an Ref hash table.
  *
- * DEPRECATED, do not use. This function will be removed from the public API.
+ * @deprecated Don't use. This function will be removed from the
+ * public API.
  *
- * Deallocate the memory used by an Ref hash table.
+ * @param table  a ref table
  */
 void
-xmlFreeRefTable(xmlRefTablePtr table) {
+xmlFreeRefTable(xmlRefTable *table) {
     xmlHashFree(table, xmlFreeRefTableEntry);
 }
 
 /**
- * xmlIsRef:
- * @doc:  the document
- * @elem:  the element carrying the attribute
- * @attr:  the attribute
- *
- * DEPRECATED, do not use. This function will be removed from the public API.
- *
  * 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).
  *
- * Returns 0 or 1 depending on the lookup result
+ * @deprecated Don't use. This function will be removed from the
+ * public API.
+ *
+ * @param doc  the document
+ * @param elem  the element carrying the attribute
+ * @param attr  the attribute
+ * @returns 0 or 1 depending on the lookup result.
  */
 int
-xmlIsRef(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
+xmlIsRef(xmlDoc *doc, xmlNode *elem, xmlAttr *attr) {
     if (attr == NULL)
         return(0);
     if (doc == NULL) {
@@ -2856,18 +2689,17 @@ xmlIsRef(xmlDocPtr doc, xmlNodePtr elem,
 }
 
 /**
- * xmlRemoveRef:
- * @doc:  the document
- * @attr:  the attribute
- *
- * DEPRECATED, do not use. This function will be removed from the public API.
- *
  * Remove the given attribute from the Ref table maintained internally.
  *
- * Returns -1 if the lookup failed and 0 otherwise
+ * @deprecated Don't use. This function will be removed from the
+ * public API.
+ *
+ * @param doc  the document
+ * @param attr  the attribute
+ * @returns -1 if the lookup failed and 0 otherwise.
  */
 int
-xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr) {
+xmlRemoveRef(xmlDoc *doc, xmlAttr *attr) {
     xmlListPtr ref_list;
     xmlRefTablePtr table;
     xmlChar *ID;
@@ -2914,18 +2746,17 @@ xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr a
 }
 
 /**
- * xmlGetRefs:
- * @doc:  pointer to the document
- * @ID:  the ID value
- *
- * DEPRECATED, do not use. This function will be removed from the public API.
- *
  * Find the set of references for the supplied ID.
  *
- * Returns NULL if not found, otherwise node set for the ID.
+ * @deprecated Don't use. This function will be removed from the
+ * public API.
+ *
+ * @param doc  pointer to the document
+ * @param ID  the ID value
+ * @returns the list of nodes matching the ID or NULL on error.
  */
-xmlListPtr
-xmlGetRefs(xmlDocPtr doc, const xmlChar *ID) {
+xmlList *
+xmlGetRefs(xmlDoc *doc, const xmlChar *ID) {
     xmlRefTablePtr table;
 
     if (doc == NULL) {
@@ -2950,19 +2781,17 @@ xmlGetRefs(xmlDocPtr doc, const xmlChar
  ************************************************************************/
 
 /**
- * xmlGetDtdElementDesc:
- * @dtd:  a pointer to the DtD to search
- * @name:  the element name
- *
- * Search the DTD for the description of this element
+ * Search the DTD for the description of this element.
  *
  * NOTE: A NULL return value can also mean that a memory allocation failed.
  *
- * returns the xmlElementPtr if found or NULL
+ * @param dtd  a pointer to the DtD to search
+ * @param name  the element name
+ * @returns the xmlElement or NULL if not found.
  */
 
-xmlElementPtr
-xmlGetDtdElementDesc(xmlDtdPtr dtd, const xmlChar *name) {
+xmlElement *
+xmlGetDtdElementDesc(xmlDtd *dtd, const xmlChar *name) {
     xmlElementTablePtr table;
     xmlElementPtr cur;
     const xmlChar *localname;
@@ -2986,14 +2815,12 @@ xmlGetDtdElementDesc(xmlDtdPtr dtd, cons
 }
 
 /**
- * xmlGetDtdElementDesc2:
- * @dtd:  a pointer to the DtD to search
- * @name:  the element name
- * @create:  create an empty description if not found
- *
- * Search the DTD for the description of this element
+ * Search the DTD for the description of this element.
  *
- * returns the xmlElementPtr if found or NULL
+ * @param ctxt  a validation context
+ * @param dtd  a pointer to the DtD to search
+ * @param name  the element name
+ * @returns the xmlElement or NULL if not found.
  */
 
 static xmlElementPtr
@@ -3058,18 +2885,16 @@ mem_error:
 }
 
 /**
- * xmlGetDtdQElementDesc:
- * @dtd:  a pointer to the DtD to search
- * @name:  the element name
- * @prefix:  the element namespace prefix
+ * Search the DTD for the description of this element.
  *
- * Search the DTD for the description of this element
- *
- * returns the xmlElementPtr if found or NULL
+ * @param dtd  a pointer to the DtD to search
+ * @param name  the element name
+ * @param prefix  the element namespace prefix
+ * @returns the xmlElement or NULL if not found.
  */
 
-xmlElementPtr
-xmlGetDtdQElementDesc(xmlDtdPtr dtd, const xmlChar *name,
+xmlElement *
+xmlGetDtdQElementDesc(xmlDtd *dtd, const xmlChar *name,
 	              const xmlChar *prefix) {
     xmlElementTablePtr table;
 
@@ -3081,19 +2906,17 @@ xmlGetDtdQElementDesc(xmlDtdPtr dtd, con
 }
 
 /**
- * xmlGetDtdAttrDesc:
- * @dtd:  a pointer to the DtD to search
- * @elem:  the element name
- * @name:  the attribute name
- *
  * Search the DTD for the description of this attribute on
  * this element.
  *
- * returns the xmlAttributePtr if found or NULL
+ * @param dtd  a pointer to the DtD to search
+ * @param elem  the element name
+ * @param name  the attribute name
+ * @returns the xmlAttribute or NULL if not found.
  */
 
-xmlAttributePtr
-xmlGetDtdAttrDesc(xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name) {
+xmlAttribute *
+xmlGetDtdAttrDesc(xmlDtd *dtd, const xmlChar *elem, const xmlChar *name) {
     xmlAttributeTablePtr table;
     xmlAttributePtr cur;
     const xmlChar *localname;
@@ -3117,20 +2940,18 @@ xmlGetDtdAttrDesc(xmlDtdPtr dtd, const x
 }
 
 /**
- * xmlGetDtdQAttrDesc:
- * @dtd:  a pointer to the DtD to search
- * @elem:  the element name
- * @name:  the attribute name
- * @prefix:  the attribute namespace prefix
- *
  * Search the DTD for the description of this qualified attribute on
  * this element.
  *
- * returns the xmlAttributePtr if found or NULL
+ * @param dtd  a pointer to the DtD to search
+ * @param elem  the element name
+ * @param name  the attribute name
+ * @param prefix  the attribute namespace prefix
+ * @returns the xmlAttribute or NULL if not found.
  */
 
-xmlAttributePtr
-xmlGetDtdQAttrDesc(xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name,
+xmlAttribute *
+xmlGetDtdQAttrDesc(xmlDtd *dtd, const xmlChar *elem, const xmlChar *name,
 	          const xmlChar *prefix) {
     xmlAttributeTablePtr table;
 
@@ -3142,17 +2963,15 @@ xmlGetDtdQAttrDesc(xmlDtdPtr dtd, const
 }
 
 /**
- * xmlGetDtdNotationDesc:
- * @dtd:  a pointer to the DtD to search
- * @name:  the notation name
+ * Search the DTD for the description of this notation.
  *
- * Search the DTD for the description of this notation
- *
- * returns the xmlNotationPtr if found or NULL
+ * @param dtd  a pointer to the DtD to search
+ * @param name  the notation name
+ * @returns the xmlNotation or NULL if not found.
  */
 
-xmlNotationPtr
-xmlGetDtdNotationDesc(xmlDtdPtr dtd, const xmlChar *name) {
+xmlNotation *
+xmlGetDtdNotationDesc(xmlDtd *dtd, const xmlChar *name) {
     xmlNotationTablePtr table;
 
     if (dtd == NULL) return(NULL);
@@ -3164,21 +2983,19 @@ xmlGetDtdNotationDesc(xmlDtdPtr dtd, con
 
 #ifdef LIBXML_VALID_ENABLED
 /**
- * xmlValidateNotationUse:
- * @ctxt:  the validation context
- * @doc:  the document
- * @notationName:  the notation name to check
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Validate that the given name match a notation declaration.
- * - [ VC: Notation Declared ]
+ * [ VC: Notation Declared ]
  *
- * returns 1 if valid or 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  the validation context
+ * @param doc  the document
+ * @param notationName  the notation name to check
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateNotationUse(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
+xmlValidateNotationUse(xmlValidCtxt *ctxt, xmlDoc *doc,
                        const xmlChar *notationName) {
     xmlNotationPtr notaDecl;
     if ((doc == NULL) || (doc->intSubset == NULL) ||
@@ -3199,18 +3016,19 @@ xmlValidateNotationUse(xmlValidCtxtPtr c
 #endif /* LIBXML_VALID_ENABLED */
 
 /**
- * xmlIsMixedElement:
- * @doc:  the document
- * @name:  the element name
+ * Search in the DTDs whether an element accepts mixed content
+ * or ANY (basically if it is supposed to accept text children).
  *
- * Search in the DtDs whether an element accept Mixed content (or ANY)
- * basically if it is supposed to accept text childs
+ * @deprecated Internal function, don't use.
  *
- * returns 0 if no, 1 if yes, and -1 if no element description is available
+ * @param doc  the document
+ * @param name  the element name
+ * @returns 0 if no, 1 if yes, and -1 if no element description
+ * is available.
  */
 
 int
-xmlIsMixedElement(xmlDocPtr doc, const xmlChar *name) {
+xmlIsMixedElement(xmlDoc *doc, const xmlChar *name) {
     xmlElementPtr elemDecl;
 
     if ((doc == NULL) || (doc->intSubset == NULL)) return(-1);
@@ -3239,10 +3057,9 @@ xmlIsMixedElement(xmlDocPtr doc, const x
 #ifdef LIBXML_VALID_ENABLED
 
 /**
- * xmlValidNormalizeString:
- * @str: a string
- *
  * Normalize a string in-place.
+ *
+ * @param str  a string
  */
 static void
 xmlValidNormalizeString(xmlChar *str) {
@@ -3267,372 +3084,222 @@ xmlValidNormalizeString(xmlChar *str) {
     *dst = 0;
 }
 
-static int
-xmlIsDocNameStartChar(xmlDocPtr doc, int c) {
-    if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) {
-        /*
-	 * Use the new checks of production [4] [4a] amd [5] of the
-	 * Update 5 of XML-1.0
-	 */
-	if (((c >= 'a') && (c <= 'z')) ||
-	    ((c >= 'A') && (c <= 'Z')) ||
-	    (c == '_') || (c == ':') ||
-	    ((c >= 0xC0) && (c <= 0xD6)) ||
-	    ((c >= 0xD8) && (c <= 0xF6)) ||
-	    ((c >= 0xF8) && (c <= 0x2FF)) ||
-	    ((c >= 0x370) && (c <= 0x37D)) ||
-	    ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	    ((c >= 0x200C) && (c <= 0x200D)) ||
-	    ((c >= 0x2070) && (c <= 0x218F)) ||
-	    ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	    ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	    ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	    ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	    ((c >= 0x10000) && (c <= 0xEFFFF)))
-	    return(1);
-    } else {
-        if (IS_LETTER(c) || (c == '_') || (c == ':'))
-	    return(1);
-    }
-    return(0);
-}
-
-static int
-xmlIsDocNameChar(xmlDocPtr doc, int c) {
-    if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) {
-        /*
-	 * Use the new checks of production [4] [4a] amd [5] of the
-	 * Update 5 of XML-1.0
-	 */
-	if (((c >= 'a') && (c <= 'z')) ||
-	    ((c >= 'A') && (c <= 'Z')) ||
-	    ((c >= '0') && (c <= '9')) || /* !start */
-	    (c == '_') || (c == ':') ||
-	    (c == '-') || (c == '.') || (c == 0xB7) || /* !start */
-	    ((c >= 0xC0) && (c <= 0xD6)) ||
-	    ((c >= 0xD8) && (c <= 0xF6)) ||
-	    ((c >= 0xF8) && (c <= 0x2FF)) ||
-	    ((c >= 0x300) && (c <= 0x36F)) || /* !start */
-	    ((c >= 0x370) && (c <= 0x37D)) ||
-	    ((c >= 0x37F) && (c <= 0x1FFF)) ||
-	    ((c >= 0x200C) && (c <= 0x200D)) ||
-	    ((c >= 0x203F) && (c <= 0x2040)) || /* !start */
-	    ((c >= 0x2070) && (c <= 0x218F)) ||
-	    ((c >= 0x2C00) && (c <= 0x2FEF)) ||
-	    ((c >= 0x3001) && (c <= 0xD7FF)) ||
-	    ((c >= 0xF900) && (c <= 0xFDCF)) ||
-	    ((c >= 0xFDF0) && (c <= 0xFFFD)) ||
-	    ((c >= 0x10000) && (c <= 0xEFFFF)))
-	     return(1);
-    } else {
-        if ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
-            (c == '.') || (c == '-') ||
-	    (c == '_') || (c == ':') ||
-	    (IS_COMBINING(c)) ||
-	    (IS_EXTENDER(c)))
-	    return(1);
-    }
-    return(0);
-}
-
 /**
- * xmlValidateNameValue:
- * @doc:  pointer to the document or NULL
- * @value:  an Name value
+ * Validate that the given value matches the Name production.
  *
- * Validate that the given value match Name production
- *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Name value
+ * @param flags  scan flags
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
-xmlValidateNameValueInternal(xmlDocPtr doc, const xmlChar *value) {
-    const xmlChar *cur;
-    int val, len;
-
-    if (value == NULL) return(0);
-    cur = value;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-    if (!xmlIsDocNameStartChar(doc, val))
-	return(0);
-
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-    while (xmlIsDocNameChar(doc, val)) {
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-    }
-
-    if (val != 0) return(0);
+xmlValidateNameValueInternal(const xmlChar *value, int flags) {
+    if ((value == NULL) || (value[0] == 0))
+        return(0);
 
-    return(1);
+    value = xmlScanName(value, SIZE_MAX, flags);
+    return((value != NULL) && (*value == 0));
 }
 
 /**
- * xmlValidateNameValue:
- * @value:  an Name value
- *
- * Validate that the given value match Name production
+ * Validate that the given value matches the Name production.
  *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Name value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
 xmlValidateNameValue(const xmlChar *value) {
-    return(xmlValidateNameValueInternal(NULL, value));
+    return(xmlValidateNameValueInternal(value, 0));
 }
 
 /**
- * xmlValidateNamesValueInternal:
- * @doc:  pointer to the document or NULL
- * @value:  an Names value
+ * Validate that the given value matches the Names production.
  *
- * Validate that the given value match Names production
- *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Names value
+ * @param flags  scan flags
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
-xmlValidateNamesValueInternal(xmlDocPtr doc, const xmlChar *value) {
+xmlValidateNamesValueInternal(const xmlChar *value, int flags) {
     const xmlChar *cur;
-    int val, len;
-
-    if (value == NULL) return(0);
-    cur = value;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
 
-    if (!xmlIsDocNameStartChar(doc, val))
-	return(0);
+    if (value == NULL)
+        return(0);
 
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-    while (xmlIsDocNameChar(doc, val)) {
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-    }
+    cur = xmlScanName(value, SIZE_MAX, flags);
+    if ((cur == NULL) || (cur == value))
+        return(0);
 
     /* Should not test IS_BLANK(val) here -- see erratum E20*/
-    while (val == 0x20) {
-	while (val == 0x20) {
-	    val = xmlStringCurrentChar(NULL, cur, &len);
-	    cur += len;
-	}
-
-	if (!xmlIsDocNameStartChar(doc, val))
-	    return(0);
-
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-
-	while (xmlIsDocNameChar(doc, val)) {
-	    val = xmlStringCurrentChar(NULL, cur, &len);
-	    cur += len;
-	}
+    while (*cur == 0x20) {
+	while (*cur == 0x20)
+	    cur += 1;
+
+        value = cur;
+        cur = xmlScanName(value, SIZE_MAX, flags);
+        if ((cur == NULL) || (cur == value))
+            return(0);
     }
 
-    if (val != 0) return(0);
-
-    return(1);
+    return(*cur == 0);
 }
 
 /**
- * xmlValidateNamesValue:
- * @value:  an Names value
+ * Validate that the given value matches the Names production.
  *
- * Validate that the given value match Names production
- *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Names value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
 xmlValidateNamesValue(const xmlChar *value) {
-    return(xmlValidateNamesValueInternal(NULL, value));
+    return(xmlValidateNamesValueInternal(value, 0));
 }
 
 /**
- * xmlValidateNmtokenValueInternal:
- * @doc:  pointer to the document or NULL
- * @value:  an Nmtoken value
- *
- * Validate that the given value match Nmtoken production
+ * Validate that the given value matches the Nmtoken production.
  *
  * [ VC: Name Token ]
  *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Nmtoken value
+ * @param flags  scan flags
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
-xmlValidateNmtokenValueInternal(xmlDocPtr doc, const xmlChar *value) {
-    const xmlChar *cur;
-    int val, len;
-
-    if (value == NULL) return(0);
-    cur = value;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-
-    if (!xmlIsDocNameChar(doc, val))
-	return(0);
-
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-    while (xmlIsDocNameChar(doc, val)) {
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-    }
-
-    if (val != 0) return(0);
+xmlValidateNmtokenValueInternal(const xmlChar *value, int flags) {
+    if ((value == NULL) || (value[0] == 0))
+        return(0);
 
-    return(1);
+    value = xmlScanName(value, SIZE_MAX, flags | XML_SCAN_NMTOKEN);
+    return((value != NULL) && (*value == 0));
 }
 
 /**
- * xmlValidateNmtokenValue:
- * @value:  an Nmtoken value
- *
- * Validate that the given value match Nmtoken production
+ * Validate that the given value matches the Nmtoken production.
  *
  * [ VC: Name Token ]
  *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Nmtoken value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
 xmlValidateNmtokenValue(const xmlChar *value) {
-    return(xmlValidateNmtokenValueInternal(NULL, value));
+    return(xmlValidateNmtokenValueInternal(value, 0));
 }
 
 /**
- * xmlValidateNmtokensValueInternal:
- * @doc:  pointer to the document or NULL
- * @value:  an Nmtokens value
- *
- * Validate that the given value match Nmtokens production
+ * Validate that the given value matches the Nmtokens production.
  *
  * [ VC: Name Token ]
  *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Nmtokens value
+ * @param flags  scan flags
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
-xmlValidateNmtokensValueInternal(xmlDocPtr doc, const xmlChar *value) {
+xmlValidateNmtokensValueInternal(const xmlChar *value, int flags) {
     const xmlChar *cur;
-    int val, len;
 
-    if (value == NULL) return(0);
-    cur = value;
-    val = xmlStringCurrentChar(NULL, cur, &len);
-    cur += len;
-
-    while (IS_BLANK(val)) {
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-    }
+    if (value == NULL)
+        return(0);
 
-    if (!xmlIsDocNameChar(doc, val))
-	return(0);
+    cur = value;
+    while (IS_BLANK_CH(*cur))
+	cur += 1;
 
-    while (xmlIsDocNameChar(doc, val)) {
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
-    }
+    value = cur;
+    cur = xmlScanName(value, SIZE_MAX, flags | XML_SCAN_NMTOKEN);
+    if ((cur == NULL) || (cur == value))
+        return(0);
 
     /* Should not test IS_BLANK(val) here -- see erratum E20*/
-    while (val == 0x20) {
-	while (val == 0x20) {
-	    val = xmlStringCurrentChar(NULL, cur, &len);
-	    cur += len;
-	}
-	if (val == 0) return(1);
-
-	if (!xmlIsDocNameChar(doc, val))
-	    return(0);
-
-	val = xmlStringCurrentChar(NULL, cur, &len);
-	cur += len;
+    while (*cur == 0x20) {
+	while (*cur == 0x20)
+	    cur += 1;
+        if (*cur == 0)
+            return(1);
 
-	while (xmlIsDocNameChar(doc, val)) {
-	    val = xmlStringCurrentChar(NULL, cur, &len);
-	    cur += len;
-	}
+        value = cur;
+        cur = xmlScanName(value, SIZE_MAX, flags | XML_SCAN_NMTOKEN);
+        if ((cur == NULL) || (cur == value))
+            return(0);
     }
 
-    if (val != 0) return(0);
-
-    return(1);
+    return(*cur == 0);
 }
 
 /**
- * xmlValidateNmtokensValue:
- * @value:  an Nmtokens value
- *
- * Validate that the given value match Nmtokens production
+ * Validate that the given value matches the Nmtokens production.
  *
  * [ VC: Name Token ]
  *
- * returns 1 if valid or 0 otherwise
+ * @param value  an Nmtokens value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
 xmlValidateNmtokensValue(const xmlChar *value) {
-    return(xmlValidateNmtokensValueInternal(NULL, value));
+    return(xmlValidateNmtokensValueInternal(value, 0));
 }
 
 /**
- * xmlValidateNotationDecl:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @nota:  a notation definition
+ * Try to validate a single notation definition.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * 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 ...
+ * It seems that no validity constraint exists on notation declarations.
+ * But this function gets called anyway ...
  *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param nota  a notation definition
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateNotationDecl(xmlValidCtxtPtr ctxt ATTRIBUTE_UNUSED, xmlDocPtr doc ATTRIBUTE_UNUSED,
-                         xmlNotationPtr nota ATTRIBUTE_UNUSED) {
+xmlValidateNotationDecl(xmlValidCtxt *ctxt ATTRIBUTE_UNUSED, xmlDoc *doc ATTRIBUTE_UNUSED,
+                         xmlNotation *nota ATTRIBUTE_UNUSED) {
     int ret = 1;
 
     return(ret);
 }
 
 /**
- * xmlValidateAttributeValueInternal:
- * @doc: the document
- * @type:  an attribute type
- * @value:  an attribute value
+ * Validate that the given attribute value matches the proper production.
  *
- * Validate that the given attribute value match  the proper production
- *
- * returns 1 if valid or 0 otherwise
+ * @param doc  the document
+ * @param type  an attribute type
+ * @param value  an attribute value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
 xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type,
                                   const xmlChar *value) {
+    int flags = 0;
+
+    if ((doc != NULL) && (doc->properties & XML_DOC_OLD10))
+        flags |= XML_SCAN_OLD10;
+
     switch (type) {
 	case XML_ATTRIBUTE_ENTITIES:
 	case XML_ATTRIBUTE_IDREFS:
-	    return(xmlValidateNamesValueInternal(doc, value));
+	    return(xmlValidateNamesValueInternal(value, flags));
 	case XML_ATTRIBUTE_ENTITY:
 	case XML_ATTRIBUTE_IDREF:
 	case XML_ATTRIBUTE_ID:
 	case XML_ATTRIBUTE_NOTATION:
-	    return(xmlValidateNameValueInternal(doc, value));
+	    return(xmlValidateNameValueInternal(value, flags));
 	case XML_ATTRIBUTE_NMTOKENS:
 	case XML_ATTRIBUTE_ENUMERATION:
-	    return(xmlValidateNmtokensValueInternal(doc, value));
+	    return(xmlValidateNmtokensValueInternal(value, flags));
 	case XML_ATTRIBUTE_NMTOKEN:
-	    return(xmlValidateNmtokenValueInternal(doc, value));
+	    return(xmlValidateNmtokenValueInternal(value, flags));
         case XML_ATTRIBUTE_CDATA:
 	    break;
     }
@@ -3640,13 +3307,9 @@ xmlValidateAttributeValueInternal(xmlDoc
 }
 
 /**
- * xmlValidateAttributeValue:
- * @type:  an attribute type
- * @value:  an attribute value
- *
- * DEPRECATED: Internal function, don't use.
+ * Validate that the given attribute value matches the proper production.
  *
- * Validate that the given attribute value match  the proper production
+ * @deprecated Internal function, don't use.
  *
  * [ VC: ID ]
  * Values of type ID must match the Name production....
@@ -3663,7 +3326,9 @@ xmlValidateAttributeValueInternal(xmlDoc
  * Values of type NMTOKEN must match the Nmtoken production; values
  * of type NMTOKENS must match Nmtokens.
  *
- * returns 1 if valid or 0 otherwise
+ * @param type  an attribute type
+ * @param value  an attribute value
+ * @returns 1 if valid or 0 otherwise.
  */
 int
 xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value) {
@@ -3671,32 +3336,30 @@ xmlValidateAttributeValue(xmlAttributeTy
 }
 
 /**
- * xmlValidateAttributeValue2:
- * @ctxt:  the validation context
- * @doc:  the document
- * @name:  the attribute name (used for error reporting only)
- * @type:  the attribute type
- * @value:  the attribute value
- *
- * Validate that the given attribute value match a given type.
+ * Validate that the given attribute value matches a given type.
  * This typically cannot be done before having finished parsing
  * the subsets.
  *
  * [ VC: IDREF ]
- * Values of type IDREF must match one of the declared IDs
+ * Values of type IDREF must match one of the declared IDs.
  * Values of type IDREFS must match a sequence of the declared IDs
  * each 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
+ * some ID attribute.
  *
  * [ VC: Entity Name ]
- * Values of type ENTITY must match one declared entity
- * Values of type ENTITIES must match a sequence of declared entities
+ * Values of type ENTITY must match one declared entity.
+ * Values of type ENTITIES must match a sequence of declared entities.
  *
  * [ VC: Notation Attributes ]
  * all notation names in the declaration must be declared.
  *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  the document
+ * @param name  the attribute name (used for error reporting only)
+ * @param type  the attribute type
+ * @param value  the attribute value
+ * @returns 1 if valid or 0 otherwise.
  */
 
 static int
@@ -3794,34 +3457,31 @@ xmlValidateAttributeValue2(xmlValidCtxtP
 }
 
 /**
- * xmlValidCtxtNormalizeAttributeValue:
- * @ctxt: the validation context
- * @doc:  the document
- * @elem:  the parent
- * @name:  the attribute name
- * @value:  the attribute value
- * @ctxt:  the validation context or NULL
- *
- * DEPRECATED: Internal function, don't use.
+ * Performs the validation-related extra step of the normalization
+ * of attribute values:
  *
- * Does the validation related extra step of the normalization of attribute
- * values:
+ * @deprecated Internal function, don't use.
  *
  * 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.
+ * 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->valid accordingly
+ * `ctxt->valid` accordingly
  *
- * returns a new normalized string if normalization is needed, NULL otherwise
- *      the caller must free the returned value.
+ * @param ctxt  the validation context
+ * @param doc  the document
+ * @param elem  the parent
+ * @param name  the attribute name
+ * @param value  the attribute value
+ * @returns a new normalized string if normalization is needed, NULL
+ * otherwise. The caller must free the returned value.
  */
 
 xmlChar *
-xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-	     xmlNodePtr elem, const xmlChar *name, const xmlChar *value) {
+xmlValidCtxtNormalizeAttributeValue(xmlValidCtxt *ctxt, xmlDoc *doc,
+	     xmlNode *elem, const xmlChar *name, const xmlChar *value) {
     xmlChar *ret;
     xmlAttributePtr attrDecl = NULL;
     const xmlChar *localName;
@@ -3894,28 +3554,26 @@ done:
 }
 
 /**
- * xmlValidNormalizeAttributeValue:
- * @doc:  the document
- * @elem:  the parent
- * @name:  the attribute name
- * @value:  the attribute value
- *
- * DEPRECATED: Internal function, don't use.
+ * Performs the validation-related extra step of the normalization
+ * of attribute values:
  *
- * Does the validation related extra step of the normalization of attribute
- * values:
+ * @deprecated Internal function, don't use.
  *
  * 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.
+ * trailing space (\#x20) characters, and by replacing sequences of space
+ * (\#x20) characters by single space (\#x20) character.
  *
- * Returns a new normalized string if normalization is needed, NULL otherwise
- *      the caller must free the returned value.
+ * @param doc  the document
+ * @param elem  the parent
+ * @param name  the attribute name
+ * @param value  the attribute value
+ * @returns a new normalized string if normalization is needed, NULL
+ * otherwise. The caller must free the returned value.
  */
 
 xmlChar *
-xmlValidNormalizeAttributeValue(xmlDocPtr doc, xmlNodePtr elem,
+xmlValidNormalizeAttributeValue(xmlDoc *doc, xmlNode *elem,
 			        const xmlChar *name, const xmlChar *value) {
     xmlChar *ret;
     xmlAttributePtr attrDecl = NULL;
@@ -3960,28 +3618,27 @@ xmlValidateAttributeIdCallback(void *pay
 }
 
 /**
- * xmlValidateAttributeDecl:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @attr:  an attribute definition
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Try to validate a single attribute definition
- * basically it does the following checks as described by the
+ * Try to validate a single attribute definition.
+ * Performs 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
+ * @deprecated Internal function, don't use.
  *
- * returns 1 if valid or 0 otherwise
+ * - [ VC: Attribute Default Legal ]
+ * - [ VC: Enumeration ]
+ * - [ VC: ID Attribute Default ]
+ *
+ * The ID/IDREF uniqueness and matching are done separately.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param attr  an attribute definition
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-                         xmlAttributePtr attr) {
+xmlValidateAttributeDecl(xmlValidCtxt *ctxt, xmlDoc *doc,
+                         xmlAttribute *attr) {
     int ret = 1;
     int val;
     CHECK_DTD;
@@ -4091,26 +3748,25 @@ xmlValidateAttributeDecl(xmlValidCtxtPtr
 }
 
 /**
- * xmlValidateElementDecl:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element definition
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Try to validate a single element definition
- * basically it does the following checks as described by the
+ * Try to validate a single element definition.
+ * Performs 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 ]
  *
- * returns 1 if valid or 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * - [ VC: One ID per Element Type ]
+ * - [ VC: No Duplicate Types ]
+ * - [ VC: Unique Element Type Declaration ]
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element definition
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateElementDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-                       xmlElementPtr elem) {
+xmlValidateElementDecl(xmlValidCtxt *ctxt, xmlDoc *doc,
+                       xmlElement *elem) {
     int ret = 1;
     xmlElementPtr tst;
     const xmlChar *localName;
@@ -4205,46 +3861,39 @@ xmlValidateElementDecl(xmlValidCtxtPtr c
         }
     }
 
-    /* One ID per Element Type
-     * already done when registering the attribute
-    if (xmlScanIDAttributeDecl(ctxt, elem) > 1) {
-	ret = 0;
-    } */
-
     xmlFree(prefix);
     return(ret);
 }
 
 /**
- * xmlValidateOneAttribute:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- * @attr:  an attribute instance
- * @value:  the attribute value (without entities processing)
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Try to validate a single attribute for an element
- * basically it does the following checks as described by the
+ * Try to validate a single attribute for an element.
+ * Performs 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
+ * @deprecated Internal function, don't use.
  *
- * returns 1 if valid or 0 otherwise
+ * - [ VC: Attribute Value Type ]
+ * - [ VC: Fixed Attribute Default ]
+ * - [ VC: Entity Name ]
+ * - [ VC: Name Token ]
+ * - [ VC: ID ]
+ * - [ VC: IDREF ]
+ * - [ VC: Entity Name ]
+ * - [ VC: Notation Attributes ]
+ *
+ * ID/IDREF uniqueness and matching are handled separately.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @param attr  an attribute instance
+ * @param value  the attribute value (without entities processing)
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-                        xmlNodePtr elem, xmlAttrPtr attr, const xmlChar *value)
+xmlValidateOneAttribute(xmlValidCtxt *ctxt, xmlDoc *doc,
+                        xmlNode *elem, xmlAttr *attr, const xmlChar *value)
 {
     xmlAttributePtr attrDecl =  NULL;
     const xmlChar *aprefix;
@@ -4387,36 +4036,35 @@ xmlValidateOneAttribute(xmlValidCtxtPtr
 }
 
 /**
- * xmlValidateOneNamespace:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- * @prefix:  the namespace prefix
- * @ns:  an namespace declaration instance
- * @value:  the attribute value (without entities processing)
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Try to validate a single namespace declaration for an element
- * basically it does the following checks as described by the
+ * Try to validate a single namespace declaration for an element.
+ * Performs 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
+ * @deprecated Internal function, don't use.
  *
- * returns 1 if valid or 0 otherwise
+ * - [ VC: Attribute Value Type ]
+ * - [ VC: Fixed Attribute Default ]
+ * - [ VC: Entity Name ]
+ * - [ VC: Name Token ]
+ * - [ VC: ID ]
+ * - [ VC: IDREF ]
+ * - [ VC: Entity Name ]
+ * - [ VC: Notation Attributes ]
+ *
+ * ID/IDREF uniqueness and matching are handled separately.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @param prefix  the namespace prefix
+ * @param ns  an namespace declaration instance
+ * @param value  the attribute value (without entities processing)
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateOneNamespace(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
+xmlValidateOneNamespace(xmlValidCtxt *ctxt, xmlDoc *doc,
+xmlNode *elem, const xmlChar *prefix, xmlNs *ns, const xmlChar *value) {
     /* xmlElementPtr elemDecl; */
     xmlAttributePtr attrDecl =  NULL;
     int val;
@@ -4604,13 +4252,11 @@ xmlNodePtr elem, const xmlChar *prefix,
 
 #ifndef  LIBXML_REGEXP_ENABLED
 /**
- * xmlValidateSkipIgnorable:
- * @ctxt:  the validation context
- * @child:  the child list
- *
  * Skip ignorable elements w.r.t. the validation process
  *
- * returns the first element to consider for validation of the content model
+ * @param ctxt  the validation context
+ * @param child  the child list
+ * @returns the first element to consider for validation of the content model
  */
 
 static xmlNodePtr
@@ -4639,12 +4285,10 @@ xmlValidateSkipIgnorable(xmlNodePtr chil
 }
 
 /**
- * xmlValidateElementType:
- * @ctxt:  the validation context
- *
  * Try to validate the content model of an element internal function
  *
- * returns 1 if valid or 0 ,-1 in case of error, -2 if an entity
+ * @param ctxt  the validation context
+ * @returns 1 if valid or 0 ,-1 in case of error, -2 if an entity
  *           reference is found and -3 if the validation succeeded but
  *           the content model is not determinist.
  */
@@ -4967,14 +4611,13 @@ analyze:
 #endif
 
 /**
- * xmlSnprintfElements:
- * @buf:  an output buffer
- * @size:  the size of the buffer
- * @content:  An element
- * @glob: 1 if one must print the englobing parenthesis, 0 otherwise
- *
  * This will dump the list of elements to the buffer
  * Intended just for the debug routine
+ *
+ * @param buf  an output buffer
+ * @param size  the size of the buffer
+ * @param node  an element
+ * @param glob  1 if one must print the englobing parenthesis, 0 otherwise
  */
 static void
 xmlSnprintfElements(char *buf, int size, xmlNodePtr node, int glob) {
@@ -5050,16 +4693,14 @@ xmlSnprintfElements(char *buf, int size,
 }
 
 /**
- * xmlValidateElementContent:
- * @ctxt:  the validation context
- * @child:  the child list
- * @elemDecl:  pointer to the element declaration
- * @warn:  emit the error message
- * @parent: the parent element (for error reporting)
- *
  * Try to validate the content model of an element
  *
- * returns 1 if valid or 0 if not and -1 in case of error
+ * @param ctxt  the validation context
+ * @param child  the child list
+ * @param elemDecl  pointer to the element declaration
+ * @param warn  emit the error message
+ * @param parent  the parent element (for error reporting)
+ * @returns 1 if valid or 0 if not and -1 in case of error
  */
 
 static int
@@ -5358,14 +4999,12 @@ done:
 }
 
 /**
- * xmlValidateCdataElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- *
- * Check that an element follows #CDATA
+ * Check that an element follows \#CDATA.
  *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @returns 1 if valid or 0 otherwise.
  */
 static int
 xmlValidateOneCdataElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
@@ -5429,14 +5068,12 @@ done:
 
 #ifdef LIBXML_REGEXP_ENABLED
 /**
- * xmlValidateCheckMixed:
- * @ctxt:  the validation context
- * @cont:  the mixed content model
- * @qname:  the qualified name as appearing in the serialization
- *
  * Check if the given node is part of the content model.
  *
- * Returns 1 if yes, 0 if no, -1 in case of error
+ * @param ctxt  the validation context
+ * @param cont  the mixed content model
+ * @param qname  the qualified name as appearing in the serialization
+ * @returns 1 if yes, 0 if no, -1 in case of error
  */
 static int
 xmlValidateCheckMixed(xmlValidCtxtPtr ctxt,
@@ -5459,7 +5096,7 @@ xmlValidateCheckMixed(xmlValidCtxtPtr ct
 	    } else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
 		(cont->c1 == NULL) ||
 		(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){
-		xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
+		xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
 			"Internal: MIXED struct corrupted\n",
 			NULL);
 		break;
@@ -5496,16 +5133,14 @@ xmlValidateCheckMixed(xmlValidCtxtPtr ct
 #endif /* LIBXML_REGEXP_ENABLED */
 
 /**
- * xmlValidGetElemDecl:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- * @extsubset:  pointer, (out) indicate if the declaration was found
- *              in the external subset.
- *
  * Finds a declaration associated to an element in the document.
  *
- * returns the pointer to the declaration or NULL if not found.
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @param extsubset  pointer, (out) indicate if the declaration was found
+ *              in the external subset.
+ * @returns the pointer to the declaration or NULL if not found.
  */
 static xmlElementPtr
 xmlValidGetElemDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
@@ -5560,21 +5195,19 @@ xmlValidGetElemDecl(xmlValidCtxtPtr ctxt
 
 #ifdef LIBXML_REGEXP_ENABLED
 /**
- * xmlValidatePushElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- * @qname:  the qualified name as appearing in the serialization
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Push a new element start on the validation stack.
  *
- * returns 1 if no validation problem was found or 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @param qname  the qualified name as appearing in the serialization
+ * @returns 1 if no validation problem was found or 0 otherwise.
  */
 int
-xmlValidatePushElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-                       xmlNodePtr elem, const xmlChar *qname) {
+xmlValidatePushElement(xmlValidCtxt *ctxt, xmlDoc *doc,
+                       xmlNode *elem, const xmlChar *qname) {
     int ret = 1;
     xmlElementPtr eDecl;
     int extsubset = 0;
@@ -5660,19 +5293,17 @@ xmlValidatePushElement(xmlValidCtxtPtr c
 }
 
 /**
- * xmlValidatePushCData:
- * @ctxt:  the validation context
- * @data:  some character data read
- * @len:  the length of the data
+ * Check the CData parsed for validation in the current stack.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * check the CData parsed for validation in the current stack
- *
- * returns 1 if no validation problem was found or 0 otherwise
+ * @param ctxt  the validation context
+ * @param data  some character data read
+ * @param len  the length of the data
+ * @returns 1 if no validation problem was found or 0 otherwise.
  */
 int
-xmlValidatePushCData(xmlValidCtxtPtr ctxt, const xmlChar *data, int len) {
+xmlValidatePushCData(xmlValidCtxt *ctxt, const xmlChar *data, int len) {
     int ret = 1;
 
     if (ctxt == NULL)
@@ -5733,21 +5364,19 @@ done:
 }
 
 /**
- * xmlValidatePopElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
- * @qname:  the qualified name as appearing in the serialization
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Pop the element end from the validation stack.
  *
- * returns 1 if no validation problem was found or 0 otherwise
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @param qname  the qualified name as appearing in the serialization
+ * @returns 1 if no validation problem was found or 0 otherwise.
  */
 int
-xmlValidatePopElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc ATTRIBUTE_UNUSED,
-                      xmlNodePtr elem ATTRIBUTE_UNUSED,
+xmlValidatePopElement(xmlValidCtxt *ctxt, xmlDoc *doc ATTRIBUTE_UNUSED,
+                      xmlNode *elem ATTRIBUTE_UNUSED,
 		      const xmlChar *qname ATTRIBUTE_UNUSED) {
     int ret = 1;
 
@@ -5793,28 +5422,28 @@ xmlValidatePopElement(xmlValidCtxtPtr ct
 #endif /* LIBXML_REGEXP_ENABLED */
 
 /**
- * xmlValidateOneElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @elem:  an element instance
+ * Try to validate a single element and its attributes.
+ * Performs the following checks as described by the
+ * XML-1.0 recommendation:
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Try to validate a single element and it'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.
+ * - [ VC: Element Valid ]
+ * - [ VC: Required Attribute ]
  *
- * The ID/IDREF checkings are done separately
+ * Then calls #xmlValidateOneAttribute for each attribute present.
  *
- * returns 1 if valid or 0 otherwise
+ * ID/IDREF checks are handled separately.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param elem  an element instance
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
-                      xmlNodePtr elem) {
+xmlValidateOneElement(xmlValidCtxt *ctxt, xmlDoc *doc,
+                      xmlNode *elem) {
     xmlElementPtr elemDecl = NULL;
     xmlElementContentPtr cont;
     xmlAttributePtr attr;
@@ -5914,7 +5543,7 @@ xmlValidateOneElement(xmlValidCtxtPtr ct
 			    } else if ((cont->type != XML_ELEMENT_CONTENT_OR) ||
 				(cont->c1 == NULL) ||
 				(cont->c1->type != XML_ELEMENT_CONTENT_PCDATA)){
-				xmlErrValid(NULL, XML_DTD_MIXED_CORRUPT,
+				xmlErrValid(ctxt, XML_DTD_MIXED_CORRUPT,
 					"Internal: MIXED struct corrupted\n",
 					NULL);
 				break;
@@ -6025,8 +5654,6 @@ child_ok:
 			if (attr->prefix != NULL) {
 			    xmlNsPtr nameSpace = attrib->ns;
 
-			    if (nameSpace == NULL)
-				nameSpace = elem->ns;
 			    /*
 			     * qualified names handling is problematic, having a
 			     * different prefix should be possible but DTDs don't
@@ -6067,54 +5694,19 @@ child_ok:
 		    ret = 0;
 		}
 	    } else if (qualified == 0) {
-		xmlErrValidWarning(ctxt, elem, XML_DTD_NO_PREFIX,
-		   "Element %s required attribute %s:%s has no prefix\n",
-		       elem->name, attr->prefix, attr->name);
+		if (xmlErrValidWarning(ctxt, elem, XML_DTD_NO_PREFIX,
+		                       "Element %s required attribute %s:%s "
+                                       "has no prefix\n",
+		                       elem->name, attr->prefix,
+                                       attr->name) < 0)
+                    ret = 0;
 	    } else if (qualified == 1) {
-		xmlErrValidWarning(ctxt, elem, XML_DTD_DIFFERENT_PREFIX,
-		   "Element %s required attribute %s:%s has different prefix\n",
-		       elem->name, attr->prefix, attr->name);
-	    }
-	} else if (attr->def == XML_ATTRIBUTE_FIXED) {
-	    /*
-	     * Special tests checking #FIXED namespace declarations
-	     * have the right value since this is not done as an
-	     * attribute checking
-	     */
-	    if ((attr->prefix == NULL) &&
-		(xmlStrEqual(attr->name, BAD_CAST "xmlns"))) {
-		xmlNsPtr ns;
-
-		ns = elem->nsDef;
-		while (ns != NULL) {
-		    if (ns->prefix == NULL) {
-			if (!xmlStrEqual(attr->defaultValue, ns->href)) {
-			    xmlErrValidNode(ctxt, elem,
-			           XML_DTD_ELEM_DEFAULT_NAMESPACE,
-   "Element %s namespace name for default namespace does not match the DTD\n",
-				   elem->name, NULL, NULL);
-			    ret = 0;
-			}
-			goto found;
-		    }
-		    ns = ns->next;
-		}
-	    } else if (xmlStrEqual(attr->prefix, BAD_CAST "xmlns")) {
-		xmlNsPtr ns;
-
-		ns = elem->nsDef;
-		while (ns != NULL) {
-		    if (xmlStrEqual(attr->name, ns->prefix)) {
-			if (!xmlStrEqual(attr->defaultValue, ns->href)) {
-			    xmlErrValidNode(ctxt, elem, XML_DTD_ELEM_NAMESPACE,
-		   "Element %s namespace name for %s does not match the DTD\n",
-				   elem->name, ns->prefix, NULL);
-			    ret = 0;
-			}
-			goto found;
-		    }
-		    ns = ns->next;
-		}
+		if (xmlErrValidWarning(ctxt, elem, XML_DTD_DIFFERENT_PREFIX,
+		                       "Element %s required attribute %s:%s "
+                                       "has different prefix\n",
+		                       elem->name, attr->prefix,
+                                       attr->name) < 0)
+                    ret = 0;
 	    }
 	}
 found:
@@ -6124,23 +5716,23 @@ found:
 }
 
 /**
- * xmlValidateRoot:
- * @ctxt:  the validation context
- * @doc:  a document instance
+ * Try to validate the root element.
+ * Performs the following check as described by the
+ * XML-1.0 recommendation:
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * 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't try to recurse or apply other check to the element
+ * - [ VC: Root Element Type ]
+ *
+ * It doesn't try to recurse or apply other checks to the element.
  *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateRoot(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
+xmlValidateRoot(xmlValidCtxt *ctxt, xmlDoc *doc) {
     xmlNodePtr root;
     int ret;
 
@@ -6193,22 +5785,20 @@ name_ok:
 
 
 /**
- * xmlValidateElement:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @root:  an element instance
+ * Try to validate the subtree under an element.
  *
- * Try to validate the subtree under an element
- *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param root  an element instance
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr root) {
+xmlValidateElement(xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *root) {
     xmlNodePtr elem;
     xmlAttrPtr attr;
     xmlNsPtr ns;
-    const xmlChar *value;
+    xmlChar *value;
     int ret = 1;
 
     if (root == NULL) return(0);
@@ -6231,7 +5821,7 @@ xmlValidateElement(xmlValidCtxtPtr ctxt,
                     ret = 0;
                 } else {
                     ret &= xmlValidateOneAttribute(ctxt, doc, elem, attr, value);
-                    xmlFree((char *)value);
+                    xmlFree(value);
                 }
                 attr= attr->next;
             }
@@ -6269,11 +5859,9 @@ done:
 }
 
 /**
- * xmlValidateRef:
- * @ref:   A reference to be validated
- * @ctxt:  Validation context
- * @name:  Name of ID we are searching for
- *
+ * @param ref  A reference to be validated
+ * @param ctxt  Validation context
+ * @param name  Name of ID we are searching for
  */
 static void
 xmlValidateRef(xmlRefPtr ref, xmlValidCtxtPtr ctxt,
@@ -6353,11 +5941,9 @@ xmlValidateRef(xmlRefPtr ref, xmlValidCt
 }
 
 /**
- * xmlWalkValidateList:
- * @data:  Contents of current link
- * @user:  Value supplied by the user
- *
- * Returns 0 to abort the walk or 1 to continue
+ * @param data  Contents of current link
+ * @param user  Value supplied by the user
+ * @returns 0 to abort the walk or 1 to continue.
  */
 static int
 xmlWalkValidateList(const void *data, void *user)
@@ -6368,11 +5954,9 @@ xmlWalkValidateList(const void *data, vo
 }
 
 /**
- * xmlValidateCheckRefCallback:
- * @ref_list:  List of references
- * @ctxt:  Validation context
- * @name:  Name of ID we are searching for
- *
+ * @param payload  list of references
+ * @param data  validation context
+ * @param name  name of ID we are searching for
  */
 static void
 xmlValidateCheckRefCallback(void *payload, void *data, const xmlChar *name) {
@@ -6390,24 +5974,22 @@ xmlValidateCheckRefCallback(void *payloa
 }
 
 /**
- * xmlValidateDocumentFinal:
- * @ctxt:  the validation context
- * @doc:  a document instance
- *
- * DEPRECATED: Internal function, don't use.
+ * Performs the final step of document validation once all the
+ * incremental validation steps have been completed.
  *
- * Does the final step for the document validation once all the
- * incremental validation steps have been completed
+ * @deprecated Internal function, don't use.
  *
- * basically it does the following checks described by the XML Rec
+ * Performs the following checks described by the XML Rec:
  *
- * Check all the IDREF/IDREFS attributes definition for validity
+ * - Check all the IDREF/IDREFS attributes definition for validity.
  *
- * returns 1 if valid or 0 otherwise
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
+xmlValidateDocumentFinal(xmlValidCtxt *ctxt, xmlDoc *doc) {
     xmlRefTablePtr table;
     xmlParserCtxtPtr pctxt = NULL;
     xmlParserInputPtr oldInput = NULL;
@@ -6451,23 +6033,20 @@ xmlValidateDocumentFinal(xmlValidCtxtPtr
 }
 
 /**
- * xmlValidateDtd:
- * @ctxt:  the validation context
- * @doc:  a document instance
- * @dtd:  a dtd instance
- *
- * 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.
+ * Try to validate the document against the DTD instance.
  *
- * returns 1 if valid or 0 otherwise
+ * Note that the internal subset (if present) is de-coupled
+ * (i.e. not used), which could cause problems if ID or IDREF
+ * attributes are present.
+ *
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @param dtd  a DTD instance
+ * @returns 1 if valid or 0 otherwise.
  */
 
 int
-xmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd) {
+xmlValidateDtd(xmlValidCtxt *ctxt, xmlDoc *doc, xmlDtd *dtd) {
     int ret;
     xmlDtdPtr oldExt, oldInt;
     xmlNodePtr root;
@@ -6512,21 +6091,19 @@ xmlValidateDtd(xmlValidCtxtPtr ctxt, xml
 }
 
 /**
- * xmlCtxtValidateDtd:
- * @ctxt:  a parser context
- * @doc:  a document instance
- * @dtd:  a dtd instance
- *
  * Validate a document against a DTD.
  *
- * Like xmlValidateDtd but uses the parser context's error handler.
+ * Like #xmlValidateDtd but uses the parser context's error handler.
  *
- * Availabe since 2.14.0.
+ * @since 2.14.0
  *
- * Returns 1 if valid or 0 otherwise.
+ * @param ctxt  a parser context
+ * @param doc  a document instance
+ * @param dtd  a dtd instance
+ * @returns 1 if valid or 0 otherwise.
  */
 int
-xmlCtxtValidateDtd(xmlParserCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd) {
+xmlCtxtValidateDtd(xmlParserCtxt *ctxt, xmlDoc *doc, xmlDtd *dtd) {
     if ((ctxt == NULL) || (ctxt->html))
         return(0);
 
@@ -6561,42 +6138,11 @@ xmlValidateAttributeCallback(void *paylo
 	                     const xmlChar *name ATTRIBUTE_UNUSED) {
     xmlAttributePtr cur = (xmlAttributePtr) payload;
     xmlValidCtxtPtr ctxt = (xmlValidCtxtPtr) data;
-    int ret;
     xmlDocPtr doc;
     xmlElementPtr elem = NULL;
 
     if (cur == NULL)
 	return;
-    switch (cur->atype) {
-	case XML_ATTRIBUTE_CDATA:
-	case XML_ATTRIBUTE_ID:
-	case XML_ATTRIBUTE_IDREF	:
-	case XML_ATTRIBUTE_IDREFS:
-	case XML_ATTRIBUTE_NMTOKEN:
-	case XML_ATTRIBUTE_NMTOKENS:
-	case XML_ATTRIBUTE_ENUMERATION:
-	    break;
-	case XML_ATTRIBUTE_ENTITY:
-	case XML_ATTRIBUTE_ENTITIES:
-	case XML_ATTRIBUTE_NOTATION:
-	    if (cur->defaultValue != NULL) {
-
-		ret = xmlValidateAttributeValue2(ctxt, ctxt->doc, cur->name,
-			                         cur->atype, cur->defaultValue);
-		if ((ret == 0) && (ctxt->valid == 1))
-		    ctxt->valid = 0;
-	    }
-	    if (cur->tree != NULL) {
-		xmlEnumerationPtr tree = cur->tree;
-		while (tree != NULL) {
-		    ret = xmlValidateAttributeValue2(ctxt, ctxt->doc,
-				    cur->name, cur->atype, tree->name);
-		    if ((ret == 0) && (ctxt->valid == 1))
-			ctxt->valid = 0;
-		    tree = tree->next;
-		}
-	    }
-    }
     if (cur->atype == XML_ATTRIBUTE_NOTATION) {
         const xmlChar *elemLocalName;
         xmlChar *elemPrefix;
@@ -6644,26 +6190,25 @@ xmlValidateAttributeCallback(void *paylo
 }
 
 /**
- * xmlValidateDtdFinal:
- * @ctxt:  the validation context
- * @doc:  a document instance
+ * Performs the final validation steps of DTD content once all the
+ * subsets have been parsed.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Does the final step for the dtds validation once all the
- * subsets have been parsed
+ * Performs the following checks described by the XML Rec:
  *
- * 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.
  *
- * returns 1 if valid or 0 if invalid and -1 if not well-formed
+ * @param ctxt  the validation context
+ * @param doc  a document instance
+ * @returns 1 if valid or 0 if invalid and -1 if not well-formed.
  */
 
 int
-xmlValidateDtdFinal(xmlValidCtxtPtr ctxt, xmlDocPtr doc) {
+xmlValidateDtdFinal(xmlValidCtxt *ctxt, xmlDoc *doc) {
     xmlDtdPtr dtd;
     xmlAttributeTablePtr table;
     xmlEntitiesTablePtr entities;
@@ -6695,14 +6240,12 @@ xmlValidateDtdFinal(xmlValidCtxtPtr ctxt
 }
 
 /**
- * xmlValidateDocumentInternal:
- * @ctxt:  parser context (optional)
- * @vctxt:  validation context (optional)
- * @doc:  document
- *
  * Validate a document.
  *
- * Returns 1 if valid or 0 otherwise
+ * @param ctxt  parser context (optional)
+ * @param vctxt  validation context (optional)
+ * @param doc  document
+ * @returns 1 if valid or 0 otherwise.
  */
 static int
 xmlValidateDocumentInternal(xmlParserCtxtPtr ctxt, xmlValidCtxtPtr vctxt,
@@ -6789,44 +6332,40 @@ xmlValidateDocumentInternal(xmlParserCtx
 }
 
 /**
- * xmlValidateDocument:
- * @vctxt:  the validation context
- * @doc:  a document instance
+ * Try to validate the document instance.
  *
- * DEPRECATED: This function can't report malloc or other failures.
- * Use xmlCtxtValidateDocument.
+ * @deprecated This function can't report malloc or other failures.
+ * Use #xmlCtxtValidateDocument.
  *
- * Try to validate the document instance
- *
- * basically it does the all the checks described by the XML Rec
+ * Performs the all the checks described by the XML Rec,
  * i.e. validates the internal and external subset (if present)
- * and validate the document tree.
+ * and validates the document tree.
  *
- * returns 1 if valid or 0 otherwise
+ * @param vctxt  the validation context
+ * @param doc  a document instance
+ * @returns 1 if valid or 0 otherwise.
  */
 int
-xmlValidateDocument(xmlValidCtxtPtr vctxt, xmlDocPtr doc) {
+xmlValidateDocument(xmlValidCtxt *vctxt, xmlDoc *doc) {
     return(xmlValidateDocumentInternal(NULL, vctxt, doc));
 }
 
 /**
- * xmlCtxtValidateDocument:
- * @ctxt:  a parser context
- * @doc:  a document instance
- *
  * Validate a document.
  *
- * Like xmlValidateDocument but uses the parser context's error handler.
+ * Like #xmlValidateDocument but uses the parser context's error handler.
  *
  * Option XML_PARSE_DTDLOAD should be enabled in the parser context
  * to make external entities work.
  *
- * Availabe since 2.14.0.
+ * @since 2.14.0
  *
- * Returns 1 if valid or 0 otherwise.
+ * @param ctxt  a parser context
+ * @param doc  a document instance
+ * @returns 1 if valid or 0 otherwise.
  */
 int
-xmlCtxtValidateDocument(xmlParserCtxtPtr ctxt, xmlDocPtr doc) {
+xmlCtxtValidateDocument(xmlParserCtxt *ctxt, xmlDoc *doc) {
     if ((ctxt == NULL) || (ctxt->html))
         return(0);
 
@@ -6842,15 +6381,15 @@ xmlCtxtValidateDocument(xmlParserCtxtPtr
  ************************************************************************/
 
 /**
- * xmlValidGetPotentialChildren:
- * @ctree:  an element content tree
- * @names:  an array to store the list of child names
- * @len:  a pointer to the number of element in the list
- * @max:  the size of the array
- *
  * Build/extend a list of  potential children allowed by the content tree
  *
- * returns the number of element in the list, or -1 in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctree  an element content tree
+ * @param names  an array to store the list of child names
+ * @param len  a pointer to the number of element in the list
+ * @param max  the size of the array
+ * @returns the number of element in the list, or -1 in case of error.
  */
 
 int
@@ -6895,16 +6434,10 @@ static void xmlNoValidityErr(void *ctx A
 }
 
 /**
- * xmlValidGetValidElements:
- * @prev:  an element to insert after
- * @next:  an element to insert next
- * @names:  an array to store the list of child names
- * @max:  the size of the array
- *
  * 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:
+ * forced by the Dtd. The insertion point is defined using `prev` and
+ * `next` in the following ways:
  *  to insert before 'node': xmlValidGetValidElements(node->prev, node, ...
  *  to insert next 'node': xmlValidGetValidElements(node, node->next, ...
  *  to replace 'node': xmlValidGetValidElements(node->prev, node->next, ...
@@ -6914,8 +6447,14 @@ static void xmlNoValidityErr(void *ctx A
  * pointers to the element names are inserted at the beginning of the array
  * and do not need to be freed.
  *
- * returns 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
+ * @deprecated This feature will be removed.
+ *
+ * @param prev  an element to insert after
+ * @param next  an element to insert next
+ * @param names  an array to store the list of child names
+ * @param max  the size of the array
+ * @returns 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.
  */
 
diff -pruN 2.14.6+dfsg-0.1/win32/Makefile.bcb 2.15.0+dfsg-0.3/win32/Makefile.bcb
--- 2.14.6+dfsg-0.1/win32/Makefile.bcb	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/Makefile.bcb	1970-01-01 00:00:00.000000000 +0000
@@ -1,312 +0,0 @@
-# Makefile for libxml2, specific for Windows, BCB6 and Borland make.
-#
-# Take a look at the beginning and modify the variables to suit your 
-# environment. Having done that, you can do a
-#
-# make [all]     to build the libxml and the accompanying utilities.
-# make clean     to remove all compiler output files and return to a
-#                 clean state.
-# make rebuild   to rebuild everything from scratch. This basically does
-#                 a 'nmake clean' and then a 'nmake all'.
-# make install   to install the library and its header files.
-#
-# August 2003, Eric Zurcher <Eric.Zurcher@csiro.au>
-# based on the MSVC version of
-# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
-#
-
-# There should never be a need to modify anything below this line.
-# ----------------------------------------------------------------
-
-AUTOCONF = .\config.bcb
-!include $(AUTOCONF)
-
-!if !$d(BCB)
-BCB = $(MAKEDIR)\..
-!endif
-.autodepend
-
-# Names of various input and output components.
-XML_NAME = xml2
-XML_BASENAME = lib$(XML_NAME)
-XML_SO = $(XML_BASENAME).dll
-XML_IMP = $(XML_BASENAME).lib
-XML_A = $(XML_BASENAME)_a.lib
-DUMMY = dir.exists
-
-# Place where we let the compiler put its intermediate trash.
-BINDIR = bin.bcb
-XML_INTDIR = int.bcb
-XML_INTDIR_A = int.a.bcb
-UTILS_INTDIR = int.utils.bcb
-
-# The preprocessor and its options.
-CPP = cpp32.exe -P-
-CPPFLAGS = -I"$(XML_SRCDIR)\include" -DNOLIBTOOL 
-!if "$(WITH_THREADS)" != "no"
-CPPFLAGS = $(CPPFLAGS) -D__MT__
-!endif
-
-# The compiler and its options.
-CC = bcc32.exe
-CFLAGS = -q -D_NO_VCL -D_WINDOWS -D_MBCS -DEILSEQ=2 -DNOLIBTOOL -w-
-CFLAGS = $(CFLAGS) -I"$(XML_SRCDIR)" -I"$(XML_SRCDIR)\include" -I"$(INCPREFIX)" -I"$(INCLUDE)"
-!if "$(WITH_THREADS)" != "no"
-CFLAGS = $(CFLAGS) -tWM
-!endif
-!if "$(DYNRUNTIME)" == "1"
-CFLAGS = $(CFLAGS) -tWR
-!endif
-!if "$(WITH_THREADS)" == "ctls"
-CFLAGS = $(CFLAGS) "-DXML_THREAD_LOCAL=__declspec(thread)"
-!endif
-
-# The linker and its options.
-LD = ilink32.exe
-LDFLAGS = -q -U$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)
-LDFLAGS = $(LDFLAGS) -L"$(BINDIR);$(LIBPREFIX);$(LIB);$(BCB)\lib;$(BCB)\lib\PSdk"
-LIBS = import32.lib
-!if "$(WITH_THREADS)" != "no" && "$(DYNRUNTIME)" == "1"
-LIBS = $(LIBS) cw32mti.lib
-!elif "$(WITH_THREADS)" != "no"
-LIBS = $(LIBS) cw32mt.lib
-!elif "$(DYNRUNTIME)" == "1"
-LIBS = $(LIBS) cw32i.lib
-!else
-LIBS = $(LIBS) cw32.lib
-!endif
-!if "$(WITH_HTTP)" == "1"
-LIBS = $(LIBS) wsock32.lib ws2_32.lib
-!endif 
-!if "$(WITH_ICONV)" == "1"
-LIBS = $(LIBS) iconvomf.lib
-!endif 
-!if "$(WITH_ZLIB)" == "1"
-LIBS = $(LIBS) zlibomf.lib
-!endif
-!if "$(WITH_LZMA)" == "1"
-LIBS = $(LIBS) liblzma.lib
-!endif
-!if "$(WITH_THREADS)" == "posix"
-LIBS = $(LIBS) pthreadVC.lib
-!endif
-!if "$(WITH_MODULES)" == "1"
-LIBS = $(LIBS) kernel32.lib
-!endif
-
-# The archiver and its options.
-AR = tlib.exe
-ARFLAGS = /P64 /0
-
-# Optimisation and debug symbols.
-!if "$(DEBUG)" == "1"
-CFLAGS = $(CFLAGS) -D_DEBUG -Od -v
-LDFLAGS = $(LDFLAGS) -v
-!else
-CFLAGS = $(CFLAGS) -DNDEBUG -O2 
-LDFLAGS = $(LDFLAGS)
-!endif
-
-# Libxml object files.
-XML_OBJS = $(XML_INTDIR)\buf.obj\
-	$(XML_INTDIR)\c14n.obj\
-	$(XML_INTDIR)\catalog.obj\
-	$(XML_INTDIR)\chvalid.obj\
-	$(XML_INTDIR)\debugXML.obj\
-	$(XML_INTDIR)\dict.obj\
-	$(XML_INTDIR)\encoding.obj\
-	$(XML_INTDIR)\entities.obj\
-	$(XML_INTDIR)\error.obj\
-	$(XML_INTDIR)\globals.obj\
-	$(XML_INTDIR)\hash.obj\
-	$(XML_INTDIR)\HTMLparser.obj\
-	$(XML_INTDIR)\HTMLtree.obj\
-	$(XML_INTDIR)\list.obj\
-	$(XML_INTDIR)\nanohttp.obj\
-	$(XML_INTDIR)\parser.obj\
-	$(XML_INTDIR)\parserInternals.obj\
-	$(XML_INTDIR)\pattern.obj\
-	$(XML_INTDIR)\relaxng.obj\
-	$(XML_INTDIR)\SAX2.obj\
-	$(XML_INTDIR)\schematron.obj\
-	$(XML_INTDIR)\threads.obj\
-	$(XML_INTDIR)\tree.obj\
-	$(XML_INTDIR)\uri.obj\
-	$(XML_INTDIR)\valid.obj\
-	$(XML_INTDIR)\xinclude.obj\
-	$(XML_INTDIR)\xlink.obj\
-	$(XML_INTDIR)\xmlIO.obj\
-	$(XML_INTDIR)\xmlmemory.obj\
-	$(XML_INTDIR)\xmlreader.obj\
-	$(XML_INTDIR)\xmlregexp.obj\
-	$(XML_INTDIR)\xmlmodule.obj\
-	$(XML_INTDIR)\xmlsave.obj\
-	$(XML_INTDIR)\xmlschemas.obj\
-	$(XML_INTDIR)\xmlschemastypes.obj\
-	$(XML_INTDIR)\xmlunicode.obj\
-	$(XML_INTDIR)\xmlwriter.obj\
-	$(XML_INTDIR)\xpath.obj\
-	$(XML_INTDIR)\xpointer.obj\
-	$(XML_INTDIR)\xmlstring.obj
-
-# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)\buf.obj\
-	$(XML_INTDIR_A)\c14n.obj\
-	$(XML_INTDIR_A)\catalog.obj\
-	$(XML_INTDIR_A)\chvalid.obj\
-	$(XML_INTDIR_A)\debugXML.obj\
-	$(XML_INTDIR_A)\dict.obj\
-	$(XML_INTDIR_A)\encoding.obj\
-	$(XML_INTDIR_A)\entities.obj\
-	$(XML_INTDIR_A)\error.obj\
-	$(XML_INTDIR_A)\globals.obj\
-	$(XML_INTDIR_A)\hash.obj\
-	$(XML_INTDIR_A)\HTMLparser.obj\
-	$(XML_INTDIR_A)\HTMLtree.obj\
-	$(XML_INTDIR_A)\list.obj\
-	$(XML_INTDIR_A)\nanohttp.obj\
-	$(XML_INTDIR_A)\parser.obj\
-	$(XML_INTDIR_A)\parserInternals.obj\
-	$(XML_INTDIR_A)\pattern.obj\
-	$(XML_INTDIR_A)\relaxng.obj\
-	$(XML_INTDIR_A)\SAX2.obj\
-	$(XML_INTDIR_A)\schematron.obj\
-	$(XML_INTDIR_A)\threads.obj\
-	$(XML_INTDIR_A)\tree.obj\
-	$(XML_INTDIR_A)\uri.obj\
-	$(XML_INTDIR_A)\valid.obj\
-	$(XML_INTDIR_A)\xinclude.obj\
-	$(XML_INTDIR_A)\xlink.obj\
-	$(XML_INTDIR_A)\xmlIO.obj\
-	$(XML_INTDIR_A)\xmlmemory.obj\
-	$(XML_INTDIR_A)\xmlreader.obj\
-	$(XML_INTDIR_A)\xmlregexp.obj\
-	$(XML_INTDIR_A)\xmlmodule.obj\
-	$(XML_INTDIR_A)\xmlsave.obj\
-	$(XML_INTDIR_A)\xmlschemas.obj\
-	$(XML_INTDIR_A)\xmlschemastypes.obj\
-	$(XML_INTDIR_A)\xmlunicode.obj\
-	$(XML_INTDIR_A)\xmlwriter.obj\
-	$(XML_INTDIR_A)\xpath.obj\
-	$(XML_INTDIR_A)\xpointer.obj\
-	$(XML_INTDIR_A)\xmlstring.obj
-
-# Xmllint and friends executables.
-UTILS = $(BINDIR)\xmllint.exe\
-	$(BINDIR)\xmlcatalog.exe\
-	$(BINDIR)\testModule.exe\
-	$(BINDIR)\runtest.exe\
-	$(BINDIR)\runsuite.exe\
-	$(BINDIR)\testapi.exe\
-	$(BINDIR)\testlimits.exe
-
-all : libxml libxmla utils
-
-libxml : $(BINDIR)\$(XML_SO) 
-
-libxmla : $(BINDIR)\$(XML_A)
-
-utils : $(UTILS)
-
-clean :
-	if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)
-	if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)
-	if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
-	if exist $(BINDIR) rmdir /S /Q $(BINDIR)
-
-distclean : clean
-	if exist config.* del config.*
-	if exist Makefile del Makefile
-
-rebuild : clean all
-
-install-libs : all
-	if not exist "$(INCPREFIX)\libxml2" mkdir "$(INCPREFIX)\libxml2"
-	if not exist "$(INCPREFIX)\libxml2\libxml" mkdir "$(INCPREFIX)\libxml2\libxml"
-	if not exist "$(BINPREFIX)" mkdir "$(BINPREFIX)"
-	if not exist "$(LIBPREFIX)" mkdir "$(LIBPREFIX)"
-	copy $(XML_SRCDIR)\include\libxml\*.h "$(INCPREFIX)\libxml2\libxml"
-	copy $(BINDIR)\$(XML_SO) "$(SOPREFIX)"
-	copy $(BINDIR)\$(XML_A) "$(LIBPREFIX)"
-	copy $(BINDIR)\$(XML_IMP) "$(LIBPREFIX)"
-	copy $(BINDIR)\*.exe "$(BINPREFIX)"
-
-install : install-libs
-	copy $(BINDIR)\*.exe "$(BINPREFIX)"
-
-install-dist : install-libs
-	copy $(BINDIR)\xml*.exe "$(BINPREFIX)"
-
-# This is a target for me, to make a binary distribution. Not for the public use,
-# keep your hands off :-)
-BDVERSION = $(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION).$(LIBXML_MICRO_VERSION)
-BDPREFIX = $(XML_BASENAME)-$(BDVERSION).win32
-bindist : all
-	$(MAKE) /nologo PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)\bin install-dist
-	cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
-
-
-# Makes the output directory.
-$(BINDIR)\$(DUMMY) :
-	if not exist $(BINDIR) mkdir $(BINDIR)
-	touch $(BINDIR)\$(DUMMY)
-
-# Makes the libxml intermediate directory.
-$(XML_INTDIR)\$(DUMMY) :
-	if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
-	touch $(XML_INTDIR)\$(DUMMY)
-
-# Makes the static libxml intermediate directory.
-$(XML_INTDIR_A)\$(DUMMY) :
-	if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
-	touch $(XML_INTDIR_A)\$(DUMMY)
-
-# An implicit rule for libxml compilation.
-{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj:
-	$(CC) $(CFLAGS) -n$(XML_INTDIR) -c $<
-
-# An implicit rule for static libxml compilation.
-{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj:
-	$(CC) $(CFLAGS) -DLIBXML_STATIC -n$(XML_INTDIR_A)\ -c $<
-
-# Compiles libxml source. Uses the implicit rule for commands.
-$(XML_OBJS) : $(XML_INTDIR)\$(DUMMY)
-
-# Compiles static libxml source. Uses the implicit rule for commands.
-$(XML_OBJS_A) : $(XML_INTDIR_A)\$(DUMMY) 
-
-#def4bcb.exe : def4bcb.c
-
-# Creates the libxml shared object.
-$(BINDIR)\$(XML_SO) : $(BINDIR)\$(DUMMY) $(XML_OBJS)
-	$(LD) $(LDFLAGS) -Tpd -Gi c0d32.obj $(XML_OBJS),$(BINDIR)\$(XML_SO),,$(LIBS)
-
-#$(BINDIR)\$(XML_SO) : $(BINDIR)\$(DUMMY) $(XML_OBJS)
-#	$(LD) $(LDFLAGS) -Tpd -Gi c0d32.obj $(XML_OBJS),$(BINDIR)\$(XML_SO),,$(LIBS)
-
-# Creates the libxml archive.
-$(BINDIR)\$(XML_A) : $(BINDIR)\$(DUMMY) $(XML_OBJS_A)
-	$(AR) $(BINDIR)\$(XML_A) $(ARFLAGS) /u $(XML_OBJS_A)
-
-# Makes the utils intermediate directory.
-$(UTILS_INTDIR)\$(DUMMY) :
-	if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
-	touch $(UTILS_INTDIR)\$(DUMMY)
-
-# An implicit rule for xmllint and friends.
-!if "$(STATIC)" == "1"
-{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
-	$(CC) -DLIBXML_STATIC -w -tWC $(CFLAGS) -o$(UTILS_INTDIR)\$&.obj -c $< 
-	$(LD) $(LDFLAGS) c0x32.obj $(UTILS_INTDIR)\$&.obj,$@,,$(LIBS) $(XML_A)
-!else
-{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
-	$(CC) $(CFLAGS) -tWC -o$(UTILS_INTDIR)\$&.obj -c $< 
-	$(LD) $(LDFLAGS) c0x32.obj $(UTILS_INTDIR)\$&.obj $(XML_IMP),$@,,$(LIBS) 
-!endif
-
-# Builds xmllint and friends. Uses the implicit rule for commands.
-$(UTILS) : $(UTILS_INTDIR)\$(DUMMY) $(BINDIR)\$(DUMMY) $(BINDIR)\$(XML_SO) $(BINDIR)\$(XML_A)
-
-# Source dependences should be autogenerated somehow here, but how to
-# do it? I have no clue.
-
diff -pruN 2.14.6+dfsg-0.1/win32/Makefile.mingw 2.15.0+dfsg-0.3/win32/Makefile.mingw
--- 2.14.6+dfsg-0.1/win32/Makefile.mingw	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/Makefile.mingw	1970-01-01 00:00:00.000000000 +0000
@@ -1,300 +0,0 @@
-# Makefile for libxml2, specific for Windows, GCC (mingw) and GNU make.
-#
-# Take a look at the beginning and modify the variables to suit your 
-# environment. Having done that, you can do a
-#
-# nmake [all]     to build the libxml and the accompanying utilities.
-# nmake clean     to remove all compiler output files and return to a
-#                 clean state.
-# nmake rebuild   to rebuild everything from scratch. This basically does
-#                 a 'nmake clean' and then a 'nmake all'.
-# nmake install   to install the library and its header files.
-#
-# November 2002, Igor Zlatkovic <igor@zlatkovic.com>
-
-# There should never be a need to modify anything below this line.
-# ----------------------------------------------------------------
-
-AUTOCONF = .\config.mingw
-include $(AUTOCONF)
-
-# Names of various input and output components.
-XML_NAME = xml2
-XML_BASENAME = lib$(XML_NAME)
-XML_SO = $(XML_BASENAME).dll
-XML_IMP = $(XML_BASENAME).lib
-XML_A = $(XML_BASENAME).a
-
-# Place where we let the compiler put its output.
-BINDIR = bin.mingw
-XML_INTDIR = int.mingw
-XML_INTDIR_A = int.a.mingw
-UTILS_INTDIR = int.utils.mingw
-
-# The preprocessor and its options.
-CPP = gcc.exe -E
-CPPFLAGS += -I$(XML_SRCDIR)/include -DNOLIBTOOL 
-
-# The compiler and its options.
-CC = gcc.exe
-CFLAGS += -D_WINDOWS -D_MBCS -DNOLIBTOOL
-CFLAGS += -I$(XML_SRCDIR) -I$(XML_SRCDIR)/include -I$(INCPREFIX) $(INCLUDE)
-ifeq ($(WITH_THREADS),ctls)
-CFLAGS += "-DXML_THREAD_LOCAL=__declspec(thread)"
-endif
-
-# The linker and its options.
-LD = gcc.exe
-LDFLAGS += -Wl,--major-image-version,$(LIBXML_MAJOR_VERSION)
-LDFLAGS += -Wl,--minor-image-version,$(LIBXML_MINOR_VERSION)
-LDFLAGS += -Wl,-L,$(BINDIR) -Wl,-L,$(LIBPREFIX)
-LIBS =
-ifeq ($(WITH_HTTP),1)
-LIBS += -lwsock32 -lws2_32
-endif 
-ifeq ($(WITH_ICONV),1)
-LIBS += -liconv
-endif 
-ifeq ($(WITH_ZLIB),1)
-# Could be named differently
-# LIBS += -lzdll
-LIBS += -lz
-endif
-ifeq ($(WITH_LZMA),1)
-LIBS += -llzma
-endif
-ifeq ($(WITH_THREADS),posix)
-LIBS += -lpthreadGC
-endif
-ifeq ($(WITH_MODULES),1)
-LIBS += -lkernel32
-endif
-
-LIBS += $(LIB)
-
-# The archiver and its options.
-AR = ar.exe
-ARFLAGS = -r
-
-# Optimisation and debug symbols.
-ifeq ($(DEBUG),1)
-CFLAGS += -D_DEBUG -g
-LDFLAGS += 
-else
-CFLAGS += -DNDEBUG -O2 
-LDFLAGS += 
-endif
-
-
-# Libxml object files.
-XML_OBJS = $(XML_INTDIR)/buf.o\
-	$(XML_INTDIR)/c14n.o\
-	$(XML_INTDIR)/catalog.o\
-	$(XML_INTDIR)/chvalid.o\
-	$(XML_INTDIR)/debugXML.o\
-	$(XML_INTDIR)/dict.o\
-	$(XML_INTDIR)/encoding.o\
-	$(XML_INTDIR)/entities.o\
-	$(XML_INTDIR)/error.o\
-	$(XML_INTDIR)/globals.o\
-	$(XML_INTDIR)/hash.o\
-	$(XML_INTDIR)/HTMLparser.o\
-	$(XML_INTDIR)/HTMLtree.o\
-	$(XML_INTDIR)/legacy.o\
-	$(XML_INTDIR)/list.o\
-	$(XML_INTDIR)/nanohttp.o\
-	$(XML_INTDIR)/parser.o\
-	$(XML_INTDIR)/parserInternals.o\
-	$(XML_INTDIR)/pattern.o\
-	$(XML_INTDIR)/relaxng.o\
-	$(XML_INTDIR)/SAX.o\
-	$(XML_INTDIR)/SAX2.o\
-	$(XML_INTDIR)/schematron.o\
-	$(XML_INTDIR)/threads.o\
-	$(XML_INTDIR)/tree.o\
-	$(XML_INTDIR)/uri.o\
-	$(XML_INTDIR)/valid.o\
-	$(XML_INTDIR)/xinclude.o\
-	$(XML_INTDIR)/xlink.o\
-	$(XML_INTDIR)/xmlIO.o\
-	$(XML_INTDIR)/xmlmemory.o\
-	$(XML_INTDIR)/xmlreader.o\
-	$(XML_INTDIR)/xmlregexp.o\
-	$(XML_INTDIR)/xmlmodule.o\
-	$(XML_INTDIR)/xmlsave.o\
-	$(XML_INTDIR)/xmlschemas.o\
-	$(XML_INTDIR)/xmlschemastypes.o\
-	$(XML_INTDIR)/xmlunicode.o\
-	$(XML_INTDIR)/xmlwriter.o\
-	$(XML_INTDIR)/xpath.o\
-	$(XML_INTDIR)/xpointer.o\
-	$(XML_INTDIR)/xmlstring.o
-
-XML_SRCS = $(subst .o,.c,$(subst $(XML_INTDIR)/,$(XML_SRCDIR)/,$(XML_OBJS)))
-
-# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)/buf.o\
-	$(XML_INTDIR_A)/c14n.o\
-	$(XML_INTDIR_A)/catalog.o\
-	$(XML_INTDIR_A)/chvalid.o\
-	$(XML_INTDIR_A)/debugXML.o\
-	$(XML_INTDIR_A)/dict.o\
-	$(XML_INTDIR_A)/encoding.o\
-	$(XML_INTDIR_A)/entities.o\
-	$(XML_INTDIR_A)/error.o\
-	$(XML_INTDIR_A)/globals.o\
-	$(XML_INTDIR_A)/hash.o\
-	$(XML_INTDIR_A)/HTMLparser.o\
-	$(XML_INTDIR_A)/HTMLtree.o\
-	$(XML_INTDIR_A)/legacy.o\
-	$(XML_INTDIR_A)/list.o\
-	$(XML_INTDIR_A)/nanohttp.o\
-	$(XML_INTDIR_A)/parser.o\
-	$(XML_INTDIR_A)/parserInternals.o\
-	$(XML_INTDIR_A)/pattern.o\
-	$(XML_INTDIR_A)/relaxng.o\
-	$(XML_INTDIR_A)/SAX.o\
-	$(XML_INTDIR_A)/SAX2.o\
-	$(XML_INTDIR_A)/schematron.o\
-	$(XML_INTDIR_A)/threads.o\
-	$(XML_INTDIR_A)/tree.o\
-	$(XML_INTDIR_A)/uri.o\
-	$(XML_INTDIR_A)/valid.o\
-	$(XML_INTDIR_A)/xinclude.o\
-	$(XML_INTDIR_A)/xlink.o\
-	$(XML_INTDIR_A)/xmlIO.o\
-	$(XML_INTDIR_A)/xmlmemory.o\
-	$(XML_INTDIR_A)/xmlreader.o\
-	$(XML_INTDIR_A)/xmlregexp.o\
-	$(XML_INTDIR_A)/xmlmodule.o\
-	$(XML_INTDIR_A)/xmlsave.o\
-	$(XML_INTDIR_A)/xmlschemas.o\
-	$(XML_INTDIR_A)/xmlschemastypes.o\
-	$(XML_INTDIR_A)/xmlunicode.o\
-	$(XML_INTDIR_A)/xmlwriter.o\
-	$(XML_INTDIR_A)/xpath.o\
-	$(XML_INTDIR_A)/xpointer.o\
-	$(XML_INTDIR_A)/xmlstring.o
-
-XML_SRCS_A = $(subst .o,.c,$(subst $(XML_INTDIR_A)/,$(XML_SRCDIR)/,$(XML_OBJS_A)))
-
-# Xmllint and friends executables.
-UTILS = $(BINDIR)/xmllint.exe\
-	$(BINDIR)/xmlcatalog.exe\
-	$(BINDIR)/testModule.exe\
-	$(BINDIR)/runtest.exe\
-	$(BINDIR)/runsuite.exe\
-	$(BINDIR)/testapi.exe\
-	$(BINDIR)/testlimits.exe
-
-all : dep libxml libxmla utils
-
-libxml : $(BINDIR)/$(XML_SO) 
-
-libxmla : $(BINDIR)/$(XML_A)
-
-utils : $(UTILS)
-
-clean :
-	cmd.exe /C "if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)"
-	cmd.exe /C "if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)"
-	cmd.exe /C "if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)"
-	cmd.exe /C "if exist $(BINDIR) rmdir /S /Q $(BINDIR)"
-	cmd.exe /C "if exist depends.mingw del depends.mingw"
-
-distclean : clean
-	cmd.exe /C "if exist config.* del config.*"
-	cmd.exe /C "if exist Makefile del Makefile"
-
-rebuild : clean all
-
-install-libs : all
-	cmd.exe /C "if not exist $(INCPREFIX)\libxml2 mkdir $(INCPREFIX)\libxml2"
-	cmd.exe /C "if not exist $(INCPREFIX)\libxml2\libxml mkdir $(INCPREFIX)\libxml2\libxml"
-	cmd.exe /C "if not exist $(BINPREFIX) mkdir $(BINPREFIX)"
-	cmd.exe /C "if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)"
-	cmd.exe /C "copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml2\libxml"
-	cmd.exe /C "copy $(BINDIR)\$(XML_SO) $(SOPREFIX)"
-	cmd.exe /C "copy $(BINDIR)\$(XML_A) $(LIBPREFIX)"
-	cmd.exe /C "copy $(BINDIR)\$(XML_IMP) $(LIBPREFIX)"
-	cmd.exe /C "copy $(BINDIR)\xml*.exe $(BINPREFIX)"
-
-install : install-libs
-	cmd.exe /C "copy $(BINDIR)\*.exe $(BINPREFIX)"
-
-install-dist : install-libs
-	cmd.exe /C "copy $(BINDIR)\xml*.exe $(BINPREFIX)"
-
-# This is a target for me, to make a binary distribution. Not for the public use,
-# keep your hands off :-)
-BDVERSION = $(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION).$(LIBXML_MICRO_VERSION)
-BDPREFIX = $(XML_BASENAME)-$(BDVERSION).win32
-bindist : all
-	$(MAKE) PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)/bin install-dist
-	cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
-
-
-# Creates the dependency file
-dep :
-	$(CC) $(CFLAGS) -M $(XML_SRCS) > depends.mingw
-
-
-# Makes the output directory.
-$(BINDIR) :
-	cmd.exe /C if not exist $(BINDIR) mkdir $(BINDIR)
-
-
-# Makes the libxml intermediate directory.
-$(XML_INTDIR) :
-	cmd.exe /C if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
-
-# Makes the static libxml intermediate directory.
-$(XML_INTDIR_A) :
-	cmd.exe /C if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
-
-# An implicit rule for libxml compilation.
-$(XML_INTDIR)/%.o : $(XML_SRCDIR)/%.c
-	$(CC) $(CFLAGS) -o $@ -c $<
-
-# An implicit rule for static libxml compilation.
-$(XML_INTDIR_A)/%.o : $(XML_SRCDIR)/%.c
-	$(CC) $(CFLAGS) -DLIBXML_STATIC -o $@ -c $<
-
-
-# Compiles libxml source. Uses the implicit rule for commands.
-$(XML_OBJS) : $(XML_INTDIR)
-
-# Compiles static libxml source. Uses the implicit rule for commands.
-$(XML_OBJS_A) : $(XML_INTDIR_A) 
-
-# Creates the libxml shared object.
-XMLSO_LDFLAGS = $(LDFLAGS) -shared -Wl,--dll -Wl,--out-implib,$(BINDIR)/$(XML_IMP)
-$(BINDIR)/$(XML_SO) : $(BINDIR) $(XML_OBJS)
-	$(LD) $(XMLSO_LDFLAGS) -o $(BINDIR)/$(XML_SO) $(XML_OBJS) $(LIBS)
-
-# Creates the libxml archive.
-$(BINDIR)/$(XML_A) : $(BINDIR) $(XML_OBJS_A)
-	$(AR) $(ARFLAGS) $(BINDIR)\$(XML_A) $(XML_OBJS_A)
-
-
-# Makes the utils intermediate directory.
-$(UTILS_INTDIR) :
-	cmd.exe /C if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
-
-# An implicit rule for xmllint and friends.
-ifeq ($(STATIC),1)
-$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
-	$(CC) -DLIBXML_STATIC $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $< 
-	$(LD) $(LDFLAGS) -o $@ $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -l$(XML_BASENAME) $(LIBS) 
-else
-$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
-	$(CC) $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $< 
-	$(LD) $(LDFLAGS) -o $@ $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -l$(XML_BASENAME) $(LIBS) 
-endif
-
-# Builds xmllint and friends. Uses the implicit rule for commands.
-$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla
-
-# Source dependencies
-#-include depends.mingw
-
diff -pruN 2.14.6+dfsg-0.1/win32/Makefile.msvc 2.15.0+dfsg-0.3/win32/Makefile.msvc
--- 2.14.6+dfsg-0.1/win32/Makefile.msvc	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/Makefile.msvc	1970-01-01 00:00:00.000000000 +0000
@@ -1,398 +0,0 @@
-# Makefile for libxml2, specific for Windows, MSVC and NMAKE.
-#
-# Take a look at the beginning and modify the variables to suit your 
-# environment. Having done that, you can do a
-#
-# nmake [all]     to build the libxml and the accompanying utilities.
-# nmake clean     to remove all compiler output files and return to a
-#                 clean state.
-# nmake rebuild   to rebuild everything from scratch. This basically does
-#                 a 'nmake clean' and then a 'nmake all'.
-# nmake install   to install the library and its header files.
-#
-# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
-
-# There should never be a need to modify anything below this line.
-# ----------------------------------------------------------------
-
-AUTOCONF = .\config.msvc
-!include $(AUTOCONF)
-
-# Names of various input and output components.
-XML_NAME = xml2
-XML_BASENAME = lib$(XML_NAME)
-XML_SO = $(XML_BASENAME).dll
-XML_RES = $(XML_BASENAME).res
-XML_IMP = $(XML_BASENAME).lib
-XML_A = $(XML_BASENAME)_a.lib
-XML_A_DLL = $(XML_BASENAME)_a_dll.lib
-
-# Place where we let the compiler put its output.
-BINDIR = bin.msvc
-XML_INTDIR = int.msvc
-XML_INTDIR_A = int.a.msvc
-XML_INTDIR_A_DLL = int.a.dll.msvc
-UTILS_INTDIR = int.utils.msvc
-
-# The preprocessor and its options.
-CPP = cl.exe /EP
-CPPFLAGS = /nologo /I$(XML_SRCDIR)\include /D "NOLIBTOOL" 
-
-# The compiler and its options.
-CC = cl.exe
-CFLAGS = /nologo /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W3 /wd4244 /wd4267 $(CRUNTIME)
-CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX)
-!if "$(WITH_THREADS)" == "ctls"
-CFLAGS = $(CFLAGS) /D "XML_THREAD_LOCAL=__declspec(thread)"
-!endif
-CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
-
-# The linker and its options.
-LD = link.exe
-LDFLAGS = /nologo /VERSION:$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)
-LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX)
-LIBS =
-!if "$(WITH_HTTP)" == "1"
-LIBS = $(LIBS) wsock32.lib ws2_32.lib
-!endif 
-!if "$(WITH_ICONV)" == "1"
-LIBS = $(LIBS) iconv.lib
-!endif 
-!if "$(WITH_ICU)" == "1"
-!if "$(STATIC)" == "1"
-LIBS = $(LIBS) advapi32.lib sicuuc.lib sicuin.lib sicudt.lib
-!else
-LIBS = $(LIBS) icuuc.lib icuin.lib icudt.lib
-!endif
-!endif
-!if "$(WITH_ZLIB)" == "1"
-# could be named differently zdll or zlib
-# LIBS = $(LIBS) zdll.lib
-LIBS = $(LIBS) zlib.lib
-!endif
-!if "$(WITH_LZMA)" == "1"
-LIBS = $(LIBS) liblzma.lib
-!endif
-!if "$(WITH_THREADS)" == "posix"
-LIBS = $(LIBS) pthreadVC.lib
-!endif
-!if "$(WITH_MODULES)" == "1"
-LIBS = $(LIBS) kernel32.lib
-!endif
-LIBS = $(LIBS) Bcrypt.lib
-
-# The archiver and its options.
-AR = lib.exe
-ARFLAGS = /nologo
-
-# Optimisation and debug symbols.
-!if "$(DEBUG)" == "1"
-CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7
-LDFLAGS = $(LDFLAGS) /DEBUG
-!else
-CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 
-# commented out as this break VC10 c.f. 634846
-# LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
-LDFLAGS = $(LDFLAGS)
-!endif
-
-# append CFLAGS etc. passed on command line
-CPPFLAGS = $(CPPFLAGS) $(EXTRA_CPPFLAGS)
-CFLAGS = $(CFLAGS) $(EXTRA_CFLAGS)
-LDFLAGS = $(LDFLAGS) $(EXTRA_LDFLAGS)
-
-# Libxml object files.
-XML_OBJS = $(XML_INTDIR)\buf.obj\
-	$(XML_INTDIR)\c14n.obj\
-	$(XML_INTDIR)\catalog.obj\
-	$(XML_INTDIR)\chvalid.obj\
-	$(XML_INTDIR)\debugXML.obj\
-	$(XML_INTDIR)\dict.obj\
-	$(XML_INTDIR)\encoding.obj\
-	$(XML_INTDIR)\entities.obj\
-	$(XML_INTDIR)\error.obj\
-	$(XML_INTDIR)\globals.obj\
-	$(XML_INTDIR)\hash.obj\
-	$(XML_INTDIR)\HTMLparser.obj\
-	$(XML_INTDIR)\HTMLtree.obj\
-	$(XML_INTDIR)\list.obj\
-	$(XML_INTDIR)\nanohttp.obj\
-	$(XML_INTDIR)\parser.obj\
-	$(XML_INTDIR)\parserInternals.obj\
-	$(XML_INTDIR)\pattern.obj\
-	$(XML_INTDIR)\relaxng.obj\
-	$(XML_INTDIR)\SAX2.obj\
-	$(XML_INTDIR)\schematron.obj\
-	$(XML_INTDIR)\threads.obj\
-	$(XML_INTDIR)\tree.obj\
-	$(XML_INTDIR)\uri.obj\
-	$(XML_INTDIR)\valid.obj\
-	$(XML_INTDIR)\xinclude.obj\
-	$(XML_INTDIR)\xlink.obj\
-	$(XML_INTDIR)\xmlIO.obj\
-	$(XML_INTDIR)\xmlmemory.obj\
-	$(XML_INTDIR)\xmlreader.obj\
-	$(XML_INTDIR)\xmlregexp.obj\
-	$(XML_INTDIR)\xmlmodule.obj\
-	$(XML_INTDIR)\xmlsave.obj\
-	$(XML_INTDIR)\xmlschemas.obj\
-	$(XML_INTDIR)\xmlschemastypes.obj\
-	$(XML_INTDIR)\xmlunicode.obj\
-	$(XML_INTDIR)\xmlwriter.obj\
-	$(XML_INTDIR)\xpath.obj\
-	$(XML_INTDIR)\xpointer.obj\
-	$(XML_INTDIR)\xmlstring.obj
-
-# Static libxml object files.
-XML_OBJS_A = $(XML_INTDIR_A)\buf.obj\
-	$(XML_INTDIR_A)\c14n.obj\
-	$(XML_INTDIR_A)\catalog.obj\
-	$(XML_INTDIR_A)\chvalid.obj\
-	$(XML_INTDIR_A)\debugXML.obj\
-	$(XML_INTDIR_A)\dict.obj\
-	$(XML_INTDIR_A)\encoding.obj\
-	$(XML_INTDIR_A)\entities.obj\
-	$(XML_INTDIR_A)\error.obj\
-	$(XML_INTDIR_A)\globals.obj\
-	$(XML_INTDIR_A)\hash.obj\
-	$(XML_INTDIR_A)\HTMLparser.obj\
-	$(XML_INTDIR_A)\HTMLtree.obj\
-	$(XML_INTDIR_A)\list.obj\
-	$(XML_INTDIR_A)\nanohttp.obj\
-	$(XML_INTDIR_A)\parser.obj\
-	$(XML_INTDIR_A)\parserInternals.obj\
-	$(XML_INTDIR_A)\pattern.obj\
-	$(XML_INTDIR_A)\relaxng.obj\
-	$(XML_INTDIR_A)\SAX2.obj\
-	$(XML_INTDIR_A)\schematron.obj\
-	$(XML_INTDIR_A)\threads.obj\
-	$(XML_INTDIR_A)\tree.obj\
-	$(XML_INTDIR_A)\uri.obj\
-	$(XML_INTDIR_A)\valid.obj\
-	$(XML_INTDIR_A)\xinclude.obj\
-	$(XML_INTDIR_A)\xlink.obj\
-	$(XML_INTDIR_A)\xmlIO.obj\
-	$(XML_INTDIR_A)\xmlmemory.obj\
-	$(XML_INTDIR_A)\xmlreader.obj\
-	$(XML_INTDIR_A)\xmlregexp.obj\
-	$(XML_INTDIR_A)\xmlmodule.obj\
-	$(XML_INTDIR_A)\xmlsave.obj\
-	$(XML_INTDIR_A)\xmlschemas.obj\
-	$(XML_INTDIR_A)\xmlschemastypes.obj\
-	$(XML_INTDIR_A)\xmlunicode.obj\
-	$(XML_INTDIR_A)\xmlwriter.obj\
-	$(XML_INTDIR_A)\xpath.obj\
-	$(XML_INTDIR_A)\xpointer.obj\
-	$(XML_INTDIR_A)\xmlstring.obj
-
-# Static libxml object files.
-XML_OBJS_A_DLL = $(XML_INTDIR_A_DLL)\buf.obj\
-	$(XML_INTDIR_A_DLL)\c14n.obj\
-	$(XML_INTDIR_A_DLL)\catalog.obj\
-	$(XML_INTDIR_A_DLL)\chvalid.obj\
-	$(XML_INTDIR_A_DLL)\debugXML.obj\
-	$(XML_INTDIR_A_DLL)\dict.obj\
-	$(XML_INTDIR_A_DLL)\encoding.obj\
-	$(XML_INTDIR_A_DLL)\entities.obj\
-	$(XML_INTDIR_A_DLL)\error.obj\
-	$(XML_INTDIR_A_DLL)\globals.obj\
-	$(XML_INTDIR_A_DLL)\hash.obj\
-	$(XML_INTDIR_A_DLL)\HTMLparser.obj\
-	$(XML_INTDIR_A_DLL)\HTMLtree.obj\
-	$(XML_INTDIR_A_DLL)\list.obj\
-	$(XML_INTDIR_A_DLL)\nanohttp.obj\
-	$(XML_INTDIR_A_DLL)\parser.obj\
-	$(XML_INTDIR_A_DLL)\parserInternals.obj\
-	$(XML_INTDIR_A_DLL)\pattern.obj\
-	$(XML_INTDIR_A_DLL)\relaxng.obj\
-	$(XML_INTDIR_A_DLL)\SAX2.obj\
-	$(XML_INTDIR_A_DLL)\schematron.obj\
-	$(XML_INTDIR_A_DLL)\threads.obj\
-	$(XML_INTDIR_A_DLL)\tree.obj\
-	$(XML_INTDIR_A_DLL)\uri.obj\
-	$(XML_INTDIR_A_DLL)\valid.obj\
-	$(XML_INTDIR_A_DLL)\xinclude.obj\
-	$(XML_INTDIR_A_DLL)\xlink.obj\
-	$(XML_INTDIR_A_DLL)\xmlIO.obj\
-	$(XML_INTDIR_A_DLL)\xmlmemory.obj\
-	$(XML_INTDIR_A_DLL)\xmlreader.obj\
-	$(XML_INTDIR_A_DLL)\xmlregexp.obj\
-	$(XML_INTDIR_A_DLL)\xmlmodule.obj\
-	$(XML_INTDIR_A_DLL)\xmlsave.obj\
-	$(XML_INTDIR_A_DLL)\xmlschemas.obj\
-	$(XML_INTDIR_A_DLL)\xmlschemastypes.obj\
-	$(XML_INTDIR_A_DLL)\xmlunicode.obj\
-	$(XML_INTDIR_A_DLL)\xmlwriter.obj\
-	$(XML_INTDIR_A_DLL)\xpath.obj\
-	$(XML_INTDIR_A_DLL)\xpointer.obj\
-	$(XML_INTDIR_A_DLL)\xmlstring.obj
-
-!if "$(WITH_LZMA)" == "1"
-XML_OBJS = $(XML_OBJS) $(XML_INTDIR)\xzlib.obj
-XML_OBJS_A = $(XML_OBJS_A) $(XML_INTDIR_A)\xzlib.obj
-XML_OBJS_A_DLL = $(XML_OBJS_A_DLL) $(XML_INTDIR_A_DLL)\xzlib.obj
-!endif
-
-# Xmllint and friends executables.
-UTILS = $(BINDIR)\xmllint.exe\
-	$(BINDIR)\xmlcatalog.exe\
-	$(BINDIR)\testModule.exe\
-	$(BINDIR)\runtest.exe\
-	$(BINDIR)\runsuite.exe\
-	$(BINDIR)\runxmlconf.exe\
-	$(BINDIR)\testapi.exe\
-	$(BINDIR)\testchar.exe\
-	$(BINDIR)\testdict.exe\
-	$(BINDIR)\testlimits.exe\
-	$(BINDIR)\testrecurse.exe
-	
-!if "$(VCMANIFEST)" == "1"
-_VC_MANIFEST_EMBED_EXE= if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
-_VC_MANIFEST_EMBED_DLL= if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-!else
-_VC_MANIFEST_EMBED_EXE=
-_VC_MANIFEST_EMBED_DLL=
-!endif
-
-all : libxml libxmla libxmladll utils
-
-libxml : $(BINDIR)\$(XML_SO) 
-
-libxmla : $(BINDIR)\$(XML_A)
-
-libxmladll : $(BINDIR)\$(XML_A_DLL)
-
-utils : $(UTILS)
-
-clean :
-	if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)
-	if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)
-	if exist $(XML_INTDIR_A_DLL) rmdir /S /Q $(XML_INTDIR_A_DLL)
-	if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
-	if exist $(BINDIR) rmdir /S /Q $(BINDIR)
-
-distclean : clean
-	if exist config.* del config.*
-	if exist Makefile del Makefile
-
-rebuild : clean all
-
-install-libs : all
-	if not exist $(INCPREFIX)\libxml2 mkdir $(INCPREFIX)\libxml2
-	if not exist $(INCPREFIX)\libxml2\libxml mkdir $(INCPREFIX)\libxml2\libxml
-	if not exist $(BINPREFIX) mkdir $(BINPREFIX)
-	if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
-	if not exist $(SOPREFIX) mkdir $(SOPREFIX)
-	copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml2\libxml
-	copy $(BINDIR)\$(XML_SO) $(SOPREFIX)
-	copy $(BINDIR)\$(XML_A) $(LIBPREFIX)
-	copy $(BINDIR)\$(XML_A_DLL) $(LIBPREFIX)
-	copy $(BINDIR)\$(XML_IMP) $(LIBPREFIX)
-
-install : install-libs 
-	copy $(BINDIR)\*.exe $(BINPREFIX)
-	-copy $(BINDIR)\*.pdb $(BINPREFIX)
-
-install-dist : install-libs 
-	copy $(BINDIR)\xml*.exe $(BINPREFIX)
-	-copy $(BINDIR)\xml*.pdb $(BINPREFIX)
-
-# This is a target for me, to make a binary distribution. Not for the public use,
-# keep your hands off :-)
-BDVERSION = $(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION).$(LIBXML_MICRO_VERSION)
-BDPREFIX = $(XML_BASENAME)-$(BDVERSION).win32
-bindist : all
-	$(MAKE) /nologo PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)\bin install-dist
-	cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
-
-
-# Makes the output directory.
-$(BINDIR) :
-	if not exist $(BINDIR) mkdir $(BINDIR)
-
-
-# Makes the libxml intermediate directory.
-$(XML_INTDIR) :
-	if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
-
-# Makes the static libxml intermediate directory.
-$(XML_INTDIR_A) :
-	if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
-
-# Makes the static for dll libxml intermediate directory.
-$(XML_INTDIR_A_DLL) :
-	if not exist $(XML_INTDIR_A_DLL) mkdir $(XML_INTDIR_A_DLL)
-
-# An implicit rule for libxml compilation.
-{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj::
-	$(CC) $(CFLAGS) /Fo$(XML_INTDIR)\ /c $<
-
-# An implicit rule for static libxml compilation.
-{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj::
-	$(CC) $(CFLAGS) /D "LIBXML_STATIC" /Fo$(XML_INTDIR_A)\ /c $<
-
-# An implicit rule for static for dll libxml compilation.
-{$(XML_SRCDIR)}.c{$(XML_INTDIR_A_DLL)}.obj::
-	$(CC) $(CFLAGS) /D "LIBXML_STATIC" /D "LIBXML_STATIC_FOR_DLL" /Fo$(XML_INTDIR_A_DLL)\ /c $<
-
-# Compiles libxml source. Uses the implicit rule for commands.
-$(XML_OBJS) : $(XML_INTDIR) 
-
-# Compiles static libxml source. Uses the implicit rule for commands.
-$(XML_OBJS_A) : $(XML_INTDIR_A) 
-
-# Compiles static for dll libxml source. Uses the implicit rule for commands.
-$(XML_OBJS_A_DLL) : $(XML_INTDIR_A_DLL) 
-
-$(XML_INTDIR)\$(XML_RES) : $(XML_INTDIR) libxml2.rc
-	rc -Fo $(XML_INTDIR)\$(XML_RES) libxml2.rc
-
-# Creates the libxml shared object.
-$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_RES)
-	$(LD) $(LDFLAGS) /DLL \
-		/IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(XML_INTDIR)\$(XML_RES) $(LIBS)
-	@$(_VC_MANIFEST_EMBED_DLL)
-
-# Creates the libxml archive.
-$(BINDIR)\$(XML_A) : $(BINDIR) $(XML_OBJS_A)
-	$(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A) $(XML_OBJS_A)
-
-# Creates the libxml static for dll archive.
-$(BINDIR)\$(XML_A_DLL) : $(BINDIR) $(XML_OBJS_A_DLL)
-	$(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A_DLL) $(XML_OBJS_A_DLL)
-
-# Makes the utils intermediate directory.
-$(UTILS_INTDIR) :
-	if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
-
-# An implicit rule for xmllint and friends.
-!if "$(STATIC)" == "1"
-{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
-	$(CC) /D "LIBXML_STATIC" $(CFLAGS) /Fo$(UTILS_INTDIR)\ /c $< 
-	$(LD) $(LDFLAGS) /OUT:$@ $(XML_A) $(LIBS) $(UTILS_INTDIR)\$(<B).obj
-	@$(_VC_MANIFEST_EMBED_EXE)
-!else
-{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
-	$(CC) $(CFLAGS) /Fo$(UTILS_INTDIR)\ /c $< 
-	$(LD) $(LDFLAGS) /OUT:$@ $(XML_IMP) $(LIBS) $(UTILS_INTDIR)\$(<B).obj
-	@$(_VC_MANIFEST_EMBED_EXE)
-!endif
-
-# Builds xmllint and friends. Uses the implicit rule for commands.
-$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla libxmladll
-
-# Source dependences should be autogenerated somehow here, but how to
-# do it? I have no clue.
-
-# TESTS
-
-tests : checktests XPathtests
-
-checktests : $(UTILS)
-	cd .. && win32\$(BINDIR)\runtest.exe
-	cd .. && win32\$(BINDIR)\testrecurse.exe
-	cd .. && win32\$(BINDIR)\testapi.exe
-	cd .. && win32\$(BINDIR)\testchar.exe
-	cd .. && win32\$(BINDIR)\testdict.exe
-	cd .. && win32\$(BINDIR)\runxmlconf.exe
-
diff -pruN 2.14.6+dfsg-0.1/win32/Readme.txt 2.15.0+dfsg-0.3/win32/Readme.txt
--- 2.14.6+dfsg-0.1/win32/Readme.txt	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/Readme.txt	1970-01-01 00:00:00.000000000 +0000
@@ -1,229 +0,0 @@
-
-                             Windows port
-                             ============
-
-DEPRECATION WARNING: The build system in the win32 directory is deprecated
-and will be removed in a future release. Please switch to CMake.
-
-This directory contains the files required to build this software on the
-native Windows platform. This is not a place to look for help if you are
-using a POSIX emulator, such as Cygwin. Check the Unix instructions for 
-that.
-
-
-
-CONTENTS
-========
-
-1. General
-   1.1 Building From the Command-Line
-   1.2 Configuring The Source
-   1.3 Compiling
-   1.4 Installing
-
-2. Compiler Specifics
-   2.1 Microsoft Visual C/C++
-   2.1 GNU C/C++, Mingw Edition
-   2.2 Borland C++ Builder
-       2.2.1 Building with iconv support
-	   2.2.2 Compatibility problems with MSVC (and probably CYGWIN)
-	   2.2.3 Other caveats
-
-
-
-
-1. General
-==========
-
-
-1.1 Building From The Command-Line
-----------------------------------
-
-This is the easiest, preferred and currently supported method. It can
-be that a subdirectory of the directory where this file resides 
-contains project files for some IDE. If you want to use that, please
-refer to the readme file within that subdirectory.
-
-In order to build from the command-line you need to make sure that
-your compiler works from the command line. This is not always the
-case, often the required environment variables are missing. If you are
-not sure, test if this works first. If it doesn't, you will first have
-to configure your compiler suite to run from the command-line - please
-refer to your compiler's documentation regarding that.
-
-The first thing you want to do is configure the source. You can have
-the configuration script do this automatically for you. The
-configuration script is written in JScript, a Microsoft's
-implementation of the ECMA scripting language. Almost every Windows
-machine can execute this through the Windows Scripting Host. If your
-system lacks the ability to execute JScript for some reason, you must
-perform the configuration manually and you are on your own with that.
-
-The second step is compiling the source and, optionally, installing it
-to the location of your choosing.
-
-
-1.2 Configuring The Source
---------------------------
-
-The configuration script accepts numerous options. Some of these
-affect features which will be available in the compiled software,
-others affect the way the software is built and installed. To see a
-full list of options supported by the configuration script, run
-
-  cscript configure.js help
-
-from the win32 subdirectory. The configuration script will present you
-the options it accepts and give a biref explanation of these. In every
-case you will have two sets of options. The first set is specific to
-the software you are building and the second one is specific to the
-Windows port.
-
-Once you have decided which options suit you, run the script with that
-options. Here is an example:
-
-  cscript configure.js compiler=msvc prefix=c:\opt 
-    include=c:\opt\include lib=c:\opt\lib debug=yes
-
-The previous example will configure the process to use the Microsoft's
-compiler, install the library in c:\opt, use c:\opt\include and 
-c:\opt\lib as additional search paths for the compiler and the linker 
-and build executables with debug symbols.
-
-Note: Please do not use path names which contain spaces. This will
-fail. Allowing this would require me to put almost everything in the
-Makefile in quotas and that looks quite ugly with my
-syntax-highlighting engine. If you absolutely must use spaces in paths
-send me an email and tell me why. If there are enough of you out there
-who need this, or if a single one has a very good reason, I will
-modify the Makefile to allow spaces in paths.
-
-
-1.3 Compiling
--------------
-
-After the configuration stage has been completed, you want to build
-the software. You will have to use the make tool which comes with
-your compiler. If you, for example, configured the source to build
-with Microsoft's MSVC compiler, you would use the NMAKE utility. If
-you configured it to build with GNU C compiler, mingw edition, you
-would use the GNU make. Assuming you use MSVC, type
-
-  nmake /f Makefile.msvc
-
-and if you use MinGW, you would type
-
-  make -f Makefile.mingw
-
-and if you use Borland's compiler, you would type
-
-  bmake -f Makefile.bcb
-
-in the win32 subdirectory. When the building completes, you will find
-the executable files in win32\bin.* directory, where * stands for the
-name of the compiler you have used.
-
-
-1.4 Installing
---------------
-
-You can install the software into the directory you specified to the
-configure script during the configure stage by typing (with MSVC in
-this example)
-
-  nmake /f Makefile.msvc install
-
-That would be it, enjoy.
-
-
-
-
-
-2. Compiler Specifics
-=====================
-
-
-2.1 Microsoft Visual C/C++
---------------------------
-
-If you use the compiler which comes with Visual Studio .NET, note that
-it will link to its own C-runtime named msvcr70.dll or msvcr71.dll. This 
-file is not available on any machine which doesn't have Visual Studio 
-.NET installed.
-
-
-2.2 GNU C/C++, Mingw edition
-----------------------------
-
-When specifying paths to configure.js, please use slashes instead of 
-backslashes for directory separation. Sometimes Mingw needs this. If
-this is the case, and you specify backslashes, then the compiler will 
-complain about not finding necessary header files.
-
-
-2.2 Borland C++ Builder
------------------------
-
-To compile libxml2 with the BCB6 compiler and associated tools, just follow
-the basic instructions found in this file file. Be sure to specify 
-the "compiler=bcb" option when running the configure script. To compile the
-library and test programs, just type
-
-  make -fMakefile.bcb
-
-That should be all that's required. But there are a few other things to note:
-
-2.2.1 Building with iconv support
-
-If you configure libxml2 to include iconv support, you will obviously need to
-obtain the iconv library and include files. To get them, just follow the links 
-at http://www.gnu.org/software/libiconv/ - there are pre-compiled Win32 
-versions available, but note that these where built with MSVC. Hence the 
-supplied import library is in COFF format rather than OMF format. You can 
-convert this library by using Borland's COFF2OMF utility, or use IMPLIB to 
-build a new import library from the DLL. Alternatively, it is possible to
-obtain the iconv source, and build the DLL using the Borland compiler.
-
-There is a minor problem with the header files for iconv - they expect a
-macro named "EILSEQ" in errno.h, but this is not defined in the Borland
-headers, and its absence can cause problems. To circumvent this problem, I
-define EILSEQ=2 in Makefile.bcb. The value "2" is the value for ENOFILE (file
-not found). This should not have any disastrous side effects beyond possibly
-displaying a misleading error message in certain situations.
-
-2.2.2 Compatibility problems with MSVC (and probably CYGWIN)
-
-A libxml2 DLL generated by BCB is callable from MSVC programs, but there is a
-minor problem with the names of the symbols exported from the library. The
-Borland compiler, by default, prepends an underscore character to global 
-identifiers (functions and global variables) when generating object files.
-Hence the function "xmlAddChild" is added to the DLL with the name
-"_xmlAddChild". The MSVC compiler does not have this behaviour, and looks for
-the unadorned name. I currently circumvent this problem by writing a .def file
-which causes BOTH the adorned and unadorned names to be exported from the DLL.
-This behaviour may not be supported in the future.
-
-An even worse problem is that of generating an import library for the DLL. The
-Borland-generated DLL is in OMF format. MSVC expects libraries in COFF format,
-but they don't provide a "OMF2COFF" utility, or even the equivalent of
-Borland's IMPLIB utility. But it is possible to create an import lib from the
-.def file, using the command:
-  LIB /DEF:libxml2.def
-
-If you don't have the .def file, it's possible to create one manually. Use
-DUMPBIN /EXPORTS /OUT:libxml2.tmp libxml2.dll to get a list of the exported
-names, and edit this into .def file format.
-
-A similar problem is likely with Cygwin.
-
-2.2.3 Other caveats
-
-We have tested this only with BCB6, Professional Edition, and BCB 5.5 free
-command-line tools.
-
-
-
-Authors: Igor Zlatkovic <igor@zlatkovic.com>
-         Eric Zurcher <Eric.Zurcher@csiro.au>
-
-
diff -pruN 2.14.6+dfsg-0.1/win32/configure.js 2.15.0+dfsg-0.3/win32/configure.js
--- 2.14.6+dfsg-0.1/win32/configure.js	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/configure.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,678 +0,0 @@
-/* Configure script for libxml, specific for Windows with Scripting Host.
- * 
- * This script will configure the libxml build process and create necessary files.
- * Run it with an 'help', or an invalid option and it will tell you what options
- * it accepts.
- *
- * March 2002, Igor Zlatkovic <igor@zlatkovic.com>
- */
-
-/* The source directory, relative to the one where this file resides. */
-var srcDirXml = "..";
-var srcDirUtils = "..";
-/* Base name of what we are building. */
-var baseName = "libxml2";
-/* Configure file which contains the version and the output file where
-   we can store our build configuration. */
-var libxmlVersionFile = srcDirXml + "\\VERSION";
-var versionFile = ".\\config.msvc";
-/* Input and output files regarding the libxml features. */
-var optsFileIn = srcDirXml + "\\include\\libxml\\xmlversion.h.in";
-var optsFile = srcDirXml + "\\include\\libxml\\xmlversion.h";
-/* Version strings for the binary distribution. Will be filled later 
-   in the code. */
-var verMajor;
-var verMinor;
-var verMicro;
-var verMicroSuffix;
-var verCvs;
-var useCvsVer = true;
-/* Libxml features. */
-var withThreads = "native";
-var withHttp = true;
-var withHtml = true;
-var withC14n = true;
-var withCatalog = true;
-var withXpath = true;
-var withXptr = true;
-var withXinclude = true;
-var withIconv = true;
-var withIcu = false;
-var withIso8859x = false;
-var withZlib = false;
-var withLzma = false;
-var withDebug = true;
-var withSchemas = true;
-var withSchematron = true;
-var withRegExps = true;
-var withRelaxNg = true;
-var withModules = true;
-var withTree = true;
-var withReader = true;
-var withWriter = true;
-var withWalker = true;
-var withPattern = true;
-var withPush = true;
-var withValid = true;
-var withSax1 = true;
-var withLegacy = true;
-var withOutput = true;
-var withPython = false;
-/* Win32 build options. */
-var dirSep = "\\";
-var compiler = "msvc";
-var cruntime = "/MD";
-var dynruntime = true;
-var vcmanifest = false;
-var buildDebug = 0;
-var buildStatic = 0;
-var buildPrefix = ".";
-var buildBinPrefix = "";
-var buildIncPrefix = "";
-var buildLibPrefix = "";
-var buildSoPrefix = "";
-var buildInclude = ".";
-var buildLib = ".";
-/* Local stuff */
-var error = 0;
-
-/* Helper function, transforms the option variable into the 'Enabled'
-   or 'Disabled' string. */
-function boolToStr(opt)
-{
-	if (opt == false)
-		return "no";
-	else if (opt == true)
-		return "yes";
-	error = 1;
-	return "*** undefined ***";
-}
-
-/* Helper function, transforms the argument string into a boolean
-   value. */
-function strToBool(opt)
-{
-	if (opt == 0 || opt == "no")
-		return false;
-	else if (opt == 1 || opt == "yes")
-		return true;
-	error = 1;
-	return false;
-}
-
-/* Displays the details about how to use this script. */
-function usage()
-{
-	var txt;
-	txt = "Usage:\n";
-	txt += "  cscript " + WScript.ScriptName + " <options>\n";
-	txt += "  cscript " + WScript.ScriptName + " help\n\n";
-	txt += "Options can be specified in the form <option>=<value>, where the value is\n";
-	txt += "either 'yes' or 'no', if not stated otherwise.\n\n";
-	txt += "\nXML processor options, default value given in parentheses:\n\n";
-	txt += "  threads:    Enable thread safety [no|ctls|native|posix] (" + (withThreads)  + ") \n";
-	txt += "  http:       Enable HTTP client (" + (withHttp? "yes" : "no")  + ")\n";
-	txt += "  html:       Enable HTML processor (" + (withHtml? "yes" : "no")  + ")\n";
-	txt += "  c14n:       Enable C14N support (" + (withC14n? "yes" : "no")  + ")\n";
-	txt += "  catalog:    Enable catalog support (" + (withCatalog? "yes" : "no")  + ")\n";
-	txt += "  xpath:      Enable XPath support (" + (withXpath? "yes" : "no")  + ")\n";
-	txt += "  xptr:       Enable XPointer support (" + (withXptr? "yes" : "no")  + ")\n";
-	txt += "  xinclude:   Enable XInclude support (" + (withXinclude? "yes" : "no")  + ")\n";
-	txt += "  iconv:      Enable iconv support (" + (withIconv? "yes" : "no")  + ")\n";
-	txt += "  icu:        Enable icu support (" + (withIcu? "yes" : "no")  + ")\n";
-	txt += "  iso8859x:   Enable ISO8859X support (" + (withIso8859x? "yes" : "no")  + ")\n";
-	txt += "  zlib:       Enable zlib support (" + (withZlib? "yes" : "no")  + ")\n";
-	txt += "  lzma:       Enable lzma support (" + (withLzma? "yes" : "no")  + ")\n";
-	txt += "  xml_debug:  Enable XML debbugging module (" + (withDebug? "yes" : "no")  + ")\n";
-	txt += "  regexps:    Enable regular expressions (" + (withRegExps? "yes" : "no") + ")\n";
-	txt += "  relaxng:    Enable RELAX NG support (" + (withRelaxNg ? "yes" : "no") + ")\n";
-	txt += "  modules:    Enable module support (" + (withModules? "yes" : "no") + ")\n";
-	txt += "  tree:       Enable tree api (" + (withTree? "yes" : "no") + ")\n";
-	txt += "  reader:     Enable xmlReader api (" + (withReader? "yes" : "no") + ")\n";
-	txt += "  writer:     Enable xmlWriter api (" + (withWriter? "yes" : "no") + ")\n";
-	txt += "  walker:     Enable xmlDocWalker api (" + (withWalker? "yes" : "no") + ")\n";
-	txt += "  pattern:    Enable xmlPattern api (" + (withPattern? "yes" : "no")  + ")\n";
-	txt += "  push:       Enable push api (" + (withPush? "yes" : "no") + ")\n";
-	txt += "  valid:      Enable DTD validation support (" + (withValid? "yes" : "no") + ")\n";
-	txt += "  sax1:       Enable SAX1 api (" + (withSax1? "yes" : "no") + ")\n";
-	txt += "  legacy:     Enable Deprecated api's (" + (withLegacy? "yes" : "no") + ")\n";
-	txt += "  output:     Enable serialization support (" + (withOutput? "yes" : "no") + ")\n";
-	txt += "  schemas:    Enable XML Schema support (" + (withSchemas? "yes" : "no")  + ")\n";
-	txt += "  schematron: Enable Schematron support (" + (withSchematron? "yes" : "no")  + ")\n";
-	txt += "  python:     Build Python bindings (" + (withPython? "yes" : "no")  + ")\n";
-	txt += "\nWin32 build options, default value given in parentheses:\n\n";
-	txt += "  compiler:   Compiler to be used [msvc|mingw|bcb] (" + compiler + ")\n";
-	txt += "  cruntime:   C-runtime compiler option (only msvc) (" + cruntime + ")\n";
-	txt += "  dynruntime: Use the dynamic RTL (only bcb) (" + dynruntime + ")\n";
-	txt += "  vcmanifest: Embed VC manifest (only msvc) (" + (vcmanifest? "yes" : "no") + ")\n";
-	txt += "  debug:      Build unoptimised debug executables (" + (buildDebug? "yes" : "no")  + ")\n";
-	txt += "  static:     Link xmllint statically to libxml2 (" + (buildStatic? "yes" : "no")  + ")\n";
-	txt += "              Note: automatically enabled if cruntime is not /MD or /MDd\n";
-	txt += "  prefix:     Base directory for the installation (" + buildPrefix + ")\n";
-	txt += "  bindir:     Directory where xmllint and friends should be installed\n";
-	txt += "              (" + buildBinPrefix + ")\n";
-	txt += "  incdir:     Directory where headers should be installed\n";
-	txt += "              (" + buildIncPrefix + ")\n";
-	txt += "  libdir:     Directory where static and import libraries should be\n";
-	txt += "              installed (" + buildLibPrefix + ")\n";
-	txt += "  sodir:      Directory where shared libraries should be installed\n"; 
-	txt += "              (" + buildSoPrefix + ")\n";
-	txt += "  include:    Additional search path for the compiler, particularly\n";
-	txt += "              where iconv headers can be found (" + buildInclude + ")\n";
-	txt += "  lib:        Additional search path for the linker, particularly\n";
-	txt += "              where iconv library can be found (" + buildLib + ")\n";
-	WScript.Echo(txt);
-}
-
-/* Discovers the version we are working with by reading the appropriate
-   configuration file. Despite its name, this also writes the configuration
-   file included by our makefile. */
-function discoverVersion()
-{
-	var fso, cf, vf, ln, s, iDot, iSlash;
-	fso = new ActiveXObject("Scripting.FileSystemObject");
-	verCvs = "";
-	cf = fso.OpenTextFile(libxmlVersionFile, 1);
-	if (compiler == "msvc")
-		versionFile = ".\\config.msvc";
-	else if (compiler == "mingw")
-		versionFile = ".\\config.mingw";
-	else if (compiler == "bcb")
-		versionFile = ".\\config.bcb";
-	vf = fso.CreateTextFile(versionFile, true);
-	vf.WriteLine("# " + versionFile);
-	vf.WriteLine("# This file is generated automatically by " + WScript.ScriptName + ".");
-	vf.WriteBlankLines(1);
-	while (cf.AtEndOfStream != true) {
-		ln = cf.ReadLine();
-		s = new String(ln);
-		versionSplit = s.split(".");
-		verMajor = versionSplit[0];
-		vf.WriteLine("LIBXML_MAJOR_VERSION=" + verMajor);
-		verMinor = versionSplit[1];
-		vf.WriteLine("LIBXML_MINOR_VERSION=" + verMinor);
-		verMicro = versionSplit[2];
-		vf.WriteLine("LIBXML_MICRO_VERSION=" + verMicro);
-	}
-	cf.Close();
-	vf.WriteLine("XML_SRCDIR=" + srcDirXml);
-	vf.WriteLine("UTILS_SRCDIR=" + srcDirUtils);
-	vf.WriteLine("WITH_THREADS=" + withThreads);
-	vf.WriteLine("WITH_HTTP=" + (withHttp? "1" : "0"));
-	vf.WriteLine("WITH_HTML=" + (withHtml? "1" : "0"));
-	vf.WriteLine("WITH_C14N=" + (withC14n? "1" : "0"));
-	vf.WriteLine("WITH_CATALOG=" + (withCatalog? "1" : "0"));
-	vf.WriteLine("WITH_XPATH=" + (withXpath? "1" : "0"));
-	vf.WriteLine("WITH_XPTR=" + (withXptr? "1" : "0"));
-	vf.WriteLine("WITH_XINCLUDE=" + (withXinclude? "1" : "0"));
-	vf.WriteLine("WITH_ICONV=" + (withIconv? "1" : "0"));
-	vf.WriteLine("WITH_ICU=" + (withIcu? "1" : "0"));
-	vf.WriteLine("WITH_ISO8859X=" + (withIso8859x? "1" : "0"));
-	vf.WriteLine("WITH_ZLIB=" + (withZlib? "1" : "0"));
-	vf.WriteLine("WITH_LZMA=" + (withLzma? "1" : "0"));
-	vf.WriteLine("WITH_DEBUG=" + (withDebug? "1" : "0"));
-	vf.WriteLine("WITH_SCHEMAS=" + (withSchemas? "1" : "0"));
-	vf.WriteLine("WITH_SCHEMATRON=" + (withSchematron? "1" : "0"));
-	vf.WriteLine("WITH_REGEXPS=" + (withRegExps? "1" : "0"));
-	vf.WriteLine("WITH_RELAXNG=" + (withRelaxNg ? "1" : "0"));
-	vf.WriteLine("WITH_MODULES=" + (withModules? "1" : "0"));
-	vf.WriteLine("WITH_TREE=" + (withTree? "1" : "0"));
-	vf.WriteLine("WITH_READER=" + (withReader? "1" : "0"));
-	vf.WriteLine("WITH_WRITER=" + (withWriter? "1" : "0"));
-	vf.WriteLine("WITH_WALKER=" + (withWalker? "1" : "0"));
-	vf.WriteLine("WITH_PATTERN=" + (withPattern? "1" : "0"));
-	vf.WriteLine("WITH_PUSH=" + (withPush? "1" : "0"));
-	vf.WriteLine("WITH_VALID=" + (withValid? "1" : "0"));
-	vf.WriteLine("WITH_SAX1=" + (withSax1? "1" : "0"));
-	vf.WriteLine("WITH_LEGACY=" + (withLegacy? "1" : "0"));
-	vf.WriteLine("WITH_OUTPUT=" + (withOutput? "1" : "0"));
-	vf.WriteLine("WITH_PYTHON=" + (withPython? "1" : "0"));
-	vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
-	vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
-	vf.WriteLine("PREFIX=" + buildPrefix);
-	vf.WriteLine("BINPREFIX=" + buildBinPrefix);
-	vf.WriteLine("INCPREFIX=" + buildIncPrefix);
-	vf.WriteLine("LIBPREFIX=" + buildLibPrefix);
-	vf.WriteLine("SOPREFIX=" + buildSoPrefix);
-	if (compiler == "msvc") {
-		vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
-		vf.WriteLine("LIB=$(LIB);" + buildLib);
-		vf.WriteLine("CRUNTIME=" + cruntime);
-		vf.WriteLine("VCMANIFEST=" + (vcmanifest? "1" : "0"));
-	} else if (compiler == "mingw") {
-		vf.WriteLine("INCLUDE+= -I" + buildInclude);
-		vf.WriteLine("LIB+= -L" + buildLib);
-	} else if (compiler == "bcb") {
-		vf.WriteLine("INCLUDE=" + buildInclude);
-		vf.WriteLine("LIB=" + buildLib);
-		vf.WriteLine("DYNRUNTIME=" + (dynruntime? "1" : "0"));
-	}
-	vf.Close();
-	versionFile = "rcVersion.h";
-	vf = fso.CreateTextFile(versionFile, true);
-	vf.WriteLine("/*");
-	vf.WriteLine("  " + versionFile);
-	vf.WriteLine("  This file is generated automatically by " + WScript.ScriptName + ".");
-	vf.WriteLine("*/");
-	vf.WriteBlankLines(1);
-	vf.WriteLine("#define LIBXML_MAJOR_VERSION " + verMajor);
-	vf.WriteLine("#define LIBXML_MINOR_VERSION " + verMinor);
-	vf.WriteLine("#define LIBXML_MICRO_VERSION " + verMicro);
-	vf.WriteLine("#define LIBXML_DOTTED_VERSION " + "\"" + verMajor + "." + verMinor + "." + verMicro + "\"");
-	vf.Close();
-}
-
-/* Configures libxml. This one will generate xmlversion.h from xmlversion.h.in
-   taking what the user passed on the command line into account. */
-function configureLibxml()
-{
-	var fso, ofi, of, ln, s;
-	fso = new ActiveXObject("Scripting.FileSystemObject");
-	ofi = fso.OpenTextFile(optsFileIn, 1);
-	of = fso.CreateTextFile(optsFile, true);
-	while (ofi.AtEndOfStream != true) {
-		ln = ofi.ReadLine();
-		s = new String(ln);
-		if (s.search(/\@VERSION\@/) != -1) {
-			of.WriteLine(s.replace(/\@VERSION\@/, 
-				verMajor + "." + verMinor + "." + verMicro + verMicroSuffix));
-		} else if (s.search(/\@LIBXML_VERSION_NUMBER\@/) != -1) {
-			of.WriteLine(s.replace(/\@LIBXML_VERSION_NUMBER\@/, 
-				verMajor*10000 + verMinor*100 + verMicro*1));
-		} else if (s.search(/\@LIBXML_VERSION_EXTRA\@/) != -1) {
-			of.WriteLine(s.replace(/\@LIBXML_VERSION_EXTRA\@/, verCvs));
-		} else if (s.search(/\@WITH_THREADS\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_THREADS\@/, withThreads == "no"? "0" : "1"));
-		} else if (s.search(/\@WITH_THREAD_ALLOC\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_THREAD_ALLOC\@/, "0"));
-		} else if (s.search(/\@WITH_HTTP\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_HTTP\@/, withHttp? "1" : "0"));
-		} else if (s.search(/\@WITH_HTML\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_HTML\@/, withHtml? "1" : "0"));
-		} else if (s.search(/\@WITH_C14N\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_C14N\@/, withC14n? "1" : "0"));
-		} else if (s.search(/\@WITH_CATALOG\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_CATALOG\@/, withCatalog? "1" : "0"));
-		} else if (s.search(/\@WITH_XPATH\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_XPATH\@/, withXpath? "1" : "0"));
-		} else if (s.search(/\@WITH_XPTR\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_XPTR\@/, withXptr? "1" : "0"));
-		} else if (s.search(/\@WITH_XINCLUDE\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_XINCLUDE\@/, withXinclude? "1" : "0"));
-		} else if (s.search(/\@WITH_ICONV\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ICONV\@/, withIconv? "1" : "0"));
-		} else if (s.search(/\@WITH_ICU\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ICU\@/, withIcu? "1" : "0"));
-		} else if (s.search(/\@WITH_ISO8859X\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ISO8859X\@/, withIso8859x? "1" : "0"));
-		} else if (s.search(/\@WITH_ZLIB\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ZLIB\@/, withZlib? "1" : "0"));
-		} else if (s.search(/\@WITH_LZMA\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_LZMA\@/, withLzma? "1" : "0"));
-		} else if (s.search(/\@WITH_DEBUG\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_DEBUG\@/, withDebug? "1" : "0"));
-		} else if (s.search(/\@WITH_SCHEMAS\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_SCHEMAS\@/, withSchemas? "1" : "0"));
-		} else if (s.search(/\@WITH_SCHEMATRON\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_SCHEMATRON\@/, withSchematron? "1" : "0"));
-		} else if (s.search(/\@WITH_REGEXPS\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_REGEXPS\@/, withRegExps? "1" : "0"));
-		} else if (s.search(/\@WITH_RELAXNG\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_RELAXNG\@/, withRelaxNg? "1" : "0"));
-		} else if (s.search(/\@WITH_MODULES\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_MODULES\@/, withModules? "1" : "0"));
-		} else if (s.search(/\@MODULE_EXTENSION\@/) != -1) {
-			of.WriteLine(s.replace(/\@MODULE_EXTENSION\@/, ".dll"));
-		} else if (s.search(/\@WITH_TREE\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_TREE\@/, withTree? "1" : "0"));
-		} else if (s.search(/\@WITH_READER\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_READER\@/, withReader? "1" : "0"));
-		} else if (s.search(/\@WITH_WRITER\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_WRITER\@/, withWriter? "1" : "0"));
-		} else if (s.search(/\@WITH_WALKER\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_WALKER\@/, withWalker? "1" : "0"));
-		} else if (s.search(/\@WITH_PATTERN\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_PATTERN\@/, withPattern? "1" : "0"));
-		} else if (s.search(/\@WITH_PUSH\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_PUSH\@/, withPush? "1" : "0"));
-		} else if (s.search(/\@WITH_VALID\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_VALID\@/, withValid? "1" : "0"));
-		} else if (s.search(/\@WITH_SAX1\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_SAX1\@/, withSax1? "1" : "0"));
-		} else if (s.search(/\@WITH_LEGACY\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_LEGACY\@/, withLegacy? "1" : "0"));
-		} else if (s.search(/\@WITH_OUTPUT\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_OUTPUT\@/, withOutput? "1" : "0"));
-		} else
-			of.WriteLine(ln);
-	}
-	ofi.Close();
-	of.Close();
-}
-/* Configures Python bindings. Otherwise identical to the above */
-function configureLibxmlPy()
-{
-	var pyOptsFileIn = srcDirXml + "\\python\\setup.py.in";
-	var pyOptsFile = srcDirXml + "\\python\\setup.py";
-	var fso, ofi, of, ln, s;
-	fso = new ActiveXObject("Scripting.FileSystemObject");
-	ofi = fso.OpenTextFile(pyOptsFileIn, 1);
-	of = fso.CreateTextFile(pyOptsFile, true);
-	while (ofi.AtEndOfStream != true) {
-		ln = ofi.ReadLine();
-		s = new String(ln);
-		if (s.search(/\@LIBXML_VERSION\@/) != -1) {
-			of.WriteLine(s.replace(/\@LIBXML_VERSION\@/, 
-				verMajor + "." + verMinor + "." + verMicro));
-		} else if (s.search(/\@prefix\@/) != -1) {
-			of.WriteLine(s.replace(/\@prefix\@/, buildPrefix));
-		} else if (s.search(/\@WITH_THREADS\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_THREADS\@/, withThreads == "no"? "0" : "1"));
-		} else if (s.search(/\@WITH_ZLIB\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ZLIB\@/, withZlib? "1" : "0"));
-		} else if (s.search(/\@WITH_LZMA\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_LZMA\@/, withLzma? "1" : "0"));
-		} else if (s.search(/\@WITH_ICONV\@/) != -1) {
-            of.WriteLine(s.replace(/\@WITH_ICONV\@/, withIconv? "1" : "0"));
-		} else if (s.search(/\@WITH_ICU\@/) != -1) {
-			of.WriteLine(s.replace(/\@WITH_ICU\@/, withIcu? "1" : "0"));
-		} else
-			of.WriteLine(ln);
-	}
-	ofi.Close();
-	of.Close();
-}
-
-/* Creates the readme file for the binary distribution of 'bname', for the
-   version 'ver' in the file 'file'. This one is called from the Makefile when
-   generating a binary distribution. The parameters are passed by make. */
-function genReadme(bname, ver, file)
-{
-	var fso, f;
-	fso = new ActiveXObject("Scripting.FileSystemObject");
-	f = fso.CreateTextFile(file, true);
-	f.WriteLine("  " + bname + " " + ver);
-	f.WriteLine("  --------------");
-	f.WriteBlankLines(1);
-	f.WriteLine("  This is " + bname + ", version " + ver + ", binary package for the native Win32/IA32");
-	f.WriteLine("platform.");
-	f.WriteBlankLines(1);
-	f.WriteLine("  The files in this package do not require any special installation");
-	f.WriteLine("steps. Extract the contents of the archive wherever you wish and");
-	f.WriteLine("make sure that your tools which use " + bname + " can find it.");
-	f.WriteBlankLines(1);
-	f.WriteLine("  For example, if you want to run the supplied utilities from the command");
-	f.WriteLine("line, you can, if you wish, add the 'bin' subdirectory to the PATH");
-	f.WriteLine("environment variable.");
-	f.WriteLine("  If you want to make programmes in C which use " + bname + ", you'll");
-	f.WriteLine("likely know how to use the contents of this package. If you don't, please");
-	f.WriteLine("refer to your compiler's documentation."); 
-	f.WriteBlankLines(1);
-	f.WriteLine("  If there is something you cannot keep for yourself, such as a problem,");
-	f.WriteLine("a cheer of joy, a comment or a suggestion, feel free to contact me using");
-	f.WriteLine("the address below.");
-	f.WriteBlankLines(1);
-	f.WriteLine("                              Igor Zlatkovic (igor@zlatkovic.com)");
-	f.Close();
-}
-
-
-/*
- * main(),
- * Execution begins here.
- */
-
-// Parse the command-line arguments.
-for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
-	var arg, opt;
-	arg = WScript.Arguments(i);
-	opt = arg.substring(0, arg.indexOf("="));
-	if (opt.length == 0)
-		opt = arg.substring(0, arg.indexOf(":"));
-	if (opt.length > 0) {
-		if (opt == "threads")
-			withThreads = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "http")
-			withHttp = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "html")
-			withHtml = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "c14n")
-			withC14n = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "catalog")
-			withCatalog = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "xpath")
-			withXpath = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "xptr")
-			withXptr = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "xinclude")
-			withXinclude = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "iconv")
-			withIconv = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "icu")
-			withIcu = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "iso8859x")
-			withIso8859x = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "zlib")
-			withZlib = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "lzma")
-			withLzma = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "xml_debug")
-			withDebug = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "schemas")
-			withSchemas = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "schematron")
-			withSchematron = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "regexps")
-			withRegExps = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "relaxng")
-			withRelaxNg = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "modules")
-			withModules = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "tree")
-			withTree = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "reader")
-			withReader = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "writer")
-			withWriter = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "walker")
-			withWalker = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "pattern")
-			withPattern = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "push")
-			withPush = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "valid")
-			withValid = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "sax1")
-			withSax1 = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "legacy")
-			withLegacy = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "output")
-			withOutput = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "python")
-			withPython = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "compiler")
-			compiler = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "cruntime")
-			cruntime = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "dynruntime")
-			dynruntime = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "vcmanifest")
-			vcmanifest = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "debug")
-			buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "static")
-			buildStatic = strToBool(arg.substring(opt.length + 1, arg.length));
-		else if (opt == "prefix")
-			buildPrefix = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "bindir")
-			buildBinPrefix = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "libdir")
-			buildLibPrefix = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "sodir")
-			buildSoPrefix = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "incdir")
-			buildIncPrefix = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "include")
-			buildInclude = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "lib")
-			buildLib = arg.substring(opt.length + 1, arg.length);
-		else if (opt == "release")
-			useCvsVer = false;
-		else
-			error = 1;
-	} else if (i == 0) {
-		if (arg == "genreadme") {
-			// This command comes from the Makefile and will not be checked
-			// for errors, because Makefile will always supply right the parameters.
-			genReadme(WScript.Arguments(1), WScript.Arguments(2), WScript.Arguments(3));
-			WScript.Quit(0);
-		} else if (arg == "help") {
-			usage();
-			WScript.Quit(0);
-		}
-
-	} else {
-		error = 1;
-	}
-}
-
-
-// If we fail here, it is because the user supplied an unrecognised argument.
-if (error != 0) {
-	usage();
-	WScript.Quit(error);
-}
-
-// if user choses to link the c-runtime library statically into libxml2
-// with /MT and friends, then we need to enable static linking for xmllint
-if (cruntime == "/MT" || cruntime == "/MTd" ||
-		cruntime == "/ML" || cruntime == "/MLd") {
-	buildStatic = 1;
-}
-
-dirSep = "\\";
-if (buildBinPrefix == "")
-	buildBinPrefix = "$(PREFIX)" + dirSep + "bin";
-if (buildIncPrefix == "")
-	buildIncPrefix = "$(PREFIX)" + dirSep + "include";
-if (buildLibPrefix == "")
-	buildLibPrefix = "$(PREFIX)" + dirSep + "lib";
-if (buildSoPrefix == "")
-	buildSoPrefix = "$(PREFIX)" + dirSep + "bin";
-
-// Discover the version.
-discoverVersion();
-if (error != 0) {
-	WScript.Echo("Version discovery failed, aborting.");
-	WScript.Quit(error);
-}
-
-var outVerString = baseName + " version: " + verMajor + "." + verMinor + "." + verMicro;
-if (verMicroSuffix && verMicroSuffix != "")
-	outVerString += "-" + verMicroSuffix;
-if (verCvs && verCvs != "")
-	outVerString += "-" + verCvs;
-WScript.Echo(outVerString);
-
-// Configure libxml.
-configureLibxml();
-if (error != 0) {
-	WScript.Echo("Configuration failed, aborting.");
-	WScript.Quit(error);
-}
-
-if (withPython == true) {
-	configureLibxmlPy();
-	if (error != 0) {
-		WScript.Echo("Configuration failed, aborting.");
-		WScript.Quit(error);
-	}
-
-}
-
-// Create the makefile.
-var fso = new ActiveXObject("Scripting.FileSystemObject");
-var makefile = ".\\Makefile.msvc";
-if (compiler == "mingw")
-	makefile = ".\\Makefile.mingw";
-else if (compiler == "bcb")
-	makefile = ".\\Makefile.bcb";
-var new_makefile = ".\\Makefile";
-var f = fso.FileExists(new_makefile);
-if (f) {
-       var t = fso.GetFile(new_makefile);
-       t.Attributes =0;
-}
-fso.CopyFile(makefile, new_makefile, true);
-WScript.Echo("Created Makefile.");
-// Create the config.h.
-var confighsrc = "win32config.h";
-var configh = "..\\config.h";
-var f = fso.FileExists(configh);
-if (f) {
-	var t = fso.GetFile(configh);
-	t.Attributes =0;
-}
-fso.CopyFile(confighsrc, configh, true);
-WScript.Echo("Created config.h.");
-
-
-// Display the final configuration. 
-var txtOut = "\nXML processor configuration\n";
-txtOut += "---------------------------\n";
-txtOut += "     Thread safety: " + withThreads + "\n";
-txtOut += "       HTTP client: " + boolToStr(withHttp) + "\n";
-txtOut += "    HTML processor: " + boolToStr(withHtml) + "\n";
-txtOut += "      C14N support: " + boolToStr(withC14n) + "\n";
-txtOut += "   Catalog support: " + boolToStr(withCatalog) + "\n";
-txtOut += "     XPath support: " + boolToStr(withXpath) + "\n";
-txtOut += "  XPointer support: " + boolToStr(withXptr) + "\n";
-txtOut += "  XInclude support: " + boolToStr(withXinclude) + "\n";
-txtOut += "     iconv support: " + boolToStr(withIconv) + "\n";
-txtOut += "     icu   support: " + boolToStr(withIcu) + "\n";
-txtOut += "  iso8859x support: " + boolToStr(withIso8859x) + "\n";
-txtOut += "      zlib support: " + boolToStr(withZlib) + "\n";
-txtOut += "      lzma support: " + boolToStr(withLzma) + "\n";
-txtOut += "  Debugging module: " + boolToStr(withDebug) + "\n";
-txtOut += "    Regexp support: " + boolToStr(withRegExps) + "\n";
-txtOut += "  Relax NG support: " + boolToStr(withRelaxNg) + "\n";
-txtOut += "    Module support: " + boolToStr(withModules) + "\n";
-txtOut += "      Tree support: " + boolToStr(withTree) + "\n";
-txtOut += "    Reader support: " + boolToStr(withReader) + "\n";
-txtOut += "    Writer support: " + boolToStr(withWriter) + "\n";
-txtOut += "    Walker support: " + boolToStr(withWalker) + "\n";
-txtOut += "   Pattern support: " + boolToStr(withPattern) + "\n";
-txtOut += "      Push support: " + boolToStr(withPush) + "\n";
-txtOut += "Validation support: " + boolToStr(withValid) + "\n";
-txtOut += "      SAX1 support: " + boolToStr(withSax1) + "\n";
-txtOut += "    Legacy support: " + boolToStr(withLegacy) + "\n";
-txtOut += "    Output support: " + boolToStr(withOutput) + "\n";
-txtOut += "XML Schema support: " + boolToStr(withSchemas) + "\n";
-txtOut += "Schematron support: " + boolToStr(withSchematron) + "\n";
-txtOut += "   Python bindings: " + boolToStr(withPython) + "\n";
-txtOut += "\n";
-txtOut += "Win32 build configuration\n";
-txtOut += "-------------------------\n";
-txtOut += "          Compiler: " + compiler + "\n";
-if (compiler == "msvc") {
-	txtOut += "  C-Runtime option: " + cruntime + "\n";
-	txtOut += "    Embed Manifest: " + boolToStr(vcmanifest) + "\n";
-} else if (compiler == "bcb")
-	txtOut += "   Use dynamic RTL: " + dynruntime + "\n";
-txtOut += "     Debug symbols: " + boolToStr(buildDebug) + "\n";
-txtOut += "    Static xmllint: " + boolToStr(buildStatic) + "\n";
-txtOut += "    Install prefix: " + buildPrefix + "\n";
-txtOut += "      Put tools in: " + buildBinPrefix + "\n";
-txtOut += "    Put headers in: " + buildIncPrefix + "\n";
-txtOut += "Put static libs in: " + buildLibPrefix + "\n";
-txtOut += "Put shared libs in: " + buildSoPrefix + "\n";
-txtOut += "      Include path: " + buildInclude + "\n";
-txtOut += "          Lib path: " + buildLib + "\n";
-txtOut += "\n";
-txtOut += "DEPRECATION WARNING: The build system in the win32 directory is\n";
-txtOut += "deprecated and will be removed in a future release. Please switch\n";
-txtOut += "to CMake.\n";
-WScript.Echo(txtOut);
-
-//
-
diff -pruN 2.14.6+dfsg-0.1/win32/win32config.h 2.15.0+dfsg-0.3/win32/win32config.h
--- 2.14.6+dfsg-0.1/win32/win32config.h	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/win32/win32config.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,20 +0,0 @@
-#ifndef __LIBXML_WIN32_CONFIG__
-#define __LIBXML_WIN32_CONFIG__
-
-#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1600)
-  #define HAVE_STDINT_H
-#endif
-
-#if defined(_MSC_VER)
-  #if _MSC_VER < 1900
-    #define snprintf _snprintf
-  #endif
-  #if _MSC_VER < 1500
-    #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
-  #endif
-#endif
-
-#define XML_SYSCONFDIR "/etc"
-
-#endif /* __LIBXML_WIN32_CONFIG__ */
-
diff -pruN 2.14.6+dfsg-0.1/xinclude.c 2.15.0+dfsg-0.3/xinclude.c
--- 2.14.6+dfsg-0.1/xinclude.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xinclude.c	2025-09-15 11:55:59.000000000 +0000
@@ -6,7 +6,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -131,10 +131,9 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr
  ************************************************************************/
 
 /**
- * xmlXIncludeErrMemory:
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  an XInclude context
  */
 static void
 xmlXIncludeErrMemory(xmlXIncludeCtxtPtr ctxt)
@@ -148,13 +147,13 @@ xmlXIncludeErrMemory(xmlXIncludeCtxtPtr
 }
 
 /**
- * xmlXIncludeErr:
- * @ctxt: the XInclude context
- * @node: the context node
- * @msg:  the error message
- * @extra:  extra information
- *
  * Handle an XInclude error
+ *
+ * @param ctxt  the XInclude context
+ * @param node  the context node
+ * @param error  the error code
+ * @param msg  the error message
+ * @param extra  extra information
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlXIncludeErr(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node, int error,
@@ -203,14 +202,12 @@ xmlXIncludeErr(xmlXIncludeCtxtPtr ctxt,
 }
 
 /**
- * xmlXIncludeGetProp:
- * @ctxt:  the XInclude context
- * @cur:  the node
- * @name:  the attribute name
- *
  * Get an XInclude attribute
  *
- * Returns the value (to be freed) or NULL if not found
+ * @param ctxt  the XInclude context
+ * @param cur  the node
+ * @param name  the attribute name
+ * @returns the value (to be freed) or NULL if not found
  */
 static xmlChar *
 xmlXIncludeGetProp(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur,
@@ -234,10 +231,9 @@ xmlXIncludeGetProp(xmlXIncludeCtxtPtr ct
     return(ret);
 }
 /**
- * xmlXIncludeFreeRef:
- * @ref: the XInclude reference
- *
  * Free an XInclude reference
+ *
+ * @param ref  the XInclude reference
  */
 static void
 xmlXIncludeFreeRef(xmlXIncludeRefPtr ref) {
@@ -253,15 +249,13 @@ xmlXIncludeFreeRef(xmlXIncludeRefPtr ref
 }
 
 /**
- * xmlXIncludeNewContext:
- * @doc:  an XML Document
- *
  * Creates a new XInclude context
  *
- * Returns the new set
+ * @param doc  an XML Document
+ * @returns the new set
  */
-xmlXIncludeCtxtPtr
-xmlXIncludeNewContext(xmlDocPtr doc) {
+xmlXIncludeCtxt *
+xmlXIncludeNewContext(xmlDoc *doc) {
     xmlXIncludeCtxtPtr ret;
 
     if (doc == NULL)
@@ -279,13 +273,12 @@ xmlXIncludeNewContext(xmlDocPtr doc) {
 }
 
 /**
- * xmlXIncludeFreeContext:
- * @ctxt: the XInclude context
- *
  * Free an XInclude context
+ *
+ * @param ctxt  the XInclude context
  */
 void
-xmlXIncludeFreeContext(xmlXIncludeCtxtPtr ctxt) {
+xmlXIncludeFreeContext(xmlXIncludeCtxt *ctxt) {
     int i;
 
     if (ctxt == NULL)
@@ -318,11 +311,10 @@ xmlXIncludeFreeContext(xmlXIncludeCtxtPt
 }
 
 /**
- * xmlXIncludeParseFile:
- * @ctxt:  the XInclude context
- * @URL:  the URL or file path
- *
  * parse a document for XInclude
+ *
+ * @param ctxt  the XInclude context
+ * @param URL  the URL or file path
  */
 static xmlDocPtr
 xmlXIncludeParseFile(xmlXIncludeCtxtPtr ctxt, const char *URL) {
@@ -395,11 +387,10 @@ error:
 }
 
 /**
- * xmlXIncludeAddNode:
- * @ctxt:  the XInclude context
- * @cur:  the new node
- *
  * Add a new node to process to an XInclude context
+ *
+ * @param ctxt  the XInclude context
+ * @param cur  the new node
  */
 static xmlXIncludeRefPtr
 xmlXIncludeAddNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr cur) {
@@ -599,12 +590,10 @@ error:
 }
 
 /**
- * xmlXIncludeRecurseDoc:
- * @ctxt:  the XInclude context
- * @doc:  the new document
- * @url:  the associated URL
- *
  * The XInclude recursive nature is handled at this point.
+ *
+ * @param ctxt  the XInclude context
+ * @param doc  the new document
  */
 static void
 xmlXIncludeRecurseDoc(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc) {
@@ -703,14 +692,13 @@ done:
 }
 
 /**
- * xmlXIncludeCopyNode:
- * @ctxt:  the XInclude context
- * @elem:  the element
- * @copyChildren:  copy children instead of node if true
- *
  * Make a copy of the node while expanding nested XIncludes.
  *
- * Returns a node list, not a single node.
+ * @param ctxt  the XInclude context
+ * @param elem  the element
+ * @param copyChildren  copy children instead of node if true
+ * @param targetBase  the xml:base of the target node
+ * @returns a node list, not a single node.
  */
 static xmlNodePtr
 xmlXIncludeCopyNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr elem,
@@ -825,14 +813,13 @@ error:
 
 #ifdef LIBXML_XPTR_ENABLED
 /**
- * xmlXIncludeCopyXPointer:
- * @ctxt:  the XInclude context
- * @obj:  the XPointer result from the evaluation.
- *
  * Build a node list tree copy of the XPointer result.
  * This will drop Attributes and Namespace declarations.
  *
- * Returns an xmlNodePtr list or NULL.
+ * @param ctxt  the XInclude context
+ * @param obj  the XPointer result from the evaluation.
+ * @param targetBase  the xml:base of the target node
+ * @returns an xmlNode list or NULL.
  *         the caller has to free the node tree.
  */
 static xmlNodePtr
@@ -923,12 +910,11 @@ struct _xmlXIncludeMergeData {
 };
 
 /**
- * xmlXIncludeMergeOneEntity:
- * @ent: the entity
- * @doc:  the including doc
- * @name: the entity name
- *
  * Implements the merge of one entity
+ *
+ * @param payload  the entity
+ * @param vdata  the merge data
+ * @param name  unused
  */
 static void
 xmlXIncludeMergeEntity(void *payload, void *vdata,
@@ -1004,14 +990,12 @@ error:
 }
 
 /**
- * xmlXIncludeMergeEntities:
- * @ctxt: an XInclude context
- * @doc:  the including doc
- * @from:  the included doc
- *
  * Implements the entity merge
  *
- * Returns 0 if merge succeeded, -1 if some processing failed
+ * @param ctxt  an XInclude context
+ * @param doc  the including doc
+ * @param from  the included doc
+ * @returns 0 if merge succeeded, -1 if some processing failed
  */
 static int
 xmlXIncludeMergeEntities(xmlXIncludeCtxtPtr ctxt, xmlDocPtr doc,
@@ -1067,14 +1051,11 @@ xmlXIncludeMergeEntities(xmlXIncludeCtxt
 }
 
 /**
- * xmlXIncludeLoadDoc:
- * @ctxt:  the XInclude context
- * @url:  the associated URL
- * @ref:  an XMLXincludeRefPtr
- *
  * Load the document, and store the result in the XInclude context
  *
- * Returns 0 in case of success, -1 in case of failure
+ * @param ctxt  the XInclude context
+ * @param ref  an XMLXincludeRefPtr
+ * @returns 0 in case of success, -1 in case of failure
  */
 static int
 xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, xmlXIncludeRefPtr ref) {
@@ -1285,7 +1266,7 @@ loaded:
 	set = xptr->nodesetval;
 	if (set != NULL) {
 	    for (i = 0;i < set->nodeNr;i++) {
-		if (set->nodeTab[i] == NULL)
+		if (set->nodeTab[i] == NULL) /* shouldn't happen */
 		    continue;
 		switch (set->nodeTab[i]->type) {
 		    case XML_ELEMENT_NODE:
@@ -1304,15 +1285,13 @@ loaded:
 			               XML_XINCLUDE_XPTR_RESULT,
 				       "XPointer selects an attribute: #%s\n",
 				       fragment);
-			set->nodeTab[i] = NULL;
-			continue;
+			goto xptr_error;
 		    case XML_NAMESPACE_DECL:
 			xmlXIncludeErr(ctxt, ref->elem,
 			               XML_XINCLUDE_XPTR_RESULT,
 				       "XPointer selects a namespace: #%s\n",
 				       fragment);
-			set->nodeTab[i] = NULL;
-			continue;
+			goto xptr_error;
 		    case XML_DOCUMENT_TYPE_NODE:
 		    case XML_DOCUMENT_FRAG_NODE:
 		    case XML_NOTATION_NODE:
@@ -1322,17 +1301,17 @@ loaded:
 		    case XML_ENTITY_DECL:
 		    case XML_XINCLUDE_START:
 		    case XML_XINCLUDE_END:
+                        /* shouldn't happen */
 			xmlXIncludeErr(ctxt, ref->elem,
 			               XML_XINCLUDE_XPTR_RESULT,
 				   "XPointer selects unexpected nodes: #%s\n",
 				       fragment);
-			set->nodeTab[i] = NULL;
-			set->nodeTab[i] = NULL;
-			continue; /* for */
+			goto xptr_error;
 		}
 	    }
 	}
         ref->inc = xmlXIncludeCopyXPointer(ctxt, xptr, ref->base);
+xptr_error:
         xmlXPathFreeObject(xptr);
     }
 
@@ -1346,13 +1325,11 @@ error:
 }
 
 /**
- * xmlXIncludeLoadTxt:
- * @ctxt:  the XInclude context
- * @ref:  an XMLXincludeRefPtr
- *
  * Load the content, and store the result in the XInclude context
  *
- * Returns 0 in case of success, -1 in case of failure
+ * @param ctxt  the XInclude context
+ * @param ref  an XMLXincludeRefPtr
+ * @returns 0 in case of success, -1 in case of failure
  */
 static int
 xmlXIncludeLoadTxt(xmlXIncludeCtxtPtr ctxt, xmlXIncludeRefPtr ref) {
@@ -1544,15 +1521,13 @@ error:
 }
 
 /**
- * xmlXIncludeLoadFallback:
- * @ctxt:  the XInclude context
- * @fallback:  the fallback node
- * @ref:  an XMLXincludeRefPtr
- *
  * Load the content of the fallback node, and store the result
  * in the XInclude context
  *
- * Returns 0 in case of success, -1 in case of failure
+ * @param ctxt  the XInclude context
+ * @param fallback  the fallback node
+ * @param ref  an XMLXincludeRefPtr
+ * @returns 0 in case of success, -1 in case of failure
  */
 static int
 xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback,
@@ -1586,14 +1561,12 @@ xmlXIncludeLoadFallback(xmlXIncludeCtxtP
  ************************************************************************/
 
 /**
- * xmlXIncludeExpandNode:
- * @ctxt: an XInclude context
- * @node: an XInclude node
- *
  * If the XInclude node wasn't processed yet, create a new RefPtr,
  * add it to ctxt->incTab and load the included items.
  *
- * Returns the new or existing xmlXIncludeRefPtr, or NULL in case of error.
+ * @param ctxt  an XInclude context
+ * @param node  an XInclude node
+ * @returns the new or existing xmlXIncludeRef, or NULL in case of error.
  */
 static xmlXIncludeRefPtr
 xmlXIncludeExpandNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) {
@@ -1658,13 +1631,11 @@ xmlXIncludeExpandNode(xmlXIncludeCtxtPtr
 }
 
 /**
- * xmlXIncludeLoadNode:
- * @ctxt: an XInclude context
- * @ref: an xmlXIncludeRefPtr
- *
  * Find and load the infoset replacement for the given node.
  *
- * Returns 0 if substitution succeeded, -1 if some processing failed
+ * @param ctxt  an XInclude context
+ * @param ref  an xmlXIncludeRef
+ * @returns 0 if substitution succeeded, -1 if some processing failed
  */
 static int
 xmlXIncludeLoadNode(xmlXIncludeCtxtPtr ctxt, xmlXIncludeRefPtr ref) {
@@ -1713,13 +1684,11 @@ xmlXIncludeLoadNode(xmlXIncludeCtxtPtr c
 }
 
 /**
- * xmlXIncludeIncludeNode:
- * @ctxt: an XInclude context
- * @ref: an xmlXIncludeRefPtr
- *
  * Implement the infoset replacement for the given node
  *
- * Returns 0 if substitution succeeded, -1 if some processing failed
+ * @param ctxt  an XInclude context
+ * @param ref  an xmlXIncludeRef
+ * @returns 0 if substitution succeeded, -1 if some processing failed
  */
 static int
 xmlXIncludeIncludeNode(xmlXIncludeCtxtPtr ctxt, xmlXIncludeRefPtr ref) {
@@ -1829,13 +1798,11 @@ err_memory:
 }
 
 /**
- * xmlXIncludeTestNode:
- * @ctxt: the XInclude processing context
- * @node: an XInclude node
- *
  * test if the node is an XInclude node
  *
- * Returns 1 true, 0 otherwise
+ * @param ctxt  the XInclude processing context
+ * @param node  an XInclude node
+ * @returns 1 true, 0 otherwise
  */
 static int
 xmlXIncludeTestNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) {
@@ -1900,13 +1867,11 @@ xmlXIncludeTestNode(xmlXIncludeCtxtPtr c
 }
 
 /**
- * xmlXIncludeDoProcess:
- * @ctxt: the XInclude processing context
- * @tree: the top of the tree to process
+ * Implement the XInclude substitution on the XML document `doc`
  *
- * Implement the XInclude substitution on the XML document @doc
- *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param ctxt  the XInclude processing context
+ * @param tree  the top of the tree to process
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 static int
@@ -1983,13 +1948,11 @@ xmlXIncludeDoProcess(xmlXIncludeCtxtPtr
 }
 
 /**
- * xmlXIncludeDoProcessRoot:
- * @ctxt: the XInclude processing context
- * @tree: the top of the tree to process
- *
- * Implement the XInclude substitution on the XML document @doc
+ * Implement the XInclude substitution on the XML document `doc`
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param ctxt  the XInclude processing context
+ * @param tree  the top of the tree to process
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 static int
@@ -2003,33 +1966,29 @@ xmlXIncludeDoProcessRoot(xmlXIncludeCtxt
 }
 
 /**
- * xmlXIncludeGetLastError:
- * @ctxt:  an XInclude processing context
- *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns the last error code.
+ * @param ctxt  an XInclude processing context
+ * @returns the last error code.
  */
 int
-xmlXIncludeGetLastError(xmlXIncludeCtxtPtr ctxt) {
+xmlXIncludeGetLastError(xmlXIncludeCtxt *ctxt) {
     if (ctxt == NULL)
         return(XML_ERR_ARGUMENT);
     return(ctxt->errNo);
 }
 
 /**
- * xmlXIncludeSetErrorHandler:
- * @ctxt:  an XInclude processing context
- * @handler:  error handler
- * @data:  user data which will be passed to the handler
- *
  * Register a callback function that will be called on errors and
  * warnings. If handler is NULL, the error handler will be deactivated.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
+ * @param ctxt  an XInclude processing context
+ * @param handler  error handler
+ * @param data  user data which will be passed to the handler
  */
 void
-xmlXIncludeSetErrorHandler(xmlXIncludeCtxtPtr ctxt,
+xmlXIncludeSetErrorHandler(xmlXIncludeCtxt *ctxt,
                            xmlStructuredErrorFunc handler, void *data) {
     if (ctxt == NULL)
         return;
@@ -2038,18 +1997,16 @@ xmlXIncludeSetErrorHandler(xmlXIncludeCt
 }
 
 /**
- * xmlXIncludeSetResourceLoader:
- * @ctxt:  an XInclude processing context
- * @loader:  resource loader
- * @data:  user data which will be passed to the loader
- *
  * Register a callback function that will be called to load included
  * documents.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
+ * @param ctxt  an XInclude processing context
+ * @param loader  resource loader
+ * @param data  user data which will be passed to the loader
  */
 void
-xmlXIncludeSetResourceLoader(xmlXIncludeCtxtPtr ctxt,
+xmlXIncludeSetResourceLoader(xmlXIncludeCtxt *ctxt,
                              xmlResourceLoader loader, void *data) {
     if (ctxt == NULL)
         return;
@@ -2058,16 +2015,14 @@ xmlXIncludeSetResourceLoader(xmlXInclude
 }
 
 /**
- * xmlXIncludeSetFlags:
- * @ctxt:  an XInclude processing context
- * @flags: a set of xmlParserOption used for parsing XML includes
- *
  * Set the flags used for further processing of XML resources.
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param ctxt  an XInclude processing context
+ * @param flags  a set of xmlParserOption used for parsing XML includes
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlXIncludeSetFlags(xmlXIncludeCtxtPtr ctxt, int flags) {
+xmlXIncludeSetFlags(xmlXIncludeCtxt *ctxt, int flags) {
     if (ctxt == NULL)
         return(-1);
     ctxt->parseFlags = flags;
@@ -2075,16 +2030,14 @@ xmlXIncludeSetFlags(xmlXIncludeCtxtPtr c
 }
 
 /**
- * xmlXIncludeSetStreamingMode:
- * @ctxt:  an XInclude processing context
- * @mode:  whether streaming mode should be enabled
- *
  * In streaming mode, XPointer expressions aren't allowed.
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param ctxt  an XInclude processing context
+ * @param mode  whether streaming mode should be enabled
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlXIncludeSetStreamingMode(xmlXIncludeCtxtPtr ctxt, int mode) {
+xmlXIncludeSetStreamingMode(xmlXIncludeCtxt *ctxt, int mode) {
     if (ctxt == NULL)
         return(-1);
     ctxt->isStream = !!mode;
@@ -2092,20 +2045,18 @@ xmlXIncludeSetStreamingMode(xmlXIncludeC
 }
 
 /**
- * xmlXIncludeProcessTreeFlagsData:
- * @tree: an XML node
- * @flags: a set of xmlParserOption used for parsing XML includes
- * @data: application data that will be passed to the parser context
- *        in the _private field of the parser context(s)
- *
- * Implement the XInclude substitution on the XML node @tree
+ * Implement the XInclude substitution on the XML node `tree`
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param tree  an XML node
+ * @param flags  a set of xmlParserOption used for parsing XML includes
+ * @param data  application data that will be passed to the parser context
+ *        in the _private field of the parser context(s)
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 
 int
-xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, int flags, void *data) {
+xmlXIncludeProcessTreeFlagsData(xmlNode *tree, int flags, void *data) {
     xmlXIncludeCtxtPtr ctxt;
     int ret = 0;
 
@@ -2127,19 +2078,17 @@ xmlXIncludeProcessTreeFlagsData(xmlNodeP
 }
 
 /**
- * xmlXIncludeProcessFlagsData:
- * @doc: an XML document
- * @flags: a set of xmlParserOption used for parsing XML includes
- * @data: application data that will be passed to the parser context
- *        in the _private field of the parser context(s)
- *
- * Implement the XInclude substitution on the XML document @doc
+ * Implement the XInclude substitution on the XML document `doc`
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param doc  an XML document
+ * @param flags  a set of xmlParserOption used for parsing XML includes
+ * @param data  application data that will be passed to the parser context
+ *        in the _private field of the parser context(s)
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcessFlagsData(xmlDocPtr doc, int flags, void *data) {
+xmlXIncludeProcessFlagsData(xmlDoc *doc, int flags, void *data) {
     xmlNodePtr tree;
 
     if (doc == NULL)
@@ -2151,46 +2100,40 @@ xmlXIncludeProcessFlagsData(xmlDocPtr do
 }
 
 /**
- * xmlXIncludeProcessFlags:
- * @doc: an XML document
- * @flags: a set of xmlParserOption used for parsing XML includes
- *
- * Implement the XInclude substitution on the XML document @doc
+ * Implement the XInclude substitution on the XML document `doc`
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param doc  an XML document
+ * @param flags  a set of xmlParserOption used for parsing XML includes
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcessFlags(xmlDocPtr doc, int flags) {
+xmlXIncludeProcessFlags(xmlDoc *doc, int flags) {
     return xmlXIncludeProcessFlagsData(doc, flags, NULL);
 }
 
 /**
- * xmlXIncludeProcess:
- * @doc: an XML document
- *
- * Implement the XInclude substitution on the XML document @doc
+ * Implement the XInclude substitution on the XML document `doc`
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param doc  an XML document
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcess(xmlDocPtr doc) {
+xmlXIncludeProcess(xmlDoc *doc) {
     return(xmlXIncludeProcessFlags(doc, 0));
 }
 
 /**
- * xmlXIncludeProcessTreeFlags:
- * @tree: a node in an XML document
- * @flags: a set of xmlParserOption used for parsing XML includes
- *
  * Implement the XInclude substitution for the given subtree
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param tree  a node in an XML document
+ * @param flags  a set of xmlParserOption used for parsing XML includes
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcessTreeFlags(xmlNodePtr tree, int flags) {
+xmlXIncludeProcessTreeFlags(xmlNode *tree, int flags) {
     xmlXIncludeCtxtPtr ctxt;
     int ret = 0;
 
@@ -2210,32 +2153,28 @@ xmlXIncludeProcessTreeFlags(xmlNodePtr t
 }
 
 /**
- * xmlXIncludeProcessTree:
- * @tree: a node in an XML document
- *
  * Implement the XInclude substitution for the given subtree
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param tree  a node in an XML document
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcessTree(xmlNodePtr tree) {
+xmlXIncludeProcessTree(xmlNode *tree) {
     return(xmlXIncludeProcessTreeFlags(tree, 0));
 }
 
 /**
- * xmlXIncludeProcessNode:
- * @ctxt: an existing XInclude context
- * @node: a node in an XML document
- *
  * Implement the XInclude substitution for the given subtree reusing
  * the information and data coming from the given context.
  *
- * Returns 0 if no substitution were done, -1 if some processing failed
+ * @param ctxt  an existing XInclude context
+ * @param node  a node in an XML document
+ * @returns 0 if no substitution were done, -1 if some processing failed
  *    or the number of substitutions done.
  */
 int
-xmlXIncludeProcessNode(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node) {
+xmlXIncludeProcessNode(xmlXIncludeCtxt *ctxt, xmlNode *node) {
     int ret = 0;
 
     if ((node == NULL) || (node->type == XML_NAMESPACE_DECL) ||
diff -pruN 2.14.6+dfsg-0.1/xlink.c 2.15.0+dfsg-0.3/xlink.c
--- 2.14.6+dfsg-0.1/xlink.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xlink.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 
@@ -34,41 +34,36 @@ static xlinkHandlerPtr xlinkDefaultHandl
 static xlinkNodeDetectFunc	xlinkDefaultDetect = NULL;
 
 /**
- * xlinkGetDefaultHandler:
- *
- * DEPRECATED: Don't use.
- *
  * Get the default xlink handler.
  *
- * Returns the current xlinkHandlerPtr value.
+ * @deprecated Don't use.
+ *
+ * @returns the current xlinkHandler value.
  */
-xlinkHandlerPtr
+xlinkHandler *
 xlinkGetDefaultHandler(void) {
     return(xlinkDefaultHandler);
 }
 
 
 /**
- * xlinkSetDefaultHandler:
- * @handler:  the new value for the xlink handler block
+ * Set the default xlink handlers
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Set the default xlink handlers
+ * @param handler  the new value for the xlink handler block
  */
 void
-xlinkSetDefaultHandler(xlinkHandlerPtr handler) {
+xlinkSetDefaultHandler(xlinkHandler *handler) {
     xlinkDefaultHandler = handler;
 }
 
 /**
- * xlinkGetDefaultDetect:
- *
- * DEPRECATED: Don't use.
- *
  * Get the default xlink detection routine
  *
- * Returns the current function or NULL;
+ * @deprecated Don't use.
+ *
+ * @returns the current function or NULL;
  */
 xlinkNodeDetectFunc
 xlinkGetDefaultDetect	(void) {
@@ -76,12 +71,11 @@ xlinkGetDefaultDetect	(void) {
 }
 
 /**
- * xlinkSetDefaultDetect:
- * @func: pointer to the new detection routine.
+ * Set the default xlink detection routine
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Set the default xlink detection routine
+ * @param func  pointer to the new detection routine.
  */
 void
 xlinkSetDefaultDetect	(xlinkNodeDetectFunc func) {
@@ -96,21 +90,21 @@ xlinkSetDefaultDetect	(xlinkNodeDetectFu
 
 
 /**
- * xlinkIsLink:
- * @doc:  the document containing the node
- * @node:  the node pointer itself
- *
  * 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't try to do full checking of the link validity
  * but tries to detect and return the appropriate link type.
  *
- * Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no
+ * @deprecated The XLink code was never finished.
+ *
+ * @param doc  the document containing the node
+ * @param node  the node pointer itself
+ * @returns the xlinkType of the node (XLINK_TYPE_NONE if there is no
  *         link detected.
  */
 xlinkType
-xlinkIsLink	(xmlDocPtr doc, xmlNodePtr node) {
+xlinkIsLink	(xmlDoc *doc, xmlNode *node) {
     xmlChar *type = NULL, *role = NULL;
     xlinkType ret = XLINK_TYPE_NONE;
 
diff -pruN 2.14.6+dfsg-0.1/xmlIO.c 2.15.0+dfsg-0.3/xmlIO.c
--- 2.14.6+dfsg-0.1/xmlIO.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlIO.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -28,14 +28,10 @@
 #ifdef LIBXML_ZLIB_ENABLED
 #include <zlib.h>
 #endif
-#ifdef LIBXML_LZMA_ENABLED
-#include <lzma.h>
-#endif
 
 #include <libxml/xmlIO.h>
 #include <libxml/xmlmemory.h>
 #include <libxml/uri.h>
-#include <libxml/nanohttp.h>
 #include <libxml/parserInternals.h>
 #include <libxml/xmlerror.h>
 #ifdef LIBXML_CATALOG_ENABLED
@@ -44,7 +40,6 @@
 
 #include "private/buf.h"
 #include "private/enc.h"
-#include "private/entities.h"
 #include "private/error.h"
 #include "private/io.h"
 
@@ -110,178 +105,458 @@ static int xmlOutputCallbackNr;
 
 /************************************************************************
  *									*
+ *			Special escaping routines			*
+ *									*
+ ************************************************************************/
+
+/*
+ * @param buf  a char buffer
+ * @param val  a codepoint
+ *
+ * Serializes a hex char ref like `&#xA0;`.
+ *
+ * Writes at most 9 bytes. Does not include a terminating zero byte.
+ *
+ * @returns the number of bytes written.
+ */
+static int
+xmlSerializeHexCharRef(char *buf, int val) {
+    char *out = buf;
+    int shift = 0, bits;
+
+    *out++ = '&';
+    *out++ = '#';
+    *out++ = 'x';
+
+    bits = val;
+    if (bits & 0xFF0000) {
+        shift = 16;
+        bits &= 0xFF0000;
+    } else if (bits & 0x00FF00) {
+        shift = 8;
+        bits &= 0x00FF00;
+    }
+    if (bits & 0xF0F0F0) {
+        shift += 4;
+    }
+
+    do {
+        int d = (val >> shift) & 0x0F;
+
+        if (d < 10)
+            *out++ = '0' + d;
+        else
+            *out++ = 'A' + (d - 10);
+
+	shift -= 4;
+    } while (shift >= 0);
+
+    *out++ = ';';
+
+    return(out - buf);
+}
+
+#include "codegen/escape.inc"
+
+/*
+ * @param text  input text
+ * @param flags  XML_ESCAPE flags
+ *
+ * Escapes certain characters with char refs.
+ *
+ * - XML_ESCAPE_ATTR: for attribute content.
+ * - XML_ESCAPE_NON_ASCII: escape non-ASCII chars.
+ * - XML_ESCAPE_HTML: for HTML content.
+ * - XML_ESCAPE_QUOT: escape double quotes.
+ *
+ * @returns an escaped string or NULL if a memory allocation failed.
+ */
+xmlChar *
+xmlEscapeText(const xmlChar *string, int flags) {
+    const xmlChar *cur;
+    xmlChar *buffer;
+    xmlChar *out;
+    const signed char *tab;
+    size_t size = 50;
+
+#ifdef LIBXML_HTML_ENABLED
+    if (flags & XML_ESCAPE_HTML) {
+        if (flags & XML_ESCAPE_ATTR)
+            tab = htmlEscapeTabAttr;
+        else
+            tab = htmlEscapeTab;
+    }
+    else
+#endif
+    {
+        if (flags & XML_ESCAPE_QUOT)
+            tab = xmlEscapeTabQuot;
+        else if (flags & XML_ESCAPE_ATTR)
+            tab = xmlEscapeTabAttr;
+        else
+            tab = xmlEscapeTab;
+    }
+
+    buffer = xmlMalloc(size + 1);
+    if (buffer == NULL)
+        return(NULL);
+    out = buffer;
+
+    cur = string;
+
+    while (*cur != 0) {
+        char tempBuf[12];
+        const xmlChar *base;
+        const char *repl;
+        size_t used;
+        size_t replSize;
+        size_t unescapedSize;
+        size_t totalSize;
+        int c;
+        int offset;
+
+        base = cur;
+        offset = -1;
+
+        while (1) {
+            c = *cur;
+
+            if (c < 0x80) {
+                offset = tab[c];
+                if (offset >= 0)
+                    break;
+            } else if (flags & XML_ESCAPE_NON_ASCII) {
+                break;
+            }
+
+            cur += 1;
+        }
+
+        unescapedSize = cur - base;
+
+        if (offset >= 0) {
+            if (c == 0) {
+                replSize = 0;
+                repl = "";
+            } else {
+                replSize = xmlEscapeContent[offset],
+                repl = &xmlEscapeContent[offset+1];
+                cur += 1;
+            }
+        } else {
+            int val = 0, len = 4;
+
+            val = xmlGetUTF8Char(cur, &len);
+            if (val < 0) {
+                val = 0xFFFD;
+                cur += 1;
+            } else {
+                if ((val == 0xFFFE) || (val == 0xFFFF))
+                    val = 0xFFFD;
+                cur += len;
+            }
+
+            replSize = xmlSerializeHexCharRef(tempBuf, val);
+            repl = tempBuf;
+        }
+
+        used = out - buffer;
+        totalSize = unescapedSize + replSize;
+
+        if (totalSize > size - used) {
+            xmlChar *tmp;
+            int newSize;
+
+            if ((size > (SIZE_MAX - 1) / 2) ||
+                (totalSize > (SIZE_MAX - 1) / 2 - size)) {
+                xmlFree(buffer);
+                return(NULL);
+            }
+            newSize = size + totalSize;
+            if (*cur != 0)
+                newSize *= 2;
+            tmp = xmlRealloc(buffer, newSize + 1);
+            if (tmp == NULL) {
+                xmlFree(buffer);
+                return(NULL);
+            }
+            buffer = tmp;
+            size = newSize;
+            out = buffer + used;
+        }
+
+        memcpy(out, base, unescapedSize);
+        out += unescapedSize;
+        memcpy(out, repl, replSize);
+        out += replSize;
+
+        if (c == 0)
+            break;
+
+        base = cur;
+    }
+
+    *out = 0;
+    return(buffer);
+}
+
+#ifdef LIBXML_OUTPUT_ENABLED
+void
+xmlSerializeText(xmlOutputBuffer *buf, const xmlChar *string, size_t maxSize,
+                 unsigned flags) {
+    const xmlChar *cur;
+    const signed char *tab;
+
+    if (string == NULL)
+        return;
+
+#ifdef LIBXML_HTML_ENABLED
+    if (flags & XML_ESCAPE_HTML) {
+        if (flags & XML_ESCAPE_ATTR)
+            tab = htmlEscapeTabAttr;
+        else
+            tab = htmlEscapeTab;
+    }
+    else
+#endif
+    {
+        if (flags & XML_ESCAPE_QUOT)
+            tab = xmlEscapeTabQuot;
+        else if (flags & XML_ESCAPE_ATTR)
+            tab = xmlEscapeTabAttr;
+        else
+            tab = xmlEscapeTab;
+    }
+
+    cur = string;
+
+    while (1) {
+        const xmlChar *base;
+        int c;
+        int offset;
+
+        base = cur;
+        offset = -1;
+
+        while (1) {
+            if ((size_t) (cur - string) >= maxSize)
+                break;
+
+            c = (unsigned char) *cur;
+
+            if (c < 0x80) {
+                offset = tab[c];
+                if (offset >= 0)
+                    break;
+            } else if (flags & XML_ESCAPE_NON_ASCII) {
+                break;
+            }
+
+            cur += 1;
+        }
+
+        if (cur > base)
+            xmlOutputBufferWrite(buf, cur - base, (char *) base);
+
+        if ((size_t) (cur - string) >= maxSize)
+            break;
+
+        if (offset >= 0) {
+            if (c == 0)
+                break;
+
+            xmlOutputBufferWrite(buf, xmlEscapeContent[offset],
+                                 &xmlEscapeContent[offset+1]);
+            cur += 1;
+        } else {
+            char tempBuf[12];
+            int tempSize;
+            int val = 0, len = 4;
+
+            val = xmlGetUTF8Char(cur, &len);
+            if (val < 0) {
+                val = 0xFFFD;
+                cur += 1;
+            } else {
+                if ((val == 0xFFFE) || (val == 0xFFFF))
+                    val = 0xFFFD;
+                cur += len;
+            }
+
+            tempSize = xmlSerializeHexCharRef(tempBuf, val);
+            xmlOutputBufferWrite(buf, tempSize, tempBuf);
+        }
+    }
+}
+#endif /* LIBXML_OUTPUT_ENABLED */
+
+/************************************************************************
+ *									*
  *			Error handling					*
  *									*
  ************************************************************************/
 
 /**
- * xmlIOErr:
- * @code:  the error number
- *
  * Convert errno to xmlParserErrors.
  *
- * Returns an xmlParserErrors code.
+ * @param err  the error number
+ * @returns an xmlParserErrors code.
  */
-static xmlParserErrors
+static int
 xmlIOErr(int err)
 {
     xmlParserErrors code;
 
-    if (err == 0) code = XML_IO_UNKNOWN;
+    switch (err) {
 #ifdef EACCES
-    else if (err == EACCES) code = XML_IO_EACCES;
+        case EACCES: code = XML_IO_EACCES; break;
 #endif
 #ifdef EAGAIN
-    else if (err == EAGAIN) code = XML_IO_EAGAIN;
+        case EAGAIN: code = XML_IO_EAGAIN; break;
 #endif
 #ifdef EBADF
-    else if (err == EBADF) code = XML_IO_EBADF;
+        case EBADF: code = XML_IO_EBADF; break;
 #endif
 #ifdef EBADMSG
-    else if (err == EBADMSG) code = XML_IO_EBADMSG;
+        case EBADMSG: code = XML_IO_EBADMSG; break;
 #endif
 #ifdef EBUSY
-    else if (err == EBUSY) code = XML_IO_EBUSY;
+        case EBUSY: code = XML_IO_EBUSY; break;
 #endif
 #ifdef ECANCELED
-    else if (err == ECANCELED) code = XML_IO_ECANCELED;
+        case ECANCELED: code = XML_IO_ECANCELED; break;
 #endif
 #ifdef ECHILD
-    else if (err == ECHILD) code = XML_IO_ECHILD;
+        case ECHILD: code = XML_IO_ECHILD; break;
 #endif
 #ifdef EDEADLK
-    else if (err == EDEADLK) code = XML_IO_EDEADLK;
+        case EDEADLK: code = XML_IO_EDEADLK; break;
 #endif
 #ifdef EDOM
-    else if (err == EDOM) code = XML_IO_EDOM;
+        case EDOM: code = XML_IO_EDOM; break;
 #endif
 #ifdef EEXIST
-    else if (err == EEXIST) code = XML_IO_EEXIST;
+        case EEXIST: code = XML_IO_EEXIST; break;
 #endif
 #ifdef EFAULT
-    else if (err == EFAULT) code = XML_IO_EFAULT;
+        case EFAULT: code = XML_IO_EFAULT; break;
 #endif
 #ifdef EFBIG
-    else if (err == EFBIG) code = XML_IO_EFBIG;
+        case EFBIG: code = XML_IO_EFBIG; break;
 #endif
 #ifdef EINPROGRESS
-    else if (err == EINPROGRESS) code = XML_IO_EINPROGRESS;
+        case EINPROGRESS: code = XML_IO_EINPROGRESS; break;
 #endif
 #ifdef EINTR
-    else if (err == EINTR) code = XML_IO_EINTR;
+        case EINTR: code = XML_IO_EINTR; break;
 #endif
 #ifdef EINVAL
-    else if (err == EINVAL) code = XML_IO_EINVAL;
+        case EINVAL: code = XML_IO_EINVAL; break;
 #endif
 #ifdef EIO
-    else if (err == EIO) code = XML_IO_EIO;
+        case EIO: code = XML_IO_EIO; break;
 #endif
 #ifdef EISDIR
-    else if (err == EISDIR) code = XML_IO_EISDIR;
+        case EISDIR: code = XML_IO_EISDIR; break;
 #endif
 #ifdef EMFILE
-    else if (err == EMFILE) code = XML_IO_EMFILE;
+        case EMFILE: code = XML_IO_EMFILE; break;
 #endif
 #ifdef EMLINK
-    else if (err == EMLINK) code = XML_IO_EMLINK;
+        case EMLINK: code = XML_IO_EMLINK; break;
 #endif
 #ifdef EMSGSIZE
-    else if (err == EMSGSIZE) code = XML_IO_EMSGSIZE;
+        case EMSGSIZE: code = XML_IO_EMSGSIZE; break;
 #endif
 #ifdef ENAMETOOLONG
-    else if (err == ENAMETOOLONG) code = XML_IO_ENAMETOOLONG;
+        case ENAMETOOLONG: code = XML_IO_ENAMETOOLONG; break;
 #endif
 #ifdef ENFILE
-    else if (err == ENFILE) code = XML_IO_ENFILE;
+        case ENFILE: code = XML_IO_ENFILE; break;
 #endif
 #ifdef ENODEV
-    else if (err == ENODEV) code = XML_IO_ENODEV;
+        case ENODEV: code = XML_IO_ENODEV; break;
 #endif
 #ifdef ENOENT
-    else if (err == ENOENT) code = XML_IO_ENOENT;
+        case ENOENT: code = XML_IO_ENOENT; break;
 #endif
 #ifdef ENOEXEC
-    else if (err == ENOEXEC) code = XML_IO_ENOEXEC;
+        case ENOEXEC: code = XML_IO_ENOEXEC; break;
 #endif
 #ifdef ENOLCK
-    else if (err == ENOLCK) code = XML_IO_ENOLCK;
+        case ENOLCK: code = XML_IO_ENOLCK; break;
 #endif
 #ifdef ENOMEM
-    else if (err == ENOMEM) code = XML_IO_ENOMEM;
+        case ENOMEM: code = XML_IO_ENOMEM; break;
 #endif
 #ifdef ENOSPC
-    else if (err == ENOSPC) code = XML_IO_ENOSPC;
+        case ENOSPC: code = XML_IO_ENOSPC; break;
 #endif
 #ifdef ENOSYS
-    else if (err == ENOSYS) code = XML_IO_ENOSYS;
+        case ENOSYS: code = XML_IO_ENOSYS; break;
 #endif
 #ifdef ENOTDIR
-    else if (err == ENOTDIR) code = XML_IO_ENOTDIR;
+        case ENOTDIR: code = XML_IO_ENOTDIR; break;
 #endif
 #ifdef ENOTEMPTY
-    else if (err == ENOTEMPTY) code = XML_IO_ENOTEMPTY;
+        case ENOTEMPTY: code = XML_IO_ENOTEMPTY; break;
 #endif
 #ifdef ENOTSUP
-    else if (err == ENOTSUP) code = XML_IO_ENOTSUP;
+        case ENOTSUP: code = XML_IO_ENOTSUP; break;
 #endif
 #ifdef ENOTTY
-    else if (err == ENOTTY) code = XML_IO_ENOTTY;
+        case ENOTTY: code = XML_IO_ENOTTY; break;
 #endif
 #ifdef ENXIO
-    else if (err == ENXIO) code = XML_IO_ENXIO;
+        case ENXIO: code = XML_IO_ENXIO; break;
 #endif
 #ifdef EPERM
-    else if (err == EPERM) code = XML_IO_EPERM;
+        case EPERM: code = XML_IO_EPERM; break;
 #endif
 #ifdef EPIPE
-    else if (err == EPIPE) code = XML_IO_EPIPE;
+        case EPIPE: code = XML_IO_EPIPE; break;
 #endif
 #ifdef ERANGE
-    else if (err == ERANGE) code = XML_IO_ERANGE;
+        case ERANGE: code = XML_IO_ERANGE; break;
 #endif
 #ifdef EROFS
-    else if (err == EROFS) code = XML_IO_EROFS;
+        case EROFS: code = XML_IO_EROFS; break;
 #endif
 #ifdef ESPIPE
-    else if (err == ESPIPE) code = XML_IO_ESPIPE;
+        case ESPIPE: code = XML_IO_ESPIPE; break;
 #endif
 #ifdef ESRCH
-    else if (err == ESRCH) code = XML_IO_ESRCH;
+        case ESRCH: code = XML_IO_ESRCH; break;
 #endif
 #ifdef ETIMEDOUT
-    else if (err == ETIMEDOUT) code = XML_IO_ETIMEDOUT;
+        case ETIMEDOUT: code = XML_IO_ETIMEDOUT; break;
 #endif
 #ifdef EXDEV
-    else if (err == EXDEV) code = XML_IO_EXDEV;
+        case EXDEV: code = XML_IO_EXDEV; break;
 #endif
 #ifdef ENOTSOCK
-    else if (err == ENOTSOCK) code = XML_IO_ENOTSOCK;
+        case ENOTSOCK: code = XML_IO_ENOTSOCK; break;
 #endif
 #ifdef EISCONN
-    else if (err == EISCONN) code = XML_IO_EISCONN;
+        case EISCONN: code = XML_IO_EISCONN; break;
 #endif
 #ifdef ECONNREFUSED
-    else if (err == ECONNREFUSED) code = XML_IO_ECONNREFUSED;
-#endif
-#ifdef ETIMEDOUT
-    else if (err == ETIMEDOUT) code = XML_IO_ETIMEDOUT;
+        case ECONNREFUSED: code = XML_IO_ECONNREFUSED; break;
 #endif
 #ifdef ENETUNREACH
-    else if (err == ENETUNREACH) code = XML_IO_ENETUNREACH;
+        case ENETUNREACH: code = XML_IO_ENETUNREACH; break;
 #endif
 #ifdef EADDRINUSE
-    else if (err == EADDRINUSE) code = XML_IO_EADDRINUSE;
-#endif
-#ifdef EINPROGRESS
-    else if (err == EINPROGRESS) code = XML_IO_EINPROGRESS;
+        case EADDRINUSE: code = XML_IO_EADDRINUSE; break;
 #endif
 #ifdef EALREADY
-    else if (err == EALREADY) code = XML_IO_EALREADY;
+        case EALREADY: code = XML_IO_EALREADY; break;
 #endif
 #ifdef EAFNOSUPPORT
-    else if (err == EAFNOSUPPORT) code = XML_IO_EAFNOSUPPORT;
+        case EAFNOSUPPORT: code = XML_IO_EAFNOSUPPORT; break;
 #endif
-    else code = XML_IO_UNKNOWN;
+        default: code = XML_IO_UNKNOWN; break;
+    }
 
     return(code);
 }
@@ -295,10 +570,9 @@ xmlIOErr(int err)
 #if defined(_WIN32)
 
 /**
- * __xmlIOWin32UTF8ToWChar:
- * @u8String:  uft-8 string
- *
  * Convert a string from utf-8 to wchar (WINDOWS ONLY!)
+ *
+ * @param u8String  uft-8 string
  */
 static wchar_t *
 __xmlIOWin32UTF8ToWChar(const char *u8String)
@@ -336,12 +610,10 @@ __xmlIOWin32UTF8ToWChar(const char *u8St
 #endif
 
 /**
- * xmlNormalizeWindowsPath:
- * @path: the input file path
- *
- * DEPRECATED: This never really worked.
+ * @deprecated This never really worked.
  *
- * Returns a copy of path.
+ * @param path  the input file path
+ * @returns a copy of path.
  */
 xmlChar *
 xmlNormalizeWindowsPath(const xmlChar *path)
@@ -350,16 +622,13 @@ xmlNormalizeWindowsPath(const xmlChar *p
 }
 
 /**
- * xmlCheckFilename:
- * @path:  the path to check
+ * if stat is not available on the target machine,
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * if stat is not available on the target machine,
- * returns 1.  if stat fails, returns 0 (if calling
- * stat on the filename fails, it can't be right).
- * if stat succeeds and the file is a directory,
- * returns 2.  otherwise returns 1.
+ * @param path  the path to check
+ * @returns 0 if stat fails, 2 if stat succeeds and the file is
+ * a directory, 1 otherwise.
  */
 int
 xmlCheckFilename(const char *path)
@@ -443,11 +712,10 @@ typedef struct {
 } xmlFdIOCtxt;
 
 /**
- * xmlFdOpen:
- * @filename:  the URI for matching
- * @out:  pointer to resulting context
- *
- * Returns an xmlParserErrors code
+ * @param filename  the URI for matching
+ * @param write  whether the fd is opened for writing
+ * @param out  pointer to resulting context
+ * @returns an xmlParserErrors code
  */
 static xmlParserErrors
 xmlFdOpen(const char *filename, int write, int *out) {
@@ -510,14 +778,12 @@ xmlFdOpen(const char *filename, int writ
 }
 
 /**
- * xmlFdRead:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to read
+ * Read `len` bytes to `buffer` from the I/O channel.
  *
- * Read @len bytes to @buffer from the I/O channel.
- *
- * Returns the number of bytes read
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to read
+ * @returns the number of bytes read
  */
 static int
 xmlFdRead(void *context, char *buffer, int len) {
@@ -549,14 +815,12 @@ xmlFdRead(void *context, char *buffer, i
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlFdWrite:
- * @context:  the I/O context
- * @buffer:  where to get data
- * @len:  number of bytes to write
- *
- * Write @len bytes from @buffer to the I/O channel.
+ * Write `len` bytes from `buffer` to the I/O channel.
  *
- * Returns the number of bytes written
+ * @param context  the I/O context
+ * @param buffer  where to get data
+ * @param len  number of bytes to write
+ * @returns the number of bytes written
  */
 static int
 xmlFdWrite(void *context, const char *buffer, int len) {
@@ -585,12 +849,10 @@ xmlFdFree(void *context) {
 }
 
 /**
- * xmlFdClose:
- * @context:  the I/O context
- *
  * Close an I/O channel
  *
- * Returns 0 in case of success and error code otherwise
+ * @param context  the I/O context
+ * @returns 0 in case of success and error code otherwise
  */
 static int
 xmlFdClose (void * context) {
@@ -609,12 +871,10 @@ xmlFdClose (void * context) {
 }
 
 /**
- * xmlFileMatch:
- * @filename:  the URI for matching
+ * @deprecated Internal function, don't use.
  *
- * DEPRECATED: Internal function, don't use.
- *
- * Returns 1 if matches, 0 otherwise
+ * @param filename  the URI for matching
+ * @returns 1 if matches, 0 otherwise
  */
 int
 xmlFileMatch (const char *filename ATTRIBUTE_UNUSED) {
@@ -622,13 +882,12 @@ xmlFileMatch (const char *filename ATTRI
 }
 
 /**
- * xmlFileOpenSafe:
- * @filename:  the URI for matching
- * @out:  pointer to resulting context
- *
  * input from FILE *
  *
- * Returns an xmlParserErrors code
+ * @param filename  the URI for matching
+ * @param write  whether the file is opened for writing
+ * @param out  pointer to resulting context
+ * @returns an xmlParserErrors code
  */
 static xmlParserErrors
 xmlFileOpenSafe(const char *filename, int write, void **out) {
@@ -684,12 +943,10 @@ xmlFileOpenSafe(const char *filename, in
 }
 
 /**
- * xmlFileOpen:
- * @filename:  the URI for matching
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns an IO context or NULL in case or failure
+ * @param filename  the URI for matching
+ * @returns an IO context or NULL in case or failure
  */
 void *
 xmlFileOpen(const char *filename) {
@@ -700,14 +957,12 @@ xmlFileOpen(const char *filename) {
 }
 
 /**
- * xmlFileRead:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
+ * @deprecated Internal function, don't use.
  *
- * DEPRECATED: Internal function, don't use.
- *
- * Returns the number of bytes read or < 0 in case of failure
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to write
+ * @returns the number of bytes read or < 0 in case of failure
  */
 int
 xmlFileRead(void * context, char * buffer, int len) {
@@ -733,14 +988,12 @@ xmlFileRead(void * context, char * buffe
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlFileWrite:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
- *
- * Write @len bytes from @buffer to the I/O channel.
+ * Write `len` bytes from `buffer` to the I/O channel.
  *
- * Returns the number of bytes written
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to write
+ * @returns the number of bytes written
  */
 static int
 xmlFileWrite(void *context, const char *buffer, int len) {
@@ -760,10 +1013,9 @@ xmlFileWrite(void *context, const char *
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlFileFlush:
- * @context:  the I/O context
- *
  * Flush an I/O channel
+ *
+ * @param context  the I/O context
  */
 static int
 xmlFileFlush (void * context) {
@@ -779,12 +1031,10 @@ xmlFileFlush (void * context) {
 }
 
 /**
- * xmlFileClose:
- * @context:  the I/O context
- *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Returns 0 or -1 an error code case of error
+ * @param context  the I/O context
+ * @returns 0 or -1 an error code case of error
  */
 int
 xmlFileClose (void * context) {
@@ -806,14 +1056,12 @@ xmlFileClose (void * context) {
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlBufferWrite:
- * @context:  the xmlBuffer
- * @buffer:  the data to write
- * @len:  number of bytes to write
- *
- * Write @len bytes from @buffer to the xml buffer
+ * Write `len` bytes from `buffer` to the xml buffer
  *
- * Returns the number of bytes written or a negative xmlParserErrors
+ * @param context  the xmlBuffer
+ * @param buffer  the data to write
+ * @param len  number of bytes to write
+ * @returns the number of bytes written or a negative xmlParserErrors
  * value.
  */
 static int
@@ -835,14 +1083,12 @@ xmlBufferWrite (void * context, const ch
  ************************************************************************/
 
 /**
- * xmlGzfileRead:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
+ * Read `len` bytes to `buffer` from the compressed I/O channel.
  *
- * Read @len bytes to @buffer from the compressed I/O channel.
- *
- * Returns the number of bytes read.
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to write
+ * @returns the number of bytes read.
  */
 static int
 xmlGzfileRead (void * context, char * buffer, int len) {
@@ -856,14 +1102,12 @@ xmlGzfileRead (void * context, char * bu
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlGzfileWrite:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
- *
- * Write @len bytes from @buffer to the compressed I/O channel.
+ * Write `len` bytes from `buffer` to the compressed I/O channel.
  *
- * Returns the number of bytes written
+ * @param context  the I/O context
+ * @param buffer  where to drop data
+ * @param len  number of bytes to write
+ * @returns the number of bytes written
  */
 static int
 xmlGzfileWrite (void * context, const char * buffer, int len) {
@@ -877,10 +1121,9 @@ xmlGzfileWrite (void * context, const ch
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlGzfileClose:
- * @context:  the I/O context
- *
  * Close a compressed I/O channel
+ *
+ * @param context  the I/O context
  */
 static int
 xmlGzfileClose (void * context) {
@@ -892,142 +1135,6 @@ xmlGzfileClose (void * context) {
 
 /************************************************************************
  *									*
- *		I/O for compressed file accesses			*
- *									*
- ************************************************************************/
-
-#ifdef LIBXML_LZMA_ENABLED
-
-#include "private/xzlib.h"
-
-/**
- * xmlXzfileRead:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
- *
- * Read @len bytes to @buffer from the compressed I/O channel.
- *
- * Returns the number of bytes written
- */
-static int
-xmlXzfileRead (void * context, char * buffer, int len) {
-    int ret;
-
-    ret = __libxml2_xzread((xzFile) context, &buffer[0], len);
-    if (ret < 0)
-        return(-XML_IO_UNKNOWN);
-    return(ret);
-}
-
-/**
- * xmlXzfileClose:
- * @context:  the I/O context
- *
- * Close a compressed I/O channel
- */
-static int
-xmlXzfileClose (void * context) {
-    if (__libxml2_xzclose((xzFile) context) != LZMA_OK)
-        return(XML_IO_UNKNOWN);
-    return(0);
-}
-#endif /* LIBXML_LZMA_ENABLED */
-
-/************************************************************************
- *									*
- *			I/O for HTTP file accesses			*
- *									*
- ************************************************************************/
-
-#ifdef LIBXML_HTTP_ENABLED
-/**
- * xmlIOHTTPMatch:
- * @filename:  the URI for matching
- *
- * DEPRECATED: Internal function, don't use.
- *
- * check if the URI matches an HTTP one
- *
- * Returns 1 if matches, 0 otherwise
- */
-int
-xmlIOHTTPMatch (const char *filename) {
-    if (!xmlStrncasecmp(BAD_CAST filename, BAD_CAST "http://", 7))
-	return(1);
-    return(0);
-}
-
-/**
- * xmlIOHTTPOpen:
- * @filename:  the URI for matching
- *
- * DEPRECATED: Internal function, don't use.
- *
- * open an HTTP I/O channel
- *
- * Returns an I/O context or NULL in case of error
- */
-void *
-xmlIOHTTPOpen (const char *filename) {
-    return(xmlNanoHTTPOpen(filename, NULL));
-}
-
-#ifdef LIBXML_OUTPUT_ENABLED
-/**
- * xmlIOHTTPOpenW:
- * @post_uri:  The destination URI for the document
- * @compression:  The compression desired for the document.
- *
- * DEPRECATED: Support for HTTP POST has been removed.
- *
- * Returns NULL.
- */
-void *
-xmlIOHTTPOpenW(const char *post_uri ATTRIBUTE_UNUSED,
-               int compression ATTRIBUTE_UNUSED)
-{
-    return(NULL);
-}
-#endif /* LIBXML_OUTPUT_ENABLED */
-
-/**
- * xmlIOHTTPRead:
- * @context:  the I/O context
- * @buffer:  where to drop data
- * @len:  number of bytes to write
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Read @len bytes to @buffer from the I/O channel.
- *
- * Returns the number of bytes written
- */
-int
-xmlIOHTTPRead(void * context, char * buffer, int len) {
-    if ((buffer == NULL) || (len < 0)) return(-1);
-    return(xmlNanoHTTPRead(context, &buffer[0], len));
-}
-
-/**
- * xmlIOHTTPClose:
- * @context:  the I/O context
- *
- * DEPRECATED: Internal function, don't use.
- *
- * Close an HTTP I/O channel
- *
- * Returns 0
- */
-int
-xmlIOHTTPClose (void * context) {
-    xmlNanoHTTPClose(context);
-    return 0;
-}
-#endif /* LIBXML_HTTP_ENABLED */
-
-/************************************************************************
- *									*
  *			Input/output buffers				*
  *									*
  ************************************************************************/
@@ -1037,7 +1144,7 @@ xmlIODefaultMatch(const char *filename A
     return(1);
 }
 
-#if defined(LIBXML_LZMA_ENABLED) || defined(LIBXML_ZLIB_ENABLED)
+#if defined(LIBXML_ZLIB_ENABLED)
 
 #ifdef _WIN32
 typedef __int64 xmlFileOffset;
@@ -1061,66 +1168,25 @@ xmlSeek(int fd, xmlFileOffset offset, in
 #endif
 }
 
-#endif /* defined(LIBXML_LZMA_ENABLED) || defined(LIBXML_ZLIB_ENABLED) */
+#endif /* defined(LIBXML_ZLIB_ENABLED) */
 
 /**
- * xmlInputFromFd:
- * @buf:  parser input buffer
- * @fd:  file descriptor
- * @flags:  flags
- *
- * Update the buffer to read from @fd. Supports the XML_INPUT_UNZIP
+ * Update the buffer to read from `fd`. Supports the XML_INPUT_UNZIP
  * flag.
  *
- * Returns an xmlParserErrors code.
+ * @param buf  parser input buffer
+ * @param fd  file descriptor
+ * @param flags  flags
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
-xmlInputFromFd(xmlParserInputBufferPtr buf, int fd,
+xmlInputFromFd(xmlParserInputBuffer *buf, int fd,
                xmlParserInputFlags flags) {
     xmlFdIOCtxt *fdctxt;
     int copy;
 
     (void) flags;
 
-#ifdef LIBXML_LZMA_ENABLED
-    if (flags & XML_INPUT_UNZIP) {
-        xzFile xzStream;
-        xmlFileOffset pos;
-
-        pos = xmlSeek(fd, 0, SEEK_CUR);
-
-        copy = dup(fd);
-        if (copy == -1)
-            return(xmlIOErr(errno));
-
-        xzStream = __libxml2_xzdopen("?", copy, "rb");
-
-        if (xzStream == NULL) {
-            close(copy);
-        } else {
-            int compressed = (__libxml2_xzcompressed(xzStream) > 0);
-
-            if ((compressed) ||
-                /* Try to rewind if not gzip compressed */
-                (pos < 0) ||
-                (xmlSeek(fd, pos, SEEK_SET) < 0)) {
-                /*
-                 * If a file isn't seekable, we pipe uncompressed
-                 * input through xzlib.
-                 */
-                buf->context = xzStream;
-                buf->readcallback = xmlXzfileRead;
-                buf->closecallback = xmlXzfileClose;
-                buf->compressed = compressed;
-
-                return(XML_ERR_OK);
-            }
-
-            xmlXzfileClose(xzStream);
-        }
-    }
-#endif /* LIBXML_LZMA_ENABLED */
-
 #ifdef LIBXML_ZLIB_ENABLED
     if (flags & XML_INPUT_UNZIP) {
         gzFile gzStream;
@@ -1178,58 +1244,12 @@ xmlInputFromFd(xmlParserInputBufferPtr b
     return(XML_ERR_OK);
 }
 
-/**
- * xmlInputDefaultOpen:
- * @buf:  input buffer to be filled
- * @filename:  filename or URI
- * @flags:  XML_INPUT flags
- *
- * Returns an xmlParserErrors code.
- */
-static xmlParserErrors
-xmlInputDefaultOpen(xmlParserInputBufferPtr buf, const char *filename,
-                    xmlParserInputFlags flags) {
-    xmlParserErrors ret;
-    int fd;
-
-#ifdef LIBXML_HTTP_ENABLED
-    if (xmlIOHTTPMatch(filename)) {
-        if ((flags & XML_INPUT_NETWORK) == 0)
-            return(XML_IO_NETWORK_ATTEMPT);
-
-        buf->context = xmlIOHTTPOpen(filename);
-
-        if (buf->context != NULL) {
-            buf->readcallback = xmlIOHTTPRead;
-            buf->closecallback = xmlIOHTTPClose;
-            return(XML_ERR_OK);
-        }
-    }
-#endif /* LIBXML_HTTP_ENABLED */
-
-    if (!xmlFileMatch(filename))
-        return(XML_IO_ENOENT);
-
-    ret = xmlFdOpen(filename, 0, &fd);
-    if (ret != XML_ERR_OK)
-        return(ret);
-
-    ret = xmlInputFromFd(buf, fd, flags);
-
-    close(fd);
-
-    return(ret);
-}
-
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputDefaultOpen:
- * @buf:  input buffer to be filled
- * @filename:  filename or URI
- * @compression:  compression level or 0
- * @is_file_uri:  whether filename is a file URI
- *
- * Returns an xmlParserErrors code.
+ * @param buf  input buffer to be filled
+ * @param filename  filename or URI
+ * @param compression  compression level or 0
+ * @returns an xmlParserErrors code.
  */
 static xmlParserErrors
 xmlOutputDefaultOpen(xmlOutputBufferPtr buf, const char *filename,
@@ -1288,20 +1308,18 @@ xmlOutputDefaultOpen(xmlOutputBufferPtr
 #endif
 
 /**
- * xmlAllocParserInputBuffer:
- * @enc:  the charset encoding if known (deprecated)
- *
- * DEPRECATED: Use xmlNewInputFrom*.
- *
  * Create a buffered parser input for progressive parsing.
  *
+ * @deprecated Use xmlNewInputFrom*.
+ *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser input or NULL
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlAllocParserInputBuffer(xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
 
@@ -1337,17 +1355,15 @@ xmlAllocParserInputBuffer(xmlCharEncodin
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlAllocOutputBuffer:
- * @encoder:  the encoding converter or NULL
- *
  * Create a buffered parser output
  *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
  *
- * Returns the new parser output or NULL
+ * @param encoder  the encoding converter or NULL
+ * @returns the new parser output or NULL
  */
-xmlOutputBufferPtr
-xmlAllocOutputBuffer(xmlCharEncodingHandlerPtr encoder) {
+xmlOutputBuffer *
+xmlAllocOutputBuffer(xmlCharEncodingHandler *encoder) {
     xmlOutputBufferPtr ret;
 
     ret = (xmlOutputBufferPtr) xmlMalloc(sizeof(xmlOutputBuffer));
@@ -1386,13 +1402,12 @@ xmlAllocOutputBuffer(xmlCharEncodingHand
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlFreeParserInputBuffer:
- * @in:  a buffered parser input
- *
  * Free up the memory used by a buffered parser input
+ *
+ * @param in  a buffered parser input
  */
 void
-xmlFreeParserInputBuffer(xmlParserInputBufferPtr in) {
+xmlFreeParserInputBuffer(xmlParserInputBuffer *in) {
     if (in == NULL) return;
 
     if (in->raw) {
@@ -1415,17 +1430,15 @@ xmlFreeParserInputBuffer(xmlParserInputB
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputBufferClose:
- * @out:  a buffered output
- *
  * flushes and close the output I/O channel
  * and free up all the associated resources
  *
- * Returns the number of byte written or a negative xmlParserErrors
+ * @param out  a buffered output
+ * @returns the number of byte written or a negative xmlParserErrors
  * code in case of error.
  */
 int
-xmlOutputBufferClose(xmlOutputBufferPtr out)
+xmlOutputBufferClose(xmlOutputBuffer *out)
 {
     int ret;
 
@@ -1471,18 +1484,16 @@ xmlOutputBufferClose(xmlOutputBufferPtr
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateUrl:
- * @URI:  the filename or URI
- * @enc:  encoding enum (deprecated)
- * @flags:  XML_INPUT flags
- * @out:  pointer to resulting input buffer
- *
- * Returns an xmlParserErrors code.
+ * @param URI  the filename or URI
+ * @param enc  encoding enum (deprecated)
+ * @param flags  XML_INPUT flags
+ * @param out  pointer to resulting input buffer
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
 xmlParserInputBufferCreateUrl(const char *URI, xmlCharEncoding enc,
                               xmlParserInputFlags flags,
-                              xmlParserInputBufferPtr *out) {
+                              xmlParserInputBuffer **out) {
     xmlParserInputBufferPtr buf;
     xmlParserErrors ret;
     int i;
@@ -1509,10 +1520,17 @@ xmlParserInputBufferCreateUrl(const char
         xmlInputCallback *cb = &xmlInputCallbackTable[i];
 
         if (cb->matchcallback == xmlIODefaultMatch) {
-            ret = xmlInputDefaultOpen(buf, URI, flags);
+            int fd;
+
+            ret = xmlFdOpen(URI, 0, &fd);
 
-            if ((ret == XML_ERR_OK) || (ret != XML_IO_ENOENT))
+            if (ret == XML_ERR_OK) {
+                ret = xmlInputFromFd(buf, fd, flags);
+                close(fd);
                 break;
+            } else if (ret != XML_IO_ENOENT) {
+                break;
+            }
         } else if ((cb->matchcallback != NULL) &&
                    (cb->matchcallback(URI) != 0)) {
             buf->context = cb->opencallback(URI);
@@ -1534,7 +1552,22 @@ xmlParserInputBufferCreateUrl(const char
     return(ret);
 }
 
-xmlParserInputBufferPtr
+/**
+ * Create a buffered parser input for the progressive parsing of a file
+ * 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
+ *
+ * Internal implementation, never uses the callback installed with
+ * #xmlParserInputBufferCreateFilenameDefault.
+ *
+ * @deprecated Use #xmlNewInputFromUrl.
+ *
+ * @param URI  a C string containing the URI or filename
+ * @param enc  the charset encoding if known
+ * @returns the new parser input or NULL
+ */
+xmlParserInputBuffer *
 __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
 
@@ -1543,20 +1576,21 @@ __xmlParserInputBufferCreateFilename(con
 }
 
 /**
- * xmlParserInputBufferCreateFilename:
- * @URI:  a C string containing the URI or filename
- * @enc:  the charset encoding if known
- *
- * DEPRECATED: Use xmlNewInputFromUrl.
- *
  * Create a buffered parser input for the progressive parsing of a file
  * 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
  *
- * Returns the new parser input or NULL
+ * Allows the actual function to be overridden with
+ * #xmlParserInputBufferCreateFilenameDefault.
+ *
+ * @deprecated Use #xmlNewInputFromUrl.
+ *
+ * @param URI  a C string containing the URI or filename
+ * @param enc  the charset encoding if known
+ * @returns the new parser input or NULL
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
     xmlParserErrors code;
@@ -1582,9 +1616,25 @@ xmlParserInputBufferCreateFilename(const
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
-xmlOutputBufferPtr
+/**
+ * Create a buffered  output for the progressive saving of a file
+ * If filename is `"-"` then we use stdout as the output.
+ * Automatic support for ZLIB/Compress compressed document is provided
+ * by default if found at compile-time.
+ *
+ * Consumes `encoder` but not in error case.
+ *
+ * Internal implementation, never uses the callback installed with
+ * #xmlOutputBufferCreateFilenameDefault.
+ *
+ * @param URI  a C string containing the URI or filename
+ * @param encoder  the encoding converter or NULL
+ * @param compression  the compression ration (0 none, 9 max).
+ * @returns the new output or NULL
+ */
+xmlOutputBuffer *
 __xmlOutputBufferCreateFilename(const char *URI,
-                              xmlCharEncodingHandlerPtr encoder,
+                              xmlCharEncodingHandler *encoder,
                               int compression) {
     xmlOutputBufferPtr ret = NULL;
     xmlURIPtr puri;
@@ -1656,25 +1706,24 @@ error:
 }
 
 /**
- * xmlOutputBufferCreateFilename:
- * @URI:  a C string containing the URI or filename
- * @encoder:  the encoding converter or NULL
- * @compression:  the compression ration (0 none, 9 max).
- *
  * Create a buffered  output for the progressive saving of a file
- * If filename is "-' then we use stdout as the output.
+ * If filename is `"-"` 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.
  *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
+ *
+ * Allows the actual function to be overridden with
+ * #xmlOutputBufferCreateFilenameDefault.
  *
- * Returns the new output or NULL
+ * @param URI  a C string containing the URI or filename
+ * @param encoder  the encoding converter or NULL
+ * @param compression  the compression ration (0 none, 9 max).
+ * @returns the new output or NULL
  */
-xmlOutputBufferPtr
+xmlOutputBuffer *
 xmlOutputBufferCreateFilename(const char *URI,
-                              xmlCharEncodingHandlerPtr encoder,
+                              xmlCharEncodingHandler *encoder,
                               int compression ATTRIBUTE_UNUSED) {
     if ((xmlOutputBufferCreateFilenameValue)) {
 		return xmlOutputBufferCreateFilenameValue(URI, encoder, compression);
@@ -1684,22 +1733,20 @@ xmlOutputBufferCreateFilename(const char
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateFile:
- * @file:  a FILE*
- * @enc:  the charset encoding if known (deprecated)
- *
- * DEPRECATED: Don't use.
- *
  * Create a buffered parser input for the progressive parsing of a FILE *
  * buffered C I/O
  *
+ * @deprecated Don't use.
+ *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL
+ * @param file  a FILE*
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser input or NULL
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateFile(FILE *file, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
 
@@ -1717,19 +1764,17 @@ xmlParserInputBufferCreateFile(FILE *fil
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputBufferCreateFile:
- * @file:  a FILE*
- * @encoder:  the encoding converter or NULL
+ * Create a buffered output for the progressive saving to a `FILE *`
+ * buffered C I/O.
  *
- * Create a buffered output for the progressive saving to a FILE *
- * buffered C I/O
- *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
  *
- * Returns the new parser output or NULL
+ * @param file  a `FILE *`
+ * @param encoder  the encoding converter or NULL
+ * @returns the new parser output or NULL
  */
-xmlOutputBufferPtr
-xmlOutputBufferCreateFile(FILE *file, xmlCharEncodingHandlerPtr encoder) {
+xmlOutputBuffer *
+xmlOutputBufferCreateFile(FILE *file, xmlCharEncodingHandler *encoder) {
     xmlOutputBufferPtr ret;
 
     if (file == NULL) {
@@ -1747,19 +1792,17 @@ xmlOutputBufferCreateFile(FILE *file, xm
 }
 
 /**
- * xmlOutputBufferCreateBuffer:
- * @buffer:  a xmlBufferPtr
- * @encoder:  the encoding converter or NULL
- *
  * Create a buffered output for the progressive saving to a xmlBuffer
  *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
  *
- * Returns the new parser output or NULL
- */
-xmlOutputBufferPtr
-xmlOutputBufferCreateBuffer(xmlBufferPtr buffer,
-                            xmlCharEncodingHandlerPtr encoder) {
+ * @param buffer  a xmlBuffer
+ * @param encoder  the encoding converter or NULL
+ * @returns the new parser output or NULL
+ */
+xmlOutputBuffer *
+xmlOutputBufferCreateBuffer(xmlBuffer *buffer,
+                            xmlCharEncodingHandler *encoder) {
     xmlOutputBufferPtr ret;
 
     if (buffer == NULL) {
@@ -1773,15 +1816,13 @@ xmlOutputBufferCreateBuffer(xmlBufferPtr
 }
 
 /**
- * xmlOutputBufferGetContent:
- * @out:  an xmlOutputBufferPtr
- *
  * Gives a pointer to the data currently held in the output buffer
  *
- * Returns a pointer to the data or NULL in case of error
+ * @param out  an xmlOutputBuffer
+ * @returns a pointer to the data or NULL in case of error
  */
 const xmlChar *
-xmlOutputBufferGetContent(xmlOutputBufferPtr out) {
+xmlOutputBufferGetContent(xmlOutputBuffer *out) {
     if ((out == NULL) || (out->buffer == NULL) || (out->error != 0))
         return(NULL);
 
@@ -1789,15 +1830,13 @@ xmlOutputBufferGetContent(xmlOutputBuffe
 }
 
 /**
- * xmlOutputBufferGetSize:
- * @out:  an xmlOutputBufferPtr
- *
  * Gives the length of the data currently held in the output buffer
  *
- * Returns 0 in case or error or no data is held, the size otherwise
+ * @param out  an xmlOutputBuffer
+ * @returns 0 in case or error or no data is held, the size otherwise
  */
 size_t
-xmlOutputBufferGetSize(xmlOutputBufferPtr out) {
+xmlOutputBufferGetSize(xmlOutputBuffer *out) {
     if ((out == NULL) || (out->buffer == NULL) || (out->error != 0))
         return(0);
 
@@ -1808,22 +1847,20 @@ xmlOutputBufferGetSize(xmlOutputBufferPt
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateFd:
- * @fd:  a file descriptor number
- * @enc:  the charset encoding if known (deprecated)
- *
- * DEPRECATED: Use xmlNewInputFromFd.
- *
  * Create a buffered parser input for the progressive parsing for the input
  * from a file descriptor
  *
+ * @deprecated Use #xmlNewInputFromFd.
+ *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL
+ * @param fd  a file descriptor number
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser input or NULL
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateFd(int fd, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
 
@@ -1875,17 +1912,15 @@ xmlMemClose(void *vctxt) {
 }
 
 /**
- * xmlNewInputBufferMemory:
- * @mem:  memory buffer
- * @size:  size of buffer
- * @flags:  flags
- * @enc:  the charset encoding if known (deprecated)
- *
  * Create an input buffer for memory.
  *
- * Returns the new input buffer or NULL.
+ * @param mem  memory buffer
+ * @param size  size of buffer
+ * @param flags  flags
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new input buffer or NULL.
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlNewInputBufferMemory(const void *mem, size_t size,
                         xmlParserInputFlags flags, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
@@ -1933,27 +1968,25 @@ xmlNewInputBufferMemory(const void *mem,
 }
 
 /**
- * xmlParserInputBufferCreateMem:
- * @mem:  the memory input
- * @size:  the length of the memory block
- * @enc:  the charset encoding if known (deprecated)
- *
- * DEPRECATED: Use xmlNewInputFromMemory.
- *
  * Create a parser input buffer for parsing from a memory area.
  *
+ * @deprecated Use #xmlNewInputFromMemory.
+ *
  * This function makes a copy of the whole input buffer. If you are sure
  * that the contents of the buffer will remain valid until the document
  * was parsed, you can avoid the copy by using
- * xmlParserInputBufferCreateStatic.
+ * #xmlParserInputBufferCreateStatic.
  *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL in case of error.
+ * @param mem  the memory input
+ * @param size  the length of the memory block
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser input or NULL in case of error.
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateMem(const char *mem, int size, xmlCharEncoding enc) {
     if ((mem == NULL) || (size < 0))
         return(NULL);
@@ -1962,26 +1995,24 @@ xmlParserInputBufferCreateMem(const char
 }
 
 /**
- * xmlParserInputBufferCreateStatic:
- * @mem:  the memory input
- * @size:  the length of the memory block
- * @enc:  the charset encoding if known
- *
- * DEPRECATED: Use xmlNewInputFromMemory.
- *
  * Create a parser input buffer for parsing from a memory area.
  *
+ * @deprecated Use #xmlNewInputFromMemory.
+ *
  * This functions assumes that the contents of the input buffer remain
- * valid until the document was parsed. Use xmlParserInputBufferCreateMem
+ * valid until the document was parsed. Use #xmlParserInputBufferCreateMem
  * otherwise.
  *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL in case of error.
+ * @param mem  the memory input
+ * @param size  the length of the memory block
+ * @param enc  the charset encoding if known
+ * @returns the new parser input or NULL in case of error.
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateStatic(const char *mem, int size,
                                  xmlCharEncoding enc) {
     if ((mem == NULL) || (size < 0))
@@ -1991,17 +2022,15 @@ xmlParserInputBufferCreateStatic(const c
 }
 
 /**
- * xmlNewInputBufferString:
- * @str:  C string
- * @flags:  flags
- *
- * DEPRECATED: Use xmlNewInputFromString.
- *
  * Create an input buffer for a null-terminated C string.
  *
- * Returns the new input buffer or NULL.
+ * @deprecated Use #xmlNewInputFromString.
+ *
+ * @param str  C string
+ * @param flags  flags
+ * @returns the new input buffer or NULL.
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlNewInputBufferString(const char *str, xmlParserInputFlags flags) {
     xmlParserInputBufferPtr ret;
 
@@ -2023,19 +2052,17 @@ xmlNewInputBufferString(const char *str,
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputBufferCreateFd:
- * @fd:  a file descriptor number
- * @encoder:  the encoding converter or NULL
- *
  * Create a buffered output for the progressive saving
  * to a file descriptor
  *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
  *
- * Returns the new parser output or NULL
+ * @param fd  a file descriptor number
+ * @param encoder  the encoding converter or NULL
+ * @returns the new parser output or NULL
  */
-xmlOutputBufferPtr
-xmlOutputBufferCreateFd(int fd, xmlCharEncodingHandlerPtr encoder) {
+xmlOutputBuffer *
+xmlOutputBufferCreateFd(int fd, xmlCharEncodingHandler *encoder) {
     xmlOutputBufferPtr ret;
 
     if (fd < 0) {
@@ -2062,24 +2089,22 @@ xmlOutputBufferCreateFd(int fd, xmlCharE
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateIO:
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @enc:  the charset encoding if known (deprecated)
- *
- * DEPRECATED: Use xmlNewInputFromIO.
- *
  * Create a buffered parser input for the progressive parsing for the input
  * from an I/O handler
  *
+ * @deprecated Use #xmlNewInputFromIO.
+ *
  * The encoding argument is deprecated and should be set to
  * XML_CHAR_ENCODING_NONE. The encoding can be changed with
- * xmlSwitchEncoding or xmlSwitchEncodingName later on.
+ * #xmlSwitchEncoding or #xmlSwitchEncodingName later on.
  *
- * Returns the new parser input or NULL
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param enc  the charset encoding if known (deprecated)
+ * @returns the new parser input or NULL
  */
-xmlParserInputBufferPtr
+xmlParserInputBuffer *
 xmlParserInputBufferCreateIO(xmlInputReadCallback   ioread,
 	 xmlInputCloseCallback  ioclose, void *ioctx, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
@@ -2098,23 +2123,21 @@ xmlParserInputBufferCreateIO(xmlInputRea
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputBufferCreateIO:
- * @iowrite:  an I/O write function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @encoder:  the charset encoding if known
- *
  * Create a buffered output for the progressive saving
  * to an I/O handler
  *
- * Consumes @encoder but not in error case.
+ * Consumes `encoder` but not in error case.
  *
- * Returns the new parser output or NULL
+ * @param iowrite  an I/O write function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param encoder  the charset encoding if known
+ * @returns the new parser output or NULL
  */
-xmlOutputBufferPtr
+xmlOutputBuffer *
 xmlOutputBufferCreateIO(xmlOutputWriteCallback   iowrite,
 	 xmlOutputCloseCallback  ioclose, void *ioctx,
-	 xmlCharEncodingHandlerPtr encoder) {
+	 xmlCharEncodingHandler *encoder) {
     xmlOutputBufferPtr ret;
 
     if (iowrite == NULL) {
@@ -2133,14 +2156,12 @@ xmlOutputBufferCreateIO(xmlOutputWriteCa
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserInputBufferCreateFilenameDefault:
- * @func: function pointer to the new ParserInputBufferCreateFilenameFunc
- *
- * DEPRECATED: Use xmlCtxtSetResourceLoader or similar functions.
- *
  * Registers a callback for URI input file handling
  *
- * Returns the old value of the registration function
+ * @deprecated Use #xmlCtxtSetResourceLoader or similar functions.
+ *
+ * @param func  function pointer to the new ParserInputBufferCreateFilenameFunc
+ * @returns the old value of the registration function
  */
 xmlParserInputBufferCreateFilenameFunc
 xmlParserInputBufferCreateFilenameDefault(
@@ -2159,12 +2180,10 @@ xmlParserInputBufferCreateFilenameDefaul
 }
 
 /**
- * xmlOutputBufferCreateFilenameDefault:
- * @func: function pointer to the new OutputBufferCreateFilenameFunc
- *
  * Registers a callback for URI output file handling
  *
- * Returns the old value of the registration function
+ * @param func  function pointer to the new OutputBufferCreateFilenameFunc
+ * @returns the old value of the registration function
  */
 xmlOutputBufferCreateFilenameFunc
 xmlOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func)
@@ -2180,22 +2199,20 @@ xmlOutputBufferCreateFilenameDefault(xml
 }
 
 /**
- * xmlParserInputBufferPush:
- * @in:  a buffered parser input
- * @len:  the size in bytes of the array.
- * @buf:  an char array
- *
- * DEPRECATED: Internal function, don't use.
- *
  * 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.
  *
- * Returns the number of chars read and stored in the buffer, or -1
+ * @deprecated Internal function, don't use.
+ *
+ * @param in  a buffered parser input
+ * @param len  the size in bytes of the array.
+ * @param buf  an char array
+ * @returns the number of chars read and stored in the buffer, or -1
  *         in case of error.
  */
 int
-xmlParserInputBufferPush(xmlParserInputBufferPtr in,
+xmlParserInputBufferPush(xmlParserInputBuffer *in,
 	                 int len, const char *buf) {
     size_t nbchars = 0;
     int ret;
@@ -2239,9 +2256,7 @@ xmlParserInputBufferPush(xmlParserInputB
     return(nbchars);
 }
 
-/**
- * endOfInput:
- *
+/*
  * When reading from an Input channel indicated end of file or error
  * don't reread from it again.
  */
@@ -2253,21 +2268,19 @@ endOfInput (void * context ATTRIBUTE_UNU
 }
 
 /**
- * xmlParserInputBufferGrow:
- * @in:  a buffered parser input
- * @len:  indicative value of the amount of chars to read
- *
- * DEPRECATED: Internal function, don't use.
- *
  * 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
  *
- * Returns the number of chars read and stored in the buffer, or -1
+ * @deprecated Internal function, don't use.
+ *
+ * @param in  a buffered parser input
+ * @param len  indicative value of the amount of chars to read
+ * @returns the number of chars read and stored in the buffer, or -1
  *         in case of error.
  */
 int
-xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) {
+xmlParserInputBufferGrow(xmlParserInputBuffer *in, int len) {
     int res = 0;
 
     if ((in == NULL) || (in->error))
@@ -2344,39 +2357,35 @@ xmlParserInputBufferGrow(xmlParserInputB
 }
 
 /**
- * xmlParserInputBufferRead:
- * @in:  a buffered parser input
- * @len:  indicative value of the amount of chars to read
- *
- * DEPRECATED: Internal function, don't use.
+ * Same as #xmlParserInputBufferGrow.
  *
- * Same as xmlParserInputBufferGrow.
+ * @deprecated Internal function, don't use.
  *
- * Returns the number of chars read and stored in the buffer, or -1
+ * @param in  a buffered parser input
+ * @param len  indicative value of the amount of chars to read
+ * @returns the number of chars read and stored in the buffer, or -1
  *         in case of error.
  */
 int
-xmlParserInputBufferRead(xmlParserInputBufferPtr in, int len) {
+xmlParserInputBufferRead(xmlParserInputBuffer *in, int len) {
     return(xmlParserInputBufferGrow(in, len));
 }
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlOutputBufferWrite:
- * @out:  a buffered parser output
- * @len:  the size in bytes of the array.
- * @data:  an char array
- *
  * 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.
  *
- * Returns the number of chars immediately written, or -1
+ * @param out  a buffered parser output
+ * @param len  the size in bytes of the array.
+ * @param data  an char array
+ * @returns the number of chars immediately written, or -1
  *         in case of error.
  */
 int
-xmlOutputBufferWrite(xmlOutputBufferPtr out, int len, const char *data) {
+xmlOutputBufferWrite(xmlOutputBuffer *out, int len, const char *data) {
     xmlBufPtr buf = NULL;
     size_t written = 0;
     int ret;
@@ -2463,22 +2472,20 @@ xmlOutputBufferWrite(xmlOutputBufferPtr
 }
 
 /**
- * xmlOutputBufferWriteEscape:
- * @out:  a buffered parser output
- * @str:  a zero terminated UTF-8 string
- * @escaping:  an optional escaping function (or NULL)
- *
  * Write the content of the string in the output I/O buffer
  * This routine escapes the characters 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.
  *
- * Returns the number of chars immediately written, or -1
+ * @param out  a buffered parser output
+ * @param str  a zero terminated UTF-8 string
+ * @param escaping  an optional escaping function (or NULL)
+ * @returns the number of chars immediately written, or -1
  *         in case of error.
  */
 int
-xmlOutputBufferWriteEscape(xmlOutputBufferPtr out, const xmlChar *str,
+xmlOutputBufferWriteEscape(xmlOutputBuffer *out, const xmlChar *str,
                            xmlCharEncodingOutputFunc escaping) {
     int ret;
     int written = 0;
@@ -2494,7 +2501,7 @@ xmlOutputBufferWriteEscape(xmlOutputBuff
     }
 
     if (escaping == NULL) {
-        char *escaped = (char *) xmlEscapeText(str, XML_ESCAPE_ALLOW_INVALID);
+        char *escaped = (char *) xmlEscapeText(str, 0);
 
         if (escaped == NULL) {
             out->error = XML_ERR_NO_MEMORY;
@@ -2539,20 +2546,18 @@ xmlOutputBufferWriteEscape(xmlOutputBuff
 }
 
 /**
- * xmlOutputBufferWriteString:
- * @out:  a buffered parser output
- * @str:  a zero terminated C string
- *
  * 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.
  *
- * Returns the number of chars immediately written, or -1
+ * @param out  a buffered parser output
+ * @param str  a zero terminated C string
+ * @returns the number of chars immediately written, or -1
  *         in case of error.
  */
 int
-xmlOutputBufferWriteString(xmlOutputBufferPtr out, const char *str) {
+xmlOutputBufferWriteString(xmlOutputBuffer *out, const char *str) {
     int len;
 
     if ((out == NULL) || (out->error)) return(-1);
@@ -2566,16 +2571,21 @@ xmlOutputBufferWriteString(xmlOutputBuff
 }
 
 /**
- * xmlOutputBufferWriteQuotedString:
- * @buf:  output buffer
- * @string:  the string to add
- *
- * 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
+ * Write a string surrounded by quotes to an output buffer.
+ *
+ * Uses double quotes if the string contains no double quotes.
+ * Otherwise, uses single quotes if the string contains no
+ * single quotes. Otherwise, uses double quotes and escapes
+ * double quotes.
+ *
+ * This should only be used to escape system IDs. Currently,
+ * we also use it for public IDs and original entity values.
+ *
+ * @param buf  output buffer
+ * @param string  the string to add
  */
 void
-xmlOutputBufferWriteQuotedString(xmlOutputBufferPtr buf,
+xmlOutputBufferWriteQuotedString(xmlOutputBuffer *buf,
                                  const xmlChar *string) {
     const xmlChar *cur, *base;
 
@@ -2616,15 +2626,13 @@ xmlOutputBufferWriteQuotedString(xmlOutp
 }
 
 /**
- * xmlOutputBufferFlush:
- * @out:  a buffered output
- *
  * flushes the output I/O channel
  *
- * Returns the number of byte written or -1 in case of error.
+ * @param out  a buffered output
+ * @returns the number of byte written or -1 in case of error.
  */
 int
-xmlOutputBufferFlush(xmlOutputBufferPtr out) {
+xmlOutputBufferFlush(xmlOutputBuffer *out) {
     int nbchars = 0, ret = 0;
 
     if ((out == NULL) || (out->error)) return(-1);
@@ -2673,12 +2681,10 @@ xmlOutputBufferFlush(xmlOutputBufferPtr
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /**
- * xmlParserGetDirectory:
- * @filename:  the path to a file
- *
  * lookup the directory for that file
  *
- * Returns a new allocated string containing the directory, or NULL.
+ * @param filename  the path to a file
+ * @returns a new allocated string containing the directory, or NULL.
  */
 char *
 xmlParserGetDirectory(const char *filename) {
@@ -2713,14 +2719,12 @@ xmlParserGetDirectory(const char *filena
 }
 
 /**
- * xmlNoNetExists:
- * @filename:  the path to check
+ * Like #xmlCheckFilename but handles file URIs.
  *
- * DEPRECATED: Internal function, don't use.
+ * @deprecated Internal function, don't use.
  *
- * Like xmlCheckFilename but handles file URIs.
- *
- * Returns 0, 1, or 2.
+ * @param filename  the path to check
+ * @returns 0, 1, or 2.
  */
 int
 xmlNoNetExists(const char *filename) {
@@ -2749,8 +2753,6 @@ xmlNoNetExists(const char *filename) {
  ************************************************************************/
 
 /**
- * xmlInitIOCallbacks:
- *
  * Initialize callback tables.
  */
 void
@@ -2766,17 +2768,15 @@ xmlInitIOCallbacks(void)
 }
 
 /**
- * xmlRegisterInputCallbacks:
- * @matchFunc:  the xmlInputMatchCallback
- * @openFunc:  the xmlInputOpenCallback
- * @readFunc:  the xmlInputReadCallback
- * @closeFunc:  the xmlInputCloseCallback
- *
- * DEPRECATED: Use xmlCtxtSetResourceLoader or similar functions.
- *
  * Register a new set of I/O callback for handling parser input.
  *
- * Returns the registered handler number or -1 in case of error
+ * @deprecated Use #xmlCtxtSetResourceLoader or similar functions.
+ *
+ * @param matchFunc  the xmlInputMatchCallback
+ * @param openFunc  the xmlInputOpenCallback
+ * @param readFunc  the xmlInputReadCallback
+ * @param closeFunc  the xmlInputCloseCallback
+ * @returns the registered handler number or -1 in case of error
  */
 int
 xmlRegisterInputCallbacks(xmlInputMatchCallback matchFunc,
@@ -2795,8 +2795,6 @@ xmlRegisterInputCallbacks(xmlInputMatchC
 }
 
 /**
- * xmlRegisterDefaultInputCallbacks:
- *
  * Registers the default compiled-in I/O handlers.
  */
 void
@@ -2805,12 +2803,10 @@ xmlRegisterDefaultInputCallbacks(void) {
 }
 
 /**
- * xmlPopInputCallbacks:
- *
  * Clear the top input callback from the input stack. this includes the
  * compiled-in I/O.
  *
- * Returns the number of input callback registered or -1 in case of error.
+ * @returns the number of input callback registered or -1 in case of error.
  */
 int
 xmlPopInputCallbacks(void)
@@ -2826,8 +2822,6 @@ xmlPopInputCallbacks(void)
 }
 
 /**
- * xmlCleanupInputCallbacks:
- *
  * clears the entire input callback table. this includes the
  * compiled-in I/O.
  */
@@ -2841,15 +2835,13 @@ xmlCleanupInputCallbacks(void)
 
 #ifdef LIBXML_OUTPUT_ENABLED
 /**
- * xmlRegisterOutputCallbacks:
- * @matchFunc:  the xmlOutputMatchCallback
- * @openFunc:  the xmlOutputOpenCallback
- * @writeFunc:  the xmlOutputWriteCallback
- * @closeFunc:  the xmlOutputCloseCallback
- *
  * Register a new set of I/O callback for handling output.
  *
- * Returns the registered handler number or -1 in case of error
+ * @param matchFunc  the xmlOutputMatchCallback
+ * @param openFunc  the xmlOutputOpenCallback
+ * @param writeFunc  the xmlOutputWriteCallback
+ * @param closeFunc  the xmlOutputCloseCallback
+ * @returns the registered handler number or -1 in case of error
  */
 int
 xmlRegisterOutputCallbacks(xmlOutputMatchCallback matchFunc,
@@ -2868,8 +2860,6 @@ xmlRegisterOutputCallbacks(xmlOutputMatc
 }
 
 /**
- * xmlRegisterDefaultOutputCallbacks:
- *
  * Registers the default compiled-in I/O handlers.
  */
 void
@@ -2878,12 +2868,10 @@ xmlRegisterDefaultOutputCallbacks (void)
 }
 
 /**
- * xmlPopOutputCallbacks:
- *
  * Remove the top output callbacks from the output stack. This includes the
  * compiled-in I/O.
  *
- * Returns the number of output callback registered or -1 in case of error.
+ * @returns the number of output callback registered or -1 in case of error.
  */
 int
 xmlPopOutputCallbacks(void)
@@ -2899,8 +2887,6 @@ xmlPopOutputCallbacks(void)
 }
 
 /**
- * xmlCleanupOutputCallbacks:
- *
  * clears the entire output callback table. this includes the
  * compiled-in I/O callbacks.
  */
@@ -2911,17 +2897,5 @@ xmlCleanupOutputCallbacks(void)
 
     xmlOutputCallbackNr = 0;
 }
-
-#ifdef LIBXML_HTTP_ENABLED
-/**
- * xmlRegisterHTTPPostCallbacks:
- *
- * DEPRECATED: Support for HTTP POST has been removed.
- */
-void
-xmlRegisterHTTPPostCallbacks(void) {
-    xmlRegisterDefaultOutputCallbacks();
-}
-#endif
 #endif /* LIBXML_OUTPUT_ENABLED */
 
diff -pruN 2.14.6+dfsg-0.1/xmlcatalog.c 2.15.0+dfsg-0.3/xmlcatalog.c
--- 2.14.6+dfsg-0.1/xmlcatalog.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlcatalog.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,9 +3,11 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
+#define XML_DEPRECATED
+
 #include "libxml.h"
 
 #include <string.h>
@@ -38,20 +40,26 @@
 
 #if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
 static int shell = 0;
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 static int sgml = 0;
+#endif
 static int noout = 0;
 static int create = 0;
 static int add = 0;
 static int del = 0;
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 static int convert = 0;
 static int no_super_update = 0;
+#endif
 static int verbose = 0;
 static char *filename = NULL;
 
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 #ifndef XML_SGML_DEFAULT_CATALOG
 #define XML_SGML_DEFAULT_CATALOG XML_SYSCONFDIR "/sgml/catalog"
 #endif
+#endif
 
 /************************************************************************
  *									*
@@ -59,12 +67,10 @@ static char *filename = NULL;
  *									*
  ************************************************************************/
 /**
- * xmlShellReadline:
- * @prompt:  the prompt value
- *
  * Read a string
  *
- * Returns a pointer to it or NULL on EOF the caller is expected to
+ * @param prompt  the prompt value
+ * @returns a pointer to it or NULL on EOF the caller is expected to
  *     free the returned string.
  */
 static char *
@@ -306,22 +312,26 @@ static void usershell(void) {
  ************************************************************************/
 static void usage(const char *name) {
     /* split into 2 printf's to avoid overly long string (gcc warning) */
-    printf("\
-Usage : %s [options] catalogfile entities...\n\
-\tParse the catalog file (void specification possibly expressed as \"\"\n\
-\tappoints the default system one) and query it for the entities\n\
-\t--sgml : handle SGML Super catalogs for --add and --del\n\
-\t--shell : run a shell allowing interactive queries\n\
-\t--create : create a new catalog\n\
-\t--add 'type' 'orig' 'replace' : add an XML entry\n\
-\t--add 'entry' : add an SGML entry\n", name);
-    printf("\
-\t--del 'values' : remove values\n\
-\t--noout: avoid dumping the result on stdout\n\
-\t         used with --add or --del, it saves the catalog changes\n\
-\t         and with --sgml it automatically updates the super catalog\n\
-\t--no-super-update: do not update the SGML super catalog\n\
-\t-v --verbose : provide debug information\n");
+    printf(
+"Usage : %s [options] catalogfile entities...\n"
+"\tParse the catalog file (void specification possibly expressed as \"\"\n"
+"\tappoints the default system one) and query it for the entities\n"
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+"\t--sgml : handle SGML Super catalogs for --add and --del\n"
+#endif
+"\t--shell : run a shell allowing interactive queries\n"
+"\t--create : create a new catalog\n"
+"\t--add 'type' 'orig' 'replace' : add an XML entry\n"
+"\t--add 'entry' : add an SGML entry\n", name);
+    printf(
+"\t--del 'values' : remove values\n"
+"\t--noout: avoid dumping the result on stdout\n"
+"\t         used with --add or --del, it saves the catalog changes\n"
+"\t         and with --sgml it automatically updates the super catalog\n"
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+"\t--no-super-update: do not update the SGML super catalog\n"
+#endif
+"\t-v --verbose : provide debug information\n");
 }
 int main(int argc, char **argv) {
     int i;
@@ -358,23 +368,29 @@ int main(int argc, char **argv) {
 	    (!strcmp(argv[i], "--shell"))) {
 	    shell++;
             noout = 1;
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 	} else if ((!strcmp(argv[i], "-sgml")) ||
 	    (!strcmp(argv[i], "--sgml"))) {
 	    sgml++;
+#endif
 	} else if ((!strcmp(argv[i], "-create")) ||
 	    (!strcmp(argv[i], "--create"))) {
 	    create++;
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 	} else if ((!strcmp(argv[i], "-convert")) ||
 	    (!strcmp(argv[i], "--convert"))) {
 	    convert++;
 	} else if ((!strcmp(argv[i], "-no-super-update")) ||
 	    (!strcmp(argv[i], "--no-super-update"))) {
 	    no_super_update++;
+#endif
 	} else if ((!strcmp(argv[i], "-add")) ||
 	    (!strcmp(argv[i], "--add"))) {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 	    if (sgml)
 		i += 2;
 	    else
+#endif
 		i += 3;
 	    add++;
 	} else if ((!strcmp(argv[i], "-del")) ||
@@ -391,9 +407,11 @@ int main(int argc, char **argv) {
     for (i = 1; i < argc; i++) {
 	if ((!strcmp(argv[i], "-add")) ||
 	    (!strcmp(argv[i], "--add"))) {
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 	    if (sgml)
 		i += 2;
 	    else
+#endif
 		i += 3;
 	    continue;
 	} else if ((!strcmp(argv[i], "-del")) ||
@@ -401,7 +419,11 @@ int main(int argc, char **argv) {
 	    i += 1;
 
 	    /* No catalog entry specified */
-	    if (i == argc || (sgml && i + 1 == argc)) {
+	    if (i == argc
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+                || (sgml && i + 1 == argc)
+#endif
+                ) {
 		fprintf(stderr, "No catalog entry specified to remove from\n");
 		usage (argv[0]);
 		return(1);
@@ -432,8 +454,10 @@ int main(int argc, char **argv) {
 	break;
     }
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
     if (convert)
         ret = xmlCatalogConvert();
+#endif
 
     if ((add) || (del)) {
 	for (i = 1; i < argc ; i++) {
@@ -446,6 +470,7 @@ int main(int argc, char **argv) {
 		strcmp(argv[i], "-del") && strcmp(argv[i], "--del"))
 		continue;
 
+#ifdef LIBXML_SGML_CATALOG_ENABLED
 	    if (sgml) {
 		/*
 		 * Maintenance of SGML catalogs.
@@ -538,7 +563,9 @@ int main(int argc, char **argv) {
 
                 xmlFreeCatalog(catal);
                 xmlFreeCatalog(super);
-	    } else {
+	    } else
+#endif /* LIBXML_SGML_CATALOG_ENABLED */
+            {
 		if ((!strcmp(argv[i], "-add")) ||
 		    (!strcmp(argv[i], "--add"))) {
 			if ((argv[i + 3] == NULL) || (argv[i + 3][0] == 0))
@@ -603,7 +630,15 @@ int main(int argc, char **argv) {
 	    }
 	}
     }
-    if ((!sgml) && ((add) || (del) || (create) || (convert))) {
+    if (
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+        (!sgml) &&
+#endif
+        ((add) || (del) || (create)
+#ifdef LIBXML_SGML_CATALOG_ENABLED
+         || (convert)
+#endif
+        )) {
 	if (noout && filename && *filename) {
 	    FILE *out;
 
diff -pruN 2.14.6+dfsg-0.1/xmllint.c 2.15.0+dfsg-0.3/xmllint.c
--- 2.14.6+dfsg-0.1/xmllint.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmllint.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #include "libxml.h"
@@ -86,17 +86,12 @@
   #define PATH_SEPARATOR ':'
 #endif
 
-#define HTML_BUF_SIZE 50000
-
-/* Internal parser option */
-#define XML_PARSE_UNZIP     (1 << 24)
-
 typedef enum {
     XMLLINT_RETURN_OK = 0,	    /* No error */
     XMLLINT_ERR_UNCLASS = 1,	    /* Unclassified */
     XMLLINT_ERR_DTD = 2,	    /* Error in DTD */
     XMLLINT_ERR_VALID = 3,	    /* Validation error */
-    XMLLINT_ERR_RDFILE = 4,	    /* CtxtReadFile error */
+    XMLLINT_ERR_RDFILE = 4,	    /* Wellformedness or IO error */
     XMLLINT_ERR_SCHEMACOMP = 5,	    /* Schema compilation */
     XMLLINT_ERR_OUT = 6,	    /* Error writing output */
     XMLLINT_ERR_SCHEMAPAT = 7,	    /* Error in schema pattern */
@@ -117,6 +112,62 @@ typedef struct {
    int usec;
 } xmlTime;
 
+/* Boolean xmllint application options */
+typedef enum {
+    /** Do not build a tree but work just at the SAX level */
+    XML_LINT_SAX_ENABLED = (1 << 0),
+    /** run a navigating shell */
+    XML_LINT_NAVIGATING_SHELL = (1 << 1),
+    /** Show additional debug information */
+    XML_LINT_DEBUG_ENABLED = (1 << 2),
+    /** Test the internal copy implementation */
+    XML_LINT_COPY_ENABLED = (1 << 3),
+    /** Turn on gzip compression of output */
+    XML_LINT_ZLIB_COMPRESSION = (1 << 4),
+    /** Save in W3C canonical format v1.0 (with comments) */
+    XML_LINT_CANONICAL_V1_0 = (1 << 5),
+    /** Save in W3C canonical format v1.1 (with comments) */
+    XML_LINT_CANONICAL_V1_1 = (1 << 6),
+    /** Save exclusive canonical format (with comments) */
+    XML_LINT_CANONICAL_EXE = (1 << 7),
+    /** Do a posteriori validation, i.e after parsing */
+    XML_LINT_POST_VALIDATION = (1 << 8),
+    /** Ad-hoc test for valid insertions */
+    XML_LINT_VALID_INSERTIONS = (1 << 9),
+    /** Use the HTML parser */
+    XML_LINT_HTML_ENABLED = (1 << 10),
+    /** Force to use the XML serializer when using XML_LINT_HTML_ENABLED */
+    XML_LINT_XML_OUT = (1 << 11),
+    /** Use the push mode of the parser */
+    XML_LINT_PUSH_ENABLED = (1 << 12),
+    /** Parse from memory */
+    XML_LINT_MEMORY = (1 << 13),
+    /** Do XInclude processing */
+    XML_LINT_XINCLUDE = (1 << 14),
+    /** Be quiet when succeeded */
+    XML_LINT_QUIET = (1 << 15),
+    /** Print some timings */
+    XML_LINT_TIMINGS = (1 << 16),
+    /** Generate a small doc on the fly */
+    XML_LINT_GENERATE = (1 << 17),
+    /** Remove the DOCTYPE of the input docs */
+    XML_LINT_DROP_DTD = (1 << 18),
+    /** Use the streaming interface to process very large files */
+    XML_LINT_USE_STREAMING = (1 << 19),
+    /** Create a reader and walk though the resulting doc */
+    XML_LINT_USE_WALKER = (1 << 20),
+    /** use SGML catalogs from $SGML_CATALOG_FILES */
+    XML_LINT_USE_CATALOGS = (1 << 21),
+    /** Deactivate all catalogs */
+    XML_LINT_USE_NO_CATALOGS = (1 << 22),
+    /** Print trace of all external entities loaded */
+    XML_LINT_USE_LOAD_TRACE = (1 << 23),
+    /** Return application failure if document has any namespace errors */
+    XML_LINT_STRICT_NAMESPACE = (1 << 24)
+
+
+} xmllintAppOptions;
+
 typedef struct {
     FILE *errStream;
     xmlParserCtxtPtr ctxt;
@@ -124,27 +175,17 @@ typedef struct {
 
     int version;
     int maxmem;
-    int nowrap;
-    int sax;
     int callbacks;
-    int shell;
-#ifdef LIBXML_DEBUG_ENABLED
-    int debugent;
-#endif
-    int debug;
-    int copy;
     int noout;
 #ifdef LIBXML_OUTPUT_ENABLED
     const char *output;
-    int format;
     const char *encoding;
-    int compress;
+    const char *indentString;
+    int format;
 #endif /* LIBXML_OUTPUT_ENABLED */
 #ifdef LIBXML_VALID_ENABLED
-    int postvalid;
     const char *dtdvalid;
     const char *dtdvalidfpi;
-    int insert;
 #endif
 #ifdef LIBXML_RELAXNG_ENABLED
     const char *relaxng;
@@ -159,36 +200,15 @@ typedef struct {
     xmlSchematronPtr wxschematron;
 #endif
     int repeat;
-#if defined(LIBXML_HTML_ENABLED)
-    int html;
-    int xmlout;
+#ifdef LIBXML_HTML_ENABLED
+    int htmlOptions;
 #endif
-    int htmlout;
-#ifdef LIBXML_PUSH_ENABLED
-    int push;
-#endif /* LIBXML_PUSH_ENABLED */
 #if HAVE_DECL_MMAP
-    int memory;
     char *memoryData;
     size_t memorySize;
 #endif
-    int testIO;
-#ifdef LIBXML_XINCLUDE_ENABLED
-    int xinclude;
-#endif
     xmllintReturnCode progresult;
-    int quiet;
-    int timing;
-    int generate;
-    int dropdtd;
-#ifdef LIBXML_C14N_ENABLED
-    int canonical;
-    int canonical_11;
-    int exc_canonical;
-#endif
 #ifdef LIBXML_READER_ENABLED
-    int stream;
-    int walker;
 #ifdef LIBXML_PATTERN_ENABLED
     const char *pattern;
     xmlPatternPtr patternc;
@@ -198,19 +218,12 @@ typedef struct {
 #ifdef LIBXML_XPATH_ENABLED
     const char *xpathquery;
 #endif
-#ifdef LIBXML_CATALOG_ENABLED
-    int catalogs;
-    int nocatalogs;
-#endif
-    int options;
+    int parseOptions;
+    unsigned appOptions;
     unsigned maxAmpl;
 
     xmlChar *paths[MAX_PATHS + 1];
     int nbpaths;
-    int load_trace;
-
-    char *htmlBuf;
-    int htmlBufLen;
 
     xmlTime begin;
     xmlTime end;
@@ -276,7 +289,7 @@ xmllintResourceLoader(void *ctxt, const
     else
         code = xmlNewInputFromUrl(URL, flags, out);
     if (code != XML_IO_ENOENT) {
-        if ((lint->load_trace) && (code == XML_ERR_OK)) {
+        if ((lint->appOptions & XML_LINT_USE_LOAD_TRACE) && (code == XML_ERR_OK)) {
             fprintf(lint->errStream, "Loaded URL=\"%s\" ID=\"%s\"\n",
                     URL, ID ? ID : "(null)");
         }
@@ -296,7 +309,7 @@ xmllintResourceLoader(void *ctxt, const
             else
                 code = xmlNewInputFromUrl((const char *) newURL, flags, out);
             if (code != XML_IO_ENOENT) {
-                if ((lint->load_trace) && (code == XML_ERR_OK)) {
+                if ((lint->appOptions & XML_LINT_USE_LOAD_TRACE) && (code == XML_ERR_OK)) {
                     fprintf(lint->errStream, "Loaded URL=\"%s\" ID=\"%s\"\n",
                             newURL, ID ? ID : "(null)");
                 }
@@ -316,26 +329,13 @@ xmllintResourceLoader(void *ctxt, const
  *									*
  ************************************************************************/
 
-static int
-myRead(void *f, char *buf, int len) {
-    return(fread(buf, 1, len, (FILE *) f));
-}
-
-static int
-myClose(void *context) {
-    FILE *f = (FILE *) context;
-    if (f == stdin)
-        return(0);
-    return(fclose(f));
-}
-
 static xmlDocPtr
 parseXml(xmllintState *lint, const char *filename) {
     xmlParserCtxtPtr ctxt = lint->ctxt;
     xmlDocPtr doc;
 
 #ifdef LIBXML_PUSH_ENABLED
-    if (lint->push) {
+    if (lint->appOptions & XML_LINT_PUSH_ENABLED) {
         FILE *f;
         int res;
         char chars[4096];
@@ -355,27 +355,17 @@ parseXml(xmllintState *lint, const char
             xmlParseChunk(ctxt, chars, res, 0);
         }
         xmlParseChunk(ctxt, chars, 0, 1);
+        doc = xmlCtxtGetDocument(ctxt);
 
-        doc = ctxt->myDoc;
-        ctxt->myDoc = NULL;
         if (f != stdin)
             fclose(f);
 
-        /*
-         * The push parser leaves non-wellformed documents
-         * in ctxt->myDoc.
-         */
-        if (!ctxt->wellFormed) {
-            xmlFreeDoc(doc);
-            doc = NULL;
-        }
-
         return(doc);
     }
 #endif /* LIBXML_PUSH_ENABLED */
 
 #if HAVE_DECL_MMAP
-    if (lint->memory) {
+    if (lint->appOptions & XML_LINT_MEMORY) {
         xmlParserInputPtr input;
 
         input = xmlNewInputFromMemory(filename,
@@ -390,30 +380,12 @@ parseXml(xmllintState *lint, const char
     }
 #endif
 
-    if (lint->testIO) {
-        FILE *f;
-
-        if ((filename[0] == '-') && (filename[1] == 0)) {
-            f = stdin;
-        } else {
-            f = fopen(filename, "rb");
-            if (f == NULL) {
-                fprintf(lint->errStream, "Can't open %s\n", filename);
-                lint->progresult = XMLLINT_ERR_RDFILE;
-                return(NULL);
-            }
-        }
-
-        doc = xmlCtxtReadIO(ctxt, myRead, myClose, f, filename, NULL,
-                            lint->options);
-    } else {
-        if (strcmp(filename, "-") == 0)
-            doc = xmlCtxtReadFd(ctxt, STDIN_FILENO, "-", NULL,
-                                lint->options | XML_PARSE_UNZIP);
-        else
-            doc = xmlCtxtReadFile(ctxt, filename, NULL,
-                                  lint->options | XML_PARSE_UNZIP);
-    }
+    if (strcmp(filename, "-") == 0)
+        doc = xmlCtxtReadFd(ctxt, STDIN_FILENO, "-", NULL,
+                            lint->parseOptions | XML_PARSE_UNZIP);
+    else
+        doc = xmlCtxtReadFile(ctxt, filename, NULL,
+                              lint->parseOptions | XML_PARSE_UNZIP);
 
     return(doc);
 }
@@ -425,7 +397,7 @@ parseHtml(xmllintState *lint, const char
     xmlDocPtr doc;
 
 #ifdef LIBXML_PUSH_ENABLED
-    if (lint->push) {
+    if (lint->appOptions & XML_LINT_PUSH_ENABLED) {
         FILE *f;
         int res;
         char chars[4096];
@@ -445,8 +417,8 @@ parseHtml(xmllintState *lint, const char
             htmlParseChunk(ctxt, chars, res, 0);
         }
         htmlParseChunk(ctxt, chars, 0, 1);
-        doc = ctxt->myDoc;
-        ctxt->myDoc = NULL;
+        doc = xmlCtxtGetDocument(ctxt);
+
         if (f != stdin)
             fclose(f);
 
@@ -455,7 +427,7 @@ parseHtml(xmllintState *lint, const char
 #endif /* LIBXML_PUSH_ENABLED */
 
 #if HAVE_DECL_MMAP
-    if (lint->memory) {
+    if (lint->appOptions & XML_LINT_MEMORY) {
         xmlParserInputPtr input;
 
         input = xmlNewInputFromMemory(filename,
@@ -472,9 +444,9 @@ parseHtml(xmllintState *lint, const char
 
     if (strcmp(filename, "-") == 0)
         doc = htmlCtxtReadFd(ctxt, STDIN_FILENO, "-", NULL,
-                             lint->options);
+                             lint->htmlOptions);
     else
-        doc = htmlCtxtReadFile(ctxt, filename, NULL, lint->options);
+        doc = htmlCtxtReadFile(ctxt, filename, NULL, lint->htmlOptions);
 
     return(doc);
 }
@@ -621,104 +593,6 @@ endTimer(xmllintState *lint, const char
 
 /************************************************************************
  *									*
- *			HTML output					*
- *									*
- ************************************************************************/
-
-static void
-xmlHTMLEncodeSend(xmllintState *lint) {
-    char *result;
-
-    /*
-     * xmlEncodeEntitiesReentrant assumes valid UTF-8, but the buffer might
-     * end with a truncated UTF-8 sequence. This is a hack to at least avoid
-     * an out-of-bounds read.
-     */
-    memset(&lint->htmlBuf[HTML_BUF_SIZE - 4], 0, 4);
-    result = (char *) xmlEncodeEntitiesReentrant(NULL, BAD_CAST lint->htmlBuf);
-    if (result) {
-	fprintf(lint->errStream, "%s", result);
-	xmlFree(result);
-    }
-
-    lint->htmlBufLen = 0;
-}
-
-static void
-xmlHTMLBufCat(void *data, const char *fmt, ...) {
-    xmllintState *lint = data;
-    va_list ap;
-    int res;
-
-    va_start(ap, fmt);
-    res = vsnprintf(&lint->htmlBuf[lint->htmlBufLen],
-                    HTML_BUF_SIZE - lint->htmlBufLen, fmt, ap);
-    va_end(ap);
-
-    if (res > 0) {
-        if (res > HTML_BUF_SIZE - lint->htmlBufLen - 1)
-            lint->htmlBufLen = HTML_BUF_SIZE - 1;
-        else
-            lint->htmlBufLen += res;
-    }
-}
-
-/**
- * xmlHTMLError:
- * @ctx:  an XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format an error messages, gives file, line, position and
- * extra parameters.
- */
-static void
-xmlHTMLError(void *vctxt, const xmlError *error)
-{
-    xmlParserCtxtPtr ctxt = vctxt;
-    xmllintState *lint = ctxt->_private;
-    xmlParserInputPtr input;
-    xmlGenericErrorFunc oldError;
-    void *oldErrorCtxt;
-
-    input = ctxt->input;
-    if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) {
-        input = ctxt->inputTab[ctxt->inputNr - 2];
-    }
-
-    oldError = xmlGenericError;
-    oldErrorCtxt = xmlGenericErrorContext;
-    xmlSetGenericErrorFunc(lint, xmlHTMLBufCat);
-
-    fprintf(lint->errStream, "<p>");
-
-    xmlParserPrintFileInfo(input);
-    xmlHTMLEncodeSend(lint);
-
-    fprintf(lint->errStream, "<b>%s%s</b>: ",
-            (error->domain == XML_FROM_VALID) ||
-            (error->domain == XML_FROM_DTD) ? "validity " : "",
-            error->level == XML_ERR_WARNING ? "warning" : "error");
-
-    snprintf(lint->htmlBuf, HTML_BUF_SIZE, "%s", error->message);
-    xmlHTMLEncodeSend(lint);
-
-    fprintf(lint->errStream, "</p>\n");
-
-    if (input != NULL) {
-        fprintf(lint->errStream, "<pre>\n");
-
-        xmlParserPrintFileContext(input);
-        xmlHTMLEncodeSend(lint);
-
-        fprintf(lint->errStream, "</pre>");
-    }
-
-    xmlSetGenericErrorFunc(oldErrorCtxt, oldError);
-}
-
-/************************************************************************
- *									*
  *			SAX based tests					*
  *									*
  ************************************************************************/
@@ -761,14 +635,6 @@ static const xmlSAXHandler emptySAXHandl
     NULL  /* xmlStructuredErrorFunc */
 };
 
-/**
- * isStandaloneDebug:
- * @ctxt:  An XML parser context
- *
- * Is this document tagged standalone ?
- *
- * Returns 1 if true
- */
 static int
 isStandaloneDebug(void *ctx)
 {
@@ -781,14 +647,6 @@ isStandaloneDebug(void *ctx)
     return(0);
 }
 
-/**
- * hasInternalSubsetDebug:
- * @ctxt:  An XML parser context
- *
- * Does this document has an internal subset
- *
- * Returns 1 if true
- */
 static int
 hasInternalSubsetDebug(void *ctx)
 {
@@ -801,14 +659,6 @@ hasInternalSubsetDebug(void *ctx)
     return(0);
 }
 
-/**
- * hasExternalSubsetDebug:
- * @ctxt:  An XML parser context
- *
- * Does this document has an external subset
- *
- * Returns 1 if true
- */
 static int
 hasExternalSubsetDebug(void *ctx)
 {
@@ -821,12 +671,6 @@ hasExternalSubsetDebug(void *ctx)
     return(0);
 }
 
-/**
- * internalSubsetDebug:
- * @ctxt:  An XML parser context
- *
- * Does this document has an internal subset
- */
 static void
 internalSubsetDebug(void *ctx, const xmlChar *name,
 	       const xmlChar *ExternalID, const xmlChar *SystemID)
@@ -847,12 +691,6 @@ internalSubsetDebug(void *ctx, const xml
 	fprintf(stdout, " %s)\n", SystemID);
 }
 
-/**
- * externalSubsetDebug:
- * @ctxt:  An XML parser context
- *
- * Does this document has an external subset
- */
 static void
 externalSubsetDebug(void *ctx, const xmlChar *name,
 	       const xmlChar *ExternalID, const xmlChar *SystemID)
@@ -873,20 +711,6 @@ externalSubsetDebug(void *ctx, const xml
 	fprintf(stdout, " %s)\n", SystemID);
 }
 
-/**
- * resolveEntityDebug:
- * @ctxt:  An XML parser context
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
- * Special entity resolver, better left to the parser, it has
- * more context than the application layer.
- * The default behaviour is to NOT resolve the entities, in that case
- * the ENTITY_REF nodes are built in the structure (and the parameter
- * values).
- *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
- */
 static xmlParserInputPtr
 resolveEntityDebug(void *ctx, const xmlChar *publicId, const xmlChar *systemId)
 {
@@ -910,15 +734,6 @@ resolveEntityDebug(void *ctx, const xmlC
     return(NULL);
 }
 
-/**
- * getEntityDebug:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
- * Get an entity by name
- *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
- */
 static xmlEntityPtr
 getEntityDebug(void *ctx, const xmlChar *name)
 {
@@ -931,15 +746,6 @@ getEntityDebug(void *ctx, const xmlChar
     return(NULL);
 }
 
-/**
- * getParameterEntityDebug:
- * @ctxt:  An XML parser context
- * @name: The entity name
- *
- * Get a parameter entity by name
- *
- * Returns the xmlParserInputPtr
- */
 static xmlEntityPtr
 getParameterEntityDebug(void *ctx, const xmlChar *name)
 {
@@ -952,18 +758,6 @@ getParameterEntityDebug(void *ctx, const
     return(NULL);
 }
 
-
-/**
- * entityDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the entity name
- * @type:  the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
- *
- * An entity definition has been parsed
- */
 static void
 entityDeclDebug(void *ctx, const xmlChar *name, int type,
           const xmlChar *publicId, const xmlChar *systemId, xmlChar *content)
@@ -985,14 +779,6 @@ entityDeclDebug(void *ctx, const xmlChar
             name, type, publicId, systemId, content);
 }
 
-/**
- * attributeDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the attribute name
- * @type:  the attribute type
- *
- * An attribute definition has been parsed
- */
 static void
 attributeDeclDebug(void *ctx, const xmlChar * elem,
                    const xmlChar * name, int type, int def,
@@ -1012,15 +798,6 @@ attributeDeclDebug(void *ctx, const xmlC
     xmlFreeEnumeration(tree);
 }
 
-/**
- * elementDeclDebug:
- * @ctxt:  An XML parser context
- * @name:  the element name
- * @type:  the element type
- * @content: the element value (without processing).
- *
- * An element definition has been parsed
- */
 static void
 elementDeclDebug(void *ctx, const xmlChar *name, int type,
 	    xmlElementContentPtr content ATTRIBUTE_UNUSED)
@@ -1034,15 +811,6 @@ elementDeclDebug(void *ctx, const xmlCha
             name, type);
 }
 
-/**
- * notationDeclDebug:
- * @ctxt:  An XML parser context
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
- * What to do when a notation declaration has been parsed.
- */
 static void
 notationDeclDebug(void *ctx, const xmlChar *name,
 	     const xmlChar *publicId, const xmlChar *systemId)
@@ -1056,16 +824,6 @@ notationDeclDebug(void *ctx, const xmlCh
             (char *) name, (char *) publicId, (char *) systemId);
 }
 
-/**
- * unparsedEntityDeclDebug:
- * @ctxt:  An XML parser context
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
- *
- * What to do when an unparsed entity declaration is parsed
- */
 static void
 unparsedEntityDeclDebug(void *ctx, const xmlChar *name,
 		   const xmlChar *publicId, const xmlChar *systemId,
@@ -1088,14 +846,6 @@ unparsedEntityDeclDebug(void *ctx, const
 	    (char *) notationName);
 }
 
-/**
- * setDocumentLocatorDebug:
- * @ctxt:  An XML parser context
- * @loc: A SAX Locator
- *
- * Receive the document locator at startup, actually xmlDefaultSAXLocator
- * Everything is available on the context, so this is useless in our case.
- */
 static void
 setDocumentLocatorDebug(void *ctx, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
 {
@@ -1107,12 +857,6 @@ setDocumentLocatorDebug(void *ctx, xmlSA
     fprintf(stdout, "SAX.setDocumentLocator()\n");
 }
 
-/**
- * startDocumentDebug:
- * @ctxt:  An XML parser context
- *
- * called when the document start being processed.
- */
 static void
 startDocumentDebug(void *ctx)
 {
@@ -1124,12 +868,6 @@ startDocumentDebug(void *ctx)
     fprintf(stdout, "SAX.startDocument()\n");
 }
 
-/**
- * endDocumentDebug:
- * @ctxt:  An XML parser context
- *
- * called when the document end has been detected.
- */
 static void
 endDocumentDebug(void *ctx)
 {
@@ -1141,14 +879,6 @@ endDocumentDebug(void *ctx)
     fprintf(stdout, "SAX.endDocument()\n");
 }
 
-#ifdef LIBXML_SAX1_ENABLED
-/**
- * startElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
- * called when an opening tag has been processed.
- */
 static void
 startElementDebug(void *ctx, const xmlChar *name, const xmlChar **atts)
 {
@@ -1169,13 +899,6 @@ startElementDebug(void *ctx, const xmlCh
     fprintf(stdout, ")\n");
 }
 
-/**
- * endElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
- * called when the end of an element has been detected.
- */
 static void
 endElementDebug(void *ctx, const xmlChar *name)
 {
@@ -1186,17 +909,7 @@ endElementDebug(void *ctx, const xmlChar
 	return;
     fprintf(stdout, "SAX.endElement(%s)\n", (char *) name);
 }
-#endif /* LIBXML_SAX1_ENABLED */
 
-/**
- * charactersDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
- * receiving some chars from the parser.
- * Question: how much at a time ???
- */
 static void
 charactersDebug(void *ctx, const xmlChar *ch, int len)
 {
@@ -1214,13 +927,6 @@ charactersDebug(void *ctx, const xmlChar
     fprintf(stdout, "SAX.characters(%s, %d)\n", out, len);
 }
 
-/**
- * referenceDebug:
- * @ctxt:  An XML parser context
- * @name:  The entity name
- *
- * called when an entity reference is detected.
- */
 static void
 referenceDebug(void *ctx, const xmlChar *name)
 {
@@ -1232,16 +938,6 @@ referenceDebug(void *ctx, const xmlChar
     fprintf(stdout, "SAX.reference(%s)\n", name);
 }
 
-/**
- * ignorableWhitespaceDebug:
- * @ctxt:  An XML parser context
- * @ch:  a xmlChar string
- * @start: the first char in the string
- * @len: the number of xmlChar
- *
- * receiving some ignorable whitespaces from the parser.
- * Question: how much at a time ???
- */
 static void
 ignorableWhitespaceDebug(void *ctx, const xmlChar *ch, int len)
 {
@@ -1258,15 +954,6 @@ ignorableWhitespaceDebug(void *ctx, cons
     fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", out, len);
 }
 
-/**
- * processingInstructionDebug:
- * @ctxt:  An XML parser context
- * @target:  the target name
- * @data: the PI data's
- * @len: the number of xmlChar
- *
- * A processing instruction has been parsed.
- */
 static void
 processingInstructionDebug(void *ctx, const xmlChar *target,
                       const xmlChar *data)
@@ -1284,14 +971,6 @@ processingInstructionDebug(void *ctx, co
 		(char *) target);
 }
 
-/**
- * cdataBlockDebug:
- * @ctx: the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
- *
- * called when a pcdata block has been parsed
- */
 static void
 cdataBlockDebug(void *ctx, const xmlChar *value, int len)
 {
@@ -1304,13 +983,6 @@ cdataBlockDebug(void *ctx, const xmlChar
 	    (char *) value, len);
 }
 
-/**
- * commentDebug:
- * @ctxt:  An XML parser context
- * @value:  the comment content
- *
- * A comment has been parsed.
- */
 static void
 commentDebug(void *ctx, const xmlChar *value)
 {
@@ -1322,15 +994,6 @@ commentDebug(void *ctx, const xmlChar *v
     fprintf(stdout, "SAX.comment(%s)\n", value);
 }
 
-/**
- * warningDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format a warning messages, gives file, line, position and
- * extra parameters.
- */
 static void LIBXML_ATTR_FORMAT(2,3)
 warningDebug(void *ctx, const char *msg, ...)
 {
@@ -1346,15 +1009,6 @@ warningDebug(void *ctx, const char *msg,
     va_end(args);
 }
 
-/**
- * errorDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format a error messages, gives file, line, position and
- * extra parameters.
- */
 static void LIBXML_ATTR_FORMAT(2,3)
 errorDebug(void *ctx, const char *msg, ...)
 {
@@ -1370,15 +1024,6 @@ errorDebug(void *ctx, const char *msg, .
     va_end(args);
 }
 
-/**
- * fatalErrorDebug:
- * @ctxt:  An XML parser context
- * @msg:  the message to display/transmit
- * @...:  extra parameters for the message display
- *
- * Display and format a fatalError messages, gives file, line, position and
- * extra parameters.
- */
 static void LIBXML_ATTR_FORMAT(2,3)
 fatalErrorDebug(void *ctx, const char *msg, ...)
 {
@@ -1434,13 +1079,7 @@ static const xmlSAXHandler debugSAXHandl
 /*
  * SAX2 specific callbacks
  */
-/**
- * startElementNsDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
- * called when an opening tag has been processed.
- */
+
 static void
 startElementNsDebug(void *ctx,
                     const xmlChar *localname,
@@ -1492,13 +1131,6 @@ startElementNsDebug(void *ctx,
     fprintf(stdout, ")\n");
 }
 
-/**
- * endElementDebug:
- * @ctxt:  An XML parser context
- * @name:  The element name
- *
- * called when the end of an element has been detected.
- */
 static void
 endElementNsDebug(void *ctx,
                   const xmlChar *localname,
@@ -1536,8 +1168,8 @@ static const xmlSAXHandler debugSAX2Hand
     setDocumentLocatorDebug,
     startDocumentDebug,
     endDocumentDebug,
-    NULL,
-    NULL,
+    startElementDebug, /* for HTML */
+    endElementDebug,
     referenceDebug,
     charactersDebug,
     ignorableWhitespaceDebug,
@@ -1586,7 +1218,7 @@ testSAX(xmllintState *lint, const char *
 	ret = xmlSchemaValidateStream(vctxt, buf, 0, lint->ctxt->sax, lint);
 	if (lint->repeat == 1) {
 	    if (ret == 0) {
-	        if (!lint->quiet) {
+	        if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
 	            fprintf(lint->errStream, "%s validates\n", filename);
 	        }
 	    } else if (ret > 0) {
@@ -1602,7 +1234,7 @@ testSAX(xmllintState *lint, const char *
     } else
 #endif
 #ifdef LIBXML_HTML_ENABLED
-    if (lint->html) {
+    if (lint->appOptions & XML_LINT_HTML_ENABLED) {
         parseHtml(lint, filename);
     } else
 #endif
@@ -1624,7 +1256,7 @@ static void processNode(xmllintState *li
     type = xmlTextReaderNodeType(reader);
     empty = xmlTextReaderIsEmptyElement(reader);
 
-    if (lint->debug) {
+    if (lint->appOptions & XML_LINT_DEBUG_ENABLED) {
 	name = xmlTextReaderConstName(reader);
 	if (name == NULL)
 	    name = BAD_CAST "--";
@@ -1709,9 +1341,9 @@ static void streamFile(xmllintState *lin
     int ret;
 
 #if HAVE_DECL_MMAP
-    if (lint->memory) {
+    if (lint->appOptions & XML_LINT_MEMORY) {
 	reader = xmlReaderForMemory(lint->memoryData, lint->memorySize,
-                                    filename, NULL, lint->options);
+                                    filename, NULL, lint->parseOptions);
         if (reader == NULL) {
             lint->progresult = XMLLINT_ERR_MEM;
             return;
@@ -1723,11 +1355,11 @@ static void streamFile(xmllintState *lin
 
         if (strcmp(filename, "-") == 0) {
             reader = xmlReaderForFd(STDIN_FILENO, "-", NULL,
-                                    lint->options | XML_PARSE_UNZIP);
+                                    lint->parseOptions | XML_PARSE_UNZIP);
         }
         else {
             reader = xmlReaderForFile(filename, NULL,
-                                      lint->options | XML_PARSE_UNZIP);
+                                      lint->parseOptions | XML_PARSE_UNZIP);
         }
         if (reader == NULL) {
             const xmlError *error = xmlGetLastError();
@@ -1763,7 +1395,7 @@ static void streamFile(xmllintState *lin
 
 #ifdef LIBXML_RELAXNG_ENABLED
     if (lint->relaxng != NULL) {
-        if ((lint->timing) && (lint->repeat == 1)) {
+        if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
             startTimer(lint);
         }
         ret = xmlTextReaderRelaxNGValidate(reader, lint->relaxng);
@@ -1773,14 +1405,14 @@ static void streamFile(xmllintState *lin
             lint->progresult = XMLLINT_ERR_SCHEMACOMP;
             lint->relaxng = NULL;
         }
-        if ((lint->timing) && (lint->repeat == 1)) {
+        if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
             endTimer(lint, "Compiling the schemas");
         }
     }
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
     if (lint->schema != NULL) {
-        if ((lint->timing) && (lint->repeat == 1)) {
+        if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
             startTimer(lint);
         }
         ret = xmlTextReaderSchemaValidate(reader, lint->schema);
@@ -1790,7 +1422,7 @@ static void streamFile(xmllintState *lin
             lint->progresult = XMLLINT_ERR_SCHEMACOMP;
             lint->schema = NULL;
         }
-        if ((lint->timing) && (lint->repeat == 1)) {
+        if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
             endTimer(lint, "Compiling the schemas");
         }
     }
@@ -1799,12 +1431,12 @@ static void streamFile(xmllintState *lin
     /*
      * Process all nodes in sequence
      */
-    if ((lint->timing) && (lint->repeat == 1)) {
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
         startTimer(lint);
     }
     ret = xmlTextReaderRead(reader);
     while (ret == 1) {
-        if ((lint->debug)
+        if ((lint->appOptions & XML_LINT_DEBUG_ENABLED)
 #ifdef LIBXML_PATTERN_ENABLED
             || (lint->patternc)
 #endif
@@ -1812,14 +1444,14 @@ static void streamFile(xmllintState *lin
             processNode(lint, reader);
         ret = xmlTextReaderRead(reader);
     }
-    if ((lint->timing) && (lint->repeat == 1)) {
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 #ifdef LIBXML_RELAXNG_ENABLED
         if (lint->relaxng != NULL)
             endTimer(lint, "Parsing and validating");
         else
 #endif
 #ifdef LIBXML_VALID_ENABLED
-        if (lint->options & XML_PARSE_DTDVALID)
+        if (lint->parseOptions & XML_PARSE_DTDVALID)
             endTimer(lint, "Parsing and validating");
         else
 #endif
@@ -1827,7 +1459,7 @@ static void streamFile(xmllintState *lin
     }
 
 #ifdef LIBXML_VALID_ENABLED
-    if (lint->options & XML_PARSE_DTDVALID) {
+    if (lint->parseOptions & XML_PARSE_DTDVALID) {
         if (xmlTextReaderIsValid(reader) != 1) {
             fprintf(errStream,
                     "Document %s does not validate\n", filename);
@@ -1852,7 +1484,7 @@ static void streamFile(xmllintState *lin
                 fprintf(errStream, "%s fails to validate\n", filename);
                 lint->progresult = XMLLINT_ERR_VALID;
             } else {
-                if (!lint->quiet) {
+                if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
                     fprintf(errStream, "%s validates\n", filename);
                 }
             }
@@ -1931,12 +1563,12 @@ static void walkDoc(xmllintState *lint,
 #endif /* LIBXML_PATTERN_ENABLED */
     reader = xmlReaderWalker(doc);
     if (reader != NULL) {
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 	ret = xmlTextReaderRead(reader);
 	while (ret == 1) {
-	    if ((lint->debug)
+	    if ((lint->appOptions & XML_LINT_DEBUG_ENABLED)
 #ifdef LIBXML_PATTERN_ENABLED
 	        || (lint->patternc)
 #endif
@@ -1944,7 +1576,7 @@ static void walkDoc(xmllintState *lint,
 		processNode(lint, reader);
 	    ret = xmlTextReaderRead(reader);
 	}
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "walking through the doc");
 	}
 	xmlFreeTextReader(reader);
@@ -1989,7 +1621,7 @@ doXPathDump(xmllintState *lint, xmlXPath
 
             if ((cur->nodesetval == NULL) || (cur->nodesetval->nodeNr <= 0)) {
                 lint->progresult = XMLLINT_ERR_XPATH_EMPTY;
-                if (!lint->quiet) {
+                if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
                     fprintf(lint->errStream, "XPath set is empty\n");
                 }
                 break;
@@ -2064,7 +1696,7 @@ doXPathQuery(xmllintState *lint, xmlDocP
     }
 
 #ifdef LIBXML_DEBUG_ENABLED
-    if (lint->debug) {
+    if (lint->appOptions & XML_LINT_DEBUG_ENABLED) {
         xmlXPathDebugDumpCompExpr(stdout, comp, 0);
         printf("\n");
     }
@@ -2097,7 +1729,7 @@ static xmlDocPtr
 parseFile(xmllintState *lint, const char *filename) {
     xmlDocPtr doc = NULL;
 
-    if ((lint->generate) && (filename == NULL)) {
+    if ((lint->appOptions & XML_LINT_GENERATE) && (filename == NULL)) {
         xmlNodePtr n;
 
         doc = xmlNewDoc(BAD_CAST "1.0");
@@ -2123,7 +1755,7 @@ parseFile(xmllintState *lint, const char
     }
 
 #ifdef LIBXML_HTML_ENABLED
-    if (lint->html) {
+    if (lint->appOptions & XML_LINT_HTML_ENABLED) {
         doc = parseHtml(lint, filename);
         return(doc);
     }
@@ -2138,10 +1770,15 @@ parseFile(xmllintState *lint, const char
         else
 	    lint->progresult = XMLLINT_ERR_RDFILE;
     } else {
-#ifdef LIBXML_VALID_ENABLED
-        if ((lint->options & XML_PARSE_DTDVALID) && (lint->ctxt->valid == 0))
+        xmlParserStatus status = xmlCtxtGetStatus(lint->ctxt);
+        if ((lint->parseOptions & XML_PARSE_DTDVALID) &&
+            (status & XML_STATUS_DTD_VALIDATION_FAILED))
             lint->progresult = XMLLINT_ERR_VALID;
-#endif /* LIBXML_VALID_ENABLED */
+
+        if ((lint->appOptions & XML_LINT_STRICT_NAMESPACE) &&
+            (status & XML_STATUS_NOT_NS_WELL_FORMED)) {
+            lint->progresult = XMLLINT_ERR_RDFILE;
+        }
     }
 
     return(doc);
@@ -2155,7 +1792,7 @@ parseAndPrintFile(xmllintState *lint, co
     /* Avoid unused variable warning */
     (void) errStream;
 
-    if ((lint->timing) && (lint->repeat == 1))
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1))
 	startTimer(lint);
 
     doc = parseFile(lint, filename);
@@ -2165,11 +1802,11 @@ parseAndPrintFile(xmllintState *lint, co
 	return;
     }
 
-    if ((lint->timing) && (lint->repeat == 1)) {
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	endTimer(lint, "Parsing");
     }
 
-    if (lint->dropdtd) {
+    if (lint->appOptions & XML_LINT_DROP_DTD) {
 	xmlDtdPtr dtd;
 
 	dtd = xmlGetIntSubset(doc);
@@ -2180,11 +1817,11 @@ parseAndPrintFile(xmllintState *lint, co
     }
 
 #ifdef LIBXML_XINCLUDE_ENABLED
-    if (lint->xinclude) {
+    if (lint->appOptions & XML_LINT_XINCLUDE) {
         xmlXIncludeCtxt *xinc;
         int res;
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 
@@ -2194,7 +1831,7 @@ parseAndPrintFile(xmllintState *lint, co
             goto done;
         }
         xmlXIncludeSetResourceLoader(xinc, xmllintResourceLoader, lint);
-        xmlXIncludeSetFlags(xinc, lint->options);
+        xmlXIncludeSetFlags(xinc, lint->parseOptions);
         res = xmlXIncludeProcessNode(xinc, (xmlNode *) doc);
         xmlXIncludeFreeContext(xinc);
         if (res < 0) {
@@ -2205,7 +1842,7 @@ parseAndPrintFile(xmllintState *lint, co
 	    lint->progresult = XMLLINT_ERR_UNCLASS;
         }
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Xinclude processing");
 	}
     }
@@ -2214,7 +1851,7 @@ parseAndPrintFile(xmllintState *lint, co
     /*
      * shell interaction
      */
-    if (lint->shell) {
+    if (lint->appOptions & XML_LINT_NAVIGATING_SHELL) {
 #ifdef LIBXML_XPATH_ENABLED
         xmlXPathOrderDocElems(doc);
 #endif
@@ -2232,11 +1869,11 @@ parseAndPrintFile(xmllintState *lint, co
     /*
      * test intermediate copy if needed.
      */
-    if (lint->copy) {
+    if (lint->appOptions & XML_LINT_COPY_ENABLED) {
         xmlDocPtr tmp;
 
         tmp = doc;
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    startTimer(lint);
 	}
 	doc = xmlCopyDoc(doc, 1);
@@ -2245,22 +1882,22 @@ parseAndPrintFile(xmllintState *lint, co
             xmlFreeDoc(tmp);
             return;
         }
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    endTimer(lint, "Copying");
 	}
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    startTimer(lint);
 	}
 	xmlFreeDoc(tmp);
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    endTimer(lint, "Freeing original");
 	}
     }
 
 #ifdef LIBXML_VALID_ENABLED
-    if ((lint->insert)
+    if ((lint->appOptions & XML_LINT_VALID_INSERTIONS)
 #ifdef LIBXML_HTML_ENABLED
-        && (!lint->html)
+        && ((lint->appOptions & XML_LINT_HTML_ENABLED) != XML_LINT_HTML_ENABLED)
 #endif
     ) {
         const xmlChar* list[256];
@@ -2291,69 +1928,28 @@ parseAndPrintFile(xmllintState *lint, co
     } else
 #endif /* LIBXML_VALID_ENABLED */
 #ifdef LIBXML_READER_ENABLED
-    if (lint->walker) {
+    if (lint->appOptions & XML_LINT_USE_WALKER) {
         walkDoc(lint, doc);
     }
 #endif /* LIBXML_READER_ENABLED */
 #ifdef LIBXML_OUTPUT_ENABLED
     if (lint->noout == 0) {
-        if (lint->compress)
+#ifdef LIBXML_ZLIB_ENABLED
+        if (lint->appOptions & XML_LINT_ZLIB_COMPRESSION)
             xmlSetDocCompressMode(doc, 9);
+#endif
 
 	/*
 	 * print it.
 	 */
 #ifdef LIBXML_DEBUG_ENABLED
-	if (!lint->debug) {
+	if ((lint->appOptions & XML_LINT_DEBUG_ENABLED) != XML_LINT_DEBUG_ENABLED) {
 #endif
-	    if ((lint->timing) && (lint->repeat == 1)) {
+	    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 		startTimer(lint);
 	    }
-#ifdef LIBXML_HTML_ENABLED
-            if ((lint->html) && (!lint->xmlout)) {
-		if (lint->compress) {
-		    htmlSaveFile(lint->output ? lint->output : "-", doc);
-		}
-		else if (lint->encoding != NULL) {
-		    if (lint->format == 1) {
-			htmlSaveFileFormat(lint->output ? lint->output : "-",
-                                           doc, lint->encoding, 1);
-		    }
-		    else {
-			htmlSaveFileFormat(lint->output ? lint->output : "-",
-                                           doc, lint->encoding, 0);
-		    }
-		}
-		else if (lint->format == 1) {
-		    htmlSaveFileFormat(lint->output ? lint->output : "-",
-                                       doc, NULL, 1);
-		}
-		else {
-		    FILE *out;
-		    if (lint->output == NULL)
-			out = stdout;
-		    else {
-			out = fopen(lint->output,"wb");
-		    }
-		    if (out != NULL) {
-			if (htmlDocDump(out, doc) < 0)
-			    lint->progresult = XMLLINT_ERR_OUT;
-
-			if (lint->output != NULL)
-			    fclose(out);
-		    } else {
-			fprintf(errStream, "failed to open %s\n",
-                                lint->output);
-			lint->progresult = XMLLINT_ERR_OUT;
-		    }
-		}
-		if ((lint->timing) && (lint->repeat == 1)) {
-		    endTimer(lint, "Saving");
-		}
-	    } else
-#endif
 #ifdef LIBXML_C14N_ENABLED
-            if (lint->canonical) {
+            if (lint->appOptions & XML_LINT_CANONICAL_V1_0) {
 	        xmlChar *result = NULL;
 		int size;
 
@@ -2367,7 +1963,7 @@ parseAndPrintFile(xmllintState *lint, co
 		    fprintf(errStream, "Failed to canonicalize\n");
 		    lint->progresult = XMLLINT_ERR_OUT;
 		}
-	    } else if (lint->canonical_11) {
+	    } else if (lint->appOptions & XML_LINT_CANONICAL_V1_1) {
 	        xmlChar *result = NULL;
 		int size;
 
@@ -2381,7 +1977,7 @@ parseAndPrintFile(xmllintState *lint, co
 		    fprintf(errStream, "Failed to canonicalize\n");
 		    lint->progresult = XMLLINT_ERR_OUT;
 		}
-	    } else if (lint->exc_canonical) {
+	    } else if (lint->appOptions & XML_LINT_CANONICAL_EXE) {
 	        xmlChar *result = NULL;
 		int size;
 
@@ -2397,40 +1993,12 @@ parseAndPrintFile(xmllintState *lint, co
 		}
 	    } else
 #endif
-#if HAVE_DECL_MMAP
-	    if (lint->memory) {
-		xmlChar *result;
-		int len;
-
-		if (lint->encoding != NULL) {
-		    if (lint->format == 1) {
-		        xmlDocDumpFormatMemoryEnc(doc, &result, &len,
-                                                  lint->encoding, 1);
-		    } else {
-			xmlDocDumpMemoryEnc(doc, &result, &len,
-                                            lint->encoding);
-		    }
-		} else {
-		    if (lint->format == 1)
-			xmlDocDumpFormatMemory(doc, &result, &len, 1);
-		    else
-			xmlDocDumpMemory(doc, &result, &len);
-		}
-		if (result == NULL) {
-		    fprintf(errStream, "Failed to save\n");
-		    lint->progresult = XMLLINT_ERR_OUT;
-		} else {
-		    if (write(1, result, len) == -1) {
-		        fprintf(errStream, "Can't write data\n");
-		    }
-		    xmlFree(result);
-		}
-
-	    } else
-#endif /* HAVE_DECL_MMAP */
-	    if (lint->compress) {
+#ifdef LIBXML_ZLIB_ENABLED
+	    if (lint->appOptions & XML_LINT_ZLIB_COMPRESSION) {
 		xmlSaveFile(lint->output ? lint->output : "-", doc);
-	    } else {
+	    } else
+#endif
+            {
 	        xmlSaveCtxtPtr ctxt;
 		int saveOpts = 0;
 
@@ -2440,7 +2008,7 @@ parseAndPrintFile(xmllintState *lint, co
                     saveOpts |= XML_SAVE_WSNONSIG;
 
 #if defined(LIBXML_HTML_ENABLED)
-                if (lint->xmlout)
+                if (lint->appOptions & XML_LINT_XML_OUT)
                     saveOpts |= XML_SAVE_AS_XML;
 #endif
 
@@ -2452,6 +2020,9 @@ parseAndPrintFile(xmllintState *lint, co
                                              saveOpts);
 
 		if (ctxt != NULL) {
+                    if (lint->indentString != NULL)
+                        xmlSaveSetIndentString(ctxt, lint->indentString);
+
 		    if (xmlSaveDoc(ctxt, doc) < 0) {
 			fprintf(errStream, "failed save to %s\n",
 				lint->output ? lint->output : "-");
@@ -2462,7 +2033,7 @@ parseAndPrintFile(xmllintState *lint, co
 		    lint->progresult = XMLLINT_ERR_OUT;
 		}
 	    }
-	    if ((lint->timing) && (lint->repeat == 1)) {
+	    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 		endTimer(lint, "Saving");
 	    }
 #ifdef LIBXML_DEBUG_ENABLED
@@ -2494,14 +2065,14 @@ parseAndPrintFile(xmllintState *lint, co
     if ((lint->dtdvalid != NULL) || (lint->dtdvalidfpi != NULL)) {
 	xmlDtdPtr dtd;
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 	if (lint->dtdvalid != NULL)
 	    dtd = xmlParseDTD(NULL, BAD_CAST lint->dtdvalid);
 	else
 	    dtd = xmlParseDTD(BAD_CAST lint->dtdvalidfpi, NULL);
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Parsing DTD");
 	}
 	if (dtd == NULL) {
@@ -2522,7 +2093,7 @@ parseAndPrintFile(xmllintState *lint, co
                 return;
 	    }
 
-	    if ((lint->timing) && (lint->repeat == 1)) {
+	    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 		startTimer(lint);
 	    }
 	    if (!xmlValidateDtd(cvp, doc, dtd)) {
@@ -2536,13 +2107,13 @@ parseAndPrintFile(xmllintState *lint, co
 			    filename, lint->dtdvalidfpi);
 		lint->progresult = XMLLINT_ERR_VALID;
 	    }
-	    if ((lint->timing) && (lint->repeat == 1)) {
+	    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 		endTimer(lint, "Validating against DTD");
 	    }
 	    xmlFreeValidCtxt(cvp);
 	    xmlFreeDtd(dtd);
 	}
-    } else if (lint->postvalid) {
+    } else if (lint->appOptions & XML_LINT_POST_VALIDATION) {
 	xmlValidCtxtPtr cvp;
 
 	cvp = xmlNewValidCtxt();
@@ -2552,7 +2123,7 @@ parseAndPrintFile(xmllintState *lint, co
             return;
 	}
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 	if (!xmlValidateDocument(cvp, doc)) {
@@ -2560,7 +2131,7 @@ parseAndPrintFile(xmllintState *lint, co
 		    "Document %s does not validate\n", filename);
 	    lint->progresult = XMLLINT_ERR_VALID;
 	}
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Validating");
 	}
 	xmlFreeValidCtxt(cvp);
@@ -2572,11 +2143,11 @@ parseAndPrintFile(xmllintState *lint, co
 	int ret;
 	int flag;
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 
-	if (lint->debug)
+	if (lint->appOptions & XML_LINT_DEBUG_ENABLED)
 	    flag = XML_SCHEMATRON_OUT_XML;
 	else
 	    flag = XML_SCHEMATRON_OUT_TEXT;
@@ -2590,7 +2161,7 @@ parseAndPrintFile(xmllintState *lint, co
         }
 	ret = xmlSchematronValidateDoc(ctxt, doc);
 	if (ret == 0) {
-	    if (!lint->quiet) {
+	    if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
 	        fprintf(errStream, "%s validates\n", filename);
 	    }
 	} else if (ret > 0) {
@@ -2602,7 +2173,7 @@ parseAndPrintFile(xmllintState *lint, co
 	    lint->progresult = XMLLINT_ERR_VALID;
 	}
 	xmlSchematronFreeValidCtxt(ctxt);
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Validating");
 	}
     }
@@ -2613,7 +2184,7 @@ parseAndPrintFile(xmllintState *lint, co
 	xmlRelaxNGValidCtxtPtr ctxt;
 	int ret;
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 
@@ -2625,7 +2196,7 @@ parseAndPrintFile(xmllintState *lint, co
         }
 	ret = xmlRelaxNGValidateDoc(ctxt, doc);
 	if (ret == 0) {
-	    if (!lint->quiet) {
+	    if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
 	        fprintf(errStream, "%s validates\n", filename);
 	    }
 	} else if (ret > 0) {
@@ -2637,7 +2208,7 @@ parseAndPrintFile(xmllintState *lint, co
 	    lint->progresult = XMLLINT_ERR_VALID;
 	}
 	xmlRelaxNGFreeValidCtxt(ctxt);
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Validating");
 	}
     }
@@ -2648,7 +2219,7 @@ parseAndPrintFile(xmllintState *lint, co
 	xmlSchemaValidCtxtPtr ctxt;
 	int ret;
 
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    startTimer(lint);
 	}
 
@@ -2660,7 +2231,7 @@ parseAndPrintFile(xmllintState *lint, co
         }
 	ret = xmlSchemaValidateDoc(ctxt, doc);
 	if (ret == 0) {
-	    if (!lint->quiet) {
+	    if ((lint->appOptions & XML_LINT_QUIET) != XML_LINT_QUIET) {
 	        fprintf(errStream, "%s validates\n", filename);
 	    }
 	} else if (ret > 0) {
@@ -2672,21 +2243,12 @@ parseAndPrintFile(xmllintState *lint, co
 	    lint->progresult = XMLLINT_ERR_VALID;
 	}
 	xmlSchemaFreeValidCtxt(ctxt);
-	if ((lint->timing) && (lint->repeat == 1)) {
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	    endTimer(lint, "Validating");
 	}
     }
 #endif /* LIBXML_SCHEMAS_ENABLED */
 
-#ifdef LIBXML_DEBUG_ENABLED
-    if ((lint->debugent)
-#if defined(LIBXML_HTML_ENABLED)
-        && (!lint->html)
-#endif
-    )
-	xmlDebugDumpEntities(errStream, doc);
-#endif
-
     /* Avoid unused label warning */
     goto done;
 
@@ -2694,11 +2256,11 @@ done:
     /*
      * free it.
      */
-    if ((lint->timing) && (lint->repeat == 1)) {
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	startTimer(lint);
     }
     xmlFreeDoc(doc);
-    if ((lint->timing) && (lint->repeat == 1)) {
+    if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat == 1)) {
 	endTimer(lint, "Freeing");
     }
 }
@@ -2713,17 +2275,15 @@ static void showVersion(FILE *errStream,
     fprintf(errStream, "%s: using libxml version %s\n", name, xmlParserVersion);
     fprintf(errStream, "   compiled with: ");
     if (xmlHasFeature(XML_WITH_THREAD)) fprintf(errStream, "Threads ");
-    if (xmlHasFeature(XML_WITH_TREE)) fprintf(errStream, "Tree ");
+    fprintf(errStream, "Tree ");
     if (xmlHasFeature(XML_WITH_OUTPUT)) fprintf(errStream, "Output ");
     if (xmlHasFeature(XML_WITH_PUSH)) fprintf(errStream, "Push ");
     if (xmlHasFeature(XML_WITH_READER)) fprintf(errStream, "Reader ");
     if (xmlHasFeature(XML_WITH_PATTERN)) fprintf(errStream, "Patterns ");
     if (xmlHasFeature(XML_WITH_WRITER)) fprintf(errStream, "Writer ");
     if (xmlHasFeature(XML_WITH_SAX1)) fprintf(errStream, "SAXv1 ");
-    if (xmlHasFeature(XML_WITH_HTTP)) fprintf(errStream, "HTTP ");
     if (xmlHasFeature(XML_WITH_VALID)) fprintf(errStream, "DTDValid ");
     if (xmlHasFeature(XML_WITH_HTML)) fprintf(errStream, "HTML ");
-    if (xmlHasFeature(XML_WITH_LEGACY)) fprintf(errStream, "Legacy ");
     if (xmlHasFeature(XML_WITH_C14N)) fprintf(errStream, "C14N ");
     if (xmlHasFeature(XML_WITH_CATALOG)) fprintf(errStream, "Catalog ");
     if (xmlHasFeature(XML_WITH_XPATH)) fprintf(errStream, "XPath ");
@@ -2732,17 +2292,14 @@ static void showVersion(FILE *errStream,
     if (xmlHasFeature(XML_WITH_ICONV)) fprintf(errStream, "Iconv ");
     if (xmlHasFeature(XML_WITH_ICU)) fprintf(errStream, "ICU ");
     if (xmlHasFeature(XML_WITH_ISO8859X)) fprintf(errStream, "ISO8859X ");
-    if (xmlHasFeature(XML_WITH_UNICODE)) fprintf(errStream, "Unicode ");
-    if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(errStream, "Regexps ");
-    if (xmlHasFeature(XML_WITH_AUTOMATA)) fprintf(errStream, "Automata ");
-    if (xmlHasFeature(XML_WITH_EXPR)) fprintf(errStream, "Expr ");
+    if (xmlHasFeature(XML_WITH_REGEXP))
+        fprintf(errStream, "Regexps Automata ");
     if (xmlHasFeature(XML_WITH_RELAXNG)) fprintf(errStream, "RelaxNG ");
     if (xmlHasFeature(XML_WITH_SCHEMAS)) fprintf(errStream, "Schemas ");
     if (xmlHasFeature(XML_WITH_SCHEMATRON)) fprintf(errStream, "Schematron ");
     if (xmlHasFeature(XML_WITH_MODULES)) fprintf(errStream, "Modules ");
     if (xmlHasFeature(XML_WITH_DEBUG)) fprintf(errStream, "Debug ");
     if (xmlHasFeature(XML_WITH_ZLIB)) fprintf(errStream, "Zlib ");
-    if (xmlHasFeature(XML_WITH_LZMA)) fprintf(errStream, "Lzma ");
     fprintf(errStream, "\n");
 }
 
@@ -2755,14 +2312,7 @@ static void usage(FILE *f, const char *n
 #endif /* LIBXML_OUTPUT_ENABLED */
     fprintf(f, "\t--version : display the version of the XML library used\n");
     fprintf(f, "\t--shell : run a navigating shell\n");
-#ifdef LIBXML_DEBUG_ENABLED
-    fprintf(f, "\t--debug : dump a debug tree of the in-memory document\n");
-    fprintf(f, "\t--debugent : debug the entities defined in the document\n");
-#else
-#ifdef LIBXML_READER_ENABLED
-    fprintf(f, "\t--debug : dump the nodes content when using --stream\n");
-#endif /* LIBXML_READER_ENABLED */
-#endif
+    fprintf(f, "\t--debug : show additional debug information\n");
     fprintf(f, "\t--copy : used to test the internal copy implementation\n");
     fprintf(f, "\t--recover : output what was parsable on broken XML documents\n");
     fprintf(f, "\t--huge : remove any internal arbitrary parser limits\n");
@@ -2773,8 +2323,6 @@ static void usage(FILE *f, const char *n
     fprintf(f, "\t--load-trace : print trace of all external entities loaded\n");
     fprintf(f, "\t--nonet : refuse to fetch DTDs or entities over network\n");
     fprintf(f, "\t--nocompact : do not generate compact text nodes\n");
-    fprintf(f, "\t--htmlout : output results as HTML\n");
-    fprintf(f, "\t--nowrap : do not put HTML doc wrapper\n");
 #ifdef LIBXML_VALID_ENABLED
     fprintf(f, "\t--valid : validate the document in addition to std well-formed check\n");
     fprintf(f, "\t--postvalid : do a posteriori validation, i.e after parsing\n");
@@ -2782,14 +2330,17 @@ static void usage(FILE *f, const char *n
     fprintf(f, "\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier\n");
     fprintf(f, "\t--insert : ad-hoc test for valid insertions\n");
 #endif /* LIBXML_VALID_ENABLED */
+    fprintf(f, "\t--strict-namespace : Return application failure if document has any namespace errors\n");
     fprintf(f, "\t--quiet : be quiet when succeeded\n");
     fprintf(f, "\t--timing : print some timings\n");
     fprintf(f, "\t--repeat : repeat 100 times, for timing or profiling\n");
     fprintf(f, "\t--dropdtd : remove the DOCTYPE of the input docs\n");
 #ifdef LIBXML_HTML_ENABLED
     fprintf(f, "\t--html : use the HTML parser\n");
-    fprintf(f, "\t--xmlout : force to use the XML serializer when using --html\n");
     fprintf(f, "\t--nodefdtd : do not default HTML doctype\n");
+#ifdef LIBXML_OUTPUT_ENABLED
+    fprintf(f, "\t--xmlout : force to use the XML serializer when using --html\n");
+#endif
 #endif
 #ifdef LIBXML_PUSH_ENABLED
     fprintf(f, "\t--push : use the push mode of the parser\n");
@@ -2814,14 +2365,13 @@ static void usage(FILE *f, const char *n
 #ifdef LIBXML_ZLIB_ENABLED
     fprintf(f, "\t--compress : turn on gzip compression of output\n");
 #endif
-#endif /* LIBXML_OUTPUT_ENABLED */
+#ifdef LIBXML_C14N_ENABLED
     fprintf(f, "\t--c14n : save in W3C canonical format v1.0 (with comments)\n");
     fprintf(f, "\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n");
     fprintf(f, "\t--exc-c14n : save in W3C exclusive canonical format (with comments)\n");
-#ifdef LIBXML_C14N_ENABLED
 #endif /* LIBXML_C14N_ENABLED */
+#endif /* LIBXML_OUTPUT_ENABLED */
     fprintf(f, "\t--nsclean : remove redundant namespace declarations\n");
-    fprintf(f, "\t--testIO : test user I/O support\n");
 #ifdef LIBXML_CATALOG_ENABLED
     fprintf(f, "\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES\n");
     fprintf(f, "\t             otherwise XML Catalogs starting from \n");
@@ -2866,9 +2416,9 @@ static void usage(FILE *f, const char *n
     fprintf(f, "\nLibxml project home page: https://gitlab.gnome.org/GNOME/libxml2\n");
 }
 
-static unsigned long
-parseInteger(FILE *errStream, const char *ctxt, const char *str,
-             unsigned long min, unsigned long max) {
+static int
+parseInteger(unsigned long *result, FILE *errStream, const char *ctxt,
+             const char *str, unsigned long min, unsigned long max) {
     char *strEnd;
     unsigned long val;
 
@@ -2876,14 +2426,15 @@ parseInteger(FILE *errStream, const char
     val = strtoul(str, &strEnd, 10);
     if (errno == EINVAL || *strEnd != 0) {
         fprintf(errStream, "%s: invalid integer: %s\n", ctxt, str);
-        exit(XMLLINT_ERR_UNCLASS);
+        return(-1);
     }
     if (errno != 0 || val < min || val > max) {
         fprintf(errStream, "%s: integer out of range: %s\n", ctxt, str);
-        exit(XMLLINT_ERR_UNCLASS);
+        return(-1);
     }
 
-    return(val);
+    *result = val;
+    return(0);
 }
 
 static int
@@ -2942,12 +2493,21 @@ xmllintInit(xmllintState *lint) {
 
     lint->repeat = 1;
     lint->progresult = XMLLINT_RETURN_OK;
-    lint->options = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES;
+    lint->parseOptions = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES;
+#ifdef LIBXML_HTML_ENABLED
+    lint->htmlOptions = HTML_PARSE_COMPACT | HTML_PARSE_BIG_LINES;
+#endif
+}
+
+static void
+xmllintOptWarnNoSupport(FILE *errStream, const char *opt, const char *nosupp) {
+    fprintf(errStream, "Warning: Option %s doesn't support %s\n", opt, nosupp);
 }
 
 static int
 xmllintParseOptions(xmllintState *lint, int argc, const char **argv) {
     FILE *errStream = lint->errStream;
+    const char *specialMode = NULL;
     int i;
 
     if (argc <= 1) {
@@ -2956,6 +2516,8 @@ xmllintParseOptions(xmllintState *lint,
     }
 
     for (i = 1; i < argc ; i++) {
+        unsigned long val;
+
         if (argv[i][0] != '-' || argv[i][1] == 0)
             continue;
 
@@ -2966,39 +2528,46 @@ xmllintParseOptions(xmllintState *lint,
                 fprintf(errStream, "maxmem: missing integer value\n");
                 return(XMLLINT_ERR_UNCLASS);
             }
-            errno = 0;
-            lint->maxmem = parseInteger(errStream, "maxmem", argv[i],
-                                        0, INT_MAX);
+            if (parseInteger(&val, errStream, "maxmem", argv[i],
+                             0, INT_MAX) < 0)
+                return(XMLLINT_ERR_UNCLASS);
+            lint->maxmem = val;
         } else if ((!strcmp(argv[i], "-debug")) ||
                    (!strcmp(argv[i], "--debug"))) {
-            lint->debug = 1;
+            lint->appOptions |= XML_LINT_DEBUG_ENABLED;
         } else if ((!strcmp(argv[i], "-shell")) ||
                    (!strcmp(argv[i], "--shell"))) {
-            lint->shell = 1;
+            lint->appOptions |= XML_LINT_NAVIGATING_SHELL;
         } else if ((!strcmp(argv[i], "-copy")) ||
                    (!strcmp(argv[i], "--copy"))) {
-            lint->copy = 1;
+            lint->appOptions |= XML_LINT_COPY_ENABLED;
         } else if ((!strcmp(argv[i], "-recover")) ||
                    (!strcmp(argv[i], "--recover"))) {
-            lint->options |= XML_PARSE_RECOVER;
+            lint->parseOptions |= XML_PARSE_RECOVER;
         } else if ((!strcmp(argv[i], "-huge")) ||
                    (!strcmp(argv[i], "--huge"))) {
-            lint->options |= XML_PARSE_HUGE;
+            lint->parseOptions |= XML_PARSE_HUGE;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions |= HTML_PARSE_HUGE;
+#endif
         } else if ((!strcmp(argv[i], "-noent")) ||
                    (!strcmp(argv[i], "--noent"))) {
-            lint->options |= XML_PARSE_NOENT;
+            lint->parseOptions |= XML_PARSE_NOENT;
         } else if ((!strcmp(argv[i], "-noenc")) ||
                    (!strcmp(argv[i], "--noenc"))) {
-            lint->options |= XML_PARSE_IGNORE_ENC;
+            lint->parseOptions |= XML_PARSE_IGNORE_ENC;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions |= HTML_PARSE_IGNORE_ENC;
+#endif
         } else if ((!strcmp(argv[i], "-nsclean")) ||
                    (!strcmp(argv[i], "--nsclean"))) {
-            lint->options |= XML_PARSE_NSCLEAN;
+            lint->parseOptions |= XML_PARSE_NSCLEAN;
         } else if ((!strcmp(argv[i], "-nocdata")) ||
                    (!strcmp(argv[i], "--nocdata"))) {
-            lint->options |= XML_PARSE_NOCDATA;
+            lint->parseOptions |= XML_PARSE_NOCDATA;
         } else if ((!strcmp(argv[i], "-nodict")) ||
                    (!strcmp(argv[i], "--nodict"))) {
-            lint->options |= XML_PARSE_NODICT;
+            lint->parseOptions |= XML_PARSE_NODICT;
         } else if ((!strcmp(argv[i], "-version")) ||
                    (!strcmp(argv[i], "--version"))) {
             showVersion(errStream, argv[0]);
@@ -3006,63 +2575,62 @@ xmllintParseOptions(xmllintState *lint,
         } else if ((!strcmp(argv[i], "-noout")) ||
                    (!strcmp(argv[i], "--noout"))) {
             lint->noout = 1;
-        } else if ((!strcmp(argv[i], "-htmlout")) ||
-                   (!strcmp(argv[i], "--htmlout"))) {
-            lint->htmlout = 1;
-        } else if ((!strcmp(argv[i], "-nowrap")) ||
-                   (!strcmp(argv[i], "--nowrap"))) {
-            lint->nowrap = 1;
 #ifdef LIBXML_HTML_ENABLED
         } else if ((!strcmp(argv[i], "-html")) ||
                    (!strcmp(argv[i], "--html"))) {
-            lint->html = 1;
-        } else if ((!strcmp(argv[i], "-xmlout")) ||
-                   (!strcmp(argv[i], "--xmlout"))) {
-            lint->xmlout = 1;
+            lint->appOptions |= XML_LINT_HTML_ENABLED;
         } else if ((!strcmp(argv[i], "-nodefdtd")) ||
                    (!strcmp(argv[i], "--nodefdtd"))) {
-            lint->options |= HTML_PARSE_NODEFDTD;
+            lint->htmlOptions |= HTML_PARSE_NODEFDTD;
+#ifdef LIBXML_OUTPUT_ENABLED
+        } else if ((!strcmp(argv[i], "-xmlout")) ||
+                   (!strcmp(argv[i], "--xmlout"))) {
+            lint->appOptions |= XML_LINT_XML_OUT;
+#endif
 #endif /* LIBXML_HTML_ENABLED */
         } else if ((!strcmp(argv[i], "-loaddtd")) ||
                    (!strcmp(argv[i], "--loaddtd"))) {
-            lint->options |= XML_PARSE_DTDLOAD;
+            lint->parseOptions |= XML_PARSE_DTDLOAD;
         } else if ((!strcmp(argv[i], "-dtdattr")) ||
                    (!strcmp(argv[i], "--dtdattr"))) {
-            lint->options |= XML_PARSE_DTDATTR;
+            lint->parseOptions |= XML_PARSE_DTDATTR;
 #ifdef LIBXML_VALID_ENABLED
         } else if ((!strcmp(argv[i], "-valid")) ||
                    (!strcmp(argv[i], "--valid"))) {
-            lint->options |= XML_PARSE_DTDVALID;
+            lint->parseOptions |= XML_PARSE_DTDVALID;
         } else if ((!strcmp(argv[i], "-postvalid")) ||
                    (!strcmp(argv[i], "--postvalid"))) {
-            lint->postvalid = 1;
-            lint->options |= XML_PARSE_DTDLOAD;
+            lint->appOptions |= XML_LINT_POST_VALIDATION;
+            lint->parseOptions |= XML_PARSE_DTDLOAD;
         } else if ((!strcmp(argv[i], "-dtdvalid")) ||
                    (!strcmp(argv[i], "--dtdvalid"))) {
             i++;
             lint->dtdvalid = argv[i];
-            lint->options |= XML_PARSE_DTDLOAD;
+            lint->parseOptions |= XML_PARSE_DTDLOAD;
         } else if ((!strcmp(argv[i], "-dtdvalidfpi")) ||
                    (!strcmp(argv[i], "--dtdvalidfpi"))) {
             i++;
             lint->dtdvalidfpi = argv[i];
-            lint->options |= XML_PARSE_DTDLOAD;
+            lint->parseOptions |= XML_PARSE_DTDLOAD;
         } else if ((!strcmp(argv[i], "-insert")) ||
                    (!strcmp(argv[i], "--insert"))) {
-            lint->insert = 1;
+            lint->appOptions |= XML_LINT_VALID_INSERTIONS;
 #endif /* LIBXML_VALID_ENABLED */
+        } else if ((!strcmp(argv[i], "-strict-namespace")) ||
+            (!strcmp(argv[i], "--strict-namespace"))) {
+            lint->appOptions |= XML_LINT_STRICT_NAMESPACE;
         } else if ((!strcmp(argv[i], "-dropdtd")) ||
                    (!strcmp(argv[i], "--dropdtd"))) {
-            lint->dropdtd = 1;
+            lint->appOptions |= XML_LINT_DROP_DTD;
         } else if ((!strcmp(argv[i], "-quiet")) ||
                    (!strcmp(argv[i], "--quiet"))) {
-            lint->quiet = 1;
+            lint->appOptions |= XML_LINT_QUIET;
         } else if ((!strcmp(argv[i], "-timing")) ||
                    (!strcmp(argv[i], "--timing"))) {
-            lint->timing = 1;
+            lint->appOptions |= XML_LINT_TIMINGS;
         } else if ((!strcmp(argv[i], "-auto")) ||
                    (!strcmp(argv[i], "--auto"))) {
-            lint->generate = 1;
+            lint->appOptions |= XML_LINT_GENERATE;
         } else if ((!strcmp(argv[i], "-repeat")) ||
                    (!strcmp(argv[i], "--repeat"))) {
 #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
@@ -3076,70 +2644,55 @@ xmllintParseOptions(xmllintState *lint,
 #ifdef LIBXML_PUSH_ENABLED
         } else if ((!strcmp(argv[i], "-push")) ||
                    (!strcmp(argv[i], "--push"))) {
-            lint->push = 1;
+            lint->appOptions |= XML_LINT_PUSH_ENABLED;
 #endif /* LIBXML_PUSH_ENABLED */
 #if HAVE_DECL_MMAP
         } else if ((!strcmp(argv[i], "-memory")) ||
                    (!strcmp(argv[i], "--memory"))) {
-            lint->memory = 1;
+            lint->appOptions |= XML_LINT_MEMORY;
 #endif
-        } else if ((!strcmp(argv[i], "-testIO")) ||
-                   (!strcmp(argv[i], "--testIO"))) {
-            lint->testIO = 1;
 #ifdef LIBXML_XINCLUDE_ENABLED
         } else if ((!strcmp(argv[i], "-xinclude")) ||
                    (!strcmp(argv[i], "--xinclude"))) {
-            lint->xinclude = 1;
-            lint->options |= XML_PARSE_XINCLUDE;
+            lint->appOptions |= XML_LINT_XINCLUDE;
+            lint->parseOptions |= XML_PARSE_XINCLUDE;
         } else if ((!strcmp(argv[i], "-noxincludenode")) ||
                    (!strcmp(argv[i], "--noxincludenode"))) {
-            lint->xinclude = 1;
-            lint->options |= XML_PARSE_XINCLUDE;
-            lint->options |= XML_PARSE_NOXINCNODE;
+            lint->appOptions |= XML_LINT_XINCLUDE;
+            lint->parseOptions |= XML_PARSE_XINCLUDE;
+            lint->parseOptions |= XML_PARSE_NOXINCNODE;
         } else if ((!strcmp(argv[i], "-nofixup-base-uris")) ||
                    (!strcmp(argv[i], "--nofixup-base-uris"))) {
-            lint->xinclude = 1;
-            lint->options |= XML_PARSE_XINCLUDE;
-            lint->options |= XML_PARSE_NOBASEFIX;
+            lint->appOptions |= XML_LINT_XINCLUDE;
+            lint->parseOptions |= XML_PARSE_XINCLUDE;
+            lint->parseOptions |= XML_PARSE_NOBASEFIX;
 #endif
         } else if ((!strcmp(argv[i], "-nowarning")) ||
                    (!strcmp(argv[i], "--nowarning"))) {
-            lint->options |= XML_PARSE_NOWARNING;
-            lint->options &= ~XML_PARSE_PEDANTIC;
+            lint->parseOptions |= XML_PARSE_NOWARNING;
+            lint->parseOptions &= ~XML_PARSE_PEDANTIC;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions |= HTML_PARSE_NOWARNING;
+#endif
         } else if ((!strcmp(argv[i], "-pedantic")) ||
                    (!strcmp(argv[i], "--pedantic"))) {
-            lint->options |= XML_PARSE_PEDANTIC;
-            lint->options &= ~XML_PARSE_NOWARNING;
-#ifdef LIBXML_DEBUG_ENABLED
-        } else if ((!strcmp(argv[i], "-debugent")) ||
-                   (!strcmp(argv[i], "--debugent"))) {
-            lint->debugent = 1;
-#endif
-#ifdef LIBXML_C14N_ENABLED
-        } else if ((!strcmp(argv[i], "-c14n")) ||
-                   (!strcmp(argv[i], "--c14n"))) {
-            lint->canonical = 1;
-            lint->options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
-        } else if ((!strcmp(argv[i], "-c14n11")) ||
-                   (!strcmp(argv[i], "--c14n11"))) {
-            lint->canonical_11 = 1;
-            lint->options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
-        } else if ((!strcmp(argv[i], "-exc-c14n")) ||
-                   (!strcmp(argv[i], "--exc-c14n"))) {
-            lint->exc_canonical = 1;
-            lint->options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
-#endif
+            lint->parseOptions |= XML_PARSE_PEDANTIC;
+            lint->parseOptions &= ~XML_PARSE_NOWARNING;
 #ifdef LIBXML_CATALOG_ENABLED
         } else if ((!strcmp(argv[i], "-catalogs")) ||
                    (!strcmp(argv[i], "--catalogs"))) {
-            lint->catalogs = 1;
+            lint->appOptions |= XML_LINT_USE_CATALOGS;
         } else if ((!strcmp(argv[i], "-nocatalogs")) ||
                    (!strcmp(argv[i], "--nocatalogs"))) {
-            lint->nocatalogs = 1;
+            lint->appOptions |= XML_LINT_USE_NO_CATALOGS;
+            lint->parseOptions |= XML_PARSE_NO_SYS_CATALOG;
 #endif
         } else if ((!strcmp(argv[i], "-noblanks")) ||
                    (!strcmp(argv[i], "--noblanks"))) {
-            lint->options |= XML_PARSE_NOBLANKS;
+            lint->parseOptions |= XML_PARSE_NOBLANKS;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions |= HTML_PARSE_NOBLANKS;
+#endif
 #ifdef LIBXML_OUTPUT_ENABLED
         } else if ((!strcmp(argv[i], "-o")) ||
                    (!strcmp(argv[i], "-output")) ||
@@ -3149,7 +2702,10 @@ xmllintParseOptions(xmllintState *lint,
         } else if ((!strcmp(argv[i], "-format")) ||
                    (!strcmp(argv[i], "--format"))) {
             lint->format = 1;
-            lint->options |= XML_PARSE_NOBLANKS;
+            lint->parseOptions |= XML_PARSE_NOBLANKS;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions |= HTML_PARSE_NOBLANKS;
+#endif
         } else if ((!strcmp(argv[i], "-encode")) ||
                    (!strcmp(argv[i], "--encode"))) {
             i++;
@@ -3157,21 +2713,41 @@ xmllintParseOptions(xmllintState *lint,
         } else if ((!strcmp(argv[i], "-pretty")) ||
                    (!strcmp(argv[i], "--pretty"))) {
             i++;
-            if (argv[i] != NULL)
-                lint->format = atoi(argv[i]);
+            if (i >= argc) {
+                fprintf(errStream, "pretty: missing integer value\n");
+                return(XMLLINT_ERR_UNCLASS);
+            }
+            if (parseInteger(&val, errStream, "pretty", argv[i],
+                             0, 2) < 0)
+                return(XMLLINT_ERR_UNCLASS);
+            lint->format = val;
 #ifdef LIBXML_ZLIB_ENABLED
         } else if ((!strcmp(argv[i], "-compress")) ||
                    (!strcmp(argv[i], "--compress"))) {
-            lint->compress = 1;
+            lint->appOptions |= XML_LINT_ZLIB_COMPRESSION;
 #endif
+#ifdef LIBXML_C14N_ENABLED
+        } else if ((!strcmp(argv[i], "-c14n")) ||
+                   (!strcmp(argv[i], "--c14n"))) {
+            lint->appOptions |= XML_LINT_CANONICAL_V1_0;
+            lint->parseOptions |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
+        } else if ((!strcmp(argv[i], "-c14n11")) ||
+                   (!strcmp(argv[i], "--c14n11"))) {
+            lint->appOptions |= XML_LINT_CANONICAL_V1_1;
+            lint->parseOptions |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
+        } else if ((!strcmp(argv[i], "-exc-c14n")) ||
+                   (!strcmp(argv[i], "--exc-c14n"))) {
+            lint->appOptions |= XML_LINT_CANONICAL_EXE;
+            lint->parseOptions |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD;
+#endif /* LIBXML_C14N_ENABLED */
 #endif /* LIBXML_OUTPUT_ENABLED */
 #ifdef LIBXML_READER_ENABLED
         } else if ((!strcmp(argv[i], "-stream")) ||
                    (!strcmp(argv[i], "--stream"))) {
-             lint->stream = 1;
+             lint->appOptions |= XML_LINT_USE_STREAMING;
         } else if ((!strcmp(argv[i], "-walker")) ||
                    (!strcmp(argv[i], "--walker"))) {
-             lint->walker = 1;
+             lint->appOptions |= XML_LINT_USE_WALKER;
              lint->noout = 1;
 #ifdef LIBXML_PATTERN_ENABLED
         } else if ((!strcmp(argv[i], "-pattern")) ||
@@ -3183,41 +2759,44 @@ xmllintParseOptions(xmllintState *lint,
 #ifdef LIBXML_SAX1_ENABLED
         } else if ((!strcmp(argv[i], "-sax1")) ||
                    (!strcmp(argv[i], "--sax1"))) {
-            lint->options |= XML_PARSE_SAX1;
+            lint->parseOptions |= XML_PARSE_SAX1;
 #endif /* LIBXML_SAX1_ENABLED */
         } else if ((!strcmp(argv[i], "-sax")) ||
                    (!strcmp(argv[i], "--sax"))) {
-            lint->sax = 1;
+            lint->appOptions |= XML_LINT_SAX_ENABLED;
 #ifdef LIBXML_RELAXNG_ENABLED
         } else if ((!strcmp(argv[i], "-relaxng")) ||
                    (!strcmp(argv[i], "--relaxng"))) {
             i++;
             lint->relaxng = argv[i];
-            lint->options |= XML_PARSE_NOENT;
+            lint->parseOptions |= XML_PARSE_NOENT;
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
         } else if ((!strcmp(argv[i], "-schema")) ||
                  (!strcmp(argv[i], "--schema"))) {
             i++;
             lint->schema = argv[i];
-            lint->options |= XML_PARSE_NOENT;
+            lint->parseOptions |= XML_PARSE_NOENT;
 #endif
 #ifdef LIBXML_SCHEMATRON_ENABLED
         } else if ((!strcmp(argv[i], "-schematron")) ||
                    (!strcmp(argv[i], "--schematron"))) {
             i++;
             lint->schematron = argv[i];
-            lint->options |= XML_PARSE_NOENT;
+            lint->parseOptions |= XML_PARSE_NOENT;
 #endif
         } else if ((!strcmp(argv[i], "-nonet")) ||
                    (!strcmp(argv[i], "--nonet"))) {
-            lint->options |= XML_PARSE_NONET;
+            lint->parseOptions |= XML_PARSE_NONET;
         } else if ((!strcmp(argv[i], "-nocompact")) ||
                    (!strcmp(argv[i], "--nocompact"))) {
-            lint->options &= ~XML_PARSE_COMPACT;
+            lint->parseOptions &= ~XML_PARSE_COMPACT;
+#ifdef LIBXML_HTML_ENABLED
+            lint->htmlOptions &= ~HTML_PARSE_COMPACT;
+#endif
         } else if ((!strcmp(argv[i], "-load-trace")) ||
                    (!strcmp(argv[i], "--load-trace"))) {
-            lint->load_trace = 1;
+            lint->appOptions |= XML_LINT_USE_LOAD_TRACE;
         } else if ((!strcmp(argv[i], "-path")) ||
                    (!strcmp(argv[i], "--path"))) {
             i++;
@@ -3231,7 +2810,7 @@ xmllintParseOptions(xmllintState *lint,
 #endif
         } else if ((!strcmp(argv[i], "-oldxml10")) ||
                    (!strcmp(argv[i], "--oldxml10"))) {
-            lint->options |= XML_PARSE_OLD10;
+            lint->parseOptions |= XML_PARSE_OLD10;
         } else if ((!strcmp(argv[i], "-max-ampl")) ||
                    (!strcmp(argv[i], "--max-ampl"))) {
             i++;
@@ -3239,8 +2818,10 @@ xmllintParseOptions(xmllintState *lint,
                 fprintf(errStream, "max-ampl: missing integer value\n");
                 return(XMLLINT_ERR_UNCLASS);
             }
-            lint->maxAmpl = parseInteger(errStream, "max-ampl", argv[i],
-                                         1, UINT_MAX);
+            if (parseInteger(&val, errStream, "max-ampl", argv[i],
+                             1, UINT_MAX) < 0)
+                return(XMLLINT_ERR_UNCLASS);
+            lint->maxAmpl = val;
         } else {
             fprintf(errStream, "Unknown option %s\n", argv[i]);
             usage(errStream, argv[0]);
@@ -3248,9 +2829,141 @@ xmllintParseOptions(xmllintState *lint,
         }
     }
 
-    if (lint->shell)
+    if (lint->appOptions & XML_LINT_NAVIGATING_SHELL)
         lint->repeat = 1;
 
+#ifdef LIBXML_READER_ENABLED
+    if (lint->appOptions & XML_LINT_USE_STREAMING) {
+        specialMode = "--stream";
+
+        if (lint->appOptions & XML_LINT_SAX_ENABLED)
+            xmllintOptWarnNoSupport(errStream, "--stream", "--sax");
+#ifdef LIBXML_PUSH_ENABLED
+        if (lint->appOptions & XML_LINT_PUSH_ENABLED)
+            xmllintOptWarnNoSupport(errStream, "--stream", "--push");
+#endif
+#ifdef LIBXML_HTML_ENABLED
+        if (lint->appOptions & XML_LINT_HTML_ENABLED)
+            xmllintOptWarnNoSupport(errStream, "--stream", "--html");
+#endif
+    }
+#endif /* LIBXML_READER_ENABLED */
+
+    if (lint->appOptions & XML_LINT_SAX_ENABLED) {
+        specialMode = "--sax";
+
+#ifdef LIBXML_XINCLUDE_ENABLED
+        if (lint->appOptions & XML_LINT_XINCLUDE)
+            xmllintOptWarnNoSupport(errStream, "--sax", "--xinclude");
+#endif
+#ifdef LIBXML_RELAXNG_ENABLED
+        if (lint->relaxng != NULL)
+            xmllintOptWarnNoSupport(errStream, "--sax", "--relaxng");
+#endif
+    }
+
+    if (specialMode != NULL) {
+        if (lint->appOptions & XML_LINT_GENERATE)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--auto");
+        if (lint->appOptions & XML_LINT_DROP_DTD)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--dropdtd");
+        if (lint->appOptions & XML_LINT_NAVIGATING_SHELL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--shell");
+        if (lint->appOptions & XML_LINT_COPY_ENABLED)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--copy");
+#ifdef LIBXML_XPATH_ENABLED
+        if (lint->xpathquery != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--xpath");
+#endif
+#ifdef LIBXML_READER_ENABLED
+        if (lint->appOptions & XML_LINT_USE_WALKER)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--walker");
+#endif
+#ifdef LIBXML_VALID_ENABLED
+        if (lint->appOptions & XML_LINT_VALID_INSERTIONS)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--insert");
+        if (lint->dtdvalid != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--dtdvalid");
+        if (lint->dtdvalidfpi != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--dtdvalidfpi");
+        if (lint->appOptions & XML_LINT_POST_VALIDATION)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--postvalid");
+#endif
+#ifdef LIBXML_SCHEMATRON_ENABLED
+        if (lint->schematron != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--schematron");
+#endif
+#ifdef LIBXML_OUTPUT_ENABLED
+        if (lint->output != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--output");
+        if (lint->encoding != NULL)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--encode");
+        if (lint->format > 0)
+            xmllintOptWarnNoSupport(errStream, specialMode,
+                                    "--format or -pretty");
+#ifdef LIBXML_ZLIB_ENABLED
+        if (lint->appOptions & XML_LINT_ZLIB_COMPRESSION)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--compress");
+#endif
+#ifdef LIBXML_HTML_ENABLED
+        if (lint->appOptions & XML_LINT_XML_OUT)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--xmlout");
+#endif
+#ifdef LIBXML_C14N_ENABLED
+        if (lint->appOptions & XML_LINT_CANONICAL_V1_0)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--c14n");
+        if (lint->appOptions & XML_LINT_CANONICAL_V1_1)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--c14n11");
+        if (lint->appOptions & XML_LINT_CANONICAL_EXE)
+            xmllintOptWarnNoSupport(errStream, specialMode, "--exc-c14n");
+#endif
+#endif /* LIBXML_OUTPUT_ENABLED */
+    }
+
+#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED)
+    if (lint->pattern && !((lint->appOptions & XML_LINT_USE_STREAMING) || (lint->appOptions & XML_LINT_USE_WALKER)))
+        fprintf(errStream, "Warning: Option %s requires %s\n",
+                "--pattern", "--stream or --walker");
+#endif
+
+#ifdef LIBXML_HTML_ENABLED
+    if (lint->appOptions & XML_LINT_HTML_ENABLED) {
+        if (lint->parseOptions & XML_PARSE_DTDATTR)
+            xmllintOptWarnNoSupport(errStream, "--html", "--dtdattr");
+        if (lint->parseOptions & XML_PARSE_DTDLOAD)
+            xmllintOptWarnNoSupport(errStream, "--html", "--loaddtd");
+        if (lint->maxAmpl)
+            xmllintOptWarnNoSupport(errStream, "--html", "--max-ampl");
+        if (lint->parseOptions & XML_PARSE_NOCDATA)
+            xmllintOptWarnNoSupport(errStream, "--html", "--nocdata");
+        if (lint->parseOptions & XML_PARSE_NODICT)
+            xmllintOptWarnNoSupport(errStream, "--html", "--nodict");
+        if (lint->parseOptions & XML_PARSE_NOENT)
+            xmllintOptWarnNoSupport(errStream, "--html", "--noent");
+        if (lint->parseOptions & XML_PARSE_NONET)
+            xmllintOptWarnNoSupport(errStream, "--html", "--nonet");
+        if (lint->parseOptions & XML_PARSE_NSCLEAN)
+            xmllintOptWarnNoSupport(errStream, "--html", "--nsclean");
+        if (lint->parseOptions & XML_PARSE_OLD10)
+            xmllintOptWarnNoSupport(errStream, "--html", "--oldxml10");
+        if (lint->parseOptions & XML_PARSE_PEDANTIC)
+            xmllintOptWarnNoSupport(errStream, "--html", "--pedantic");
+        if (lint->parseOptions & XML_PARSE_DTDVALID)
+            xmllintOptWarnNoSupport(errStream, "--html", "--valid");
+        if (lint->parseOptions & XML_PARSE_SAX1)
+            xmllintOptWarnNoSupport(errStream, "--html", "--sax1");
+    } else {
+        if (lint->htmlOptions & HTML_PARSE_NODEFDTD)
+            fprintf(errStream, "Warning: Option %s requires %s\n",
+                    "--nodefdtd", "--html");
+#ifdef LIBXML_OUTPUT_ENABLED
+        if (lint->appOptions & XML_LINT_XML_OUT)
+            fprintf(errStream, "Warning: Option %s requires %s\n",
+                    "--xmlout", "--html");
+#endif
+    }
+#endif
+
     return(XMLLINT_RETURN_OK);
 }
 
@@ -3274,10 +2987,13 @@ xmllintMain(int argc, const char **argv,
 
     res = xmllintParseOptions(lint, argc, argv);
     if (res != XMLLINT_RETURN_OK) {
-        lint->progresult = res;
-        goto error;
+        return(res);
     }
 
+    /*
+     * Note that we must not make any memory allocations through xmlMalloc
+     * before calling xmlMemSetup.
+     */
     if (lint->maxmem != 0) {
         xmllintMaxmem = 0;
         xmllintMaxmemReached = 0;
@@ -3288,8 +3004,8 @@ xmllintMain(int argc, const char **argv,
     LIBXML_TEST_VERSION
 
 #ifdef LIBXML_CATALOG_ENABLED
-    if (lint->nocatalogs == 0) {
-	if (lint->catalogs) {
+    if ((lint->appOptions & XML_LINT_USE_NO_CATALOGS) != XML_LINT_USE_NO_CATALOGS) {
+	if (lint->appOptions & XML_LINT_USE_CATALOGS) {
 	    const char *catal;
 
 	    catal = getenv("SGML_CATALOG_FILES");
@@ -3306,43 +3022,22 @@ xmllintMain(int argc, const char **argv,
     {
         const char *indent = getenv("XMLLINT_INDENT");
         if (indent != NULL) {
-            xmlTreeIndentString = indent;
+            lint->indentString = indent;
         }
     }
 #endif
 
-    if (lint->htmlout) {
-        lint->htmlBuf = xmlMalloc(HTML_BUF_SIZE);
-        if (lint->htmlBuf == NULL) {
-            lint->progresult = XMLLINT_ERR_MEM;
-            goto error;
-        }
-
-        if (!lint->nowrap) {
-            fprintf(errStream,
-             "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n");
-            fprintf(errStream,
-                    "\t\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n");
-            fprintf(errStream,
-             "<html><head><title>%s output</title></head>\n",
-                    argv[0]);
-            fprintf(errStream,
-             "<body bgcolor=\"#ffffff\"><h1 align=\"center\">%s output</h1>\n",
-                    argv[0]);
-        }
-    }
-
 #ifdef LIBXML_SCHEMATRON_ENABLED
-    if ((lint->schematron != NULL) && (lint->sax == 0)
+    if ((lint->schematron != NULL) && ((lint->appOptions & XML_LINT_SAX_ENABLED) != XML_LINT_SAX_ENABLED)
 #ifdef LIBXML_READER_ENABLED
-        && (lint->stream == 0)
+        && ((lint->appOptions & XML_LINT_USE_STREAMING) != XML_LINT_USE_STREAMING)
 #endif /* LIBXML_READER_ENABLED */
 	) {
 	xmlSchematronParserCtxtPtr ctxt;
 
         /* forces loading the DTDs */
-	lint->options |= XML_PARSE_DTDLOAD;
-	if (lint->timing) {
+	lint->parseOptions |= XML_PARSE_DTDLOAD;
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    startTimer(lint);
 	}
 	ctxt = xmlSchematronNewParserCtxt(lint->schematron);
@@ -3351,30 +3046,30 @@ xmllintMain(int argc, const char **argv,
             goto error;
         }
 	lint->wxschematron = xmlSchematronParse(ctxt);
+	xmlSchematronFreeParserCtxt(ctxt);
 	if (lint->wxschematron == NULL) {
 	    fprintf(errStream, "Schematron schema %s failed to compile\n",
                     lint->schematron);
             lint->progresult = XMLLINT_ERR_SCHEMACOMP;
             goto error;
 	}
-	xmlSchematronFreeParserCtxt(ctxt);
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    endTimer(lint, "Compiling the schemas");
 	}
     }
 #endif
 
 #ifdef LIBXML_RELAXNG_ENABLED
-    if ((lint->relaxng != NULL) && (lint->sax == 0)
+    if ((lint->relaxng != NULL) && ((lint->appOptions & XML_LINT_SAX_ENABLED) != XML_LINT_SAX_ENABLED)
 #ifdef LIBXML_READER_ENABLED
-        && (lint->stream == 0)
+        && ((lint->appOptions & XML_LINT_USE_STREAMING) != XML_LINT_USE_STREAMING)
 #endif /* LIBXML_READER_ENABLED */
 	) {
 	xmlRelaxNGParserCtxtPtr ctxt;
 
         /* forces loading the DTDs */
-	lint->options |= XML_PARSE_DTDLOAD;
-	if (lint->timing) {
+	lint->parseOptions |= XML_PARSE_DTDLOAD;
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    startTimer(lint);
 	}
 	ctxt = xmlRelaxNGNewParserCtxt(lint->relaxng);
@@ -3384,14 +3079,14 @@ xmllintMain(int argc, const char **argv,
         }
         xmlRelaxNGSetResourceLoader(ctxt, xmllintResourceLoader, lint);
 	lint->relaxngschemas = xmlRelaxNGParse(ctxt);
+	xmlRelaxNGFreeParserCtxt(ctxt);
 	if (lint->relaxngschemas == NULL) {
 	    fprintf(errStream, "Relax-NG schema %s failed to compile\n",
                     lint->relaxng);
             lint->progresult = XMLLINT_ERR_SCHEMACOMP;
             goto error;
 	}
-	xmlRelaxNGFreeParserCtxt(ctxt);
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    endTimer(lint, "Compiling the schemas");
 	}
     }
@@ -3400,12 +3095,12 @@ xmllintMain(int argc, const char **argv,
 #ifdef LIBXML_SCHEMAS_ENABLED
     if ((lint->schema != NULL)
 #ifdef LIBXML_READER_ENABLED
-        && (lint->stream == 0)
+        && ((lint->appOptions& XML_LINT_USE_STREAMING) != XML_LINT_USE_STREAMING)
 #endif
 	) {
 	xmlSchemaParserCtxtPtr ctxt;
 
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    startTimer(lint);
 	}
 	ctxt = xmlSchemaNewParserCtxt(lint->schema);
@@ -3415,21 +3110,21 @@ xmllintMain(int argc, const char **argv,
         }
         xmlSchemaSetResourceLoader(ctxt, xmllintResourceLoader, lint);
 	lint->wxschemas = xmlSchemaParse(ctxt);
+	xmlSchemaFreeParserCtxt(ctxt);
 	if (lint->wxschemas == NULL) {
 	    fprintf(errStream, "WXS schema %s failed to compile\n",
                     lint->schema);
             lint->progresult = XMLLINT_ERR_SCHEMACOMP;
             goto error;
 	}
-	xmlSchemaFreeParserCtxt(ctxt);
-	if (lint->timing) {
+	if (lint->appOptions & XML_LINT_TIMINGS) {
 	    endTimer(lint, "Compiling the schemas");
 	}
     }
 #endif /* LIBXML_SCHEMAS_ENABLED */
 
 #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED)
-    if ((lint->pattern != NULL) && (lint->walker == 0)) {
+    if ((lint->pattern != NULL) && ((lint->appOptions & XML_LINT_USE_WALKER) != XML_LINT_USE_WALKER)) {
         res = xmlPatternCompileSafe(BAD_CAST lint->pattern, NULL, 0, NULL,
                                     &lint->patternc);
 	if (lint->patternc == NULL) {
@@ -3460,7 +3155,7 @@ xmllintMain(int argc, const char **argv,
         }
 
 #if HAVE_DECL_MMAP
-        if (lint->memory) {
+        if (lint->appOptions & XML_LINT_MEMORY) {
             struct stat info;
             if (stat(filename, &info) < 0) {
                 lint->progresult = XMLLINT_ERR_RDFILE;
@@ -3483,11 +3178,11 @@ xmllintMain(int argc, const char **argv,
         }
 #endif /* HAVE_DECL_MMAP */
 
-	if ((lint->timing) && (lint->repeat > 1))
+	if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat > 1))
 	    startTimer(lint);
 
 #ifdef LIBXML_READER_ENABLED
-        if (lint->stream != 0) {
+        if (lint->appOptions & XML_LINT_USE_STREAMING) {
             for (j = 0; j < lint->repeat; j++)
                 streamFile(lint, filename);
         } else
@@ -3496,9 +3191,9 @@ xmllintMain(int argc, const char **argv,
             xmlParserCtxtPtr ctxt;
 
 #ifdef LIBXML_HTML_ENABLED
-            if (lint->html) {
+            if (lint->appOptions & XML_LINT_HTML_ENABLED) {
 #ifdef LIBXML_PUSH_ENABLED
-                if (lint->push) {
+                if (lint->appOptions & XML_LINT_PUSH_ENABLED) {
                     ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0,
                                                     filename,
                                                     XML_CHAR_ENCODING_NONE);
@@ -3507,12 +3202,12 @@ xmllintMain(int argc, const char **argv,
                 {
                     ctxt = htmlNewParserCtxt();
                 }
-                htmlCtxtUseOptions(ctxt, lint->options);
+                htmlCtxtUseOptions(ctxt, lint->htmlOptions);
             } else
 #endif /* LIBXML_HTML_ENABLED */
             {
 #ifdef LIBXML_PUSH_ENABLED
-                if (lint->push) {
+                if (lint->appOptions & XML_LINT_PUSH_ENABLED) {
                     ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0,
                                                    filename);
                 } else
@@ -3520,20 +3215,20 @@ xmllintMain(int argc, const char **argv,
                 {
                     ctxt = xmlNewParserCtxt();
                 }
-                xmlCtxtUseOptions(ctxt, lint->options);
+                xmlCtxtUseOptions(ctxt, lint->parseOptions);
             }
             if (ctxt == NULL) {
                 lint->progresult = XMLLINT_ERR_MEM;
                 goto error;
             }
 
-            if (lint->sax) {
+            if (lint->appOptions & XML_LINT_SAX_ENABLED) {
                 const xmlSAXHandler *handler;
 
                 if (lint->noout) {
                     handler = &emptySAXHandler;
 #ifdef LIBXML_SAX1_ENABLED
-                } else if (lint->options & XML_PARSE_SAX1) {
+                } else if (lint->parseOptions & XML_PARSE_SAX1) {
                     handler = &debugSAXHandler;
 #endif
                 } else {
@@ -3548,19 +3243,21 @@ xmllintMain(int argc, const char **argv,
             if (lint->maxAmpl > 0)
                 xmlCtxtSetMaxAmplification(ctxt, lint->maxAmpl);
 
-            if (lint->htmlout) {
-                ctxt->_private = lint;
-                xmlCtxtSetErrorHandler(ctxt, xmlHTMLError, ctxt);
-            }
-
             lint->ctxt = ctxt;
 
             for (j = 0; j < lint->repeat; j++) {
+                if (j > 0) {
 #ifdef LIBXML_PUSH_ENABLED
-                if ((lint->push) && (j > 0))
-                    xmlCtxtResetPush(ctxt, NULL, 0, NULL, NULL);
-#endif
-                if (lint->sax) {
+                    if (lint->appOptions & XML_LINT_PUSH_ENABLED) {
+                        xmlCtxtResetPush(ctxt, NULL, 0, NULL, NULL);
+                    } else
+#endif
+                    {
+                        xmlCtxtReset(ctxt);
+                    }
+                }
+
+                if (lint->appOptions & XML_LINT_SAX_ENABLED) {
                     testSAX(lint, filename);
                 } else {
                     parseAndPrintFile(lint, filename);
@@ -3570,37 +3267,30 @@ xmllintMain(int argc, const char **argv,
             xmlFreeParserCtxt(ctxt);
         }
 
-        if ((lint->timing) && (lint->repeat > 1)) {
+        if ((lint->appOptions & XML_LINT_TIMINGS) && (lint->repeat > 1)) {
             endTimer(lint, "%d iterations", lint->repeat);
         }
 
         files += 1;
 
 #if HAVE_DECL_MMAP
-        if (lint->memory) {
+        if (lint->appOptions & XML_LINT_MEMORY) {
             munmap(lint->memoryData, lint->memorySize);
             close(memoryFd);
         }
 #endif
     }
 
-    if (lint->generate)
+    if (lint->appOptions & XML_LINT_GENERATE)
 	parseAndPrintFile(lint, NULL);
 
-    if ((lint->htmlout) && (!lint->nowrap)) {
-	fprintf(errStream, "</body></html>\n");
-    }
-
-    if ((files == 0) && (!lint->generate) && (lint->version == 0)) {
+    if ((files == 0) && ((lint->appOptions & XML_LINT_GENERATE) != XML_LINT_GENERATE) && (lint->version == 0)) {
 	usage(errStream, argv[0]);
         lint->progresult = XMLLINT_ERR_UNCLASS;
     }
 
 error:
 
-    if (lint->htmlout)
-        xmlFree(lint->htmlBuf);
-
 #ifdef LIBXML_SCHEMATRON_ENABLED
     if (lint->wxschematron != NULL)
 	xmlSchematronFree(lint->wxschematron);
diff -pruN 2.14.6+dfsg-0.1/xmlmemory.c 2.15.0+dfsg-0.3/xmlmemory.c
--- 2.14.6+dfsg-0.1/xmlmemory.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlmemory.c	2025-09-15 11:55:59.000000000 +0000
@@ -1,7 +1,7 @@
 /*
  * xmlmemory.c:  libxml memory allocator wrapper.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -56,14 +56,12 @@ typedef struct memnod {
 #define HDR_2_CLIENT(a)    ((void *) (((char *) (a)) + RESERVE_SIZE))
 
 /**
- * xmlMallocLoc:
- * @size:  an int specifying the size in byte to allocate.
- * @file:  the file name or NULL
- * @line:  the line number
+ * @deprecated don't use
  *
- * DEPRECATED: don't use
- *
- * Returns a pointer to the allocated area or NULL in case of lack of memory.
+ * @param size  an int specifying the size in byte to allocate.
+ * @param file  the file name or NULL
+ * @param line  the line number
+ * @returns a pointer to the allocated area or NULL in case of lack of memory.
  */
 void *
 xmlMallocLoc(size_t size, const char *file ATTRIBUTE_UNUSED,
@@ -73,14 +71,12 @@ xmlMallocLoc(size_t size, const char *fi
 }
 
 /**
- * xmlMallocAtomicLoc:
- * @size:  an unsigned int specifying the size in byte to allocate.
- * @file:  the file name or NULL
- * @line:  the line number
- *
- * DEPRECATED: don't use
+ * @deprecated don't use
  *
- * Returns a pointer to the allocated area or NULL in case of lack of memory.
+ * @param size  an unsigned int specifying the size in byte to allocate.
+ * @param file  the file name or NULL
+ * @param line  the line number
+ * @returns a pointer to the allocated area or NULL in case of lack of memory.
  */
 void *
 xmlMallocAtomicLoc(size_t size, const char *file ATTRIBUTE_UNUSED,
@@ -90,12 +86,10 @@ xmlMallocAtomicLoc(size_t size, const ch
 }
 
 /**
- * xmlMemMalloc:
- * @size:  an int specifying the size in byte to allocate.
- *
  * a malloc() equivalent, with logging of the allocation info.
  *
- * Returns a pointer to the allocated area or NULL in case of lack of memory.
+ * @param size  an int specifying the size in byte to allocate.
+ * @returns a pointer to the allocated area or NULL in case of lack of memory.
  */
 void *
 xmlMemMalloc(size_t size)
@@ -122,15 +116,13 @@ xmlMemMalloc(size_t size)
 }
 
 /**
- * xmlReallocLoc:
- * @ptr:  the initial memory block pointer
- * @size:  an int specifying the size in byte to allocate.
- * @file:  the file name or NULL
- * @line:  the line number
- *
- * DEPRECATED: don't use
+ * @deprecated don't use
  *
- * Returns a pointer to the allocated area or NULL in case of lack of memory.
+ * @param ptr  the initial memory block pointer
+ * @param size  an int specifying the size in byte to allocate.
+ * @param file  the file name or NULL
+ * @param line  the line number
+ * @returns a pointer to the allocated area or NULL in case of lack of memory.
  */
 void *
 xmlReallocLoc(void *ptr, size_t size, const char *file ATTRIBUTE_UNUSED,
@@ -140,13 +132,11 @@ xmlReallocLoc(void *ptr, size_t size, co
 }
 
 /**
- * xmlMemRealloc:
- * @ptr:  the initial memory block pointer
- * @size:  an int specifying the size in byte to allocate.
- *
  * a realloc() equivalent, with logging of the allocation info.
  *
- * Returns a pointer to the allocated area or NULL in case of lack of memory.
+ * @param ptr  the initial memory block pointer
+ * @param size  an int specifying the size in byte to allocate.
+ * @returns a pointer to the allocated area or NULL in case of lack of memory.
  */
 void *
 xmlMemRealloc(void *ptr, size_t size) {
@@ -187,10 +177,9 @@ xmlMemRealloc(void *ptr, size_t size) {
 }
 
 /**
- * xmlMemFree:
- * @ptr:  the memory block pointer
- *
  * a free() equivalent, with error checking.
+ *
+ * @param ptr  the memory block pointer
  */
 void
 xmlMemFree(void *ptr)
@@ -222,14 +211,12 @@ xmlMemFree(void *ptr)
 }
 
 /**
- * xmlMemStrdupLoc:
- * @str:  the initial string pointer
- * @file:  the file name or NULL
- * @line:  the line number
+ * @deprecated don't use
  *
- * DEPRECATED: don't use
- *
- * Returns a pointer to the new string or NULL if allocation error occurred.
+ * @param str  the initial string pointer
+ * @param file  the file name or NULL
+ * @param line  the line number
+ * @returns a pointer to the new string or NULL if allocation error occurred.
  */
 char *
 xmlMemStrdupLoc(const char *str, const char *file ATTRIBUTE_UNUSED,
@@ -239,12 +226,10 @@ xmlMemStrdupLoc(const char *str, const c
 }
 
 /**
- * xmlMemoryStrdup:
- * @str:  the initial string pointer
- *
  * a strdup() equivalent, with logging of the allocation info.
  *
- * Returns a pointer to the new string or NULL if allocation error occurred.
+ * @param str  the initial string pointer
+ * @returns a pointer to the new string or NULL if allocation error occurred.
  */
 char *
 xmlMemoryStrdup(const char *str) {
@@ -276,10 +261,8 @@ xmlMemoryStrdup(const char *str) {
 }
 
 /**
- * xmlMemSize:
- * @ptr:  pointer to the memory allocation
- *
- * Returns the size of a memory allocation.
+ * @param ptr  pointer to the memory allocation
+ * @returns the size of a memory allocation.
  */
 
 size_t
@@ -297,11 +280,9 @@ xmlMemSize(void *ptr) {
 }
 
 /**
- * xmlMemUsed:
- *
  * Provides the amount of memory currently allocated
  *
- * Returns an int representing the amount of memory allocated.
+ * @returns an int representing the amount of memory allocated.
  */
 
 int
@@ -310,11 +291,9 @@ xmlMemUsed(void) {
 }
 
 /**
- * xmlMemBlocks:
- *
  * Provides the number of memory areas currently allocated
  *
- * Returns an int representing the number of blocks
+ * @returns an int representing the number of blocks
  */
 
 int
@@ -328,11 +307,9 @@ xmlMemBlocks(void) {
 }
 
 /**
- * xmlMemDisplayLast:
- * @fp:  a FILE descriptor
- * @nbBytes: the amount of memory to dump
- *
- * DEPRECATED: This feature was removed.
+ * @deprecated This feature was removed.
+ * @param fp  a FILE descriptor
+ * @param nbBytes  the amount of memory to dump
  */
 void
 xmlMemDisplayLast(FILE *fp ATTRIBUTE_UNUSED, long nbBytes ATTRIBUTE_UNUSED)
@@ -340,10 +317,8 @@ xmlMemDisplayLast(FILE *fp ATTRIBUTE_UNU
 }
 
 /**
- * xmlMemDisplay:
- * @fp:  a FILE descriptor
- *
- * DEPRECATED: This feature was removed.
+ * @deprecated This feature was removed.
+ * @param fp  a FILE descriptor
  */
 void
 xmlMemDisplay(FILE *fp ATTRIBUTE_UNUSED)
@@ -351,11 +326,9 @@ xmlMemDisplay(FILE *fp ATTRIBUTE_UNUSED)
 }
 
 /**
- * xmlMemShow:
- * @fp:  a FILE descriptor
- * @nr:  number of entries to dump
- *
- * DEPRECATED: This feature was removed.
+ * @deprecated This feature was removed.
+ * @param fp  a FILE descriptor
+ * @param nr  number of entries to dump
  */
 void
 xmlMemShow(FILE *fp ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED)
@@ -363,9 +336,7 @@ xmlMemShow(FILE *fp ATTRIBUTE_UNUSED, in
 }
 
 /**
- * xmlMemoryDump:
- *
- * DEPRECATED: This feature was removed.
+ * @deprecated This feature was removed.
  */
 void
 xmlMemoryDump(void)
@@ -380,11 +351,9 @@ xmlMemoryDump(void)
  ****************************************************************/
 
 /**
- * xmlInitMemory:
+ * @deprecated Alias for #xmlInitParser.
  *
- * DEPRECATED: Alias for xmlInitParser.
- *
- * Returns 0.
+ * @returns 0.
  */
 int
 xmlInitMemory(void) {
@@ -393,8 +362,6 @@ xmlInitMemory(void) {
 }
 
 /**
- * xmlInitMemoryInternal:
- *
  * Initialize the memory layer.
  */
 void
@@ -403,10 +370,8 @@ xmlInitMemoryInternal(void) {
 }
 
 /**
- * xmlCleanupMemory:
- *
- * DEPRECATED: This function is a no-op. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function is a no-op. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have call cleanup functions at all.
  */
@@ -415,8 +380,6 @@ xmlCleanupMemory(void) {
 }
 
 /**
- * xmlCleanupMemoryInternal:
- *
  * Free up all the memory allocated by the library for its own
  * use. This should not be called by user level code.
  */
@@ -435,19 +398,17 @@ xmlCleanupMemoryInternal(void) {
 }
 
 /**
- * xmlMemSetup:
- * @freeFunc: the free() function to use
- * @mallocFunc: the malloc() function to use
- * @reallocFunc: the realloc() function to use
- * @strdupFunc: the strdup() function to use
- *
  * 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 ?
  *
- * Returns 0 on success
+ * @param freeFunc  the free() function to use
+ * @param mallocFunc  the malloc() function to use
+ * @param reallocFunc  the realloc() function to use
+ * @param strdupFunc  the strdup() function to use
+ * @returns 0 on success
  */
 int
 xmlMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc,
@@ -469,15 +430,13 @@ xmlMemSetup(xmlFreeFunc freeFunc, xmlMal
 }
 
 /**
- * xmlMemGet:
- * @freeFunc: place to save the free() function in use
- * @mallocFunc: place to save the malloc() function in use
- * @reallocFunc: place to save the realloc() function in use
- * @strdupFunc: place to save the strdup() function in use
- *
  * Provides the memory access functions set currently in use
  *
- * Returns 0 on success
+ * @param freeFunc  place to save the free() function in use
+ * @param mallocFunc  place to save the malloc() function in use
+ * @param reallocFunc  place to save the realloc() function in use
+ * @param strdupFunc  place to save the strdup() function in use
+ * @returns 0 on success
  */
 int
 xmlMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc,
@@ -490,24 +449,22 @@ xmlMemGet(xmlFreeFunc *freeFunc, xmlMall
 }
 
 /**
- * xmlGcMemSetup:
- * @freeFunc: the free() function to use
- * @mallocFunc: the malloc() function to use
- * @mallocAtomicFunc: the malloc() function to use for atomic allocations
- * @reallocFunc: the realloc() function to use
- * @strdupFunc: the strdup() function to use
- *
- * DEPRECATED: Use xmlMemSetup.
- *
  * 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
  *
+ * @deprecated Use #xmlMemSetup.
+ *
  * Should this be blocked if there was already some allocations
  * done ?
  *
- * Returns 0 on success
+ * @param freeFunc  the free() function to use
+ * @param mallocFunc  the malloc() function to use
+ * @param mallocAtomicFunc  the malloc() function to use for atomic allocations
+ * @param reallocFunc  the realloc() function to use
+ * @param strdupFunc  the strdup() function to use
+ * @returns 0 on success
  */
 int
 xmlGcMemSetup(xmlFreeFunc freeFunc, xmlMallocFunc mallocFunc,
@@ -532,20 +489,18 @@ xmlGcMemSetup(xmlFreeFunc freeFunc, xmlM
 }
 
 /**
- * xmlGcMemGet:
- * @freeFunc: place to save the free() function in use
- * @mallocFunc: place to save the malloc() function in use
- * @mallocAtomicFunc: place to save the atomic malloc() function in use
- * @reallocFunc: place to save the realloc() function in use
- * @strdupFunc: place to save the strdup() function in use
- *
- * DEPRECATED: xmlMemGet.
- *
  * 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
  *
- * Returns 0 on success
+ * @deprecated Use #xmlMemGet.
+ *
+ * @param freeFunc  place to save the free() function in use
+ * @param mallocFunc  place to save the malloc() function in use
+ * @param mallocAtomicFunc  place to save the atomic malloc() function in use
+ * @param reallocFunc  place to save the realloc() function in use
+ * @param strdupFunc  place to save the strdup() function in use
+ * @returns 0 on success
  */
 int
 xmlGcMemGet(xmlFreeFunc *freeFunc, xmlMallocFunc *mallocFunc,
diff -pruN 2.14.6+dfsg-0.1/xmlmodule.c 2.15.0+dfsg-0.3/xmlmodule.c
--- 2.14.6+dfsg-0.1/xmlmodule.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlmodule.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * joelwreed@comcast.net
+ * Author: Joel W. Reed
  *
  * http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html
  */
@@ -42,20 +42,21 @@ static int xmlModulePlatformSymbol(void
  ************************************************************************/
 
 /**
- * xmlModuleOpen:
- * @name: the module name
- * @options: a set of xmlModuleOption
- *
  * Opens a module/shared library given its name or path
+ *
+ * @deprecated Will be removed.
+ *
  * NOTE: that due to portability issues, behaviour can only be
- * guaranteed with @name using ASCII. We cannot guarantee that
+ * guaranteed with `name` using ASCII. We cannot guarantee that
  * an UTF-8 string would work, which is why name is a const char *
  * and not a const xmlChar * .
  * TODO: options are not yet implemented.
  *
- * Returns a handle for the module or NULL in case of error
+ * @param name  the module name
+ * @param options  a set of xmlModuleOption
+ * @returns a handle for the module or NULL in case of error
  */
-xmlModulePtr
+xmlModule *
 xmlModuleOpen(const char *name, int options ATTRIBUTE_UNUSED)
 {
     xmlModulePtr module;
@@ -78,21 +79,22 @@ xmlModuleOpen(const char *name, int opti
 }
 
 /**
- * xmlModuleSymbol:
- * @module: the module
- * @name: the name of the symbol
- * @symbol: the resulting symbol address
- *
  * Lookup for a symbol address in the given module
+ *
+ * @deprecated Will be removed.
+ *
  * NOTE: that due to portability issues, behaviour can only be
- * guaranteed with @name using ASCII. We cannot guarantee that
+ * guaranteed with `name` using ASCII. We cannot guarantee that
  * an UTF-8 string would work, which is why name is a const char *
  * and not a const xmlChar * .
  *
- * Returns 0 if the symbol was found, or -1 in case of error
+ * @param module  the module
+ * @param name  the name of the symbol
+ * @param symbol  the resulting symbol address
+ * @returns 0 if the symbol was found, or -1 in case of error
  */
 int
-xmlModuleSymbol(xmlModulePtr module, const char *name, void **symbol)
+xmlModuleSymbol(xmlModule *module, const char *name, void **symbol)
 {
     int rc = -1;
 
@@ -108,17 +110,17 @@ xmlModuleSymbol(xmlModulePtr module, con
 }
 
 /**
- * xmlModuleClose:
- * @module: the module handle
- *
  * The close operations unload the associated module and free the
  * data associated to the module.
  *
- * Returns 0 in case of success, -1 in case of argument error and -2
+ * @deprecated Will be removed.
+ *
+ * @param module  the module handle
+ * @returns 0 in case of success, -1 in case of argument error and -2
  *         if the module could not be closed/unloaded.
  */
 int
-xmlModuleClose(xmlModulePtr module)
+xmlModuleClose(xmlModule *module)
 {
     int rc;
 
@@ -135,17 +137,17 @@ xmlModuleClose(xmlModulePtr module)
 }
 
 /**
- * xmlModuleFree:
- * @module: the module handle
- *
  * The free operations free the data associated to the module
  * but does not unload the associated shared library which may still
  * be in use.
  *
- * Returns 0 in case of success, -1 in case of argument error
+ * @deprecated Will be removed.
+ *
+ * @param module  the module handle
+ * @returns 0 in case of success, -1 in case of argument error
  */
 int
-xmlModuleFree(xmlModulePtr module)
+xmlModuleFree(xmlModule *module)
 {
     if (NULL == module)
         return -1;
@@ -164,10 +166,8 @@ xmlModuleFree(xmlModulePtr module)
 #endif
 
 /**
- * xmlModulePlatformOpen:
- * @name: path to the module
- *
- * returns a handle on success, and zero on error.
+ * @param name  path to the module
+ * @returns a handle on success, and zero on error.
  */
 
 static void *
@@ -177,10 +177,9 @@ xmlModulePlatformOpen(const char *name)
 }
 
 /*
- * xmlModulePlatformClose:
- * @handle: handle to the module
+ * @param handle  handle to the module
  *
- * returns 0 on success, and non-zero on error.
+ * @returns 0 on success, and non-zero on error.
  */
 
 static int
@@ -190,9 +189,9 @@ xmlModulePlatformClose(void *handle)
 }
 
 /*
- * xmlModulePlatformSymbol:
  * http://www.opengroup.org/onlinepubs/009695399/functions/dlsym.html
- * returns 0 on success and the loaded symbol in result, and -1 on error.
+ *
+ * @returns 0 on success and the loaded symbol in result, and -1 on error.
  */
 
 static int
@@ -210,8 +209,7 @@ xmlModulePlatformSymbol(void *handle, co
 #ifdef HAVE_SHLLOAD             /* HAVE_SHLLOAD */
 #include <dl.h>
 /*
- * xmlModulePlatformOpen:
- * returns a handle on success, and zero on error.
+ * @returns a handle on success, and zero on error.
  */
 
 static void *
@@ -221,8 +219,7 @@ xmlModulePlatformOpen(const char *name)
 }
 
 /*
- * xmlModulePlatformClose:
- * returns 0 on success, and non-zero on error.
+ * @returns 0 on success, and non-zero on error.
  */
 
 static int
@@ -232,9 +229,9 @@ xmlModulePlatformClose(void *handle)
 }
 
 /*
- * xmlModulePlatformSymbol:
  * http://docs.hp.com/en/B2355-90683/shl_load.3X.html
- * returns 0 on success and the loaded symbol in result, and -1 on error.
+ *
+ * @returns 0 on success and the loaded symbol in result, and -1 on error.
  */
 
 static int
@@ -256,8 +253,7 @@ xmlModulePlatformSymbol(void *handle, co
 #include <windows.h>
 
 /*
- * xmlModulePlatformOpen:
- * returns a handle on success, and zero on error.
+ * @returns a handle on success, and zero on error.
  */
 
 static void *
@@ -267,8 +263,7 @@ xmlModulePlatformOpen(const char *name)
 }
 
 /*
- * xmlModulePlatformClose:
- * returns 0 on success, and non-zero on error.
+ * @returns 0 on success, and non-zero on error.
  */
 
 static int
@@ -281,9 +276,9 @@ xmlModulePlatformClose(void *handle)
 }
 
 /*
- * xmlModulePlatformSymbol:
  * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getprocaddress.asp
- * returns 0 on success and the loaded symbol in result, and -1 on error.
+ *
+ * @returns 0 on success and the loaded symbol in result, and -1 on error.
  */
 
 static int
diff -pruN 2.14.6+dfsg-0.1/xmlreader.c 2.15.0+dfsg-0.3/xmlreader.c
--- 2.14.6+dfsg-0.1/xmlreader.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlreader.c	2025-09-15 11:55:59.000000000 +0000
@@ -7,7 +7,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 /*
@@ -149,7 +149,6 @@ struct _xmlTextReader {
 #ifdef LIBXML_XINCLUDE_ENABLED
     /* Handling of XInclude processing */
     int                xinclude;	/* is xinclude asked for */
-    const xmlChar *    xinclude_name;	/* the xinclude name from dict */
     xmlXIncludeCtxtPtr xincctxt;	/* the xinclude context */
     int                in_xinclude;	/* counts for xinclude */
 #endif
@@ -175,11 +174,10 @@ static int xmlTextReaderReadTree(xmlText
 static int xmlTextReaderNextTree(xmlTextReaderPtr reader);
 
 /**
- * DICT_FREE:
- * @str:  a string
- *
  * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
+ *
+ * @param str  a string
  */
 #define DICT_FREE(str)						\
 	if ((str) && ((!dict) ||				\
@@ -270,11 +268,10 @@ constQString(xmlTextReaderPtr reader, co
  ************************************************************************/
 
 /**
- * xmlTextReaderFreeProp:
- * @reader:  the xmlTextReaderPtr used
- * @cur:  the node
- *
  * Free a node.
+ *
+ * @param reader  the xmlTextReader used
+ * @param cur  the node
  */
 static void
 xmlTextReaderFreeProp(xmlTextReaderPtr reader, xmlAttrPtr cur) {
@@ -316,11 +313,10 @@ xmlTextReaderFreeProp(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderFreePropList:
- * @reader:  the xmlTextReaderPtr used
- * @cur:  the first property in the list
- *
  * Free a property and all its siblings, all the children are freed too.
+ *
+ * @param reader  the xmlTextReader used
+ * @param cur  the first property in the list
  */
 static void
 xmlTextReaderFreePropList(xmlTextReaderPtr reader, xmlAttrPtr cur) {
@@ -334,12 +330,11 @@ xmlTextReaderFreePropList(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderFreeNodeList:
- * @reader:  the xmlTextReaderPtr used
- * @cur:  the first node in the list
- *
  * Free a node and all its siblings, this is a recursive behaviour, all
  * the children are freed too.
+ *
+ * @param reader  the xmlTextReader used
+ * @param cur  the first node in the list
  */
 static void
 xmlTextReaderFreeNodeList(xmlTextReaderPtr reader, xmlNodePtr cur) {
@@ -429,12 +424,11 @@ xmlTextReaderFreeNodeList(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderFreeNode:
- * @reader:  the xmlTextReaderPtr used
- * @cur:  the node
- *
  * Free a node, this is a recursive behaviour, all the children are freed too.
- * This doesn't unlink the child from the list, use xmlUnlinkNode() first.
+ * This doesn't unlink the child from the list, use #xmlUnlinkNode first.
+ *
+ * @param reader  the xmlTextReader used
+ * @param cur  the node
  */
 static void
 xmlTextReaderFreeNode(xmlTextReaderPtr reader, xmlNodePtr cur) {
@@ -505,11 +499,10 @@ xmlTextReaderFreeNode(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderFreeDoc:
- * @reader:  the xmlTextReaderPtr used
- * @cur:  pointer to the document
- *
  * Free up all the structures used by a document, tree included.
+ *
+ * @param reader  the xmlTextReader used
+ * @param cur  pointer to the document
  */
 static void
 xmlTextReaderFreeDoc(xmlTextReaderPtr reader, xmlDocPtr cur) {
@@ -544,11 +537,11 @@ xmlTextReaderFreeDoc(xmlTextReaderPtr re
 
     if (cur->children != NULL) xmlTextReaderFreeNodeList(reader, cur->children);
 
-    if (cur->version != NULL) xmlFree((char *) cur->version);
+    if (cur->version != NULL) xmlFree(cur->version);
     if (cur->name != NULL) xmlFree((char *) cur->name);
-    if (cur->encoding != NULL) xmlFree((char *) cur->encoding);
+    if (cur->encoding != NULL) xmlFree(cur->encoding);
     if (cur->oldNs != NULL) xmlFreeNsList(cur->oldNs);
-    if (cur->URL != NULL) xmlFree((char *) cur->URL);
+    if (cur->URL != NULL) xmlFree(cur->URL);
     if (cur->dict != NULL) xmlDictFree(cur->dict);
 
     xmlFree(cur);
@@ -589,13 +582,11 @@ xmlTextReaderStructuredRelay(void *userD
 }
 
 /**
- * xmlTextReaderEntPush:
- * @reader:  the xmlTextReaderPtr used
- * @value:  the entity reference node
- *
  * Pushes a new entity reference node on top of the entities stack
  *
- * Returns -1 in case of error, the index in the stack otherwise
+ * @param reader  the xmlTextReader used
+ * @param value  the entity reference node
+ * @returns -1 in case of error, the index in the stack otherwise
  */
 static int
 xmlTextReaderEntPush(xmlTextReaderPtr reader, xmlNodePtr value)
@@ -624,12 +615,10 @@ xmlTextReaderEntPush(xmlTextReaderPtr re
 }
 
 /**
- * xmlTextReaderEntPop:
- * @reader:  the xmlTextReaderPtr used
- *
  * Pops the top element entity from the entities stack
  *
- * Returns the entity just removed
+ * @param reader  the xmlTextReader used
+ * @returns the entity just removed
  */
 static xmlNodePtr
 xmlTextReaderEntPop(xmlTextReaderPtr reader)
@@ -649,12 +638,11 @@ xmlTextReaderEntPop(xmlTextReaderPtr rea
 }
 
 /**
- * xmlTextReaderStartElement:
- * @ctx: the user data (XML parser context)
- * @fullname:  The element name, including namespace prefix
- * @atts:  An array of name/value attributes pairs, NULL terminated
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param fullname  The element name, including namespace prefix
+ * @param atts  An array of name/value attributes pairs, NULL terminated
  */
 static void
 xmlTextReaderStartElement(void *ctx, const xmlChar *fullname,
@@ -674,11 +662,10 @@ xmlTextReaderStartElement(void *ctx, con
 }
 
 /**
- * xmlTextReaderEndElement:
- * @ctx: the user data (XML parser context)
- * @fullname:  The element name, including namespace prefix
- *
  * called when an ending tag has been processed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param fullname  The element name, including namespace prefix
  */
 static void
 xmlTextReaderEndElement(void *ctx, const xmlChar *fullname) {
@@ -691,19 +678,18 @@ xmlTextReaderEndElement(void *ctx, const
 }
 
 /**
- * xmlTextReaderStartElementNs:
- * @ctx: the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
- * @nb_namespaces:  number of namespace definitions on that node
- * @namespaces:  pointer to the array of prefix/URI pairs namespace definitions
- * @nb_attributes:  the number of attributes on that node
- * nb_defaulted:  the number of defaulted attributes.
- * @attributes:  pointer to the array of (localname/prefix/URI/value/end)
- *               attribute values.
- *
  * called when an opening tag has been processed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
+ * @param nb_namespaces  number of namespace definitions on that node
+ * @param namespaces  pointer to the array of prefix/URI pairs namespace definitions
+ * @param nb_attributes  the number of attributes on that node
+ * @param nb_defaulted  the number of defaulted attributes.
+ * @param attributes  pointer to the array of (localname/prefix/URI/value/end)
+ *               attribute values.
  */
 static void
 xmlTextReaderStartElementNs(void *ctx,
@@ -733,13 +719,12 @@ xmlTextReaderStartElementNs(void *ctx,
 }
 
 /**
- * xmlTextReaderEndElementNs:
- * @ctx: the user data (XML parser context)
- * @localname:  the local name of the element
- * @prefix:  the element namespace prefix if available
- * @URI:  the element namespace name if available
- *
  * called when an ending tag has been processed.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param localname  the local name of the element
+ * @param prefix  the element namespace prefix if available
+ * @param URI  the element namespace name if available
  */
 static void
 xmlTextReaderEndElementNs(void *ctx,
@@ -757,12 +742,11 @@ xmlTextReaderEndElementNs(void *ctx,
 
 
 /**
- * xmlTextReaderCharacters:
- * @ctx: the user data (XML parser context)
- * @ch:  a xmlChar string
- * @len: the number of xmlChar
- *
  * receiving some chars from the parser.
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param ch  a xmlChar string
+ * @param len  the number of xmlChar
  */
 static void
 xmlTextReaderCharacters(void *ctx, const xmlChar *ch, int len)
@@ -776,12 +760,11 @@ xmlTextReaderCharacters(void *ctx, const
 }
 
 /**
- * xmlTextReaderCDataBlock:
- * @ctx: the user data (XML parser context)
- * @value:  The pcdata content
- * @len:  the block length
- *
  * called when a pcdata block has been parsed
+ *
+ * @param ctx  the user data (XML parser context)
+ * @param ch  The pcdata content
+ * @param len  the block length
  */
 static void
 xmlTextReaderCDataBlock(void *ctx, const xmlChar *ch, int len)
@@ -795,13 +778,11 @@ xmlTextReaderCDataBlock(void *ctx, const
 }
 
 /**
- * xmlTextReaderPushData:
- * @reader:  the xmlTextReaderPtr used
- *
  * Push data down the progressive parser until a significant callback
  * got raised.
  *
- * Returns -1 in case of failure, 0 otherwise
+ * @param reader  the xmlTextReader used
+ * @returns -1 in case of failure, 0 otherwise
  */
 static int
 xmlTextReaderPushData(xmlTextReaderPtr reader) {
@@ -906,10 +887,9 @@ xmlTextReaderPushData(xmlTextReaderPtr r
 
 #ifdef LIBXML_REGEXP_ENABLED
 /**
- * xmlTextReaderValidatePush:
- * @reader:  the xmlTextReaderPtr used
- *
  * Push the current node for validation
+ *
+ * @param reader  the xmlTextReader used
  */
 static int
 xmlTextReaderValidatePush(xmlTextReaderPtr reader) {
@@ -974,12 +954,11 @@ xmlTextReaderValidatePush(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderValidateCData:
- * @reader:  the xmlTextReaderPtr used
- * @data:  pointer to the CData
- * @len:  length of the CData block in bytes.
- *
  * Push some CData for validation
+ *
+ * @param reader  the xmlTextReader used
+ * @param data  pointer to the CData
+ * @param len  length of the CData block in bytes.
  */
 static void
 xmlTextReaderValidateCData(xmlTextReaderPtr reader,
@@ -1005,10 +984,9 @@ xmlTextReaderValidateCData(xmlTextReader
 }
 
 /**
- * xmlTextReaderValidatePop:
- * @reader:  the xmlTextReaderPtr used
- *
  * Pop the current node from validation
+ *
+ * @param reader  the xmlTextReader used
  */
 static int
 xmlTextReaderValidatePop(xmlTextReaderPtr reader) {
@@ -1063,12 +1041,11 @@ xmlTextReaderValidatePop(xmlTextReaderPt
 }
 
 /**
- * xmlTextReaderValidateEntity:
- * @reader:  the xmlTextReaderPtr used
- *
  * Handle the validation when an entity reference is encountered and
  * entity substitution is not activated. As a result the parser interface
  * must walk through the entity and do the validation calls
+ *
+ * @param reader  the xmlTextReader used
  */
 static int
 xmlTextReaderValidateEntity(xmlTextReaderPtr reader) {
@@ -1159,12 +1136,10 @@ skip_children:
 
 
 /**
- * xmlTextReaderGetSuccessor:
- * @cur:  the current node
- *
  * Get the successor of a node if available.
  *
- * Returns the successor node or NULL
+ * @param cur  the current node
+ * @returns the successor node or NULL
  */
 static xmlNodePtr
 xmlTextReaderGetSuccessor(xmlNodePtr cur) {
@@ -1179,14 +1154,12 @@ xmlTextReaderGetSuccessor(xmlNodePtr cur
 }
 
 /**
- * xmlTextReaderDoExpand:
- * @reader:  the xmlTextReaderPtr used
- *
  * Makes sure that the current node is fully read as well as all its
  * descendant. It means the full DOM subtree must be available at the
  * end of the call.
  *
- * Returns 1 if the node was expanded successfully, 0 if there is no more
+ * @param reader  the xmlTextReader used
+ * @returns 1 if the node was expanded successfully, 0 if there is no more
  *          nodes to read, or -1 in case of error
  */
 static int
@@ -1216,17 +1189,15 @@ xmlTextReaderDoExpand(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderRead:
- * @reader:  the xmlTextReaderPtr used
- *
  *  Moves the position of the current instance to the next node in
  *  the stream, exposing its properties.
  *
- *  Returns 1 if the node was read successfully, 0 if there is no more
+ * @param reader  the xmlTextReader used
+ * @returns 1 if the node was read successfully, 0 if there is no more
  *          nodes to read, or -1 in case of error
  */
 int
-xmlTextReaderRead(xmlTextReaderPtr reader) {
+xmlTextReaderRead(xmlTextReader *reader) {
     int val, olddepth = 0;
     xmlTextReaderState oldstate = XML_TEXTREADER_START;
     xmlNodePtr oldnode = NULL;
@@ -1577,32 +1548,28 @@ node_end:
 }
 
 /**
- * xmlTextReaderReadState:
- * @reader:  the xmlTextReaderPtr used
- *
  * Gets the read state of the reader.
  *
- * Returns the state value, or -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns the state value, or -1 in case of error
  */
 int
-xmlTextReaderReadState(xmlTextReaderPtr reader) {
+xmlTextReaderReadState(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     return(reader->mode);
 }
 
 /**
- * xmlTextReaderExpand:
- * @reader:  the xmlTextReaderPtr used
- *
  * Reads the contents of the current node and the full subtree. It then makes
- * the subtree available until the next xmlTextReaderRead() call
+ * the subtree available until the next #xmlTextReaderRead call
  *
- * Returns a node pointer valid until the next xmlTextReaderRead() call
+ * @param reader  the xmlTextReader used
+ * @returns a node pointer valid until the next #xmlTextReaderRead call
  *         or NULL in case of error.
  */
-xmlNodePtr
-xmlTextReaderExpand(xmlTextReaderPtr reader) {
+xmlNode *
+xmlTextReaderExpand(xmlTextReader *reader) {
     if ((reader == NULL) || (reader->node == NULL))
         return(NULL);
     if (reader->doc != NULL)
@@ -1615,17 +1582,15 @@ xmlTextReaderExpand(xmlTextReaderPtr rea
 }
 
 /**
- * xmlTextReaderNext:
- * @reader:  the xmlTextReaderPtr used
- *
  * Skip to the node following the current one in document order while
  * avoiding the subtree if any.
  *
- * Returns 1 if the node was read successfully, 0 if there is no more
+ * @param reader  the xmlTextReader used
+ * @returns 1 if the node was read successfully, 0 if there is no more
  *          nodes to read, or -1 in case of error
  */
 int
-xmlTextReaderNext(xmlTextReaderPtr reader) {
+xmlTextReaderNext(xmlTextReader *reader) {
     int ret;
     xmlNodePtr cur;
 
@@ -1681,17 +1646,15 @@ xmlTextReaderDumpCopy(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderReadInnerXml:
- * @reader:  the xmlTextReaderPtr used
- *
  * Reads the contents of the current node, including child nodes and markup.
  *
- * Returns a string containing the XML content, or NULL if the current node
+ * @param reader  the xmlTextReader used
+ * @returns 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.
  */
 xmlChar *
-xmlTextReaderReadInnerXml(xmlTextReaderPtr reader)
+xmlTextReaderReadInnerXml(xmlTextReader *reader)
 {
     xmlOutputBufferPtr output;
     xmlNodePtr cur;
@@ -1722,17 +1685,15 @@ xmlTextReaderReadInnerXml(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderReadOuterXml:
- * @reader:  the xmlTextReaderPtr used
- *
  * Reads the contents of the current node, including child nodes and markup.
  *
- * Returns a string containing the node and any XML content, or NULL if the
+ * @param reader  the xmlTextReader used
+ * @returns a string containing the node and any XML content, or NULL if the
  *         current node cannot be serialized. The string must be deallocated
  *         by the caller.
  */
 xmlChar *
-xmlTextReaderReadOuterXml(xmlTextReaderPtr reader)
+xmlTextReaderReadOuterXml(xmlTextReader *reader)
 {
     xmlOutputBufferPtr output;
     xmlNodePtr node;
@@ -1763,18 +1724,16 @@ xmlTextReaderReadOuterXml(xmlTextReaderP
 #endif
 
 /**
- * xmlTextReaderReadString:
- * @reader:  the xmlTextReaderPtr used
- *
  * Reads the contents of an element or a text node as a string.
  *
- * Returns a string containing the contents of the non-empty Element or
+ * @param reader  the xmlTextReader used
+ * @returns a string containing the contents of the non-empty Element or
  *         Text node (including CDATA sections), or NULL if the reader
  *         is positioned on any other type of node.
  *         The string must be deallocated by the caller.
  */
 xmlChar *
-xmlTextReaderReadString(xmlTextReaderPtr reader)
+xmlTextReaderReadString(xmlTextReader *reader)
 {
     xmlNodePtr node, cur;
     xmlBufPtr buf;
@@ -1909,13 +1868,11 @@ xmlTextReaderNextTree(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderReadTree:
- * @reader:  the xmlTextReaderPtr used
- *
  *  Moves the position of the current instance to the next node in
  *  the stream, exposing its properties.
  *
- *  Returns 1 if the node was read successfully, 0 if there is no more
+ * @param reader  the xmlTextReader used
+ * @returns 1 if the node was read successfully, 0 if there is no more
  *          nodes to read, or -1 in case of error
  */
 static int
@@ -1982,18 +1939,16 @@ found_node:
 }
 
 /**
- * xmlTextReaderNextSibling:
- * @reader:  the xmlTextReaderPtr used
- *
  * 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
  *
- * Returns 1 if the node was read successfully, 0 if there is no more
+ * @param reader  the xmlTextReader used
+ * @returns 1 if the node was read successfully, 0 if there is no more
  *          nodes to read, or -1 in case of error
  */
 int
-xmlTextReaderNextSibling(xmlTextReaderPtr reader) {
+xmlTextReaderNextSibling(xmlTextReader *reader) {
     if (reader == NULL)
         return(-1);
     if (reader->doc == NULL) {
@@ -2022,16 +1977,14 @@ xmlTextReaderNextSibling(xmlTextReaderPt
  *									*
  ************************************************************************/
 /**
- * xmlNewTextReader:
- * @input: the xmlParserInputBufferPtr used to read data
- * @URI: the URI information for the source if available
- *
- * Create an xmlTextReader structure fed with @input
+ * Create an xmlTextReader structure fed with `input`
  *
- * Returns the new xmlTextReaderPtr or NULL in case of error
+ * @param input  the xmlParserInputBuffer used to read data
+ * @param URI  the URI information for the source if available
+ * @returns the new xmlTextReader or NULL in case of error
  */
-xmlTextReaderPtr
-xmlNewTextReader(xmlParserInputBufferPtr input, const char *URI) {
+xmlTextReader *
+xmlNewTextReader(xmlParserInputBuffer *input, const char *URI) {
     xmlTextReaderPtr ret;
 
     if (input == NULL)
@@ -2106,7 +2059,6 @@ xmlNewTextReader(xmlParserInputBufferPtr
     }
     ret->ctxt->parseMode = XML_PARSE_READER;
     ret->ctxt->_private = ret;
-    ret->ctxt->linenumbers = 1;
     ret->ctxt->dictNames = 1;
     ret->allocs = XML_TEXTREADER_CTXT;
     /*
@@ -2124,14 +2076,12 @@ xmlNewTextReader(xmlParserInputBufferPtr
 }
 
 /**
- * xmlNewTextReaderFilename:
- * @URI: the URI of the resource to process
+ * Create an xmlTextReader structure fed with the resource at `URI`
  *
- * Create an xmlTextReader structure fed with the resource at @URI
- *
- * Returns the new xmlTextReaderPtr or NULL in case of error
+ * @param URI  the URI of the resource to process
+ * @returns the new xmlTextReader or NULL in case of error
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlNewTextReaderFilename(const char *URI) {
     xmlParserInputBufferPtr input;
     xmlTextReaderPtr ret;
@@ -2168,13 +2118,12 @@ xmlNewTextReaderFilename(const char *URI
 }
 
 /**
- * xmlFreeTextReader:
- * @reader:  the xmlTextReaderPtr
- *
  * Deallocate all the resources associated to the reader
+ *
+ * @param reader  the xmlTextReader
  */
 void
-xmlFreeTextReader(xmlTextReaderPtr reader) {
+xmlFreeTextReader(xmlTextReader *reader) {
     if (reader == NULL)
 	return;
 #ifdef LIBXML_RELAXNG_ENABLED
@@ -2243,16 +2192,14 @@ xmlFreeTextReader(xmlTextReaderPtr reade
  ************************************************************************/
 
 /**
- * xmlTextReaderClose:
- * @reader:  the xmlTextReaderPtr used
- *
  * This method releases any resources allocated by the current instance
  * changes the state to Closed and close any underlying input.
  *
- * Returns 0 or -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns 0 or -1 in case of error
  */
 int
-xmlTextReaderClose(xmlTextReaderPtr reader) {
+xmlTextReaderClose(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     reader->node = NULL;
@@ -2290,18 +2237,16 @@ xmlTextReaderClose(xmlTextReaderPtr read
 }
 
 /**
- * xmlTextReaderGetAttributeNo:
- * @reader:  the xmlTextReaderPtr used
- * @no: the zero-based index of the attribute relative to the containing element
- *
  * Provides the value of the attribute with the specified index relative
  * to the containing element.
  *
- * Returns a string containing the value of the specified attribute, or NULL
+ * @param reader  the xmlTextReader used
+ * @param no  the zero-based index of the attribute relative to the containing element
+ * @returns a string containing the value of the specified attribute, or NULL
  *    in case of error. The string must be deallocated by the caller.
  */
 xmlChar *
-xmlTextReaderGetAttributeNo(xmlTextReaderPtr reader, int no) {
+xmlTextReaderGetAttributeNo(xmlTextReader *reader, int no) {
     xmlChar *ret;
     int i;
     xmlAttrPtr cur;
@@ -2343,17 +2288,15 @@ xmlTextReaderGetAttributeNo(xmlTextReade
 }
 
 /**
- * xmlTextReaderGetAttribute:
- * @reader:  the xmlTextReaderPtr used
- * @name: the qualified name of the attribute.
- *
  * Provides the value of the attribute with the specified qualified name.
  *
- * Returns a string containing the value of the specified attribute, or NULL
+ * @param reader  the xmlTextReader used
+ * @param name  the qualified name of the attribute.
+ * @returns a string containing the value of the specified attribute, or NULL
  *    in case of error. The string must be deallocated by the caller.
  */
 xmlChar *
-xmlTextReaderGetAttribute(xmlTextReaderPtr reader, const xmlChar *name) {
+xmlTextReaderGetAttribute(xmlTextReader *reader, const xmlChar *name) {
     xmlChar *prefix = NULL;
     const xmlChar *localname;
     xmlNsPtr ns;
@@ -2428,18 +2371,16 @@ xmlTextReaderGetAttribute(xmlTextReaderP
 
 
 /**
- * xmlTextReaderGetAttributeNs:
- * @reader:  the xmlTextReaderPtr used
- * @localName: the local name of the attribute.
- * @namespaceURI: the namespace URI of the attribute.
- *
  * Provides the value of the specified attribute
  *
- * Returns a string containing the value of the specified attribute, or NULL
+ * @param reader  the xmlTextReader used
+ * @param localName  the local name of the attribute.
+ * @param namespaceURI  the namespace URI of the attribute.
+ * @returns a string containing the value of the specified attribute, or NULL
  *    in case of error. The string must be deallocated by the caller.
  */
 xmlChar *
-xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName,
+xmlTextReaderGetAttributeNs(xmlTextReader *reader, const xmlChar *localName,
 			    const xmlChar *namespaceURI) {
     xmlChar *ret = NULL;
     xmlChar *prefix = NULL;
@@ -2480,9 +2421,6 @@ xmlTextReaderGetAttributeNs(xmlTextReade
 }
 
 /**
- * xmlTextReaderGetRemainder:
- * @reader:  the xmlTextReaderPtr used
- *
  * 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.
@@ -2491,11 +2429,12 @@ xmlTextReaderGetAttributeNs(xmlTextReade
  * what's left in reader->input, and there is an allocation problem. Best
  * would be to rewrite it differently.
  *
- * Returns the xmlParserInputBufferPtr attached to the XML or NULL
+ * @param reader  the xmlTextReader used
+ * @returns the xmlParserInputBuffer attached to the XML or NULL
  *    in case of error.
  */
-xmlParserInputBufferPtr
-xmlTextReaderGetRemainder(xmlTextReaderPtr reader) {
+xmlParserInputBuffer *
+xmlTextReaderGetRemainder(xmlTextReader *reader) {
     xmlParserInputBufferPtr ret = NULL;
 
     if (reader == NULL)
@@ -2531,18 +2470,16 @@ xmlTextReaderGetRemainder(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderLookupNamespace:
- * @reader:  the xmlTextReaderPtr used
- * @prefix: the prefix whose namespace URI is to be resolved. To return
- *          the default namespace, specify NULL
- *
  * Resolves a namespace prefix in the scope of the current element.
  *
- * Returns a string containing the namespace URI to which the prefix maps
+ * @param reader  the xmlTextReader used
+ * @param prefix  the prefix whose namespace URI is to be resolved. To return
+ *          the default namespace, specify NULL
+ * @returns 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.
  */
 xmlChar *
-xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, const xmlChar *prefix) {
+xmlTextReaderLookupNamespace(xmlTextReader *reader, const xmlChar *prefix) {
     xmlNsPtr ns;
     int result;
 
@@ -2562,18 +2499,16 @@ xmlTextReaderLookupNamespace(xmlTextRead
 }
 
 /**
- * xmlTextReaderMoveToAttributeNo:
- * @reader:  the xmlTextReaderPtr used
- * @no: the zero-based index of the attribute relative to the containing
- *      element.
- *
  * Moves the position of the current instance to the attribute with
  * the specified index relative to the containing element.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not found
+ * @param reader  the xmlTextReader used
+ * @param no  the zero-based index of the attribute relative to the containing
+ *      element.
+ * @returns 1 in case of success, -1 in case of error, 0 if not found
  */
 int
-xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, int no) {
+xmlTextReaderMoveToAttributeNo(xmlTextReader *reader, int no) {
     int i;
     xmlAttrPtr cur;
     xmlNsPtr ns;
@@ -2612,17 +2547,15 @@ xmlTextReaderMoveToAttributeNo(xmlTextRe
 }
 
 /**
- * xmlTextReaderMoveToAttribute:
- * @reader:  the xmlTextReaderPtr used
- * @name: the qualified name of the attribute.
- *
  * Moves the position of the current instance to the attribute with
  * the specified qualified name.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not found
+ * @param reader  the xmlTextReader used
+ * @param name  the qualified name of the attribute.
+ * @returns 1 in case of success, -1 in case of error, 0 if not found
  */
 int
-xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, const xmlChar *name) {
+xmlTextReaderMoveToAttribute(xmlTextReader *reader, const xmlChar *name) {
     xmlChar *prefix = NULL;
     const xmlChar *localname;
     xmlNsPtr ns;
@@ -2715,18 +2648,16 @@ found:
 }
 
 /**
- * xmlTextReaderMoveToAttributeNs:
- * @reader:  the xmlTextReaderPtr used
- * @localName:  the local name of the attribute.
- * @namespaceURI:  the namespace URI of the attribute.
- *
  * Moves the position of the current instance to the attribute with the
  * specified local name and namespace URI.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not found
+ * @param reader  the xmlTextReader used
+ * @param localName  the local name of the attribute.
+ * @param namespaceURI  the namespace URI of the attribute.
+ * @returns 1 in case of success, -1 in case of error, 0 if not found
  */
 int
-xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
+xmlTextReaderMoveToAttributeNs(xmlTextReader *reader,
 	const xmlChar *localName, const xmlChar *namespaceURI) {
     xmlAttrPtr prop;
     xmlNodePtr node;
@@ -2776,16 +2707,14 @@ xmlTextReaderMoveToAttributeNs(xmlTextRe
 }
 
 /**
- * xmlTextReaderMoveToFirstAttribute:
- * @reader:  the xmlTextReaderPtr used
- *
  * Moves the position of the current instance to the first attribute
  * associated with the current node.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not found
+ * @param reader  the xmlTextReader used
+ * @returns 1 in case of success, -1 in case of error, 0 if not found
  */
 int
-xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader) {
+xmlTextReaderMoveToFirstAttribute(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     if (reader->node == NULL)
@@ -2805,16 +2734,14 @@ xmlTextReaderMoveToFirstAttribute(xmlTex
 }
 
 /**
- * xmlTextReaderMoveToNextAttribute:
- * @reader:  the xmlTextReaderPtr used
- *
  * Moves the position of the current instance to the next attribute
  * associated with the current node.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not found
+ * @param reader  the xmlTextReader used
+ * @returns 1 in case of success, -1 in case of error, 0 if not found
  */
 int
-xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader) {
+xmlTextReaderMoveToNextAttribute(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     if (reader->node == NULL)
@@ -2844,16 +2771,14 @@ xmlTextReaderMoveToNextAttribute(xmlText
 }
 
 /**
- * xmlTextReaderMoveToElement:
- * @reader:  the xmlTextReaderPtr used
- *
  * Moves the position of the current instance to the node that
  * contains the current Attribute  node.
  *
- * Returns 1 in case of success, -1 in case of error, 0 if not moved
+ * @param reader  the xmlTextReader used
+ * @returns 1 in case of success, -1 in case of error, 0 if not moved
  */
 int
-xmlTextReaderMoveToElement(xmlTextReaderPtr reader) {
+xmlTextReaderMoveToElement(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     if (reader->node == NULL)
@@ -2868,17 +2793,15 @@ xmlTextReaderMoveToElement(xmlTextReader
 }
 
 /**
- * xmlTextReaderReadAttributeValue:
- * @reader:  the xmlTextReaderPtr used
- *
  * Parses an attribute value into one or more Text and EntityReference nodes.
  *
- * Returns 1 in case of success, 0 if the reader was not positioned on an
+ * @param reader  the xmlTextReader used
+ * @returns 1 in case of success, 0 if the reader was not positioned on an
  *         attribute node or all the attribute values have been read, or -1
  *         in case of error.
  */
 int
-xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader) {
+xmlTextReaderReadAttributeValue(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     if (reader->node == NULL)
@@ -2924,16 +2847,14 @@ xmlTextReaderReadAttributeValue(xmlTextR
 }
 
 /**
- * xmlTextReaderConstEncoding:
- * @reader:  the xmlTextReaderPtr used
- *
  * Determine the encoding of the document being read.
  *
- * Returns a string containing the encoding of the document or NULL in
+ * @param reader  the xmlTextReader used
+ * @returns a string containing the encoding of the document or NULL in
  * case of error.  The string is deallocated with the reader.
  */
 const xmlChar *
-xmlTextReaderConstEncoding(xmlTextReaderPtr reader) {
+xmlTextReaderConstEncoding(xmlTextReader *reader) {
     const xmlChar *encoding = NULL;
 
     if (reader == NULL)
@@ -2954,15 +2875,13 @@ xmlTextReaderConstEncoding(xmlTextReader
  *									*
  ************************************************************************/
 /**
- * xmlTextReaderAttributeCount:
- * @reader:  the xmlTextReaderPtr used
- *
  * Provides the number of attributes of the current node
  *
- * Returns 0 i no attributes, -1 in case of error or the attribute count
+ * @param reader  the xmlTextReader used
+ * @returns 0 i no attributes, -1 in case of error or the attribute count
  */
 int
-xmlTextReaderAttributeCount(xmlTextReaderPtr reader) {
+xmlTextReaderAttributeCount(xmlTextReader *reader) {
     int ret;
     xmlAttrPtr attr;
     xmlNsPtr ns;
@@ -2998,17 +2917,15 @@ xmlTextReaderAttributeCount(xmlTextReade
 }
 
 /**
- * xmlTextReaderNodeType:
- * @reader:  the xmlTextReaderPtr used
- *
  * Get the node type of the current node
  * Reference:
  * http://www.gnu.org/software/dotgnu/pnetlib-doc/System/Xml/XmlNodeType.html
  *
- * Returns the xmlReaderTypes of the current node or -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns the xmlReaderTypes of the current node or -1 in case of error
  */
 int
-xmlTextReaderNodeType(xmlTextReaderPtr reader) {
+xmlTextReaderNodeType(xmlTextReader *reader) {
     xmlNodePtr node;
 
     if (reader == NULL)
@@ -3069,15 +2986,13 @@ xmlTextReaderNodeType(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderIsEmptyElement:
- * @reader:  the xmlTextReaderPtr used
- *
  * Check if the current node is empty
  *
- * Returns 1 if empty, 0 if not and -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns 1 if empty, 0 if not and -1 in case of error
  */
 int
-xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader) {
+xmlTextReaderIsEmptyElement(xmlTextReader *reader) {
     if ((reader == NULL) || (reader->node == NULL))
 	return(-1);
     if (reader->node->type != XML_ELEMENT_NODE)
@@ -3098,16 +3013,14 @@ xmlTextReaderIsEmptyElement(xmlTextReade
 }
 
 /**
- * xmlTextReaderLocalName:
- * @reader:  the xmlTextReaderPtr used
- *
  * The local name of the node.
  *
- * Returns the local name or NULL if not available,
+ * @param reader  the xmlTextReader used
+ * @returns the local name or NULL if not available,
  *   if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderLocalName(xmlTextReaderPtr reader) {
+xmlTextReaderLocalName(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3129,16 +3042,14 @@ xmlTextReaderLocalName(xmlTextReaderPtr
 }
 
 /**
- * xmlTextReaderConstLocalName:
- * @reader:  the xmlTextReaderPtr used
- *
  * The local name of the node.
  *
- * Returns the local name or NULL if not available, the
+ * @param reader  the xmlTextReader used
+ * @returns the local name or NULL if not available, the
  *         string will be deallocated with the reader.
  */
 const xmlChar *
-xmlTextReaderConstLocalName(xmlTextReaderPtr reader) {
+xmlTextReaderConstLocalName(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3160,16 +3071,14 @@ xmlTextReaderConstLocalName(xmlTextReade
 }
 
 /**
- * xmlTextReaderName:
- * @reader:  the xmlTextReaderPtr used
- *
  * The qualified name of the node, equal to Prefix :LocalName.
  *
- * Returns the local name or NULL if not available,
+ * @param reader  the xmlTextReader used
+ * @returns the local name or NULL if not available,
  *   if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderName(xmlTextReaderPtr reader) {
+xmlTextReaderName(xmlTextReader *reader) {
     xmlNodePtr node;
     xmlChar *ret;
 
@@ -3233,16 +3142,14 @@ xmlTextReaderName(xmlTextReaderPtr reade
 }
 
 /**
- * xmlTextReaderConstName:
- * @reader:  the xmlTextReaderPtr used
- *
  * The qualified name of the node, equal to Prefix :LocalName.
  *
- * Returns the local name or NULL if not available, the string is
+ * @param reader  the xmlTextReader used
+ * @returns the local name or NULL if not available, the string is
  *         deallocated with the reader.
  */
 const xmlChar *
-xmlTextReaderConstName(xmlTextReaderPtr reader) {
+xmlTextReaderConstName(xmlTextReader *reader) {
     xmlNodePtr node;
 
     if ((reader == NULL) || (reader->node == NULL))
@@ -3298,16 +3205,14 @@ xmlTextReaderConstName(xmlTextReaderPtr
 }
 
 /**
- * xmlTextReaderPrefix:
- * @reader:  the xmlTextReaderPtr used
- *
  * A shorthand reference to the namespace associated with the node.
  *
- * Returns the prefix or NULL if not available,
+ * @param reader  the xmlTextReader used
+ * @returns the prefix or NULL if not available,
  *    if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderPrefix(xmlTextReaderPtr reader) {
+xmlTextReaderPrefix(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3330,16 +3235,14 @@ xmlTextReaderPrefix(xmlTextReaderPtr rea
 }
 
 /**
- * xmlTextReaderConstPrefix:
- * @reader:  the xmlTextReaderPtr used
- *
  * A shorthand reference to the namespace associated with the node.
  *
- * Returns the prefix or NULL if not available, the string is deallocated
+ * @param reader  the xmlTextReader used
+ * @returns the prefix or NULL if not available, the string is deallocated
  *         with the reader.
  */
 const xmlChar *
-xmlTextReaderConstPrefix(xmlTextReaderPtr reader) {
+xmlTextReaderConstPrefix(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3362,16 +3265,14 @@ xmlTextReaderConstPrefix(xmlTextReaderPt
 }
 
 /**
- * xmlTextReaderNamespaceUri:
- * @reader:  the xmlTextReaderPtr used
- *
  * The URI defining the namespace associated with the node.
  *
- * Returns the namespace URI or NULL if not available,
+ * @param reader  the xmlTextReader used
+ * @returns the namespace URI or NULL if not available,
  *    if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderNamespaceUri(xmlTextReaderPtr reader) {
+xmlTextReaderNamespaceUri(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3390,16 +3291,14 @@ xmlTextReaderNamespaceUri(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderConstNamespaceUri:
- * @reader:  the xmlTextReaderPtr used
- *
  * The URI defining the namespace associated with the node.
  *
- * Returns the namespace URI or NULL if not available, the string
+ * @param reader  the xmlTextReader used
+ * @returns the namespace URI or NULL if not available, the string
  *         will be deallocated with the reader
  */
 const xmlChar *
-xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader) {
+xmlTextReaderConstNamespaceUri(xmlTextReader *reader) {
     xmlNodePtr node;
     if ((reader == NULL) || (reader->node == NULL))
 	return(NULL);
@@ -3418,16 +3317,14 @@ xmlTextReaderConstNamespaceUri(xmlTextRe
 }
 
 /**
- * xmlTextReaderBaseUri:
- * @reader:  the xmlTextReaderPtr used
- *
  * The base URI of the node.
  *
- * Returns the base URI or NULL if not available,
+ * @param reader  the xmlTextReader used
+ * @returns the base URI or NULL if not available,
  *    if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderBaseUri(xmlTextReaderPtr reader) {
+xmlTextReaderBaseUri(xmlTextReader *reader) {
     xmlChar *ret = NULL;
     int result;
 
@@ -3441,16 +3338,14 @@ xmlTextReaderBaseUri(xmlTextReaderPtr re
 }
 
 /**
- * xmlTextReaderConstBaseUri:
- * @reader:  the xmlTextReaderPtr used
- *
  * The base URI of the node.
  *
- * Returns the base URI or NULL if not available, the string
+ * @param reader  the xmlTextReader used
+ * @returns the base URI or NULL if not available, the string
  *         will be deallocated with the reader
  */
 const xmlChar *
-xmlTextReaderConstBaseUri(xmlTextReaderPtr reader) {
+xmlTextReaderConstBaseUri(xmlTextReader *reader) {
     xmlChar *tmp;
     const xmlChar *ret;
     int result;
@@ -3468,15 +3363,13 @@ xmlTextReaderConstBaseUri(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderDepth:
- * @reader:  the xmlTextReaderPtr used
- *
  * The depth of the node in the tree.
  *
- * Returns the depth or -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns the depth or -1 in case of error
  */
 int
-xmlTextReaderDepth(xmlTextReaderPtr reader) {
+xmlTextReaderDepth(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     if (reader->node == NULL)
@@ -3492,15 +3385,13 @@ xmlTextReaderDepth(xmlTextReaderPtr read
 }
 
 /**
- * xmlTextReaderHasAttributes:
- * @reader:  the xmlTextReaderPtr used
- *
  * Whether the node has attributes.
  *
- * Returns 1 if true, 0 if false, and -1 in case or error
+ * @param reader  the xmlTextReader used
+ * @returns 1 if true, 0 if false, and -1 in case or error
  */
 int
-xmlTextReaderHasAttributes(xmlTextReaderPtr reader) {
+xmlTextReaderHasAttributes(xmlTextReader *reader) {
     xmlNodePtr node;
     if (reader == NULL)
 	return(-1);
@@ -3519,15 +3410,13 @@ xmlTextReaderHasAttributes(xmlTextReader
 }
 
 /**
- * xmlTextReaderHasValue:
- * @reader:  the xmlTextReaderPtr used
- *
  * Whether the node can have a text value.
  *
- * Returns 1 if true, 0 if false, and -1 in case or error
+ * @param reader  the xmlTextReader used
+ * @returns 1 if true, 0 if false, and -1 in case or error
  */
 int
-xmlTextReaderHasValue(xmlTextReaderPtr reader) {
+xmlTextReaderHasValue(xmlTextReader *reader) {
     xmlNodePtr node;
     if (reader == NULL)
 	return(-1);
@@ -3553,16 +3442,14 @@ xmlTextReaderHasValue(xmlTextReaderPtr r
 }
 
 /**
- * xmlTextReaderValue:
- * @reader:  the xmlTextReaderPtr used
- *
  * Provides the text value of the node if present
  *
- * Returns the string or NULL if not available. The result must be deallocated
- *     with xmlFree()
+ * @param reader  the xmlTextReader used
+ * @returns the string or NULL if not available. The result must be deallocated
+ *     with #xmlFree
  */
 xmlChar *
-xmlTextReaderValue(xmlTextReaderPtr reader) {
+xmlTextReaderValue(xmlTextReader *reader) {
     xmlNodePtr node;
     if (reader == NULL)
 	return(NULL);
@@ -3602,16 +3489,14 @@ xmlTextReaderValue(xmlTextReaderPtr read
 }
 
 /**
- * xmlTextReaderConstValue:
- * @reader:  the xmlTextReaderPtr used
- *
  * Provides the text value of the node if present
  *
- * Returns the string or NULL if not available. The result will be
+ * @param reader  the xmlTextReader used
+ * @returns the string or NULL if not available. The result will be
  *     deallocated on the next Read() operation.
  */
 const xmlChar *
-xmlTextReaderConstValue(xmlTextReaderPtr reader) {
+xmlTextReaderConstValue(xmlTextReader *reader) {
     xmlNodePtr node;
     if (reader == NULL)
 	return(NULL);
@@ -3664,31 +3549,27 @@ xmlTextReaderConstValue(xmlTextReaderPtr
 }
 
 /**
- * xmlTextReaderIsDefault:
- * @reader:  the xmlTextReaderPtr used
- *
  * Whether an Attribute  node was generated from the default value
  * defined in the DTD or schema.
  *
- * Returns 0 if not defaulted, 1 if defaulted, and -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns 0 if not defaulted, 1 if defaulted, and -1 in case of error
  */
 int
-xmlTextReaderIsDefault(xmlTextReaderPtr reader) {
+xmlTextReaderIsDefault(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     return(0);
 }
 
 /**
- * xmlTextReaderQuoteChar:
- * @reader:  the xmlTextReaderPtr used
- *
  * The quotation mark character used to enclose the value of an attribute.
  *
- * Returns " or ' and -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns " or ' and -1 in case of error
  */
 int
-xmlTextReaderQuoteChar(xmlTextReaderPtr reader) {
+xmlTextReaderQuoteChar(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     /* TODO maybe lookup the attribute value for " first */
@@ -3696,16 +3577,14 @@ xmlTextReaderQuoteChar(xmlTextReaderPtr
 }
 
 /**
- * xmlTextReaderXmlLang:
- * @reader:  the xmlTextReaderPtr used
- *
  * The xml:lang scope within which the node resides.
  *
- * Returns the xml:lang value or NULL if none exists.,
+ * @param reader  the xmlTextReader used
+ * @returns the xml:lang value or NULL if none exists.,
  *    if non NULL it need to be freed by the caller.
  */
 xmlChar *
-xmlTextReaderXmlLang(xmlTextReaderPtr reader) {
+xmlTextReaderXmlLang(xmlTextReader *reader) {
     if (reader == NULL)
 	return(NULL);
     if (reader->node == NULL)
@@ -3714,15 +3593,13 @@ xmlTextReaderXmlLang(xmlTextReaderPtr re
 }
 
 /**
- * xmlTextReaderConstXmlLang:
- * @reader:  the xmlTextReaderPtr used
- *
  * The xml:lang scope within which the node resides.
  *
- * Returns the xml:lang value or NULL if none exists.
+ * @param reader  the xmlTextReader used
+ * @returns the xml:lang value or NULL if none exists.
  */
 const xmlChar *
-xmlTextReaderConstXmlLang(xmlTextReaderPtr reader) {
+xmlTextReaderConstXmlLang(xmlTextReader *reader) {
     xmlChar *tmp;
     const xmlChar *ret;
 
@@ -3739,37 +3616,33 @@ xmlTextReaderConstXmlLang(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderConstString:
- * @reader:  the xmlTextReaderPtr used
- * @str:  the string to intern.
- *
  * Get an interned string from the reader, allows for example to
  * speedup string name comparisons
  *
- * Returns an interned copy of the string or NULL in case of error. The
+ * @param reader  the xmlTextReader used
+ * @param str  the string to intern.
+ * @returns an interned copy of the string or NULL in case of error. The
  *         string will be deallocated with the reader.
  */
 const xmlChar *
-xmlTextReaderConstString(xmlTextReaderPtr reader, const xmlChar *str) {
+xmlTextReaderConstString(xmlTextReader *reader, const xmlChar *str) {
     if (reader == NULL)
 	return(NULL);
     return(constString(reader, str));
 }
 
 /**
- * xmlTextReaderNormalization:
- * @reader:  the xmlTextReaderPtr used
- *
  * 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 behaviour of
- * accepting out of range character entities like &#0; is of course not
+ * accepting out of range character entities like &\#0; is of course not
  * supported either.
  *
- * Returns 1 or -1 in case of error.
+ * @param reader  the xmlTextReader used
+ * @returns 1 or -1 in case of error.
  */
 int
-xmlTextReaderNormalization(xmlTextReaderPtr reader) {
+xmlTextReaderNormalization(xmlTextReader *reader) {
     if (reader == NULL)
 	return(-1);
     return(1);
@@ -3782,19 +3655,17 @@ xmlTextReaderNormalization(xmlTextReader
  ************************************************************************/
 
 /**
- * xmlTextReaderSetParserProp:
- * @reader:  the xmlTextReaderPtr used
- * @prop:  the xmlParserProperties to set
- * @value:  usually 0 or 1 to (de)activate it
- *
  * 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.
  *
- * Returns 0 if the call was successful, or -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @param prop  the xmlParserProperties to set
+ * @param value  usually 0 or 1 to (de)activate it
+ * @returns 0 if the call was successful, or -1 in case of error
  */
 int
-xmlTextReaderSetParserProp(xmlTextReaderPtr reader, int prop, int value) {
+xmlTextReaderSetParserProp(xmlTextReader *reader, int prop, int value) {
     xmlParserProperties p = (xmlParserProperties) prop;
     xmlParserCtxtPtr ctxt;
 
@@ -3849,16 +3720,14 @@ xmlTextReaderSetParserProp(xmlTextReader
 }
 
 /**
- * xmlTextReaderGetParserProp:
- * @reader:  the xmlTextReaderPtr used
- * @prop:  the xmlParserProperties to get
- *
  * Read the parser internal property.
  *
- * Returns the value, usually 0 or 1, or -1 in case of error.
+ * @param reader  the xmlTextReader used
+ * @param prop  the xmlParserProperties to get
+ * @returns the value, usually 0 or 1, or -1 in case of error.
  */
 int
-xmlTextReaderGetParserProp(xmlTextReaderPtr reader, int prop) {
+xmlTextReaderGetParserProp(xmlTextReader *reader, int prop) {
     xmlParserProperties p = (xmlParserProperties) prop;
     xmlParserCtxtPtr ctxt;
 
@@ -3885,15 +3754,13 @@ xmlTextReaderGetParserProp(xmlTextReader
 
 
 /**
- * xmlTextReaderGetParserLineNumber:
- * @reader: the user data (XML reader context)
- *
  * Provide the line number of the current parsing point.
  *
- * Returns an int or 0 if not available
+ * @param reader  the user data (XML reader context)
+ * @returns an int or 0 if not available
  */
 int
-xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader)
+xmlTextReaderGetParserLineNumber(xmlTextReader *reader)
 {
     if ((reader == NULL) || (reader->ctxt == NULL) ||
         (reader->ctxt->input == NULL)) {
@@ -3903,15 +3770,13 @@ xmlTextReaderGetParserLineNumber(xmlText
 }
 
 /**
- * xmlTextReaderGetParserColumnNumber:
- * @reader: the user data (XML reader context)
- *
  * Provide the column number of the current parsing point.
  *
- * Returns an int or 0 if not available
+ * @param reader  the user data (XML reader context)
+ * @returns an int or 0 if not available
  */
 int
-xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader)
+xmlTextReaderGetParserColumnNumber(xmlTextReader *reader)
 {
     if ((reader == NULL) || (reader->ctxt == NULL) ||
         (reader->ctxt->input == NULL)) {
@@ -3921,17 +3786,15 @@ xmlTextReaderGetParserColumnNumber(xmlTe
 }
 
 /**
- * xmlTextReaderCurrentNode:
- * @reader:  the xmlTextReaderPtr used
- *
- * Hacking interface allowing to get the xmlNodePtr corresponding to the
+ * Hacking interface allowing to get the xmlNode corresponding to the
  * current node being accessed by the xmlTextReader. This is dangerous
  * because the underlying node may be destroyed on the next Reads.
  *
- * Returns the xmlNodePtr or NULL in case of error.
+ * @param reader  the xmlTextReader used
+ * @returns the xmlNode or NULL in case of error.
  */
-xmlNodePtr
-xmlTextReaderCurrentNode(xmlTextReaderPtr reader) {
+xmlNode *
+xmlTextReaderCurrentNode(xmlTextReader *reader) {
     if (reader == NULL)
 	return(NULL);
 
@@ -3941,17 +3804,15 @@ xmlTextReaderCurrentNode(xmlTextReaderPt
 }
 
 /**
- * xmlTextReaderPreserve:
- * @reader:  the xmlTextReaderPtr used
- *
  * This tells the XML Reader to preserve the current node.
- * The caller must also use xmlTextReaderCurrentDoc() to
+ * The caller must also use #xmlTextReaderCurrentDoc to
  * keep an handle on the resulting document once parsing has finished
  *
- * Returns the xmlNodePtr or NULL in case of error.
+ * @param reader  the xmlTextReader used
+ * @returns the xmlNode or NULL in case of error.
  */
-xmlNodePtr
-xmlTextReaderPreserve(xmlTextReaderPtr reader) {
+xmlNode *
+xmlTextReaderPreserve(xmlTextReader *reader) {
     xmlNodePtr cur, parent;
 
     if (reader == NULL)
@@ -3978,19 +3839,17 @@ xmlTextReaderPreserve(xmlTextReaderPtr r
 
 #ifdef LIBXML_PATTERN_ENABLED
 /**
- * xmlTextReaderPreservePattern:
- * @reader:  the xmlTextReaderPtr used
- * @pattern:  an XPath subset pattern
- * @namespaces: the prefix definitions, array of [URI, prefix] or NULL
- *
  * This tells the XML Reader to preserve all nodes matched by the
- * pattern. The caller must also use xmlTextReaderCurrentDoc() to
+ * pattern. The caller must also use #xmlTextReaderCurrentDoc to
  * keep an handle on the resulting document once parsing has finished
  *
- * Returns a non-negative number in case of success and -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @param pattern  an XPath subset pattern
+ * @param namespaces  the prefix definitions, array of [URI, prefix] or NULL
+ * @returns a non-negative number in case of success and -1 in case of error
  */
 int
-xmlTextReaderPreservePattern(xmlTextReaderPtr reader, const xmlChar *pattern,
+xmlTextReaderPreservePattern(xmlTextReader *reader, const xmlChar *pattern,
                              const xmlChar **namespaces)
 {
     xmlPatternPtr comp;
@@ -4026,19 +3885,17 @@ xmlTextReaderPreservePattern(xmlTextRead
 #endif
 
 /**
- * xmlTextReaderCurrentDoc:
- * @reader:  the xmlTextReaderPtr used
- *
- * Hacking interface allowing to get the xmlDocPtr corresponding to the
+ * Hacking interface allowing to get the xmlDoc corresponding 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
+ *       associated XML document and calling #xmlFreeDoc on the result
  *       is needed once the reader parsing has finished.
  *
- * Returns the xmlDocPtr or NULL in case of error.
+ * @param reader  the xmlTextReader used
+ * @returns the xmlDoc or NULL in case of error.
  */
-xmlDocPtr
-xmlTextReaderCurrentDoc(xmlTextReaderPtr reader) {
+xmlDoc *
+xmlTextReaderCurrentDoc(xmlTextReader *reader) {
     if (reader == NULL)
 	return(NULL);
     if (reader->doc != NULL)
@@ -4052,21 +3909,19 @@ xmlTextReaderCurrentDoc(xmlTextReaderPtr
 
 #ifdef LIBXML_RELAXNG_ENABLED
 /**
- * xmlTextReaderRelaxNGSetSchema:
- * @reader:  the xmlTextReaderPtr used
- * @schema:  a precompiled RelaxNG schema
- *
  * 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 deactivated.
- @ The @schema should not be freed until the reader is deallocated
+ * if `schema` is NULL, then RelaxNG validation is deactivated.
+ * The `schema` should not be freed until the reader is deallocated
  * or its use has been deactivated.
  *
- * Returns 0 in case the RelaxNG validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param schema  a precompiled RelaxNG schema
+ * @returns 0 in case the RelaxNG validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, xmlRelaxNGPtr schema) {
+xmlTextReaderRelaxNGSetSchema(xmlTextReader *reader, xmlRelaxNG *schema) {
     if (reader == NULL)
         return(-1);
     if (schema == NULL) {
@@ -4109,14 +3964,12 @@ xmlTextReaderRelaxNGSetSchema(xmlTextRea
 
 #ifdef LIBXML_SCHEMAS_ENABLED
 /**
- * xmlTextReaderLocator:
- * @ctx: the xmlTextReaderPtr used
- * @file: returned file information
- * @line: returned line information
- *
  * Internal locator function for the readers
  *
- * Returns 0 in case the Schema validation could be (de)activated and
+ * @param ctx  the xmlTextReader used
+ * @param file  returned file information
+ * @param line  returned line information
+ * @returns 0 in case the Schema validation could be (de)activated and
  *         -1 in case of error.
  */
 static int
@@ -4163,21 +4016,19 @@ xmlTextReaderLocator(void *ctx, const ch
 }
 
 /**
- * xmlTextReaderSetSchema:
- * @reader:  the xmlTextReaderPtr used
- * @schema:  a precompiled Schema schema
- *
  * Use XSD Schema to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * if @schema is NULL, then Schema validation is deactivated.
- * The @schema should not be freed until the reader is deallocated
+ * if `schema` is NULL, then Schema validation is deactivated.
+ * The `schema` should not be freed until the reader is deallocated
  * or its use has been deactivated.
  *
- * Returns 0 in case the Schema validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param schema  a precompiled Schema schema
+ * @returns 0 in case the Schema validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderSetSchema(xmlTextReaderPtr reader, xmlSchemaPtr schema) {
+xmlTextReaderSetSchema(xmlTextReader *reader, xmlSchema *schema) {
     if (reader == NULL)
         return(-1);
     if (schema == NULL) {
@@ -4244,17 +4095,15 @@ xmlTextReaderSetSchema(xmlTextReaderPtr
 
 #ifdef LIBXML_RELAXNG_ENABLED
 /**
- * xmlTextReaderRelaxNGValidateInternal:
- * @reader:  the xmlTextReaderPtr used
- * @rng:  the path to a RelaxNG schema or NULL
- * @ctxt: the RelaxNG schema validation context or NULL
- * @options: options (not yet used)
- *
  * Use RelaxNG to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * If both @rng and @ctxt are NULL, then RelaxNG validation is deactivated.
+ * If both `rng` and `ctxt` are NULL, then RelaxNG validation is deactivated.
  *
- * Returns 0 in case the RelaxNG validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param rng  the path to a RelaxNG schema or NULL
+ * @param ctxt  the RelaxNG schema validation context or NULL
+ * @param options  options (not yet used)
+ * @returns 0 in case the RelaxNG validation could be (de)activated and
  *	   -1 in case of error.
  */
 static int
@@ -4334,17 +4183,15 @@ xmlTextReaderRelaxNGValidateInternal(xml
 
 #ifdef LIBXML_SCHEMAS_ENABLED
 /**
- * xmlTextReaderSchemaValidateInternal:
- * @reader:  the xmlTextReaderPtr used
- * @xsd:  the path to a W3C XSD schema or NULL
- * @ctxt: the XML Schema validation context or NULL
- * @options: options (not used yet)
- *
  * Validate the document as it is processed using XML Schema.
  * Activation is only possible before the first Read().
- * If both @xsd and @ctxt are NULL then XML Schema validation is deactivated.
+ * If both `xsd` and `ctxt` are NULL then XML Schema validation is deactivated.
  *
- * Returns 0 in case the schemas validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param xsd  the path to a W3C XSD schema or NULL
+ * @param ctxt  the XML Schema validation context or NULL
+ * @param options  options (not used yet)
+ * @returns 0 in case the schemas validation could be (de)activated and
  *         -1 in case of error.
  */
 static int
@@ -4443,40 +4290,36 @@ xmlTextReaderSchemaValidateInternal(xmlT
 }
 
 /**
- * xmlTextReaderSchemaValidateCtxt:
- * @reader:  the xmlTextReaderPtr used
- * @ctxt: the XML Schema validation context or NULL
- * @options: options (not used yet)
- *
  * Use W3C XSD schema context to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * If @ctxt is NULL, then XML Schema validation is deactivated.
+ * If `ctxt` is NULL, then XML Schema validation is deactivated.
  *
- * Returns 0 in case the schemas validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param ctxt  the XML Schema validation context or NULL
+ * @param options  options (not used yet)
+ * @returns 0 in case the schemas validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
-				    xmlSchemaValidCtxtPtr ctxt,
+xmlTextReaderSchemaValidateCtxt(xmlTextReader *reader,
+				    xmlSchemaValidCtxt *ctxt,
 				    int options)
 {
     return(xmlTextReaderSchemaValidateInternal(reader, NULL, ctxt, options));
 }
 
 /**
- * xmlTextReaderSchemaValidate:
- * @reader:  the xmlTextReaderPtr used
- * @xsd:  the path to a W3C XSD schema or NULL
- *
  * Use W3C XSD schema to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * If @xsd is NULL, then XML Schema validation is deactivated.
+ * If `xsd` is NULL, then XML Schema validation is deactivated.
  *
- * Returns 0 in case the schemas validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param xsd  the path to a W3C XSD schema or NULL
+ * @returns 0 in case the schemas validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderSchemaValidate(xmlTextReaderPtr reader, const char *xsd)
+xmlTextReaderSchemaValidate(xmlTextReader *reader, const char *xsd)
 {
     return(xmlTextReaderSchemaValidateInternal(reader, xsd, NULL, 0));
 }
@@ -4484,58 +4327,52 @@ xmlTextReaderSchemaValidate(xmlTextReade
 
 #ifdef LIBXML_RELAXNG_ENABLED
 /**
- * xmlTextReaderRelaxNGValidateCtxt:
- * @reader:  the xmlTextReaderPtr used
- * @ctxt: the RelaxNG schema validation context or NULL
- * @options: options (not used yet)
- *
  * Use RelaxNG schema context to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * If @ctxt is NULL, then RelaxNG schema validation is deactivated.
+ * If `ctxt` is NULL, then RelaxNG schema validation is deactivated.
  *
- * Returns 0 in case the schemas validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param ctxt  the RelaxNG schema validation context or NULL
+ * @param options  options (not used yet)
+ * @returns 0 in case the schemas validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
-				 xmlRelaxNGValidCtxtPtr ctxt,
+xmlTextReaderRelaxNGValidateCtxt(xmlTextReader *reader,
+				 xmlRelaxNGValidCtxt *ctxt,
 				 int options)
 {
     return(xmlTextReaderRelaxNGValidateInternal(reader, NULL, ctxt, options));
 }
 
 /**
- * xmlTextReaderRelaxNGValidate:
- * @reader:  the xmlTextReaderPtr used
- * @rng:  the path to a RelaxNG schema or NULL
- *
  * Use RelaxNG schema to validate the document as it is processed.
  * Activation is only possible before the first Read().
- * If @rng is NULL, then RelaxNG schema validation is deactivated.
+ * If `rng` is NULL, then RelaxNG schema validation is deactivated.
  *
- * Returns 0 in case the schemas validation could be (de)activated and
+ * @param reader  the xmlTextReader used
+ * @param rng  the path to a RelaxNG schema or NULL
+ * @returns 0 in case the schemas validation could be (de)activated and
  *         -1 in case of error.
  */
 int
-xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng)
+xmlTextReaderRelaxNGValidate(xmlTextReader *reader, const char *rng)
 {
     return(xmlTextReaderRelaxNGValidateInternal(reader, rng, NULL, 0));
 }
 #endif /* LIBXML_RELAXNG_ENABLED */
 
 /**
- * xmlTextReaderIsNamespaceDecl:
- * @reader: the xmlTextReaderPtr used
- *
  * Determine whether the current node is a namespace declaration
  * rather than a regular attribute.
  *
- * Returns 1 if the current node is a namespace declaration, 0 if it
+ * @param reader  the xmlTextReader used
+ * @returns 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.
  */
 int
-xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader) {
+xmlTextReaderIsNamespaceDecl(xmlTextReader *reader) {
     xmlNodePtr node;
     if (reader == NULL)
 	return(-1);
@@ -4553,16 +4390,14 @@ xmlTextReaderIsNamespaceDecl(xmlTextRead
 }
 
 /**
- * xmlTextReaderConstXmlVersion:
- * @reader:  the xmlTextReaderPtr used
- *
  * Determine the XML version of the document being read.
  *
- * Returns a string containing the XML version of the document or NULL
+ * @param reader  the xmlTextReader used
+ * @returns a string containing the XML version of the document or NULL
  * in case of error.  The string is deallocated with the reader.
  */
 const xmlChar *
-xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader) {
+xmlTextReaderConstXmlVersion(xmlTextReader *reader) {
     xmlDocPtr doc = NULL;
     if (reader == NULL)
 	return(NULL);
@@ -4580,17 +4415,15 @@ xmlTextReaderConstXmlVersion(xmlTextRead
 }
 
 /**
- * xmlTextReaderStandalone:
- * @reader:  the xmlTextReaderPtr used
- *
  * Determine the standalone status of the document being read.
  *
- * Returns 1 if the document was declared to be standalone, 0 if it
+ * @param reader  the xmlTextReader used
+ * @returns 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.
  */
 int
-xmlTextReaderStandalone(xmlTextReaderPtr reader) {
+xmlTextReaderStandalone(xmlTextReader *reader) {
     xmlDocPtr doc = NULL;
     if (reader == NULL)
 	return(-1);
@@ -4611,12 +4444,10 @@ xmlTextReaderStandalone(xmlTextReaderPtr
  ************************************************************************/
 
 /**
- * xmlTextReaderLocatorLineNumber:
- * @locator: the xmlTextReaderLocatorPtr used
- *
  * Obtain the line number for the given locator.
  *
- * Returns the line number or -1 in case of error.
+ * @param locator  the void used
+ * @returns the line number or -1 in case of error.
  */
 int
 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator) {
@@ -4647,12 +4478,10 @@ xmlTextReaderLocatorLineNumber(xmlTextRe
 }
 
 /**
- * xmlTextReaderLocatorBaseURI:
- * @locator: the xmlTextReaderLocatorPtr used
- *
  * Obtain the base URI for the given locator.
  *
- * Returns the base URI or NULL in case of error,
+ * @param locator  the void used
+ * @returns the base URI or NULL in case of error,
  *    if non NULL it need to be freed by the caller.
  */
 xmlChar *
@@ -4684,21 +4513,23 @@ xmlTextReaderLocatorBaseURI(xmlTextReade
 }
 
 /**
- * xmlTextReaderSetErrorHandler:
- * @reader:  the xmlTextReaderPtr used
- * @f:	the callback function to call on error and warnings
- * @arg:    a user argument to pass to the callback function
+ * Register a callback function that will be called on error and warnings.
  *
- * DEPRECATED: Use xmlTextReaderSetStructuredErrorHandler.
+ * @deprecated Use #xmlTextReaderSetStructuredErrorHandler.
  *
- * Register a callback function that will be called on error and warnings.
+ * If `f` is NULL, the default error and warning handlers are restored.
  *
- * If @f is NULL, the default error and warning handlers are restored.
+ * @param reader  the xmlTextReader used
+ * @param f  	the callback function to call on error and warnings
+ * @param arg  a user argument to pass to the callback function
  */
 void
-xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
+xmlTextReaderSetErrorHandler(xmlTextReader *reader,
                              xmlTextReaderErrorFunc f, void *arg)
 {
+    if (reader == NULL)
+        return;
+
     if (f != NULL) {
         reader->errorFunc = f;
         reader->sErrorFunc = NULL;
@@ -4740,18 +4571,22 @@ xmlTextReaderSetErrorHandler(xmlTextRead
 
 /**
 * xmlTextReaderSetStructuredErrorHandler:
- * @reader:  the xmlTextReaderPtr used
- * @f:	the callback function to call on error and warnings
- * @arg:    a user argument to pass to the callback function
  *
  * Register a callback function that will be called on error and warnings.
  *
- * If @f is NULL, the default error and warning handlers are restored.
+ * If `f` is NULL, the default error and warning handlers are restored.
+ *
+ * @param reader  the xmlTextReader used
+ * @param f  	the callback function to call on error and warnings
+ * @param arg  a user argument to pass to the callback function
  */
 void
-xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
+xmlTextReaderSetStructuredErrorHandler(xmlTextReader *reader,
                                        xmlStructuredErrorFunc f, void *arg)
 {
+    if (reader == NULL)
+        return;
+
     if (f != NULL) {
         reader->sErrorFunc = f;
         reader->errorFunc = NULL;
@@ -4792,15 +4627,14 @@ xmlTextReaderSetStructuredErrorHandler(x
 }
 
 /**
- * xmlTextReaderGetErrorHandler:
- * @reader:  the xmlTextReaderPtr used
- * @f:	the callback function or NULL is no callback has been registered
- * @arg:    a user argument
- *
  * Retrieve the error callback function and user argument.
+ *
+ * @param reader  the xmlTextReader used
+ * @param f  	the callback function or NULL is no callback has been registered
+ * @param arg  a user argument
  */
 void
-xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
+xmlTextReaderGetErrorHandler(xmlTextReader *reader,
                              xmlTextReaderErrorFunc * f, void **arg)
 {
     if (f != NULL)
@@ -4810,18 +4644,16 @@ xmlTextReaderGetErrorHandler(xmlTextRead
 }
 
 /**
- * xmlTextReaderSetResourceLoader:
- * @reader:  thr reader
- * @loader:  resource loader
- * @data:  user data which will be passed to the loader
- *
  * Register a callback function that will be called to load external
  * resources like entities.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
+ * @param reader  thr reader
+ * @param loader  resource loader
+ * @param data  user data which will be passed to the loader
  */
 void
-xmlTextReaderSetResourceLoader(xmlTextReaderPtr reader,
+xmlTextReaderSetResourceLoader(xmlTextReader *reader,
                                xmlResourceLoader loader, void *data) {
     if ((reader == NULL) || (reader->ctxt == NULL))
         return;
@@ -4833,15 +4665,13 @@ xmlTextReaderSetResourceLoader(xmlTextRe
 }
 
 /**
- * xmlTextReaderIsValid:
- * @reader:  the xmlTextReaderPtr used
- *
  * Retrieve the validity status from the parser context
  *
- * Returns the flag value 1 if valid, 0 if no, and -1 in case of error
+ * @param reader  the xmlTextReader used
+ * @returns the flag value 1 if valid, 0 if no, and -1 in case of error
  */
 int
-xmlTextReaderIsValid(xmlTextReaderPtr reader)
+xmlTextReaderIsValid(xmlTextReader *reader)
 {
     if (reader == NULL)
         return (-1);
@@ -4865,21 +4695,19 @@ xmlTextReaderIsValid(xmlTextReaderPtr re
  ************************************************************************/
 
 /**
- * xmlTextReaderSetup:
- * @reader:  an XML reader
- * @input: xmlParserInputBufferPtr used to feed the reader, will
- *         be destroyed with it.
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * Setup an XML reader with new options
  *
- * Returns 0 in case of success and -1 in case of error.
+ * @param reader  an XML reader
+ * @param input  xmlParserInputBuffer used to feed the reader, will
+ *         be destroyed with it.
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error.
  */
 int
-xmlTextReaderSetup(xmlTextReaderPtr reader,
-                   xmlParserInputBufferPtr input, const char *URL,
+xmlTextReaderSetup(xmlTextReader *reader,
+                   xmlParserInputBuffer *input, const char *URL,
                    const char *encoding, int options)
 {
     if (reader == NULL) {
@@ -5008,7 +4836,6 @@ xmlTextReaderSetup(xmlTextReaderPtr read
         reader->dict = reader->ctxt->dict;
     }
     reader->ctxt->_private = reader;
-    reader->ctxt->linenumbers = 1;
     reader->ctxt->dictNames = 1;
     /*
      * use the parser dictionary to allocate all elements and attributes names
@@ -5022,9 +4849,6 @@ xmlTextReaderSetup(xmlTextReaderPtr read
     }
     if (options & XML_PARSE_XINCLUDE) {
         reader->xinclude = 1;
-	reader->xinclude_name = xmlDictLookup(reader->dict, XINCLUDE_NODE, -1);
-        if (reader->xinclude_name == NULL)
-            return(-1);
 	options -= XML_PARSE_XINCLUDE;
     } else
         reader->xinclude = 0;
@@ -5064,14 +4888,13 @@ xmlTextReaderSetup(xmlTextReaderPtr read
 }
 
 /**
- * xmlTextReaderSetMaxAmplification:
- * @reader: an XML reader
- * @maxAmpl:  maximum amplification factor
+ * Set the maximum amplification factor. See #xmlCtxtSetMaxAmplification.
  *
- * Set the maximum amplification factor. See xmlCtxtSetMaxAmplification.
+ * @param reader  an XML reader
+ * @param maxAmpl  maximum amplification factor
  */
 void
-xmlTextReaderSetMaxAmplification(xmlTextReaderPtr reader, unsigned maxAmpl)
+xmlTextReaderSetMaxAmplification(xmlTextReader *reader, unsigned maxAmpl)
 {
     if (reader == NULL)
         return;
@@ -5079,15 +4902,13 @@ xmlTextReaderSetMaxAmplification(xmlText
 }
 
 /**
- * xmlTextReaderGetLastError:
- * @reader: an XML reader
- *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns the last error.
+ * @param reader  an XML reader
+ * @returns the last error.
  */
 const xmlError *
-xmlTextReaderGetLastError(xmlTextReaderPtr reader)
+xmlTextReaderGetLastError(xmlTextReader *reader)
 {
     if ((reader == NULL) || (reader->ctxt == NULL))
         return(NULL);
@@ -5095,24 +4916,22 @@ xmlTextReaderGetLastError(xmlTextReaderP
 }
 
 /**
- * xmlTextReaderByteConsumed:
- * @reader: an XML reader
- *
- * DEPRECATED: The returned value is mostly random and useless.
- * It reflects the parser reading ahead and is in no way related to
- * the current node.
- *
  * 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()
+ * This function actually just wraps a call to #xmlByteConsumed
  * for the parser context associated with the reader.
- * See xmlBytesConsumed() for more information.
+ * See #xmlByteConsumed for more information.
+ *
+ * @deprecated The returned value is mostly random and useless.
+ * It reflects the parser reading ahead and is in no way related to
+ * the current node.
  *
- * Returns the index in bytes from the beginning of the entity or -1
+ * @param reader  an XML reader
+ * @returns the index in bytes from the beginning of the entity or -1
  *         in case the index could not be computed.
  */
 long
-xmlTextReaderByteConsumed(xmlTextReaderPtr reader) {
+xmlTextReaderByteConsumed(xmlTextReader *reader) {
     xmlParserInputPtr in;
 
     if ((reader == NULL) || (reader->ctxt == NULL))
@@ -5125,15 +4944,13 @@ xmlTextReaderByteConsumed(xmlTextReaderP
 
 
 /**
- * xmlReaderWalker:
- * @doc:  a preparsed document
- *
  * Create an xmltextReader for a preparsed document.
  *
- * Returns the new reader or NULL in case of error.
+ * @param doc  a preparsed document
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
-xmlReaderWalker(xmlDocPtr doc)
+xmlTextReader *
+xmlReaderWalker(xmlDoc *doc)
 {
     xmlTextReaderPtr ret;
 
@@ -5160,18 +4977,16 @@ xmlReaderWalker(xmlDocPtr doc)
 }
 
 /**
- * xmlReaderForDoc:
- * @cur:  a pointer to a zero terminated string
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * Create an xmltextReader for an XML in-memory document.
- * The parsing flags @options are a combination of xmlParserOption.
+ * The parsing flags `options` are a combination of xmlParserOption.
  *
- * Returns the new reader or NULL in case of error.
+ * @param cur  a pointer to a zero terminated string
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlReaderForDoc(const xmlChar * cur, const char *URL, const char *encoding,
                 int options)
 {
@@ -5186,17 +5001,15 @@ xmlReaderForDoc(const xmlChar * cur, con
 }
 
 /**
- * xmlReaderForFile:
- * @filename:  a file or URL
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * parse an XML file from the filesystem or the network.
- * The parsing flags @options are a combination of xmlParserOption.
+ * The parsing flags `options` are a combination of xmlParserOption.
  *
- * Returns the new reader or NULL in case of error.
+ * @param filename  a file or URL
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlReaderForFile(const char *filename, const char *encoding, int options)
 {
     xmlTextReaderPtr reader;
@@ -5212,19 +5025,17 @@ xmlReaderForFile(const char *filename, c
 }
 
 /**
- * xmlReaderForMemory:
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * Create an xmltextReader for an XML in-memory document.
- * The parsing flags @options are a combination of xmlParserOption.
+ * The parsing flags `options` are a combination of xmlParserOption.
  *
- * Returns the new reader or NULL in case of error.
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlReaderForMemory(const char *buffer, int size, const char *URL,
                    const char *encoding, int options)
 {
@@ -5249,20 +5060,18 @@ xmlReaderForMemory(const char *buffer, i
 }
 
 /**
- * xmlReaderForFd:
- * @fd:  an open file descriptor
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * Create an xmltextReader for an XML from a file descriptor.
- * The parsing flags @options are a combination of xmlParserOption.
+ * 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.
  *
- * Returns the new reader or NULL in case of error.
+ * @param fd  an open file descriptor
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlReaderForFd(int fd, const char *URL, const char *encoding, int options)
 {
     xmlTextReaderPtr reader;
@@ -5305,20 +5114,18 @@ xmlReaderForFd(int fd, const char *URL,
 }
 
 /**
- * xmlReaderForIO:
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * Create an xmltextReader for an XML document from I/O functions and source.
- * The parsing flags @options are a combination of xmlParserOption.
+ * The parsing flags `options` are a combination of xmlParserOption.
  *
- * Returns the new reader or NULL in case of error.
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns the new reader or NULL in case of error.
  */
-xmlTextReaderPtr
+xmlTextReader *
 xmlReaderForIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose,
                void *ioctx, const char *URL, const char *encoding,
                int options)
@@ -5350,17 +5157,15 @@ xmlReaderForIO(xmlInputReadCallback iore
 }
 
 /**
- * xmlReaderNewWalker:
- * @reader:  an XML reader
- * @doc:  a preparsed document
- *
  * Setup an xmltextReader to parse a preparsed XML document.
- * This reuses the existing @reader xmlTextReader.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param doc  a preparsed document
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewWalker(xmlTextReaderPtr reader, xmlDocPtr doc)
+xmlReaderNewWalker(xmlTextReader *reader, xmlDoc *doc)
 {
     if (doc == NULL)
         return (-1);
@@ -5394,21 +5199,19 @@ xmlReaderNewWalker(xmlTextReaderPtr read
 }
 
 /**
- * xmlReaderNewDoc:
- * @reader:  an XML reader
- * @cur:  a pointer to a zero terminated string
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * 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.
+ * The parsing flags `options` are a combination of xmlParserOption.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param cur  a pointer to a zero terminated string
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewDoc(xmlTextReaderPtr reader, const xmlChar * cur,
+xmlReaderNewDoc(xmlTextReader *reader, const xmlChar * cur,
                 const char *URL, const char *encoding, int options)
 {
 
@@ -5425,20 +5228,18 @@ xmlReaderNewDoc(xmlTextReaderPtr reader,
 }
 
 /**
- * xmlReaderNewFile:
- * @reader:  an XML reader
- * @filename:  a file or URL
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * 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.
+ * The parsing flags `options` are a combination of xmlParserOption.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param filename  a file or URL
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewFile(xmlTextReaderPtr reader, const char *filename,
+xmlReaderNewFile(xmlTextReader *reader, const char *filename,
                  const char *encoding, int options)
 {
     xmlParserInputBufferPtr input;
@@ -5482,22 +5283,20 @@ xmlReaderNewFile(xmlTextReaderPtr reader
 }
 
 /**
- * xmlReaderNewMemory:
- * @reader:  an XML reader
- * @buffer:  a pointer to a char array
- * @size:  the size of the array
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * 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.
+ * The parsing flags `options` are a combination of xmlParserOption.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param buffer  a pointer to a char array
+ * @param size  the size of the array
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewMemory(xmlTextReaderPtr reader, const char *buffer, int size,
+xmlReaderNewMemory(xmlTextReader *reader, const char *buffer, int size,
                    const char *URL, const char *encoding, int options)
 {
     xmlParserInputBufferPtr input;
@@ -5516,23 +5315,21 @@ xmlReaderNewMemory(xmlTextReaderPtr read
 }
 
 /**
- * xmlReaderNewFd:
- * @reader:  an XML reader
- * @fd:  an open file descriptor
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * 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.
+ * The parsing flags `options` are a combination of xmlParserOption.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param fd  an open file descriptor
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewFd(xmlTextReaderPtr reader, int fd,
+xmlReaderNewFd(xmlTextReader *reader, int fd,
                const char *URL, const char *encoding, int options)
 {
     xmlParserInputBufferPtr input;
@@ -5567,24 +5364,22 @@ xmlReaderNewFd(xmlTextReaderPtr reader,
 }
 
 /**
- * xmlReaderNewIO:
- * @reader:  an XML reader
- * @ioread:  an I/O read function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @URL:  the base URL to use for the document
- * @encoding:  the document encoding, or NULL
- * @options:  a combination of xmlParserOption
- *
  * 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.
+ * The parsing flags `options` are a combination of xmlParserOption.
+ * This reuses the existing `reader` xmlTextReader.
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param reader  an XML reader
+ * @param ioread  an I/O read function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param URL  the base URL to use for the document
+ * @param encoding  the document encoding, or NULL
+ * @param options  a combination of xmlParserOption
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlReaderNewIO(xmlTextReaderPtr reader, xmlInputReadCallback ioread,
+xmlReaderNewIO(xmlTextReader *reader, xmlInputReadCallback ioread,
                xmlInputCloseCallback ioclose, void *ioctx,
                const char *URL, const char *encoding, int options)
 {
diff -pruN 2.14.6+dfsg-0.1/xmlregexp.c 2.15.0+dfsg-0.3/xmlregexp.c
--- 2.14.6+dfsg-0.1/xmlregexp.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlregexp.c	2025-09-15 11:55:59.000000000 +0000
@@ -11,7 +11,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <veillard@redhat.com>
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -31,7 +31,6 @@
 #include "private/error.h"
 #include "private/memory.h"
 #include "private/regexp.h"
-#include "private/unicode.h"
 
 #ifndef SIZE_MAX
 #define SIZE_MAX ((size_t) -1)
@@ -61,6 +60,67 @@
 
 /************************************************************************
  *									*
+ *			Unicode support					*
+ *									*
+ ************************************************************************/
+
+typedef struct {
+    const char *rangename;
+    const xmlChRangeGroup group;
+} xmlUnicodeRange;
+
+#include "codegen/unicode.inc"
+
+/**
+ * binary table lookup for user-supplied name
+ *
+ * @param sptr  a table of xmlUnicodeRange structs
+ * @param numentries  number of table entries
+ * @param tname  name to be found
+ * @returns pointer to range function if found, otherwise NULL
+ */
+static const xmlChRangeGroup *
+xmlUnicodeLookup(const xmlUnicodeRange *sptr, int numentries,
+                 const char *tname) {
+    int low, high, mid, cmp;
+
+    if (tname == NULL) return(NULL);
+
+    low = 0;
+    high = numentries - 1;
+    while (low <= high) {
+	mid = (low + high) / 2;
+	cmp = strcmp(tname, sptr[mid].rangename);
+	if (cmp == 0)
+	    return (&sptr[mid].group);
+	if (cmp < 0)
+	    high = mid - 1;
+	else
+	    low = mid + 1;
+    }
+    return (NULL);
+}
+
+/**
+ * Check whether the character is part of the UCS Block
+ *
+ * @param code  UCS code point
+ * @param block  UCS block name
+ * @returns 1 if true, 0 if false and -1 on unknown block
+ */
+static int
+xmlUCSIsBlock(int code, const char *block) {
+    const xmlChRangeGroup *group;
+
+    group = xmlUnicodeLookup(xmlUnicodeBlocks,
+            sizeof(xmlUnicodeBlocks) / sizeof(xmlUnicodeBlocks[0]), block);
+    if (group == NULL)
+	return (-1);
+    return (xmlCharInRange(code, group));
+}
+
+/************************************************************************
+ *									*
  *			Datatypes and structures			*
  *									*
  ************************************************************************/
@@ -355,10 +415,9 @@ static int xmlRegCheckCharacterRange(xml
  *									*
  ************************************************************************/
 /**
- * xmlRegexpErrMemory:
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  regexp parser context
  */
 static void
 xmlRegexpErrMemory(xmlRegParserCtxtPtr ctxt)
@@ -370,10 +429,10 @@ xmlRegexpErrMemory(xmlRegParserCtxtPtr c
 }
 
 /**
- * xmlRegexpErrCompile:
- * @extra:  extra information
- *
  * Handle a compilation failure
+ *
+ * @param ctxt  regexp parser context
+ * @param extra  extra information
  */
 static void
 xmlRegexpErrCompile(xmlRegParserCtxtPtr ctxt, const char *extra)
@@ -405,14 +464,12 @@ xmlRegexpErrCompile(xmlRegParserCtxtPtr
 static int xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt);
 
 /**
- * xmlRegCalloc2:
- * @dim1:  size of first dimension
- * @dim2:  size of second dimension
- * @elemSize:  size of element
- *
  * Allocate a two-dimensional array and set all elements to zero.
  *
- * Returns the new array or NULL in case of error.
+ * @param dim1  size of first dimension
+ * @param dim2  size of second dimension
+ * @param elemSize  size of element
+ * @returns the new array or NULL in case of error.
  */
 static void*
 xmlRegCalloc2(size_t dim1, size_t dim2, size_t elemSize) {
@@ -434,12 +491,10 @@ xmlRegCalloc2(size_t dim1, size_t dim2,
 }
 
 /**
- * xmlRegEpxFromParse:
- * @ctxt:  the parser context used to build it
- *
  * Allocate a new regexp and fill it with the result from the parser
  *
- * Returns the new regexp or NULL in case of error
+ * @param ctxt  the parser context used to build it
+ * @returns the new regexp or NULL in case of error
  */
 static xmlRegexpPtr
 xmlRegEpxFromParse(xmlRegParserCtxtPtr ctxt) {
@@ -664,12 +719,10 @@ not_determ:
 }
 
 /**
- * xmlRegNewParserCtxt:
- * @string:  the string to parse
- *
  * Allocate a new regexp parser context
  *
- * Returns the new context or NULL in case of error
+ * @param string  the string to parse
+ * @returns the new context or NULL in case of error
  */
 static xmlRegParserCtxtPtr
 xmlRegNewParserCtxt(const xmlChar *string) {
@@ -695,16 +748,14 @@ xmlRegNewParserCtxt(const xmlChar *strin
 }
 
 /**
- * xmlRegNewRange:
- * @ctxt:  the regexp parser context
- * @neg:  is that negative
- * @type:  the type of range
- * @start:  the start codepoint
- * @end:  the end codepoint
- *
  * Allocate a new regexp range
  *
- * Returns the new range or NULL in case of error
+ * @param ctxt  the regexp parser context
+ * @param neg  is that negative
+ * @param type  the type of range
+ * @param start  the start codepoint
+ * @param end  the end codepoint
+ * @returns the new range or NULL in case of error
  */
 static xmlRegRangePtr
 xmlRegNewRange(xmlRegParserCtxtPtr ctxt,
@@ -724,10 +775,9 @@ xmlRegNewRange(xmlRegParserCtxtPtr ctxt,
 }
 
 /**
- * xmlRegFreeRange:
- * @range:  the regexp range
- *
  * Free a regexp range
+ *
+ * @param range  the regexp range
  */
 static void
 xmlRegFreeRange(xmlRegRangePtr range) {
@@ -740,12 +790,11 @@ xmlRegFreeRange(xmlRegRangePtr range) {
 }
 
 /**
- * xmlRegCopyRange:
- * @range:  the regexp range
- *
  * Copy a regexp range
  *
- * Returns the new copy or NULL in case of error.
+ * @param ctxt  regexp parser context
+ * @param range  the regexp range
+ * @returns the new copy or NULL in case of error.
  */
 static xmlRegRangePtr
 xmlRegCopyRange(xmlRegParserCtxtPtr ctxt, xmlRegRangePtr range) {
@@ -770,13 +819,11 @@ xmlRegCopyRange(xmlRegParserCtxtPtr ctxt
 }
 
 /**
- * xmlRegNewAtom:
- * @ctxt:  the regexp parser context
- * @type:  the type of atom
- *
  * Allocate a new atom
  *
- * Returns the new atom or NULL in case of error
+ * @param ctxt  the regexp parser context
+ * @param type  the type of atom
+ * @returns the new atom or NULL in case of error
  */
 static xmlRegAtomPtr
 xmlRegNewAtom(xmlRegParserCtxtPtr ctxt, xmlRegAtomType type) {
@@ -796,10 +843,9 @@ xmlRegNewAtom(xmlRegParserCtxtPtr ctxt,
 }
 
 /**
- * xmlRegFreeAtom:
- * @atom:  the regexp atom
- *
  * Free a regexp atom
+ *
+ * @param atom  the regexp atom
  */
 static void
 xmlRegFreeAtom(xmlRegAtomPtr atom) {
@@ -822,13 +868,11 @@ xmlRegFreeAtom(xmlRegAtomPtr atom) {
 }
 
 /**
- * xmlRegCopyAtom:
- * @ctxt:  the regexp parser context
- * @atom:  the original atom
- *
  * Allocate a new regexp range
  *
- * Returns the new atom or NULL in case of error
+ * @param ctxt  the regexp parser context
+ * @param atom  the original atom
+ * @returns the new atom or NULL in case of error
  */
 static xmlRegAtomPtr
 xmlRegCopyAtom(xmlRegParserCtxtPtr ctxt, xmlRegAtomPtr atom) {
@@ -883,10 +927,9 @@ xmlRegNewState(xmlRegParserCtxtPtr ctxt)
 }
 
 /**
- * xmlRegFreeState:
- * @state:  the regexp state
- *
  * Free a regexp state
+ *
+ * @param state  the regexp state
  */
 static void
 xmlRegFreeState(xmlRegStatePtr state) {
@@ -901,10 +944,9 @@ xmlRegFreeState(xmlRegStatePtr state) {
 }
 
 /**
- * xmlRegFreeParserCtxt:
- * @ctxt:  the regexp parser context
- *
  * Free a regexp parser context
+ *
+ * @param ctxt  the regexp parser context
  */
 static void
 xmlRegFreeParserCtxt(xmlRegParserCtxtPtr ctxt) {
@@ -1275,12 +1317,11 @@ xmlRegPrintStateCompact(FILE* output, xm
 }
 
 /*
- * xmlRegPrintCompact
- * @output an output stream
- * @regexp the regexp instance
+ * @param output  an output stream
+ * @param regexp  the regexp instance
  * 
  * Print the compact representation of a regexp, in the same fashion as the
- * public xmlRegexpPrint function.
+ * public #xmlRegexpPrint function.
  */
 static void
 xmlRegPrintCompact(FILE* output, xmlRegexpPtr regexp)
@@ -1563,12 +1604,10 @@ xmlRegStatePush(xmlRegParserCtxtPtr ctxt
 }
 
 /**
- * xmlFAGenerateAllTransition:
- * @ctxt:  a regexp parser context
- * @from:  the from state
- * @to:  the target state or NULL for building a new one
- * @lax:
- *
+ * @param ctxt  a regexp parser context
+ * @param from  the from state
+ * @param to  the target state or NULL for building a new one
+ * @param lax  
  */
 static int
 xmlFAGenerateAllTransition(xmlRegParserCtxtPtr ctxt,
@@ -1588,11 +1627,9 @@ xmlFAGenerateAllTransition(xmlRegParserC
 }
 
 /**
- * xmlFAGenerateEpsilonTransition:
- * @ctxt:  a regexp parser context
- * @from:  the from state
- * @to:  the target state or NULL for building a new one
- *
+ * @param ctxt  a regexp parser context
+ * @param from  the from state
+ * @param to  the target state or NULL for building a new one
  */
 static int
 xmlFAGenerateEpsilonTransition(xmlRegParserCtxtPtr ctxt,
@@ -1608,12 +1645,10 @@ xmlFAGenerateEpsilonTransition(xmlRegPar
 }
 
 /**
- * xmlFAGenerateCountedEpsilonTransition:
- * @ctxt:  a regexp parser context
- * @from:  the from state
- * @to:  the target state or NULL for building a new one
- * counter:  the counter for that transition
- *
+ * @param ctxt  a regexp parser context
+ * @param from  the from state
+ * @param to  the target state or NULL for building a new one
+ * @param counter  the counter for that transition
  */
 static int
 xmlFAGenerateCountedEpsilonTransition(xmlRegParserCtxtPtr ctxt,
@@ -1629,12 +1664,10 @@ xmlFAGenerateCountedEpsilonTransition(xm
 }
 
 /**
- * xmlFAGenerateCountedTransition:
- * @ctxt:  a regexp parser context
- * @from:  the from state
- * @to:  the target state or NULL for building a new one
- * counter:  the counter for that transition
- *
+ * @param ctxt  a regexp parser context
+ * @param from  the from state
+ * @param to  the target state or NULL for building a new one
+ * @param counter  the counter for that transition
  */
 static int
 xmlFAGenerateCountedTransition(xmlRegParserCtxtPtr ctxt,
@@ -1650,13 +1683,11 @@ xmlFAGenerateCountedTransition(xmlRegPar
 }
 
 /**
- * xmlFAGenerateTransitions:
- * @ctxt:  a regexp parser context
- * @from:  the from state
- * @to:  the target state or NULL for building a new one
- * @atom:  the atom generating the transition
- *
- * Returns 0 if success and -1 in case of error.
+ * @param ctxt  a regexp parser context
+ * @param from  the from state
+ * @param to  the target state or NULL for building a new one
+ * @param atom  the atom generating the transition
+ * @returns 0 if success and -1 in case of error.
  */
 static int
 xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
@@ -1883,12 +1914,10 @@ xmlFAGenerateTransitions(xmlRegParserCtx
 }
 
 /**
- * xmlFAReduceEpsilonTransitions:
- * @ctxt:  a regexp parser context
- * @fromnr:  the from state
- * @tonr:  the to state
- * @counter:  should that transition be associated to a counted
- *
+ * @param ctxt  a regexp parser context
+ * @param fromnr  the from state
+ * @param tonr  the to state
+ * @param counter  should that transition be associated to a counted
  */
 static void
 xmlFAReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int fromnr,
@@ -1945,12 +1974,8 @@ xmlFAReduceEpsilonTransitions(xmlRegPars
 }
 
 /**
- * xmlFAFinishReduceEpsilonTransitions:
- * @ctxt:  a regexp parser context
- * @fromnr:  the from state
- * @tonr:  the to state
- * @counter:  should that transition be associated to a counted
- *
+ * @param ctxt  a regexp parser context
+ * @param tonr  the to state
  */
 static void
 xmlFAFinishReduceEpsilonTransitions(xmlRegParserCtxtPtr ctxt, int tonr) {
@@ -1973,9 +1998,6 @@ xmlFAFinishReduceEpsilonTransitions(xmlR
 }
 
 /**
- * xmlFAEliminateSimpleEpsilonTransitions:
- * @ctxt:  a regexp parser context
- *
  * Eliminating general epsilon transitions can get costly in the general
  * algorithm due to the large amount of generated new transitions and
  * associated comparisons. However for simple epsilon transition used just
@@ -1992,6 +2014,8 @@ xmlFAFinishReduceEpsilonTransitions(xmlR
  * eliminating state 2:
  * State 1 has a transition with an atom to state 2.
  * State 2 is final and has an epsilon transition to state 1.
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAEliminateSimpleEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
@@ -2042,9 +2066,7 @@ xmlFAEliminateSimpleEpsilonTransitions(x
     }
 }
 /**
- * xmlFAEliminateEpsilonTransitions:
- * @ctxt:  a regexp parser context
- *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAEliminateEpsilonTransitions(xmlRegParserCtxtPtr ctxt) {
@@ -2344,14 +2366,12 @@ xmlFACompareRanges(xmlRegRangePtr range1
 }
 
 /**
- * xmlFACompareAtomTypes:
- * @type1:  an atom type
- * @type2:  an atom type
- *
  * Compares two atoms type to check whether they intersect in some ways,
  * this is used by xmlFACompareAtoms only
  *
- * Returns 1 if they may intersect and 0 otherwise
+ * @param type1  an atom type
+ * @param type2  an atom type
+ * @returns 1 if they may intersect and 0 otherwise
  */
 static int
 xmlFACompareAtomTypes(xmlRegAtomType type1, xmlRegAtomType type2) {
@@ -2545,15 +2565,13 @@ xmlFACompareAtomTypes(xmlRegAtomType typ
 }
 
 /**
- * xmlFAEqualAtoms:
- * @atom1:  an atom
- * @atom2:  an atom
- * @deep: if not set only compare string pointers
- *
  * Compares two atoms to check whether they are the same exactly
  * this is used to remove equivalent transitions
  *
- * Returns 1 if same and 0 otherwise
+ * @param atom1  an atom
+ * @param atom2  an atom
+ * @param deep  if not set only compare string pointers
+ * @returns 1 if same and 0 otherwise
  */
 static int
 xmlFAEqualAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) {
@@ -2590,15 +2608,13 @@ xmlFAEqualAtoms(xmlRegAtomPtr atom1, xml
 }
 
 /**
- * xmlFACompareAtoms:
- * @atom1:  an atom
- * @atom2:  an atom
- * @deep: if not set only compare string pointers
- *
  * Compares two atoms to check whether they intersect in some ways,
  * this is used by xmlFAComputesDeterminism and xmlFARecurseDeterminism only
  *
- * Returns 1 if yes and 0 otherwise
+ * @param atom1  an atom
+ * @param atom2  an atom
+ * @param deep  if not set only compare string pointers
+ * @returns 1 if yes and 0 otherwise
  */
 static int
 xmlFACompareAtoms(xmlRegAtomPtr atom1, xmlRegAtomPtr atom2, int deep) {
@@ -2689,12 +2705,14 @@ not_determinist:
 }
 
 /**
- * xmlFARecurseDeterminism:
- * @ctxt:  a regexp parser context
- *
  * Check whether the associated regexp is determinist,
- * should be called after xmlFAEliminateEpsilonTransitions()
+ * should be called after xmlFAEliminateEpsilonTransitions
  *
+ * @param ctxt  a regexp parser context
+ * @param state  regexp state
+ * @param fromnr  the from state
+ * @param tonr  the to state
+ * @param atom  the atom
  */
 static int
 xmlFARecurseDeterminism(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state,
@@ -2748,10 +2766,10 @@ xmlFARecurseDeterminism(xmlRegParserCtxt
 }
 
 /**
- * xmlFAFinishRecurseDeterminism:
- * @ctxt:  a regexp parser context
- *
  * Reset flags after checking determinism.
+ *
+ * @param ctxt  a regexp parser context
+ * @param state  regexp state
  */
 static void
 xmlFAFinishRecurseDeterminism(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr state) {
@@ -2772,12 +2790,10 @@ xmlFAFinishRecurseDeterminism(xmlRegPars
 }
 
 /**
- * xmlFAComputesDeterminism:
- * @ctxt:  a regexp parser context
- *
  * Check whether the associated regexp is determinist,
- * should be called after xmlFAEliminateEpsilonTransitions()
+ * should be called after xmlFAEliminateEpsilonTransitions
  *
+ * @param ctxt  a regexp parser context
  */
 static int
 xmlFAComputesDeterminism(xmlRegParserCtxtPtr ctxt) {
@@ -3581,18 +3597,18 @@ error:
  ************************************************************************/
 
 /**
- * xmlRegNewExecCtxt:
- * @comp: a precompiled regular expression
- * @callback: a callback function used for handling progresses in the
- *            automata matching phase
- * @data: the context data associated to the callback in this context
- *
  * Build a context used for progressive evaluation of a regexp.
  *
- * Returns the new context
+ * @deprecated Internal function, don't use.
+ *
+ * @param comp  a precompiled regular expression
+ * @param callback  a callback function used for handling progresses in the
+ *            automata matching phase
+ * @param data  the context data associated to the callback in this context
+ * @returns the new context
  */
-xmlRegExecCtxtPtr
-xmlRegNewExecCtxt(xmlRegexpPtr comp, xmlRegExecCallbacks callback, void *data) {
+xmlRegExecCtxt *
+xmlRegNewExecCtxt(xmlRegexp *comp, xmlRegExecCallbacks callback, void *data) {
     xmlRegExecCtxtPtr exec;
 
     if (comp == NULL)
@@ -3644,13 +3660,14 @@ xmlRegNewExecCtxt(xmlRegexpPtr comp, xml
 }
 
 /**
- * xmlRegFreeExecCtxt:
- * @exec: a regular expression evaluation context
- *
  * Free the structures associated to a regular expression evaluation context.
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param exec  a regular expression evaluation context
  */
 void
-xmlRegFreeExecCtxt(xmlRegExecCtxtPtr exec) {
+xmlRegFreeExecCtxt(xmlRegExecCtxt *exec) {
     if (exec == NULL)
 	return;
 
@@ -3737,15 +3754,13 @@ xmlFARegExecSaveInputString(xmlRegExecCt
 }
 
 /**
- * xmlRegStrEqualWildcard:
- * @expStr:  the string to be evaluated
- * @valStr:  the validation string
- *
  * Checks if both strings are equal or have the same content. "*"
- * can be used as a wildcard in @valStr; "|" is used as a separator of
- * substrings in both @expStr and @valStr.
+ * can be used as a wildcard in `valStr`; "|" is used as a separator of
+ * substrings in both `expStr` and `valStr`.
  *
- * Returns 1 if the comparison is satisfied and the number of substrings
+ * @param expStr  the string to be evaluated
+ * @param valStr  the validation string
+ * @returns 1 if the comparison is satisfied and the number of substrings
  * is equal, 0 otherwise.
  */
 
@@ -3787,15 +3802,13 @@ xmlRegStrEqualWildcard(const xmlChar *ex
 }
 
 /**
- * xmlRegCompactPushString:
- * @exec: a regexp execution context
- * @comp:  the precompiled exec with a compact table
- * @value: a string token input
- * @data: data associated to the token to reuse in callbacks
- *
  * Push one input token in the execution context
  *
- * Returns: 1 if the regexp reached a final state, 0 if non-final, and
+ * @param exec  a regexp execution context
+ * @param comp  the precompiled exec with a compact table
+ * @param value  a string token input
+ * @param data  data associated to the token to reuse in callbacks
+ * @returns 1 if the regexp reached a final state, 0 if non-final, and
  *     a negative value in case of error.
  */
 static int
@@ -3855,15 +3868,13 @@ error:
 }
 
 /**
- * xmlRegExecPushStringInternal:
- * @exec: a regexp execution context or NULL to indicate the end
- * @value: a string token input
- * @data: data associated to the token to reuse in callbacks
- * @compound: value was assembled from 2 strings
- *
  * Push one input token in the execution context
  *
- * Returns: 1 if the regexp reached a final state, 0 if non-final, and
+ * @param exec  a regexp execution context or NULL to indicate the end
+ * @param value  a string token input
+ * @param data  data associated to the token to reuse in callbacks
+ * @param compound  value was assembled from 2 strings
+ * @returns 1 if the regexp reached a final state, 0 if non-final, and
  *     a negative value in case of error.
  */
 static int
@@ -4167,36 +4178,36 @@ progress:
 }
 
 /**
- * xmlRegExecPushString:
- * @exec: a regexp execution context or NULL to indicate the end
- * @value: a string token input
- * @data: data associated to the token to reuse in callbacks
- *
  * Push one input token in the execution context
  *
- * Returns: 1 if the regexp reached a final state, 0 if non-final, and
+ * @deprecated Internal function, don't use.
+ *
+ * @param exec  a regexp execution context or NULL to indicate the end
+ * @param value  a string token input
+ * @param data  data associated to the token to reuse in callbacks
+ * @returns 1 if the regexp reached a final state, 0 if non-final, and
  *     a negative value in case of error.
  */
 int
-xmlRegExecPushString(xmlRegExecCtxtPtr exec, const xmlChar *value,
+xmlRegExecPushString(xmlRegExecCtxt *exec, const xmlChar *value,
 	             void *data) {
     return(xmlRegExecPushStringInternal(exec, value, data, 0));
 }
 
 /**
- * xmlRegExecPushString2:
- * @exec: a regexp execution context or NULL to indicate the end
- * @value: the first string token input
- * @value2: the second string token input
- * @data: data associated to the token to reuse in callbacks
- *
  * Push one input token in the execution context
  *
- * Returns: 1 if the regexp reached a final state, 0 if non-final, and
+ * @deprecated Internal function, don't use.
+ *
+ * @param exec  a regexp execution context or NULL to indicate the end
+ * @param value  the first string token input
+ * @param value2  the second string token input
+ * @param data  data associated to the token to reuse in callbacks
+ * @returns 1 if the regexp reached a final state, 0 if non-final, and
  *     a negative value in case of error.
  */
 int
-xmlRegExecPushString2(xmlRegExecCtxtPtr exec, const xmlChar *value,
+xmlRegExecPushString2(xmlRegExecCtxt *exec, const xmlChar *value,
                       const xmlChar *value2, void *data) {
     xmlChar buf[150];
     int lenn, lenp, ret;
@@ -4240,18 +4251,16 @@ xmlRegExecPushString2(xmlRegExecCtxtPtr
 }
 
 /**
- * xmlRegExecGetValues:
- * @exec: a regexp execution context
- * @err: error extraction or normal one
- * @nbval: pointer to the number of accepted values IN/OUT
- * @nbneg: return number of negative transitions
- * @values: pointer to the array of acceptable values
- * @terminal: return value if this was a terminal state
- *
- * Extract information from the regexp execution, internal routine to
- * implement xmlRegExecNextValues() and xmlRegExecErrInfo()
+ * Extract information from the regexp execution. Internal routine to
+ * implement #xmlRegExecNextValues and #xmlRegExecErrInfo
  *
- * Returns: 0 in case of success or -1 in case of error.
+ * @param exec  a regexp execution context
+ * @param err  error extraction or normal one
+ * @param nbval  pointer to the number of accepted values IN/OUT
+ * @param nbneg  return number of negative transitions
+ * @param values  pointer to the array of acceptable values
+ * @param terminal  return value if this was a terminal state
+ * @returns 0 in case of success or -1 in case of error.
  */
 static int
 xmlRegExecGetValues(xmlRegExecCtxtPtr exec, int err,
@@ -4398,49 +4407,49 @@ xmlRegExecGetValues(xmlRegExecCtxtPtr ex
 }
 
 /**
- * xmlRegExecNextValues:
- * @exec: a regexp execution context
- * @nbval: pointer to the number of accepted values IN/OUT
- * @nbneg: return number of negative transitions
- * @values: pointer to the array of acceptable values
- * @terminal: return value if this was a terminal state
- *
- * Extract information from the regexp execution,
- * the parameter @values must point to an array of @nbval string pointers
+ * Extract information 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
- * returned will be freed with the @exec context and don't need to be
+ * state and the `values` array will be updated with them. The string values
+ * returned will be freed with the `exec` context and don't need to be
  * deallocated.
  *
- * Returns: 0 in case of success or -1 in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param exec  a regexp execution context
+ * @param nbval  pointer to the number of accepted values IN/OUT
+ * @param nbneg  return number of negative transitions
+ * @param values  pointer to the array of acceptable values
+ * @param terminal  return value if this was a terminal state
+ * @returns 0 in case of success or -1 in case of error.
  */
 int
-xmlRegExecNextValues(xmlRegExecCtxtPtr exec, int *nbval, int *nbneg,
+xmlRegExecNextValues(xmlRegExecCtxt *exec, int *nbval, int *nbneg,
                      xmlChar **values, int *terminal) {
     return(xmlRegExecGetValues(exec, 0, nbval, nbneg, values, terminal));
 }
 
 /**
- * xmlRegExecErrInfo:
- * @exec: a regexp execution context generating an error
- * @string: return value for the error string
- * @nbval: pointer to the number of accepted values IN/OUT
- * @nbneg: return number of negative transitions
- * @values: pointer to the array of acceptable values
- * @terminal: return value if this was a terminal state
- *
- * Extract error information 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
+ * Extract error information 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
- * returned will be freed with the @exec context and don't need to be
+ * state and the `values` array will be updated with them. The string values
+ * returned will be freed with the `exec` context and don't need to be
  * deallocated.
  *
- * Returns: 0 in case of success or -1 in case of error.
+ * @deprecated Internal function, don't use.
+ *
+ * @param exec  a regexp execution context generating an error
+ * @param string  return value for the error string
+ * @param nbval  pointer to the number of accepted values IN/OUT
+ * @param nbneg  return number of negative transitions
+ * @param values  pointer to the array of acceptable values
+ * @param terminal  return value if this was a terminal state
+ * @returns 0 in case of success or -1 in case of error.
  */
 int
-xmlRegExecErrInfo(xmlRegExecCtxtPtr exec, const xmlChar **string,
+xmlRegExecErrInfo(xmlRegExecCtxt *exec, const xmlChar **string,
                   int *nbval, int *nbneg, xmlChar **values, int *terminal) {
     if (exec == NULL)
         return(-1);
@@ -4453,6 +4462,22 @@ xmlRegExecErrInfo(xmlRegExecCtxtPtr exec
     return(xmlRegExecGetValues(exec, 1, nbval, nbneg, values, terminal));
 }
 
+/**
+ * Clear errors in the context, allowing to recover
+ * from errors on specific scenarios
+ *
+ * @param exec  a regexp execution context
+ * @remarks it doesn's reset the last internal libxml2 error
+ */
+void
+xmlRegExecClearErrors(xmlRegExecCtxt* exec) {
+    exec->status = 0;
+    exec->errState = NULL;
+    exec->errStateNo = -1;
+    xmlFree(exec->errString);
+    exec->errString = NULL;
+}
+
 /************************************************************************
  *									*
  *	Parser for the Schemas Datatype Regular Expressions		*
@@ -4461,10 +4486,9 @@ xmlRegExecErrInfo(xmlRegExecCtxtPtr exec
  ************************************************************************/
 
 /**
- * xmlFAIsChar:
- * @ctxt:  a regexp parser context
+ * [10]   Char   ::=   [^.\?*+()|\#x5B\#x5D]
  *
- * [10]   Char   ::=   [^.\?*+()|#x5B#x5D]
+ * @param ctxt  a regexp parser context
  */
 static int
 xmlFAIsChar(xmlRegParserCtxtPtr ctxt) {
@@ -4486,9 +4510,6 @@ xmlFAIsChar(xmlRegParserCtxtPtr ctxt) {
 }
 
 /**
- * xmlFAParseCharProp:
- * @ctxt:  a regexp parser context
- *
  * [27]   charProp   ::=   IsCategory | IsBlock
  * [28]   IsCategory ::= Letters | Marks | Numbers | Punctuation |
  *                       Separators | Symbols | Others
@@ -4499,7 +4520,9 @@ xmlFAIsChar(xmlRegParserCtxtPtr ctxt) {
  * [33]   Separators   ::=   'Z' [slp]?
  * [34]   Symbols   ::=   'S' [mcko]?
  * [35]   Others   ::=   'C' [cfon]?
- * [36]   IsBlock   ::=   'Is' [a-zA-Z0-9#x2D]+
+ * [36]   IsBlock   ::=   'Is' [a-zA-Z0-9\#x2D]+
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParseCharProp(xmlRegParserCtxtPtr ctxt) {
@@ -4757,14 +4780,15 @@ static int parse_escaped_codepoint(xmlRe
 }
 
 /**
- * xmlFAParseCharClassEsc:
- * @ctxt:  a regexp parser context
- *
+ * ```
  * [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
- * [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E]
+ * [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}\#x2D\#x5B\#x5D\#x5E]
  * [25] catEsc   ::=   '\p{' charProp '}'
  * [26] complEsc ::=   '\P{' charProp '}'
  * [37] MultiCharEsc ::= '.' | ('\' [sSiIcCdDwW])
+ * ```
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParseCharClassEsc(xmlRegParserCtxtPtr ctxt) {
@@ -4927,14 +4951,15 @@ xmlFAParseCharClassEsc(xmlRegParserCtxtP
 }
 
 /**
- * xmlFAParseCharRange:
- * @ctxt:  a regexp parser context
- *
+ * ```
  * [17]   charRange   ::=     seRange | XmlCharRef | XmlCharIncDash
  * [18]   seRange   ::=   charOrEsc '-' charOrEsc
  * [20]   charOrEsc   ::=   XmlChar | SingleCharEsc
- * [21]   XmlChar   ::=   [^\#x2D#x5B#x5D]
- * [22]   XmlCharIncDash   ::=   [^\#x5B#x5D]
+ * [21]   XmlChar   ::=   [^\\#x2D\#x5B\#x5D]
+ * [22]   XmlCharIncDash   ::=   [^\\#x5B\#x5D]
+ * ```
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParseCharRange(xmlRegParserCtxtPtr ctxt) {
@@ -5032,10 +5057,9 @@ xmlFAParseCharRange(xmlRegParserCtxtPtr
 }
 
 /**
- * xmlFAParsePosCharGroup:
- * @ctxt:  a regexp parser context
- *
  * [14]   posCharGroup ::= ( charRange | charClassEsc  )+
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParsePosCharGroup(xmlRegParserCtxtPtr ctxt) {
@@ -5050,13 +5074,12 @@ xmlFAParsePosCharGroup(xmlRegParserCtxtP
 }
 
 /**
- * xmlFAParseCharGroup:
- * @ctxt:  a regexp parser context
- *
  * [13]   charGroup    ::= posCharGroup | negCharGroup | charClassSub
  * [15]   negCharGroup ::= '^' posCharGroup
  * [16]   charClassSub ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
  * [12]   charClassExpr ::= '[' charGroup ']'
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParseCharGroup(xmlRegParserCtxtPtr ctxt) {
@@ -5088,11 +5111,10 @@ xmlFAParseCharGroup(xmlRegParserCtxtPtr
 }
 
 /**
- * xmlFAParseCharClass:
- * @ctxt:  a regexp parser context
- *
  * [11]   charClass   ::=     charClassEsc | charClassExpr
  * [12]   charClassExpr   ::=   '[' charGroup ']'
+ *
+ * @param ctxt  a regexp parser context
  */
 static void
 xmlFAParseCharClass(xmlRegParserCtxtPtr ctxt) {
@@ -5113,12 +5135,10 @@ xmlFAParseCharClass(xmlRegParserCtxtPtr
 }
 
 /**
- * xmlFAParseQuantExact:
- * @ctxt:  a regexp parser context
- *
  * [8]   QuantExact   ::=   [0-9]+
  *
- * Returns 0 if success or -1 in case of error
+ * @param ctxt  a regexp parser context
+ * @returns 0 if success or -1 in case of error
  */
 static int
 xmlFAParseQuantExact(xmlRegParserCtxtPtr ctxt) {
@@ -5148,14 +5168,13 @@ xmlFAParseQuantExact(xmlRegParserCtxtPtr
 }
 
 /**
- * xmlFAParseQuantifier:
- * @ctxt:  a regexp parser context
- *
  * [4]   quantifier   ::=   [?*+] | ( '{' quantity '}' )
  * [5]   quantity   ::=   quantRange | quantMin | QuantExact
  * [6]   quantRange   ::=   QuantExact ',' QuantExact
  * [7]   quantMin   ::=   QuantExact ','
  * [8]   QuantExact   ::=   [0-9]+
+ *
+ * @param ctxt  a regexp parser context
  */
 static int
 xmlFAParseQuantifier(xmlRegParserCtxtPtr ctxt) {
@@ -5215,10 +5234,9 @@ xmlFAParseQuantifier(xmlRegParserCtxtPtr
 }
 
 /**
- * xmlFAParseAtom:
- * @ctxt:  a regexp parser context
- *
  * [9]   atom   ::=   Char | charClass | ( '(' regExp ')' )
+ *
+ * @param ctxt  a regexp parser context
  */
 static int
 xmlFAParseAtom(xmlRegParserCtxtPtr ctxt) {
@@ -5287,10 +5305,9 @@ xmlFAParseAtom(xmlRegParserCtxtPtr ctxt)
 }
 
 /**
- * xmlFAParsePiece:
- * @ctxt:  a regexp parser context
- *
  * [3]   piece   ::=   atom quantifier?
+ *
+ * @param ctxt  a regexp parser context
  */
 static int
 xmlFAParsePiece(xmlRegParserCtxtPtr ctxt) {
@@ -5308,14 +5325,13 @@ xmlFAParsePiece(xmlRegParserCtxtPtr ctxt
 }
 
 /**
- * xmlFAParseBranch:
- * @ctxt:  a regexp parser context
- * @to: optional target to the end of the branch
- *
- * @to is used to optimize by removing duplicate path in automata
+ * `to` is used to optimize by removing duplicate path in automata
  * in expressions like (a|b)(c|d)
  *
  * [2]   branch   ::=   piece*
+ *
+ * @param ctxt  a regexp parser context
+ * @param to  optional target to the end of the branch
  */
 static int
 xmlFAParseBranch(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr to) {
@@ -5356,11 +5372,10 @@ xmlFAParseBranch(xmlRegParserCtxtPtr ctx
 }
 
 /**
- * xmlFAParseRegExp:
- * @ctxt:  a regexp parser context
- * @top:  is this the top-level expression ?
- *
  * [1]   regExp   ::=     branch  ( '|' branch )*
+ *
+ * @param ctxt  a regexp parser context
+ * @param top  is this the top-level expression ?
  */
 static void
 xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top) {
@@ -5397,30 +5412,29 @@ xmlFAParseRegExp(xmlRegParserCtxtPtr ctx
  ************************************************************************/
 
 /**
- * xmlRegexpPrint:
- * @output: the file for the output debug
- * @regexp: the compiled regexp
+ * No-op since 2.14.0.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * No-op since 2.14.0.
+ * @param output  the file for the output debug
+ * @param regexp  the compiled regexp
  */
 void
 xmlRegexpPrint(FILE *output ATTRIBUTE_UNUSED,
-               xmlRegexpPtr regexp ATTRIBUTE_UNUSED) {
+               xmlRegexp *regexp ATTRIBUTE_UNUSED) {
 }
 
 /**
- * xmlRegexpCompile:
- * @regexp:  a regular expression string
+ * Parses an XML Schemas regular expression.
  *
  * 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
+ * that regular expression.
  *
- * Returns the compiled expression or NULL in case of error
+ * @param regexp  a regular expression string
+ * @returns the compiled expression or NULL in case of error
  */
-xmlRegexpPtr
+xmlRegexp *
 xmlRegexpCompile(const xmlChar *regexp) {
     xmlRegexpPtr ret = NULL;
     xmlRegParserCtxtPtr ctxt;
@@ -5464,31 +5478,36 @@ error:
 }
 
 /**
- * xmlRegexpExec:
- * @comp:  the compiled regular expression
- * @content:  the value to check against the regular expression
- *
- * Check if the regular expression generates the value
+ * Check if the regular expression matches a string.
  *
- * Returns 1 if it matches, 0 if not and a negative value in case of error
+ * @param comp  the compiled regular expression
+ * @param content  the value to check against the regular expression
+ * @returns 1 if it matches, 0 if not and a negative value in case of error
  */
 int
-xmlRegexpExec(xmlRegexpPtr comp, const xmlChar *content) {
+xmlRegexpExec(xmlRegexp *comp, const xmlChar *content) {
     if ((comp == NULL) || (content == NULL))
 	return(-1);
     return(xmlFARegExec(comp, content));
 }
 
 /**
- * xmlRegexpIsDeterminist:
- * @comp:  the compiled regular expression
+ * Check if the regular expression is deterministic.
+ *
+ * DTD and XML Schemas require a deterministic content model,
+ * so the automaton compiled from the regex must be a DFA.
+ *
+ * The runtime of this function is quadratic in the number of
+ * outgoing edges, causing serious worst-case performance issues.
  *
- * Check if the regular expression is determinist
+ * @deprecated: Internal function, don't use.
  *
- * Returns 1 if it yes, 0 if not and a negative value in case of error
+ * @param comp  the compiled regular expression
+ * @returns 1 if it yes, 0 if not and a negative value in case
+ * of error
  */
 int
-xmlRegexpIsDeterminist(xmlRegexpPtr comp) {
+xmlRegexpIsDeterminist(xmlRegexp *comp) {
     xmlAutomataPtr am;
     int ret;
 
@@ -5522,13 +5541,12 @@ xmlRegexpIsDeterminist(xmlRegexpPtr comp
 }
 
 /**
- * xmlRegFreeRegexp:
- * @regexp:  the regexp
+ * Free a regexp.
  *
- * Free a regexp
+ * @param regexp  the regexp
  */
 void
-xmlRegFreeRegexp(xmlRegexpPtr regexp) {
+xmlRegFreeRegexp(xmlRegexp *regexp) {
     int i;
     if (regexp == NULL)
 	return;
@@ -5567,13 +5585,13 @@ xmlRegFreeRegexp(xmlRegexpPtr regexp) {
  ************************************************************************/
 
 /**
- * xmlNewAutomata:
- *
  * Create a new automata
  *
- * Returns the new object or NULL in case of failure
+ * @deprecated Internal function, don't use.
+ *
+ * @returns the new object or NULL in case of failure
  */
-xmlAutomataPtr
+xmlAutomata *
 xmlNewAutomata(void) {
     xmlAutomataPtr ctxt;
 
@@ -5597,58 +5615,60 @@ xmlNewAutomata(void) {
 }
 
 /**
- * xmlFreeAutomata:
- * @am: an automata
- *
  * Free an automata
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
  */
 void
-xmlFreeAutomata(xmlAutomataPtr am) {
+xmlFreeAutomata(xmlAutomata *am) {
     if (am == NULL)
 	return;
     xmlRegFreeParserCtxt(am);
 }
 
 /**
- * xmlAutomataSetFlags:
- * @am: an automata
- * @flags:  a set of internal flags
- *
  * Set some flags on the automata
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param flags  a set of internal flags
  */
 void
-xmlAutomataSetFlags(xmlAutomataPtr am, int flags) {
+xmlAutomataSetFlags(xmlAutomata *am, int flags) {
     if (am == NULL)
 	return;
     am->flags |= flags;
 }
 
 /**
- * xmlAutomataGetInitState:
- * @am: an automata
- *
  * Initial state lookup
  *
- * Returns the initial state of the automata
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @returns the initial state of the automata
  */
-xmlAutomataStatePtr
-xmlAutomataGetInitState(xmlAutomataPtr am) {
+xmlAutomataState *
+xmlAutomataGetInitState(xmlAutomata *am) {
     if (am == NULL)
 	return(NULL);
     return(am->start);
 }
 
 /**
- * xmlAutomataSetFinalState:
- * @am: an automata
- * @state: a state in this automata
- *
  * Makes that state a final state
  *
- * Returns 0 or -1 in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param state  a state in this automata
+ * @returns 0 or -1 in case of error
  */
 int
-xmlAutomataSetFinalState(xmlAutomataPtr am, xmlAutomataStatePtr state) {
+xmlAutomataSetFinalState(xmlAutomata *am, xmlAutomataState *state) {
     if ((am == NULL) || (state == NULL))
 	return(-1);
     state->type = XML_REGEXP_FINAL_STATE;
@@ -5656,22 +5676,24 @@ xmlAutomataSetFinalState(xmlAutomataPtr
 }
 
 /**
- * xmlAutomataNewTransition:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the input string associated to that transition
- * @data: data passed to the callback function if the transition is activated
- *
- * 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
- *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewTransition(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			 xmlAutomataStatePtr to, const xmlChar *token,
+ * Add a transition.
+ *
+ * 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`
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the input string associated to that transition
+ * @param data  data passed to the callback function if the transition is activated
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewTransition(xmlAutomata *am, xmlAutomataState *from,
+			 xmlAutomataState *to, const xmlChar *token,
 			 void *data) {
     xmlRegAtomPtr atom;
 
@@ -5698,23 +5720,23 @@ xmlAutomataNewTransition(xmlAutomataPtr
 }
 
 /**
- * xmlAutomataNewTransition2:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the first input string associated to that transition
- * @token2: the second input string associated to that transition
- * @data: data passed to the callback function if the transition is activated
- *
- * 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
- *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewTransition2(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			  xmlAutomataStatePtr to, const xmlChar *token,
+ * 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`
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the first input string associated to that transition
+ * @param token2  the second input string associated to that transition
+ * @param data  data passed to the callback function if the transition is activated
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewTransition2(xmlAutomata *am, xmlAutomataState *from,
+			  xmlAutomataState *to, const xmlChar *token,
 			  const xmlChar *token2, void *data) {
     xmlRegAtomPtr atom;
 
@@ -5756,25 +5778,25 @@ xmlAutomataNewTransition2(xmlAutomataPtr
 }
 
 /**
- * xmlAutomataNewNegTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the first input string associated to that transition
- * @token2: the second input string associated to that transition
- * @data: data passed to the callback function if the transition is activated
- *
- * 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 any value except (@token,@token2)
- * Note that if @token2 is not NULL, then (X, NULL) won't match to follow
- # the semantic of XSD ##other
- *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewNegTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-		       xmlAutomataStatePtr to, const xmlChar *token,
+ * 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 any value except (`token`,`token2`)
+ * Note that if `token2` is not NULL, then (X, NULL) won't match to follow
+ * the semantic of XSD \#\#other
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the first input string associated to that transition
+ * @param token2  the second input string associated to that transition
+ * @param data  data passed to the callback function if the transition is activated
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewNegTrans(xmlAutomata *am, xmlAutomataState *from,
+		       xmlAutomataState *to, const xmlChar *token,
 		       const xmlChar *token2, void *data) {
     xmlRegAtomPtr atom;
     xmlChar err_msg[200];
@@ -5822,26 +5844,26 @@ xmlAutomataNewNegTrans(xmlAutomataPtr am
 }
 
 /**
- * xmlAutomataNewCountTrans2:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the input string associated to that transition
- * @token2: the second input string associated to that transition
- * @min:  the minimum successive occurrences of token
- * @max:  the maximum successive occurrences of token
- * @data:  data associated to the transition
- *
- * 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
- *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewCountTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			 xmlAutomataStatePtr to, const xmlChar *token,
+ * 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`
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the input string associated to that transition
+ * @param token2  the second input string associated to that transition
+ * @param min  the minimum successive occurrences of token
+ * @param max  the maximum successive occurrences of token
+ * @param data  data associated to the transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewCountTrans2(xmlAutomata *am, xmlAutomataState *from,
+			 xmlAutomataState *to, const xmlChar *token,
 			 const xmlChar *token2,
 			 int min, int max, void *data) {
     xmlRegAtomPtr atom;
@@ -5918,25 +5940,25 @@ error:
 }
 
 /**
- * xmlAutomataNewCountTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the input string associated to that transition
- * @min:  the minimum successive occurrences of token
- * @max:  the maximum successive occurrences of token
- * @data:  data associated to the transition
- *
- * 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
- *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewCountTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			 xmlAutomataStatePtr to, const xmlChar *token,
+ * 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`
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the input string associated to that transition
+ * @param min  the minimum successive occurrences of token
+ * @param max  the maximum successive occurrences of token
+ * @param data  data associated to the transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewCountTrans(xmlAutomata *am, xmlAutomataState *from,
+			 xmlAutomataState *to, const xmlChar *token,
 			 int min, int max, void *data) {
     xmlRegAtomPtr atom;
     int counter;
@@ -5994,27 +6016,27 @@ error:
 }
 
 /**
- * xmlAutomataNewOnceTrans2:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the input string associated to that transition
- * @token2: the second input string associated to that transition
- * @min:  the minimum successive occurrences of token
- * @max:  the maximum successive occurrences of token
- * @data:  data associated to the transition
- *
- * 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
+ * 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.
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewOnceTrans2(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			 xmlAutomataStatePtr to, const xmlChar *token,
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the input string associated to that transition
+ * @param token2  the second input string associated to that transition
+ * @param min  the minimum successive occurrences of token
+ * @param max  the maximum successive occurrences of token
+ * @param data  data associated to the transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewOnceTrans2(xmlAutomata *am, xmlAutomataState *from,
+			 xmlAutomataState *to, const xmlChar *token,
 			 const xmlChar *token2,
 			 int min, int max, void *data) {
     xmlRegAtomPtr atom;
@@ -6083,26 +6105,26 @@ error:
 
 
 /**
- * xmlAutomataNewOnceTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @token: the input string associated to that transition
- * @min:  the minimum successive occurrences of token
- * @max:  the maximum successive occurrences of token
- * @data:  data associated to the transition
- *
- * 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
+ * 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.
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewOnceTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-			 xmlAutomataStatePtr to, const xmlChar *token,
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param token  the input string associated to that transition
+ * @param min  the minimum successive occurrences of token
+ * @param max  the maximum successive occurrences of token
+ * @param data  data associated to the transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewOnceTrans(xmlAutomata *am, xmlAutomataState *from,
+			 xmlAutomataState *to, const xmlChar *token,
 			 int min, int max, void *data) {
     xmlRegAtomPtr atom;
     int counter;
@@ -6148,35 +6170,35 @@ error:
 }
 
 /**
- * xmlAutomataNewState:
- * @am: an automata
- *
  * Create a new disconnected state in the automata
  *
- * Returns the new state or NULL in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @returns the new state or NULL in case of error
  */
-xmlAutomataStatePtr
-xmlAutomataNewState(xmlAutomataPtr am) {
+xmlAutomataState *
+xmlAutomataNewState(xmlAutomata *am) {
     if (am == NULL)
 	return(NULL);
     return(xmlRegStatePush(am));
 }
 
 /**
- * xmlAutomataNewEpsilon:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- *
- * 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
+ * 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
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewEpsilon(xmlAutomataPtr am, xmlAutomataStatePtr from,
-		      xmlAutomataStatePtr to) {
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewEpsilon(xmlAutomata *am, xmlAutomataState *from,
+		      xmlAutomataState *to) {
     if ((am == NULL) || (from == NULL))
 	return(NULL);
     xmlFAGenerateEpsilonTransition(am, from, to);
@@ -6186,22 +6208,22 @@ xmlAutomataNewEpsilon(xmlAutomataPtr am,
 }
 
 /**
- * xmlAutomataNewAllTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @lax: allow to transition if not all all transitions have been activated
- *
- * 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
+ * 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.
+ * all transitions from the `from` node have been activated.
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewAllTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-		       xmlAutomataStatePtr to, int lax) {
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param lax  allow to transition if not all all transitions have been activated
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewAllTrans(xmlAutomata *am, xmlAutomataState *from,
+		       xmlAutomataState *to, int lax) {
     if ((am == NULL) || (from == NULL))
 	return(NULL);
     xmlFAGenerateAllTransition(am, from, to, lax);
@@ -6211,17 +6233,17 @@ xmlAutomataNewAllTrans(xmlAutomataPtr am
 }
 
 /**
- * xmlAutomataNewCounter:
- * @am: an automata
- * @min:  the minimal value on the counter
- * @max:  the maximal value on the counter
- *
  * Create a new counter
  *
- * Returns the counter number or -1 in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param min  the minimal value on the counter
+ * @param max  the maximal value on the counter
+ * @returns the counter number or -1 in case of error
  */
 int
-xmlAutomataNewCounter(xmlAutomataPtr am, int min, int max) {
+xmlAutomataNewCounter(xmlAutomata *am, int min, int max) {
     int ret;
 
     if (am == NULL)
@@ -6236,21 +6258,21 @@ xmlAutomataNewCounter(xmlAutomataPtr am,
 }
 
 /**
- * xmlAutomataNewCountedTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @counter: the counter associated to that transition
- *
- * 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
+ * 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
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewCountedTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-		xmlAutomataStatePtr to, int counter) {
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param counter  the counter associated to that transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewCountedTrans(xmlAutomata *am, xmlAutomataState *from,
+		xmlAutomataState *to, int counter) {
     if ((am == NULL) || (from == NULL) || (counter < 0))
 	return(NULL);
     xmlFAGenerateCountedEpsilonTransition(am, from, to, counter);
@@ -6260,21 +6282,21 @@ xmlAutomataNewCountedTrans(xmlAutomataPt
 }
 
 /**
- * xmlAutomataNewCounterTrans:
- * @am: an automata
- * @from: the starting point of the transition
- * @to: the target point of the transition or NULL
- * @counter: the counter associated to that transition
- *
- * 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
+ * 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.
  *
- * Returns the target state or NULL in case of error
- */
-xmlAutomataStatePtr
-xmlAutomataNewCounterTrans(xmlAutomataPtr am, xmlAutomataStatePtr from,
-		xmlAutomataStatePtr to, int counter) {
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @param from  the starting point of the transition
+ * @param to  the target point of the transition or NULL
+ * @param counter  the counter associated to that transition
+ * @returns the target state or NULL in case of error
+ */
+xmlAutomataState *
+xmlAutomataNewCounterTrans(xmlAutomata *am, xmlAutomataState *from,
+		xmlAutomataState *to, int counter) {
     if ((am == NULL) || (from == NULL) || (counter < 0))
 	return(NULL);
     xmlFAGenerateCountedTransition(am, from, to, counter);
@@ -6284,16 +6306,16 @@ xmlAutomataNewCounterTrans(xmlAutomataPt
 }
 
 /**
- * xmlAutomataCompile:
- * @am: an automata
- *
  * Compile the automata into a Reg Exp ready for being executed.
  * The automata should be free after this point.
  *
- * Returns the compiled regexp or NULL in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @returns the compiled regexp or NULL in case of error
  */
-xmlRegexpPtr
-xmlAutomataCompile(xmlAutomataPtr am) {
+xmlRegexp *
+xmlAutomataCompile(xmlAutomata *am) {
     xmlRegexpPtr ret;
 
     if ((am == NULL) || (am->error != 0)) return(NULL);
@@ -6307,15 +6329,15 @@ xmlAutomataCompile(xmlAutomataPtr am) {
 }
 
 /**
- * xmlAutomataIsDeterminist:
- * @am: an automata
- *
  * Checks if an automata is determinist.
  *
- * Returns 1 if true, 0 if not, and -1 in case of error
+ * @deprecated Internal function, don't use.
+ *
+ * @param am  an automata
+ * @returns 1 if true, 0 if not, and -1 in case of error
  */
 int
-xmlAutomataIsDeterminist(xmlAutomataPtr am) {
+xmlAutomataIsDeterminist(xmlAutomata *am) {
     int ret;
 
     if (am == NULL)
@@ -6325,1810 +6347,4 @@ xmlAutomataIsDeterminist(xmlAutomataPtr
     return(ret);
 }
 
-#ifdef LIBXML_EXPR_ENABLED
-/** DOC_DISABLE */
-/************************************************************************
- *									*
- *		Formal Expression handling code				*
- *									*
- ************************************************************************/
-
-/*
- * Formal regular expression handling
- * Its goal is to do some formal work on content models
- */
-
-/* expressions are used within a context */
-typedef struct _xmlExpCtxt xmlExpCtxt;
-typedef xmlExpCtxt *xmlExpCtxtPtr;
-
-XMLPUBFUN void
-			xmlExpFreeCtxt	(xmlExpCtxtPtr ctxt);
-XMLPUBFUN xmlExpCtxtPtr
-			xmlExpNewCtxt	(int maxNodes,
-					 xmlDictPtr dict);
-
-XMLPUBFUN int
-			xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
-XMLPUBFUN int
-			xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
-
-/* Expressions are trees but the tree is opaque */
-typedef struct _xmlExpNode xmlExpNode;
-typedef xmlExpNode *xmlExpNodePtr;
-
-typedef enum {
-    XML_EXP_EMPTY = 0,
-    XML_EXP_FORBID = 1,
-    XML_EXP_ATOM = 2,
-    XML_EXP_SEQ = 3,
-    XML_EXP_OR = 4,
-    XML_EXP_COUNT = 5
-} xmlExpNodeType;
-
-/*
- * 2 core expressions shared by all for the empty language set
- * and for the set with just the empty token
- */
-XMLPUBVAR xmlExpNodePtr forbiddenExp;
-XMLPUBVAR xmlExpNodePtr emptyExp;
-
-/*
- * Expressions are reference counted internally
- */
-XMLPUBFUN void
-			xmlExpFree	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr);
-XMLPUBFUN void
-			xmlExpRef	(xmlExpNodePtr expr);
-
-/*
- * constructors can be either manual or from a string
- */
-XMLPUBFUN xmlExpNodePtr
-			xmlExpParse	(xmlExpCtxtPtr ctxt,
-					 const char *expr);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpNewAtom	(xmlExpCtxtPtr ctxt,
-					 const xmlChar *name,
-					 int len);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpNewOr	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr left,
-					 xmlExpNodePtr right);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpNewSeq	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr left,
-					 xmlExpNodePtr right);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpNewRange	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr subset,
-					 int min,
-					 int max);
-/*
- * The really interesting APIs
- */
-XMLPUBFUN int
-			xmlExpIsNillable(xmlExpNodePtr expr);
-XMLPUBFUN int
-			xmlExpMaxToken	(xmlExpNodePtr expr);
-XMLPUBFUN int
-			xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr,
-					 const xmlChar**langList,
-					 int len);
-XMLPUBFUN int
-			xmlExpGetStart	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr,
-					 const xmlChar**tokList,
-					 int len);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpStringDerive(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr,
-					 const xmlChar *str,
-					 int len);
-XMLPUBFUN xmlExpNodePtr
-			xmlExpExpDerive	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr,
-					 xmlExpNodePtr sub);
-XMLPUBFUN int
-			xmlExpSubsume	(xmlExpCtxtPtr ctxt,
-					 xmlExpNodePtr expr,
-					 xmlExpNodePtr sub);
-XMLPUBFUN void
-			xmlExpDump	(xmlBufferPtr buf,
-					 xmlExpNodePtr expr);
-
-/************************************************************************
- *									*
- *		Expression handling context				*
- *									*
- ************************************************************************/
-
-struct _xmlExpCtxt {
-    xmlDictPtr dict;
-    xmlExpNodePtr *table;
-    int size;
-    int nbElems;
-    int nb_nodes;
-    int maxNodes;
-    const char *expr;
-    const char *cur;
-    int nb_cons;
-    int tabSize;
-};
-
-/**
- * xmlExpNewCtxt:
- * @maxNodes:  the maximum number of nodes
- * @dict:  optional dictionary to use internally
- *
- * Creates a new context for manipulating expressions
- *
- * Returns the context or NULL in case of error
- */
-xmlExpCtxtPtr
-xmlExpNewCtxt(int maxNodes, xmlDictPtr dict) {
-    xmlExpCtxtPtr ret;
-    int size = 256;
-
-    if (maxNodes <= 4096)
-        maxNodes = 4096;
-
-    ret = (xmlExpCtxtPtr) xmlMalloc(sizeof(xmlExpCtxt));
-    if (ret == NULL)
-        return(NULL);
-    memset(ret, 0, sizeof(xmlExpCtxt));
-    ret->size = size;
-    ret->nbElems = 0;
-    ret->maxNodes = maxNodes;
-    ret->table = xmlMalloc(size * sizeof(xmlExpNodePtr));
-    if (ret->table == NULL) {
-        xmlFree(ret);
-	return(NULL);
-    }
-    memset(ret->table, 0, size * sizeof(xmlExpNodePtr));
-    if (dict == NULL) {
-        ret->dict = xmlDictCreate();
-	if (ret->dict == NULL) {
-	    xmlFree(ret->table);
-	    xmlFree(ret);
-	    return(NULL);
-	}
-    } else {
-        ret->dict = dict;
-	xmlDictReference(ret->dict);
-    }
-    return(ret);
-}
-
-/**
- * xmlExpFreeCtxt:
- * @ctxt:  an expression context
- *
- * Free an expression context
- */
-void
-xmlExpFreeCtxt(xmlExpCtxtPtr ctxt) {
-    if (ctxt == NULL)
-        return;
-    xmlDictFree(ctxt->dict);
-    if (ctxt->table != NULL)
-	xmlFree(ctxt->table);
-    xmlFree(ctxt);
-}
-
-/************************************************************************
- *									*
- *		Structure associated to an expression node		*
- *									*
- ************************************************************************/
-#define MAX_NODES 10000
-
-/*
- * TODO:
- * - Wildcards
- * - public API for creation
- *
- * Started
- * - regression testing
- *
- * Done
- * - split into module and test tool
- * - memleaks
- */
-
-typedef enum {
-    XML_EXP_NILABLE = (1 << 0)
-} xmlExpNodeInfo;
-
-#define IS_NILLABLE(node) ((node)->info & XML_EXP_NILABLE)
-
-struct _xmlExpNode {
-    unsigned char type;/* xmlExpNodeType */
-    unsigned char info;/* OR of xmlExpNodeInfo */
-    unsigned short key;	/* the hash key */
-    unsigned int ref;	/* The number of references */
-    int c_max;		/* the maximum length it can consume */
-    xmlExpNodePtr exp_left;
-    xmlExpNodePtr next;/* the next node in the hash table or free list */
-    union {
-	struct {
-	    int f_min;
-	    int f_max;
-	} count;
-	struct {
-	    xmlExpNodePtr f_right;
-	} children;
-        const xmlChar *f_str;
-    } field;
-};
-
-#define exp_min field.count.f_min
-#define exp_max field.count.f_max
-/* #define exp_left field.children.f_left */
-#define exp_right field.children.f_right
-#define exp_str field.f_str
-
-static xmlExpNodePtr xmlExpNewNode(xmlExpCtxtPtr ctxt, xmlExpNodeType type);
-static xmlExpNode forbiddenExpNode = {
-    XML_EXP_FORBID, 0, 0, 0, 0, NULL, NULL, {{ 0, 0}}
-};
-xmlExpNodePtr forbiddenExp = &forbiddenExpNode;
-static xmlExpNode emptyExpNode = {
-    XML_EXP_EMPTY, 1, 0, 0, 0, NULL, NULL, {{ 0, 0}}
-};
-xmlExpNodePtr emptyExp = &emptyExpNode;
-
-/************************************************************************
- *									*
- *  The custom hash table for unicity and canonicalization		*
- *  of sub-expressions pointers						*
- *									*
- ************************************************************************/
-/*
- * xmlExpHashNameComputeKey:
- * Calculate the hash key for a token
- */
-static unsigned short
-xmlExpHashNameComputeKey(const xmlChar *name) {
-    unsigned short value = 0L;
-    char ch;
-
-    if (name != NULL) {
-	value += 30 * (*name);
-	while ((ch = *name++) != 0) {
-	    value = value ^ ((value << 5) + (value >> 3) + (unsigned long)ch);
-	}
-    }
-    return (value);
-}
-
-/*
- * xmlExpHashComputeKey:
- * Calculate the hash key for a compound expression
- */
-static unsigned short
-xmlExpHashComputeKey(xmlExpNodeType type, xmlExpNodePtr left,
-                     xmlExpNodePtr right) {
-    unsigned long value;
-    unsigned short ret;
-
-    switch (type) {
-        case XML_EXP_SEQ:
-	    value = left->key;
-	    value += right->key;
-	    value *= 3;
-	    ret = (unsigned short) value;
-	    break;
-        case XML_EXP_OR:
-	    value = left->key;
-	    value += right->key;
-	    value *= 7;
-	    ret = (unsigned short) value;
-	    break;
-        case XML_EXP_COUNT:
-	    value = left->key;
-	    value += right->key;
-	    ret = (unsigned short) value;
-	    break;
-	default:
-	    ret = 0;
-    }
-    return(ret);
-}
-
-
-static xmlExpNodePtr
-xmlExpNewNode(xmlExpCtxtPtr ctxt, xmlExpNodeType type) {
-    xmlExpNodePtr ret;
-
-    if (ctxt->nb_nodes >= MAX_NODES)
-        return(NULL);
-    ret = (xmlExpNodePtr) xmlMalloc(sizeof(xmlExpNode));
-    if (ret == NULL)
-        return(NULL);
-    memset(ret, 0, sizeof(xmlExpNode));
-    ret->type = type;
-    ret->next = NULL;
-    ctxt->nb_nodes++;
-    ctxt->nb_cons++;
-    return(ret);
-}
-
-/**
- * xmlExpHashGetEntry:
- * @table: the hash table
- *
- * Get the unique entry from the hash table. The entry is created if
- * needed. @left and @right are consumed, i.e. their ref count will
- * be decremented by the operation.
- *
- * Returns the pointer or NULL in case of error
- */
-static xmlExpNodePtr
-xmlExpHashGetEntry(xmlExpCtxtPtr ctxt, xmlExpNodeType type,
-                   xmlExpNodePtr left, xmlExpNodePtr right,
-		   const xmlChar *name, int min, int max) {
-    unsigned short kbase, key;
-    xmlExpNodePtr entry;
-    xmlExpNodePtr insert;
-
-    if (ctxt == NULL)
-	return(NULL);
-
-    /*
-     * Check for duplicate and insertion location.
-     */
-    if (type == XML_EXP_ATOM) {
-	kbase = xmlExpHashNameComputeKey(name);
-    } else if (type == XML_EXP_COUNT) {
-        /* COUNT reduction rule 1 */
-	/* a{1} -> a */
-	if (min == max) {
-	    if (min == 1) {
-		return(left);
-	    }
-	    if (min == 0) {
-		xmlExpFree(ctxt, left);
-	        return(emptyExp);
-	    }
-	}
-	if (min < 0) {
-	    xmlExpFree(ctxt, left);
-	    return(forbiddenExp);
-	}
-        if (max == -1)
-	    kbase = min + 79;
-	else
-	    kbase = max - min;
-	kbase += left->key;
-    } else if (type == XML_EXP_OR) {
-        /* Forbid reduction rules */
-        if (left->type == XML_EXP_FORBID) {
-	    xmlExpFree(ctxt, left);
-	    return(right);
-	}
-        if (right->type == XML_EXP_FORBID) {
-	    xmlExpFree(ctxt, right);
-	    return(left);
-	}
-
-        /* OR reduction rule 1 */
-	/* a | a reduced to a */
-        if (left == right) {
-	    xmlExpFree(ctxt, right);
-	    return(left);
-	}
-        /* OR canonicalization rule 1 */
-	/* linearize (a | b) | c into a | (b | c) */
-        if ((left->type == XML_EXP_OR) && (right->type != XML_EXP_OR)) {
-	    xmlExpNodePtr tmp = left;
-            left = right;
-	    right = tmp;
-	}
-        /* OR reduction rule 2 */
-	/* a | (a | b) and b | (a | b) are reduced to a | b */
-        if (right->type == XML_EXP_OR) {
-	    if ((left == right->exp_left) ||
-	        (left == right->exp_right)) {
-		xmlExpFree(ctxt, left);
-		return(right);
-	    }
-	}
-        /* OR canonicalization rule 2 */
-	/* linearize (a | b) | c into a | (b | c) */
-        if (left->type == XML_EXP_OR) {
-	    xmlExpNodePtr tmp;
-
-	    /* OR canonicalization rule 2 */
-	    if ((left->exp_right->type != XML_EXP_OR) &&
-	        (left->exp_right->key < left->exp_left->key)) {
-	        tmp = left->exp_right;
-		left->exp_right = left->exp_left;
-		left->exp_left = tmp;
-	    }
-	    left->exp_right->ref++;
-	    tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_right, right,
-	                             NULL, 0, 0);
-	    left->exp_left->ref++;
-	    tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left->exp_left, tmp,
-	                             NULL, 0, 0);
-
-	    xmlExpFree(ctxt, left);
-	    return(tmp);
-	}
-	if (right->type == XML_EXP_OR) {
-	    /* Ordering in the tree */
-	    /* C | (A | B) -> A | (B | C) */
-	    if (left->key > right->exp_right->key) {
-		xmlExpNodePtr tmp;
-		right->exp_right->ref++;
-		tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_right,
-		                         left, NULL, 0, 0);
-		right->exp_left->ref++;
-		tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_left,
-		                         tmp, NULL, 0, 0);
-		xmlExpFree(ctxt, right);
-		return(tmp);
-	    }
-	    /* Ordering in the tree */
-	    /* B | (A | C) -> A | (B | C) */
-	    if (left->key > right->exp_left->key) {
-		xmlExpNodePtr tmp;
-		right->exp_right->ref++;
-		tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, left,
-		                         right->exp_right, NULL, 0, 0);
-		right->exp_left->ref++;
-		tmp = xmlExpHashGetEntry(ctxt, XML_EXP_OR, right->exp_left,
-		                         tmp, NULL, 0, 0);
-		xmlExpFree(ctxt, right);
-		return(tmp);
-	    }
-	}
-	/* we know both types are != XML_EXP_OR here */
-        else if (left->key > right->key) {
-	    xmlExpNodePtr tmp = left;
-            left = right;
-	    right = tmp;
-	}
-	kbase = xmlExpHashComputeKey(type, left, right);
-    } else if (type == XML_EXP_SEQ) {
-        /* Forbid reduction rules */
-        if (left->type == XML_EXP_FORBID) {
-	    xmlExpFree(ctxt, right);
-	    return(left);
-	}
-        if (right->type == XML_EXP_FORBID) {
-	    xmlExpFree(ctxt, left);
-	    return(right);
-	}
-        /* Empty reduction rules */
-        if (right->type == XML_EXP_EMPTY) {
-	    return(left);
-	}
-        if (left->type == XML_EXP_EMPTY) {
-	    return(right);
-	}
-	kbase = xmlExpHashComputeKey(type, left, right);
-    } else
-        return(NULL);
-
-    key = kbase % ctxt->size;
-    if (ctxt->table[key] != NULL) {
-	for (insert = ctxt->table[key]; insert != NULL;
-	     insert = insert->next) {
-	    if ((insert->key == kbase) &&
-	        (insert->type == type)) {
-		if (type == XML_EXP_ATOM) {
-		    if (name == insert->exp_str) {
-			insert->ref++;
-			return(insert);
-		    }
-		} else if (type == XML_EXP_COUNT) {
-		    if ((insert->exp_min == min) && (insert->exp_max == max) &&
-		        (insert->exp_left == left)) {
-			insert->ref++;
-			left->ref--;
-			return(insert);
-		    }
-		} else if ((insert->exp_left == left) &&
-			   (insert->exp_right == right)) {
-		    insert->ref++;
-		    left->ref--;
-		    right->ref--;
-		    return(insert);
-		}
-	    }
-	}
-    }
-
-    entry = xmlExpNewNode(ctxt, type);
-    if (entry == NULL)
-        return(NULL);
-    entry->key = kbase;
-    if (type == XML_EXP_ATOM) {
-	entry->exp_str = name;
-	entry->c_max = 1;
-    } else if (type == XML_EXP_COUNT) {
-        entry->exp_min = min;
-        entry->exp_max = max;
-	entry->exp_left = left;
-	if ((min == 0) || (IS_NILLABLE(left)))
-	    entry->info |= XML_EXP_NILABLE;
-	if (max < 0)
-	    entry->c_max = -1;
-	else
-	    entry->c_max = max * entry->exp_left->c_max;
-    } else {
-	entry->exp_left = left;
-	entry->exp_right = right;
-	if (type == XML_EXP_OR) {
-	    if ((IS_NILLABLE(left)) || (IS_NILLABLE(right)))
-		entry->info |= XML_EXP_NILABLE;
-	    if ((entry->exp_left->c_max == -1) ||
-	        (entry->exp_right->c_max == -1))
-		entry->c_max = -1;
-	    else if (entry->exp_left->c_max > entry->exp_right->c_max)
-	        entry->c_max = entry->exp_left->c_max;
-	    else
-	        entry->c_max = entry->exp_right->c_max;
-	} else {
-	    if ((IS_NILLABLE(left)) && (IS_NILLABLE(right)))
-		entry->info |= XML_EXP_NILABLE;
-	    if ((entry->exp_left->c_max == -1) ||
-	        (entry->exp_right->c_max == -1))
-		entry->c_max = -1;
-	    else
-	        entry->c_max = entry->exp_left->c_max + entry->exp_right->c_max;
-	}
-    }
-    entry->ref = 1;
-    if (ctxt->table[key] != NULL)
-        entry->next = ctxt->table[key];
-
-    ctxt->table[key] = entry;
-    ctxt->nbElems++;
-
-    return(entry);
-}
-
-/**
- * xmlExpFree:
- * @ctxt: the expression context
- * @exp: the expression
- *
- * Dereference the expression
- */
-void
-xmlExpFree(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp) {
-    if ((exp == NULL) || (exp == forbiddenExp) || (exp == emptyExp))
-        return;
-    exp->ref--;
-    if (exp->ref == 0) {
-        unsigned short key;
-
-        /* Unlink it first from the hash table */
-	key = exp->key % ctxt->size;
-	if (ctxt->table[key] == exp) {
-	    ctxt->table[key] = exp->next;
-	} else {
-	    xmlExpNodePtr tmp;
-
-	    tmp = ctxt->table[key];
-	    while (tmp != NULL) {
-	        if (tmp->next == exp) {
-		    tmp->next = exp->next;
-		    break;
-		}
-	        tmp = tmp->next;
-	    }
-	}
-
-        if ((exp->type == XML_EXP_SEQ) || (exp->type == XML_EXP_OR)) {
-	    xmlExpFree(ctxt, exp->exp_left);
-	    xmlExpFree(ctxt, exp->exp_right);
-	} else if (exp->type == XML_EXP_COUNT) {
-	    xmlExpFree(ctxt, exp->exp_left);
-	}
-        xmlFree(exp);
-	ctxt->nb_nodes--;
-    }
-}
-
-/**
- * xmlExpRef:
- * @exp: the expression
- *
- * Increase the reference count of the expression
- */
-void
-xmlExpRef(xmlExpNodePtr exp) {
-    if (exp != NULL)
-        exp->ref++;
-}
-
-/**
- * xmlExpNewAtom:
- * @ctxt: the expression context
- * @name: the atom name
- * @len: the atom name length in byte (or -1);
- *
- * Get the atom associated to this name from that context
- *
- * Returns the node or NULL in case of error
- */
-xmlExpNodePtr
-xmlExpNewAtom(xmlExpCtxtPtr ctxt, const xmlChar *name, int len) {
-    if ((ctxt == NULL) || (name == NULL))
-        return(NULL);
-    name = xmlDictLookup(ctxt->dict, name, len);
-    if (name == NULL)
-        return(NULL);
-    return(xmlExpHashGetEntry(ctxt, XML_EXP_ATOM, NULL, NULL, name, 0, 0));
-}
-
-/**
- * xmlExpNewOr:
- * @ctxt: the expression context
- * @left: left expression
- * @right: right expression
- *
- * Get the atom associated to the choice @left | @right
- * Note that @left and @right are consumed in the operation, to keep
- * an handle on them use xmlExpRef() and use xmlExpFree() to release them,
- * this is true even in case of failure (unless ctxt == NULL).
- *
- * Returns the node or NULL in case of error
- */
-xmlExpNodePtr
-xmlExpNewOr(xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right) {
-    if (ctxt == NULL)
-        return(NULL);
-    if ((left == NULL) || (right == NULL)) {
-        xmlExpFree(ctxt, left);
-        xmlExpFree(ctxt, right);
-        return(NULL);
-    }
-    return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, left, right, NULL, 0, 0));
-}
-
-/**
- * xmlExpNewSeq:
- * @ctxt: the expression context
- * @left: left expression
- * @right: right expression
- *
- * Get the atom associated to the sequence @left , @right
- * Note that @left and @right are consumed in the operation, to keep
- * an handle on them use xmlExpRef() and use xmlExpFree() to release them,
- * this is true even in case of failure (unless ctxt == NULL).
- *
- * Returns the node or NULL in case of error
- */
-xmlExpNodePtr
-xmlExpNewSeq(xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right) {
-    if (ctxt == NULL)
-        return(NULL);
-    if ((left == NULL) || (right == NULL)) {
-        xmlExpFree(ctxt, left);
-        xmlExpFree(ctxt, right);
-        return(NULL);
-    }
-    return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, left, right, NULL, 0, 0));
-}
-
-/**
- * xmlExpNewRange:
- * @ctxt: the expression context
- * @subset: the expression to be repeated
- * @min: the lower bound for the repetition
- * @max: the upper bound for the repetition, -1 means infinite
- *
- * Get the atom associated to the range (@subset){@min, @max}
- * Note that @subset is consumed in the operation, to keep
- * an handle on it use xmlExpRef() and use xmlExpFree() to release it,
- * this is true even in case of failure (unless ctxt == NULL).
- *
- * Returns the node or NULL in case of error
- */
-xmlExpNodePtr
-xmlExpNewRange(xmlExpCtxtPtr ctxt, xmlExpNodePtr subset, int min, int max) {
-    if (ctxt == NULL)
-        return(NULL);
-    if ((subset == NULL) || (min < 0) || (max < -1) ||
-        ((max >= 0) && (min > max))) {
-	xmlExpFree(ctxt, subset);
-        return(NULL);
-    }
-    return(xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, subset,
-                              NULL, NULL, min, max));
-}
-
-/************************************************************************
- *									*
- *		Public API for operations on expressions		*
- *									*
- ************************************************************************/
-
-static int
-xmlExpGetLanguageInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-                     const xmlChar**list, int len, int nb) {
-    int tmp, tmp2;
-tail:
-    switch (exp->type) {
-        case XML_EXP_EMPTY:
-	    return(0);
-        case XML_EXP_ATOM:
-	    for (tmp = 0;tmp < nb;tmp++)
-	        if (list[tmp] == exp->exp_str)
-		    return(0);
-            if (nb >= len)
-	        return(-2);
-	    list[nb] = exp->exp_str;
-	    return(1);
-        case XML_EXP_COUNT:
-	    exp = exp->exp_left;
-	    goto tail;
-        case XML_EXP_SEQ:
-        case XML_EXP_OR:
-	    tmp = xmlExpGetLanguageInt(ctxt, exp->exp_left, list, len, nb);
-	    if (tmp < 0)
-	        return(tmp);
-	    tmp2 = xmlExpGetLanguageInt(ctxt, exp->exp_right, list, len,
-	                                nb + tmp);
-	    if (tmp2 < 0)
-	        return(tmp2);
-            return(tmp + tmp2);
-    }
-    return(-1);
-}
-
-/**
- * xmlExpGetLanguage:
- * @ctxt: the expression context
- * @exp: the expression
- * @langList: where to store the tokens
- * @len: the allocated length of @list
- *
- * Find all the strings used in @exp and store them in @list
- *
- * Returns the number of unique strings found, -1 in case of errors and
- *         -2 if there is more than @len strings
- */
-int
-xmlExpGetLanguage(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-                  const xmlChar**langList, int len) {
-    if ((ctxt == NULL) || (exp == NULL) || (langList == NULL) || (len <= 0))
-        return(-1);
-    return(xmlExpGetLanguageInt(ctxt, exp, langList, len, 0));
-}
-
-static int
-xmlExpGetStartInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-                  const xmlChar**list, int len, int nb) {
-    int tmp, tmp2;
-tail:
-    switch (exp->type) {
-        case XML_EXP_FORBID:
-	    return(0);
-        case XML_EXP_EMPTY:
-	    return(0);
-        case XML_EXP_ATOM:
-	    for (tmp = 0;tmp < nb;tmp++)
-	        if (list[tmp] == exp->exp_str)
-		    return(0);
-            if (nb >= len)
-	        return(-2);
-	    list[nb] = exp->exp_str;
-	    return(1);
-        case XML_EXP_COUNT:
-	    exp = exp->exp_left;
-	    goto tail;
-        case XML_EXP_SEQ:
-	    tmp = xmlExpGetStartInt(ctxt, exp->exp_left, list, len, nb);
-	    if (tmp < 0)
-	        return(tmp);
-	    if (IS_NILLABLE(exp->exp_left)) {
-		tmp2 = xmlExpGetStartInt(ctxt, exp->exp_right, list, len,
-					    nb + tmp);
-		if (tmp2 < 0)
-		    return(tmp2);
-		tmp += tmp2;
-	    }
-            return(tmp);
-        case XML_EXP_OR:
-	    tmp = xmlExpGetStartInt(ctxt, exp->exp_left, list, len, nb);
-	    if (tmp < 0)
-	        return(tmp);
-	    tmp2 = xmlExpGetStartInt(ctxt, exp->exp_right, list, len,
-	                                nb + tmp);
-	    if (tmp2 < 0)
-	        return(tmp2);
-            return(tmp + tmp2);
-    }
-    return(-1);
-}
-
-/**
- * xmlExpGetStart:
- * @ctxt: the expression context
- * @exp: the expression
- * @tokList: where to store the tokens
- * @len: the allocated length of @list
- *
- * Find all the strings that appears at the start of the languages
- * accepted by @exp and store them in @list. E.g. for (a, b) | c
- * it will return the list [a, c]
- *
- * Returns the number of unique strings found, -1 in case of errors and
- *         -2 if there is more than @len strings
- */
-int
-xmlExpGetStart(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-               const xmlChar**tokList, int len) {
-    if ((ctxt == NULL) || (exp == NULL) || (tokList == NULL) || (len <= 0))
-        return(-1);
-    return(xmlExpGetStartInt(ctxt, exp, tokList, len, 0));
-}
-
-/**
- * xmlExpIsNillable:
- * @exp: the expression
- *
- * Finds if the expression is nillable, i.e. if it accepts the empty sequence
- *
- * Returns 1 if nillable, 0 if not and -1 in case of error
- */
-int
-xmlExpIsNillable(xmlExpNodePtr exp) {
-    if (exp == NULL)
-        return(-1);
-    return(IS_NILLABLE(exp) != 0);
-}
-
-static xmlExpNodePtr
-xmlExpStringDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, const xmlChar *str)
-{
-    xmlExpNodePtr ret;
-
-    switch (exp->type) {
-	case XML_EXP_EMPTY:
-	    return(forbiddenExp);
-	case XML_EXP_FORBID:
-	    return(forbiddenExp);
-	case XML_EXP_ATOM:
-	    if (exp->exp_str == str) {
-	        ret = emptyExp;
-	    } else {
-	        /* TODO wildcards here */
-		ret = forbiddenExp;
-	    }
-	    return(ret);
-	case XML_EXP_OR: {
-	    xmlExpNodePtr tmp;
-
-	    tmp = xmlExpStringDeriveInt(ctxt, exp->exp_left, str);
-	    if (tmp == NULL) {
-		return(NULL);
-	    }
-	    ret = xmlExpStringDeriveInt(ctxt, exp->exp_right, str);
-	    if (ret == NULL) {
-	        xmlExpFree(ctxt, tmp);
-		return(NULL);
-	    }
-            ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, tmp, ret,
-			     NULL, 0, 0);
-	    return(ret);
-	}
-	case XML_EXP_SEQ:
-	    ret = xmlExpStringDeriveInt(ctxt, exp->exp_left, str);
-	    if (ret == NULL) {
-	        return(NULL);
-	    } else if (ret == forbiddenExp) {
-	        if (IS_NILLABLE(exp->exp_left)) {
-		    ret = xmlExpStringDeriveInt(ctxt, exp->exp_right, str);
-		}
-	    } else {
-	        exp->exp_right->ref++;
-	        ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, exp->exp_right,
-		                         NULL, 0, 0);
-	    }
-	    return(ret);
-	case XML_EXP_COUNT: {
-	    int min, max;
-	    xmlExpNodePtr tmp;
-
-	    if (exp->exp_max == 0)
-		return(forbiddenExp);
-	    ret = xmlExpStringDeriveInt(ctxt, exp->exp_left, str);
-	    if (ret == NULL)
-	        return(NULL);
-	    if (ret == forbiddenExp) {
-	        return(ret);
-	    }
-	    if (exp->exp_max == 1)
-		return(ret);
-	    if (exp->exp_max < 0) /* unbounded */
-		max = -1;
-	    else
-		max = exp->exp_max - 1;
-	    if (exp->exp_min > 0)
-		min = exp->exp_min - 1;
-	    else
-		min = 0;
-	    exp->exp_left->ref++;
-	    tmp = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left, NULL,
-				     NULL, min, max);
-	    if (ret == emptyExp) {
-	        return(tmp);
-	    }
-	    return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, tmp,
-	                              NULL, 0, 0));
-	}
-    }
-    return(NULL);
-}
-
-/**
- * xmlExpStringDerive:
- * @ctxt: the expression context
- * @exp: the expression
- * @str: the string
- * @len: the string len in bytes if available
- *
- * Do one step of Brzozowski derivation of the expression @exp with
- * respect to the input string
- *
- * Returns the resulting expression or NULL in case of internal error
- */
-xmlExpNodePtr
-xmlExpStringDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-                   const xmlChar *str, int len) {
-    const xmlChar *input;
-
-    if ((exp == NULL) || (ctxt == NULL) || (str == NULL)) {
-        return(NULL);
-    }
-    /*
-     * check the string is in the dictionary, if yes use an interned
-     * copy, otherwise we know it's not an acceptable input
-     */
-    input = xmlDictExists(ctxt->dict, str, len);
-    if (input == NULL) {
-        return(forbiddenExp);
-    }
-    return(xmlExpStringDeriveInt(ctxt, exp, input));
-}
-
-static int
-xmlExpCheckCard(xmlExpNodePtr exp, xmlExpNodePtr sub) {
-    int ret = 1;
-
-    if (sub->c_max == -1) {
-        if (exp->c_max != -1)
-	    ret = 0;
-    } else if ((exp->c_max >= 0) && (exp->c_max < sub->c_max)) {
-        ret = 0;
-    }
-    return(ret);
-}
-
-static xmlExpNodePtr xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
-                                        xmlExpNodePtr sub);
-/**
- * xmlExpDivide:
- * @ctxt: the expressions context
- * @exp: the englobing expression
- * @sub: the subexpression
- * @mult: the multiple expression
- * @remain: the remain from the derivation of the multiple
- *
- * Check if exp is a multiple of sub, i.e. if there is a finite number n
- * so that sub{n} subsume exp
- *
- * Returns the multiple value if successful, 0 if it is not a multiple
- *         and -1 in case of internal error.
- */
-
-static int
-xmlExpDivide(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub,
-             xmlExpNodePtr *mult, xmlExpNodePtr *remain) {
-    int i;
-    xmlExpNodePtr tmp, tmp2;
-
-    if (mult != NULL) *mult = NULL;
-    if (remain != NULL) *remain = NULL;
-    if (exp->c_max == -1) return(0);
-    if (IS_NILLABLE(exp) && (!IS_NILLABLE(sub))) return(0);
-
-    for (i = 1;i <= exp->c_max;i++) {
-        sub->ref++;
-        tmp = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT,
-				 sub, NULL, NULL, i, i);
-	if (tmp == NULL) {
-	    return(-1);
-	}
-	if (!xmlExpCheckCard(tmp, exp)) {
-	    xmlExpFree(ctxt, tmp);
-	    continue;
-	}
-	tmp2 = xmlExpExpDeriveInt(ctxt, tmp, exp);
-	if (tmp2 == NULL) {
-	    xmlExpFree(ctxt, tmp);
-	    return(-1);
-	}
-	if ((tmp2 != forbiddenExp) && (IS_NILLABLE(tmp2))) {
-	    if (remain != NULL)
-	        *remain = tmp2;
-	    else
-	        xmlExpFree(ctxt, tmp2);
-	    if (mult != NULL)
-	        *mult = tmp;
-	    else
-	        xmlExpFree(ctxt, tmp);
-	    return(i);
-	}
-	xmlExpFree(ctxt, tmp);
-	xmlExpFree(ctxt, tmp2);
-    }
-    return(0);
-}
-
-/**
- * xmlExpExpDeriveInt:
- * @ctxt: the expressions context
- * @exp: the englobing expression
- * @sub: the subexpression
- *
- * Try to do a step of Brzozowski derivation but at a higher level
- * the input being a subexpression.
- *
- * Returns the resulting expression or NULL in case of internal error
- */
-static xmlExpNodePtr
-xmlExpExpDeriveInt(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
-    xmlExpNodePtr ret, tmp, tmp2, tmp3;
-    const xmlChar **tab;
-    int len, i;
-
-    /*
-     * In case of equality and if the expression can only consume a finite
-     * amount, then the derivation is empty
-     */
-    if ((exp == sub) && (exp->c_max >= 0)) {
-        return(emptyExp);
-    }
-    /*
-     * decompose sub sequence first
-     */
-    if (sub->type == XML_EXP_EMPTY) {
-	exp->ref++;
-        return(exp);
-    }
-    if (sub->type == XML_EXP_SEQ) {
-        tmp = xmlExpExpDeriveInt(ctxt, exp, sub->exp_left);
-	if (tmp == NULL)
-	    return(NULL);
-	if (tmp == forbiddenExp)
-	    return(tmp);
-	ret = xmlExpExpDeriveInt(ctxt, tmp, sub->exp_right);
-	xmlExpFree(ctxt, tmp);
-	return(ret);
-    }
-    if (sub->type == XML_EXP_OR) {
-        tmp = xmlExpExpDeriveInt(ctxt, exp, sub->exp_left);
-	if (tmp == forbiddenExp)
-	    return(tmp);
-	if (tmp == NULL)
-	    return(NULL);
-	ret = xmlExpExpDeriveInt(ctxt, exp, sub->exp_right);
-	if ((ret == NULL) || (ret == forbiddenExp)) {
-	    xmlExpFree(ctxt, tmp);
-	    return(ret);
-	}
-	return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, tmp, ret, NULL, 0, 0));
-    }
-    if (!xmlExpCheckCard(exp, sub)) {
-        return(forbiddenExp);
-    }
-    switch (exp->type) {
-        case XML_EXP_EMPTY:
-	    if (sub == emptyExp)
-	        return(emptyExp);
-	    return(forbiddenExp);
-        case XML_EXP_FORBID:
-	    return(forbiddenExp);
-        case XML_EXP_ATOM:
-	    if (sub->type == XML_EXP_ATOM) {
-	        /* TODO: handle wildcards */
-	        if (exp->exp_str == sub->exp_str) {
-		    return(emptyExp);
-                }
-	        return(forbiddenExp);
-	    }
-	    if ((sub->type == XML_EXP_COUNT) &&
-	        (sub->exp_max == 1) &&
-	        (sub->exp_left->type == XML_EXP_ATOM)) {
-	        /* TODO: handle wildcards */
-	        if (exp->exp_str == sub->exp_left->exp_str) {
-		    return(emptyExp);
-		}
-	        return(forbiddenExp);
-	    }
-	    return(forbiddenExp);
-        case XML_EXP_SEQ:
-	    /* try to get the sequence consumed only if possible */
-	    if (xmlExpCheckCard(exp->exp_left, sub)) {
-		/* See if the sequence can be consumed directly */
-		ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub);
-		if ((ret != forbiddenExp) && (ret != NULL)) {
-		    /*
-		     * TODO: assumption here that we are determinist
-		     *       i.e. we won't get to a nillable exp left
-		     *       subset which could be matched by the right
-		     *       part too.
-		     * e.g.: (a | b)+,(a | c) and 'a+,a'
-		     */
-		    exp->exp_right->ref++;
-		    return(xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret,
-					      exp->exp_right, NULL, 0, 0));
-		}
-	    }
-	    /* Try instead to decompose */
-	    if (sub->type == XML_EXP_COUNT) {
-		int min, max;
-
-	        ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub->exp_left);
-		if (ret == NULL)
-		    return(NULL);
-		if (ret != forbiddenExp) {
-		    if (sub->exp_max < 0)
-		        max = -1;
-	            else
-		        max = sub->exp_max -1;
-		    if (sub->exp_min > 0)
-		        min = sub->exp_min -1;
-		    else
-		        min = 0;
-		    exp->exp_right->ref++;
-		    tmp = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret,
-		                             exp->exp_right, NULL, 0, 0);
-		    if (tmp == NULL)
-		        return(NULL);
-
-		    sub->exp_left->ref++;
-		    tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT,
-				      sub->exp_left, NULL, NULL, min, max);
-		    if (tmp2 == NULL) {
-		        xmlExpFree(ctxt, tmp);
-			return(NULL);
-		    }
-		    ret = xmlExpExpDeriveInt(ctxt, tmp, tmp2);
-		    xmlExpFree(ctxt, tmp);
-		    xmlExpFree(ctxt, tmp2);
-		    return(ret);
-		}
-	    }
-	    /* we made no progress on structured operations */
-	    break;
-        case XML_EXP_OR:
-	    ret = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub);
-	    if (ret == NULL)
-	        return(NULL);
-	    tmp = xmlExpExpDeriveInt(ctxt, exp->exp_right, sub);
-	    if (tmp == NULL) {
-		xmlExpFree(ctxt, ret);
-	        return(NULL);
-	    }
-	    return(xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, tmp, NULL, 0, 0));
-        case XML_EXP_COUNT: {
-	    int min, max;
-
-	    if (sub->type == XML_EXP_COUNT) {
-	        /*
-		 * Try to see if the loop is completely subsumed
-		 */
-	        tmp = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub->exp_left);
-		if (tmp == NULL)
-		    return(NULL);
-		if (tmp == forbiddenExp) {
-		    int mult;
-
-		    mult = xmlExpDivide(ctxt, sub->exp_left, exp->exp_left,
-		                        NULL, &tmp);
-		    if (mult <= 0) {
-                        return(forbiddenExp);
-		    }
-		    if (sub->exp_max == -1) {
-		        max = -1;
-			if (exp->exp_max == -1) {
-			    if (exp->exp_min <= sub->exp_min * mult)
-			        min = 0;
-			    else
-			        min = exp->exp_min - sub->exp_min * mult;
-			} else {
-                            xmlExpFree(ctxt, tmp);
-			    return(forbiddenExp);
-			}
-		    } else {
-			if (exp->exp_max == -1) {
-			    if (exp->exp_min > sub->exp_min * mult) {
-				max = -1;
-				min = exp->exp_min - sub->exp_min * mult;
-			    } else {
-				max = -1;
-				min = 0;
-			    }
-			} else {
-			    if (exp->exp_max < sub->exp_max * mult) {
-				xmlExpFree(ctxt, tmp);
-				return(forbiddenExp);
-			    }
-			    if (sub->exp_max * mult > exp->exp_min)
-				min = 0;
-			    else
-				min = exp->exp_min - sub->exp_max * mult;
-			    max = exp->exp_max - sub->exp_max * mult;
-			}
-		    }
-		} else if (!IS_NILLABLE(tmp)) {
-		    /*
-		     * TODO: loop here to try to grow if working on finite
-		     *       blocks.
-		     */
-		    xmlExpFree(ctxt, tmp);
-		    return(forbiddenExp);
-		} else if (sub->exp_max == -1) {
-		    if (exp->exp_max == -1) {
-		        if (exp->exp_min <= sub->exp_min) {
-                            max = -1;
-			    min = 0;
-			} else {
-                            max = -1;
-			    min = exp->exp_min - sub->exp_min;
-			}
-		    } else if (exp->exp_min > sub->exp_min) {
-		        xmlExpFree(ctxt, tmp);
-		        return(forbiddenExp);
-		    } else {
-			max = -1;
-			min = 0;
-		    }
-		} else {
-		    if (exp->exp_max == -1) {
-		        if (exp->exp_min > sub->exp_min) {
-			    max = -1;
-			    min = exp->exp_min - sub->exp_min;
-			} else {
-			    max = -1;
-			    min = 0;
-			}
-		    } else {
-		        if (exp->exp_max < sub->exp_max) {
-			    xmlExpFree(ctxt, tmp);
-			    return(forbiddenExp);
-			}
-			if (sub->exp_max > exp->exp_min)
-			    min = 0;
-			else
-			    min = exp->exp_min - sub->exp_max;
-			max = exp->exp_max - sub->exp_max;
-		    }
-		}
-		exp->exp_left->ref++;
-		tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left,
-		                          NULL, NULL, min, max);
-		if (tmp2 == NULL) {
-		    return(NULL);
-		}
-                ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, tmp, tmp2,
-		                         NULL, 0, 0);
-		return(ret);
-	    }
-	    tmp = xmlExpExpDeriveInt(ctxt, exp->exp_left, sub);
-	    if (tmp == NULL)
-		return(NULL);
-	    if (tmp == forbiddenExp) {
-		return(forbiddenExp);
-	    }
-	    if (exp->exp_min > 0)
-		min = exp->exp_min - 1;
-	    else
-		min = 0;
-	    if (exp->exp_max < 0)
-		max = -1;
-	    else
-		max = exp->exp_max - 1;
-
-	    exp->exp_left->ref++;
-	    tmp2 = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, exp->exp_left,
-				      NULL, NULL, min, max);
-	    if (tmp2 == NULL)
-		return(NULL);
-	    ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, tmp, tmp2,
-				     NULL, 0, 0);
-	    return(ret);
-	}
-    }
-
-    if (IS_NILLABLE(sub)) {
-        if (!(IS_NILLABLE(exp)))
-	    return(forbiddenExp);
-	else
-	    ret = emptyExp;
-    } else
-	ret = NULL;
-    /*
-     * here the structured derivation made no progress so
-     * we use the default token based derivation to force one more step
-     */
-    if (ctxt->tabSize == 0)
-        ctxt->tabSize = 40;
-
-    tab = (const xmlChar **) xmlMalloc(ctxt->tabSize *
-	                               sizeof(const xmlChar *));
-    if (tab == NULL) {
-	return(NULL);
-    }
-
-    /*
-     * collect all the strings accepted by the subexpression on input
-     */
-    len = xmlExpGetStartInt(ctxt, sub, tab, ctxt->tabSize, 0);
-    while (len < 0) {
-        const xmlChar **temp;
-        int newSize;
-
-        newSize = xmlGrowCapacity(ctxt->tabSize, sizeof(temp[0]),
-                                  40, XML_MAX_ITEMS);
-	if (newSize < 0) {
-	    xmlFree(tab);
-	    return(NULL);
-	}
-	temp = xmlRealloc(tab, newSize * sizeof(temp[0]));
-	if (temp == NULL) {
-	    xmlFree(tab);
-	    return(NULL);
-	}
-	tab = temp;
-	ctxt->tabSize = newSize;
-	len = xmlExpGetStartInt(ctxt, sub, tab, ctxt->tabSize, 0);
-    }
-    for (i = 0;i < len;i++) {
-        tmp = xmlExpStringDeriveInt(ctxt, exp, tab[i]);
-	if ((tmp == NULL) || (tmp == forbiddenExp)) {
-	    xmlExpFree(ctxt, ret);
-	    xmlFree((xmlChar **) tab);
-	    return(tmp);
-	}
-	tmp2 = xmlExpStringDeriveInt(ctxt, sub, tab[i]);
-	if ((tmp2 == NULL) || (tmp2 == forbiddenExp)) {
-	    xmlExpFree(ctxt, tmp);
-	    xmlExpFree(ctxt, ret);
-	    xmlFree((xmlChar **) tab);
-	    return(tmp);
-	}
-	tmp3 = xmlExpExpDeriveInt(ctxt, tmp, tmp2);
-	xmlExpFree(ctxt, tmp);
-	xmlExpFree(ctxt, tmp2);
-
-	if ((tmp3 == NULL) || (tmp3 == forbiddenExp)) {
-	    xmlExpFree(ctxt, ret);
-	    xmlFree((xmlChar **) tab);
-	    return(tmp3);
-	}
-
-	if (ret == NULL)
-	    ret = tmp3;
-	else {
-	    ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, tmp3, NULL, 0, 0);
-	    if (ret == NULL) {
-		xmlFree((xmlChar **) tab);
-	        return(NULL);
-	    }
-	}
-    }
-    xmlFree((xmlChar **) tab);
-    return(ret);
-}
-
-/**
- * xmlExpExpDerive:
- * @ctxt: the expressions context
- * @exp: the englobing expression
- * @sub: the subexpression
- *
- * Evaluates the expression resulting from @exp consuming a sub expression @sub
- * Based on algebraic derivation and sometimes direct Brzozowski derivation
- * it usually takes less than linear time and can handle expressions generating
- * infinite languages.
- *
- * Returns the resulting expression or NULL in case of internal error, the
- *         result must be freed
- */
-xmlExpNodePtr
-xmlExpExpDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
-    if ((exp == NULL) || (ctxt == NULL) || (sub == NULL))
-        return(NULL);
-
-    /*
-     * O(1) speedups
-     */
-    if (IS_NILLABLE(sub) && (!IS_NILLABLE(exp))) {
-        return(forbiddenExp);
-    }
-    if (xmlExpCheckCard(exp, sub) == 0) {
-        return(forbiddenExp);
-    }
-    return(xmlExpExpDeriveInt(ctxt, exp, sub));
-}
-
-/**
- * xmlExpSubsume:
- * @ctxt: the expressions context
- * @exp: the englobing expression
- * @sub: the subexpression
- *
- * Check whether @exp accepts all the languages accepted by @sub
- * the input being a subexpression.
- *
- * Returns 1 if true 0 if false and -1 in case of failure.
- */
-int
-xmlExpSubsume(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp, xmlExpNodePtr sub) {
-    xmlExpNodePtr tmp;
-
-    if ((exp == NULL) || (ctxt == NULL) || (sub == NULL))
-        return(-1);
-
-    /*
-     * TODO: speedup by checking the language of sub is a subset of the
-     *       language of exp
-     */
-    /*
-     * O(1) speedups
-     */
-    if (IS_NILLABLE(sub) && (!IS_NILLABLE(exp))) {
-        return(0);
-    }
-    if (xmlExpCheckCard(exp, sub) == 0) {
-        return(0);
-    }
-    tmp = xmlExpExpDeriveInt(ctxt, exp, sub);
-    if (tmp == NULL)
-        return(-1);
-    if (tmp == forbiddenExp)
-	return(0);
-    if (tmp == emptyExp)
-	return(1);
-    if ((tmp != NULL) && (IS_NILLABLE(tmp))) {
-        xmlExpFree(ctxt, tmp);
-        return(1);
-    }
-    xmlExpFree(ctxt, tmp);
-    return(0);
-}
-
-/************************************************************************
- *									*
- *			Parsing expression				*
- *									*
- ************************************************************************/
-
-static xmlExpNodePtr xmlExpParseExpr(xmlExpCtxtPtr ctxt);
-
-#undef CUR
-#define CUR (*ctxt->cur)
-#undef NEXT
-#define NEXT ctxt->cur++;
-#undef IS_BLANK
-#define IS_BLANK(c) ((c == ' ') || (c == '\n') || (c == '\r') || (c == '\t'))
-#define SKIP_BLANKS while (IS_BLANK(*ctxt->cur)) ctxt->cur++;
-
-static int
-xmlExpParseNumber(xmlExpCtxtPtr ctxt) {
-    int ret = 0;
-
-    SKIP_BLANKS
-    if (CUR == '*') {
-	NEXT
-	return(-1);
-    }
-    if ((CUR < '0') || (CUR > '9'))
-        return(-1);
-    while ((CUR >= '0') && (CUR <= '9')) {
-        ret = ret * 10 + (CUR - '0');
-	NEXT
-    }
-    return(ret);
-}
-
-static xmlExpNodePtr
-xmlExpParseOr(xmlExpCtxtPtr ctxt) {
-    const char *base;
-    xmlExpNodePtr ret;
-    const xmlChar *val;
-
-    SKIP_BLANKS
-    base = ctxt->cur;
-    if (*ctxt->cur == '(') {
-        NEXT
-	ret = xmlExpParseExpr(ctxt);
-	SKIP_BLANKS
-	if (*ctxt->cur != ')') {
-	    xmlExpFree(ctxt, ret);
-	    return(NULL);
-	}
-	NEXT;
-	SKIP_BLANKS
-	goto parse_quantifier;
-    }
-    while ((CUR != 0) && (!(IS_BLANK(CUR))) && (CUR != '(') &&
-           (CUR != ')') && (CUR != '|') && (CUR != ',') && (CUR != '{') &&
-	   (CUR != '*') && (CUR != '+') && (CUR != '?') && (CUR != '}'))
-	NEXT;
-    val = xmlDictLookup(ctxt->dict, BAD_CAST base, ctxt->cur - base);
-    if (val == NULL)
-        return(NULL);
-    ret = xmlExpHashGetEntry(ctxt, XML_EXP_ATOM, NULL, NULL, val, 0, 0);
-    if (ret == NULL)
-        return(NULL);
-    SKIP_BLANKS
-parse_quantifier:
-    if (CUR == '{') {
-        int min, max;
-
-        NEXT
-	min = xmlExpParseNumber(ctxt);
-	if (min < 0) {
-	    xmlExpFree(ctxt, ret);
-	    return(NULL);
-	}
-	SKIP_BLANKS
-	if (CUR == ',') {
-	    NEXT
-	    max = xmlExpParseNumber(ctxt);
-	    SKIP_BLANKS
-	} else
-	    max = min;
-	if (CUR != '}') {
-	    xmlExpFree(ctxt, ret);
-	    return(NULL);
-	}
-        NEXT
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
-	                         min, max);
-	SKIP_BLANKS
-    } else if (CUR == '?') {
-        NEXT
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
-	                         0, 1);
-	SKIP_BLANKS
-    } else if (CUR == '+') {
-        NEXT
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
-	                         1, -1);
-	SKIP_BLANKS
-    } else if (CUR == '*') {
-        NEXT
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_COUNT, ret, NULL, NULL,
-	                         0, -1);
-	SKIP_BLANKS
-    }
-    return(ret);
-}
-
-
-static xmlExpNodePtr
-xmlExpParseSeq(xmlExpCtxtPtr ctxt) {
-    xmlExpNodePtr ret, right;
-
-    ret = xmlExpParseOr(ctxt);
-    SKIP_BLANKS
-    while (CUR == '|') {
-        NEXT
-	right = xmlExpParseOr(ctxt);
-	if (right == NULL) {
-	    xmlExpFree(ctxt, ret);
-	    return(NULL);
-	}
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_OR, ret, right, NULL, 0, 0);
-	if (ret == NULL)
-	    return(NULL);
-    }
-    return(ret);
-}
-
-static xmlExpNodePtr
-xmlExpParseExpr(xmlExpCtxtPtr ctxt) {
-    xmlExpNodePtr ret, right;
-
-    ret = xmlExpParseSeq(ctxt);
-    SKIP_BLANKS
-    while (CUR == ',') {
-        NEXT
-	right = xmlExpParseSeq(ctxt);
-	if (right == NULL) {
-	    xmlExpFree(ctxt, ret);
-	    return(NULL);
-	}
-	ret = xmlExpHashGetEntry(ctxt, XML_EXP_SEQ, ret, right, NULL, 0, 0);
-	if (ret == NULL)
-	    return(NULL);
-    }
-    return(ret);
-}
-
-/**
- * xmlExpParse:
- * @ctxt: the expressions context
- * @expr: the 0 terminated string
- *
- * Minimal parser for regexps, it understand the following constructs
- *  - string terminals
- *  - choice operator |
- *  - sequence operator ,
- *  - subexpressions (...)
- *  - usual cardinality operators + * and ?
- *  - finite sequences  { min, max }
- *  - infinite sequences { min, * }
- * There is minimal checkings made especially no checking on strings values
- *
- * Returns a new expression or NULL in case of failure
- */
-xmlExpNodePtr
-xmlExpParse(xmlExpCtxtPtr ctxt, const char *expr) {
-    xmlExpNodePtr ret;
-
-    ctxt->expr = expr;
-    ctxt->cur = expr;
-
-    ret = xmlExpParseExpr(ctxt);
-    SKIP_BLANKS
-    if (*ctxt->cur != 0) {
-        xmlExpFree(ctxt, ret);
-        return(NULL);
-    }
-    return(ret);
-}
-
-static void
-xmlExpDumpInt(xmlBufferPtr buf, xmlExpNodePtr expr, int glob) {
-    xmlExpNodePtr c;
-
-    if (expr == NULL) return;
-    if (glob) xmlBufferWriteChar(buf, "(");
-    switch (expr->type) {
-        case XML_EXP_EMPTY:
-	    xmlBufferWriteChar(buf, "empty");
-	    break;
-        case XML_EXP_FORBID:
-	    xmlBufferWriteChar(buf, "forbidden");
-	    break;
-        case XML_EXP_ATOM:
-	    xmlBufferWriteCHAR(buf, expr->exp_str);
-	    break;
-        case XML_EXP_SEQ:
-	    c = expr->exp_left;
-	    if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
-	        xmlExpDumpInt(buf, c, 1);
-	    else
-	        xmlExpDumpInt(buf, c, 0);
-	    xmlBufferWriteChar(buf, " , ");
-	    c = expr->exp_right;
-	    if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
-	        xmlExpDumpInt(buf, c, 1);
-	    else
-	        xmlExpDumpInt(buf, c, 0);
-            break;
-        case XML_EXP_OR:
-	    c = expr->exp_left;
-	    if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
-	        xmlExpDumpInt(buf, c, 1);
-	    else
-	        xmlExpDumpInt(buf, c, 0);
-	    xmlBufferWriteChar(buf, " | ");
-	    c = expr->exp_right;
-	    if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
-	        xmlExpDumpInt(buf, c, 1);
-	    else
-	        xmlExpDumpInt(buf, c, 0);
-            break;
-        case XML_EXP_COUNT: {
-	    char rep[40];
-
-	    c = expr->exp_left;
-	    if ((c->type == XML_EXP_SEQ) || (c->type == XML_EXP_OR))
-	        xmlExpDumpInt(buf, c, 1);
-	    else
-	        xmlExpDumpInt(buf, c, 0);
-	    if ((expr->exp_min == 0) && (expr->exp_max == 1)) {
-		rep[0] = '?';
-		rep[1] = 0;
-	    } else if ((expr->exp_min == 0) && (expr->exp_max == -1)) {
-		rep[0] = '*';
-		rep[1] = 0;
-	    } else if ((expr->exp_min == 1) && (expr->exp_max == -1)) {
-		rep[0] = '+';
-		rep[1] = 0;
-	    } else if (expr->exp_max == expr->exp_min) {
-	        snprintf(rep, 39, "{%d}", expr->exp_min);
-	    } else if (expr->exp_max < 0) {
-	        snprintf(rep, 39, "{%d,inf}", expr->exp_min);
-	    } else {
-	        snprintf(rep, 39, "{%d,%d}", expr->exp_min, expr->exp_max);
-	    }
-	    rep[39] = 0;
-	    xmlBufferWriteChar(buf, rep);
-	    break;
-	}
-	default:
-            break;
-    }
-    if (glob)
-        xmlBufferWriteChar(buf, ")");
-}
-/**
- * xmlExpDump:
- * @buf:  a buffer to receive the output
- * @expr:  the compiled expression
- *
- * Serialize the expression as compiled to the buffer
- */
-void
-xmlExpDump(xmlBufferPtr buf, xmlExpNodePtr expr) {
-    if ((buf == NULL) || (expr == NULL))
-        return;
-    xmlExpDumpInt(buf, expr, 0);
-}
-
-/**
- * xmlExpMaxToken:
- * @expr: a compiled expression
- *
- * Indicate the maximum number of input a expression can accept
- *
- * Returns the maximum length or -1 in case of error
- */
-int
-xmlExpMaxToken(xmlExpNodePtr expr) {
-    if (expr == NULL)
-        return(-1);
-    return(expr->c_max);
-}
-
-/**
- * xmlExpCtxtNbNodes:
- * @ctxt: an expression context
- *
- * Debugging facility provides the number of allocated nodes at a that point
- *
- * Returns the number of nodes in use or -1 in case of error
- */
-int
-xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt) {
-    if (ctxt == NULL)
-        return(-1);
-    return(ctxt->nb_nodes);
-}
-
-/**
- * xmlExpCtxtNbCons:
- * @ctxt: an expression context
- *
- * Debugging facility provides the number of allocated nodes over lifetime
- *
- * Returns the number of nodes ever allocated or -1 in case of error
- */
-int
-xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt) {
-    if (ctxt == NULL)
-        return(-1);
-    return(ctxt->nb_cons);
-}
-
-/** DOC_ENABLE */
-#endif /* LIBXML_EXPR_ENABLED */
-
 #endif /* LIBXML_REGEXP_ENABLED */
diff -pruN 2.14.6+dfsg-0.1/xmlsave.c 2.15.0+dfsg-0.3/xmlsave.c
--- 2.14.6+dfsg-0.1/xmlsave.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlsave.c	2025-09-15 11:55:59.000000000 +0000
@@ -3,7 +3,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -23,8 +23,8 @@
 
 #include "private/buf.h"
 #include "private/enc.h"
-#include "private/entities.h"
 #include "private/error.h"
+#include "private/html.h"
 #include "private/io.h"
 #include "private/save.h"
 
@@ -33,10 +33,6 @@
 #define XHTML_NS_NAME BAD_CAST "http://www.w3.org/1999/xhtml"
 
 struct _xmlSaveCtxt {
-    void *_private;
-    int type;
-    int fd;
-    const xmlChar *filename;
     const xmlChar *encoding;
     xmlCharEncodingHandlerPtr handler;
     xmlOutputBufferPtr buf;
@@ -55,10 +51,9 @@ struct _xmlSaveCtxt {
  *									*
  ************************************************************************/
 /**
- * xmlSaveErrMemory:
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param out  an output buffer
  */
 static void
 xmlSaveErrMemory(xmlOutputBufferPtr out)
@@ -69,12 +64,12 @@ xmlSaveErrMemory(xmlOutputBufferPtr out)
 }
 
 /**
- * xmlSaveErr:
- * @code:  the error number
- * @node:  the location of the error.
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param out  an output buffer
+ * @param code  the error number
+ * @param node  the location of the error.
+ * @param extra  extra information
  */
 static void
 xmlSaveErr(xmlOutputBufferPtr out, int code, xmlNodePtr node,
@@ -114,132 +109,21 @@ xmlSaveErr(xmlOutputBufferPtr out, int c
 
 /************************************************************************
  *									*
- *			Special escaping routines			*
- *									*
- ************************************************************************/
-
-/*
- * Tables generated with tools/genEscape.py
- */
-
-static const char xmlEscapeContent[] = {
-      8, '&', '#', 'x', 'F', 'F', 'F', 'D', ';',   4, '&', '#',
-    '9', ';',   5, '&', '#', '1', '0', ';',   5, '&', '#', '1',
-    '3', ';',   6, '&', 'q', 'u', 'o', 't', ';',   5, '&', 'a',
-    'm', 'p', ';',   4, '&', 'l', 't', ';',   4, '&', 'g', 't',
-    ';',
-};
-
-static const signed char xmlEscapeTab[128] = {
-     0,  0,  0,  0,  0,  0,  0,  0,  0, -1, -1,  0,  0, 20,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-};
-
-static const signed char xmlEscapeTabAttr[128] = {
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  9, 14,  0,  0, 20,  0,  0,
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-    -1, -1, 26, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 44, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-};
-
-static void
-xmlSerializeText(xmlOutputBufferPtr buf, const xmlChar *string,
-                 unsigned flags) {
-    const char *cur;
-    const signed char *tab;
-
-    if (string == NULL)
-        return;
-
-    if (flags & XML_ESCAPE_ATTR)
-        tab = xmlEscapeTabAttr;
-    else
-        tab = xmlEscapeTab;
-
-    cur = (const char *) string;
-
-    while (*cur != 0) {
-        const char *base;
-        int c;
-        int offset;
-
-        base = cur;
-        offset = -1;
-
-        while (1) {
-            c = (unsigned char) *cur;
-
-            if (c < 0x80) {
-                offset = tab[c];
-                if (offset >= 0)
-                    break;
-            } else if (flags & XML_ESCAPE_NON_ASCII) {
-                break;
-            }
-
-            cur += 1;
-        }
-
-        if (cur > base)
-            xmlOutputBufferWrite(buf, cur - base, base);
-
-        if (offset >= 0) {
-            if (c == 0)
-                break;
-
-            xmlOutputBufferWrite(buf, xmlEscapeContent[offset],
-                                 &xmlEscapeContent[offset+1]);
-            cur += 1;
-        } else {
-            char tempBuf[12];
-            int tempSize;
-            int val = 0, len = 4;
-
-            val = xmlGetUTF8Char((const xmlChar *) cur, &len);
-            if (val < 0) {
-                val = 0xFFFD;
-                cur += 1;
-            } else {
-                if (!IS_CHAR(val))
-                    val = 0xFFFD;
-                cur += len;
-            }
-
-            tempSize = xmlSerializeHexCharRef(tempBuf, val);
-            xmlOutputBufferWrite(buf, tempSize, tempBuf);
-        }
-    }
-}
-
-/************************************************************************
- *									*
  *			Allocation and deallocation			*
  *									*
  ************************************************************************/
 
 /**
- * xmlSaveSetIndentString:
- * @ctxt:  save context
- * @indent:  indent string
- *
  * Sets the indent string.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
  *
- * Returns 0 on success, -1 if the string is NULL, empty or too long.
+ * @param ctxt  save context
+ * @param indent  indent string
+ * @returns 0 on success, -1 if the string is NULL, empty or too long.
  */
 int
-xmlSaveSetIndentString(xmlSaveCtxtPtr ctxt, const char *indent) {
+xmlSaveSetIndentString(xmlSaveCtxt *ctxt, const char *indent) {
     size_t len;
     int i;
 
@@ -259,10 +143,10 @@ xmlSaveSetIndentString(xmlSaveCtxtPtr ct
 }
 
 /**
- * xmlSaveCtxtInit:
- * @ctxt: the saving context
- *
  * Initialize a saving context
+ *
+ * @param ctxt  the saving context
+ * @param options  save options
  */
 static void
 xmlSaveCtxtInit(xmlSaveCtxtPtr ctxt, int options)
@@ -284,8 +168,6 @@ xmlSaveCtxtInit(xmlSaveCtxtPtr ctxt, int
 }
 
 /**
- * xmlFreeSaveCtxt:
- *
  * Free a saving context, destroying the output in any remaining buffer
  */
 static void
@@ -300,11 +182,9 @@ xmlFreeSaveCtxt(xmlSaveCtxtPtr ctxt)
 }
 
 /**
- * xmlNewSaveCtxt:
- *
  * Create a new saving context
  *
- * Returns the new structure or NULL in case of error
+ * @returns the new structure or NULL in case of error
  */
 static xmlSaveCtxtPtr
 xmlNewSaveCtxt(const char *encoding, int options)
@@ -347,15 +227,14 @@ xmlSaveWriteText(xmlSaveCtxt *ctxt, cons
     if (ctxt->encoding == NULL)
         flags |= XML_ESCAPE_NON_ASCII;
 
-    xmlSerializeText(ctxt->buf, text, flags);
+    xmlSerializeText(ctxt->buf, text, SIZE_MAX, flags);
 }
 
 /**
- * xmlSaveWriteAttrContent:
- * @ctxt:  save context
- * @attr:  the attribute pointer
- *
  * Serialize the attribute in the buffer
+ *
+ * @param ctxt  save context
+ * @param attr  the attribute pointer
  */
 static void
 xmlSaveWriteAttrContent(xmlSaveCtxt *ctxt, xmlAttrPtr attr)
@@ -383,11 +262,10 @@ xmlSaveWriteAttrContent(xmlSaveCtxt *ctx
 }
 
 /**
- * xmlBufDumpNotationDecl:
- * @buf:  the XML buffer output
- * @nota:  A notation declaration
- *
  * This will dump the content the notation declaration as an XML DTD definition
+ *
+ * @param buf  the XML buffer output
+ * @param nota  A notation declaration
  */
 static void
 xmlBufDumpNotationDecl(xmlOutputBufferPtr buf, xmlNotationPtr nota) {
@@ -410,11 +288,11 @@ xmlBufDumpNotationDecl(xmlOutputBufferPt
 }
 
 /**
- * xmlBufDumpNotationDeclScan:
- * @nota:  A notation declaration
- * @buf:  the XML buffer output
- *
  * This is called with the hash scan function, and just reverses args
+ *
+ * @param nota  A notation declaration
+ * @param buf  the XML buffer output
+ * @param name  unused
  */
 static void
 xmlBufDumpNotationDeclScan(void *nota, void *buf,
@@ -423,11 +301,10 @@ xmlBufDumpNotationDeclScan(void *nota, v
 }
 
 /**
- * xmlBufDumpNotationTable:
- * @buf:  an xmlBufPtr output
- * @table:  A notation table
- *
  * This will dump the content of the notation table as an XML DTD definition
+ *
+ * @param buf  an xmlBuf output
+ * @param table  A notation table
  */
 static void
 xmlBufDumpNotationTable(xmlOutputBufferPtr buf, xmlNotationTablePtr table) {
@@ -435,11 +312,10 @@ xmlBufDumpNotationTable(xmlOutputBufferP
 }
 
 /**
- * xmlBufDumpElementOccur:
- * @buf:  output buffer
- * @cur:  element table
- *
  * Dump the occurrence operator of an element.
+ *
+ * @param buf  output buffer
+ * @param cur  element table
  */
 static void
 xmlBufDumpElementOccur(xmlOutputBufferPtr buf, xmlElementContentPtr cur) {
@@ -459,11 +335,10 @@ xmlBufDumpElementOccur(xmlOutputBufferPt
 }
 
 /**
- * xmlBufDumpElementContent:
- * @buf:  output buffer
- * @content:  element table
- *
  * This will dump the content of the element table as an XML DTD definition
+ *
+ * @param buf  output buffer
+ * @param content  element table
  */
 static void
 xmlBufDumpElementContent(xmlOutputBufferPtr buf,
@@ -532,12 +407,11 @@ xmlBufDumpElementContent(xmlOutputBuffer
 }
 
 /**
- * xmlBufDumpElementDecl:
- * @buf:  an xmlBufPtr output
- * @elem:  An element table
- *
  * This will dump the content of the element declaration as an XML
  * DTD definition
+ *
+ * @param buf  an xmlBuf output
+ * @param elem  An element table
  */
 static void
 xmlBufDumpElementDecl(xmlOutputBufferPtr buf, xmlElementPtr elem) {
@@ -569,11 +443,10 @@ xmlBufDumpElementDecl(xmlOutputBufferPtr
 }
 
 /**
- * xmlBufDumpEnumeration:
- * @buf:  output buffer
- * @enum:  An enumeration
- *
  * This will dump the content of the enumeration
+ *
+ * @param buf  output buffer
+ * @param cur  an enumeration
  */
 static void
 xmlBufDumpEnumeration(xmlOutputBufferPtr buf, xmlEnumerationPtr cur) {
@@ -588,12 +461,11 @@ xmlBufDumpEnumeration(xmlOutputBufferPtr
     xmlOutputBufferWrite(buf, 1, ")");
 }
 /**
- * xmlBufDumpAttributeDecl:
- * @buf:  output buffer
- * @attr:  An attribute declaration
- *
  * This will dump the content of the attribute declaration as an XML
  * DTD definition
+ *
+ * @param ctxt  save context
+ * @param attr  an attribute declaration
  */
 static void
 xmlSaveWriteAttributeDecl(xmlSaveCtxtPtr ctxt, xmlAttributePtr attr) {
@@ -673,51 +545,48 @@ xmlSaveWriteAttributeDecl(xmlSaveCtxtPtr
 }
 
 /**
- * xmlBufDumpEntityContent:
- * @buf:  output buffer
- * @content:  entity content.
- *
  * This will dump the quoted string value, taking care of the special
  * treatment required by %
+ *
+ * @param buf  output buffer
+ * @param content  entity content.
  */
 static void
 xmlBufDumpEntityContent(xmlOutputBufferPtr buf, const xmlChar *content) {
-    if (xmlStrchr(content, '%')) {
-        const char * base, *cur;
+    const char * base, *cur;
 
-	xmlOutputBufferWrite(buf, 1, "\"");
-	base = cur = (const char *) content;
-	while (*cur != 0) {
-	    if (*cur == '"') {
-		if (base != cur)
-		    xmlOutputBufferWrite(buf, cur - base, base);
-		xmlOutputBufferWrite(buf, 6, "&quot;");
-		cur++;
-		base = cur;
-	    } else if (*cur == '%') {
-		if (base != cur)
-		    xmlOutputBufferWrite(buf, cur - base, base);
-		xmlOutputBufferWrite(buf, 6, "&#x25;");
-		cur++;
-		base = cur;
-	    } else {
-		cur++;
-	    }
-	}
-	if (base != cur)
-	    xmlOutputBufferWrite(buf, cur - base, base);
-	xmlOutputBufferWrite(buf, 1, "\"");
-    } else {
-        xmlOutputBufferWriteQuotedString(buf, content);
+    if (content == NULL)
+        return;
+
+    xmlOutputBufferWrite(buf, 1, "\"");
+    base = cur = (const char *) content;
+    while (*cur != 0) {
+        if (*cur == '"') {
+            if (base != cur)
+                xmlOutputBufferWrite(buf, cur - base, base);
+            xmlOutputBufferWrite(buf, 6, "&quot;");
+            cur++;
+            base = cur;
+        } else if (*cur == '%') {
+            if (base != cur)
+                xmlOutputBufferWrite(buf, cur - base, base);
+            xmlOutputBufferWrite(buf, 6, "&#x25;");
+            cur++;
+            base = cur;
+        } else {
+            cur++;
+        }
     }
+    if (base != cur)
+        xmlOutputBufferWrite(buf, cur - base, base);
+    xmlOutputBufferWrite(buf, 1, "\"");
 }
 
 /**
- * xmlBufDumpEntityDecl:
- * @buf:  an xmlBufPtr output
- * @ent:  An entity table
- *
  * This will dump the content of the entity table as an XML DTD definition
+ *
+ * @param buf  an xmlBuf output
+ * @param ent  An entity table
  */
 static void
 xmlBufDumpEntityDecl(xmlOutputBufferPtr buf, xmlEntityPtr ent) {
@@ -754,6 +623,10 @@ xmlBufDumpEntityDecl(xmlOutputBufferPtr
 
     if ((ent->etype == XML_INTERNAL_GENERAL_ENTITY) ||
         (ent->etype == XML_INTERNAL_PARAMETER_ENTITY)) {
+        /*
+         * We could save the original quote character and avoid
+         * calling xmlOutputBufferWriteQuotedString here.
+         */
         if (ent->orig != NULL)
             xmlOutputBufferWriteQuotedString(buf, ent->orig);
         else
@@ -769,47 +642,60 @@ xmlBufDumpEntityDecl(xmlOutputBufferPtr
  *									*
  ************************************************************************/
 
-static int xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) {
+static int
+xmlSaveSwitchEncoding(xmlSaveCtxtPtr ctxt, const char *encoding) {
     xmlOutputBufferPtr buf = ctxt->buf;
+    xmlCharEncodingHandler *handler;
+    xmlParserErrors res;
 
-    if ((encoding != NULL) && (buf->encoder == NULL) && (buf->conv == NULL)) {
-        xmlCharEncodingHandler *handler;
-        xmlParserErrors res;
+    /* shouldn't happen */
+    if ((buf->encoder != NULL) || (buf->conv != NULL))
+        return(-1);
 
-	res = xmlOpenCharEncodingHandler(encoding, /* output */ 1, &handler);
-        if (res != XML_ERR_OK) {
-            xmlSaveErr(buf, res, NULL, encoding);
+    res = xmlOpenCharEncodingHandler(encoding, /* output */ 1, &handler);
+    if (res != XML_ERR_OK) {
+        xmlSaveErr(buf, res, NULL, encoding);
+        return(-1);
+    }
+
+    if (handler != NULL) {
+        xmlBufPtr newbuf;
+
+        newbuf = xmlBufCreate(4000 /* MINLEN */);
+        if (newbuf == NULL) {
+            xmlCharEncCloseFunc(handler);
+            xmlSaveErrMemory(buf);
             return(-1);
         }
 
-        if (handler != NULL) {
-            buf->conv = xmlBufCreate(4000 /* MINLEN */);
-            if (buf->conv == NULL) {
-                xmlCharEncCloseFunc(handler);
-                xmlSaveErrMemory(buf);
-                return(-1);
-            }
-            buf->encoder = handler;
-        }
+        buf->conv = buf->buffer;
+        buf->buffer = newbuf;
+        buf->encoder = handler;
+    }
 
-        ctxt->encoding = (const xmlChar *) encoding;
+    ctxt->encoding = (const xmlChar *) encoding;
+
+    /*
+     * initialize the state, e.g. if outputting a BOM
+     */
+    xmlCharEncOutput(buf, 1);
 
-	/*
-	 * initialize the state, e.g. if outputting a BOM
-	 */
-        xmlCharEncOutput(buf, 1);
-    }
     return(0);
 }
 
-static int xmlSaveClearEncoding(xmlSaveCtxtPtr ctxt) {
+static int
+xmlSaveClearEncoding(xmlSaveCtxtPtr ctxt) {
     xmlOutputBufferPtr buf = ctxt->buf;
 
     xmlOutputBufferFlush(buf);
-    xmlCharEncCloseFunc(buf->encoder);
-    xmlBufFree(buf->conv);
-    buf->encoder = NULL;
-    buf->conv = NULL;
+
+    if (buf->encoder != NULL) {
+        xmlCharEncCloseFunc(buf->encoder);
+        buf->encoder = NULL;
+        xmlBufFree(buf->buffer);
+        buf->buffer = buf->conv;
+        buf->conv = NULL;
+    }
 
     ctxt->encoding = NULL;
 
@@ -820,8 +706,11 @@ static int xmlSaveClearEncoding(xmlSaveC
 static void
 xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur);
 #endif
-static void xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur);
-static int xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur);
+static void
+xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur);
+static int
+xmlSaveDocInternal(xmlSaveCtxtPtr ctxt, xmlDocPtr cur,
+                   const xmlChar *encoding);
 
 static void
 xmlSaveWriteIndent(xmlSaveCtxtPtr ctxt, int extra)
@@ -840,11 +729,10 @@ xmlSaveWriteIndent(xmlSaveCtxtPtr ctxt,
 }
 
 /**
- * xmlOutputBufferWriteWSNonSig:
- * @ctxt:  The save context
- * @extra: Number of extra indents to apply to ctxt->level
- *
  * Write out formatting for non-significant whitespace output.
+ *
+ * @param ctxt  The save context
+ * @param extra  Number of extra indents to apply to ctxt->level
  */
 static void
 xmlOutputBufferWriteWSNonSig(xmlSaveCtxtPtr ctxt, int extra)
@@ -862,14 +750,13 @@ xmlOutputBufferWriteWSNonSig(xmlSaveCtxt
 }
 
 /**
- * xmlNsDumpOutput:
- * @buf:  the XML buffer output
- * @cur:  a namespace
- * @ctxt: the output save context. Optional.
- *
  * Dump a local Namespace definition.
  * Should be called in the context of attributes dumps.
- * If @ctxt is supplied, @buf should be its buffer.
+ * If `ctxt` is supplied, `buf` should be its buffer.
+ *
+ * @param buf  the XML buffer output
+ * @param cur  a namespace
+ * @param ctxt  the output save context. Optional.
  */
 static void
 xmlNsDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur, xmlSaveCtxtPtr ctxt) {
@@ -896,18 +783,17 @@ xmlNsDumpOutput(xmlOutputBufferPtr buf,
 	} else
 	    xmlOutputBufferWrite(buf, 5, "xmlns");
         xmlOutputBufferWrite(buf, 2, "=\"");
-        xmlSerializeText(buf, cur->href, escapeFlags);
+        xmlSerializeText(buf, cur->href, SIZE_MAX, escapeFlags);
         xmlOutputBufferWrite(buf, 1, "\"");
     }
 }
 
 /**
- * xmlNsListDumpOutputCtxt
- * @ctxt: the save context
- * @cur:  the first namespace
- *
  * Dump a list of local namespace definitions to a save context.
  * Should be called in the context of attribute dumps.
+ *
+ * @param ctxt  the save context
+ * @param cur  the first namespace
  */
 static void
 xmlNsListDumpOutputCtxt(xmlSaveCtxtPtr ctxt, xmlNsPtr cur) {
@@ -918,15 +804,13 @@ xmlNsListDumpOutputCtxt(xmlSaveCtxtPtr c
 }
 
 /**
- * xmlNsListDumpOutput:
- * @buf:  the XML buffer output
- * @cur:  the first namespace
+ * Serialize a list of namespace definitions.
  *
- * Dump a list of local Namespace definitions.
- * Should be called in the context of attributes dumps.
+ * @param buf  the XML buffer output
+ * @param cur  the first namespace
  */
 void
-xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur) {
+xmlNsListDumpOutput(xmlOutputBuffer *buf, xmlNs *cur) {
     while (cur != NULL) {
         xmlNsDumpOutput(buf, cur, NULL);
 	cur = cur->next;
@@ -934,11 +818,10 @@ xmlNsListDumpOutput(xmlOutputBufferPtr b
 }
 
 /**
- * xmlDtdDumpOutput:
- * @buf:  the XML buffer output
- * @dtd:  the pointer to the DTD
- *
  * Dump the XML document DTD, if any.
+ *
+ * @param ctxt  the save context
+ * @param dtd  the pointer to the DTD
  */
 static void
 xmlDtdDumpOutput(xmlSaveCtxtPtr ctxt, xmlDtdPtr dtd) {
@@ -989,11 +872,10 @@ xmlDtdDumpOutput(xmlSaveCtxtPtr ctxt, xm
 }
 
 /**
- * xmlAttrDumpOutput:
- * @buf:  the XML buffer output
- * @cur:  the attribute pointer
- *
  * Dump an XML attribute
+ *
+ * @param ctxt  the save context
+ * @param cur  the attribute pointer
  */
 static void
 xmlAttrDumpOutput(xmlSaveCtxtPtr ctxt, xmlAttrPtr cur) {
@@ -1030,58 +912,50 @@ xmlAttrDumpOutput(xmlSaveCtxtPtr ctxt, x
 
 #ifdef LIBXML_HTML_ENABLED
 /**
- * htmlNodeDumpOutputInternal:
- * @cur:  the current node
- *
  * Dump an HTML node, recursive behaviour, children are printed too.
+ *
+ * @param ctxt  the save context
+ * @param cur  the current node
  */
 static int
 htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
-    const xmlChar *oldctxtenc = ctxt->encoding;
-    const xmlChar *encoding = ctxt->encoding;
-    xmlOutputBufferPtr buf = ctxt->buf;
     int switched_encoding = 0;
-    xmlDocPtr doc;
+    int format = 0;
 
     xmlInitParser();
 
-    doc = cur->doc;
-    if ((encoding == NULL) && (doc != NULL))
-	encoding = doc->encoding;
-
-    if ((encoding != NULL) && (doc != NULL))
-	htmlSetMetaEncoding(doc, (const xmlChar *) encoding);
-    if ((encoding == NULL) && (doc != NULL))
-	encoding = htmlGetMetaEncoding(doc);
-    if (encoding == NULL)
-	encoding = BAD_CAST "HTML";
-    if ((encoding != NULL) && (oldctxtenc == NULL) &&
-	(buf->encoder == NULL) && (buf->conv == NULL)) {
-	if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0)
+    if (ctxt->encoding == NULL) {
+        const char *encoding = NULL;
+
+        if (cur->doc != NULL)
+            encoding = (char *) cur->doc->encoding;
+
+        if (encoding == NULL)
+            encoding = "HTML";
+
+	if (xmlSaveSwitchEncoding(ctxt, encoding) < 0)
 	    return(-1);
 	switched_encoding = 1;
     }
+
     if (ctxt->options & XML_SAVE_FORMAT)
-	htmlNodeDumpFormatOutput(buf, doc, cur,
-				       (const char *)encoding, 1);
-    else
-	htmlNodeDumpFormatOutput(buf, doc, cur,
-				       (const char *)encoding, 0);
-    /*
-     * Restore the state of the saving context at the end of the document
-     */
-    if ((switched_encoding) && (oldctxtenc == NULL)) {
+        format = 1;
+
+    htmlNodeDumpInternal(ctxt->buf, cur, (char *) ctxt->encoding, format);
+
+    if (switched_encoding) {
 	xmlSaveClearEncoding(ctxt);
     }
+
     return(0);
 }
 #endif
 
 /**
- * xmlNodeDumpOutputInternal:
- * @cur:  the current node
- *
  * Dump an XML node, recursive behaviour, children are printed too.
+ *
+ * @param ctxt  the save context
+ * @param cur  the current node
  */
 static void
 xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
@@ -1100,7 +974,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr
         switch (cur->type) {
         case XML_DOCUMENT_NODE:
         case XML_HTML_DOCUMENT_NODE:
-	    xmlDocContentDumpOutput(ctxt, (xmlDocPtr) cur);
+	    xmlSaveDocInternal(ctxt, (xmlDocPtr) cur, ctxt->encoding);
 	    break;
 
         case XML_DTD_NODE:
@@ -1341,19 +1215,19 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr
 }
 
 /**
- * xmlDocContentDumpOutput:
- * @cur:  the document
- *
  * Dump an XML document.
+ *
+ * @param ctxt  the save context
+ * @param cur  the document
+ * @param encoding  character encoding (optional)
  */
 static int
-xmlDocContentDumpOutput(xmlSaveCtxtPtr ctxt, xmlDocPtr cur) {
+xmlSaveDocInternal(xmlSaveCtxtPtr ctxt, xmlDocPtr cur,
+                   const xmlChar *encoding) {
 #ifdef LIBXML_HTML_ENABLED
     xmlDtdPtr dtd;
     int is_xhtml = 0;
 #endif
-    const xmlChar *oldctxtenc = ctxt->encoding;
-    const xmlChar *encoding = ctxt->encoding;
     xmlOutputBufferPtr buf = ctxt->buf;
     int switched_encoding = 0;
 
@@ -1363,7 +1237,7 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr c
         (cur->type != XML_DOCUMENT_NODE))
 	 return(-1);
 
-    if (ctxt->encoding == NULL)
+    if (encoding == NULL)
 	encoding = cur->encoding;
 
     if (((cur->type == XML_HTML_DOCUMENT_NODE) &&
@@ -1371,57 +1245,48 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr c
          ((ctxt->options & XML_SAVE_XHTML) == 0)) ||
         (ctxt->options & XML_SAVE_AS_HTML)) {
 #ifdef LIBXML_HTML_ENABLED
-        if (encoding != NULL)
-	    htmlSetMetaEncoding(cur, (const xmlChar *) encoding);
-        if (encoding == NULL)
-	    encoding = htmlGetMetaEncoding(cur);
-        if (encoding == NULL)
-	    encoding = BAD_CAST "HTML";
-	if ((encoding != NULL) && (oldctxtenc == NULL) &&
-	    (buf->encoder == NULL) && (buf->conv == NULL)) {
+        int format = 0;
+
+	if (ctxt->encoding == NULL) {
+            if (encoding == NULL)
+                encoding = BAD_CAST "HTML";
+
 	    if (xmlSaveSwitchEncoding(ctxt, (const char*) encoding) < 0) {
 		return(-1);
 	    }
             switched_encoding = 1;
 	}
+
         if (ctxt->options & XML_SAVE_FORMAT)
-	    htmlDocContentDumpFormatOutput(buf, cur,
-	                                   (const char *)encoding, 1);
-	else
-	    htmlDocContentDumpFormatOutput(buf, cur,
-	                                   (const char *)encoding, 0);
+            format = 1;
+        htmlNodeDumpInternal(buf, (htmlNodePtr) cur, (char *) ctxt->encoding,
+                             format);
 #else
         return(-1);
 #endif
     } else if ((cur->type == XML_DOCUMENT_NODE) ||
                (ctxt->options & XML_SAVE_AS_XML) ||
                (ctxt->options & XML_SAVE_XHTML)) {
-	if ((encoding != NULL) && (oldctxtenc == NULL) &&
-	    (buf->encoder == NULL) && (buf->conv == NULL) &&
-	    ((ctxt->options & XML_SAVE_NO_DECL) == 0)) {
-            /*
-             * we need to switch to this encoding but just for this
-             * document since we output the XMLDecl the conversion
-             * must be done to not generate not well formed documents.
-             */
+	if ((encoding != NULL) && (ctxt->encoding == NULL)) {
             if (xmlSaveSwitchEncoding(ctxt, (const char *) encoding) < 0)
                 return(-1);
             switched_encoding = 1;
 	}
 
-
 	/*
 	 * Save the XML declaration
 	 */
 	if ((ctxt->options & XML_SAVE_NO_DECL) == 0) {
-	    xmlOutputBufferWrite(buf, 14, "<?xml version=");
+	    xmlOutputBufferWrite(buf, 15, "<?xml version=\"");
 	    if (cur->version != NULL)
-		xmlOutputBufferWriteQuotedString(buf, cur->version);
+		xmlOutputBufferWriteString(buf, (char *) cur->version);
 	    else
-		xmlOutputBufferWrite(buf, 5, "\"1.0\"");
+		xmlOutputBufferWrite(buf, 3, "1.0");
+	    xmlOutputBufferWrite(buf, 1, "\"");
 	    if (encoding != NULL) {
-		xmlOutputBufferWrite(buf, 10, " encoding=");
-		xmlOutputBufferWriteQuotedString(buf, (xmlChar *) encoding);
+		xmlOutputBufferWrite(buf, 11, " encoding=\"");
+		xmlOutputBufferWriteString(buf, (char *) encoding);
+	        xmlOutputBufferWrite(buf, 1, "\"");
 	    }
 	    switch (cur->standalone) {
 		case 0:
@@ -1467,9 +1332,10 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr c
     /*
      * Restore the state of the saving context at the end of the document
      */
-    if ((switched_encoding) && (oldctxtenc == NULL)) {
+    if (switched_encoding) {
 	xmlSaveClearEncoding(ctxt);
     }
+
     return(0);
 }
 
@@ -1481,12 +1347,10 @@ xmlDocContentDumpOutput(xmlSaveCtxtPtr c
  ************************************************************************/
 
 /**
- * xhtmlIsEmpty:
- * @node:  the node
- *
  * Check if a node is an empty xhtml node
  *
- * Returns 1 if the node is an empty node, 0 if not and -1 in case of error
+ * @param node  the node
+ * @returns 1 if the node is an empty node, 0 if not and -1 in case of error
  */
 static int
 xhtmlIsEmpty(xmlNodePtr node) {
@@ -1548,10 +1412,10 @@ xhtmlIsEmpty(xmlNodePtr node) {
 }
 
 /**
- * xhtmlAttrListDumpOutput:
- * @cur:  the first attribute pointer
- *
  * Dump a list of XML attributes
+ *
+ * @param ctxt  the save context
+ * @param cur  the first attribute pointer
  */
 static void
 xhtmlAttrListDumpOutput(xmlSaveCtxtPtr ctxt, xmlAttrPtr cur) {
@@ -1616,15 +1480,10 @@ xhtmlAttrListDumpOutput(xmlSaveCtxtPtr c
 }
 
 /**
- * xhtmlNodeDumpOutput:
- * @buf:  the XML buffer output
- * @doc:  the XHTML document
- * @cur:  the current node
- * @level: the imbrication level for indenting
- * @format: is formatting allowed
- * @encoding:  an optional encoding string
- *
  * Dump an XHTML node, recursive behaviour, children are printed too.
+ *
+ * @param ctxt  the save context
+ * @param cur  the current node
  */
 static void
 xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
@@ -1644,7 +1503,7 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt,
         switch (cur->type) {
         case XML_DOCUMENT_NODE:
         case XML_HTML_DOCUMENT_NODE:
-            xmlDocContentDumpOutput(ctxt, (xmlDocPtr) cur);
+            xmlSaveDocInternal(ctxt, (xmlDocPtr) cur, ctxt->encoding);
 	    break;
 
         case XML_NAMESPACE_DECL:
@@ -1954,17 +1813,21 @@ xhtmlNodeDumpOutput(xmlSaveCtxtPtr ctxt,
  ************************************************************************/
 
 /**
- * xmlSaveToFd:
- * @fd:  a file descriptor number
- * @encoding:  the encoding name to use or NULL
- * @options:  a set of xmlSaveOptions
- *
  * Create a document saving context serializing to a file descriptor
  * with the encoding and the options given.
  *
- * Returns a new serialization context or NULL in case of error.
+ * If `encoding` is NULL, #xmlSaveDoc uses the document's
+ * encoding and #xmlSaveTree uses UTF-8.
+ *
+ * This function doesn't allow to distinguish unsupported
+ * encoding errors from failed memory allocations.
+ *
+ * @param fd  a file descriptor number
+ * @param encoding  the encoding name to use (optional)
+ * @param options  a set of xmlSaveOptions
+ * @returns a new serialization context or NULL in case of error.
  */
-xmlSaveCtxtPtr
+xmlSaveCtxt *
 xmlSaveToFd(int fd, const char *encoding, int options)
 {
     xmlSaveCtxtPtr ret;
@@ -1981,18 +1844,21 @@ xmlSaveToFd(int fd, const char *encoding
 }
 
 /**
- * xmlSaveToFilename:
- * @filename:  a file name or an URL
- * @encoding:  the encoding name to use or NULL
- * @options:  a set of xmlSaveOptions
- *
- * 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.
+ * Create a document saving context serializing to a filename
+ * with the encoding and the options given.
+ *
+ * If `encoding` is NULL, #xmlSaveDoc uses the document's
+ * encoding and #xmlSaveTree uses UTF-8.
  *
- * Returns a new serialization context or NULL in case of error.
+ * This function doesn't allow to distinguish unsupported
+ * encoding errors from failed memory allocations.
+ *
+ * @param filename  a file name or an URL
+ * @param encoding  the encoding name to use or NULL
+ * @param options  a set of xmlSaveOptions
+ * @returns a new serialization context or NULL in case of error.
  */
-xmlSaveCtxtPtr
+xmlSaveCtxt *
 xmlSaveToFilename(const char *filename, const char *encoding, int options)
 {
     xmlSaveCtxtPtr ret;
@@ -2011,19 +1877,23 @@ xmlSaveToFilename(const char *filename,
 }
 
 /**
- * xmlSaveToBuffer:
- * @buffer:  a buffer
- * @encoding:  the encoding name to use or NULL
- * @options:  a set of xmlSaveOptions
- *
  * Create a document saving context serializing to a buffer
- * with the encoding and the options given
+ * with the encoding and the options given.
+ *
+ * If `encoding` is NULL, #xmlSaveDoc uses the document's
+ * encoding and #xmlSaveTree uses UTF-8.
  *
- * Returns a new serialization context or NULL in case of error.
+ * This function doesn't allow to distinguish unsupported
+ * encoding errors from failed memory allocations.
+ *
+ * @param buffer  a buffer
+ * @param encoding  the encoding name to use or NULL
+ * @param options  a set of xmlSaveOptions
+ * @returns a new serialization context or NULL in case of error.
  */
 
-xmlSaveCtxtPtr
-xmlSaveToBuffer(xmlBufferPtr buffer, const char *encoding, int options)
+xmlSaveCtxt *
+xmlSaveToBuffer(xmlBuffer *buffer, const char *encoding, int options)
 {
     xmlSaveCtxtPtr ret;
 
@@ -2039,19 +1909,23 @@ xmlSaveToBuffer(xmlBufferPtr buffer, con
 }
 
 /**
- * xmlSaveToIO:
- * @iowrite:  an I/O write function
- * @ioclose:  an I/O close function
- * @ioctx:  an I/O handler
- * @encoding:  the encoding name to use or NULL
- * @options:  a set of xmlSaveOptions
- *
  * Create a document saving context serializing to a file descriptor
  * with the encoding and the options given
  *
- * Returns a new serialization context or NULL in case of error.
+ * If `encoding` is NULL, #xmlSaveDoc uses the document's
+ * encoding and #xmlSaveTree uses UTF-8.
+ *
+ * This function doesn't allow to distinguish unsupported
+ * encoding errors from failed memory allocations.
+ *
+ * @param iowrite  an I/O write function
+ * @param ioclose  an I/O close function
+ * @param ioctx  an I/O handler
+ * @param encoding  the encoding name to use or NULL
+ * @param options  a set of xmlSaveOptions
+ * @returns a new serialization context or NULL in case of error.
  */
-xmlSaveCtxtPtr
+xmlSaveCtxt *
 xmlSaveToIO(xmlOutputWriteCallback iowrite,
             xmlOutputCloseCallback ioclose,
             void *ioctx, const char *encoding, int options)
@@ -2070,40 +1944,38 @@ xmlSaveToIO(xmlOutputWriteCallback iowri
 }
 
 /**
- * xmlSaveDoc:
- * @ctxt:  a document saving context
- * @doc:  a document
- *
- * 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
+ * Serialize a document.
  *
- * Returns the number of byte written or -1 in case of error
+ * If the save context has no encoding, uses the document's
+ * encoding. If the document has no encoding, uses ASCII
+ * without an encoding declaration.
+ *
+ * @param ctxt  a document saving context
+ * @param doc  a document
+ * @returns 0 on success or -1 in case of error.
  */
 long
-xmlSaveDoc(xmlSaveCtxtPtr ctxt, xmlDocPtr doc)
+xmlSaveDoc(xmlSaveCtxt *ctxt, xmlDoc *doc)
 {
     long ret = 0;
 
     if ((ctxt == NULL) || (doc == NULL)) return(-1);
-    if (xmlDocContentDumpOutput(ctxt, doc) < 0)
+    if (xmlSaveDocInternal(ctxt, doc, ctxt->encoding) < 0)
         return(-1);
     return(ret);
 }
 
 /**
- * xmlSaveTree:
- * @ctxt:  a document saving context
- * @cur:  the top node of the subtree to save
- *
- * 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
+ * Serialize a subtree starting.
+ *
+ * If the save context has no encoding, uses UTF-8.
  *
- * Returns the number of byte written or -1 in case of error
+ * @param ctxt  a document saving context
+ * @param cur  the root of the subtree to save
+ * @returns 0 on success or -1 in case of error.
  */
 long
-xmlSaveTree(xmlSaveCtxtPtr ctxt, xmlNodePtr cur)
+xmlSaveTree(xmlSaveCtxt *ctxt, xmlNode *cur)
 {
     long ret = 0;
 
@@ -2126,16 +1998,14 @@ xmlSaveTree(xmlSaveCtxtPtr ctxt, xmlNode
 }
 
 /**
- * xmlSaveNotationDecl:
- * @ctxt:  save context
- * @cur:  notation
- *
  * Serialize a notation declaration.
  *
- * Return 0 on succes, -1 on error.
+ * @param ctxt  save context
+ * @param cur  notation
+ * @returns 0 on succes, -1 on error.
  */
 int
-xmlSaveNotationDecl(xmlSaveCtxtPtr ctxt, xmlNotationPtr cur) {
+xmlSaveNotationDecl(xmlSaveCtxt *ctxt, xmlNotation *cur) {
     if (ctxt == NULL)
         return(-1);
     xmlBufDumpNotationDecl(ctxt->buf, cur);
@@ -2143,16 +2013,14 @@ xmlSaveNotationDecl(xmlSaveCtxtPtr ctxt,
 }
 
 /**
- * xmlSaveNotationTable:
- * @ctxt:  save context
- * @cur:  notation table
- *
  * Serialize notation declarations of a document.
  *
- * Return 0 on succes, -1 on error.
+ * @param ctxt  save context
+ * @param cur  notation table
+ * @returns 0 on succes, -1 on error.
  */
 int
-xmlSaveNotationTable(xmlSaveCtxtPtr ctxt, xmlNotationTablePtr cur) {
+xmlSaveNotationTable(xmlSaveCtxt *ctxt, xmlNotationTable *cur) {
     if (ctxt == NULL)
         return(-1);
     xmlBufDumpNotationTable(ctxt->buf, cur);
@@ -2160,16 +2028,14 @@ xmlSaveNotationTable(xmlSaveCtxtPtr ctxt
 }
 
 /**
- * xmlSaveFlush:
- * @ctxt:  a document saving context
- *
- * Flush a document saving context, i.e. make sure that all bytes have
- * been output.
+ * Flush a document saving context, i.e. make sure that all
+ * buffered input has been processed.
  *
- * Returns the number of byte written or -1 in case of error.
+ * @param ctxt  a document saving context
+ * @returns the number of bytes written or -1 in case of error.
  */
 int
-xmlSaveFlush(xmlSaveCtxtPtr ctxt)
+xmlSaveFlush(xmlSaveCtxt *ctxt)
 {
     if (ctxt == NULL) return(-1);
     if (ctxt->buf == NULL) return(-1);
@@ -2177,16 +2043,14 @@ xmlSaveFlush(xmlSaveCtxtPtr ctxt)
 }
 
 /**
- * xmlSaveClose:
- * @ctxt:  a document saving context
+ * Close a document saving context, i.e. make sure that all
+ * buffered input has been processed and free the context struct.
  *
- * Close a document saving context, i.e. make sure that all bytes have
- * been output and free the associated data.
- *
- * Returns the number of byte written or -1 in case of error.
+ * @param ctxt  a document saving context
+ * @returns the number of bytes written or -1 in case of error.
  */
 int
-xmlSaveClose(xmlSaveCtxtPtr ctxt)
+xmlSaveClose(xmlSaveCtxt *ctxt)
 {
     int ret;
 
@@ -2197,18 +2061,16 @@ xmlSaveClose(xmlSaveCtxtPtr ctxt)
 }
 
 /**
- * xmlSaveFinish:
- * @ctxt:  a document saving context
- *
- * Close a document saving context, i.e. make sure that all bytes have
- * been output and free the associated data.
+ * Close a document saving context, i.e. make sure that all
+ * buffered input has been processed and free the context struct.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns an xmlParserErrors code.
+ * @param ctxt  a document saving context
+ * @returns an xmlParserErrors code.
  */
 xmlParserErrors
-xmlSaveFinish(xmlSaveCtxtPtr ctxt)
+xmlSaveFinish(xmlSaveCtxt *ctxt)
 {
     int ret;
 
@@ -2227,18 +2089,17 @@ xmlSaveFinish(xmlSaveCtxtPtr ctxt)
 }
 
 /**
- * xmlSaveSetEscape:
- * @ctxt:  a document saving context
- * @escape:  the escaping function
+ * Set a custom escaping function to be used for text in element
+ * content.
  *
- * DEPRECATED: Don't use.
+ * @deprecated Don't use.
  *
- * Set a custom escaping function to be used for text in element content
- *
- * Returns 0 if successful or -1 in case of error.
+ * @param ctxt  a document saving context
+ * @param escape  the escaping function
+ * @returns 0 if successful or -1 in case of error.
  */
 int
-xmlSaveSetEscape(xmlSaveCtxtPtr ctxt, xmlCharEncodingOutputFunc escape)
+xmlSaveSetEscape(xmlSaveCtxt *ctxt, xmlCharEncodingOutputFunc escape)
 {
     if (ctxt == NULL) return(-1);
     ctxt->escape = escape;
@@ -2246,18 +2107,16 @@ xmlSaveSetEscape(xmlSaveCtxtPtr ctxt, xm
 }
 
 /**
- * xmlSaveSetAttrEscape:
- * @ctxt:  a document saving context
- * @escape:  the escaping function
- *
- * DEPRECATED: Don't use.
- *
  * Has no effect.
  *
- * Returns 0 if successful or -1 in case of error.
+ * @deprecated Don't use.
+ *
+ * @param ctxt  a document saving context
+ * @param escape  the escaping function
+ * @returns 0 if successful or -1 in case of error.
  */
 int
-xmlSaveSetAttrEscape(xmlSaveCtxtPtr ctxt,
+xmlSaveSetAttrEscape(xmlSaveCtxt *ctxt,
                      xmlCharEncodingOutputFunc escape ATTRIBUTE_UNUSED)
 {
     if (ctxt == NULL) return(-1);
@@ -2271,36 +2130,34 @@ xmlSaveSetAttrEscape(xmlSaveCtxtPtr ctxt
  ************************************************************************/
 
 /**
- * xmlBufAttrSerializeTxtContent:
- * @buf:  output buffer
- * @doc:  the document
- * @string: the text content
+ * Serialize attribute text to an output buffer.
  *
- * Serialize text attribute values to an xmlBufPtr
+ * @param buf  output buffer
+ * @param doc  the document
+ * @param string  the text content
  */
 void
-xmlBufAttrSerializeTxtContent(xmlOutputBufferPtr buf, xmlDocPtr doc,
+xmlBufAttrSerializeTxtContent(xmlOutputBuffer *buf, xmlDoc *doc,
                               const xmlChar *string)
 {
     int flags = XML_ESCAPE_ATTR;
 
     if ((doc == NULL) || (doc->encoding == NULL))
         flags |= XML_ESCAPE_NON_ASCII;
-    xmlSerializeText(buf, string, flags);
+    xmlSerializeText(buf, string, SIZE_MAX, flags);
 }
 
 /**
- * xmlAttrSerializeTxtContent:
- * @buf:  the XML buffer output
- * @doc:  the document
- * @attr: the attribute node
- * @string: the text content
+ * Serialize attribute text to an xmlBuffer.
  *
- * Serialize text attribute values to an xml simple buffer
+ * @param buf  the XML buffer output
+ * @param doc  the document
+ * @param attr  the attribute node
+ * @param string  the text content
  */
 void
-xmlAttrSerializeTxtContent(xmlBufferPtr buf, xmlDocPtr doc,
-                           xmlAttrPtr attr ATTRIBUTE_UNUSED,
+xmlAttrSerializeTxtContent(xmlBuffer *buf, xmlDoc *doc,
+                           xmlAttr *attr ATTRIBUTE_UNUSED,
                            const xmlChar *string)
 {
     xmlOutputBufferPtr out;
@@ -2316,23 +2173,26 @@ xmlAttrSerializeTxtContent(xmlBufferPtr
 }
 
 /**
- * xmlNodeDump:
- * @buf:  the XML buffer output
- * @doc:  the document
- * @cur:  the current node
- * @level: the imbrication level for indenting
- * @format: is formatting allowed
- *
- * 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.
- * Since this is using xmlBuffer structures it is limited to 2GB and somehow
- * deprecated, use xmlNodeDumpOutput() instead.
+ * Serialize an XML node to an xmlBuffer.
+ *
+ * Uses the document's encoding. If the document has no encoding,
+ * uses ASCII without an encoding declaration.
  *
- * Returns the number of bytes written to the buffer or -1 in case of error
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * Since this is using xmlBuffer structures it is limited to 2GB and
+ * somewhat deprecated, use #xmlNodeDumpOutput instead.
+ *
+ * @param buf  the XML buffer output
+ * @param doc  the document
+ * @param cur  the current node
+ * @param level  the initial indenting level
+ * @param format  is formatting allowed
+ * @returns the number of bytes written to the buffer or -1 in case of error
  */
 int
-xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
+xmlNodeDump(xmlBuffer *buf, xmlDoc *doc, xmlNode *cur, int level,
             int format)
 {
     xmlBufPtr buffer;
@@ -2356,23 +2216,25 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr
 }
 
 /**
- * xmlBufNodeDump:
- * @buf:  the XML buffer output
- * @doc:  the document
- * @cur:  the current node
- * @level: the imbrication level for indenting
- * @format: is formatting allowed
- *
- * 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
+ * Serialize an XML node to an xmlBuf.
+ *
+ * Uses the document's encoding. If the document has no encoding,
+ * uses ASCII without an encoding declaration.
+ *
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
  *
- * Returns the number of bytes written to the buffer, in case of error 0
- *     is returned or @buf stores the error
+ * @param buf  the XML buffer output
+ * @param doc  the document
+ * @param cur  the current node
+ * @param level  the imbrication level for indenting
+ * @param format  is formatting allowed
+ * @returns the number of bytes written to the buffer, in case of error 0
+ *     is returned or `buf` stores the error
  */
 
 size_t
-xmlBufNodeDump(xmlBufPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
+xmlBufNodeDump(xmlBuf *buf, xmlDoc *doc, xmlNode *cur, int level,
             int format)
 {
     size_t use;
@@ -2411,15 +2273,17 @@ xmlBufNodeDump(xmlBufPtr buf, xmlDocPtr
 }
 
 /**
- * xmlElemDump:
- * @f:  the FILE * for the output
- * @doc:  the document
- * @cur:  the current node
+ * Serialize an XML node to a `FILE`.
  *
- * Dump an XML/HTML node, recursive behaviour, children are printed too.
+ * Uses the document's encoding. If the document has no encoding,
+ * uses ASCII without an encoding declaration.
+ *
+ * @param f  the FILE * for the output
+ * @param doc  the document
+ * @param cur  the current node
  */
 void
-xmlElemDump(FILE * f, xmlDocPtr doc, xmlNodePtr cur)
+xmlElemDump(FILE * f, xmlDoc *doc, xmlNode *cur)
 {
     xmlOutputBufferPtr outbuf;
 
@@ -2448,20 +2312,24 @@ xmlElemDump(FILE * f, xmlDocPtr doc, xml
  ************************************************************************/
 
 /**
- * xmlNodeDumpOutput:
- * @buf:  the XML buffer output
- * @doc:  the document
- * @cur:  the current node
- * @level: the imbrication level for indenting
- * @format: is formatting allowed
- * @encoding:  an optional encoding string
+ * Serialize an XML node to an output buffer.
  *
- * 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
+ * If `encoding` is NULL, uses the document's encoding. If the
+ * document has no encoding, serializes as ASCII without an
+ * encoding declaration.
+ *
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * @param buf  the XML buffer output
+ * @param doc  the document
+ * @param cur  the current node
+ * @param level  the imbrication level for indenting
+ * @param format  is formatting allowed
+ * @param encoding  an optional encoding string
  */
 void
-xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
+xmlNodeDumpOutput(xmlOutputBuffer *buf, xmlDoc *doc, xmlNode *cur,
                   int level, int format, const char *encoding)
 {
     xmlSaveCtxt ctxt;
@@ -2510,273 +2378,212 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf
         xmlNodeDumpOutputInternal(&ctxt, cur);
 }
 
+static void
+xmlDocDumpInternal(xmlOutputBufferPtr buf, xmlDocPtr doc, const char *encoding,
+                   int format) {
+    xmlSaveCtxt ctxt;
+    int options;
+
+    memset(&ctxt, 0, sizeof(ctxt));
+    ctxt.buf = buf;
+
+    if (buf->encoder != NULL) {
+        /*
+         * Keep original encoding
+         */
+        encoding = buf->encoder->name;
+        ctxt.encoding = BAD_CAST encoding;
+    }
+
+    options = XML_SAVE_AS_XML;
+    if (format)
+        options |= XML_SAVE_FORMAT;
+    xmlSaveCtxtInit(&ctxt, options);
+
+    xmlSaveDocInternal(&ctxt, doc, (const xmlChar *) encoding);
+}
+
 /**
- * xmlDocDumpFormatMemoryEnc:
- * @out_doc:  Document to generate XML text from
- * @doc_txt_ptr:  Memory pointer for allocated XML text
- * @doc_txt_len:  Length of the generated XML text
- * @txt_encoding:  Character encoding to use when generating XML text
- * @format:  should formatting spaces been added
- *
- * 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
+ * Serialize an XML document to memory.
+ *
+ * If `encoding` is NULL, uses the document's encoding. If the
+ * document has no encoding, serializes as ASCII without an
+ * encoding declaration.
+ *
+ * It is up to the caller of this function to free the returned
+ * memory with #xmlFree.
+ *
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * @param out_doc  Document to generate XML text from
+ * @param doc_txt_ptr  Memory pointer for allocated XML text
+ * @param doc_txt_len  Length of the generated XML text
+ * @param txt_encoding  Character encoding to use when generating XML text
+ * @param format  should formatting spaces been added
  */
 
 void
-xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr,
+xmlDocDumpFormatMemoryEnc(xmlDoc *out_doc, xmlChar **doc_txt_ptr,
 		int * doc_txt_len, const char * txt_encoding,
 		int format) {
-    xmlSaveCtxt ctxt;
-    int options;
-    int                         dummy = 0;
-    xmlOutputBufferPtr          out_buff = NULL;
-    xmlCharEncodingHandlerPtr   conv_hdlr = NULL;
-
-    if (doc_txt_len == NULL) {
-        doc_txt_len = &dummy;   /*  Continue, caller just won't get length */
-    }
+    xmlOutputBufferPtr buf = NULL;
 
-    if (doc_txt_ptr == NULL) {
+    if (doc_txt_len != NULL)
         *doc_txt_len = 0;
-        return;
-    }
 
+    if (doc_txt_ptr == NULL)
+        return;
     *doc_txt_ptr = NULL;
-    *doc_txt_len = 0;
 
-    if (out_doc == NULL) {
-        /*  No document, no output  */
+    if (out_doc == NULL)
         return;
-    }
 
-    /*
-     *  Validate the encoding value, if provided.
-     *  This logic is copied from xmlSaveFileEnc.
-     */
-
-    if (txt_encoding == NULL)
-	txt_encoding = (const char *) out_doc->encoding;
-    if (txt_encoding != NULL) {
-        xmlParserErrors res;
-
-	res = xmlOpenCharEncodingHandler(txt_encoding, /* output */ 1,
-                                         &conv_hdlr);
-	if (res != XML_ERR_OK) {
-            xmlSaveErr(NULL, res, NULL, txt_encoding);
-	    return;
-	}
-    }
-
-    out_buff = xmlAllocOutputBuffer(conv_hdlr);
-    if (out_buff == NULL ) {
+    buf = xmlAllocOutputBuffer(NULL);
+    if (buf == NULL) {
         xmlSaveErrMemory(NULL);
         return;
     }
 
-    memset(&ctxt, 0, sizeof(ctxt));
-    ctxt.buf = out_buff;
-    ctxt.level = 0;
-    ctxt.encoding = (const xmlChar *) txt_encoding;
+    xmlDocDumpInternal(buf, out_doc, txt_encoding, format);
 
-    options = XML_SAVE_AS_XML;
-    if (format)
-        options |= XML_SAVE_FORMAT;
-    xmlSaveCtxtInit(&ctxt, options);
-
-    xmlDocContentDumpOutput(&ctxt, out_doc);
-    xmlOutputBufferFlush(out_buff);
+    xmlOutputBufferFlush(buf);
 
-    if (!out_buff->error) {
-        if (out_buff->conv != NULL) {
-            *doc_txt_len = xmlBufUse(out_buff->conv);
-            *doc_txt_ptr = xmlBufDetach(out_buff->conv);
-        } else {
-            *doc_txt_len = xmlBufUse(out_buff->buffer);
-            *doc_txt_ptr = xmlBufDetach(out_buff->buffer);
-        }
+    if (!buf->error) {
+        if (doc_txt_len != NULL)
+            *doc_txt_len = xmlBufUse(buf->buffer);
+        *doc_txt_ptr = xmlBufDetach(buf->buffer);
     }
 
-    xmlOutputBufferClose(out_buff);
+    xmlOutputBufferClose(buf);
 }
 
 /**
- * xmlDocDumpMemory:
- * @cur:  the document
- * @mem:  OUT: the memory pointer
- * @size:  OUT: the memory length
+ * Same as #xmlDocDumpFormatMemoryEnc with `encoding` set to
+ * NULL and `format` set to 0.
  *
- * Dump an XML document in memory and return the #xmlChar * and it's size
- * in bytes. It'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.
+ * @param cur  the document
+ * @param mem  OUT: the memory pointer
+ * @param size  OUT: the memory length
  */
 void
-xmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int *size) {
+xmlDocDumpMemory(xmlDoc *cur, xmlChar**mem, int *size) {
     xmlDocDumpFormatMemoryEnc(cur, mem, size, NULL, 0);
 }
 
 /**
- * xmlDocDumpFormatMemory:
- * @cur:  the document
- * @mem:  OUT: the memory pointer
- * @size:  OUT: the memory length
- * @format:  should formatting spaces been added
+ * Same as #xmlDocDumpFormatMemoryEnc with `encoding` set to
+ * NULL.
  *
- *
- * Dump an XML document in memory and return the #xmlChar * and it's size.
- * It'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
+ * @param cur  the document
+ * @param mem  OUT: the memory pointer
+ * @param size  OUT: the memory length
+ * @param format  should formatting spaces been added
  */
 void
-xmlDocDumpFormatMemory(xmlDocPtr cur, xmlChar**mem, int *size, int format) {
+xmlDocDumpFormatMemory(xmlDoc *cur, xmlChar**mem, int *size, int format) {
     xmlDocDumpFormatMemoryEnc(cur, mem, size, NULL, format);
 }
 
 /**
- * xmlDocDumpMemoryEnc:
- * @out_doc:  Document to generate XML text from
- * @doc_txt_ptr:  Memory pointer for allocated XML text
- * @doc_txt_len:  Length of the generated XML text
- * @txt_encoding:  Character encoding to use when generating XML text
- *
- * 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().
+ * Same as #xmlDocDumpFormatMemoryEnc with `format` set to 0.
+ *
+ * @param out_doc  Document to generate XML text from
+ * @param doc_txt_ptr  Memory pointer for allocated XML text
+ * @param doc_txt_len  Length of the generated XML text
+ * @param txt_encoding  Character encoding to use when generating XML text
  */
 
 void
-xmlDocDumpMemoryEnc(xmlDocPtr out_doc, xmlChar **doc_txt_ptr,
+xmlDocDumpMemoryEnc(xmlDoc *out_doc, xmlChar **doc_txt_ptr,
 	            int * doc_txt_len, const char * txt_encoding) {
     xmlDocDumpFormatMemoryEnc(out_doc, doc_txt_ptr, doc_txt_len,
 	                      txt_encoding, 0);
 }
 
 /**
- * xmlDocFormatDump:
- * @f:  the FILE*
- * @cur:  the document
- * @format: should formatting spaces been added
- *
- * Dump an XML document to an open FILE.
- *
- * returns: 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
+ * Serialize an XML document to a `FILE`.
+ *
+ * Uses the document's encoding. If the document has no encoding,
+ * uses ASCII without an encoding declaration.
+ *
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * @param f  the FILE*
+ * @param cur  the document
+ * @param format  should formatting spaces been added
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlDocFormatDump(FILE *f, xmlDocPtr cur, int format) {
-    xmlSaveCtxt ctxt;
+xmlDocFormatDump(FILE *f, xmlDoc *cur, int format) {
     xmlOutputBufferPtr buf;
-    const char * encoding;
-    xmlCharEncodingHandlerPtr handler = NULL;
-    int ret;
-    int options;
 
     if (cur == NULL) {
 	return(-1);
     }
-    encoding = (const char *) cur->encoding;
-
-    if (encoding != NULL) {
-        xmlParserErrors res;
 
-	res = xmlOpenCharEncodingHandler(encoding, /* output */ 1, &handler);
-	if (res != XML_ERR_OK) {
-	    xmlFree((char *) cur->encoding);
-	    encoding = NULL;
-	}
-    }
-    buf = xmlOutputBufferCreateFile(f, handler);
+    buf = xmlOutputBufferCreateFile(f, NULL);
     if (buf == NULL) return(-1);
-    memset(&ctxt, 0, sizeof(ctxt));
-    ctxt.buf = buf;
-    ctxt.level = 0;
-    ctxt.encoding = (const xmlChar *) encoding;
 
-    options = XML_SAVE_AS_XML;
-    if (format)
-        options |= XML_SAVE_FORMAT;
-    xmlSaveCtxtInit(&ctxt, options);
-
-    xmlDocContentDumpOutput(&ctxt, cur);
+    xmlDocDumpInternal(buf, cur, NULL, format);
 
-    ret = xmlOutputBufferClose(buf);
-    return(ret);
+    return(xmlOutputBufferClose(buf));
 }
 
 /**
- * xmlDocDump:
- * @f:  the FILE*
- * @cur:  the document
+ * Serialize an XML document to a `FILE`.
  *
- * Dump an XML document to an open FILE.
+ * Uses the document's encoding. If the document has no encoding,
+ * uses ASCII without an encoding declaration.
  *
- * returns: the number of bytes written or -1 in case of failure.
+ * @param f  the FILE*
+ * @param cur  the document
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlDocDump(FILE *f, xmlDocPtr cur) {
+xmlDocDump(FILE *f, xmlDoc *cur) {
     return(xmlDocFormatDump (f, cur, 0));
 }
 
 /**
- * xmlSaveFileTo:
- * @buf:  an output I/O buffer
- * @cur:  the document
- * @encoding:  the encoding if any assuming the I/O layer handles the transcoding
- *
- * Dump an XML document to an I/O buffer.
- * Warning ! This call xmlOutputBufferClose() on buf which is not available
- * after this call.
+ * Same as #xmlSaveFormatFileTo with `format` set to 0.
  *
- * returns: the number of bytes written or -1 in case of failure.
+ * WARNING: This calls #xmlOutputBufferClose and frees `buf`.
+ *
+ * @param buf  an output I/O buffer
+ * @param cur  the document
+ * @param encoding  the encoding if any assuming the I/O layer handles the transcoding
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlSaveFileTo(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding) {
-    xmlSaveCtxt ctxt;
-    int ret;
-
-    if (buf == NULL) return(-1);
-    if (cur == NULL) {
-        xmlOutputBufferClose(buf);
-	return(-1);
-    }
-    memset(&ctxt, 0, sizeof(ctxt));
-    ctxt.buf = buf;
-    ctxt.level = 0;
-    ctxt.encoding = (const xmlChar *) encoding;
-
-    xmlSaveCtxtInit(&ctxt, XML_SAVE_AS_XML);
-
-    xmlDocContentDumpOutput(&ctxt, cur);
-    ret = xmlOutputBufferClose(buf);
-    return(ret);
+xmlSaveFileTo(xmlOutputBuffer *buf, xmlDoc *cur, const char *encoding) {
+    return(xmlSaveFormatFileTo(buf, cur, encoding, 0));
 }
 
 /**
- * xmlSaveFormatFileTo:
- * @buf:  an output I/O buffer
- * @cur:  the document
- * @encoding:  the encoding if any assuming the I/O layer handles the transcoding
- * @format: should formatting spaces been added
- *
- * Dump an XML document to an I/O buffer.
- * Warning ! This call xmlOutputBufferClose() on buf which is not available
- * after this call.
+ * Serialize an XML document to an output buffer.
+ *
+ * If the output buffer already uses a (non-default) encoding,
+ * `encoding` is ignored. If the output buffer has no encoding
+ * and `encoding` is NULL, uses the document's encoding or
+ * ASCII without an encoding declaration.
  *
- * returns: the number of bytes written or -1 in case of failure.
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * WARNING: This calls #xmlOutputBufferClose and frees `buf`.
+ *
+ * @param buf  an output I/O buffer
+ * @param cur  the document
+ * @param encoding  the encoding if any assuming the I/O layer handles the transcoding
+ * @param format  should formatting spaces been added
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlSaveFormatFileTo(xmlOutputBufferPtr buf, xmlDocPtr cur,
+xmlSaveFormatFileTo(xmlOutputBuffer *buf, xmlDoc *cur,
                     const char *encoding, int format)
 {
-    xmlSaveCtxt ctxt;
-    int ret;
-    int options;
-
     if (buf == NULL) return(-1);
     if ((cur == NULL) ||
         ((cur->type != XML_DOCUMENT_NODE) &&
@@ -2784,128 +2591,89 @@ xmlSaveFormatFileTo(xmlOutputBufferPtr b
         xmlOutputBufferClose(buf);
 	return(-1);
     }
-    memset(&ctxt, 0, sizeof(ctxt));
-    ctxt.buf = buf;
-    ctxt.level = 0;
-    ctxt.encoding = (const xmlChar *) encoding;
 
-    options = XML_SAVE_AS_XML;
-    if (format)
-        options |= XML_SAVE_FORMAT;
-    xmlSaveCtxtInit(&ctxt, options);
+    xmlDocDumpInternal(buf, cur, encoding, format);
 
-    xmlDocContentDumpOutput(&ctxt, cur);
-    ret = xmlOutputBufferClose(buf);
-    return (ret);
+    return(xmlOutputBufferClose(buf));
 }
 
 /**
- * xmlSaveFormatFileEnc:
- * @filename:  the filename or URL to output
- * @cur:  the document being saved
- * @encoding:  the name of the encoding to use or NULL.
- * @format:  should formatting spaces be added.
- *
- * Dump an XML document to a file or an URL.
- *
- * Returns 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
+ * Serialize an XML document to a file using the given encoding.
+ * If `filename` is `"-"`, stdout is used. This is potentially
+ * insecure and might be changed in a future version.
+ *
+ * If `encoding` is NULL, uses the document's encoding. If the
+ * document has no encoding, serializes as ASCII without an
+ * encoding declaration.
+ *
+ * Note that `format` only works if the document was parsed with
+ * XML_PARSE_NOBLANKS.
+ *
+ * @param filename  the filename or URL to output
+ * @param cur  the document being saved
+ * @param encoding  the name of the encoding to use or NULL.
+ * @param format  should formatting spaces be added.
+ * @returns the number of bytes written or -1 in case of error.
  */
 int
-xmlSaveFormatFileEnc( const char * filename, xmlDocPtr cur,
+xmlSaveFormatFileEnc( const char * filename, xmlDoc *cur,
 			const char * encoding, int format ) {
-    xmlSaveCtxt ctxt;
     xmlOutputBufferPtr buf;
-    xmlCharEncodingHandlerPtr handler = NULL;
-    int ret;
-    int options;
 
     if (cur == NULL)
 	return(-1);
 
-    if (encoding == NULL)
-	encoding = (const char *) cur->encoding;
-
-    if (encoding != NULL) {
-        xmlParserErrors res;
-
-        res = xmlOpenCharEncodingHandler(encoding, /* output */ 1, &handler);
-        if (res != XML_ERR_OK)
-            return(-1);
-    }
-
 #ifdef LIBXML_ZLIB_ENABLED
     if (cur->compression < 0) cur->compression = xmlGetCompressMode();
 #endif
     /*
      * save the content to a temp buffer.
      */
-    buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression);
+    buf = xmlOutputBufferCreateFilename(filename, NULL, cur->compression);
     if (buf == NULL) return(-1);
-    memset(&ctxt, 0, sizeof(ctxt));
-    ctxt.buf = buf;
-    ctxt.level = 0;
-    ctxt.encoding = (const xmlChar *) encoding;
 
-    options = XML_SAVE_AS_XML;
-    if (format)
-        options |= XML_SAVE_FORMAT;
-    xmlSaveCtxtInit(&ctxt, options);
+    xmlDocDumpInternal(buf, cur, encoding, format);
 
-    xmlDocContentDumpOutput(&ctxt, cur);
-
-    ret = xmlOutputBufferClose(buf);
-    return(ret);
+    return(xmlOutputBufferClose(buf));
 }
 
 
 /**
- * xmlSaveFileEnc:
- * @filename:  the filename (or URL)
- * @cur:  the document
- * @encoding:  the name of an encoding (or NULL)
+ * Same as #xmlSaveFormatFileEnc with `format` set to 0.
  *
- * Dump an XML document, converting it to the given encoding
- *
- * returns: the number of bytes written or -1 in case of failure.
+ * @param filename  the filename (or URL)
+ * @param cur  the document
+ * @param encoding  the name of an encoding (or NULL)
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlSaveFileEnc(const char *filename, xmlDocPtr cur, const char *encoding) {
+xmlSaveFileEnc(const char *filename, xmlDoc *cur, const char *encoding) {
     return ( xmlSaveFormatFileEnc( filename, cur, encoding, 0 ) );
 }
 
 /**
- * xmlSaveFormatFile:
- * @filename:  the filename (or URL)
- * @cur:  the document
- * @format:  should formatting spaces been added
- *
- * Dump an XML document to a file. Will use compression if
- * compiled in and enabled. If @filename is "-" 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
+ * Same as #xmlSaveFormatFileEnc with `encoding` set to NULL.
  *
- * returns: the number of bytes written or -1 in case of failure.
+ * @param filename  the filename (or URL)
+ * @param cur  the document
+ * @param format  should formatting spaces been added
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlSaveFormatFile(const char *filename, xmlDocPtr cur, int format) {
+xmlSaveFormatFile(const char *filename, xmlDoc *cur, int format) {
     return ( xmlSaveFormatFileEnc( filename, cur, NULL, format ) );
 }
 
 /**
- * xmlSaveFile:
- * @filename:  the filename (or URL)
- * @cur:  the document
- *
- * Dump an XML document to a file. Will use compression if
- * compiled in and enabled. If @filename is "-" the stdout file is
- * used.
- * returns: the number of bytes written or -1 in case of failure.
+ * Same as #xmlSaveFormatFileEnc with `encoding` set to NULL
+ * and `format` set to 0.
+ *
+ * @param filename  the filename (or URL)
+ * @param cur  the document
+ * @returns the number of bytes written or -1 in case of failure.
  */
 int
-xmlSaveFile(const char *filename, xmlDocPtr cur) {
+xmlSaveFile(const char *filename, xmlDoc *cur) {
     return(xmlSaveFormatFileEnc(filename, cur, NULL, 0));
 }
 
diff -pruN 2.14.6+dfsg-0.1/xmlschemas.c 2.15.0+dfsg-0.3/xmlschemas.c
--- 2.14.6+dfsg-0.1/xmlschemas.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlschemas.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <veillard@redhat.com>
+ * Author: Daniel Veillard
  */
 
 /*
@@ -37,9 +37,9 @@
  *   All Group Limited (cos-all-limited)
  *   Status: complete
  *   (1.2)
- *     In xmlSchemaGroupDefReferenceTermFixup() and
+ *     In #xmlSchemaGroupDefReferenceTermFixup and
  *   (2)
- *     In xmlSchemaParseModelGroup()
+ *     In #xmlSchemaParseModelGroup
  *     TODO: Actually this should go to component-level checks,
  *     but is done here due to performance. Move it to an other layer
  *     is schema construction via an API is implemented.
@@ -383,8 +383,6 @@ typedef xmlSchemaBucket *xmlSchemaBucket
 #define XML_SCHEMA_SCHEMA_REDEFINE 3
 
 /**
- * xmlSchemaSchemaRelation:
- *
  * Used to create a graph of schema relationships.
  */
 typedef struct _xmlSchemaSchemaRelation xmlSchemaSchemaRelation;
@@ -416,7 +414,6 @@ struct _xmlSchemaBucket {
 };
 
 /**
- * xmlSchemaImport:
  * (extends xmlSchemaBucket)
  *
  * Reflects a schema. Holds some information
@@ -474,8 +471,6 @@ struct _xmlSchemaInclude {
 };
 
 /**
- * xmlSchemaBasicItem:
- *
  * The abstract base type for schema components.
  */
 typedef struct _xmlSchemaBasicItem xmlSchemaBasicItem;
@@ -486,8 +481,6 @@ struct _xmlSchemaBasicItem {
 };
 
 /**
- * xmlSchemaAnnotItem:
- *
  * The abstract base type for annotated schema components.
  * (Extends xmlSchemaBasicItem)
  */
@@ -499,8 +492,6 @@ struct _xmlSchemaAnnotItem {
 };
 
 /**
- * xmlSchemaTreeItem:
- *
  * The abstract base type for tree-like structured schema components.
  * (Extends xmlSchemaAnnotItem)
  */
@@ -516,8 +507,6 @@ struct _xmlSchemaTreeItem {
 
 #define XML_SCHEMA_ATTR_USE_FIXED 1<<0
 /**
- * xmlSchemaAttributeUsePtr:
- *
  * The abstract base type for tree-like structured schema components.
  * (Extends xmlSchemaTreeItem)
  */
@@ -541,8 +530,6 @@ struct _xmlSchemaAttributeUse {
 };
 
 /**
- * xmlSchemaAttributeUseProhibPtr:
- *
  * A helper component to reflect attribute prohibitions.
  * (Extends xmlSchemaBasicItem)
  */
@@ -557,7 +544,6 @@ struct _xmlSchemaAttributeUseProhib {
 };
 
 /**
- * xmlSchemaRedef:
  */
 typedef struct _xmlSchemaRedef xmlSchemaRedef;
 typedef xmlSchemaRedef *xmlSchemaRedefPtr;
@@ -573,7 +559,6 @@ struct _xmlSchemaRedef {
 };
 
 /**
- * xmlSchemaConstructionCtxt:
  */
 typedef struct _xmlSchemaConstructionCtxt xmlSchemaConstructionCtxt;
 typedef xmlSchemaConstructionCtxt *xmlSchemaConstructionCtxtPtr;
@@ -647,8 +632,6 @@ struct _xmlSchemaParserCtxt {
 };
 
 /**
- * xmlSchemaQNameRef:
- *
  * A component reference item (not a schema component)
  * (Extends xmlSchemaBasicItem)
  */
@@ -664,8 +647,6 @@ struct _xmlSchemaQNameRef {
 };
 
 /**
- * xmlSchemaParticle:
- *
  * A particle component.
  * (Extends xmlSchemaTreeItem)
  */
@@ -684,8 +665,6 @@ struct _xmlSchemaParticle {
 };
 
 /**
- * xmlSchemaModelGroup:
- *
  * A model group component.
  * (Extends xmlSchemaTreeItem)
  */
@@ -702,8 +681,6 @@ struct _xmlSchemaModelGroup {
 #define XML_SCHEMA_MODEL_GROUP_DEF_MARKED 1<<0
 #define XML_SCHEMA_MODEL_GROUP_DEF_REDEFINED 1<<1
 /**
- * xmlSchemaModelGroupDef:
- *
  * A model group definition component.
  * (Extends xmlSchemaTreeItem)
  */
@@ -724,8 +701,6 @@ typedef struct _xmlSchemaIDC xmlSchemaID
 typedef xmlSchemaIDC *xmlSchemaIDCPtr;
 
 /**
- * xmlSchemaIDCSelect:
- *
  * The identity-constraint "field" and "selector" item, holding the
  * XPath expression.
  */
@@ -740,8 +715,6 @@ struct _xmlSchemaIDCSelect {
 };
 
 /**
- * xmlSchemaIDC:
- *
  * The identity-constraint definition component.
  * (Extends xmlSchemaAnnotItem)
  */
@@ -760,8 +733,6 @@ struct _xmlSchemaIDC {
 };
 
 /**
- * xmlSchemaIDCAug:
- *
  * The augmented IDC information used for validation.
  */
 typedef struct _xmlSchemaIDCAug xmlSchemaIDCAug;
@@ -774,8 +745,6 @@ struct _xmlSchemaIDCAug {
 };
 
 /**
- * xmlSchemaPSVIIDCKeySequence:
- *
  * The key sequence of a node table item.
  */
 typedef struct _xmlSchemaPSVIIDCKey xmlSchemaPSVIIDCKey;
@@ -786,8 +755,6 @@ struct _xmlSchemaPSVIIDCKey {
 };
 
 /**
- * xmlSchemaPSVIIDCNode:
- *
  * The node table item of a node table.
  */
 typedef struct _xmlSchemaPSVIIDCNode xmlSchemaPSVIIDCNode;
@@ -801,8 +768,6 @@ struct _xmlSchemaPSVIIDCNode {
 };
 
 /**
- * xmlSchemaPSVIIDCBinding:
- *
  * The identity-constraint binding item of the [identity-constraint table].
  */
 typedef struct _xmlSchemaPSVIIDCBinding xmlSchemaPSVIIDCBinding;
@@ -827,8 +792,6 @@ typedef struct _xmlSchemaIDCMatcher xmlS
 typedef xmlSchemaIDCMatcher *xmlSchemaIDCMatcherPtr;
 
 /**
- * xmlSchemaIDCStateObj:
- *
  * The state object used to evaluate XPath expressions.
  */
 typedef struct _xmlSchemaIDCStateObj xmlSchemaIDCStateObj;
@@ -849,8 +812,6 @@ struct _xmlSchemaIDCStateObj {
 #define IDC_MATCHER 0
 
 /**
- * xmlSchemaIDCMatcher:
- *
  * Used to evaluate IDC selectors (and fields).
  */
 struct _xmlSchemaIDCMatcher {
@@ -886,8 +847,6 @@ struct _xmlSchemaIDCMatcher {
 #define XML_SCHEMA_NODE_INFO_ERR_BAD_TYPE      (1<<10)
 
 /**
- * xmlSchemaNodeInfo:
- *
  * Holds information of an element node.
  */
 struct _xmlSchemaNodeInfo {
@@ -971,8 +930,6 @@ struct _xmlSchemaAttrInfo {
 
 #define XML_SCHEMA_VALID_CTXT_FLAG_STREAM 1
 /**
- * xmlSchemaValidCtxt:
- *
  * A Schemas validation context
  */
 struct _xmlSchemaValidCtxt {
@@ -1049,11 +1006,6 @@ struct _xmlSchemaValidCtxt {
     void *locCtxt;
 };
 
-/**
- * xmlSchemaSubstGroup:
- *
- *
- */
 typedef struct _xmlSchemaSubstGroup xmlSchemaSubstGroup;
 typedef xmlSchemaSubstGroup *xmlSchemaSubstGroupPtr;
 struct _xmlSchemaSubstGroup {
@@ -1062,8 +1014,6 @@ struct _xmlSchemaSubstGroup {
 };
 
 /**
- * xmlIDCHashEntry:
- *
  * an entry in hash tables to quickly look up keys/uniques
  */
 typedef struct _xmlIDCHashEntry xmlIDCHashEntry;
@@ -1134,10 +1084,8 @@ xmlSchemaParseAttributeGroupRef(xmlSchem
  ************************************************************************/
 
 /**
- * xmlSchemaItemTypeToStr:
- * @type: the type of the schema item
- *
- * Returns the component name of a schema item.
+ * @param type  the type of the schema item
+ * @returns the component name of a schema item.
  */
 static const xmlChar *
 xmlSchemaItemTypeToStr(xmlSchemaTypeType type)
@@ -1190,10 +1138,8 @@ xmlSchemaItemTypeToStr(xmlSchemaTypeType
 }
 
 /**
- * xmlSchemaGetComponentTypeStr:
- * @type: the type of the schema item
- *
- * Returns the component name of a schema item.
+ * @param item  the type of the schema item
+ * @returns the component name of a schema item.
  */
 static const xmlChar *
 xmlSchemaGetComponentTypeStr(xmlSchemaBasicItemPtr item)
@@ -1210,10 +1156,8 @@ xmlSchemaGetComponentTypeStr(xmlSchemaBa
 }
 
 /**
- * xmlSchemaGetComponentNode:
- * @item: a schema component
- *
- * Returns node associated with the schema component.
+ * @param 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
@@ -1262,10 +1206,8 @@ xmlSchemaGetComponentNode(xmlSchemaBasic
 
 #if 0
 /**
- * xmlSchemaGetNextComponent:
- * @item: a schema component
- *
- * Returns the next sibling of the schema component.
+ * @param item  a schema component
+ * @returns the next sibling of the schema component.
  */
 static xmlSchemaBasicItemPtr
 xmlSchemaGetNextComponent(xmlSchemaBasicItemPtr item)
@@ -1303,15 +1245,13 @@ xmlSchemaGetNextComponent(xmlSchemaBasic
 
 
 /**
- * xmlSchemaFormatQName:
- * @buf: the string buffer
- * @namespaceName:  the namespace name
- * @localName: the local name
- *
  * Returns the given QName in the format "{namespaceName}localName" or
- * just "localName" if @namespaceName is NULL.
+ * just "localName" if `namespaceName` is NULL.
  *
- * Returns the localName if @namespaceName is NULL, a formatted
+ * @param buf  the string buffer
+ * @param namespaceName  the namespace name
+ * @param localName  the local name
+ * @returns the localName if `namespaceName` is NULL, a formatted
  * string otherwise.
  */
 static const xmlChar*
@@ -1476,10 +1416,8 @@ xmlSchemaGetIDCDesignation(xmlChar **buf
 }
 
 /**
- * xmlSchemaWildcardPCToString:
- * @pc: the type of processContents
- *
- * Returns a string representation of the type of
+ * @param pc  the type of processContents
+ * @returns a string representation of the type of
  * processContents.
  */
 static const xmlChar *
@@ -1498,16 +1436,14 @@ xmlSchemaWildcardPCToString(int pc)
 }
 
 /**
- * xmlSchemaGetCanonValueWhtspExt:
- * @val: the precomputed value
- * @retValue: the returned value
- * @ws: the whitespace type of the value
- * @for_hash: non-zero if this is supposed to generate a string for hashing
- *
  * Get a the canonical 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
+ * @param val  the precomputed value
+ * @param retValue  the returned value
+ * @param ws  the whitespace type of the value
+ * @param for_hash  non-zero if this is supposed to generate a string for hashing
+ * @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
@@ -1605,18 +1541,6 @@ xmlSchemaGetCanonValueHash(xmlSchemaValP
 }
 
 /**
- * xmlSchemaFormatItemForReport:
- * @buf: the string buffer
- * @itemDes: the designation of the item
- * @itemName: the name of the item
- * @item: the item as an object
- * @itemNode: the node of the item
- * @local: the local name
- * @parsing: if the function is used during the parse
- *
- * Returns a representation of the given item used
- * for error reports.
- *
  * The following order is used to build the resulting
  * designation if the arguments are not NULL:
  * 1a. If itemDes not NULL -> itemDes
@@ -1628,7 +1552,14 @@ xmlSchemaGetCanonValueHash(xmlSchemaValP
  * If the itemNode is an attribute node, the name of the attribute
  * will be appended to the result.
  *
- * Returns the formatted string and sets @buf to the resulting value.
+ * Returns a representation of the given item used
+ * for error reports.
+ *
+ * @param buf  the string buffer
+ * @param itemDes  the designation of the item
+ * @param item  the item as an object
+ * @param itemNode  the node of the item
+ * @returns the formatted string and sets `buf` to the resulting value.
  */
 static xmlChar*
 xmlSchemaFormatItemForReport(xmlChar **buf,
@@ -1838,13 +1769,12 @@ xmlSchemaFormatItemForReport(xmlChar **b
 }
 
 /**
- * xmlSchemaFormatFacetEnumSet:
- * @buf: the string buffer
- * @type: the type holding the enumeration facets
- *
  * Builds a string consisting of all enumeration elements.
  *
- * Returns a string of all enumeration elements.
+ * @param actxt  schema context
+ * @param buf  the string buffer
+ * @param type  the type holding the enumeration facets
+ * @returns a string of all enumeration elements.
  */
 static const xmlChar *
 xmlSchemaFormatFacetEnumSet(xmlSchemaAbstractCtxtPtr actxt,
@@ -1911,11 +1841,9 @@ xmlSchemaFormatFacetEnumSet(xmlSchemaAbs
  ************************************************************************/
 
 /**
- * xmlSchemaPErrMemory:
- * @node: a context node
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  schema parser context
  */
 static void
 xmlSchemaPErrMemory(xmlSchemaParserCtxtPtr ctxt)
@@ -1981,15 +1909,14 @@ xmlSchemaPErrFull(xmlSchemaParserCtxtPtr
 }
 
 /**
- * xmlSchemaPErr:
- * @ctxt: the parsing context
- * @node: the context node
- * @error: the error code
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- *
  * Handle a parser error
+ *
+ * @param ctxt  the parsing context
+ * @param node  the context node
+ * @param code  the error code
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaPErr(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int code,
@@ -2000,16 +1927,15 @@ xmlSchemaPErr(xmlSchemaParserCtxtPtr ctx
 }
 
 /**
- * xmlSchemaPErr2:
- * @ctxt: the parsing context
- * @node: the context node
- * @node: the current child
- * @error: the error code
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- *
  * Handle a parser error
+ *
+ * @param ctxt  the parsing context
+ * @param node  the context node
+ * @param child  the current child
+ * @param error  the error code
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPErr2(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
@@ -2024,21 +1950,20 @@ xmlSchemaPErr2(xmlSchemaParserCtxtPtr ct
 
 
 /**
- * xmlSchemaPErrExt:
- * @ctxt: the parsing context
- * @node: the context node
- * @error: the error code
- * @strData1: extra data
- * @strData2: extra data
- * @strData3: extra data
- * @msg: the message
- * @str1:  extra parameter for the message display
- * @str2:  extra parameter for the message display
- * @str3:  extra parameter for the message display
- * @str4:  extra parameter for the message display
- * @str5:  extra parameter for the message display
- *
  * Handle a parser error
+ *
+ * @param ctxt  the parsing context
+ * @param node  the context node
+ * @param code  the error code
+ * @param strData1  extra data
+ * @param strData2  extra data
+ * @param strData3  extra data
+ * @param msg  the message
+ * @param str1  extra parameter for the message display
+ * @param str2  extra parameter for the message display
+ * @param str3  extra parameter for the message display
+ * @param str4  extra parameter for the message display
+ * @param str5  extra parameter for the message display
  */
 static void LIBXML_ATTR_FORMAT(7,0)
 xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int code,
@@ -2059,11 +1984,9 @@ xmlSchemaPErrExt(xmlSchemaParserCtxtPtr
  ************************************************************************/
 
 /**
- * xmlSchemaVTypeErrMemory:
- * @node: a context node
- * @extra:  extra information
- *
  * Handle an out of memory condition
+ *
+ * @param ctxt  schema validation context
  */
 static void
 xmlSchemaVErrMemory(xmlSchemaValidCtxtPtr ctxt)
@@ -2131,19 +2054,18 @@ xmlSchemaVErrFull(xmlSchemaValidCtxtPtr
 #define WXS_ERROR_TYPE_ERROR 1
 #define WXS_ERROR_TYPE_WARNING 2
 /**
- * xmlSchemaErr4Line:
- * @ctxt: the validation context
- * @errorLevel: the error level
- * @error: the error code
- * @node: the context node
- * @line: the line number
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- * @str3: extra data
- * @str4: extra data
- *
  * Handle a validation error
+ *
+ * @param ctxt  the validation context
+ * @param errorLevel  the error level
+ * @param code  the error code
+ * @param node  the context node
+ * @param line  the line number
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
+ * @param str3  extra data
+ * @param str4  extra data
  */
 static void LIBXML_ATTR_FORMAT(6,0)
 xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
@@ -2227,16 +2149,15 @@ xmlSchemaErr4Line(xmlSchemaAbstractCtxtP
 }
 
 /**
- * xmlSchemaErr3:
- * @ctxt: the validation context
- * @node: the context node
- * @error: the error code
- * @msg: the error message
- * @str1: extra data
- * @str2: extra data
- * @str3: extra data
- *
  * Handle a validation error
+ *
+ * @param actxt  the validation context
+ * @param error  the error code
+ * @param node  the context node
+ * @param msg  the error message
+ * @param str1  extra data
+ * @param str2  extra data
+ * @param str3  extra data
  */
 static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt,
@@ -2865,14 +2786,14 @@ xmlSchemaFacetErr(xmlSchemaAbstractCtxtP
 
 
 /**
- * xmlSchemaPMissingAttrErr:
- * @ctxt: the schema validation context
- * @ownerItem: the owner as a schema object
- * @ownerElem: the owner as an element node
- * @node: the parent element node of the missing attribute node
- * @type: the corresponding type of the attribute node
- *
  * Reports an illegal attribute.
+ *
+ * @param ctxt  the schema validation context
+ * @param error  the error code
+ * @param ownerItem  the owner as a schema object
+ * @param ownerElem  the owner as an element node
+ * @param name  name of the attribute
+ * @param message  the error message
  */
 static void
 xmlSchemaPMissingAttrErr(xmlSchemaParserCtxtPtr ctxt,
@@ -2897,18 +2818,18 @@ xmlSchemaPMissingAttrErr(xmlSchemaParser
 
 
 /**
- * xmlSchemaPResCompAttrErr:
- * @ctxt: the schema validation context
- * @error: the error code
- * @ownerItem: the owner as a schema object
- * @ownerElem: the owner as an element node
- * @name: the name of the attribute holding the QName
- * @refName: the referenced local name
- * @refURI: the referenced namespace URI
- * @message: optional message
- *
  * Used to report QName attribute values that failed to resolve
  * to schema components.
+ *
+ * @param ctxt  the schema validation context
+ * @param error  the error code
+ * @param ownerItem  the owner as a schema object
+ * @param ownerElem  the owner as an element node
+ * @param name  the name of the attribute holding the QName
+ * @param refName  the referenced local name
+ * @param refURI  the referenced namespace URI
+ * @param refType  the referenced type
+ * @param refTypeStr  the referenced type string
  */
 static void
 xmlSchemaPResCompAttrErr(xmlSchemaParserCtxtPtr ctxt,
@@ -2937,14 +2858,14 @@ xmlSchemaPResCompAttrErr(xmlSchemaParser
 }
 
 /**
- * xmlSchemaPCustomAttrErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @ownerDes: the designation of the owner
- * @ownerItem: the owner as a schema object
- * @attr: the illegal attribute node
- *
  * Reports an illegal attribute during the parse.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param ownerDes  the designation of the owner
+ * @param ownerItem  the owner as a schema object
+ * @param attr  the illegal attribute node
+ * @param msg  the error message
  */
 static void
 xmlSchemaPCustomAttrErr(xmlSchemaParserCtxtPtr ctxt,
@@ -2978,13 +2899,12 @@ xmlSchemaPCustomAttrErr(xmlSchemaParserC
 }
 
 /**
- * xmlSchemaPIllegalAttrErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @ownerItem: the attribute's owner item
- * @attr: the illegal attribute node
- *
  * Reports an illegal attribute during the parse.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param ownerComp  the attribute's owner item (unused)
+ * @param attr  the illegal attribute node
  */
 static void
 xmlSchemaPIllegalAttrErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3004,18 +2924,16 @@ xmlSchemaPIllegalAttrErr(xmlSchemaParser
 }
 
 /**
- * xmlSchemaPCustomErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @itemDes: the designation of the schema item
- * @item: the schema item
- * @itemElem: the node of the schema item
- * @message: the error message
- * @str1: an optional param for the error message
- * @str2: an optional param for the error message
- * @str3: an optional param for the error message
- *
  * Reports an error during parsing.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param item  the schema item
+ * @param itemElem  the node of the schema item
+ * @param message  the error message
+ * @param str1  an optional param for the error message
+ * @param str2  an optional param for the error message
+ * @param str3  an optional param for the error message
  */
 static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPCustomErrExt(xmlSchemaParserCtxtPtr ctxt,
@@ -3042,16 +2960,14 @@ xmlSchemaPCustomErrExt(xmlSchemaParserCt
 }
 
 /**
- * xmlSchemaPCustomErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @itemDes: the designation of the schema item
- * @item: the schema item
- * @itemElem: the node of the schema item
- * @message: the error message
- * @str1: the optional param for the error message
- *
  * Reports an error during parsing.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param item  the schema item
+ * @param itemElem  the node of the schema item
+ * @param message  the error message
+ * @param str1  the optional param for the error message
  */
 static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPCustomErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3066,17 +2982,18 @@ xmlSchemaPCustomErr(xmlSchemaParserCtxtP
 }
 
 /**
- * xmlSchemaPAttrUseErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @itemDes: the designation of the schema type
- * @item: the schema type
- * @itemElem: the node of the schema type
- * @attr: the invalid schema attribute
- * @message: the error message
- * @str1: the optional param for the error message
- *
  * Reports an attribute use error during parsing.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param node  the context node
+ * @param ownerItem  the owner as a schema object
+ * @param attruse  the invalid schema attribute
+ * @param message  the error message
+ * @param str1  the optional param for the error message
+ * @param str2  the optional param for the error message
+ * @param str3  the optional param for the error message
+ * @param str4  the optional param for the error message
  */
 static void LIBXML_ATTR_FORMAT(6,0)
 xmlSchemaPAttrUseErr4(xmlSchemaParserCtxtPtr ctxt,
@@ -3105,14 +3022,13 @@ xmlSchemaPAttrUseErr4(xmlSchemaParserCtx
 }
 
 /**
- * xmlSchemaPIllegalFacetAtomicErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @type: the schema type
- * @baseType: the base type of type
- * @facet: the illegal facet
- *
  * Reports an illegal facet for atomic simple types.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param type  the schema type
+ * @param baseType  the base type of type
+ * @param facet  the illegal facet
  */
 static void
 xmlSchemaPIllegalFacetAtomicErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3135,14 +3051,12 @@ xmlSchemaPIllegalFacetAtomicErr(xmlSchem
 }
 
 /**
- * xmlSchemaPIllegalFacetListUnionErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @itemDes: the designation of the schema item involved
- * @item: the schema item involved
- * @facet: the illegal facet
+ * Reports an illegal facet for `<list>` and `<union>`.
  *
- * Reports an illegal facet for <list> and <union>.
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param type  the schema type
+ * @param facet  the illegal facet
  */
 static void
 xmlSchemaPIllegalFacetListUnionErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3161,14 +3075,14 @@ xmlSchemaPIllegalFacetListUnionErr(xmlSc
 }
 
 /**
- * xmlSchemaPMutualExclAttrErr:
- * @ctxt: the schema validation context
- * @error: the error code
- * @elemDes: the designation of the parent element node
- * @attr: the bad attribute node
- * @type: the corresponding type of the attribute node
- *
  * Reports an illegal attribute.
+ *
+ * @param ctxt  the schema validation context
+ * @param error  the error code
+ * @param ownerItem  the owner as a schema object
+ * @param attr  the bad attribute node
+ * @param name1  first mutually exclusive name
+ * @param name2  second mutually exclusive name
  */
 static void
 xmlSchemaPMutualExclAttrErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3188,16 +3102,19 @@ xmlSchemaPMutualExclAttrErr(xmlSchemaPar
 }
 
 /**
- * xmlSchemaPSimpleTypeErr:
- * @ctxt:  the schema validation context
- * @error: the error code
- * @type: the type specifier
- * @ownerItem: the schema object if existent
- * @node: the validated node
- * @value: the validated value
- *
  * Reports a simple type validation error.
  * TODO: Should this report the value of an element as well?
+ *
+ * @param ctxt  the schema validation context
+ * @param error  the error code
+ * @param ownerItem  the schema object if existent
+ * @param node  the validated node
+ * @param type  the type specifier
+ * @param expected  the expected value
+ * @param value  the validated value
+ * @param message  error message
+ * @param str1  extra data
+ * @param str2  extra data
  */
 static void LIBXML_ATTR_FORMAT(8,0)
 xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3281,16 +3198,15 @@ xmlSchemaPSimpleTypeErr(xmlSchemaParserC
 }
 
 /**
- * xmlSchemaPContentErr:
- * @ctxt: the schema parser context
- * @error: the error code
- * @ownerItem: the owner item of the holder of the content
- * @ownerElem: the node of the holder of the content
- * @child: the invalid child node
- * @message: the optional error message
- * @content: the optional string describing the correct content
- *
  * Reports an error concerning the content of a schema element.
+ *
+ * @param ctxt  the schema parser context
+ * @param error  the error code
+ * @param ownerItem  the owner item of the holder of the content
+ * @param ownerElem  the node of the holder of the content
+ * @param child  the invalid child node
+ * @param message  the optional error message
+ * @param content  the optional string describing the correct content
  */
 static void
 xmlSchemaPContentErr(xmlSchemaParserCtxtPtr ctxt,
@@ -3345,12 +3261,10 @@ xmlSchemaPContentErr(xmlSchemaParserCtxt
  ************************************************************************/
 
 /**
- * xmlSchemaNewSchemaForParserCtxt:
- * @ctxt:  a schema validation context
- *
  * Allocate a new Schema structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a schema validation context
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlSchemaPtr
 xmlSchemaNewSchema(xmlSchemaParserCtxtPtr ctxt)
@@ -3370,13 +3284,11 @@ xmlSchemaNewSchema(xmlSchemaParserCtxtPt
 }
 
 /**
- * xmlSchemaNewFacet:
- *
  * Allocate a new Facet structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @returns the newly allocated structure or NULL in case or error
  */
-xmlSchemaFacetPtr
+xmlSchemaFacet *
 xmlSchemaNewFacet(void)
 {
     xmlSchemaFacetPtr ret;
@@ -3391,13 +3303,11 @@ xmlSchemaNewFacet(void)
 }
 
 /**
- * xmlSchemaNewAnnot:
- * @ctxt:  a schema validation context
- * @node:  a node
- *
  * Allocate a new annotation structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param ctxt  a schema validation context
+ * @param node  a node
+ * @returns the newly allocated structure or NULL in case or error
  */
 static xmlSchemaAnnotPtr
 xmlSchemaNewAnnot(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node)
@@ -3531,10 +3441,9 @@ xmlSchemaItemListRemove(xmlSchemaItemLis
 }
 
 /**
- * xmlSchemaItemListFree:
- * @annot:  a schema type structure
- *
  * Deallocate a annotation structure
+ *
+ * @param list  a schema type structure
  */
 static void
 xmlSchemaItemListFree(xmlSchemaItemListPtr list)
@@ -3732,10 +3641,9 @@ xmlSchemaAddItemSize(xmlSchemaItemListPt
 }
 
 /**
- * xmlSchemaFreeAnnot:
- * @annot:  a schema type structure
- *
  * Deallocate a annotation structure
+ *
+ * @param annot  a schema type structure
  */
 static void
 xmlSchemaFreeAnnot(xmlSchemaAnnotPtr annot)
@@ -3756,10 +3664,9 @@ xmlSchemaFreeAnnot(xmlSchemaAnnotPtr ann
 }
 
 /**
- * xmlSchemaFreeNotation:
- * @schema:  a schema notation structure
- *
  * Deallocate a Schema Notation structure.
+ *
+ * @param nota  a schema notation structure
  */
 static void
 xmlSchemaFreeNotation(xmlSchemaNotationPtr nota)
@@ -3772,10 +3679,9 @@ xmlSchemaFreeNotation(xmlSchemaNotationP
 }
 
 /**
- * xmlSchemaFreeAttribute:
- * @attr:  an attribute declaration
- *
  * Deallocates an attribute declaration structure.
+ *
+ * @param attr  an attribute declaration
  */
 static void
 xmlSchemaFreeAttribute(xmlSchemaAttributePtr attr)
@@ -3790,10 +3696,9 @@ xmlSchemaFreeAttribute(xmlSchemaAttribut
 }
 
 /**
- * xmlSchemaFreeAttributeUse:
- * @use:  an attribute use
- *
  * Deallocates an attribute use structure.
+ *
+ * @param use  an attribute use
  */
 static void
 xmlSchemaFreeAttributeUse(xmlSchemaAttributeUsePtr use)
@@ -3808,10 +3713,9 @@ xmlSchemaFreeAttributeUse(xmlSchemaAttri
 }
 
 /**
- * xmlSchemaFreeAttributeUseProhib:
- * @prohib:  an attribute use prohibition
- *
  * Deallocates an attribute use structure.
+ *
+ * @param prohib  an attribute use prohibition
  */
 static void
 xmlSchemaFreeAttributeUseProhib(xmlSchemaAttributeUseProhibPtr prohib)
@@ -3822,7 +3726,6 @@ xmlSchemaFreeAttributeUseProhib(xmlSchem
 }
 
 /**
- * xmlSchemaFreeWildcardNsSet:
  * set:  a schema wildcard namespace
  *
  * Deallocates a list of wildcard constraint structures.
@@ -3840,13 +3743,12 @@ xmlSchemaFreeWildcardNsSet(xmlSchemaWild
 }
 
 /**
- * xmlSchemaFreeWildcard:
- * @wildcard:  a wildcard structure
- *
  * Deallocates a wildcard structure.
+ *
+ * @param wildcard  a wildcard structure
  */
 void
-xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard)
+xmlSchemaFreeWildcard(xmlSchemaWildcard *wildcard)
 {
     if (wildcard == NULL)
         return;
@@ -3860,10 +3762,9 @@ xmlSchemaFreeWildcard(xmlSchemaWildcardP
 }
 
 /**
- * xmlSchemaFreeAttributeGroup:
- * @schema:  a schema attribute group structure
- *
  * Deallocate a Schema Attribute Group structure.
+ *
+ * @param attrGr  a schema attribute group structure
  */
 static void
 xmlSchemaFreeAttributeGroup(xmlSchemaAttributeGroupPtr attrGr)
@@ -3878,10 +3779,9 @@ xmlSchemaFreeAttributeGroup(xmlSchemaAtt
 }
 
 /**
- * xmlSchemaFreeQNameRef:
- * @item: a QName reference structure
- *
  * Deallocatea a QName reference structure.
+ *
+ * @param item  a QName reference structure
  */
 static void
 xmlSchemaFreeQNameRef(xmlSchemaQNameRefPtr item)
@@ -3890,10 +3790,9 @@ xmlSchemaFreeQNameRef(xmlSchemaQNameRefP
 }
 
 /**
- * xmlSchemaFreeTypeLinkList:
- * @alink: a type link
- *
  * Deallocate a list of types.
+ *
+ * @param link  a type link
  */
 static void
 xmlSchemaFreeTypeLinkList(xmlSchemaTypeLinkPtr link)
@@ -3923,10 +3822,9 @@ xmlSchemaFreeIDCStateObjList(xmlSchemaID
 }
 
 /**
- * xmlSchemaFreeIDC:
- * @idc: a identity-constraint definition
- *
  * Deallocates an identity-constraint definition.
+ *
+ * @param idcDef  a identity-constraint definition
  */
 static void
 xmlSchemaFreeIDC(xmlSchemaIDCPtr idcDef)
@@ -3958,10 +3856,9 @@ xmlSchemaFreeIDC(xmlSchemaIDCPtr idcDef)
 }
 
 /**
- * xmlSchemaFreeElement:
- * @schema:  a schema element structure
- *
  * Deallocate a Schema Element structure.
+ *
+ * @param elem  a schema element structure
  */
 static void
 xmlSchemaFreeElement(xmlSchemaElementPtr elem)
@@ -3978,13 +3875,12 @@ xmlSchemaFreeElement(xmlSchemaElementPtr
 }
 
 /**
- * xmlSchemaFreeFacet:
- * @facet:  a schema facet structure
- *
  * Deallocate a Schema Facet structure.
+ *
+ * @param facet  a schema facet structure
  */
 void
-xmlSchemaFreeFacet(xmlSchemaFacetPtr facet)
+xmlSchemaFreeFacet(xmlSchemaFacet *facet)
 {
     if (facet == NULL)
         return;
@@ -3998,13 +3894,12 @@ xmlSchemaFreeFacet(xmlSchemaFacetPtr fac
 }
 
 /**
- * xmlSchemaFreeType:
- * @type:  a schema type structure
- *
  * Deallocate a Schema Type structure.
+ *
+ * @param type  a schema type structure
  */
 void
-xmlSchemaFreeType(xmlSchemaTypePtr type)
+xmlSchemaFreeType(xmlSchemaType *type)
 {
     if (type == NULL)
         return;
@@ -4040,10 +3935,9 @@ xmlSchemaFreeType(xmlSchemaTypePtr type)
 }
 
 /**
- * xmlSchemaFreeModelGroupDef:
- * @item:  a schema model group definition
- *
  * Deallocates a schema model group definition.
+ *
+ * @param item  a schema model group definition
  */
 static void
 xmlSchemaFreeModelGroupDef(xmlSchemaModelGroupDefPtr item)
@@ -4054,10 +3948,9 @@ xmlSchemaFreeModelGroupDef(xmlSchemaMode
 }
 
 /**
- * xmlSchemaFreeModelGroup:
- * @item:  a schema model group
- *
  * Deallocates a schema model group structure.
+ *
+ * @param item  a schema model group
  */
 static void
 xmlSchemaFreeModelGroup(xmlSchemaModelGroupPtr item)
@@ -4142,13 +4035,12 @@ xmlSchemaComponentListFree(xmlSchemaItem
 }
 
 /**
- * xmlSchemaFree:
- * @schema:  a schema structure
- *
  * Deallocate a Schema structure.
+ *
+ * @param schema  a schema structure
  */
 void
-xmlSchemaFree(xmlSchemaPtr schema)
+xmlSchemaFree(xmlSchema *schema)
 {
     if (schema == NULL)
         return;
@@ -4202,11 +4094,13 @@ static void
 xmlSchemaTypeDump(xmlSchemaTypePtr type, FILE * output); /* forward */
 
 /**
- * xmlSchemaElementDump:
- * @elem:  an element
- * @output:  the file output
- *
  * Dump the element
+ *
+ * @param payload  an element
+ * @param data  the file output
+ * @param name  unused
+ * @param namespace  unused
+ * @param context  unused
  */
 static void
 xmlSchemaElementDump(void *payload, void *data,
@@ -4289,11 +4183,10 @@ xmlSchemaElementDump(void *payload, void
 }
 
 /**
- * xmlSchemaAnnotDump:
- * @output:  the file output
- * @annot:  a annotation
- *
  * Dump the annotation
+ *
+ * @param output  the file output
+ * @param annot  a annotation
  */
 static void
 xmlSchemaAnnotDump(FILE * output, xmlSchemaAnnotPtr annot)
@@ -4312,12 +4205,11 @@ xmlSchemaAnnotDump(FILE * output, xmlSch
 }
 
 /**
- * xmlSchemaContentModelDump:
- * @particle: the schema particle
- * @output: the file output
- * @depth: the depth used for indentation
- *
  * Dump a SchemaType structure
+ *
+ * @param particle  the schema particle
+ * @param output  the file output
+ * @param depth  the depth used for indentation
  */
 static void
 xmlSchemaContentModelDump(xmlSchemaParticlePtr particle, FILE * output, int depth)
@@ -4386,11 +4278,10 @@ xmlSchemaContentModelDump(xmlSchemaParti
 }
 
 /**
- * xmlSchemaAttrUsesDump:
- * @uses:  attribute uses list
- * @output:  the file output
- *
  * Dumps a list of attribute use components.
+ *
+ * @param uses  attribute uses list
+ * @param output  the file output
  */
 static void
 xmlSchemaAttrUsesDump(xmlSchemaItemListPtr uses, FILE * output)
@@ -4430,11 +4321,10 @@ xmlSchemaAttrUsesDump(xmlSchemaItemListP
 }
 
 /**
- * xmlSchemaTypeDump:
- * @output:  the file output
- * @type:  a type structure
- *
  * Dump a SchemaType structure
+ *
+ * @param output  the file output
+ * @param type  a type structure
  */
 static void
 xmlSchemaTypeDump(xmlSchemaTypePtr type, FILE * output)
@@ -4538,14 +4428,13 @@ xmlSchemaTypeDumpEntry(void *type, void
 }
 
 /**
- * xmlSchemaDump:
- * @output:  the file output
- * @schema:  a schema structure
- *
  * Dump a Schema structure.
+ *
+ * @param output  the file output
+ * @param schema  a schema structure
  */
 void
-xmlSchemaDump(FILE * output, xmlSchemaPtr schema)
+xmlSchemaDump(FILE * output, xmlSchema *schema)
 {
     if (output == NULL)
         return;
@@ -4578,14 +4467,12 @@ xmlSchemaDump(FILE * output, xmlSchemaPt
  ************************************************************************/
 
 /**
- * xmlSchemaGetPropNode:
- * @node: the element node
- * @name: the name of the attribute
- *
- * Seeks an attribute with a name of @name in
+ * Seeks an attribute with a name of `name` in
  * no namespace.
  *
- * Returns the attribute or NULL if not present.
+ * @param node  the element node
+ * @param name  the name of the attribute
+ * @returns the attribute or NULL if not present.
  */
 static xmlAttrPtr
 xmlSchemaGetPropNode(xmlNodePtr node, const char *name)
@@ -4604,15 +4491,13 @@ xmlSchemaGetPropNode(xmlNodePtr node, co
 }
 
 /**
- * xmlSchemaGetPropNodeNs:
- * @node: the element node
- * @uri: the uri
- * @name: the name of the attribute
- *
- * Seeks an attribute with a local name of @name and
- * a namespace URI of @uri.
+ * Seeks an attribute with a local name of `name` and
+ * a namespace URI of `uri`.
  *
- * Returns the attribute or NULL if not present.
+ * @param node  the element node
+ * @param uri  the uri
+ * @param name  the name of the attribute
+ * @returns the attribute or NULL if not present.
  */
 static xmlAttrPtr
 xmlSchemaGetPropNodeNs(xmlNodePtr node, const char *uri, const char *name)
@@ -4655,14 +4540,12 @@ xmlSchemaGetNodeContentNoDict(xmlNodePtr
 }
 
 /**
- * xmlSchemaGetProp:
- * @ctxt: the parser context
- * @node: the node
- * @name: the property name
- *
  * Read a attribute value and internalize the string
  *
- * Returns the string or NULL if not present.
+ * @param ctxt  the parser context
+ * @param node  the node
+ * @param name  the property name
+ * @returns the string or NULL if not present.
  */
 static const xmlChar *
 xmlSchemaGetProp(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
@@ -4703,14 +4586,12 @@ xmlSchemaGetProp(xmlSchemaParserCtxtPtr
     }
 
 /**
- * xmlSchemaGetElem:
- * @schema:  the schema context
- * @name:  the element name
- * @ns:  the element namespace
- *
  * Lookup a global element declaration in the schema.
  *
- * Returns the element declaration or NULL if not found.
+ * @param schema  the schema context
+ * @param name  the element name
+ * @param nsName  the element namespace
+ * @returns the element declaration or NULL if not found.
  */
 static xmlSchemaElementPtr
 xmlSchemaGetElem(xmlSchemaPtr schema, const xmlChar * name,
@@ -4728,14 +4609,12 @@ exit:
 }
 
 /**
- * xmlSchemaGetType:
- * @schema:  the main schema
- * @name:  the type's name
- * nsName:  the type's namespace
- *
  * Lookup a type in the schemas or the predefined types
  *
- * Returns the group definition or NULL if not found.
+ * @param schema  the main schema
+ * @param name  the type's name
+ * @param nsName  the type's namespace
+ * @returns the group definition or NULL if not found.
  */
 static xmlSchemaTypePtr
 xmlSchemaGetType(xmlSchemaPtr schema, const xmlChar * name,
@@ -4766,14 +4645,12 @@ exit:
 }
 
 /**
- * xmlSchemaGetAttributeDecl:
- * @schema:  the context of the schema
- * @name:  the name of the attribute
- * @ns:  the target namespace of the attribute
- *
  * Lookup a an attribute in the schema or imported schemas
  *
- * Returns the attribute declaration or NULL if not found.
+ * @param schema  the context of the schema
+ * @param name  the name of the attribute
+ * @param nsName  the target namespace of the attribute
+ * @returns the attribute declaration or NULL if not found.
  */
 static xmlSchemaAttributePtr
 xmlSchemaGetAttributeDecl(xmlSchemaPtr schema, const xmlChar * name,
@@ -4791,14 +4668,12 @@ exit:
 }
 
 /**
- * xmlSchemaGetAttributeGroup:
- * @schema:  the context of the schema
- * @name:  the name of the attribute group
- * @ns:  the target namespace of the attribute group
- *
  * Lookup a an attribute group in the schema or imported schemas
  *
- * Returns the attribute group definition or NULL if not found.
+ * @param schema  the context of the schema
+ * @param name  the name of the attribute group
+ * @param nsName  the target namespace of the attribute group
+ * @returns the attribute group definition or NULL if not found.
  */
 static xmlSchemaAttributeGroupPtr
 xmlSchemaGetAttributeGroup(xmlSchemaPtr schema, const xmlChar * name,
@@ -4822,14 +4697,12 @@ exit:
 }
 
 /**
- * xmlSchemaGetGroup:
- * @schema:  the context of 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.
+ * @param schema  the context of the schema
+ * @param name  the name of the group
+ * @param nsName  the target namespace of the group
+ * @returns the group definition or NULL if not found.
  */
 static xmlSchemaModelGroupDefPtr
 xmlSchemaGetGroup(xmlSchemaPtr schema, const xmlChar * name,
@@ -4880,14 +4753,13 @@ exit:
 }
 
 /**
- * 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.
+ * @param schema  the schema
+ * @param itemType  the item type
+ * @param name  the name of the group
+ * @param targetNs  the target namespace of the group
+ * @returns the group definition or NULL if not found.
  */
 static xmlSchemaBasicItemPtr
 xmlSchemaGetNamedComponent(xmlSchemaPtr schema,
@@ -4918,13 +4790,11 @@ xmlSchemaGetNamedComponent(xmlSchemaPtr
     (((n)->type == XML_TEXT_NODE) && (xmlSchemaIsBlank((n)->content, -1)))
 
 /**
- * xmlSchemaIsBlank:
- * @str:  a string
- * @len: the length of the string or -1
- *
  * Check if a string is ignorable
  *
- * Returns 1 if the string is NULL or made of blanks chars, 0 otherwise
+ * @param str  a string
+ * @param len  the length of the string or -1
+ * @returns 1 if the string is NULL or made of blanks chars, 0 otherwise
  */
 static int
 xmlSchemaIsBlank(xmlChar * str, int len)
@@ -5035,15 +4905,15 @@ subschemas:
 }
 
 /**
- * xmlSchemaAddNotation:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the item name
- *
  * Add an XML schema annotation declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param schema  the schema being built
+ * @param name  the item name
+ * @param nsName  the element namespace
+ * @param node  unused
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaNotationPtr
 xmlSchemaAddNotation(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -5071,16 +4941,16 @@ xmlSchemaAddNotation(xmlSchemaParserCtxt
 }
 
 /**
- * xmlSchemaAddAttribute:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the item name
- * @namespace:  the namespace
- *
  * Add an XML schema Attribute declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param schema  the schema being built
+ * @param name  the item name
+ * @param nsName  the item namespace
+ * @param node  the context node
+ * @param topLevel  whether this is a top-level element
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaAttributePtr
 xmlSchemaAddAttribute(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -5112,16 +4982,12 @@ xmlSchemaAddAttribute(xmlSchemaParserCtx
 }
 
 /**
- * xmlSchemaAddAttributeUse:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the item name
- * @namespace:  the namespace
- *
  * Add an XML schema Attribute declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param pctxt  a schema parser context
+ * @param node  the context node
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaAttributeUsePtr
 xmlSchemaAddAttributeUse(xmlSchemaParserCtxtPtr pctxt,
@@ -5181,16 +5047,14 @@ xmlSchemaAddRedef(xmlSchemaParserCtxtPtr
 }
 
 /**
- * xmlSchemaAddAttributeGroupDefinition:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the item name
- * @nsName:  the target namespace
- * @node: the corresponding node
- *
  * Add an XML schema Attribute Group definition.
  *
- * Returns the new structure or NULL in case of error
+ * @param pctxt  a schema parser context
+ * @param schema  the schema being built
+ * @param name  the item name
+ * @param nsName  the target namespace
+ * @param node  the corresponding node
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaAttributeGroupPtr
 xmlSchemaAddAttributeGroupDefinition(xmlSchemaParserCtxtPtr pctxt,
@@ -5233,16 +5097,15 @@ xmlSchemaAddAttributeGroupDefinition(xml
 }
 
 /**
- * xmlSchemaAddElement:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the type name
- * @namespace:  the type namespace
- *
  * Add an XML schema Element declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param name  the type name
+ * @param nsName  the type namespace
+ * @param node  the context node
+ * @param topLevel  whether this is a top-level element
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaElementPtr
 xmlSchemaAddElement(xmlSchemaParserCtxtPtr ctxt,
@@ -5274,16 +5137,17 @@ xmlSchemaAddElement(xmlSchemaParserCtxtP
 }
 
 /**
- * xmlSchemaAddType:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @name:  the item name
- * @namespace:  the namespace
- *
  * Add an XML schema item
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param schema  the schema being built
+ * @param type  the type
+ * @param name  the item name
+ * @param nsName  the namespace
+ * @param node  the context node
+ * @param topLevel  whether this is a top-level element
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaTypePtr
 xmlSchemaAddType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -5369,16 +5233,14 @@ xmlSchemaAddAttributeUseProhib(xmlSchema
 
 
 /**
- * xmlSchemaAddModelGroup:
- * @ctxt:  a schema parser context
- * @schema:  the schema being built
- * @type: the "compositor" type of the model group
- * @node: the node in the schema doc
- *
  * Adds a schema model group
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param schema  the schema being built
+ * @param type  the "compositor" type of the model group
+ * @param node  the node in the schema doc
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaModelGroupPtr
 xmlSchemaAddModelGroup(xmlSchemaParserCtxtPtr ctxt,
@@ -5409,17 +5271,14 @@ xmlSchemaAddModelGroup(xmlSchemaParserCt
 
 
 /**
- * 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 structure or NULL in case of error
+ * @param ctxt  a schema parser context
+ * @param node  the corresponding node in the schema doc
+ * @param min  the minOccurs
+ * @param max  the maxOccurs
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaParticlePtr
 xmlSchemaAddParticle(xmlSchemaParserCtxtPtr ctxt,
@@ -5454,14 +5313,14 @@ xmlSchemaAddParticle(xmlSchemaParserCtxt
 }
 
 /**
- * xmlSchemaAddModelGroupDefinition:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @name:  the group name
- *
  * Add an XML schema Group definition
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param name  the group name
+ * @param nsName  the group namespace
+ * @param node  the context node
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaModelGroupDefPtr
 xmlSchemaAddModelGroupDefinition(xmlSchemaParserCtxtPtr ctxt,
@@ -5502,12 +5361,10 @@ xmlSchemaAddModelGroupDefinition(xmlSche
 }
 
 /**
- * xmlSchemaNewWildcardNs:
- * @ctxt:  a schema validation context
- *
  * Creates a new wildcard namespace constraint.
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaWildcardNsPtr
 xmlSchemaNewWildcardNsConstraint(xmlSchemaParserCtxtPtr ctxt)
@@ -5557,14 +5414,14 @@ xmlSchemaAddIDC(xmlSchemaParserCtxtPtr c
 }
 
 /**
- * xmlSchemaAddWildcard:
- * @ctxt:  a schema validation context
- * @schema: a schema
- *
  * Adds a wildcard.
  * It corresponds to a xsd:anyAttribute and xsd:any.
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  a schema
+ * @param type  the type
+ * @param node  the context node
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaWildcardPtr
 xmlSchemaAddWildcard(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -5652,14 +5509,12 @@ xmlSchemaSubstGroupGet(xmlSchemaParserCt
 }
 
 /**
- * xmlSchemaAddElementSubstitutionMember:
- * @pctxt:  a schema parser context
- * @head:  the head of the substitution group
- * @member: the new member of the substitution group
- *
  * Allocate a new annotation structure.
  *
- * Returns the newly allocated structure or NULL in case or error
+ * @param pctxt  a schema parser context
+ * @param head  the head of the substitution group
+ * @param member  the new member of the substitution group
+ * @returns the newly allocated structure or NULL in case or error
  */
 static int
 xmlSchemaAddElementSubstitutionMember(xmlSchemaParserCtxtPtr pctxt,
@@ -5688,19 +5543,18 @@ xmlSchemaAddElementSubstitutionMember(xm
  ************************************************************************/
 
 /**
- * xmlSchemaPValAttrNodeQNameValue:
- * @ctxt:  a schema parser context
- * @schema: the schema context
- * @ownerItem: the parent as a schema object
- * @value:  the QName value
- * @uri:  the resulting namespace URI if found
- * @local: the resulting local part if found, the attribute value otherwise
- *
  * Extracts the local name and the URI of a QName value and validates it.
  * This one is intended to be used on attribute values that
  * should resolve to schema components.
  *
- * Returns 0, in case the QName is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param schema  the schema context
+ * @param attr  the attribute node
+ * @param ownerItem  the parent as a schema object
+ * @param value  the QName value
+ * @param uri  the resulting namespace URI if found
+ * @param local  the resulting local part if found, the attribute value otherwise
+ * @returns 0, in case the QName is valid, a positive error code
  * if not valid and -1 if an internal error occurs.
  */
 static int
@@ -5768,19 +5622,17 @@ xmlSchemaPValAttrNodeQNameValue(xmlSchem
 }
 
 /**
- * xmlSchemaPValAttrNodeQName:
- * @ctxt:  a schema parser context
- * @schema: the schema context
- * @ownerItem: the owner as a schema object
- * @attr:  the attribute node
- * @uri:  the resulting namespace URI if found
- * @local: the resulting local part if found, the attribute value otherwise
- *
  * Extracts and validates the QName of an attribute value.
  * This one is intended to be used on attribute values that
  * should resolve to schema components.
  *
- * Returns 0, in case the QName is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param schema  the schema context
+ * @param ownerItem  the owner as a schema object
+ * @param attr  the attribute node
+ * @param uri  the resulting namespace URI if found
+ * @param local  the resulting local part if found, the attribute value otherwise
+ * @returns 0, in case the QName is valid, a positive error code
  * if not valid and -1 if an internal error occurs.
  */
 static int
@@ -5799,18 +5651,16 @@ xmlSchemaPValAttrNodeQName(xmlSchemaPars
 }
 
 /**
- * xmlSchemaPValAttrQName:
- * @ctxt:  a schema parser context
- * @schema: the schema context
- * @ownerItem: the owner as a schema object
- * @ownerElem:  the parent node of the attribute
- * @name:  the name of the attribute
- * @uri:  the resulting namespace URI if found
- * @local: the resulting local part if found, the attribute value otherwise
- *
  * Extracts and validates the QName of an attribute value.
  *
- * Returns 0, in case the QName is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param schema  the schema context
+ * @param ownerItem  the owner as a schema object
+ * @param ownerElem  the parent node of the attribute
+ * @param name  the name of the attribute
+ * @param uri  the resulting namespace URI if found
+ * @param local  the resulting local part if found, the attribute value otherwise
+ * @returns 0, in case the QName is valid, a positive error code
  * if not valid and -1 if an internal error occurs.
  */
 static int
@@ -5835,12 +5685,11 @@ xmlSchemaPValAttrQName(xmlSchemaParserCt
 }
 
 /**
- * xmlSchemaPValAttrID:
- * @ctxt:  a schema parser context
- *
  * Extracts and validates the ID of an attribute value.
  *
- * Returns 0, in case the ID is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param attr  attribute node
+ * @returns 0, in case the ID is valid, a positive error code
  * if not valid and -1 if an internal error occurs.
  */
 static int
@@ -5914,13 +5763,15 @@ xmlSchemaPValAttrID(xmlSchemaParserCtxtP
 }
 
 /**
- * xmlGetMaxOccurs:
- * @ctxt:  a schema validation context
- * @node:  a subtree containing XML Schema information
- *
  * Get the maxOccurs property
  *
- * Returns the default if not found, or the value
+ * @param ctxt  a schema validation context
+ * @param node  a subtree containing XML Schema information
+ * @param min  minimum
+ * @param max  maximum
+ * @param def  default
+ * @param expected  expected
+ * @returns the default if not found, or the value
  */
 static int
 xmlGetMaxOccurs(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
@@ -5990,13 +5841,15 @@ xmlGetMaxOccurs(xmlSchemaParserCtxtPtr c
 }
 
 /**
- * xmlGetMinOccurs:
- * @ctxt:  a schema validation context
- * @node:  a subtree containing XML Schema information
- *
  * Get the minOccurs property
  *
- * Returns the default if not found, or the value
+ * @param ctxt  a schema validation context
+ * @param node  a subtree containing XML Schema information
+ * @param min  minimum
+ * @param max  maximum
+ * @param def  default
+ * @param expected  expected
+ * @returns the default if not found, or the value
  */
 static int
 xmlGetMinOccurs(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
@@ -6053,14 +5906,12 @@ xmlGetMinOccurs(xmlSchemaParserCtxtPtr c
 }
 
 /**
- * xmlSchemaPGetBoolNodeValue:
- * @ctxt:  a schema validation context
- * @ownerItem:  the owner as a schema item
- * @node: the node holding the value
- *
  * Converts a boolean string value into 1 or 0.
  *
- * Returns 0 or 1.
+ * @param ctxt  a schema validation context
+ * @param ownerItem  the owner as a schema item
+ * @param node  the node holding the value
+ * @returns 0 or 1.
  */
 static int
 xmlSchemaPGetBoolNodeValue(xmlSchemaParserCtxtPtr ctxt,
@@ -6098,15 +5949,13 @@ xmlSchemaPGetBoolNodeValue(xmlSchemaPars
 }
 
 /**
- * xmlGetBooleanProp:
- * @ctxt:  a schema validation context
- * @node:  a subtree containing XML Schema information
- * @name:  the attribute name
- * @def:  the default value
- *
  * Evaluate if a boolean property is set
  *
- * Returns the default if not found, 0 if found to be false,
+ * @param ctxt  a schema validation context
+ * @param node  a subtree containing XML Schema information
+ * @param name  the attribute name
+ * @param def  the default value
+ * @returns the default if not found, 0 if found to be false,
  * 1 if found to be true
  */
 static int
@@ -6176,19 +6025,16 @@ xmlSchemaParseAnyAttribute(xmlSchemaPars
                            xmlSchemaPtr schema, xmlNodePtr node);
 
 /**
- * xmlSchemaPValAttrNodeValue:
- *
- * @pctxt:  a schema parser context
- * @ownerItem: the schema object owner if existent
- * @attr:  the schema attribute node being validated
- * @value: the value
- * @type: the built-in type to be validated against
- *
  * Validates a value against the given built-in type.
  * This one is intended to be used internally for validation
  * of schema attribute values during parsing of the schema.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param pctxt  a schema parser context
+ * @param ownerItem  the schema object owner if existent
+ * @param attr  the schema attribute node being validated
+ * @param value  the value
+ * @param type  the built-in type to be validated against
+ * @returns 0 if the value is valid, a positive error code
  * number otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -6248,19 +6094,16 @@ xmlSchemaPValAttrNodeValue(xmlSchemaPars
 }
 
 /**
- * xmlSchemaPValAttrNode:
- *
- * @ctxt:  a schema parser context
- * @ownerItem: the schema object owner if existent
- * @attr:  the schema attribute node being validated
- * @type: the built-in type to be validated against
- * @value: the resulting value if any
- *
  * Extracts and validates a value against the given built-in type.
  * This one is intended to be used internally for validation
  * of schema attribute values during parsing of the schema.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param ownerItem  the schema object owner if existent
+ * @param attr  the schema attribute node being validated
+ * @param type  the built-in type to be validated against
+ * @param value  the resulting value if any
+ * @returns 0 if the value is valid, a positive error code
  * number otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -6284,21 +6127,17 @@ xmlSchemaPValAttrNode(xmlSchemaParserCtx
 }
 
 /**
- * xmlSchemaPValAttr:
- *
- * @ctxt:  a schema parser context
- * @node: the element node of the attribute
- * @ownerItem: the schema object owner if existent
- * @ownerElem: the owner element node
- * @name:  the name of the schema attribute node
- * @type: the built-in type to be validated against
- * @value: the resulting value if any
- *
  * Extracts and validates a value against the given built-in type.
  * This one is intended to be used internally for validation
  * of schema attribute values during parsing of the schema.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param ctxt  a schema parser context
+ * @param ownerItem  the schema object owner if existent
+ * @param ownerElem  the owner element node
+ * @param name  the name of the schema attribute node
+ * @param type  the built-in type to be validated against
+ * @param value  the resulting value if any
+ * @returns 0 if the value is valid, a positive error code
  * number otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -6385,14 +6224,15 @@ xmlSchemaCheckReference(xmlSchemaParserC
 }
 
 /**
- * xmlSchemaParseLocalAttributes:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- * @type:  the hosting type where the attributes will be anchored
- *
  * Parses attribute uses and attribute declarations and
  * attribute group references.
+ *
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param child  a subtree containing XML Schema information
+ * @param list  an item list
+ * @param parentType  the hosting type where the attributes will be anchored
+ * @param hasRefs  set if references were found
  */
 static int
 xmlSchemaParseLocalAttributes(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -6427,15 +6267,13 @@ xmlSchemaParseLocalAttributes(xmlSchemaP
 }
 
 /**
- * xmlSchemaParseAnnotation:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Attribute declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
+ * @param ctxt  a schema validation context
+ * @param node  a subtree containing XML Schema information
+ * @param needed  needed
+ * @returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
 static xmlSchemaAnnotPtr
@@ -6547,15 +6385,13 @@ xmlSchemaParseAnnotation(xmlSchemaParser
 }
 
 /**
- * xmlSchemaParseFacet:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Facet declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new type structure or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns the new type structure or NULL in case of error
  */
 static xmlSchemaFacetPtr
 xmlSchemaParseFacet(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -6638,16 +6474,15 @@ xmlSchemaParseFacet(xmlSchemaParserCtxtP
 }
 
 /**
- * xmlSchemaParseWildcardNs:
- * @ctxt:  a schema parser context
- * @wildc:  the wildcard, already created
- * @node:  a subtree containing XML Schema information
- *
  * Parses the attribute "processContents" and "namespace"
  * of a xsd:anyAttribute and xsd:any.
  * *WARNING* this interface is highly subject to change
  *
- * Returns 0 if everything goes fine, a positive error code
+ * @param ctxt  a schema parser context
+ * @param schema  unused
+ * @param wildc  the wildcard, already created
+ * @param node  a subtree containing XML Schema information
+ * @returns 0 if everything goes fine, a positive error code
  * if something is not valid and -1 if an internal error occurs.
  */
 static int
@@ -6807,17 +6642,15 @@ xmlSchemaPCheckParticleCorrect_2(xmlSche
 }
 
 /**
- * xmlSchemaParseAny:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
- * Parsea a XML schema <any> element. A particle and wildcard
+ * 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 particle or NULL in case of error or if minOccurs==maxOccurs==0
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns the particle or NULL in case of error or if minOccurs==maxOccurs==0
  */
 static xmlSchemaParticlePtr
 xmlSchemaParseAny(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -6902,14 +6735,12 @@ xmlSchemaParseAny(xmlSchemaParserCtxtPtr
 }
 
 /**
- * xmlSchemaParseNotation:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Notation declaration
  *
- * Returns the new structure or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns the new structure or NULL in case of error
  */
 static xmlSchemaNotationPtr
 xmlSchemaParseNotation(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -6949,15 +6780,13 @@ xmlSchemaParseNotation(xmlSchemaParserCt
 }
 
 /**
- * xmlSchemaParseAnyAttribute:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema AnyAttribute declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns a wildcard or NULL.
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns a wildcard or NULL.
  */
 static xmlSchemaWildcardPtr
 xmlSchemaParseAnyAttribute(xmlSchemaParserCtxtPtr ctxt,
@@ -7019,15 +6848,15 @@ xmlSchemaParseAnyAttribute(xmlSchemaPars
 
 
 /**
- * xmlSchemaParseAttribute:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Attribute declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the attribute declaration.
+ * @param pctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param uses  attribute uses list
+ * @param parentType  parent type
+ * @returns the attribute declaration.
  */
 static xmlSchemaBasicItemPtr
 xmlSchemaParseLocalAttribute(xmlSchemaParserCtxtPtr pctxt,
@@ -7562,17 +7391,15 @@ xmlSchemaParseGlobalAttribute(xmlSchemaP
 }
 
 /**
- * xmlSchemaParseAttributeGroupRef:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * Parse an attribute group definition reference.
  * Note that a reference to an attribute group does not
  * correspond to any component at all.
  * *WARNING* this interface is highly subject to change
  *
- * Returns the attribute group or NULL in case of error.
+ * @param pctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns the attribute group or NULL in case of error.
  */
 static xmlSchemaQNameRefPtr
 xmlSchemaParseAttributeGroupRef(xmlSchemaParserCtxtPtr pctxt,
@@ -7695,15 +7522,13 @@ xmlSchemaParseAttributeGroupRef(xmlSchem
 }
 
 /**
- * xmlSchemaParseAttributeGroupDefinition:
- * @pctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Attribute Group declaration
  * *WARNING* this interface is highly subject to change
  *
- * Returns the attribute group definition or NULL in case of error.
+ * @param pctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns the attribute group definition or NULL in case of error.
  */
 static xmlSchemaAttributeGroupPtr
 xmlSchemaParseAttributeGroupDefinition(xmlSchemaParserCtxtPtr pctxt,
@@ -7795,12 +7620,10 @@ xmlSchemaParseAttributeGroupDefinition(x
 }
 
 /**
- * xmlSchemaPValAttrFormDefault:
- * @value:  the value
- * @flags: the flags to be modified
- * @flagQualified: the specific flag for "qualified"
- *
- * Returns 0 if the value is valid, 1 otherwise.
+ * @param value  the value
+ * @param flags  the flags to be modified
+ * @param flagQualified  the specific flag for "qualified"
+ * @returns 0 if the value is valid, 1 otherwise.
  */
 static int
 xmlSchemaPValAttrFormDefault(const xmlChar *value,
@@ -7817,20 +7640,18 @@ xmlSchemaPValAttrFormDefault(const xmlCh
 }
 
 /**
- * xmlSchemaPValAttrBlockFinal:
- * @value:  the value
- * @flags: the flags to be modified
- * @flagAll: the specific flag for "#all"
- * @flagExtension: the specific flag for "extension"
- * @flagRestriction: the specific flag for "restriction"
- * @flagSubstitution: the specific flag for "substitution"
- * @flagList: the specific flag for "list"
- * @flagUnion: the specific flag for "union"
- *
  * Validates the value of the attribute "final" and "block". The value
- * is converted into the specified flag values and returned in @flags.
+ * is converted into the specified flag values and returned in `flags`.
  *
- * Returns 0 if the value is valid, 1 otherwise.
+ * @param value  the value
+ * @param flags  the flags to be modified
+ * @param flagAll  the specific flag for "\#all"
+ * @param flagExtension  the specific flag for "extension"
+ * @param flagRestriction  the specific flag for "restriction"
+ * @param flagSubstitution  the specific flag for "substitution"
+ * @param flagList  the specific flag for "list"
+ * @param flagUnion  the specific flag for "union"
+ * @returns 0 if the value is valid, 1 otherwise.
  */
 
 static int
@@ -8031,13 +7852,11 @@ xmlSchemaCheckCSelectorXPath(xmlSchemaPa
     cur->next = annot;
 
 /**
- * xmlSchemaAssignAnnotation:
- * @item: the schema component
- * @annot: the annotation
- *
  * Adds the annotation to the given schema component.
  *
- * Returns the given annotation.
+ * @param annItem  the schema component
+ * @param annot  the annotation
+ * @returns the given annotation.
  */
 static xmlSchemaAnnotPtr
 xmlSchemaAddAnnotation(xmlSchemaAnnotItemPtr annItem,
@@ -8127,15 +7946,14 @@ xmlSchemaAddAnnotation(xmlSchemaAnnotIte
 }
 
 /**
- * xmlSchemaParseIDCSelectorAndField:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * Parses a XML Schema identity-constraint definition's
- * <selector> and <field> elements.
+ * `<selector>` and `<field>` elements.
  *
- * Returns the parsed identity-constraint definition.
+ * @param ctxt  a schema validation context
+ * @param idc  the identity-constraint definition
+ * @param node  a subtree containing XML Schema information
+ * @param isField  field indicator
+ * @returns the parsed identity-constraint definition.
  */
 static xmlSchemaIDCSelectPtr
 xmlSchemaParseIDCSelectorAndField(xmlSchemaParserCtxtPtr ctxt,
@@ -8223,14 +8041,14 @@ xmlSchemaParseIDCSelectorAndField(xmlSch
 }
 
 /**
- * xmlSchemaParseIDC:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * Parses a XML Schema identity-constraint definition.
  *
- * Returns the parsed identity-constraint definition.
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param idcCategory  the IDC category
+ * @param targetNamespace  the target namespace
+ * @returns the parsed identity-constraint definition.
  */
 static xmlSchemaIDCPtr
 xmlSchemaParseIDC(xmlSchemaParserCtxtPtr ctxt,
@@ -8370,16 +8188,15 @@ xmlSchemaParseIDC(xmlSchemaParserCtxtPtr
 }
 
 /**
- * xmlSchemaParseElement:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- * @topLevel: indicates if this is global declaration
- *
  * Parses a XML schema element declaration.
  * *WARNING* this interface is highly subject to change
  *
- * Returns the element declaration or a particle; NULL in case
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param isElemRef  set if the element is a reference
+ * @param topLevel  indicates if this is global declaration
+ * @returns the element declaration or a particle; NULL in case
  * of an error or if the particle has minOccurs==maxOccurs==0.
  */
 static xmlSchemaBasicItemPtr
@@ -8769,15 +8586,13 @@ return_null:
 }
 
 /**
- * xmlSchemaParseUnion:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Union definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of internal error, 0 in case of success and a positive
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns -1 in case of internal error, 0 in case of success and a positive
  * error code otherwise.
  */
 static int
@@ -8947,15 +8762,13 @@ xmlSchemaParseUnion(xmlSchemaParserCtxtP
 }
 
 /**
- * xmlSchemaParseList:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema List definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
 static xmlSchemaTypePtr
@@ -9058,15 +8871,14 @@ xmlSchemaParseList(xmlSchemaParserCtxtPt
 }
 
 /**
- * xmlSchemaParseSimpleType:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Simple Type definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param topLevel  whether this is a top-level element
+ * @returns -1 in case of error, 0 if the declaration is improper and
  * 1 in case of success.
  */
 static xmlSchemaTypePtr
@@ -9273,15 +9085,14 @@ xmlSchemaParseSimpleType(xmlSchemaParser
 }
 
 /**
- * xmlSchemaParseModelGroupDefRef:
- * @ctxt:  the parser context
- * @schema: the schema being built
- * @node:  the node
- *
  * Parses a reference to a model group definition.
  *
  * We will return a particle component with a qname-component or
  * NULL in case of an error.
+ *
+ * @param ctxt  the parser context
+ * @param schema  the schema being built
+ * @param node  the node
  */
 static xmlSchemaTreeItemPtr
 xmlSchemaParseModelGroupDefRef(xmlSchemaParserCtxtPtr ctxt,
@@ -9369,11 +9180,6 @@ xmlSchemaParseModelGroupDefRef(xmlSchema
 }
 
 /**
- * xmlSchemaParseModelGroupDefinition:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * Parses a XML schema model group definition.
  *
  * Note that the constraint src-redefine (6.2) can't be applied until
@@ -9382,7 +9188,10 @@ xmlSchemaParseModelGroupDefRef(xmlSchema
  *
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
 static xmlSchemaModelGroupDefPtr
@@ -9465,11 +9274,10 @@ xmlSchemaParseModelGroupDefinition(xmlSc
 }
 
 /**
- * xmlSchemaCleanupDoc:
- * @ctxt:  a schema validation context
- * @node:  the root of the document.
- *
  * removes unwanted nodes in a schemas document tree
+ *
+ * @param ctxt  a schema validation context
+ * @param root  the root of the document.
  */
 static void
 xmlSchemaCleanupDoc(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr root)
@@ -9675,12 +9483,10 @@ exit_failure:
 }
 
 /**
- * xmlSchemaParseSchemaTopLevel:
- * @ctxt:  a schema validation context
- * @schema:  the schemas
- * @nodes:  the list of top level nodes
- *
- * Returns the internal XML Schema structure built from the resource or
+ * @param ctxt  a schema validation context
+ * @param schema  the schemas
+ * @param nodes  the list of top level nodes
+ * @returns the internal XML Schema structure built from the resource or
  *         NULL in case of error
  */
 static int
@@ -9894,14 +9700,12 @@ xmlSchemaParserCtxtCreate(void)
 }
 
 /**
- * xmlSchemaNewParserCtxtUseDict:
- * @URL:  the location of the schema
- * @dict: the dictionary to be used
- *
  * Create an XML Schemas parse context for that file/resource expected
  * to contain an XML Schemas file.
  *
- * Returns the parser context or NULL in case of error
+ * @param URL  the location of the schema
+ * @param dict  the dictionary to be used
+ * @returns the parser context or NULL in case of error
  */
 static xmlSchemaParserCtxtPtr
 xmlSchemaNewParserCtxtUseDict(const char *URL, xmlDictPtr dict)
@@ -9942,14 +9746,10 @@ xmlSchemaCreatePCtxtOnVCtxt(xmlSchemaVal
 }
 
 /**
- * xmlSchemaGetSchemaBucket:
- * @pctxt: the schema parser context
- * @schemaLocation: the URI of the schema document
- *
- * Returns a schema bucket if it was already parsed.
- *
- * Returns a schema bucket if it was already parsed from
- *         @schemaLocation, NULL otherwise.
+ * @param pctxt  the schema parser context
+ * @param schemaLocation  the URI of the schema document
+ * @returns a schema bucket if it was already parsed from
+ *         `schemaLocation`, NULL otherwise.
  */
 static xmlSchemaBucketPtr
 xmlSchemaGetSchemaBucket(xmlSchemaParserCtxtPtr pctxt,
@@ -10203,20 +10003,25 @@ xmlSchemaBuildAbsoluteURI(xmlDictPtr dic
 
 
 /**
- * xmlSchemaAddSchemaDoc:
- * @pctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * Parse an included (and to-be-redefined) XML schema document.
  *
- * Returns 0 on success, a positive error code on errors and
+ * @param pctxt  a schema validation context
+ * @param type  import or include or redefine
+ * @param schemaLocation  schema location
+ * @param schemaDoc  schema document
+ * @param schemaBuffer  document buffer
+ * @param schemaBufferLen  buffer size
+ * @param invokingNode  invoking node
+ * @param sourceTargetNamespace  source target namespace
+ * @param importNamespace  import namespace
+ * @param bucket  bucket
+ * @returns 0 on success, a positive error code on errors and
  *         -1 in case of an internal or API error.
  */
 
 static int
 xmlSchemaAddSchemaDoc(xmlSchemaParserCtxtPtr pctxt,
-		int type, /* import or include or redefine */
+		int type,
 		const xmlChar *schemaLocation,
 		xmlDocPtr schemaDoc,
 		const char *schemaBuffer,
@@ -10633,15 +10438,13 @@ exit_failure:
 }
 
 /**
- * xmlSchemaParseImport:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Import definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns 0 in case of success, a positive error code if
+ * @param pctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @returns 0 in case of success, a positive error code if
  * not valid and -1 in case of an internal error.
  */
 static int
@@ -11114,13 +10917,6 @@ xmlSchemaParseInclude(xmlSchemaParserCtx
 }
 
 /**
- * xmlSchemaParseModelGroup:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- * @type: the "compositor" type
- * @particleNeeded: if a a model group with a particle
- *
  * parse a XML schema Sequence definition.
  * Applies parts of:
  *   Schema Representation Constraint:
@@ -11135,7 +10931,12 @@ xmlSchemaParseInclude(xmlSchemaParserCtx
  *
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param type  the "compositor" type
+ * @param withParticle  if a a model group with a particle
+ * @returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
 static xmlSchemaTreeItemPtr
@@ -11394,15 +11195,14 @@ xmlSchemaParseModelGroup(xmlSchemaParser
 }
 
 /**
- * xmlSchemaParseRestriction:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Restriction definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns the type definition or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param parentType  the parent type
+ * @returns the type definition or NULL in case of error
  */
 static xmlSchemaTypePtr
 xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -11697,16 +11497,15 @@ xmlSchemaParseRestriction(xmlSchemaParse
 }
 
 /**
- * xmlSchemaParseExtension:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
- * Parses an <extension>, which is found inside a
- * <simpleContent> or <complexContent>.
+ * Parses an `<extension>`, which is found inside a
+ * `<simpleContent>` or `<complexContent>`.
  * *WARNING* this interface is highly subject to change.
  *
- * TODO: Returns the type definition or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param parentType  parent type
+ * @returns the type definition or NULL in case of error
  */
 static xmlSchemaTypePtr
 xmlSchemaParseExtension(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -11833,15 +11632,14 @@ xmlSchemaParseExtension(xmlSchemaParserC
 }
 
 /**
- * xmlSchemaParseSimpleContent:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema SimpleContent definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns the type definition or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param hasRestrictionOrExtension  set if restriction or extension was found
+ * @returns the type definition or NULL in case of error
  */
 static int
 xmlSchemaParseSimpleContent(xmlSchemaParserCtxtPtr ctxt,
@@ -11923,15 +11721,14 @@ xmlSchemaParseSimpleContent(xmlSchemaPar
 }
 
 /**
- * xmlSchemaParseComplexContent:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema ComplexContent definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns the type definition or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param hasRestrictionOrExtension  set if restriction or extension was found
+ * @returns the type definition or NULL in case of error
  */
 static int
 xmlSchemaParseComplexContent(xmlSchemaParserCtxtPtr ctxt,
@@ -12018,15 +11815,14 @@ xmlSchemaParseComplexContent(xmlSchemaPa
 }
 
 /**
- * xmlSchemaParseComplexType:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema information
- *
  * parse a XML schema Complex Type definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns the type definition or NULL in case of error
+ * @param ctxt  a schema validation context
+ * @param schema  the schema being built
+ * @param node  a subtree containing XML Schema information
+ * @param topLevel  whether this is a top-level element
+ * @returns the type definition or NULL in case of error
  */
 static xmlSchemaTypePtr
 xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
@@ -12316,13 +12112,11 @@ xmlSchemaParseComplexType(xmlSchemaParse
 
 #if 0 /* Will be enabled if it is clear what options are needed. */
 /**
- * xmlSchemaParserCtxtSetOptions:
- * @ctxt:	a schema parser context
- * @options: a combination of xmlSchemaParserOption
- *
  * Sets the options to be used during the parse.
  *
- * Returns 0 in case of success, -1 in case of an
+ * @param ctxt  	a schema parser context
+ * @param options  a combination of xmlSchemaParserOption
+ * @returns 0 in case of success, -1 in case of an
  * API error.
  */
 static int
@@ -12348,10 +12142,8 @@ xmlSchemaParserCtxtSetOptions(xmlSchemaP
 }
 
 /**
- * xmlSchemaValidCtxtGetOptions:
- * @ctxt: a schema parser context
- *
- * Returns the option combination of the parser context.
+ * @param ctxt  a schema parser context
+ * @returns the option combination of the parser context.
  */
 static int
 xmlSchemaParserCtxtGetOptions(xmlSchemaParserCtxtPtr ctxt)
@@ -12365,15 +12157,13 @@ xmlSchemaParserCtxtGetOptions(xmlSchemaP
 #endif
 
 /**
- * xmlSchemaNewParserCtxt:
- * @URL:  the location of the schema
- *
  * Create an XML Schemas parse context for that file/resource expected
  * to contain an XML Schemas file.
  *
- * Returns the parser context or NULL in case of error
+ * @param URL  the location of the schema
+ * @returns the parser context or NULL in case of error
  */
-xmlSchemaParserCtxtPtr
+xmlSchemaParserCtxt *
 xmlSchemaNewParserCtxt(const char *URL)
 {
     xmlSchemaParserCtxtPtr ret;
@@ -12390,16 +12180,14 @@ xmlSchemaNewParserCtxt(const char *URL)
 }
 
 /**
- * xmlSchemaNewMemParserCtxt:
- * @buffer:  a pointer to a char array containing the schemas
- * @size:  the size of the array
- *
  * Create an XML Schemas parse context for that memory buffer expected
  * to contain an XML Schemas file.
  *
- * Returns the parser context or NULL in case of error
+ * @param buffer  a pointer to a char array containing the schemas
+ * @param size  the size of the array
+ * @returns the parser context or NULL in case of error
  */
-xmlSchemaParserCtxtPtr
+xmlSchemaParserCtxt *
 xmlSchemaNewMemParserCtxt(const char *buffer, int size)
 {
     xmlSchemaParserCtxtPtr ret;
@@ -12416,16 +12204,14 @@ xmlSchemaNewMemParserCtxt(const char *bu
 }
 
 /**
- * xmlSchemaNewDocParserCtxt:
- * @doc:  a preparsed document tree
- *
  * Create an XML Schemas parse context for that document.
  * NB. The document may be modified during the parsing process.
  *
- * Returns the parser context or NULL in case of error
+ * @param doc  a preparsed document tree
+ * @returns the parser context or NULL in case of error
  */
-xmlSchemaParserCtxtPtr
-xmlSchemaNewDocParserCtxt(xmlDocPtr doc)
+xmlSchemaParserCtxt *
+xmlSchemaNewDocParserCtxt(xmlDoc *doc)
 {
     xmlSchemaParserCtxtPtr ret;
 
@@ -12443,13 +12229,12 @@ xmlSchemaNewDocParserCtxt(xmlDocPtr doc)
 }
 
 /**
- * xmlSchemaFreeParserCtxt:
- * @ctxt:  the schema parser context
- *
  * Free the resources associated to the schema parser context
+ *
+ * @param ctxt  the schema parser context
  */
 void
-xmlSchemaFreeParserCtxt(xmlSchemaParserCtxtPtr ctxt)
+xmlSchemaFreeParserCtxt(xmlSchemaParserCtxt *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -12476,9 +12261,7 @@ xmlSchemaFreeParserCtxt(xmlSchemaParserC
  ************************************************************************/
 
 /**
- * xmlSchemaBuildContentModelForSubstGroup:
- *
- * Returns 1 if nillable, 0 otherwise
+ * @returns 1 if nillable, 0 otherwise
  */
 static int
 xmlSchemaBuildContentModelForSubstGroup(xmlSchemaParserCtxtPtr pctxt,
@@ -12593,9 +12376,7 @@ xmlSchemaBuildContentModelForSubstGroup(
 }
 
 /**
- * xmlSchemaBuildContentModelForElement:
- *
- * Returns 1 if nillable, 0 otherwise
+ * @returns 1 if nillable, 0 otherwise
  */
 static int
 xmlSchemaBuildContentModelForElement(xmlSchemaParserCtxtPtr ctxt,
@@ -12653,14 +12434,11 @@ xmlSchemaBuildContentModelForElement(xml
 }
 
 /**
- * xmlSchemaBuildAContentModel:
- * @ctxt:  the schema parser context
- * @particle:  the particle component
- * @name:  the complex type's name whose content is being built
- *
  * Create the automaton for the {content type} of a complex type.
  *
- * Returns 1 if the content is nillable, 0 otherwise
+ * @param pctxt  the schema parser context
+ * @param particle  the particle component
+ * @returns 1 if the content is nillable, 0 otherwise
  */
 static int
 xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr pctxt,
@@ -13062,12 +12840,10 @@ xmlSchemaBuildAContentModel(xmlSchemaPar
 }
 
 /**
- * xmlSchemaBuildContentModel:
- * @ctxt:  the schema parser context
- * @type:  the complex type definition
- * @name:  the element name
- *
  * Builds the content model of the complex type.
+ *
+ * @param type  the complex type definition
+ * @param ctxt  the schema parser context
  */
 static void
 xmlSchemaBuildContentModel(xmlSchemaTypePtr type,
@@ -13111,13 +12887,12 @@ xmlSchemaBuildContentModel(xmlSchemaType
 }
 
 /**
- * xmlSchemaResolveElementReferences:
- * @elem:  the schema element context
- * @ctxt:  the schema parser context
- *
  * Resolves the references of an element declaration
  * or particle, which has an element declaration as it's
  * term.
+ *
+ * @param elemDecl  the schema element context
+ * @param ctxt  the schema parser context
  */
 static void
 xmlSchemaResolveElementReferences(xmlSchemaElementPtr elemDecl,
@@ -13200,15 +12975,13 @@ xmlSchemaResolveElementReferences(xmlSch
 }
 
 /**
- * xmlSchemaResolveUnionMemberTypes:
- * @ctxt:  the schema parser context
- * @type:  the schema simple type definition
- *
  * Checks and builds the "member type definitions" property of the union
  * simple type. This handles part (1), part (2) is done in
- * xmlSchemaFinishMemberTypeDefinitionsProperty()
+ * xmlSchemaFinishMemberTypeDefinitionsProperty
  *
- * Returns -1 in case of an internal error, 0 otherwise.
+ * @param ctxt  the schema parser context
+ * @param type  the schema simple type definition
+ * @returns -1 in case of an internal error, 0 otherwise.
  */
 static int
 xmlSchemaResolveUnionMemberTypes(xmlSchemaParserCtxtPtr ctxt,
@@ -13280,13 +13053,10 @@ xmlSchemaResolveUnionMemberTypes(xmlSche
 }
 
 /**
- * xmlSchemaIsDerivedFromBuiltInType:
- * @ctxt:  the schema parser context
- * @type:  the type definition
- * @valType: the value type
  *
- *
- * Returns 1 if the type has the given value type, or
+ * @param type  the type definition
+ * @param valType  the value type
+ * @returns 1 if the type has the given value type, or
  * is derived from such a type.
  */
 static int
@@ -13309,13 +13079,11 @@ xmlSchemaIsDerivedFromBuiltInType(xmlSch
 
 #if 0
 /**
- * xmlSchemaIsDerivedFromBuiltInType:
- * @ctxt:  the schema parser context
- * @type:  the type definition
- * @valType: the value type
- *
  *
- * Returns 1 if the type has the given value type, or
+ * @param ctxt  the schema parser context
+ * @param type  the type definition
+ * @param valType  the value type
+ * @returns 1 if the type has the given value type, or
  * is derived from such a type.
  */
 static int
@@ -13349,10 +13117,8 @@ xmlSchemaQueryBuiltInType(xmlSchemaTypeP
 #endif
 
 /**
- * xmlSchemaGetPrimitiveType:
- * @type:  the simpleType definition
- *
- * Returns the primitive type of the given type or
+ * @param type  the simpleType definition
+ * @returns the primitive type of the given type or
  * NULL in case of error.
  */
 static xmlSchemaTypePtr
@@ -13375,10 +13141,8 @@ xmlSchemaGetPrimitiveType(xmlSchemaTypeP
 
 #if 0
 /**
- * xmlSchemaGetBuiltInTypeAncestor:
- * @type:  the simpleType definition
- *
- * Returns the primitive type of the given type or
+ * @param type  the simpleType definition
+ * @returns the primitive type of the given type or
  * NULL in case of error.
  */
 static xmlSchemaTypePtr
@@ -13397,14 +13161,13 @@ xmlSchemaGetBuiltInTypeAncestor(xmlSchem
 #endif
 
 /**
- * xmlSchemaCloneWildcardNsConstraints:
- * @ctxt:  the schema parser context
- * @dest:  the destination wildcard
- * @source: the source wildcard
- *
  * Clones the namespace constraints of source
  * and assigns them to dest.
- * Returns -1 on internal error, 0 otherwise.
+ *
+ * @param ctxt  the schema parser context
+ * @param dest  the destination wildcard
+ * @param source  the source wildcard
+ * @returns -1 on internal error, 0 otherwise.
  */
 static int
 xmlSchemaCloneWildcardNsConstraints(xmlSchemaParserCtxtPtr ctxt,
@@ -13443,14 +13206,13 @@ xmlSchemaCloneWildcardNsConstraints(xmlS
 }
 
 /**
- * xmlSchemaUnionWildcards:
- * @ctxt:  the schema parser context
- * @completeWild:  the first wildcard
- * @curWild: the second wildcard
- *
  * Unions the namespace constraints of the given wildcards.
- * @completeWild will hold the resulting union.
- * Returns a positive error code on failure, -1 in case of an
+ * `completeWild` will hold the resulting union.
+ *
+ * @param ctxt  the schema parser context
+ * @param completeWild  the first wildcard
+ * @param curWild  the second wildcard
+ * @returns a positive error code on failure, -1 in case of an
  * internal error, 0 otherwise.
  */
 static int
@@ -13703,14 +13465,13 @@ xmlSchemaUnionWildcards(xmlSchemaParserC
 }
 
 /**
- * xmlSchemaIntersectWildcards:
- * @ctxt:  the schema parser context
- * @completeWild:  the first wildcard
- * @curWild: the second wildcard
- *
  * Intersects the namespace constraints of the given wildcards.
- * @completeWild will hold the resulting intersection.
- * Returns a positive error code on failure, -1 in case of an
+ * `completeWild` will hold the resulting intersection.
+ *
+ * @param ctxt  the schema parser context
+ * @param completeWild  the first wildcard
+ * @param curWild  the second wildcard
+ * @returns a positive error code on failure, -1 in case of an
  * internal error, 0 otherwise.
  */
 static int
@@ -13881,15 +13642,12 @@ xmlSchemaIntersectWildcards(xmlSchemaPar
 }
 
 /**
- * xmlSchemaIsWildcardNsConstraintSubset:
- * @ctxt:  the schema parser context
- * @sub:  the first wildcard
- * @super: the second wildcard
- *
  * Schema Component Constraint: Wildcard Subset (cos-ns-subset)
  *
- * Returns 0 if the namespace constraint of @sub is an intensional
- * subset of @super, 1 otherwise.
+ * @param sub  the first wildcard
+ * @param super  the second wildcard
+ * @returns 0 if the namespace constraint of `sub` is an intensional
+ * subset of `super`, 1 otherwise.
  */
 static int
 xmlSchemaCheckCOSNSSubset(xmlSchemaWildcardPtr sub,
@@ -13984,14 +13742,12 @@ xmlSchemaGetEffectiveValueConstraint(xml
     return(0);
 }
 /**
- * xmlSchemaCheckCVCWildcardNamespace:
- * @wild:  the wildcard
- * @ns:  the namespace
- *
  * Validation Rule: Wildcard allows Namespace Name
  * (cvc-wildcard-namespace)
  *
- * Returns 0 if the given namespace matches the wildcard,
+ * @param wild  the wildcard
+ * @param ns  the namespace
+ * @returns 0 if the given namespace matches the wildcard,
  * 1 otherwise and -1 on API errors.
  */
 static int
@@ -14326,18 +14082,17 @@ xmlSchemaExpandAttributeGroupRefs(xmlSch
 				  xmlSchemaItemListPtr list,
 				  xmlSchemaItemListPtr prohibs);
 /**
- * xmlSchemaFixupTypeAttributeUses:
- * @ctxt:  the schema parser context
- * @type:  the complex type definition
- *
- *
  * Builds the wildcard and the attribute uses on the given complex type.
- * Returns -1 if an internal error occurs, 0 otherwise.
+ *
  *
  * ATTENTION TODO: Experimentally this uses pointer comparisons for
  * strings, so recheck this if we start to hardcode some schemata, since
  * they might not be in the same dict.
  * NOTE: It is allowed to "extend" the xs:anyType type.
+ *
+ * @param pctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns -1 if an internal error occurs, 0 otherwise.
  */
 static int
 xmlSchemaFixupTypeAttributeUses(xmlSchemaParserCtxtPtr pctxt,
@@ -14528,15 +14283,12 @@ exit_failure:
 }
 
 /**
- * xmlSchemaTypeFinalContains:
- * @schema:  the schema
- * @type:  the type definition
- * @final: the final
- *
  * Evaluates if a type definition contains the given "final".
  * This does take "finalDefault" into account as well.
  *
- * Returns 1 if the type does contain the given "final",
+ * @param type  the type definition
+ * @param final  the final
+ * @returns 1 if the type does contain the given "final",
  * 0 otherwise.
  */
 static int
@@ -14551,11 +14303,9 @@ xmlSchemaTypeFinalContains(xmlSchemaType
 }
 
 /**
- * xmlSchemaGetUnionSimpleTypeMemberTypes:
- * @type:  the Union Simple Type
- *
- * Returns a list of member types of @type if existing,
- * returns NULL otherwise.
+ * @param type  the Union Simple Type
+ * @returns  a list of member types of `type` if existing,
+ *           NULL otherwise.
  */
 static xmlSchemaTypeLinkPtr
 xmlSchemaGetUnionSimpleTypeMemberTypes(xmlSchemaTypePtr type)
@@ -14571,13 +14321,11 @@ xmlSchemaGetUnionSimpleTypeMemberTypes(x
 
 #if 0
 /**
- * xmlSchemaGetParticleTotalRangeMin:
- * @particle: the particle
- *
  * Schema Component Constraint: Effective Total Range
  * (all and sequence) + (choice)
  *
- * Returns the minimum Effective Total Range.
+ * @param particle  the particle
+ * @returns the minimum Effective Total Range.
  */
 static int
 xmlSchemaGetParticleTotalRangeMin(xmlSchemaParticlePtr particle)
@@ -14626,13 +14374,11 @@ xmlSchemaGetParticleTotalRangeMin(xmlSch
 }
 
 /**
- * xmlSchemaGetParticleTotalRangeMax:
- * @particle: the particle
- *
  * Schema Component Constraint: Effective Total Range
  * (all and sequence) + (choice)
  *
- * Returns the maximum Effective Total Range.
+ * @param particle  the particle
+ * @returns the maximum Effective Total Range.
  */
 static int
 xmlSchemaGetParticleTotalRangeMax(xmlSchemaParticlePtr particle)
@@ -14687,10 +14433,8 @@ xmlSchemaGetParticleTotalRangeMax(xmlSch
 #endif
 
 /**
- * xmlSchemaGetParticleEmptiable:
- * @particle: the particle
- *
- * Returns 1 if emptiable, 0 otherwise.
+ * @param particle  the particle
+ * @returns 1 if emptiable, 0 otherwise.
  */
 static int
 xmlSchemaGetParticleEmptiable(xmlSchemaParticlePtr particle)
@@ -14729,13 +14473,11 @@ xmlSchemaGetParticleEmptiable(xmlSchemaP
 }
 
 /**
- * xmlSchemaIsParticleEmptiable:
- * @particle: the particle
- *
  * Schema Component Constraint: Particle Emptiable
  * Checks whether the given particle is emptiable.
  *
- * Returns 1 if emptiable, 0 otherwise.
+ * @param particle  the particle
+ * @returns 1 if emptiable, 0 otherwise.
  */
 static int
 xmlSchemaIsParticleEmptiable(xmlSchemaParticlePtr particle)
@@ -14756,19 +14498,17 @@ xmlSchemaIsParticleEmptiable(xmlSchemaPa
 }
 
 /**
- * xmlSchemaCheckCOSSTDerivedOK:
- * @actxt: a context
- * @type:  the derived simple type definition
- * @baseType:  the base type definition
- * @subset: the subset of ('restriction', etc.)
- *
  * Schema Component Constraint:
  * Type Derivation OK (Simple) (cos-st-derived-OK)
  *
- * Checks whether @type can be validly
- * derived from @baseType.
+ * Checks whether `type` can be validly
+ * derived from `baseType`.
  *
- * Returns 0 on success, an positive error code otherwise.
+ * @param actxt  a context
+ * @param type  the derived simple type definition
+ * @param baseType  the base type definition
+ * @param subset  the subset of ('restriction', etc.)
+ * @returns 0 on success, an positive error code otherwise.
  */
 static int
 xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
@@ -14859,15 +14599,13 @@ xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAb
 }
 
 /**
- * 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
+ * @param pctxt  the schema parser context
+ * @param ctxtType  the type definition
+ * @param ancestor  an ancestor of `ctxtType`
+ * @returns XML_SCHEMAP_ST_PROPS_CORRECT_2 if the given type is
  * circular, 0 otherwise.
  */
 static int
@@ -14901,12 +14639,10 @@ xmlSchemaCheckTypeDefCircularInternal(xm
 }
 
 /**
- * xmlSchemaCheckTypeDefCircular:
- * @item:  the complex/simple type definition
- * @ctxt:  the parser context
- * @name:  the name
- *
  * Checks for circular type definitions.
+ *
+ * @param item  the complex/simple type definition
+ * @param ctxt  the parser context
  */
 static void
 xmlSchemaCheckTypeDefCircular(xmlSchemaTypePtr item,
@@ -14983,12 +14719,10 @@ xmlSchemaCheckUnionTypeDefCircular(xmlSc
 }
 
 /**
- * xmlSchemaResolveTypeReferences:
- * @item:  the complex/simple type definition
- * @ctxt:  the parser context
- * @name:  the name
- *
  * Resolves type definition references
+ *
+ * @param typeDef  the complex/simple type definition
+ * @param ctxt  the parser context
  */
 static void
 xmlSchemaResolveTypeReferences(xmlSchemaTypePtr typeDef,
@@ -15109,13 +14843,11 @@ xmlSchemaResolveTypeReferences(xmlSchema
 
 
 /**
- * xmlSchemaCheckSTPropsCorrect:
- * @ctxt:  the schema parser context
- * @type:  the simple type definition
- *
  * Checks st-props-correct.
  *
- * Returns 0 if the properties are correct,
+ * @param ctxt  the schema parser context
+ * @param type  the simple type definition
+ * @returns 0 if the properties are correct,
  * if not, a positive error code and -1 on internal
  * errors.
  */
@@ -15211,17 +14943,15 @@ xmlSchemaCheckSTPropsCorrect(xmlSchemaPa
 }
 
 /**
- * xmlSchemaCheckCOSSTRestricts:
- * @ctxt:  the schema parser context
- * @type:  the simple type definition
- *
  * Schema Component Constraint:
  * Derivation Valid (Restriction, Simple) (cos-st-restricts)
 
- * Checks if the given @type (simpleType) is derived validly by restriction.
+ * Checks if the given `type` (simpleType) is derived validly by restriction.
  * STATUS:
  *
- * Returns -1 on internal errors, 0 if the type is validly derived,
+ * @param pctxt  the schema parser context
+ * @param type  the simple type definition
+ * @returns -1 on internal errors, 0 if the type is validly derived,
  * a positive error code otherwise.
  */
 static int
@@ -15678,18 +15408,16 @@ xmlSchemaCheckCOSSTRestricts(xmlSchemaPa
     return (0);
 }
 
+#if 0
 /**
- * xmlSchemaCheckSRCSimpleType:
- * @ctxt:  the schema parser context
- * @type:  the simple type definition
- *
  * Checks crc-simple-type constraints.
  *
- * Returns 0 if the constraints are satisfied,
+ * @param ctxt  the schema parser context
+ * @param type  the simple type definition
+ * @returns 0 if the constraints are satisfied,
  * if not a positive error code and -1 on internal
  * errors.
  */
-#if 0
 static int
 xmlSchemaCheckSRCSimpleType(xmlSchemaParserCtxtPtr ctxt,
 			    xmlSchemaTypePtr type)
@@ -15758,18 +15486,17 @@ xmlSchemaVCheckCVCSimpleType(xmlSchemaAb
 			     int isNormalized);
 
 /**
- * xmlSchemaParseCheckCOSValidDefault:
- * @pctxt:  the schema parser context
- * @type:  the simple type definition
- * @value: the default value
- * @node: an optional node (the holder of the value)
- *
  * Schema Component Constraint: Element Default Valid (Immediate)
  * (cos-valid-default)
  * This will be used by the parser only. For the validator there's
  * an other version.
  *
- * Returns 0 if the constraints are satisfied,
+ * @param pctxt  the schema parser context
+ * @param node  an optional node (the holder of the value)
+ * @param type  the simple type definition
+ * @param value  the default value
+ * @param val  resulting value
+ * @returns 0 if the constraints are satisfied,
  * if not, a positive error code and -1 on internal
  * errors.
  */
@@ -15839,16 +15566,14 @@ xmlSchemaParseCheckCOSValidDefault(xmlSc
 }
 
 /**
- * xmlSchemaCheckCTPropsCorrect:
- * @ctxt:  the schema parser context
- * @type:  the complex type definition
- *
- *.(4.6) Constraints on Complex Type Definition Schema Components
+ * (4.6) Constraints on Complex Type Definition Schema Components
  * Schema Component Constraint:
  * Complex Type Definition Properties Correct (ct-props-correct)
  * STATUS: (seems) complete
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param pctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -15984,18 +15709,16 @@ xmlSchemaAreEqualTypes(xmlSchemaTypePtr
 }
 
 /**
- * xmlSchemaCheckCOSCTDerivedOK:
- * @ctxt:  the schema parser context
- * @type:  the to-be derived complex type definition
- * @baseType:  the base complex type definition
- * @set: the given set
- *
  * Schema Component Constraint:
  * Type Derivation OK (Complex) (cos-ct-derived-ok)
  *
  * STATUS: completed
  *
- * Returns 0 if the constraints are satisfied, or 1
+ * @param actxt  the schema parser context
+ * @param type  the to-be derived complex type definition
+ * @param baseType  the base complex type definition
+ * @param set  the given set
+ * @returns 0 if the constraints are satisfied, or 1
  * if not.
  */
 static int
@@ -16058,16 +15781,16 @@ xmlSchemaCheckCOSCTDerivedOK(xmlSchemaAb
 }
 
 /**
- * xmlSchemaCheckCOSDerivedOK:
- * @type:  the derived simple type definition
- * @baseType:  the base type definition
- *
  * Calls:
  * Type Derivation OK (Simple) AND Type Derivation OK (Complex)
  *
- * Checks whether @type can be validly derived from @baseType.
+ * Checks whether `type` can be validly derived from `baseType`.
  *
- * Returns 0 on success, an positive error code otherwise.
+ * @param actxt  the schema parser context
+ * @param type  the derived simple type definition
+ * @param baseType  the base type definition
+ * @param set  the given set
+ * @returns 0 on success, an positive error code otherwise.
  */
 static int
 xmlSchemaCheckCOSDerivedOK(xmlSchemaAbstractCtxtPtr actxt,
@@ -16082,10 +15805,6 @@ xmlSchemaCheckCOSDerivedOK(xmlSchemaAbst
 }
 
 /**
- * xmlSchemaCheckCOSCTExtends:
- * @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 (Extension) (cos-ct-extends)
@@ -16095,7 +15814,9 @@ xmlSchemaCheckCOSDerivedOK(xmlSchemaAbst
  *     (1.5)
  *     (1.4.3.2.2.2) "Particle Valid (Extension)"
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16336,10 +16057,6 @@ xmlSchemaCheckCOSCTExtends(xmlSchemaPars
 }
 
 /**
- * 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)
@@ -16352,7 +16069,9 @@ xmlSchemaCheckCOSCTExtends(xmlSchemaPars
  * In XML Schema 1.1 this will be:
  * Validation Rule: Checking complex type subsumption
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16536,13 +16255,11 @@ xmlSchemaCheckDerivationOKRestriction(xm
 }
 
 /**
- * xmlSchemaCheckCTComponent:
- * @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
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16564,15 +16281,13 @@ xmlSchemaCheckCTComponent(xmlSchemaParse
 }
 
 /**
- * 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
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16731,17 +16446,15 @@ xmlSchemaCheckSRCCT(xmlSchemaParserCtxtP
 
 #ifdef ENABLE_PARTICLE_RESTRICTION
 /**
- * xmlSchemaCheckParticleRangeOK:
- * @ctxt:  the schema parser context
- * @type:  the complex type definition
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Occurrence Range OK (range-ok)
  *
  * STATUS: complete
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16757,11 +16470,6 @@ xmlSchemaCheckParticleRangeOK(int rmin,
 }
 
 /**
- * xmlSchemaCheckRCaseNameAndTypeOK:
- * @ctxt:  the schema parser context
- * @r: the restricting element declaration particle
- * @b: the base element declaration particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Restriction OK (Elt:Elt -- NameAndTypeOK)
@@ -16771,7 +16479,10 @@ xmlSchemaCheckParticleRangeOK(int rmin,
  *   MISSING (3.2.3)
  *   CLARIFY: (3.2.2)
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the restricting element declaration particle
+ * @param b  the base element declaration particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16864,11 +16575,6 @@ xmlSchemaCheckRCaseNameAndTypeOK(xmlSche
 }
 
 /**
- * xmlSchemaCheckRCaseNSCompat:
- * @ctxt:  the schema parser context
- * @r: the restricting element declaration particle
- * @b: the base wildcard particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Derivation OK (Elt:Any -- NSCompat)
@@ -16876,7 +16582,10 @@ xmlSchemaCheckRCaseNameAndTypeOK(xmlSche
  *
  * STATUS: complete
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the restricting element declaration particle
+ * @param b  the base wildcard particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16908,11 +16617,6 @@ xmlSchemaCheckRCaseNSCompat(xmlSchemaPar
 }
 
 /**
- * xmlSchemaCheckRCaseRecurseAsIfGroup:
- * @ctxt:  the schema parser context
- * @r: the restricting element declaration particle
- * @b: the base model group particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Derivation OK (Elt:All/Choice/Sequence -- RecurseAsIfGroup)
@@ -16920,7 +16624,10 @@ xmlSchemaCheckRCaseNSCompat(xmlSchemaPar
  *
  * STATUS: TODO
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the restricting element declaration particle
+ * @param b  the base model group particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16934,11 +16641,6 @@ xmlSchemaCheckRCaseRecurseAsIfGroup(xmlS
 }
 
 /**
- * xmlSchemaCheckRCaseNSSubset:
- * @ctxt:  the schema parser context
- * @r: the restricting wildcard particle
- * @b: the base wildcard particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Derivation OK (Any:Any -- NSSubset)
@@ -16946,7 +16648,10 @@ xmlSchemaCheckRCaseRecurseAsIfGroup(xmlS
  *
  * STATUS: complete
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the restricting wildcard particle
+ * @param b  the base wildcard particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -16986,17 +16691,15 @@ xmlSchemaCheckRCaseNSSubset(xmlSchemaPar
 }
 
 /**
- * xmlSchemaCheckCOSParticleRestrict:
- * @ctxt:  the schema parser context
- * @type:  the complex type definition
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Valid (Restriction) (cos-particle-restrict)
  *
  * STATUS: TODO
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param type  the complex type definition
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -17024,11 +16727,6 @@ xmlSchemaCheckCOSParticleRestrict(xmlSch
 
 #if 0
 /**
- * xmlSchemaCheckRCaseNSRecurseCheckCardinality:
- * @ctxt:  the schema parser context
- * @r: the model group particle
- * @b: the base wildcard particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Derivation OK (All/Choice/Sequence:Any --
@@ -17037,7 +16735,10 @@ xmlSchemaCheckCOSParticleRestrict(xmlSch
  *
  * STATUS: TODO: subst-groups
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the model group particle
+ * @param b  the base wildcard particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -17078,11 +16779,6 @@ xmlSchemaCheckRCaseNSRecurseCheckCardina
 #endif
 
 /**
- * xmlSchemaCheckRCaseRecurse:
- * @ctxt:  the schema parser context
- * @r: the <all> or <sequence> model group particle
- * @b: the base <all> or <sequence> model group particle
- *
  * (3.9.6) Constraints on Particle Schema Components
  * Schema Component Constraint:
  * Particle Derivation OK (All:All,Sequence:Sequence --
@@ -17092,7 +16788,10 @@ xmlSchemaCheckRCaseNSRecurseCheckCardina
  * STATUS:  ?
  * TODO: subst-groups
  *
- * Returns 0 if the constraints are satisfied, a positive
+ * @param ctxt  the schema parser context
+ * @param r  the <all> or <sequence> model group particle
+ * @param b  the base <all> or <sequence> model group particle
+ * @returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occurred.
  */
 static int
@@ -18489,12 +18188,11 @@ exit_failure:
 
 
 /**
- * xmlSchemaTypeFixup:
- * @typeDecl:  the schema type definition
- * @ctxt:  the schema parser context
- *
  * Fixes the content model of the type.
  * URGENT TODO: We need an int result!
+ *
+ * @param type  the schema type definition
+ * @param actxt  the schema parser context
  */
 static int
 xmlSchemaTypeFixup(xmlSchemaTypePtr type,
@@ -18517,21 +18215,19 @@ xmlSchemaTypeFixup(xmlSchemaTypePtr type
 }
 
 /**
- * xmlSchemaCheckFacet:
- * @facet:  the facet
- * @typeDecl:  the schema type definition
- * @pctxt:  the schema parser context or NULL
- * @name: the optional name of the type
- *
  * Checks and computes the values of facets.
  *
- * Returns 0 if valid, a positive error code if not valid and
+ * @param facet  the facet
+ * @param typeDecl  the schema type definition
+ * @param pctxt  the schema parser context or NULL
+ * @param name  the optional name of the type
+ * @returns 0 if valid, a positive error code if not valid and
  *         -1 in case of an internal or API error.
  */
 int
-xmlSchemaCheckFacet(xmlSchemaFacetPtr facet,
-                    xmlSchemaTypePtr typeDecl,
-                    xmlSchemaParserCtxtPtr pctxt,
+xmlSchemaCheckFacet(xmlSchemaFacet *facet,
+                    xmlSchemaType *typeDecl,
+                    xmlSchemaParserCtxt *pctxt,
 		    const xmlChar * name ATTRIBUTE_UNUSED)
 {
     int ret = 0, ctxtGiven;
@@ -18730,11 +18426,10 @@ internal_error:
 }
 
 /**
- * xmlSchemaCheckFacetValues:
- * @typeDecl:  the schema type definition
- * @ctxt:  the schema parser context
- *
  * Checks the default values types, especially for facets
+ *
+ * @param typeDecl  the schema type definition
+ * @param pctxt  the schema parser context
  */
 static int
 xmlSchemaCheckFacetValues(xmlSchemaTypePtr typeDecl,
@@ -18773,15 +18468,12 @@ exit_failure:
 }
 
 /**
- * xmlSchemaGetCircModelGrDefRef:
- * @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 particle with the circular model group definition reference,
+ * @param groupDef  the searched model group
+ * @param particle  the first particle
+ * @returns the particle with the circular model group definition reference,
  * otherwise NULL.
  */
 static xmlSchemaTreeItemPtr
@@ -18831,12 +18523,10 @@ xmlSchemaGetCircModelGrDefRef(xmlSchemaM
 }
 
 /**
- * xmlSchemaCheckGroupDefCircular:
- * @item:  the model group definition
- * @ctxt:  the parser context
- * @name:  the name
- *
  * Checks for circular references to model group definitions.
+ *
+ * @param item  the model group definition
+ * @param ctxt  the parser context
  */
 static void
 xmlSchemaCheckGroupDefCircular(xmlSchemaModelGroupDefPtr item,
@@ -18882,10 +18572,6 @@ xmlSchemaCheckGroupDefCircular(xmlSchema
 }
 
 /**
- * xmlSchemaModelGroupToModelGroupDefFixup:
- * @ctxt:  the parser context
- * @mg:  the model group
- *
  * Assigns the model group of model group definitions to the "term"
  * of the referencing particle.
  * In xmlSchemaResolveModelGroupParticleReferences the model group
@@ -18894,6 +18580,8 @@ xmlSchemaCheckGroupDefCircular(xmlSchema
  *
  * Schema Component Constraint:
  *     All Group Limited (cos-all-limited) (1.2)
+ * @param ctxt  the parser context
+ * @param mg  the model group
  */
 static void
 xmlSchemaModelGroupToModelGroupDefFixup(
@@ -18929,14 +18617,12 @@ xmlSchemaModelGroupToModelGroupDefFixup(
 }
 
 /**
- * xmlSchemaCheckAttrGroupCircularRecur:
- * @ctxtGr: the searched attribute group
- * @attr: the current attribute list to be processed
- *
  * This one is intended to be used by
  * xmlSchemaCheckAttrGroupCircular only.
  *
- * Returns the circular attribute group reference, otherwise NULL.
+ * @param ctxtGr  the searched attribute group
+ * @param list  the current attribute list to be processed
+ * @returns the circular attribute group reference, otherwise NULL.
  */
 static xmlSchemaQNameRefPtr
 xmlSchemaCheckAttrGroupCircularRecur(xmlSchemaAttributeGroupPtr ctxtGr,
@@ -18981,12 +18667,10 @@ xmlSchemaCheckAttrGroupCircularRecur(xml
 }
 
 /**
- * xmlSchemaCheckAttrGroupCircular:
- * attrGr:  the attribute group definition
- * @ctxt:  the parser context
- * @name:  the name
- *
  * Checks for circular references of attribute groups.
+ *
+ * @param attrGr  the attribute group definition
+ * @param ctxt  the parser context
  */
 static int
 xmlSchemaCheckAttrGroupCircular(xmlSchemaAttributeGroupPtr attrGr,
@@ -19043,18 +18727,18 @@ xmlSchemaAttributeGroupExpandRefs(xmlSch
 				  xmlSchemaAttributeGroupPtr attrGr);
 
 /**
- * xmlSchemaExpandAttributeGroupRefs:
- * @pctxt: the parser context
- * @node: the node of the component holding the attribute uses
- * @completeWild: the intersected wildcard to be returned
- * @list: the attribute uses
- *
  * Substitutes contained attribute group references
  * for their attribute uses. Wildcards are intersected.
  * Attribute use prohibitions are removed from the list
- * and returned via the @prohibs list.
+ * and returned via the `prohibs` list.
  * Pointlessness of attr. prohibs, if a matching attr. decl
  * is existent a well, are checked.
+ *
+ * @param pctxt  the parser context
+ * @param item  the schema item
+ * @param completeWild  the intersected wildcard to be returned
+ * @param list  the attribute uses
+ * @param prohibs  the attribute prohibitions
  */
 static int
 xmlSchemaExpandAttributeGroupRefs(xmlSchemaParserCtxtPtr pctxt,
@@ -19215,16 +18899,15 @@ xmlSchemaExpandAttributeGroupRefs(xmlSch
 }
 
 /**
- * xmlSchemaAttributeGroupExpandRefs:
- * @pctxt:  the parser context
- * @attrGr:  the attribute group definition
- *
  * Computation of:
  * {attribute uses} property
  * {attribute wildcard} property
  *
  * Substitutes contained attribute group references
  * for their attribute uses. Wildcards are intersected.
+ *
+ * @param pctxt  the parser context
+ * @param attrGr  the attribute group definition
  */
 static int
 xmlSchemaAttributeGroupExpandRefs(xmlSchemaParserCtxtPtr pctxt,
@@ -19242,15 +18925,13 @@ xmlSchemaAttributeGroupExpandRefs(xmlSch
 }
 
 /**
- * xmlSchemaAttributeGroupExpandRefs:
- * @pctxt:  the parser context
- * @attrGr:  the attribute group definition
- *
  * Substitutes contained attribute group references
  * for their attribute uses. Wildcards are intersected.
  *
  * Schema Component Constraint:
  *    Attribute Group Definition Properties Correct (ag-props-correct)
+ * @param pctxt  the parser context
+ * @param attrGr  the attribute group definition
  */
 static int
 xmlSchemaCheckAGPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
@@ -19342,12 +19023,10 @@ next_use: {}
 }
 
 /**
- * xmlSchemaResolveAttrGroupReferences:
- * @attrgrpDecl:  the schema attribute definition
- * @ctxt:  the schema parser context
- * @name:  the attribute name
- *
  * Resolves references to attribute group definitions.
+ *
+ * @param ref  the schema attribute definition
+ * @param ctxt  the schema parser context
  */
 static int
 xmlSchemaResolveAttrGroupReferences(xmlSchemaQNameRefPtr ref,
@@ -19373,18 +19052,14 @@ xmlSchemaResolveAttrGroupReferences(xmlS
 }
 
 /**
- * xmlSchemaCheckAttrPropsCorrect:
- * @item:  an schema attribute declaration/use
- * @ctxt:  a schema parser context
- * @name:  the name of the attribute
- *
- *
  * Schema Component Constraint:
  *    Attribute Declaration Properties Correct (a-props-correct)
  *
  * Validates the value constraints of an attribute declaration/use.
  * NOTE that this needs the simple type definitions to be already
  *   built and checked.
+ * @param pctxt  a schema parser context
+ * @param attr  an schema attribute declaration/use
  */
 static int
 xmlSchemaCheckAttrPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
@@ -19473,16 +19148,13 @@ xmlSchemaCheckSubstGroupCircular(xmlSche
 }
 
 /**
- * xmlSchemaCheckElemPropsCorrect:
- * @ctxt:  a schema parser context
- * @decl: the element declaration
- * @name:  the name of the attribute
- *
  * Schema Component Constraint:
  * Element Declaration Properties Correct (e-props-correct)
  *
  * STATUS:
  *   missing: (6)
+ * @param pctxt  a schema parser context
+ * @param elemDecl  the element declaration
  */
 static int
 xmlSchemaCheckElemPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
@@ -19648,11 +19320,6 @@ xmlSchemaCheckElemPropsCorrect(xmlSchema
 }
 
 /**
- * xmlSchemaCheckElemSubstGroup:
- * @ctxt:  a schema parser context
- * @decl: the element declaration
- * @name:  the name of the attribute
- *
  * Schema Component Constraint:
  * Substitution Group (cos-equiv-class)
  *
@@ -19665,6 +19332,8 @@ xmlSchemaCheckElemPropsCorrect(xmlSchema
  *
  * STATUS:
  *
+ * @param ctxt  a schema parser context
+ * @param elemDecl  the element declaration
  */
 static void
 xmlSchemaCheckElemSubstGroup(xmlSchemaParserCtxtPtr ctxt,
@@ -19769,12 +19438,15 @@ add_member:
 #ifdef WXS_ELEM_DECL_CONS_ENABLED /* enable when finished */
 /**
  * xmlSchemaCheckElementDeclComponent
- * @pctxt: the schema parser context
- * @ctxtComponent: the context component (an element declaration)
- * @ctxtParticle: the first particle of the context component
- * @searchParticle: the element declaration particle to be analysed
  *
  * Schema Component Constraint: Element Declarations Consistent
+ *
+ * @param pctxt  the schema parser context
+ * @param ctxtComponent  the context component (an element declaration)
+ * @param ctxtParticle  the first particle of the context component
+ * @param searchParticle  the element declaration particle to be analysed
+ * @param curParticle  the current particle
+ * @param search  search flag
  */
 static int
 xmlSchemaCheckElementDeclConsistent(xmlSchemaParserCtxtPtr pctxt,
@@ -19885,12 +19557,12 @@ exit:
 
 /**
  * xmlSchemaCheckElementDeclComponent
- * @item:  an schema element declaration/particle
- * @ctxt:  a schema parser context
- * @name:  the name of the attribute
  *
  * Validates the value constraints of an element declaration.
  * Adds substitution group members.
+ *
+ * @param elemDecl  an schema element declaration/particle
+ * @param ctxt  a schema parser context
  */
 static void
 xmlSchemaCheckElementDeclComponent(xmlSchemaElementPtr elemDecl,
@@ -19910,12 +19582,11 @@ xmlSchemaCheckElementDeclComponent(xmlSc
 }
 
 /**
- * xmlSchemaResolveModelGroupParticleReferences:
- * @particle:  a particle component
- * @ctxt:  a parser context
- *
  * Resolves references of a model group's {particles} to
  * model group definitions and to element declarations.
+ *
+ * @param ctxt  a parser context
+ * @param mg  a model group
  */
 static void
 xmlSchemaResolveModelGroupParticleReferences(
@@ -20059,11 +19730,10 @@ xmlSchemaAreValuesEqual(xmlSchemaValPtr
 }
 
 /**
- * xmlSchemaResolveAttrUseReferences:
- * @item:  an attribute use
- * @ctxt:  a parser context
- *
  * Resolves the referenced attribute declaration.
+ *
+ * @param ause  an attribute use
+ * @param ctxt  a parser context
  */
 static int
 xmlSchemaResolveAttrUseReferences(xmlSchemaAttributeUsePtr ause,
@@ -20097,13 +19767,11 @@ xmlSchemaResolveAttrUseReferences(xmlSch
 }
 
 /**
- * xmlSchemaCheckAttrUsePropsCorrect:
- * @ctxt:  a parser context
- * @use:  an attribute use
- *
  * Schema Component Constraint:
  * Attribute Use Correct (au-props-correct)
  *
+ * @param ctxt  a parser context
+ * @param use  an attribute use
  */
 static int
 xmlSchemaCheckAttrUsePropsCorrect(xmlSchemaParserCtxtPtr ctxt,
@@ -20208,11 +19876,10 @@ xmlSchemaCheckAttrUsePropsCorrect(xmlSch
 
 
 /**
- * xmlSchemaResolveAttrTypeReferences:
- * @item:  an attribute declaration
- * @ctxt:  a parser context
- *
  * Resolves the referenced type definition component.
+ *
+ * @param item  an attribute declaration
+ * @param ctxt  a parser context
  */
 static int
 xmlSchemaResolveAttrTypeReferences(xmlSchemaAttributePtr item,
@@ -20254,14 +19921,12 @@ xmlSchemaResolveAttrTypeReferences(xmlSc
 }
 
 /**
- * xmlSchemaResolveIDCKeyReferences:
- * @idc:  the identity-constraint definition
- * @ctxt:  the schema parser context
- * @name:  the attribute name
- *
  * Resolve keyRef references to key/unique IDCs.
  * Schema Component Constraint:
  *   Identity-constraint Definition Properties Correct (c-props-correct)
+ *
+ * @param idc  the identity-constraint definition
+ * @param pctxt  the schema parser context
  */
 static int
 xmlSchemaResolveIDCKeyReferences(xmlSchemaIDCPtr idc,
@@ -21184,17 +20849,15 @@ exit:
     return(ret);
 }
 /**
- * xmlSchemaParse:
- * @ctxt:  a schema validation context
- *
  * parse a schema definition resource and build an internal
  * XML Schema structure which can be used to validate instances.
  *
- * Returns the internal XML Schema structure built from the resource or
+ * @param ctxt  a schema validation context
+ * @returns the internal XML Schema structure built from the resource or
  *         NULL in case of error
  */
-xmlSchemaPtr
-xmlSchemaParse(xmlSchemaParserCtxtPtr ctxt)
+xmlSchema *
+xmlSchemaParse(xmlSchemaParserCtxt *ctxt)
 {
     xmlSchemaPtr mainSchema = NULL;
     xmlSchemaBucketPtr bucket = NULL;
@@ -21309,18 +20972,17 @@ exit_failure:
 }
 
 /**
- * xmlSchemaSetParserErrors:
- * @ctxt:  a schema validation context
- * @err:  the error callback
- * @warn:  the warning callback
- * @ctx:  contextual data for the callbacks
+ * Set the callback functions used to handle errors for a validation context
  *
- * DEPRECATED: Use xmlSchemaSetParserStructuredErrors.
+ * @deprecated Use xmlSchemaSetParserStructuredErrors.
  *
- * Set the callback functions used to handle errors for a validation context
+ * @param ctxt  a schema validation context
+ * @param err  the error callback
+ * @param warn  the warning callback
+ * @param ctx  contextual data for the callbacks
  */
 void
-xmlSchemaSetParserErrors(xmlSchemaParserCtxtPtr ctxt,
+xmlSchemaSetParserErrors(xmlSchemaParserCtxt *ctxt,
                          xmlSchemaValidityErrorFunc err,
                          xmlSchemaValidityWarningFunc warn, void *ctx)
 {
@@ -21334,15 +20996,14 @@ xmlSchemaSetParserErrors(xmlSchemaParser
 }
 
 /**
- * xmlSchemaSetParserStructuredErrors:
- * @ctxt:  a schema parser context
- * @serror:  the structured error function
- * @ctx: the functions context
- *
  * Set the structured error callback
+ *
+ * @param ctxt  a schema parser context
+ * @param serror  the structured error function
+ * @param ctx  the functions context
  */
 void
-xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
+xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxt *ctxt,
 				   xmlStructuredErrorFunc serror,
 				   void *ctx)
 {
@@ -21355,18 +21016,16 @@ xmlSchemaSetParserStructuredErrors(xmlSc
 }
 
 /**
- * xmlSchemaGetParserErrors:
- * @ctxt:  a XMl-Schema parser context
- * @err: the error callback result
- * @warn: the warning callback result
- * @ctx: contextual data for the callbacks result
- *
  * Get the callback information used to handle errors for a parser context
  *
- * Returns -1 in case of failure, 0 otherwise
+ * @param ctxt  a XMl-Schema parser context
+ * @param err  the error callback result
+ * @param warn  the warning callback result
+ * @param ctx  contextual data for the callbacks result
+ * @returns -1 in case of failure, 0 otherwise
  */
 int
-xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
+xmlSchemaGetParserErrors(xmlSchemaParserCtxt *ctxt,
 			 xmlSchemaValidityErrorFunc * err,
 			 xmlSchemaValidityWarningFunc * warn, void **ctx)
 {
@@ -21382,18 +21041,16 @@ xmlSchemaGetParserErrors(xmlSchemaParser
 }
 
 /**
- * xmlSchemaSetResourceLoader:
- * @ctxt:  schema parser
- * @loader:  resource loader
- * @data:  user data which will be passed to the loader
- *
  * Register a callback function that will be called to load documents
  * or external entities.
  *
- * Available since 2.14.0.
+ * @since 2.14.0
+ * @param ctxt  schema parser
+ * @param loader  resource loader
+ * @param data  user data which will be passed to the loader
  */
 void
-xmlSchemaSetResourceLoader(xmlSchemaParserCtxtPtr ctxt,
+xmlSchemaSetResourceLoader(xmlSchemaParserCtxt *ctxt,
                            xmlResourceLoader loader, void *data) {
     if (ctxt == NULL)
         return;
@@ -21402,12 +21059,10 @@ xmlSchemaSetResourceLoader(xmlSchemaPars
 }
 
 /**
- * xmlSchemaFacetTypeToString:
- * @type:  the facet type
- *
  * Convert the xmlSchemaTypeType to a char string.
  *
- * Returns the char string representation of the facet type if the
+ * @param type  the facet type
+ * @returns the char string representation of the facet type if the
  *     type is a facet and an "Internal Error" string otherwise.
  */
 static const xmlChar *
@@ -21501,17 +21156,14 @@ xmlSchemaGetWhiteSpaceFacetValue(xmlSche
  ************************************************************************/
 
 /**
- * xmlSchemaAssembleByLocation:
- * @pctxt:  a schema parser context
- * @vctxt:  a schema validation context
- * @schema: the existing schema
- * @node: the node that fired the assembling
- * @nsName: the namespace name of the new schema
- * @location: the location of the schema
- *
  * Expands an existing schema by an additional schema.
  *
- * Returns 0 if the new schema is correct, a positive error code
+ * @param vctxt  a schema validation context
+ * @param schema  the existing schema
+ * @param node  the node that fired the assembling
+ * @param nsName  the namespace name of the new schema
+ * @param location  the location of the schema
+ * @returns 0 if the new schema is correct, a positive error code
  * number otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -21641,15 +21293,13 @@ xmlSchemaGetMetaAttrInfo(xmlSchemaValidC
 }
 
 /**
- * xmlSchemaAssembleByXSI:
- * @vctxt:  a schema validation context
- *
  * Expands an existing schema by an additional schema using
  * the xsi:schemaLocation or xsi:noNamespaceSchemaLocation attribute
- * of an instance. If xsi:noNamespaceSchemaLocation is used, @noNamespace
+ * of an instance. If xsi:noNamespaceSchemaLocation is used, `noNamespace`
  * must be set to 1.
  *
- * Returns 0 if the new schema is correct, a positive error code
+ * @param vctxt  a schema validation context
+ * @returns 0 if the new schema is correct, a positive error code
  * number otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -21903,12 +21553,12 @@ xmlSchemaVAddNodeQName(xmlSchemaValidCtx
  ************************************************************************/
 
 /**
- * xmlSchemaAugmentIDC:
- * @idcDef: the IDC definition
- *
  * Creates an augmented IDC definition item.
  *
- * Returns the item, or NULL on internal errors.
+ * @param payload  the IDC definition
+ * @param data  validation context
+ * @param name  unused
+ * @returns the item, or NULL on internal errors.
  */
 static void
 xmlSchemaAugmentIDC(void *payload, void *data,
@@ -21941,10 +21591,11 @@ xmlSchemaAugmentIDC(void *payload, void
 }
 
 /**
- * xmlSchemaAugmentImportedIDC:
- * @imported: the imported schema
- *
  * Creates an augmented IDC definition for the imported schema.
+ *
+ * @param payload  the imported schema
+ * @param data  validation context
+ * @param name  unused
  */
 static void
 xmlSchemaAugmentImportedIDC(void *payload, void *data,
@@ -21957,12 +21608,10 @@ xmlSchemaAugmentImportedIDC(void *payloa
 }
 
 /**
- * xmlSchemaIDCNewBinding:
- * @idcDef: the IDC definition of this binding
- *
  * Creates a new IDC binding.
  *
- * Returns the new IDC binding, NULL on internal errors.
+ * @param idcDef  the IDC definition of this binding
+ * @returns the new IDC binding, NULL on internal errors.
  */
 static xmlSchemaPSVIIDCBindingPtr
 xmlSchemaIDCNewBinding(xmlSchemaIDCPtr idcDef)
@@ -21981,15 +21630,13 @@ xmlSchemaIDCNewBinding(xmlSchemaIDCPtr i
 }
 
 /**
- * xmlSchemaIDCStoreNodeTableItem:
- * @vctxt: the WXS validation context
- * @item: the IDC node table item
- *
  * The validation context is used to store IDC node table items.
  * They are stored to avoid copying them if IDC node-tables are merged
  * with corresponding parent IDC node-tables (bubbling).
  *
- * Returns 0 if succeeded, -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param item  the IDC node table item
+ * @returns 0 if succeeded, -1 on internal errors.
  */
 static int
 xmlSchemaIDCStoreNodeTableItem(xmlSchemaValidCtxtPtr vctxt,
@@ -22023,13 +21670,11 @@ xmlSchemaIDCStoreNodeTableItem(xmlSchema
 }
 
 /**
- * xmlSchemaIDCStoreKey:
- * @vctxt: the WXS validation context
- * @item: the IDC key
- *
  * The validation context is used to store an IDC key.
  *
- * Returns 0 if succeeded, -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param key  the IDC key
+ * @returns 0 if succeeded, -1 on internal errors.
  */
 static int
 xmlSchemaIDCStoreKey(xmlSchemaValidCtxtPtr vctxt,
@@ -22063,13 +21708,11 @@ xmlSchemaIDCStoreKey(xmlSchemaValidCtxtP
 }
 
 /**
- * xmlSchemaIDCAppendNodeTableItem:
- * @bind: the IDC binding
- * @ntItem: the node-table item
- *
  * Appends the IDC node-table item to the binding.
  *
- * Returns 0 on success and -1 on internal errors.
+ * @param bind  the IDC binding
+ * @param ntItem  the node-table item
+ * @returns 0 on success and -1 on internal errors.
  */
 static int
 xmlSchemaIDCAppendNodeTableItem(xmlSchemaPSVIIDCBindingPtr bind,
@@ -22100,15 +21743,13 @@ xmlSchemaIDCAppendNodeTableItem(xmlSchem
 }
 
 /**
- * xmlSchemaIDCAcquireBinding:
- * @vctxt: the WXS validation context
- * @matcher: the IDC matcher
- *
  * Looks up an PSVI IDC binding, for the IDC definition and
  * of the given matcher. If none found, a new one is created
  * and added to the IDC table.
  *
- * Returns an IDC binding or NULL on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param matcher  the IDC matcher
+ * @returns an IDC binding or NULL on internal errors.
  */
 static xmlSchemaPSVIIDCBindingPtr
 xmlSchemaIDCAcquireBinding(xmlSchemaValidCtxtPtr vctxt,
@@ -22155,10 +21796,9 @@ xmlSchemaIDCAcquireTargetList(xmlSchemaV
 }
 
 /**
- * xmlSchemaIDCFreeKey:
- * @key: the IDC key
- *
  * Frees an IDC key together with its compiled value.
+ *
+ * @param key  the IDC key
  */
 static void
 xmlSchemaIDCFreeKey(xmlSchemaPSVIIDCKeyPtr key)
@@ -22169,8 +21809,6 @@ xmlSchemaIDCFreeKey(xmlSchemaPSVIIDCKeyP
 }
 
 /**
- * xmlSchemaIDCFreeBinding:
- *
  * Frees an IDC binding. Note that the node table-items
  * are not freed.
  */
@@ -22185,10 +21823,9 @@ xmlSchemaIDCFreeBinding(xmlSchemaPSVIIDC
 }
 
 /**
- * xmlSchemaIDCFreeIDCTable:
- * @bind: the first IDC binding in the list
- *
  * Frees an IDC table, i.e. all the IDC bindings in the list.
+ *
+ * @param bind  the first IDC binding in the list
  */
 static void
 xmlSchemaIDCFreeIDCTable(xmlSchemaPSVIIDCBindingPtr bind)
@@ -22214,10 +21851,9 @@ xmlFreeIDCHashEntry (void *payload, cons
 }
 
 /**
- * xmlSchemaIDCFreeMatcherList:
- * @matcher: the first IDC matcher in the list
- *
  * Frees a list of IDC matchers.
+ *
+ * @param matcher  the first IDC matcher in the list
  */
 static void
 xmlSchemaIDCFreeMatcherList(xmlSchemaIDCMatcherPtr matcher)
@@ -22259,11 +21895,10 @@ xmlSchemaIDCFreeMatcherList(xmlSchemaIDC
 }
 
 /**
- * xmlSchemaIDCReleaseMatcherList:
- * @vctxt: the WXS validation context
- * @matcher: the first IDC matcher in the list
- *
  * Caches a list of IDC matchers for reuse.
+ *
+ * @param vctxt  the WXS validation context
+ * @param matcher  the first IDC matcher in the list
  */
 static void
 xmlSchemaIDCReleaseMatcherList(xmlSchemaValidCtxtPtr vctxt,
@@ -22320,18 +21955,15 @@ xmlSchemaIDCReleaseMatcherList(xmlSchema
 }
 
 /**
- * xmlSchemaIDCAddStateObject:
- * @vctxt: the WXS validation context
- * @matcher: the IDC matcher
- * @sel: the XPath information
- * @parent: the parent "selector" state object if any
- * @type: "selector" or "field"
- *
  * Creates/reuses and activates state objects for the given
  * XPath information; if the XPath expression consists of unions,
  * multiple state objects are created for every unioned expression.
  *
- * Returns 0 on success and -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param matcher  the IDC matcher
+ * @param sel  the XPath information
+ * @param type  "selector" or "field"
+ * @returns 0 on success and -1 on internal errors.
  */
 static int
 xmlSchemaIDCAddStateObject(xmlSchemaValidCtxtPtr vctxt,
@@ -22392,13 +22024,11 @@ xmlSchemaIDCAddStateObject(xmlSchemaVali
 }
 
 /**
- * xmlSchemaXPathEvaluate:
- * @vctxt: the WXS validation context
- * @nodeType: the nodeType of the current node
- *
  * Evaluates all active XPath state objects.
  *
- * Returns the number of IC "field" state objects which resolved to
+ * @param vctxt  the WXS validation context
+ * @param nodeType  the nodeType of the current node
+ * @returns the number of IC "field" state objects which resolved to
  * this node, 0 if none resolved and -1 on internal errors.
  */
 static int
@@ -22560,12 +22190,10 @@ xmlSchemaHashKeySequence(xmlSchemaValidC
 }
 
 /**
- * xmlSchemaXPathPop:
- * @vctxt: the WXS validation context
- *
  * Pops all XPath states.
  *
- * Returns 0 on success and -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @returns 0 on success and -1 on internal errors.
  */
 static int
 xmlSchemaXPathPop(xmlSchemaValidCtxtPtr vctxt)
@@ -22586,15 +22214,12 @@ xmlSchemaXPathPop(xmlSchemaValidCtxtPtr
 }
 
 /**
- * xmlSchemaXPathProcessHistory:
- * @vctxt: the WXS validation context
- * @type: the simple/complex type of the current node if any at all
- * @val: the precompiled value
- *
  * Processes and pops the history items of the IDC state objects.
  * IDC key-sequences are validated/created on IDC bindings.
  *
- * Returns 0 on success and -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param depth  depth
+ * @returns 0 on success and -1 on internal errors.
  */
 static int
 xmlSchemaXPathProcessHistory(xmlSchemaValidCtxtPtr vctxt,
@@ -23098,14 +22723,12 @@ deregister_check:
 }
 
 /**
- * xmlSchemaIDCRegisterMatchers:
- * @vctxt: the WXS validation context
- * @elemDecl: the element declaration
- *
  * Creates helper objects to evaluate IDC selectors/fields
  * successively.
  *
- * Returns 0 if OK and -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @param elemDecl  the element declaration
+ * @returns 0 if OK and -1 on internal errors.
  */
 static int
 xmlSchemaIDCRegisterMatchers(xmlSchemaValidCtxtPtr vctxt,
@@ -23409,15 +23032,13 @@ internal_error:
 }
 
 /**
- * xmlSchemaBubbleIDCNodeTables:
- * @depth: the current tree depth
- *
- * Merges IDC bindings of an element at @depth into the corresponding IDC
+ * Merges IDC bindings of an element at `depth` into the corresponding IDC
  * bindings of its parent element. If a duplicate note-table entry is found,
  * both, the parent node-table entry and child entry are discarded from the
  * node-table of the parent.
  *
- * Returns 0 if OK and -1 on internal errors.
+ * @param vctxt  the WXS validation context
+ * @returns 0 if OK and -1 on internal errors.
  */
 static int
 xmlSchemaBubbleIDCNodeTables(xmlSchemaValidCtxtPtr vctxt)
@@ -23709,11 +23330,9 @@ internal_error:
 }
 
 /**
- * xmlSchemaCheckCVCIDCKeyRef:
- * @vctxt: the WXS validation context
- * @elemDecl: the element declaration
- *
  * Check the cvc-idc-keyref constraints.
+ *
+ * @param vctxt  the WXS validation context
  */
 static int
 xmlSchemaCheckCVCIDCKeyRef(xmlSchemaValidCtxtPtr vctxt)
@@ -23991,9 +23610,8 @@ xmlSchemaValidatorPushAttribute(xmlSchem
 }
 
 /**
- * xmlSchemaClearElemInfo:
- * @vctxt: the WXS validation context
- * @ielem: the element information item
+ * @param vctxt  the WXS validation context
+ * @param ielem  the element information item
  */
 static void
 xmlSchemaClearElemInfo(xmlSchemaValidCtxtPtr vctxt,
@@ -24052,13 +23670,11 @@ xmlSchemaClearElemInfo(xmlSchemaValidCtx
 }
 
 /**
- * xmlSchemaGetFreshElemInfo:
- * @vctxt: the schema validation context
- *
  * Creates/reuses and initializes the element info item for
  * the current tree depth.
  *
- * Returns the element info item or NULL on API or internal errors.
+ * @param vctxt  the schema validation context
+ * @returns the element info item or NULL on API or internal errors.
  */
 static xmlSchemaNodeInfoPtr
 xmlSchemaGetFreshElemInfo(xmlSchemaValidCtxtPtr vctxt)
@@ -27403,15 +27019,13 @@ internal_error:
  ************************************************************************/
 
 /**
- * xmlSchemaNewValidCtxt:
- * @schema:  a precompiled XML Schemas
- *
  * Create an XML Schemas validation context based on the given schema.
  *
- * Returns the validation context or NULL in case of error
+ * @param schema  a precompiled XML Schemas
+ * @returns the validation context or NULL in case of error
  */
-xmlSchemaValidCtxtPtr
-xmlSchemaNewValidCtxt(xmlSchemaPtr schema)
+xmlSchemaValidCtxt *
+xmlSchemaNewValidCtxt(xmlSchema *schema)
 {
     xmlSchemaValidCtxtPtr ret;
 
@@ -27437,15 +27051,14 @@ xmlSchemaNewValidCtxt(xmlSchemaPtr schem
 }
 
 /**
- * xmlSchemaValidateSetFilename:
- * @vctxt: the schema validation context
- * @filename: the file name
- *
  * Workaround to provide file error reporting information when this is
  * not provided by current APIs
+ *
+ * @param vctxt  the schema validation context
+ * @param filename  the file name
  */
 void
-xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, const char *filename) {
+xmlSchemaValidateSetFilename(xmlSchemaValidCtxt *vctxt, const char *filename) {
     if (vctxt == NULL)
         return;
     if (vctxt->filename != NULL)
@@ -27457,11 +27070,10 @@ xmlSchemaValidateSetFilename(xmlSchemaVa
 }
 
 /**
- * xmlSchemaClearValidCtxt:
- * @vctxt: the schema validation context
- *
  * Free the resources associated to the schema validation context;
  * leaves some fields alive intended for reuse of the context.
+ *
+ * @param vctxt  the schema validation context
  */
 static void
 xmlSchemaClearValidCtxt(xmlSchemaValidCtxtPtr vctxt)
@@ -27582,13 +27194,12 @@ xmlSchemaClearValidCtxt(xmlSchemaValidCt
 }
 
 /**
- * xmlSchemaFreeValidCtxt:
- * @ctxt:  the schema validation context
- *
  * Free the resources associated to the schema validation context
+ *
+ * @param ctxt  the schema validation context
  */
 void
-xmlSchemaFreeValidCtxt(xmlSchemaValidCtxtPtr ctxt)
+xmlSchemaFreeValidCtxt(xmlSchemaValidCtxt *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -27670,16 +27281,14 @@ xmlSchemaFreeValidCtxt(xmlSchemaValidCtx
 }
 
 /**
- * xmlSchemaIsValid:
- * @ctxt: the schema validation context
- *
  * Check if any error was detected during validation.
  *
- * Returns 1 if valid so far, 0 if errors were detected, and -1 in case
+ * @param ctxt  the schema validation context
+ * @returns 1 if valid so far, 0 if errors were detected, and -1 in case
  *         of internal error.
  */
 int
-xmlSchemaIsValid(xmlSchemaValidCtxtPtr ctxt)
+xmlSchemaIsValid(xmlSchemaValidCtxt *ctxt)
 {
     if (ctxt == NULL)
         return(-1);
@@ -27687,18 +27296,17 @@ xmlSchemaIsValid(xmlSchemaValidCtxtPtr c
 }
 
 /**
- * xmlSchemaSetValidErrors:
- * @ctxt:  a schema validation context
- * @err:  the error function
- * @warn: the warning function
- * @ctx: the functions context
+ * Set the error and warning callback information
  *
- * DEPRECATED: Use xmlSchemaSetValidStructuredErrors.
+ * @deprecated Use xmlSchemaSetValidStructuredErrors.
  *
- * Set the error and warning callback information
+ * @param ctxt  a schema validation context
+ * @param err  the error function
+ * @param warn  the warning function
+ * @param ctx  the functions context
  */
 void
-xmlSchemaSetValidErrors(xmlSchemaValidCtxtPtr ctxt,
+xmlSchemaSetValidErrors(xmlSchemaValidCtxt *ctxt,
                         xmlSchemaValidityErrorFunc err,
                         xmlSchemaValidityWarningFunc warn, void *ctx)
 {
@@ -27712,15 +27320,14 @@ xmlSchemaSetValidErrors(xmlSchemaValidCt
 }
 
 /**
- * xmlSchemaSetValidStructuredErrors:
- * @ctxt:  a schema validation context
- * @serror:  the structured error function
- * @ctx: the functions context
- *
  * Set the structured error callback
+ *
+ * @param ctxt  a schema validation context
+ * @param serror  the structured error function
+ * @param ctx  the functions context
  */
 void
-xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
+xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxt *ctxt,
 				  xmlStructuredErrorFunc serror, void *ctx)
 {
     if (ctxt == NULL)
@@ -27734,18 +27341,16 @@ xmlSchemaSetValidStructuredErrors(xmlSch
 }
 
 /**
- * xmlSchemaGetValidErrors:
- * @ctxt: a XML-Schema validation context
- * @err: the error function result
- * @warn: the warning function result
- * @ctx: the functions context result
- *
  * Get the error and warning callback information
  *
- * Returns -1 in case of error and 0 otherwise
+ * @param ctxt  a XML-Schema validation context
+ * @param err  the error function result
+ * @param warn  the warning function result
+ * @param ctx  the functions context result
+ * @returns -1 in case of error and 0 otherwise
  */
 int
-xmlSchemaGetValidErrors(xmlSchemaValidCtxtPtr ctxt,
+xmlSchemaGetValidErrors(xmlSchemaValidCtxt *ctxt,
 			xmlSchemaValidityErrorFunc * err,
 			xmlSchemaValidityWarningFunc * warn, void **ctx)
 {
@@ -27762,17 +27367,15 @@ xmlSchemaGetValidErrors(xmlSchemaValidCt
 
 
 /**
- * xmlSchemaSetValidOptions:
- * @ctxt:	a schema validation context
- * @options: a combination of xmlSchemaValidOption
- *
  * Sets the options to be used during the validation.
  *
- * Returns 0 in case of success, -1 in case of an
+ * @param ctxt  	a schema validation context
+ * @param options  a combination of xmlSchemaValidOption
+ * @returns 0 in case of success, -1 in case of an
  * API error.
  */
 int
-xmlSchemaSetValidOptions(xmlSchemaValidCtxtPtr ctxt,
+xmlSchemaSetValidOptions(xmlSchemaValidCtxt *ctxt,
 			 int options)
 
 {
@@ -27795,15 +27398,13 @@ xmlSchemaSetValidOptions(xmlSchemaValidC
 }
 
 /**
- * xmlSchemaValidCtxtGetOptions:
- * @ctxt: a schema validation context
- *
  * Get the validation context options.
  *
- * Returns the option combination or -1 on error.
+ * @param ctxt  a schema validation context
+ * @returns the option combination or -1 on error.
  */
 int
-xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt)
+xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxt *ctxt)
 
 {
     if (ctxt == NULL)
@@ -28096,17 +27697,15 @@ xmlSchemaVStart(xmlSchemaValidCtxtPtr vc
 }
 
 /**
- * xmlSchemaValidateOneElement:
- * @ctxt:  a schema validation context
- * @elem:  an element node
+ * Validate a branch of a tree, starting with the given `elem`.
  *
- * Validate a branch of a tree, starting with the given @elem.
- *
- * Returns 0 if the element and its subtree is valid, a positive error
+ * @param ctxt  a schema validation context
+ * @param elem  an element node
+ * @returns 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.
  */
 int
-xmlSchemaValidateOneElement(xmlSchemaValidCtxtPtr ctxt, xmlNodePtr elem)
+xmlSchemaValidateOneElement(xmlSchemaValidCtxt *ctxt, xmlNode *elem)
 {
     if ((ctxt == NULL) || (elem == NULL) || (elem->type != XML_ELEMENT_NODE))
 	return (-1);
@@ -28121,17 +27720,15 @@ xmlSchemaValidateOneElement(xmlSchemaVal
 }
 
 /**
- * xmlSchemaValidateDoc:
- * @ctxt:  a schema validation context
- * @doc:  a parsed document tree
- *
  * Validate a document tree in memory.
  *
- * Returns 0 if the document is schemas valid, a positive error code
+ * @param ctxt  a schema validation context
+ * @param doc  a parsed document tree
+ * @returns 0 if the document is schemas valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
 int
-xmlSchemaValidateDoc(xmlSchemaValidCtxtPtr ctxt, xmlDocPtr doc)
+xmlSchemaValidateDoc(xmlSchemaValidCtxt *ctxt, xmlDoc *doc)
 {
     if ((ctxt == NULL) || (doc == NULL))
         return (-1);
@@ -28491,21 +28088,19 @@ endElementNsSplit(void *ctx, const xmlCh
 }
 
 /**
- * xmlSchemaSAXPlug:
- * @ctxt:  a schema validation context
- * @sax:  a pointer to the original xmlSAXHandlerPtr
- * @user_data:  a pointer to the original SAX user data pointer
- *
  * Plug a SAX based validation layer in a SAX parsing event flow.
- * The original @saxptr and @dataptr data are replaced by new pointers
+ * The original `saxptr` and `dataptr` data are replaced by new pointers
  * but the calls to the original will be maintained.
  *
- * Returns a pointer to a data structure needed to unplug the validation layer
+ * @param ctxt  a schema validation context
+ * @param sax  a pointer to the original xmlSAXHandler
+ * @param user_data  a pointer to the original SAX user data pointer
+ * @returns a pointer to a data structure needed to unplug the validation layer
  *         or NULL in case of errors.
  */
-xmlSchemaSAXPlugPtr
-xmlSchemaSAXPlug(xmlSchemaValidCtxtPtr ctxt,
-		 xmlSAXHandlerPtr *sax, void **user_data)
+xmlSchemaSAXPlugStruct *
+xmlSchemaSAXPlug(xmlSchemaValidCtxt *ctxt,
+		 xmlSAXHandler **sax, void **user_data)
 {
     xmlSchemaSAXPlugPtr ret;
     xmlSAXHandlerPtr old_sax;
@@ -28637,16 +28232,14 @@ xmlSchemaSAXPlug(xmlSchemaValidCtxtPtr c
 }
 
 /**
- * xmlSchemaSAXUnplug:
- * @plug:  a data structure returned by xmlSchemaSAXPlug
- *
  * Unplug a SAX based validation layer in a SAX parsing event flow.
  * The original pointers used in the call are restored.
  *
- * Returns 0 in case of success and -1 in case of failure.
+ * @param plug  a data structure returned by xmlSchemaSAXPlug
+ * @returns 0 in case of success and -1 in case of failure.
  */
 int
-xmlSchemaSAXUnplug(xmlSchemaSAXPlugPtr plug)
+xmlSchemaSAXUnplug(xmlSchemaSAXPlugStruct *plug)
 {
     xmlSAXHandlerPtr *sax;
     void **user_data;
@@ -28670,19 +28263,18 @@ xmlSchemaSAXUnplug(xmlSchemaSAXPlugPtr p
 }
 
 /**
- * xmlSchemaValidateSetLocator:
- * @vctxt: a schema validation context
- * @f: the locator function pointer
- * @ctxt: the locator context
- *
  * Allows to set a locator function to the validation context,
  * which will be used to provide file and line information since
  * those are not provided as part of the SAX validation flow
- * Setting @f to NULL disable the locator.
+ * Setting `f` to NULL disable the locator.
+ *
+ * @param vctxt  a schema validation context
+ * @param f  the locator function pointer
+ * @param ctxt  the locator context
  */
 
 void
-xmlSchemaValidateSetLocator(xmlSchemaValidCtxtPtr vctxt,
+xmlSchemaValidateSetLocator(xmlSchemaValidCtxt *vctxt,
                             xmlSchemaValidityLocatorFunc f,
 			    void *ctxt)
 {
@@ -28692,14 +28284,12 @@ xmlSchemaValidateSetLocator(xmlSchemaVal
 }
 
 /**
- * xmlSchemaValidateStreamLocator:
- * @ctx: the xmlTextReaderPtr used
- * @file: returned file information
- * @line: returned line information
- *
  * Internal locator function for the readers
  *
- * Returns 0 in case the Schema validation could be (de)activated and
+ * @param ctx  the xmlTextReader used
+ * @param file  returned file information
+ * @param line  returned line information
+ * @returns 0 in case the Schema validation could be (de)activated and
  *         -1 in case of error.
  */
 static int
@@ -28727,11 +28317,9 @@ xmlSchemaValidateStreamLocator(void *ctx
 }
 
 /**
- * xmlSchemaValidateStreamInternal:
- * @ctxt:  a schema validation context
- * @pctxt:  a parser context
- *
- * Returns 0 if the document is schemas valid, a positive error code
+ * @param ctxt  a schema validation context
+ * @param pctxt  a parser context
+ * @returns 0 if the document is schemas valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
 static int
@@ -28740,7 +28328,6 @@ xmlSchemaValidateStreamInternal(xmlSchem
     xmlSchemaSAXPlugPtr plug = NULL;
     int ret;
 
-    pctxt->linenumbers = 1;
     xmlSchemaValidateSetLocator(ctxt, xmlSchemaValidateStreamLocator, pctxt);
 
     ctxt->parserCtxt = pctxt;
@@ -28776,23 +28363,21 @@ done:
 }
 
 /**
- * xmlSchemaValidateStream:
- * @ctxt:  a schema validation context
- * @input:  the input to use for reading the data
- * @enc:  an optional encoding information
- * @sax:  a SAX handler for the resulting events
- * @user_data:  the context to provide to the SAX handler.
- *
  * Validate an input based on a flow of SAX event from the parser
- * and forward the events to the @sax handler with the provided @user_data
- * the user provided @sax handler must be a SAX2 one.
+ * and forward the events to the `sax` handler with the provided `user_data`
+ * the user provided `sax` handler must be a SAX2 one.
  *
- * Returns 0 if the document is schemas valid, a positive error code
+ * @param ctxt  a schema validation context
+ * @param input  the input to use for reading the data
+ * @param enc  an optional encoding information
+ * @param sax  a SAX handler for the resulting events
+ * @param user_data  the context to provide to the SAX handler.
+ * @returns 0 if the document is schemas valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
 int
-xmlSchemaValidateStream(xmlSchemaValidCtxtPtr ctxt,
-                        xmlParserInputBufferPtr input, xmlCharEncoding enc,
+xmlSchemaValidateStream(xmlSchemaValidCtxt *ctxt,
+                        xmlParserInputBuffer *input, xmlCharEncoding enc,
                         const xmlSAXHandler *sax, void *user_data)
 {
     xmlParserCtxtPtr pctxt = NULL;
@@ -28846,19 +28431,17 @@ done:
 }
 
 /**
- * xmlSchemaValidateFile:
- * @ctxt: a schema validation context
- * @filename: the URI of the instance
- * @options: a future set of options, currently unused
- *
  * Do a schemas validation of the given resource, it will use the
  * SAX streamable validation internally.
  *
- * Returns 0 if the document is valid, a positive error code
+ * @param ctxt  a schema validation context
+ * @param filename  the URI of the instance
+ * @param options  a future set of options, currently unused
+ * @returns 0 if the document is valid, a positive error code
  *     number otherwise and -1 in case of an internal or API error.
  */
 int
-xmlSchemaValidateFile(xmlSchemaValidCtxtPtr ctxt,
+xmlSchemaValidateFile(xmlSchemaValidCtxt *ctxt,
                       const char * filename,
 		      int options ATTRIBUTE_UNUSED)
 {
@@ -28880,16 +28463,14 @@ xmlSchemaValidateFile(xmlSchemaValidCtxt
 }
 
 /**
- * xmlSchemaValidCtxtGetParserCtxt:
- * @ctxt: a schema validation context
- *
  * allow access to the parser context of the schema validation context
  *
- * Returns the parser context of the schema validation context or NULL
+ * @param ctxt  a schema validation context
+ * @returns the parser context of the schema validation context or NULL
  *         in case of error.
  */
-xmlParserCtxtPtr
-xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt)
+xmlParserCtxt *
+xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxt *ctxt)
 {
     if (ctxt == NULL)
         return(NULL);
diff -pruN 2.14.6+dfsg-0.1/xmlschemastypes.c 2.15.0+dfsg-0.3/xmlschemastypes.c
--- 2.14.6+dfsg-0.1/xmlschemastypes.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlschemastypes.c	2025-09-15 11:55:59.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * See Copyright for the status of this software.
  *
- * Daniel Veillard <veillard@redhat.com>
+ * Author: Daniel Veillard
  */
 
 /* To avoid EBCDIC trouble when parsing on zOS */
@@ -35,6 +35,7 @@
 #include <libxml/xmlschemastypes.h>
 
 #include "private/error.h"
+#include "private/threads.h"
 
 #ifndef isnan
   #define isnan(x) (!((x) == (x)))
@@ -189,9 +190,6 @@ static xmlSchemaTypePtr xmlSchemaTypeNmt
  *									*
  ************************************************************************/
 /**
- * xmlSchemaTypeErrMemory:
- * @extra:  extra information
- *
  * Handle an out of memory condition
  */
 static void
@@ -207,12 +205,10 @@ xmlSchemaTypeErrMemory(void)
  ************************************************************************/
 
 /**
- * xmlSchemaNewValue:
- * @type:  the value type
- *
  * Allocate a new simple type value
  *
- * Returns a pointer to the new value or NULL in case of error
+ * @param type  the value type
+ * @returns a pointer to the new value or NULL in case of error
  */
 static xmlSchemaValPtr
 xmlSchemaNewValue(xmlSchemaValType type) {
@@ -259,9 +255,8 @@ xmlSchemaNewMinLengthFacet(int value)
 }
 
 /*
- * xmlSchemaInitBasicType:
- * @name:  the type name
- * @type:  the value type associated
+ * @param name  the type name
+ * @param type  the value type associated
  *
  * Initialize one primitive built-in type
  */
@@ -367,11 +362,11 @@ xmlSchemaValDecimalGetSignificantDigitCo
 }
 
 /**
- * @brief Compares two decimals
+ * `brief` Compares two decimals
  * 
- * @param lhs 
- * @param rhs 
- * @return positive value if lhs > rhs, negative if lhs < rhs, or 0 if lhs == rhs
+ * `param` lhs 
+ * `param` rhs 
+ * `return` positive value if lhs > rhs, negative if lhs < rhs, or 0 if lhs == rhs
  */
 static int xmlSchemaValDecimalCompare(const xmlSchemaValDecimal *lhs, const xmlSchemaValDecimal *rhs)
 {
@@ -483,8 +478,6 @@ xmlSchemaFreeTypeEntry(void *type, const
 }
 
 /**
- * xmlSchemaCleanupTypesInternal:
- *
  * Cleanup the default XML Schemas type library
  */
 static void
@@ -522,18 +515,35 @@ xmlSchemaCleanupTypesInternal(void) {
     /* Note that the xmlSchemaType*Def pointers aren't set to NULL. */
 }
 
-/*
- * xmlSchemaInitTypes:
- *
+static xmlMutex xmlSchemasTypesMutex;
+
+void
+xmlInitSchemasTypesInternal(void)
+{
+    xmlInitMutex(&xmlSchemasTypesMutex);
+}
+
+void
+xmlCleanupSchemasTypesInternal(void)
+{
+    xmlCleanupMutex(&xmlSchemasTypesMutex);
+}
+
+/**
  * Initialize the default XML Schemas type library
  *
- * Returns 0 on success, -1 on error.
+ * @returns 0 on success, -1 on error.
  */
 int
 xmlSchemaInitTypes(void)
 {
-    if (xmlSchemaTypesInitialized != 0)
+    xmlInitParser();
+
+    xmlMutexLock(&xmlSchemasTypesMutex);
+    if (xmlSchemaTypesInitialized != 0) {
+        xmlMutexUnlock(&xmlSchemasTypesMutex);
         return (0);
+    }
 
 #if defined(NAN) && defined(INFINITY)
     xmlSchemaNAN = NAN;
@@ -863,44 +873,45 @@ xmlSchemaInitTypes(void)
     xmlSchemaTypeNmtokensDef->subtypes = xmlSchemaTypeNmtokenDef;
 
     xmlSchemaTypesInitialized = 1;
+    xmlMutexUnlock(&xmlSchemasTypesMutex);
     return (0);
 
 error:
     xmlSchemaCleanupTypesInternal();
+    xmlMutexUnlock(&xmlSchemasTypesMutex);
     return (-1);
 }
 
 /**
- * xmlSchemaCleanupTypes:
+ * Cleanup the default XML Schemas type library
  *
- * DEPRECATED: This function will be made private. Call xmlCleanupParser
- * to free global state but see the warnings there. xmlCleanupParser
+ * @deprecated This function will be made private. Call #xmlCleanupParser
+ * to free global state but see the warnings there. #xmlCleanupParser
  * should be only called once at program exit. In most cases, you don't
  * have to call cleanup functions at all.
  *
- * Cleanup the default XML Schemas type library
  */
 void
 xmlSchemaCleanupTypes(void) {
+    xmlMutexLock(&xmlSchemasTypesMutex);
     if (xmlSchemaTypesInitialized != 0) {
         xmlSchemaCleanupTypesInternal();
         xmlSchemaTypesInitialized = 0;
     }
+    xmlMutexUnlock(&xmlSchemasTypesMutex);
 }
 
 /**
- * xmlSchemaIsBuiltInTypeFacet:
- * @type: the built-in type
- * @facetType:  the facet type
- *
  * Evaluates if a specific facet can be
  * used in conjunction with a type.
  *
- * Returns 1 if the facet can be used with the given built-in type,
+ * @param type  the built-in type
+ * @param facetType  the facet type
+ * @returns 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.
  */
 int
-xmlSchemaIsBuiltInTypeFacet(xmlSchemaTypePtr type, int facetType)
+xmlSchemaIsBuiltInTypeFacet(xmlSchemaType *type, int facetType)
 {
     if (type == NULL)
 	return (-1);
@@ -969,19 +980,16 @@ xmlSchemaIsBuiltInTypeFacet(xmlSchemaTyp
 }
 
 /**
- * xmlSchemaGetBuiltInType:
- * @type:  the type of the built in type
- *
  * Gives you the type struct for a built-in
  * type by its type id.
  *
- * Returns the type if found, NULL otherwise.
+ * @param type  the type of the built in type
+ * @returns the type if found, NULL otherwise.
  */
-xmlSchemaTypePtr
+xmlSchemaType *
 xmlSchemaGetBuiltInType(xmlSchemaValType type)
 {
-    if ((xmlSchemaTypesInitialized == 0) &&
-	(xmlSchemaInitTypes() < 0))
+    if (xmlSchemaInitTypes() < 0)
         return (NULL);
     switch (type) {
 
@@ -1083,16 +1091,14 @@ xmlSchemaGetBuiltInType(xmlSchemaValType
 }
 
 /**
- * xmlSchemaValueAppend:
- * @prev: the value
- * @cur: the value to be appended
- *
  * Appends a next sibling to a list of computed values.
  *
- * Returns 0 if succeeded and -1 on API errors.
+ * @param prev  the value
+ * @param cur  the value to be appended
+ * @returns 0 if succeeded and -1 on API errors.
  */
 int
-xmlSchemaValueAppend(xmlSchemaValPtr prev, xmlSchemaValPtr cur) {
+xmlSchemaValueAppend(xmlSchemaVal *prev, xmlSchemaVal *cur) {
 
     if ((prev == NULL) || (cur == NULL))
 	return (-1);
@@ -1101,16 +1107,14 @@ xmlSchemaValueAppend(xmlSchemaValPtr pre
 }
 
 /**
- * xmlSchemaValueGetNext:
- * @cur: the value
- *
  * Accessor for the next sibling of a list of computed values.
  *
- * Returns the next value or NULL if there was none, or on
+ * @param cur  the value
+ * @returns the next value or NULL if there was none, or on
  *         API errors.
  */
-xmlSchemaValPtr
-xmlSchemaValueGetNext(xmlSchemaValPtr cur) {
+xmlSchemaVal *
+xmlSchemaValueGetNext(xmlSchemaVal *cur) {
 
     if (cur == NULL)
 	return (NULL);
@@ -1118,16 +1122,14 @@ xmlSchemaValueGetNext(xmlSchemaValPtr cu
 }
 
 /**
- * xmlSchemaValueGetAsString:
- * @val: the value
- *
  * Accessor for the string value of a computed value.
  *
- * Returns the string value or NULL if there was none, or on
+ * @param val  the value
+ * @returns the string value or NULL if there was none, or on
  *         API errors.
  */
 const xmlChar *
-xmlSchemaValueGetAsString(xmlSchemaValPtr val)
+xmlSchemaValueGetAsString(xmlSchemaVal *val)
 {
     if (val == NULL)
 	return (NULL);
@@ -1152,15 +1154,13 @@ xmlSchemaValueGetAsString(xmlSchemaValPt
 }
 
 /**
- * xmlSchemaValueGetAsBoolean:
- * @val: the value
- *
  * Accessor for the boolean value of a computed value.
  *
- * Returns 1 if true and 0 if false, or in case of an error. Hmm.
+ * @param val  the value
+ * @returns 1 if true and 0 if false, or in case of an error. Hmm.
  */
 int
-xmlSchemaValueGetAsBoolean(xmlSchemaValPtr val)
+xmlSchemaValueGetAsBoolean(xmlSchemaVal *val)
 {
     if ((val == NULL) || (val->type != XML_SCHEMAS_BOOLEAN))
 	return (0);
@@ -1168,19 +1168,17 @@ xmlSchemaValueGetAsBoolean(xmlSchemaValP
 }
 
 /**
- * xmlSchemaNewStringValue:
- * @type:  the value type
- * @value:  the value
- *
  * 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.
  * The given value is consumed and freed with the struct.
  *
- * Returns a pointer to the new value or NULL in case of error
+ * @param type  the value type
+ * @param value  the value
+ * @returns a pointer to the new value or NULL in case of error
  */
-xmlSchemaValPtr
+xmlSchemaVal *
 xmlSchemaNewStringValue(xmlSchemaValType type,
 			const xmlChar *value)
 {
@@ -1199,16 +1197,14 @@ xmlSchemaNewStringValue(xmlSchemaValType
 }
 
 /**
- * xmlSchemaNewNOTATIONValue:
- * @name:  the notation name
- * @ns: the notation namespace name or NULL
- *
  * Allocate a new NOTATION value.
  * The given values are consumed and freed with the struct.
  *
- * Returns a pointer to the new value or NULL in case of error
+ * @param name  the notation name
+ * @param ns  the notation namespace name or NULL
+ * @returns a pointer to the new value or NULL in case of error
  */
-xmlSchemaValPtr
+xmlSchemaVal *
 xmlSchemaNewNOTATIONValue(const xmlChar *name,
 			  const xmlChar *ns)
 {
@@ -1225,16 +1221,14 @@ xmlSchemaNewNOTATIONValue(const xmlChar
 }
 
 /**
- * xmlSchemaNewQNameValue:
- * @namespaceName: the namespace name
- * @localName: the local name
- *
  * Allocate a new QName value.
  * The given values are consumed and freed with the struct.
  *
- * Returns a pointer to the new value or NULL in case of an error.
+ * @param namespaceName  the namespace name
+ * @param localName  the local name
+ * @returns a pointer to the new value or NULL in case of an error.
  */
-xmlSchemaValPtr
+xmlSchemaVal *
 xmlSchemaNewQNameValue(const xmlChar *namespaceName,
 		       const xmlChar *localName)
 {
@@ -1250,13 +1244,12 @@ xmlSchemaNewQNameValue(const xmlChar *na
 }
 
 /**
- * xmlSchemaFreeValue:
- * @value:  the value to free
- *
  * Cleanup the default XML Schemas type library
+ *
+ * @param value  the value to free
  */
 void
-xmlSchemaFreeValue(xmlSchemaValPtr value) {
+xmlSchemaFreeValue(xmlSchemaVal *value) {
     xmlSchemaValPtr prev;
 
     while (value != NULL) {
@@ -1321,18 +1314,15 @@ xmlSchemaFreeValue(xmlSchemaValPtr value
 }
 
 /**
- * xmlSchemaGetPredefinedType:
- * @name: the type name
- * @ns:  the URI of the namespace usually "http://www.w3.org/2001/XMLSchema"
- *
  * Lookup a type in the default XML Schemas type library
  *
- * Returns the type if found, NULL otherwise
+ * @param name  the type name
+ * @param ns  the URI of the namespace usually "http://www.w3.org/2001/XMLSchema"
+ * @returns the type if found, NULL otherwise
  */
-xmlSchemaTypePtr
+xmlSchemaType *
 xmlSchemaGetPredefinedType(const xmlChar *name, const xmlChar *ns) {
-    if ((xmlSchemaTypesInitialized == 0) &&
-	(xmlSchemaInitTypes() < 0))
+    if (xmlSchemaInitTypes() < 0)
         return (NULL);
     if (name == NULL)
 	return(NULL);
@@ -1340,16 +1330,14 @@ xmlSchemaGetPredefinedType(const xmlChar
 }
 
 /**
- * xmlSchemaGetBuiltInListSimpleTypeItemType:
- * @type: the built-in simple type.
- *
  * Lookup function
  *
- * Returns the item type of @type as defined by the built-in datatype
+ * @param type  the built-in simple type.
+ * @returns 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.
  */
-xmlSchemaTypePtr
-xmlSchemaGetBuiltInListSimpleTypeItemType(xmlSchemaTypePtr type)
+xmlSchemaType *
+xmlSchemaGetBuiltInListSimpleTypeItemType(xmlSchemaType *type)
 {
     if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_BASIC))
 	return (NULL);
@@ -1430,16 +1418,14 @@ static const long dayInLeapYearByMonth[1
                 dayInYearByMonth[month - 1]) + day)
 
 /**
- * _xmlSchemaParseGYear:
- * @dt:  pointer to a date structure
- * @str: pointer to the string to analyze
- *
  * Parses a xs:gYear without time zone and fills in the appropriate
- * field of the @dt structure. @str is updated to point just after the
- * xs:gYear. It is supposed that @dt->year is big enough to contain
+ * field of the `dt` structure. `str` is updated to point just after the
+ * xs:gYear. It is supposed that `dt`->year is big enough to contain
  * the year.
  *
- * Returns 0 or the error code
+ * @param dt  pointer to a date structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 _xmlSchemaParseGYear (xmlSchemaValDatePtr dt, const xmlChar **str) {
@@ -1486,15 +1472,14 @@ _xmlSchemaParseGYear (xmlSchemaValDatePt
 }
 
 /**
- * PARSE_2_DIGITS:
- * @num:  the integer to fill in
- * @cur:  an #xmlChar *
- * @invalid: an integer
- *
- * Parses a 2-digits integer and updates @num with the value. @cur is
+ * Parses a 2-digits integer and updates `num` with the value. `cur` is
  * updated to point just after the integer.
- * In case of error, @invalid is set to %TRUE, values of @num and
- * @cur are undefined.
+ * In case of error, `invalid` is set to %TRUE, values of `num` and
+ * `cur` are undefined.
+ *
+ * @param num  the integer to fill in
+ * @param cur  an \#xmlChar *
+ * @param invalid  an integer
  */
 #define PARSE_2_DIGITS(num, cur, invalid)			\
 	if ((cur[0] < '0') || (cur[0] > '9') ||			\
@@ -1505,16 +1490,15 @@ _xmlSchemaParseGYear (xmlSchemaValDatePt
 	cur += 2;
 
 /**
- * PARSE_FLOAT:
- * @num:  the double to fill in
- * @cur:  an #xmlChar *
- * @invalid: an integer
- *
- * Parses a float and updates @num with the value. @cur is
+ * Parses a float and updates `num` with the value. `cur` is
  * updated to point just after the float. The float must have a
  * 2-digits integer part and may or may not have a decimal part.
- * In case of error, @invalid is set to %TRUE, values of @num and
- * @cur are undefined.
+ * In case of error, `invalid` is set to %TRUE, values of `num` and
+ * `cur` are undefined.
+ *
+ * @param num  the double to fill in
+ * @param cur  an \#xmlChar *
+ * @param invalid  an integer
  */
 #define PARSE_FLOAT(num, cur, invalid)				\
 	PARSE_2_DIGITS(num, cur, invalid);			\
@@ -1531,15 +1515,13 @@ _xmlSchemaParseGYear (xmlSchemaValDatePt
 	}
 
 /**
- * _xmlSchemaParseGMonth:
- * @dt:  pointer to a date structure
- * @str: pointer to the string to analyze
- *
  * Parses a xs:gMonth without time zone and fills in the appropriate
- * field of the @dt structure. @str is updated to point just after the
+ * field of the `dt` structure. `str` is updated to point just after the
  * xs:gMonth.
  *
- * Returns 0 or the error code
+ * @param dt  pointer to a date structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 _xmlSchemaParseGMonth (xmlSchemaValDatePtr dt, const xmlChar **str) {
@@ -1561,15 +1543,13 @@ _xmlSchemaParseGMonth (xmlSchemaValDateP
 }
 
 /**
- * _xmlSchemaParseGDay:
- * @dt:  pointer to a date structure
- * @str: pointer to the string to analyze
- *
  * Parses a xs:gDay without time zone and fills in the appropriate
- * field of the @dt structure. @str is updated to point just after the
+ * field of the `dt` structure. `str` is updated to point just after the
  * xs:gDay.
  *
- * Returns 0 or the error code
+ * @param dt  pointer to a date structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 _xmlSchemaParseGDay (xmlSchemaValDatePtr dt, const xmlChar **str) {
@@ -1590,16 +1570,14 @@ _xmlSchemaParseGDay (xmlSchemaValDatePtr
 }
 
 /**
- * _xmlSchemaParseTime:
- * @dt:  pointer to a date structure
- * @str: pointer to the string to analyze
- *
  * Parses a xs:time without time zone and fills in the appropriate
- * fields of the @dt structure. @str is updated to point just after the
+ * fields of the `dt` structure. `str` is updated to point just after the
  * xs:time.
- * In case of error, values of @dt fields are undefined.
+ * In case of error, values of `dt` fields are undefined.
  *
- * Returns 0 or the error code
+ * @param dt  pointer to a date structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 _xmlSchemaParseTime (xmlSchemaValDatePtr dt, const xmlChar **str) {
@@ -1642,15 +1620,13 @@ _xmlSchemaParseTime (xmlSchemaValDatePtr
 }
 
 /**
- * _xmlSchemaParseTimeZone:
- * @dt:  pointer to a date structure
- * @str: pointer to the string to analyze
- *
  * Parses a time zone without time zone and fills in the appropriate
- * field of the @dt structure. @str is updated to point just after the
+ * field of the `dt` structure. `str` is updated to point just after the
  * time zone.
  *
- * Returns 0 or the error code
+ * @param dt  pointer to a date structure
+ * @param str  pointer to the string to analyze
+ * @returns 0 or the error code
  */
 static int
 _xmlSchemaParseTimeZone (xmlSchemaValDatePtr dt, const xmlChar **str) {
@@ -1717,12 +1693,10 @@ _xmlSchemaParseTimeZone (xmlSchemaValDat
 }
 
 /**
- * _xmlSchemaBase64Decode:
- * @ch: a character
- *
  * Converts a base64 encoded character to its base 64 value.
  *
- * Returns 0-63 (value), 64 (pad), or -1 (not recognized)
+ * @param ch  a character
+ * @returns 0-63 (value), 64 (pad), or -1 (not recognized)
  */
 static int
 _xmlSchemaBase64Decode (const xmlChar ch) {
@@ -1742,15 +1716,14 @@ _xmlSchemaBase64Decode (const xmlChar ch
  ****************************************************************/
 
 /**
- * PARSE_DIGITS:
- * @num:  the integer to fill in
- * @cur:  an #xmlChar *
- * @num_type: an integer flag
- *
- * Parses a digits integer and updates @num with the value. @cur is
+ * Parses a digits integer and updates `num` with the value. `cur` is
  * updated to point just after the integer.
- * In case of error, @num_type is set to -1, values of @num and
- * @cur are undefined.
+ * In case of error, `num_type` is set to -1, values of `num` and
+ * `cur` are undefined.
+ *
+ * @param num  the integer to fill in
+ * @param cur  an \#xmlChar *
+ * @param num_type  an integer flag
  */
 #define PARSE_DIGITS(num, cur, num_type)	                \
 	if ((*cur < '0') || (*cur > '9'))			\
@@ -1762,17 +1735,16 @@ _xmlSchemaBase64Decode (const xmlChar ch
             }
 
 /**
- * PARSE_NUM:
- * @num:  the double to fill in
- * @cur:  an #xmlChar *
- * @num_type: an integer flag
- *
- * Parses a float or integer and updates @num with the value. @cur is
+ * Parses a float or integer and updates `num` with the value. `cur` is
  * updated to point just after the number. If the number is a float,
- * then it must have an integer part and a decimal part; @num_type will
- * be set to 1. If there is no decimal part, @num_type is set to zero.
- * In case of error, @num_type is set to -1, values of @num and
- * @cur are undefined.
+ * then it must have an integer part and a decimal part; `num_type` will
+ * be set to 1. If there is no decimal part, `num_type` is set to zero.
+ * In case of error, `num_type` is set to -1, values of `num` and
+ * `cur` are undefined.
+ *
+ * @param num  the double to fill in
+ * @param cur  an \#xmlChar *
+ * @param num_type  an integer flag
  */
 #define PARSE_NUM(num, cur, num_type)				\
         num = 0;                                                \
@@ -1792,15 +1764,14 @@ _xmlSchemaBase64Decode (const xmlChar ch
 	}
 
 /**
- * xmlSchemaValidateDates:
- * @type: the expected type or XML_SCHEMAS_UNKNOWN
- * @dateTime:  string to analyze
- * @val:  the return computed value
- *
- * Check that @dateTime conforms to the lexical space of one of the date types.
- * if true a value is computed and returned in @val.
+ * Check that `dateTime` conforms to the lexical space of one of the date types.
+ * if true a value is computed and returned in `val`.
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the expected type or XML_SCHEMAS_UNKNOWN
+ * @param dateTime  string to analyze
+ * @param val  the return computed value
+ * @param collapse  whether to collapse
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 static int
@@ -2015,15 +1986,14 @@ error:
 }
 
 /**
- * xmlSchemaValidateDuration:
- * @type: the predefined type
- * @duration:  string to analyze
- * @val:  the return computed value
- *
- * Check that @duration conforms to the lexical space of the duration type.
- * if true a value is computed and returned in @val.
+ * Check that `duration` conforms to the lexical space of the duration type.
+ * if true a value is computed and returned in `val`.
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the predefined type
+ * @param duration  string to analyze
+ * @param val  the return computed value
+ * @param collapse  whether to collapse
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 static int
@@ -2189,12 +2159,10 @@ error:
 }
 
 /**
- * xmlSchemaStrip:
- * @value: a value
- *
  * Removes the leading and ending spaces of a string
  *
- * Returns the new string or NULL if no change was required.
+ * @param value  a value
+ * @returns the new string or NULL if no change was required.
  */
 static xmlChar *
 xmlSchemaStrip(const xmlChar *value) {
@@ -2213,12 +2181,10 @@ xmlSchemaStrip(const xmlChar *value) {
 }
 
 /**
- * xmlSchemaWhiteSpaceReplace:
- * @value: a value
- *
  * Replaces 0xd, 0x9 and 0xa with a space.
  *
- * Returns the new string or NULL if no change was required.
+ * @param value  a value
+ * @returns the new string or NULL if no change was required.
  */
 xmlChar *
 xmlSchemaWhiteSpaceReplace(const xmlChar *value) {
@@ -2248,12 +2214,10 @@ xmlSchemaWhiteSpaceReplace(const xmlChar
 }
 
 /**
- * xmlSchemaCollapseString:
- * @value: a value
- *
  * Removes and normalize white spaces in the string
  *
- * Returns the new string or NULL if no change was required.
+ * @param value  a value
+ * @returns the new string or NULL if no change was required.
  */
 xmlChar *
 xmlSchemaCollapseString(const xmlChar *value) {
@@ -2300,16 +2264,14 @@ xmlSchemaCollapseString(const xmlChar *v
 }
 
 /**
- * xmlSchemaValAtomicListNode:
- * @type: the predefined atomic type for a token in the list
- * @value: the list value to check
- * @ret:  the return computed value
- * @node:  the node containing the value
- *
  * Check that a value conforms to the lexical space of the predefined
- * list type. if true a value is computed and returned in @ret.
+ * list type. if true a value is computed and returned in `ret`.
  *
- * Returns the number of items if this validates, a negative error code
+ * @param type  the predefined atomic type for a token in the list
+ * @param value  the list value to check
+ * @param ret  the return computed value
+ * @param node  the node containing the value
+ * @returns the number of items if this validates, a negative error code
  *         number otherwise
  */
 static int
@@ -2370,13 +2332,11 @@ xmlSchemaValAtomicListNode(xmlSchemaType
 }
 
 /**
- * xmlSchemaParseUInt:
- * @str: pointer to the string R/W
- * @val: pointer to the resulting decimal
- *
  * Parse an unsigned long into a decimal.
  *
- * Returns the number of significant digits in the number or
+ * @param str  pointer to the string R/W
+ * @param val  pointer to the resulting decimal
+ * @returns the number of significant digits in the number or
  * -1 if overflow of the capacity and -2 if it's not a number.
  */
 static int xmlSchemaParseUInt(const xmlChar **str, xmlSchemaValDecimalPtr val) {
@@ -2418,13 +2378,11 @@ static int xmlSchemaParseUInt(const xmlC
 }
 
 /*
- * xmlSchemaCheckLanguageType
- * @value: the value to check
- *
  * Check that a value conforms to the lexical space of the language datatype.
  * Must conform to [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*
  *
- * Returns 1 if this validates, 0 otherwise.
+ * @param value  the value to check
+ * @returns 1 if this validates, 0 otherwise.
  */
 static int
 xmlSchemaCheckLanguageType(const xmlChar* value) {
@@ -2456,18 +2414,20 @@ xmlSchemaCheckLanguageType(const xmlChar
 }
 
 /**
- * xmlSchemaValAtomicType:
- * @type: the predefined type
- * @value: the value to check
- * @val:  the return computed value
- * @node:  the node containing the value
- * flags:  flags to control the validation
- *
  * Check that a value conforms to the lexical space of the atomic type.
- * if true a value is computed and returned in @val.
+ * if true a value is computed and returned in `val`.
  * This checks the value space for list types as well (IDREFS, NMTOKENS).
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the predefined type
+ * @param value  the value to check
+ * @param val  the return computed value
+ * @param node  the node containing the value
+ * @param flags  flags to control the validation
+ * @param ws  whitespace value type
+ * @param normOnTheFly  whether to normalize on the fly
+ * @param applyNorm  whether to apply normalization
+ * @param createStringValue  whether to create a string value
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 static int
@@ -2480,8 +2440,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr
     xmlChar *norm = NULL;
     int ret = 0;
 
-    if ((xmlSchemaTypesInitialized == 0) &&
-	(xmlSchemaInitTypes() < 0))
+    if (xmlSchemaInitTypes() < 0)
         return (-1);
     if (type == NULL)
         return (-1);
@@ -3639,72 +3598,64 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr
 }
 
 /**
- * xmlSchemaValPredefTypeNode:
- * @type: the predefined type
- * @value: the value to check
- * @val:  the return computed value
- * @node:  the node containing the value
- *
  * Check that a value conforms to the lexical space of the predefined type.
- * if true a value is computed and returned in @val.
+ * if true a value is computed and returned in `val`.
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the predefined type
+ * @param value  the value to check
+ * @param val  the return computed value
+ * @param node  the node containing the value
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
-xmlSchemaValPredefTypeNode(xmlSchemaTypePtr type, const xmlChar *value,
-	                   xmlSchemaValPtr *val, xmlNodePtr node) {
+xmlSchemaValPredefTypeNode(xmlSchemaType *type, const xmlChar *value,
+	                   xmlSchemaVal **val, xmlNode *node) {
     return(xmlSchemaValAtomicType(type, value, val, node, 0,
 	XML_SCHEMA_WHITESPACE_UNKNOWN, 1, 1, 0));
 }
 
 /**
- * xmlSchemaValPredefTypeNodeNoNorm:
- * @type: the predefined type
- * @value: the value to check
- * @val:  the return computed value
- * @node:  the node containing the value
- *
  * Check that a value conforms to the lexical space of the predefined type.
- * if true a value is computed and returned in @val.
+ * if true a value is computed and returned in `val`.
  * This one does apply any normalization to the value.
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the predefined type
+ * @param value  the value to check
+ * @param val  the return computed value
+ * @param node  the node containing the value
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
-xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, const xmlChar *value,
-				 xmlSchemaValPtr *val, xmlNodePtr node) {
+xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaType *type, const xmlChar *value,
+				 xmlSchemaVal **val, xmlNode *node) {
     return(xmlSchemaValAtomicType(type, value, val, node, 1,
 	XML_SCHEMA_WHITESPACE_UNKNOWN, 1, 0, 1));
 }
 
 /**
- * xmlSchemaValidatePredefinedType:
- * @type: the predefined type
- * @value: the value to check
- * @val:  the return computed value
- *
  * Check that a value conforms to the lexical space of the predefined type.
- * if true a value is computed and returned in @val.
+ * if true a value is computed and returned in `val`.
  *
- * Returns 0 if this validates, a positive error code number otherwise
+ * @param type  the predefined type
+ * @param value  the value to check
+ * @param val  the return computed value
+ * @returns 0 if this validates, a positive error code number otherwise
  *         and -1 in case of internal or API error.
  */
 int
-xmlSchemaValidatePredefinedType(xmlSchemaTypePtr type, const xmlChar *value,
-	                        xmlSchemaValPtr *val) {
+xmlSchemaValidatePredefinedType(xmlSchemaType *type, const xmlChar *value,
+	                        xmlSchemaVal **val) {
     return(xmlSchemaValPredefTypeNode(type, value, val, NULL));
 }
 
 /**
- * xmlSchemaCompareDecimals:
- * @x:  a first decimal value
- * @y:  a second decimal value
- *
  * Compare 2 decimals
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y and -2 in case of error
+ * @param x  a first decimal value
+ * @param y  a second decimal value
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y and -2 in case of error
  */
 static int
 xmlSchemaCompareDecimals(xmlSchemaValPtr x, xmlSchemaValPtr y)
@@ -3722,13 +3673,11 @@ xmlSchemaCompareDecimals(xmlSchemaValPtr
 }
 
 /**
- * xmlSchemaCompareDurations:
- * @x:  a first duration value
- * @y:  a second duration value
- *
  * Compare 2 durations
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
+ * @param x  a first duration value
+ * @param y  a second duration value
+ * @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
@@ -3824,13 +3773,11 @@ xmlSchemaCompareDurations(xmlSchemaValPt
 #define MODULO_RANGE(a,low,high)        ((MODULO((a-low),(high-low)))+low)
 
 /**
- * xmlSchemaDupVal:
- * @v: the #xmlSchemaValPtr value to duplicate
- *
- * Makes a copy of @v. The calling program is responsible for freeing
+ * Makes a copy of `v`. The calling program is responsible for freeing
  * the returned value.
  *
- * returns a pointer to a duplicated #xmlSchemaValPtr or NULL if error.
+ * @param v  the \#xmlSchemaVal value to duplicate
+ * @returns a pointer to a duplicated \#xmlSchemaVal or NULL if error.
  */
 static xmlSchemaValPtr
 xmlSchemaDupVal (xmlSchemaValPtr v)
@@ -3845,15 +3792,13 @@ xmlSchemaDupVal (xmlSchemaValPtr v)
 }
 
 /**
- * xmlSchemaCopyValue:
- * @val:  the precomputed value to be copied
- *
  * Copies the precomputed value. This duplicates any string within.
  *
- * Returns the copy or NULL if a copy for a data-type is not implemented.
+ * @param val  the precomputed value to be copied
+ * @returns the copy or NULL if a copy for a data-type is not implemented.
  */
-xmlSchemaValPtr
-xmlSchemaCopyValue(xmlSchemaValPtr val)
+xmlSchemaVal *
+xmlSchemaCopyValue(xmlSchemaVal *val)
 {
     xmlSchemaValPtr ret = NULL, prev = NULL, cur;
 
@@ -3866,8 +3811,7 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
 	    case XML_SCHEMAS_IDREFS:
 	    case XML_SCHEMAS_ENTITIES:
 	    case XML_SCHEMAS_NMTOKENS:
-		xmlSchemaFreeValue(ret);
-		return (NULL);
+                goto error;
 	    case XML_SCHEMAS_ANYSIMPLETYPE:
 	    case XML_SCHEMAS_STRING:
 	    case XML_SCHEMAS_NORMSTRING:
@@ -3881,12 +3825,16 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
 	    case XML_SCHEMAS_NMTOKEN:
 	    case XML_SCHEMAS_ANYURI:
 		cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
 		if (val->value.str != NULL)
 		    cur->value.str = xmlStrdup(BAD_CAST val->value.str);
 		break;
 	    case XML_SCHEMAS_QNAME:
 	    case XML_SCHEMAS_NOTATION:
 		cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
 		if (val->value.qname.name != NULL)
 		    cur->value.qname.name =
                     xmlStrdup(BAD_CAST val->value.qname.name);
@@ -3896,11 +3844,15 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
 		break;
 	    case XML_SCHEMAS_HEXBINARY:
 		cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
 		if (val->value.hex.str != NULL)
 		    cur->value.hex.str = xmlStrdup(BAD_CAST val->value.hex.str);
 		break;
 	    case XML_SCHEMAS_BASE64BINARY:
 		cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
 		if (val->value.base64.str != NULL)
 		    cur->value.base64.str =
                     xmlStrdup(BAD_CAST val->value.base64.str);
@@ -3920,11 +3872,15 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
             case XML_SCHEMAS_USHORT:
             case XML_SCHEMAS_UBYTE:
                 cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
                 if (val->value.decimal.str != NULL)
                     cur->value.decimal.str = xmlStrdup(BAD_CAST val->value.decimal.str);
 		break;
 	    default:
 		cur = xmlSchemaDupVal(val);
+                if (cur == NULL)
+                    goto error;
 		break;
 	}
 	if (ret == NULL)
@@ -3935,19 +3891,21 @@ xmlSchemaCopyValue(xmlSchemaValPtr val)
 	val = val->next;
     }
     return (ret);
+
+error:
+    xmlSchemaFreeValue(ret);
+    return (NULL);
 }
 
 /**
- * _xmlSchemaDateAdd:
- * @dt: an #xmlSchemaValPtr
- * @dur: an #xmlSchemaValPtr of type #XS_DURATION
- *
- * Compute a new date/time from @dt and @dur. This function assumes @dt
- * is either #XML_SCHEMAS_DATETIME, #XML_SCHEMAS_DATE, #XML_SCHEMAS_GYEARMONTH,
- * or #XML_SCHEMAS_GYEAR. The returned #xmlSchemaVal is the same type as
- * @dt. The calling program is responsible for freeing the returned value.
- *
- * Returns a pointer to a new #xmlSchemaVal or NULL if error.
+ * Compute a new date/time from `dt` and `dur`. This function assumes `dt`
+ * is either \#XML_SCHEMAS_DATETIME, \#XML_SCHEMAS_DATE, \#XML_SCHEMAS_GYEARMONTH,
+ * or \#XML_SCHEMAS_GYEAR. The returned \#xmlSchemaVal is the same type as
+ * `dt`. The calling program is responsible for freeing the returned value.
+ *
+ * @param dt  an xmlSchemaVal
+ * @param dur  an xmlSchemaVal of type \#XS_DURATION
+ * @returns a pointer to a new xmlSchemaVal or NULL if error.
  */
 static xmlSchemaValPtr
 _xmlSchemaDateAdd (xmlSchemaValPtr dt, xmlSchemaValPtr dur)
@@ -4093,14 +4051,12 @@ _xmlSchemaDateAdd (xmlSchemaValPtr dt, x
 }
 
 /**
- * xmlSchemaDateNormalize:
- * @dt: an #xmlSchemaValPtr of a date/time type value.
- * @offset: number of seconds to adjust @dt by.
- *
- * Normalize @dt to GMT time. The @offset parameter is subtracted from
- * the return value is a time-zone offset is present on @dt.
+ * Normalize `dt` to GMT time. The `offset` parameter is subtracted from
+ * the return value is a time-zone offset is present on `dt`.
  *
- * Returns a normalized copy of @dt or NULL if error.
+ * @param dt  an \#xmlSchemaVal of a date/time type value.
+ * @param offset  number of seconds to adjust `dt` by.
+ * @returns a normalized copy of `dt` or NULL if error.
  */
 static xmlSchemaValPtr
 xmlSchemaDateNormalize (xmlSchemaValPtr dt, double offset)
@@ -4133,15 +4089,13 @@ xmlSchemaDateNormalize (xmlSchemaValPtr
 }
 
 /**
- * _xmlSchemaDateCastYMToDays:
- * @dt: an #xmlSchemaValPtr
- *
- * Convert mon and year of @dt to total number of days. Take the
+ * Convert mon and year of `dt` to total number of days. Take the
  * number of years since (or before) 1 AD and add the number of leap
  * years. This is a function  because negative
  * years must be handled a little differently and there is no zero year.
  *
- * Returns number of days.
+ * @param dt  an xmlSchemaVal
+ * @returns number of days.
  */
 static long
 _xmlSchemaDateCastYMToDays (const xmlSchemaValPtr dt)
@@ -4167,12 +4121,10 @@ _xmlSchemaDateCastYMToDays (const xmlSch
 }
 
 /**
- * TIME_TO_NUMBER:
- * @dt:  an #xmlSchemaValPtr
+ * Calculates the number of seconds in the time portion of `dt`.
  *
- * Calculates the number of seconds in the time portion of @dt.
- *
- * Returns seconds.
+ * @param dt  an xmlSchemaVal
+ * @returns seconds.
  */
 #define TIME_TO_NUMBER(dt)                              \
     ((double)((dt->value.date.hour * SECS_PER_HOUR) +   \
@@ -4181,13 +4133,11 @@ _xmlSchemaDateCastYMToDays (const xmlSch
                dt->value.date.sec)
 
 /**
- * xmlSchemaCompareDates:
- * @x:  a first date/time value
- * @y:  a second date/time value
- *
  * Compare 2 date/times
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
+ * @param x  a first date/time value
+ * @param y  a second date/time value
+ * @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
@@ -4474,17 +4424,15 @@ xmlSchemaCompareDates (xmlSchemaValPtr x
 }
 
 /**
- * xmlSchemaComparePreserveReplaceStrings:
- * @x:  a first string value
- * @y:  a second string value
- * @invert: inverts the result if x < y or x > y.
- *
  * Compare 2 string for their normalized values.
- * @x is a string with whitespace of "preserve", @y is
- * a string with a whitespace of "replace". I.e. @x could
- * be an "xsd:string" and @y an "xsd:normalizedString".
- *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
+ * `x` is a string with whitespace of "preserve", `y` is
+ * a string with a whitespace of "replace". I.e. `x` could
+ * be an "xsd:string" and `y` an "xsd:normalizedString".
+ *
+ * @param x  a first string value
+ * @param y  a second string value
+ * @param invert  inverts the result if x < y or x > y.
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
  * case of error
  */
 static int
@@ -4543,16 +4491,15 @@ xmlSchemaComparePreserveReplaceStrings(c
 }
 
 /**
- * xmlSchemaComparePreserveCollapseStrings:
- * @x:  a first string value
- * @y:  a second string value
- *
  * Compare 2 string for their normalized values.
- * @x is a string with whitespace of "preserve", @y is
- * a string with a whitespace of "collapse". I.e. @x could
- * be an "xsd:string" and @y an "xsd:normalizedString".
- *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
+ * `x` is a string with whitespace of "preserve", `y` is
+ * a string with a whitespace of "collapse". I.e. `x` could
+ * be an "xsd:string" and `y` an "xsd:normalizedString".
+ *
+ * @param x  a first string value
+ * @param y  a second string value
+ * @param invert  whether to invert
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
  * case of error
  */
 static int
@@ -4632,16 +4579,15 @@ xmlSchemaComparePreserveCollapseStrings(
 }
 
 /**
- * xmlSchemaComparePreserveCollapseStrings:
- * @x:  a first string value
- * @y:  a second string value
- *
  * Compare 2 string for their normalized values.
- * @x is a string with whitespace of "preserve", @y is
- * a string with a whitespace of "collapse". I.e. @x could
- * be an "xsd:string" and @y an "xsd:normalizedString".
- *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
+ * `x` is a string with whitespace of "preserve", `y` is
+ * a string with a whitespace of "collapse". I.e. `x` could
+ * be an "xsd:string" and `y` an "xsd:normalizedString".
+ *
+ * @param x  a first string value
+ * @param y  a second string value
+ * @param invert  whether to invert
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
  * case of error
  */
 static int
@@ -4730,13 +4676,11 @@ xmlSchemaCompareReplaceCollapseStrings(c
 
 
 /**
- * xmlSchemaCompareReplacedStrings:
- * @x:  a first string value
- * @y:  a second string value
- *
  * Compare 2 string for their normalized values.
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
+ * @param x  a first string value
+ * @param y  a second string value
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
  * case of error
  */
 static int
@@ -4777,13 +4721,11 @@ xmlSchemaCompareReplacedStrings(const xm
 }
 
 /**
- * xmlSchemaCompareNormStrings:
- * @x:  a first string value
- * @y:  a second string value
- *
  * Compare 2 string for their normalized values.
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
+ * @param x  a first string value
+ * @param y  a second string value
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, and -2 in
  * case of error
  */
 static int
@@ -4823,13 +4765,11 @@ xmlSchemaCompareNormStrings(const xmlCha
 }
 
 /**
- * xmlSchemaCompareFloats:
- * @x:  a first float or double value
- * @y:  a second float or double value
- *
  * Compare 2 values
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
+ * @param x  a first float or double value
+ * @param y  a second float or double value
+ * @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
@@ -4882,17 +4822,17 @@ xmlSchemaCompareFloats(xmlSchemaValPtr x
 }
 
 /**
- * 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
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, 3 if not
+ * @param xtype  first type
+ * @param x  a first value
+ * @param xvalue  the first value as a string (optional)
+ * @param xws  the whitespace type
+ * @param ytype  second type
+ * @param y  a second value
+ * @param yvalue  the second value as a string (optional)
+ * @param yws  the whitespace type
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, 3 if not
  * comparable and -2 in case of error
  */
 static int
@@ -5132,17 +5072,15 @@ xmlSchemaCompareValuesInternal(xmlSchema
 }
 
 /**
- * xmlSchemaCompareValues:
- * @x:  a first value
- * @y:  a second value
- *
  * Compare 2 values
  *
- * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
+ * @param x  a first value
+ * @param y  a second value
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
  * case of error
  */
 int
-xmlSchemaCompareValues(xmlSchemaValPtr x, xmlSchemaValPtr y) {
+xmlSchemaCompareValues(xmlSchemaVal *x, xmlSchemaVal *y) {
     xmlSchemaWhitespaceValueType xws, yws;
 
     if ((x == NULL) || (y == NULL))
@@ -5166,21 +5104,19 @@ xmlSchemaCompareValues(xmlSchemaValPtr x
 }
 
 /**
- * xmlSchemaCompareValuesWhtsp:
- * @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
+ * @param x  a first value
+ * @param xws  the whitespace value of x
+ * @param y  a second value
+ * @param yws  the whitespace value of y
+ * @returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
  * case of error
  */
 int
-xmlSchemaCompareValuesWhtsp(xmlSchemaValPtr x,
+xmlSchemaCompareValuesWhtsp(xmlSchemaVal *x,
 			    xmlSchemaWhitespaceValueType xws,
-			    xmlSchemaValPtr y,
+			    xmlSchemaVal *y,
 			    xmlSchemaWhitespaceValueType yws)
 {
     if ((x == NULL) || (y == NULL))
@@ -5190,15 +5126,17 @@ xmlSchemaCompareValuesWhtsp(xmlSchemaVal
 }
 
 /**
- * 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
+ * @param xtype  first type
+ * @param x  a first value
+ * @param xvalue  the first value as a string (optional)
+ * @param xws  the whitespace type
+ * @param ytype  second type
+ * @param y  a second value
+ * @param yvalue  the second value as a string (optional)
+ * @param yws  the whitespace type
+ * @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
@@ -5216,12 +5154,10 @@ xmlSchemaCompareValuesWhtspExt(xmlSchema
 }
 
 /**
- * xmlSchemaNormLen:
- * @value:  a string
- *
  * Computes the UTF8 length of the normalized value of the string
  *
- * Returns the length or -1 in case of error.
+ * @param value  a string
+ * @returns the length or -1 in case of error.
  */
 static int
 xmlSchemaNormLen(const xmlChar *value) {
@@ -5262,15 +5198,13 @@ xmlSchemaNormLen(const xmlChar *value) {
 }
 
 /**
- * xmlSchemaGetFacetValueAsULong:
- * @facet: an schemas type facet
- *
  * Extract the value of a facet
  *
- * Returns the value as a long
+ * @param facet  an schemas type facet
+ * @returns the value as a long
  */
 unsigned long
-xmlSchemaGetFacetValueAsULong(xmlSchemaFacetPtr facet)
+xmlSchemaGetFacetValueAsULong(xmlSchemaFacet *facet)
 {
     /*
     * TODO: Check if this is a decimal.
@@ -5282,19 +5216,17 @@ xmlSchemaGetFacetValueAsULong(xmlSchemaF
 }
 
 /**
- * xmlSchemaValidateListSimpleTypeFacet:
- * @facet:  the facet to check
- * @value:  the lexical repr of the value to validate
- * @actualLen:  the number of list items
- * @expectedLen: the resulting expected number of list items
- *
  * Checks the value of a list simple type against a facet.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param facet  the facet to check
+ * @param value  the lexical repr of the value to validate
+ * @param actualLen  the number of list items
+ * @param expectedLen  the resulting expected number of list items
+ * @returns 0 if the value is valid, a positive error code
  * number otherwise and -1 in case of an internal error.
  */
 int
-xmlSchemaValidateListSimpleTypeFacet(xmlSchemaFacetPtr facet,
+xmlSchemaValidateListSimpleTypeFacet(xmlSchemaFacet *facet,
 				     const xmlChar *value,
 				     unsigned long actualLen,
 				     unsigned long *expectedLen)
@@ -5325,7 +5257,7 @@ xmlSchemaValidateListSimpleTypeFacet(xml
 	}
     } else
 	/*
-	* NOTE: That we can pass NULL as xmlSchemaValPtr to
+	* NOTE: That we can pass NULL as xmlSchemaVal to
 	* xmlSchemaValidateFacet, since the remaining facet types
 	* are: XML_SCHEMA_FACET_PATTERN, XML_SCHEMA_FACET_ENUMERATION.
 	*/
@@ -5334,18 +5266,16 @@ xmlSchemaValidateListSimpleTypeFacet(xml
 }
 
 /**
- * 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
- * @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.
+ * facet; sets `length` to the computed length of `value`.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param facet  the facet to check
+ * @param valType  the built-in type
+ * @param value  the lexical repr. of the value to be validated
+ * @param val  the precomputed value
+ * @param length  the actual length of the value
+ * @param ws  the whitespace type of the value
+ * @returns 0 if the value is valid, a positive error code
  * otherwise and -1 in case of an internal or API error.
  */
 static int
@@ -5451,24 +5381,22 @@ xmlSchemaValidateLengthFacetInternal(xml
 }
 
 /**
- * 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.
+ * facet; sets `length` to the computed length of `value`.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param type  the built-in type
+ * @param facet  the facet to check
+ * @param value  the lexical repr. of the value to be validated
+ * @param val  the precomputed value
+ * @param length  the actual length of the 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,
+xmlSchemaValidateLengthFacet(xmlSchemaType *type,
+			     xmlSchemaFacet *facet,
 			     const xmlChar *value,
-			     xmlSchemaValPtr val,
+			     xmlSchemaVal *val,
 			     unsigned long *length)
 {
     if (type == NULL)
@@ -5479,25 +5407,23 @@ xmlSchemaValidateLengthFacet(xmlSchemaTy
 }
 
 /**
- * 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.
+ * facet; sets `length` to the computed length of `value`.
  *
- * Returns 0 if the value is valid, a positive error code
+ * @param facet  the facet to check
+ * @param valType  the built-in type
+ * @param value  the lexical repr. of the value to be validated
+ * @param val  the precomputed value
+ * @param ws  the whitespace type of the value
+ * @param length  the actual length of the 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,
+xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacet *facet,
 				  xmlSchemaValType valType,
 				  const xmlChar *value,
-				  xmlSchemaValPtr val,
+				  xmlSchemaVal *val,
 				  unsigned long *length,
 				  xmlSchemaWhitespaceValueType ws)
 {
@@ -5506,17 +5432,15 @@ xmlSchemaValidateLengthFacetWhtsp(xmlSch
 }
 
 /**
- * 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
+ * @param facet  the facet to check
+ * @param fws  the whitespace type of the facet's value
+ * @param valType  the built-in type of the value
+ * @param value  the lexical repr of the value to validate
+ * @param val  the precomputed value
+ * @param ws  the whitespace type of the value
+ * @returns 0 if the element is schemas valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
 static int
@@ -5742,22 +5666,20 @@ xmlSchemaValidateFacetInternal(xmlSchema
 }
 
 /**
- * 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
+ * @param base  the base type
+ * @param facet  the facet to check
+ * @param value  the lexical repr of the value to validate
+ * @param val  the precomputed value
+ * @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,
+xmlSchemaValidateFacet(xmlSchemaType *base,
+	               xmlSchemaFacet *facet,
 	               const xmlChar *value,
-		       xmlSchemaValPtr val)
+		       xmlSchemaVal *val)
 {
     /*
     * This tries to ensure API compatibility regarding the old
@@ -5776,28 +5698,26 @@ xmlSchemaValidateFacet(xmlSchemaTypePtr
 }
 
 /**
- * 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
+ * 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
+ * @param facet  the facet to check
+ * @param fws  the whitespace type of the facet's value
+ * @param valType  the built-in type of the value
+ * @param value  the lexical (or normalized for pattern) repr of the value to validate
+ * @param val  the precomputed value
+ * @param ws  the whitespace type of the value
+ * @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,
+xmlSchemaValidateFacetWhtsp(xmlSchemaFacet *facet,
 			    xmlSchemaWhitespaceValueType fws,
 			    xmlSchemaValType valType,
 			    const xmlChar *value,
-			    xmlSchemaValPtr val,
+			    xmlSchemaVal *val,
 			    xmlSchemaWhitespaceValueType ws)
 {
      return(xmlSchemaValidateFacetInternal(facet, fws, valType,
@@ -5805,26 +5725,24 @@ xmlSchemaValidateFacetWhtsp(xmlSchemaFac
 }
 
 /**
- * xmlSchemaGetCanonValue:
- * @val: the precomputed value
- * @retValue: the returned value
- *
  * Get the canonical 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 "???".
+ * in a `retValue` of "???".
  *
  * TODO: XML Schema 1.0 does not define canonical representations
  * for: duration, gYearMonth, gYear, gMonthDay, gMonth, gDay,
  * anyURI, QName, NOTATION. This will be fixed in XML Schema 1.1.
  *
  *
- * Returns 0 if the value could be built, 1 if the value type is
+ * @param val  the precomputed value
+ * @param retValue  the returned value
+ * @returns 0 if the value could be built, 1 if the value type is
  * not supported yet and -1 in case of API errors.
  */
 int
-xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
+xmlSchemaGetCanonValue(xmlSchemaVal *val, const xmlChar **retValue)
 {
     if ((retValue == NULL) || (val == NULL))
 	return (-1);
@@ -6144,19 +6062,17 @@ xmlSchemaGetCanonValue(xmlSchemaValPtr v
 }
 
 /**
- * xmlSchemaGetCanonValueWhtsp:
- * @val: the precomputed value
- * @retValue: the returned value
- * @ws: the whitespace type of the value
- *
  * Get the canonical representation of the value.
- * The caller has to free the returned @retValue.
+ * The caller has to free the returned `retValue`.
  *
- * Returns 0 if the value could be built, 1 if the value type is
+ * @param val  the precomputed value
+ * @param retValue  the returned value
+ * @param ws  the whitespace type of the value
+ * @returns 0 if the value could be built, 1 if the value type is
  * not supported yet and -1 in case of API errors.
  */
 int
-xmlSchemaGetCanonValueWhtsp(xmlSchemaValPtr val,
+xmlSchemaGetCanonValueWhtsp(xmlSchemaVal *val,
 			    const xmlChar **retValue,
 			    xmlSchemaWhitespaceValueType ws)
 {
@@ -6197,15 +6113,13 @@ xmlSchemaGetCanonValueWhtsp(xmlSchemaVal
 }
 
 /**
- * xmlSchemaGetValType:
- * @val: a schemas value
- *
  * Accessor for the type of a value
  *
- * Returns the xmlSchemaValType of the value
+ * @param val  a schemas value
+ * @returns the xmlSchemaValType of the value
  */
 xmlSchemaValType
-xmlSchemaGetValType(xmlSchemaValPtr val)
+xmlSchemaGetValType(xmlSchemaVal *val)
 {
     if (val == NULL)
         return(XML_SCHEMAS_UNKNOWN);
diff -pruN 2.14.6+dfsg-0.1/xmlstring.c 2.15.0+dfsg-0.3/xmlstring.c
--- 2.14.6+dfsg-0.1/xmlstring.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlstring.c	2025-09-15 11:55:59.000000000 +0000
@@ -7,10 +7,9 @@
  *
  * See Copyright for the status of this software.
  *
- * UTF8 string routines from:
- * William Brack <wbrack@mmm.com.hk>
+ * UTF8 string routines from: William Brack
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 #define IN_LIBXML
@@ -41,13 +40,11 @@
  ************************************************************************/
 
 /**
- * xmlStrndup:
- * @cur:  the input xmlChar *
- * @len:  the len of @cur
- *
  * a strndup for array of xmlChar's
  *
- * Returns a new xmlChar * or NULL
+ * @param cur  the input xmlChar *
+ * @param len  the len of `cur`
+ * @returns a new xmlChar * or NULL
  */
 xmlChar *
 xmlStrndup(const xmlChar *cur, int len) {
@@ -64,14 +61,12 @@ xmlStrndup(const xmlChar *cur, int len)
 }
 
 /**
- * xmlStrdup:
- * @cur:  the input xmlChar *
- *
  * a strdup for array of xmlChar's. Since they are supposed to be
  * encoded in UTF-8 or an encoding with 8bit based chars, we assume
  * a termination mark of '0'.
  *
- * Returns a new xmlChar * or NULL
+ * @param cur  the input xmlChar *
+ * @returns a new xmlChar * or NULL
  */
 xmlChar *
 xmlStrdup(const xmlChar *cur) {
@@ -83,13 +78,11 @@ xmlStrdup(const xmlChar *cur) {
 }
 
 /**
- * xmlCharStrndup:
- * @cur:  the input char *
- * @len:  the len of @cur
- *
  * a strndup for char's to xmlChar's
  *
- * Returns a new xmlChar * or NULL
+ * @param cur  the input char *
+ * @param len  the len of `cur`
+ * @returns a new xmlChar * or NULL
  */
 
 xmlChar *
@@ -112,12 +105,10 @@ xmlCharStrndup(const char *cur, int len)
 }
 
 /**
- * xmlCharStrdup:
- * @cur:  the input char *
- *
  * a strdup for char's to xmlChar's
  *
- * Returns a new xmlChar * or NULL
+ * @param cur  the input char *
+ * @returns a new xmlChar * or NULL
  */
 
 xmlChar *
@@ -130,13 +121,11 @@ xmlCharStrdup(const char *cur) {
 }
 
 /**
- * xmlStrcmp:
- * @str1:  the first xmlChar *
- * @str2:  the second xmlChar *
- *
  * a strcmp for xmlChar's
  *
- * Returns the integer result of the comparison
+ * @param str1  the first xmlChar *
+ * @param str2  the second xmlChar *
+ * @returns the integer result of the comparison
  */
 
 int
@@ -156,14 +145,12 @@ xmlStrcmp(const xmlChar *str1, const xml
 }
 
 /**
- * xmlStrEqual:
- * @str1:  the first xmlChar *
- * @str2:  the second xmlChar *
- *
  * Check if both strings are equal of have same content.
- * Should be a bit more readable and faster than xmlStrcmp()
+ * Should be a bit more readable and faster than #xmlStrcmp
  *
- * Returns 1 if they are equal, 0 if they are different
+ * @param str1  the first xmlChar *
+ * @param str2  the second xmlChar *
+ * @returns 1 if they are equal, 0 if they are different
  */
 
 int
@@ -182,14 +169,12 @@ xmlStrEqual(const xmlChar *str1, const x
 }
 
 /**
- * xmlStrQEqual:
- * @pref:  the prefix of the QName
- * @name:  the localname of the QName
- * @str:  the second xmlChar *
- *
  * Check if a QName is Equal to a given string
  *
- * Returns 1 if they are equal, 0 if they are different
+ * @param pref  the prefix of the QName
+ * @param name  the localname of the QName
+ * @param str  the second xmlChar *
+ * @returns 1 if they are equal, 0 if they are different
  */
 
 int
@@ -209,14 +194,12 @@ xmlStrQEqual(const xmlChar *pref, const
 }
 
 /**
- * xmlStrncmp:
- * @str1:  the first xmlChar *
- * @str2:  the second xmlChar *
- * @len:  the max comparison length
- *
  * a strncmp for xmlChar's
  *
- * Returns the integer result of the comparison
+ * @param str1  the first xmlChar *
+ * @param str2  the second xmlChar *
+ * @param len  the max comparison length
+ * @returns the integer result of the comparison
  */
 
 int
@@ -272,13 +255,11 @@ static const xmlChar casemap[256] = {
 };
 
 /**
- * xmlStrcasecmp:
- * @str1:  the first xmlChar *
- * @str2:  the second xmlChar *
- *
  * a strcasecmp for xmlChar's
  *
- * Returns the integer result of the comparison
+ * @param str1  the first xmlChar *
+ * @param str2  the second xmlChar *
+ * @returns the integer result of the comparison
  */
 
 int
@@ -296,14 +277,12 @@ xmlStrcasecmp(const xmlChar *str1, const
 }
 
 /**
- * xmlStrncasecmp:
- * @str1:  the first xmlChar *
- * @str2:  the second xmlChar *
- * @len:  the max comparison length
- *
  * a strncasecmp for xmlChar's
  *
- * Returns the integer result of the comparison
+ * @param str1  the first xmlChar *
+ * @param str2  the second xmlChar *
+ * @param len  the max comparison length
+ * @returns the integer result of the comparison
  */
 
 int
@@ -322,13 +301,11 @@ xmlStrncasecmp(const xmlChar *str1, cons
 }
 
 /**
- * xmlStrchr:
- * @str:  the xmlChar * array
- * @val:  the xmlChar to search
- *
  * a strchr for xmlChar's
  *
- * Returns the xmlChar * for the first occurrence or NULL.
+ * @param str  the xmlChar * array
+ * @param val  the xmlChar to search
+ * @returns the xmlChar * for the first occurrence or NULL.
  */
 
 const xmlChar *
@@ -342,13 +319,11 @@ xmlStrchr(const xmlChar *str, xmlChar va
 }
 
 /**
- * xmlStrstr:
- * @str:  the xmlChar * array (haystack)
- * @val:  the xmlChar to search (needle)
- *
  * a strstr for xmlChar's
  *
- * Returns the xmlChar * for the first occurrence or NULL.
+ * @param str  the xmlChar * array (haystack)
+ * @param val  the xmlChar to search (needle)
+ * @returns the xmlChar * for the first occurrence or NULL.
  */
 
 const xmlChar *
@@ -370,13 +345,11 @@ xmlStrstr(const xmlChar *str, const xmlC
 }
 
 /**
- * xmlStrcasestr:
- * @str:  the xmlChar * array (haystack)
- * @val:  the xmlChar to search (needle)
- *
  * a case-ignoring strstr for xmlChar's
  *
- * Returns the xmlChar * for the first occurrence or NULL.
+ * @param str  the xmlChar * array (haystack)
+ * @param val  the xmlChar to search (needle)
+ * @returns the xmlChar * for the first occurrence or NULL.
  */
 
 const xmlChar *
@@ -397,14 +370,12 @@ xmlStrcasestr(const xmlChar *str, const
 }
 
 /**
- * xmlStrsub:
- * @str:  the xmlChar * array (haystack)
- * @start:  the index of the first char (zero based)
- * @len:  the length of the substring
- *
  * Extract a substring of a given string
  *
- * Returns the xmlChar * for the first occurrence or NULL.
+ * @param str  the xmlChar * array (haystack)
+ * @param start  the index of the first char (zero based)
+ * @param len  the length of the substring
+ * @returns the xmlChar * for the first occurrence or NULL.
  */
 
 xmlChar *
@@ -424,12 +395,10 @@ xmlStrsub(const xmlChar *str, int start,
 }
 
 /**
- * xmlStrlen:
- * @str:  the xmlChar * array
- *
  * length of a xmlChar's string
  *
- * Returns the number of xmlChar contained in the ARRAY.
+ * @param str  the xmlChar * array
+ * @returns the number of xmlChar contained in the ARRAY.
  */
 
 int
@@ -439,16 +408,14 @@ xmlStrlen(const xmlChar *str) {
 }
 
 /**
- * xmlStrncat:
- * @cur:  the original xmlChar * array
- * @add:  the xmlChar * array added
- * @len:  the length of @add
- *
- * a strncat for array of xmlChar's, it will extend @cur with the len
- * first bytes of @add. Note that if @len < 0 then this is an API error
+ * a strncat for array of xmlChar's, it will extend `cur` with the len
+ * first bytes of `add`. Note that if `len` < 0 then this is an API error
  * and NULL will be returned.
  *
- * Returns a new xmlChar *, the original @cur is reallocated and should
+ * @param cur  the original xmlChar * array
+ * @param add  the xmlChar * array added
+ * @param len  the length of `add`
+ * @returns a new xmlChar *, the original `cur` is reallocated and should
  * not be freed.
  */
 
@@ -478,16 +445,14 @@ xmlStrncat(xmlChar *cur, const xmlChar *
 }
 
 /**
- * xmlStrncatNew:
- * @str1:  first xmlChar string
- * @str2:  second xmlChar string
- * @len:  the len of @str2 or < 0
- *
- * same as xmlStrncat, but creates a new string.  The original
- * two strings are not freed. If @len is < 0 then the length
+ * same as #xmlStrncat, but creates a new string.  The original
+ * two strings are not freed. If `len` is < 0 then the length
  * will be calculated automatically.
  *
- * Returns a new xmlChar * or NULL
+ * @param str1  first xmlChar string
+ * @param str2  second xmlChar string
+ * @param len  the len of `str2` or < 0
+ * @returns a new xmlChar * or NULL
  */
 xmlChar *
 xmlStrncatNew(const xmlChar *str1, const xmlChar *str2, int len) {
@@ -517,16 +482,14 @@ xmlStrncatNew(const xmlChar *str1, const
 }
 
 /**
- * xmlStrcat:
- * @cur:  the original xmlChar * array
- * @add:  the xmlChar * array added
- *
  * a strcat for array of xmlChar's. Since they are supposed to be
  * encoded in UTF-8 or an encoding with 8bit based chars, we assume
  * a termination mark of '0'.
  *
- * Returns a new xmlChar * containing the concatenated string. The original
- * @cur is reallocated and should not be freed.
+ * @param cur  the original xmlChar * array
+ * @param add  the xmlChar * array added
+ * @returns a new xmlChar * containing the concatenated string. The original
+ * `cur` is reallocated and should not be freed.
  */
 xmlChar *
 xmlStrcat(xmlChar *cur, const xmlChar *add) {
@@ -541,15 +504,13 @@ xmlStrcat(xmlChar *cur, const xmlChar *a
 }
 
 /**
- * xmlStrPrintf:
- * @buf:   the result buffer.
- * @len:   the result buffer length.
- * @msg:   the message with printf formatting.
- * @...:   extra parameters for the message.
+ * Formats `msg` and places result into `buf`.
  *
- * Formats @msg and places result into @buf.
- *
- * Returns the number of characters written to @buf or -1 if an error occurs.
+ * @param buf  the result buffer.
+ * @param len  the result buffer length.
+ * @param msg  the message with printf formatting.
+ * @param ...   extra parameters for the message.
+ * @returns the number of characters written to `buf` or -1 if an error occurs.
  */
 int
 xmlStrPrintf(xmlChar *buf, int len, const char *msg, ...) {
@@ -569,15 +530,13 @@ xmlStrPrintf(xmlChar *buf, int len, cons
 }
 
 /**
- * xmlStrVPrintf:
- * @buf:   the result buffer.
- * @len:   the result buffer length.
- * @msg:   the message with printf formatting.
- * @ap:    extra parameters for the message.
- *
- * Formats @msg and places result into @buf.
+ * Formats `msg` and places result into `buf`.
  *
- * Returns the number of characters written to @buf or -1 if an error occurs.
+ * @param buf  the result buffer.
+ * @param len  the result buffer length.
+ * @param msg  the message with printf formatting.
+ * @param ap  extra parameters for the message.
+ * @returns the number of characters written to `buf` or -1 if an error occurs.
  */
 int
 xmlStrVPrintf(xmlChar *buf, int len, const char *msg, va_list ap) {
@@ -594,15 +553,13 @@ xmlStrVPrintf(xmlChar *buf, int len, con
 }
 
 /**
- * xmlStrVASPrintf:
- * @out:  pointer to the resulting string
- * @maxSize:  maximum size of the output buffer
- * @msg:  printf format string
- * @ap:  arguments for format string
- *
  * Creates a newly allocated string according to format.
  *
- * Returns 0 on success, 1 if the result was truncated or on other
+ * @param out  pointer to the resulting string
+ * @param maxSize  maximum size of the output buffer
+ * @param msg  printf format string
+ * @param ap  arguments for format string
+ * @returns 0 on success, 1 if the result was truncated or on other
  * errors, -1 if a memory allocation failed.
  */
 int
@@ -712,15 +669,13 @@ xmlStrVASPrintf(xmlChar **out, int maxSi
 }
 
 /**
- * xmlStrASPrintf:
- * @out:  pointer to the resulting string
- * @maxSize:  maximum size of the output buffer
- * @msg:  printf format string
- * @...:  arguments for format string
- *
  * See xmlStrVASPrintf.
  *
- * Returns 0 on success, 1 if the result was truncated or on other
+ * @param out  pointer to the resulting string
+ * @param maxSize  maximum size of the output buffer
+ * @param msg  printf format string
+ * @param ...  arguments for format string
+ * @returns 0 on success, 1 if the result was truncated or on other
  * errors, -1 if a memory allocation failed.
  */
 int
@@ -752,12 +707,10 @@ xmlStrASPrintf(xmlChar **out, int maxSiz
 
 
 /**
- * xmlUTF8Size:
- * @utf: pointer to the UTF8 character
- *
  * calculates the internal size of a UTF8 character
  *
- * returns the numbers of bytes in the character, -1 on format error
+ * @param utf  pointer to the UTF8 character
+ * @returns the numbers of bytes in the character, -1 on format error
  */
 int
 xmlUTF8Size(const xmlChar *utf) {
@@ -782,13 +735,11 @@ xmlUTF8Size(const xmlChar *utf) {
 }
 
 /**
- * xmlUTF8Charcmp:
- * @utf1: pointer to first UTF8 char
- * @utf2: pointer to second UTF8 char
- *
  * compares the two UCS4 values
  *
- * returns result of the compare as with xmlStrncmp
+ * @param utf1  pointer to first UTF8 char
+ * @param utf2  pointer to second UTF8 char
+ * @returns result of the compare as with #xmlStrncmp
  */
 int
 xmlUTF8Charcmp(const xmlChar *utf1, const xmlChar *utf2) {
@@ -802,13 +753,11 @@ xmlUTF8Charcmp(const xmlChar *utf1, cons
 }
 
 /**
- * xmlUTF8Strlen:
- * @utf:  a sequence of UTF-8 encoded bytes
- *
  * compute the length of an UTF8 string, it doesn't do a full UTF8
  * checking of the content of the string.
  *
- * Returns the number of characters in the string or -1 in case of error
+ * @param utf  a sequence of UTF-8 encoded bytes
+ * @returns the number of characters in the string or -1 in case of error
  */
 int
 xmlUTF8Strlen(const xmlChar *utf) {
@@ -843,15 +792,13 @@ xmlUTF8Strlen(const xmlChar *utf) {
 }
 
 /**
- * xmlGetUTF8Char:
- * @utf:  a sequence of UTF-8 encoded bytes
- * @len:  a pointer to the minimum number of bytes present in
+ * Read the first UTF8 character from `utf`
+ *
+ * @param utf  a sequence of UTF-8 encoded bytes
+ * @param len  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.
- *
- * Read the first UTF8 character from @utf
- *
- * Returns the char value or -1 in case of error, and sets *len to
+ * @returns the char value or -1 in case of error, and sets *len to
  *        the actual number of bytes consumed (0 in case of error)
  */
 int
@@ -913,17 +860,15 @@ error:
 }
 
 /**
- * xmlCheckUTF8:
- * @utf: Pointer to putative UTF-8 encoded string.
- *
- * Checks @utf for being valid UTF-8. @utf is assumed to be
+ * 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.
  *
- * Return value: true if @utf is valid.
+ * @param utf  Pointer to putative UTF-8 encoded string.
+ * @returns value: true if `utf` is valid.
  **/
 int
 xmlCheckUTF8(const unsigned char *utf)
@@ -968,14 +913,12 @@ xmlCheckUTF8(const unsigned char *utf)
 }
 
 /**
- * xmlUTF8Strsize:
- * @utf:  a sequence of UTF-8 encoded bytes
- * @len:  the number of characters in the array
- *
  * storage size of an UTF8 string
  * the behaviour is not guaranteed if the input string is not UTF-8
  *
- * Returns the storage size of
+ * @param utf  a sequence of UTF-8 encoded bytes
+ * @param len  the number of characters in the array
+ * @returns the storage size of
  * the first 'len' characters of ARRAY
  */
 
@@ -1007,13 +950,11 @@ xmlUTF8Strsize(const xmlChar *utf, int l
 
 
 /**
- * xmlUTF8Strndup:
- * @utf:  the input UTF8 *
- * @len:  the len of @utf (in chars)
- *
  * a strndup for array of UTF8's
  *
- * Returns a new UTF8 * or NULL
+ * @param utf  the input UTF8 *
+ * @param len  the len of `utf` (in chars)
+ * @returns a new UTF8 * or NULL
  */
 xmlChar *
 xmlUTF8Strndup(const xmlChar *utf, int len) {
@@ -1032,14 +973,12 @@ xmlUTF8Strndup(const xmlChar *utf, int l
 }
 
 /**
- * xmlUTF8Strpos:
- * @utf:  the input UTF8 *
- * @pos:  the position of the desired UTF8 char (in chars)
- *
  * a function to provide the equivalent of fetching a
  * character from a string array
  *
- * Returns a pointer to the UTF8 character or NULL
+ * @param utf  the input UTF8 *
+ * @param pos  the position of the desired UTF8 char (in chars)
+ * @returns a pointer to the UTF8 character or NULL
  */
 const xmlChar *
 xmlUTF8Strpos(const xmlChar *utf, int pos) {
@@ -1066,13 +1005,11 @@ xmlUTF8Strpos(const xmlChar *utf, int po
 }
 
 /**
- * xmlUTF8Strloc:
- * @utf:  the input UTF8 *
- * @utfchar:  the UTF8 character to be found
- *
  * a function to provide the relative location of a UTF8 char
  *
- * Returns the relative character position of the desired char
+ * @param utf  the input UTF8 *
+ * @param utfchar  the UTF8 character to be found
+ * @returns the relative character position of the desired char
  * or -1 if not found
  */
 int
@@ -1101,15 +1038,13 @@ xmlUTF8Strloc(const xmlChar *utf, const
     return(-1);
 }
 /**
- * xmlUTF8Strsub:
- * @utf:  a sequence of UTF-8 encoded bytes
- * @start: relative pos of first char
- * @len:   total number to copy
- *
  * Create a substring from a given UTF-8 string
  * Note:  positions are given in units of UTF-8 chars
  *
- * Returns a pointer to a newly created string or NULL if the
+ * @param utf  a sequence of UTF-8 encoded bytes
+ * @param start  relative pos of first char
+ * @param len  total number to copy
+ * @returns a pointer to a newly created string or NULL if the
  * start index is out of bounds or a memory allocation failed.
  * If len is too large, the result is truncated.
  */
@@ -1145,13 +1080,13 @@ xmlUTF8Strsub(const xmlChar *utf, int st
 }
 
 /**
- * xmlEscapeFormatString:
- * @msg:  a pointer to the string in which to escape '%' characters.
- * Must be a heap-allocated buffer created by libxml2 that may be
+ * Replaces a string with an escaped string.
+ *
+ * `msg` must be a heap-allocated buffer created by libxml2 that may be
  * returned, or that may be freed and replaced.
  *
- * Replaces the string pointed to by 'msg' with an escaped string.
- * Returns the same string with all '%' characters escaped.
+ * @param msg  a pointer to the string in which to escape '%' characters.
+ * @returns the same string with all '%' characters escaped.
  */
 xmlChar *
 xmlEscapeFormatString(xmlChar **msg)
diff -pruN 2.14.6+dfsg-0.1/xmlunicode.c 2.15.0+dfsg-0.3/xmlunicode.c
--- 2.14.6+dfsg-0.1/xmlunicode.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlunicode.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,3178 +0,0 @@
-/*
- * xmlunicode.c: this module implements the Unicode character APIs
- *
- * This file is automatically generated from the
- * UCS description files of the Unicode Character Database
- * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html
- * using the genUnicode.py Python script.
- *
- * Generation date: Tue Mar  4 16:29:31 2025
- * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt
- * Daniel Veillard <veillard@redhat.com>
- */
-
-#define IN_LIBXML
-#include "libxml.h"
-
-#ifdef LIBXML_REGEXP_ENABLED
-
-#include <string.h>
-#include <libxml/xmlversion.h>
-#include <libxml/chvalid.h>
-
-#include "private/unicode.h"
-
-typedef int (xmlIntFunc)(int);	/* just to keep one's mind untwisted */
-
-typedef struct {
-    const char *rangename;
-    xmlIntFunc *func;
-} xmlUnicodeRange;
-
-typedef struct {
-    const xmlUnicodeRange *table;
-    int		    numentries;
-} xmlUnicodeNameTable;
-
-
-static xmlIntFunc *xmlUnicodeLookup(const xmlUnicodeNameTable *tptr, const char *tname);
-
-static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f},
-    {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f},
-    {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063},
-    {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00},
-    {0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} };
-static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
-    {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
-    {0x100000, 0x100000}, {0x10fffd, 0x10fffd} };
-static const xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL};
-
-static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
-    {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f},
-    {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
-    {0xfff9, 0xfffb} };
-static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
-    {0xe0020, 0xe007f} };
-static const xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL};
-
-static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a},
-    {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
-    {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4},
-    {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a},
-    {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5},
-    {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5},
-    {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559},
-    {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
-    {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5},
-    {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff},
-    {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5},
-    {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
-    {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8},
-    {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd},
-    {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
-    {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
-    {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
-    {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8},
-    {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd},
-    {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
-    {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
-    {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71},
-    {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
-    {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4},
-    {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c},
-    {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39},
-    {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8},
-    {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde},
-    {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28},
-    {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1},
-    {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30},
-    {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84},
-    {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97},
-    {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7},
-    {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd},
-    {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00},
-    {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021},
-    {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5},
-    {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
-    {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
-    {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
-    {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
-    {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
-    {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
-    {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
-    {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
-    {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
-    {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
-    {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877},
-    {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
-    {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15},
-    {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
-    {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d},
-    {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
-    {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
-    {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
-    {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115},
-    {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128},
-    {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f},
-    {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c},
-    {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
-    {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff},
-    {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5},
-    {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d},
-    {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d},
-    {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e},
-    {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
-    {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
-    {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
-    {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} };
-static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
-    {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
-    {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
-    {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d},
-    {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
-    {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
-    {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
-    {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
-    {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
-    {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
-    {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
-    {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
-    {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
-    {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
-    {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
-    {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9},
-    {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
-static const xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL};
-
-static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa},
-    {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101},
-    {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109},
-    {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111},
-    {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119},
-    {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121},
-    {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129},
-    {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131},
-    {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a},
-    {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142},
-    {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b},
-    {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153},
-    {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b},
-    {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163},
-    {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b},
-    {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173},
-    {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c},
-    {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188},
-    {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b},
-    {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5},
-    {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0},
-    {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf},
-    {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce},
-    {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6},
-    {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df},
-    {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7},
-    {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0},
-    {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb},
-    {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203},
-    {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b},
-    {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213},
-    {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b},
-    {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223},
-    {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b},
-    {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236},
-    {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1},
-    {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd},
-    {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5},
-    {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed},
-    {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb},
-    {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465},
-    {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d},
-    {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475},
-    {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d},
-    {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d},
-    {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495},
-    {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d},
-    {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5},
-    {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad},
-    {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5},
-    {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd},
-    {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6},
-    {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce},
-    {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7},
-    {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df},
-    {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7},
-    {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef},
-    {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9},
-    {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507},
-    {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f},
-    {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01},
-    {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09},
-    {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11},
-    {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19},
-    {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21},
-    {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29},
-    {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31},
-    {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39},
-    {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41},
-    {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49},
-    {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51},
-    {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59},
-    {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61},
-    {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69},
-    {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71},
-    {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79},
-    {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81},
-    {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89},
-    {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91},
-    {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3},
-    {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab},
-    {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3},
-    {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb},
-    {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3},
-    {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb},
-    {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3},
-    {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb},
-    {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3},
-    {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb},
-    {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3},
-    {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07},
-    {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45},
-    {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87},
-    {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7},
-    {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3},
-    {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7},
-    {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f},
-    {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139},
-    {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
-    {0xff41, 0xff5a} };
-static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433},
-    {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
-    {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
-    {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537},
-    {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
-    {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
-    {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1},
-    {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e},
-    {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
-    {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9} };
-static const xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL};
-
-static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1},
-    {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559},
-    {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6},
-    {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005},
-    {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
-    {0xff70, 0xff70}, {0xff9e, 0xff9f} };
-static const xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL};
-
-static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3},
-    {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a},
-    {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef},
-    {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f},
-    {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939},
-    {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c},
-    {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
-    {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1},
-    {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28},
-    {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
-    {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d},
-    {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
-    {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1},
-    {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
-    {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d},
-    {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
-    {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
-    {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
-    {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
-    {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
-    {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
-    {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c},
-    {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61},
-    {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd},
-    {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45},
-    {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a},
-    {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3},
-    {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0},
-    {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd},
-    {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b},
-    {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055},
-    {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
-    {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
-    {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
-    {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
-    {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
-    {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
-    {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
-    {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
-    {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
-    {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
-    {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877},
-    {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
-    {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096},
-    {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c},
-    {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
-    {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
-    {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
-    {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
-    {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
-    {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
-    {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d},
-    {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
-    {0xffda, 0xffdc} };
-static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
-    {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
-    {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
-    {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d},
-    {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
-    {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
-    {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
-static const xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL};
-
-static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
-    {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
-    {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} };
-static const xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL};
-
-static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6},
-    {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104},
-    {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c},
-    {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114},
-    {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c},
-    {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124},
-    {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c},
-    {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134},
-    {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d},
-    {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145},
-    {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e},
-    {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156},
-    {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e},
-    {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166},
-    {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e},
-    {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176},
-    {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182},
-    {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191},
-    {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0},
-    {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9},
-    {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5},
-    {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7},
-    {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1},
-    {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9},
-    {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2},
-    {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea},
-    {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4},
-    {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe},
-    {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206},
-    {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e},
-    {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216},
-    {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e},
-    {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226},
-    {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e},
-    {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a},
-    {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab},
-    {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc},
-    {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4},
-    {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec},
-    {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa},
-    {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464},
-    {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c},
-    {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474},
-    {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c},
-    {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c},
-    {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494},
-    {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c},
-    {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4},
-    {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac},
-    {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4},
-    {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc},
-    {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5},
-    {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd},
-    {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6},
-    {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de},
-    {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6},
-    {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee},
-    {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8},
-    {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506},
-    {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e},
-    {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02},
-    {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a},
-    {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12},
-    {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a},
-    {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22},
-    {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a},
-    {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32},
-    {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a},
-    {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42},
-    {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a},
-    {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52},
-    {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a},
-    {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62},
-    {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a},
-    {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72},
-    {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a},
-    {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82},
-    {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a},
-    {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92},
-    {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4},
-    {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac},
-    {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4},
-    {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc},
-    {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4},
-    {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc},
-    {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4},
-    {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc},
-    {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4},
-    {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec},
-    {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4},
-    {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
-    {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59},
-    {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f},
-    {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
-    {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d},
-    {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124},
-    {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131},
-    {0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} };
-static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419},
-    {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c},
-    {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
-    {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
-    {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
-    {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
-    {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
-    {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed},
-    {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
-    {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734},
-    {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8} };
-static const xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL};
-
-static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f},
-    {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
-    {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
-    {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc},
-    {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711},
-    {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c},
-    {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983},
-    {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
-    {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c},
-    {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71},
-    {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9},
-    {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c},
-    {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57},
-    {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd},
-    {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48},
-    {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc},
-    {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
-    {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
-    {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
-    {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31},
-    {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9},
-    {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35},
-    {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84},
-    {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
-    {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714},
-    {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3},
-    {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b},
-    {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a},
-    {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
-static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
-    {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
-    {0xe0100, 0xe01ef} };
-static const xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML};
-
-static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940},
-    {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8},
-    {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40},
-    {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc},
-    {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48},
-    {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2},
-    {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03},
-    {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4},
-    {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03},
-    {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57},
-    {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3},
-    {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031},
-    {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5},
-    {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931},
-    {0x1933, 0x1938} };
-static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} };
-static const xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL};
-
-static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f},
-    {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd},
-    {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615},
-    {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4},
-    {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a},
-    {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948},
-    {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981},
-    {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3},
-    {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48},
-    {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc},
-    {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3},
-    {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43},
-    {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0},
-    {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d},
-    {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6},
-    {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca},
-    {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a},
-    {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc},
-    {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37},
-    {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87},
-    {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030},
-    {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059},
-    {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
-    {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd},
-    {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928},
-    {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1},
-    {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e},
-    {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
-static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
-    {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} };
-static const xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL};
-
-static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3},
-    {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9},
-    {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f},
-    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f},
-    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
-    {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0},
-    {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f},
-    {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183},
-    {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007},
-    {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
-    {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} };
-static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
-    {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
-static const xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL};
-
-static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669},
-    {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
-    {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
-    {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
-    {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9},
-    {0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19} };
-static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
-static const xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL};
-
-static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9},
-    {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33},
-    {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079},
-    {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
-    {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
-    {0x3280, 0x3289}, {0x32b1, 0x32bf} };
-static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} };
-static const xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL};
-
-static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a},
-    {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f},
-    {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7},
-    {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387},
-    {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0},
-    {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b},
-    {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d},
-    {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f},
-    {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85},
-    {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
-    {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
-    {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027},
-    {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057},
-    {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6},
-    {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db},
-    {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
-    {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb},
-    {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63},
-    {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a},
-    {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d},
-    {0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} };
-static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
-static const xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL};
-
-static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a},
-    {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030},
-    {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63},
-    {0xff0d, 0xff0d} };
-static const xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL};
-
-static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d},
-    {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c},
-    {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a},
-    {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d},
-    {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775},
-    {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984},
-    {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c},
-    {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994},
-    {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db},
-    {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d},
-    {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017},
-    {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f},
-    {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c},
-    {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44},
-    {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e},
-    {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60},
-    {0xff63, 0xff63} };
-static const xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL};
-
-static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27},
-    {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40},
-    {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
-    {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
-    {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
-    {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
-    {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
-    {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
-    {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
-    {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
-    {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
-    {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
-    {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
-    {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
-    {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
-    {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
-    {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
-    {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} };
-static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
-static const xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL};
-
-static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b},
-    {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b},
-    {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d},
-    {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768},
-    {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770},
-    {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8},
-    {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987},
-    {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f},
-    {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997},
-    {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008},
-    {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010},
-    {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a},
-    {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37},
-    {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f},
-    {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59},
-    {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b},
-    {0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62} };
-static const xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL};
-
-static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b},
-    {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e},
-    {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6},
-    {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5},
-    {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
-    {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f},
-    {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa},
-    {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f},
-    {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34},
-    {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc},
-    {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff},
-    {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
-    {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052},
-    {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101},
-    {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118},
-    {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129},
-    {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144},
-    {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0},
-    {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617},
-    {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704},
-    {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d},
-    {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767},
-    {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5},
-    {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d},
-    {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
-    {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037},
-    {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f},
-    {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d},
-    {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff},
-    {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd},
-    {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
-    {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40},
-    {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
-    {0xfffc, 0xfffd} };
-static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
-    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
-    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
-    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
-    {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
-    {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
-    {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
-static const xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL};
-
-static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5},
-    {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f},
-    {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69},
-    {0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6} };
-static const xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL};
-
-static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60},
-    {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
-    {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
-    {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
-    {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
-    {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} };
-static const xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL};
-
-static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e},
-    {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7},
-    {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052},
-    {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b},
-    {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3},
-    {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2},
-    {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321},
-    {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1},
-    {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff},
-    {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff},
-    {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b},
-    {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2},
-    {0xffe9, 0xffec} };
-static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
-    {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
-    {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
-    {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
-static const xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL};
-
-static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9},
-    {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482},
-    {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa},
-    {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03},
-    {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
-    {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
-    {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106},
-    {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
-    {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
-    {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199},
-    {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad},
-    {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3},
-    {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
-    {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a},
-    {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
-    {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691},
-    {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727},
-    {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756},
-    {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af},
-    {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99},
-    {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
-    {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
-    {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243},
-    {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0},
-    {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
-    {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee},
-    {0xfffc, 0xfffd} };
-static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
-    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
-    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
-    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} };
-static const xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL};
-
-static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0},
-    {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029},
-    {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000} };
-static const xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL};
-
-/**
- * xmlUnicodeLookup:
- * @tptr: pointer to the name table
- * @name: name to be found
- *
- * binary table lookup for user-supplied name
- *
- * Returns pointer to range function if found, otherwise NULL
- */
-static xmlIntFunc
-*xmlUnicodeLookup(const xmlUnicodeNameTable *tptr, const char *tname) {
-    int low, high, mid, cmp;
-    const xmlUnicodeRange *sptr;
-
-    if ((tptr == NULL) || (tname == NULL)) return(NULL);
-
-    low = 0;
-    high = tptr->numentries - 1;
-    sptr = tptr->table;
-    while (low <= high) {
-	mid = (low + high) / 2;
-	cmp = strcmp(tname, sptr[mid].rangename);
-	if (cmp == 0)
-	    return (sptr[mid].func);
-	if (cmp < 0)
-	    high = mid - 1;
-	else
-	    low = mid + 1;
-    }
-    return (NULL);
-}
-
-/**
- * xmlUCSIsAegeanNumbers:
- * @code: UCS code point
- *
- * Check whether the character is part of AegeanNumbers UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsAegeanNumbers(int code) {
-    return(((code >= 0x10100) && (code <= 0x1013F)));
-}
-
-/**
- * xmlUCSIsAlphabeticPresentationForms:
- * @code: UCS code point
- *
- * Check whether the character is part of AlphabeticPresentationForms UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsAlphabeticPresentationForms(int code) {
-    return(((code >= 0xFB00) && (code <= 0xFB4F)));
-}
-
-/**
- * xmlUCSIsArabic:
- * @code: UCS code point
- *
- * Check whether the character is part of Arabic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsArabic(int code) {
-    return(((code >= 0x0600) && (code <= 0x06FF)));
-}
-
-/**
- * xmlUCSIsArabicPresentationFormsA:
- * @code: UCS code point
- *
- * Check whether the character is part of ArabicPresentationForms-A UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsArabicPresentationFormsA(int code) {
-    return(((code >= 0xFB50) && (code <= 0xFDFF)));
-}
-
-/**
- * xmlUCSIsArabicPresentationFormsB:
- * @code: UCS code point
- *
- * Check whether the character is part of ArabicPresentationForms-B UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsArabicPresentationFormsB(int code) {
-    return(((code >= 0xFE70) && (code <= 0xFEFF)));
-}
-
-/**
- * xmlUCSIsArmenian:
- * @code: UCS code point
- *
- * Check whether the character is part of Armenian UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsArmenian(int code) {
-    return(((code >= 0x0530) && (code <= 0x058F)));
-}
-
-/**
- * xmlUCSIsArrows:
- * @code: UCS code point
- *
- * Check whether the character is part of Arrows UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsArrows(int code) {
-    return(((code >= 0x2190) && (code <= 0x21FF)));
-}
-
-/**
- * xmlUCSIsBasicLatin:
- * @code: UCS code point
- *
- * Check whether the character is part of BasicLatin UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBasicLatin(int code) {
-    return(((code >= 0x0000) && (code <= 0x007F)));
-}
-
-/**
- * xmlUCSIsBengali:
- * @code: UCS code point
- *
- * Check whether the character is part of Bengali UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBengali(int code) {
-    return(((code >= 0x0980) && (code <= 0x09FF)));
-}
-
-/**
- * xmlUCSIsBlockElements:
- * @code: UCS code point
- *
- * Check whether the character is part of BlockElements UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBlockElements(int code) {
-    return(((code >= 0x2580) && (code <= 0x259F)));
-}
-
-/**
- * xmlUCSIsBopomofo:
- * @code: UCS code point
- *
- * Check whether the character is part of Bopomofo UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBopomofo(int code) {
-    return(((code >= 0x3100) && (code <= 0x312F)));
-}
-
-/**
- * xmlUCSIsBopomofoExtended:
- * @code: UCS code point
- *
- * Check whether the character is part of BopomofoExtended UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBopomofoExtended(int code) {
-    return(((code >= 0x31A0) && (code <= 0x31BF)));
-}
-
-/**
- * xmlUCSIsBoxDrawing:
- * @code: UCS code point
- *
- * Check whether the character is part of BoxDrawing UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBoxDrawing(int code) {
-    return(((code >= 0x2500) && (code <= 0x257F)));
-}
-
-/**
- * xmlUCSIsBraillePatterns:
- * @code: UCS code point
- *
- * Check whether the character is part of BraillePatterns UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBraillePatterns(int code) {
-    return(((code >= 0x2800) && (code <= 0x28FF)));
-}
-
-/**
- * xmlUCSIsBuhid:
- * @code: UCS code point
- *
- * Check whether the character is part of Buhid UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsBuhid(int code) {
-    return(((code >= 0x1740) && (code <= 0x175F)));
-}
-
-/**
- * xmlUCSIsByzantineMusicalSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of ByzantineMusicalSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsByzantineMusicalSymbols(int code) {
-    return(((code >= 0x1D000) && (code <= 0x1D0FF)));
-}
-
-/**
- * xmlUCSIsCJKCompatibility:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKCompatibility UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKCompatibility(int code) {
-    return(((code >= 0x3300) && (code <= 0x33FF)));
-}
-
-/**
- * xmlUCSIsCJKCompatibilityForms:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKCompatibilityForms UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKCompatibilityForms(int code) {
-    return(((code >= 0xFE30) && (code <= 0xFE4F)));
-}
-
-/**
- * xmlUCSIsCJKCompatibilityIdeographs:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKCompatibilityIdeographs UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKCompatibilityIdeographs(int code) {
-    return(((code >= 0xF900) && (code <= 0xFAFF)));
-}
-
-/**
- * xmlUCSIsCJKCompatibilityIdeographsSupplement:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKCompatibilityIdeographsSupplement(int code) {
-    return(((code >= 0x2F800) && (code <= 0x2FA1F)));
-}
-
-/**
- * xmlUCSIsCJKRadicalsSupplement:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKRadicalsSupplement UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKRadicalsSupplement(int code) {
-    return(((code >= 0x2E80) && (code <= 0x2EFF)));
-}
-
-/**
- * xmlUCSIsCJKSymbolsandPunctuation:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKSymbolsandPunctuation UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKSymbolsandPunctuation(int code) {
-    return(((code >= 0x3000) && (code <= 0x303F)));
-}
-
-/**
- * xmlUCSIsCJKUnifiedIdeographs:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKUnifiedIdeographs UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKUnifiedIdeographs(int code) {
-    return(((code >= 0x4E00) && (code <= 0x9FFF)));
-}
-
-/**
- * xmlUCSIsCJKUnifiedIdeographsExtensionA:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKUnifiedIdeographsExtensionA(int code) {
-    return(((code >= 0x3400) && (code <= 0x4DBF)));
-}
-
-/**
- * xmlUCSIsCJKUnifiedIdeographsExtensionB:
- * @code: UCS code point
- *
- * Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCJKUnifiedIdeographsExtensionB(int code) {
-    return(((code >= 0x20000) && (code <= 0x2A6DF)));
-}
-
-/**
- * xmlUCSIsCherokee:
- * @code: UCS code point
- *
- * Check whether the character is part of Cherokee UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCherokee(int code) {
-    return(((code >= 0x13A0) && (code <= 0x13FF)));
-}
-
-/**
- * xmlUCSIsCombiningDiacriticalMarks:
- * @code: UCS code point
- *
- * Check whether the character is part of CombiningDiacriticalMarks UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCombiningDiacriticalMarks(int code) {
-    return(((code >= 0x0300) && (code <= 0x036F)));
-}
-
-/**
- * xmlUCSIsCombiningDiacriticalMarksforSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of CombiningDiacriticalMarksforSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCombiningDiacriticalMarksforSymbols(int code) {
-    return(((code >= 0x20D0) && (code <= 0x20FF)));
-}
-
-/**
- * xmlUCSIsCombiningHalfMarks:
- * @code: UCS code point
- *
- * Check whether the character is part of CombiningHalfMarks UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCombiningHalfMarks(int code) {
-    return(((code >= 0xFE20) && (code <= 0xFE2F)));
-}
-
-/**
- * xmlUCSIsCombiningMarksforSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of CombiningMarksforSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCombiningMarksforSymbols(int code) {
-    return(((code >= 0x20D0) && (code <= 0x20FF)));
-}
-
-/**
- * xmlUCSIsControlPictures:
- * @code: UCS code point
- *
- * Check whether the character is part of ControlPictures UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsControlPictures(int code) {
-    return(((code >= 0x2400) && (code <= 0x243F)));
-}
-
-/**
- * xmlUCSIsCurrencySymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of CurrencySymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCurrencySymbols(int code) {
-    return(((code >= 0x20A0) && (code <= 0x20CF)));
-}
-
-/**
- * xmlUCSIsCypriotSyllabary:
- * @code: UCS code point
- *
- * Check whether the character is part of CypriotSyllabary UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCypriotSyllabary(int code) {
-    return(((code >= 0x10800) && (code <= 0x1083F)));
-}
-
-/**
- * xmlUCSIsCyrillic:
- * @code: UCS code point
- *
- * Check whether the character is part of Cyrillic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCyrillic(int code) {
-    return(((code >= 0x0400) && (code <= 0x04FF)));
-}
-
-/**
- * xmlUCSIsCyrillicSupplement:
- * @code: UCS code point
- *
- * Check whether the character is part of CyrillicSupplement UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsCyrillicSupplement(int code) {
-    return(((code >= 0x0500) && (code <= 0x052F)));
-}
-
-/**
- * xmlUCSIsDeseret:
- * @code: UCS code point
- *
- * Check whether the character is part of Deseret UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsDeseret(int code) {
-    return(((code >= 0x10400) && (code <= 0x1044F)));
-}
-
-/**
- * xmlUCSIsDevanagari:
- * @code: UCS code point
- *
- * Check whether the character is part of Devanagari UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsDevanagari(int code) {
-    return(((code >= 0x0900) && (code <= 0x097F)));
-}
-
-/**
- * xmlUCSIsDingbats:
- * @code: UCS code point
- *
- * Check whether the character is part of Dingbats UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsDingbats(int code) {
-    return(((code >= 0x2700) && (code <= 0x27BF)));
-}
-
-/**
- * xmlUCSIsEnclosedAlphanumerics:
- * @code: UCS code point
- *
- * Check whether the character is part of EnclosedAlphanumerics UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsEnclosedAlphanumerics(int code) {
-    return(((code >= 0x2460) && (code <= 0x24FF)));
-}
-
-/**
- * xmlUCSIsEnclosedCJKLettersandMonths:
- * @code: UCS code point
- *
- * Check whether the character is part of EnclosedCJKLettersandMonths UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsEnclosedCJKLettersandMonths(int code) {
-    return(((code >= 0x3200) && (code <= 0x32FF)));
-}
-
-/**
- * xmlUCSIsEthiopic:
- * @code: UCS code point
- *
- * Check whether the character is part of Ethiopic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsEthiopic(int code) {
-    return(((code >= 0x1200) && (code <= 0x137F)));
-}
-
-/**
- * xmlUCSIsGeneralPunctuation:
- * @code: UCS code point
- *
- * Check whether the character is part of GeneralPunctuation UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGeneralPunctuation(int code) {
-    return(((code >= 0x2000) && (code <= 0x206F)));
-}
-
-/**
- * xmlUCSIsGeometricShapes:
- * @code: UCS code point
- *
- * Check whether the character is part of GeometricShapes UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGeometricShapes(int code) {
-    return(((code >= 0x25A0) && (code <= 0x25FF)));
-}
-
-/**
- * xmlUCSIsGeorgian:
- * @code: UCS code point
- *
- * Check whether the character is part of Georgian UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGeorgian(int code) {
-    return(((code >= 0x10A0) && (code <= 0x10FF)));
-}
-
-/**
- * xmlUCSIsGothic:
- * @code: UCS code point
- *
- * Check whether the character is part of Gothic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGothic(int code) {
-    return(((code >= 0x10330) && (code <= 0x1034F)));
-}
-
-/**
- * xmlUCSIsGreek:
- * @code: UCS code point
- *
- * Check whether the character is part of Greek UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGreek(int code) {
-    return(((code >= 0x0370) && (code <= 0x03FF)));
-}
-
-/**
- * xmlUCSIsGreekExtended:
- * @code: UCS code point
- *
- * Check whether the character is part of GreekExtended UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGreekExtended(int code) {
-    return(((code >= 0x1F00) && (code <= 0x1FFF)));
-}
-
-/**
- * xmlUCSIsGreekandCoptic:
- * @code: UCS code point
- *
- * Check whether the character is part of GreekandCoptic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGreekandCoptic(int code) {
-    return(((code >= 0x0370) && (code <= 0x03FF)));
-}
-
-/**
- * xmlUCSIsGujarati:
- * @code: UCS code point
- *
- * Check whether the character is part of Gujarati UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGujarati(int code) {
-    return(((code >= 0x0A80) && (code <= 0x0AFF)));
-}
-
-/**
- * xmlUCSIsGurmukhi:
- * @code: UCS code point
- *
- * Check whether the character is part of Gurmukhi UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsGurmukhi(int code) {
-    return(((code >= 0x0A00) && (code <= 0x0A7F)));
-}
-
-/**
- * xmlUCSIsHalfwidthandFullwidthForms:
- * @code: UCS code point
- *
- * Check whether the character is part of HalfwidthandFullwidthForms UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHalfwidthandFullwidthForms(int code) {
-    return(((code >= 0xFF00) && (code <= 0xFFEF)));
-}
-
-/**
- * xmlUCSIsHangulCompatibilityJamo:
- * @code: UCS code point
- *
- * Check whether the character is part of HangulCompatibilityJamo UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHangulCompatibilityJamo(int code) {
-    return(((code >= 0x3130) && (code <= 0x318F)));
-}
-
-/**
- * xmlUCSIsHangulJamo:
- * @code: UCS code point
- *
- * Check whether the character is part of HangulJamo UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHangulJamo(int code) {
-    return(((code >= 0x1100) && (code <= 0x11FF)));
-}
-
-/**
- * xmlUCSIsHangulSyllables:
- * @code: UCS code point
- *
- * Check whether the character is part of HangulSyllables UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHangulSyllables(int code) {
-    return(((code >= 0xAC00) && (code <= 0xD7AF)));
-}
-
-/**
- * xmlUCSIsHanunoo:
- * @code: UCS code point
- *
- * Check whether the character is part of Hanunoo UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHanunoo(int code) {
-    return(((code >= 0x1720) && (code <= 0x173F)));
-}
-
-/**
- * xmlUCSIsHebrew:
- * @code: UCS code point
- *
- * Check whether the character is part of Hebrew UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHebrew(int code) {
-    return(((code >= 0x0590) && (code <= 0x05FF)));
-}
-
-/**
- * xmlUCSIsHighPrivateUseSurrogates:
- * @code: UCS code point
- *
- * Check whether the character is part of HighPrivateUseSurrogates UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHighPrivateUseSurrogates(int code) {
-    return(((code >= 0xDB80) && (code <= 0xDBFF)));
-}
-
-/**
- * xmlUCSIsHighSurrogates:
- * @code: UCS code point
- *
- * Check whether the character is part of HighSurrogates UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHighSurrogates(int code) {
-    return(((code >= 0xD800) && (code <= 0xDB7F)));
-}
-
-/**
- * xmlUCSIsHiragana:
- * @code: UCS code point
- *
- * Check whether the character is part of Hiragana UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsHiragana(int code) {
-    return(((code >= 0x3040) && (code <= 0x309F)));
-}
-
-/**
- * xmlUCSIsIPAExtensions:
- * @code: UCS code point
- *
- * Check whether the character is part of IPAExtensions UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsIPAExtensions(int code) {
-    return(((code >= 0x0250) && (code <= 0x02AF)));
-}
-
-/**
- * xmlUCSIsIdeographicDescriptionCharacters:
- * @code: UCS code point
- *
- * Check whether the character is part of IdeographicDescriptionCharacters UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsIdeographicDescriptionCharacters(int code) {
-    return(((code >= 0x2FF0) && (code <= 0x2FFF)));
-}
-
-/**
- * xmlUCSIsKanbun:
- * @code: UCS code point
- *
- * Check whether the character is part of Kanbun UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKanbun(int code) {
-    return(((code >= 0x3190) && (code <= 0x319F)));
-}
-
-/**
- * xmlUCSIsKangxiRadicals:
- * @code: UCS code point
- *
- * Check whether the character is part of KangxiRadicals UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKangxiRadicals(int code) {
-    return(((code >= 0x2F00) && (code <= 0x2FDF)));
-}
-
-/**
- * xmlUCSIsKannada:
- * @code: UCS code point
- *
- * Check whether the character is part of Kannada UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKannada(int code) {
-    return(((code >= 0x0C80) && (code <= 0x0CFF)));
-}
-
-/**
- * xmlUCSIsKatakana:
- * @code: UCS code point
- *
- * Check whether the character is part of Katakana UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKatakana(int code) {
-    return(((code >= 0x30A0) && (code <= 0x30FF)));
-}
-
-/**
- * xmlUCSIsKatakanaPhoneticExtensions:
- * @code: UCS code point
- *
- * Check whether the character is part of KatakanaPhoneticExtensions UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKatakanaPhoneticExtensions(int code) {
-    return(((code >= 0x31F0) && (code <= 0x31FF)));
-}
-
-/**
- * xmlUCSIsKhmer:
- * @code: UCS code point
- *
- * Check whether the character is part of Khmer UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKhmer(int code) {
-    return(((code >= 0x1780) && (code <= 0x17FF)));
-}
-
-/**
- * xmlUCSIsKhmerSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of KhmerSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsKhmerSymbols(int code) {
-    return(((code >= 0x19E0) && (code <= 0x19FF)));
-}
-
-/**
- * xmlUCSIsLao:
- * @code: UCS code point
- *
- * Check whether the character is part of Lao UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLao(int code) {
-    return(((code >= 0x0E80) && (code <= 0x0EFF)));
-}
-
-/**
- * xmlUCSIsLatin1Supplement:
- * @code: UCS code point
- *
- * Check whether the character is part of Latin-1Supplement UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLatin1Supplement(int code) {
-    return(((code >= 0x0080) && (code <= 0x00FF)));
-}
-
-/**
- * xmlUCSIsLatinExtendedA:
- * @code: UCS code point
- *
- * Check whether the character is part of LatinExtended-A UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLatinExtendedA(int code) {
-    return(((code >= 0x0100) && (code <= 0x017F)));
-}
-
-/**
- * xmlUCSIsLatinExtendedB:
- * @code: UCS code point
- *
- * Check whether the character is part of LatinExtended-B UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLatinExtendedB(int code) {
-    return(((code >= 0x0180) && (code <= 0x024F)));
-}
-
-/**
- * xmlUCSIsLatinExtendedAdditional:
- * @code: UCS code point
- *
- * Check whether the character is part of LatinExtendedAdditional UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLatinExtendedAdditional(int code) {
-    return(((code >= 0x1E00) && (code <= 0x1EFF)));
-}
-
-/**
- * xmlUCSIsLetterlikeSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of LetterlikeSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLetterlikeSymbols(int code) {
-    return(((code >= 0x2100) && (code <= 0x214F)));
-}
-
-/**
- * xmlUCSIsLimbu:
- * @code: UCS code point
- *
- * Check whether the character is part of Limbu UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLimbu(int code) {
-    return(((code >= 0x1900) && (code <= 0x194F)));
-}
-
-/**
- * xmlUCSIsLinearBIdeograms:
- * @code: UCS code point
- *
- * Check whether the character is part of LinearBIdeograms UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLinearBIdeograms(int code) {
-    return(((code >= 0x10080) && (code <= 0x100FF)));
-}
-
-/**
- * xmlUCSIsLinearBSyllabary:
- * @code: UCS code point
- *
- * Check whether the character is part of LinearBSyllabary UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLinearBSyllabary(int code) {
-    return(((code >= 0x10000) && (code <= 0x1007F)));
-}
-
-/**
- * xmlUCSIsLowSurrogates:
- * @code: UCS code point
- *
- * Check whether the character is part of LowSurrogates UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsLowSurrogates(int code) {
-    return(((code >= 0xDC00) && (code <= 0xDFFF)));
-}
-
-/**
- * xmlUCSIsMalayalam:
- * @code: UCS code point
- *
- * Check whether the character is part of Malayalam UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMalayalam(int code) {
-    return(((code >= 0x0D00) && (code <= 0x0D7F)));
-}
-
-/**
- * xmlUCSIsMathematicalAlphanumericSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of MathematicalAlphanumericSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMathematicalAlphanumericSymbols(int code) {
-    return(((code >= 0x1D400) && (code <= 0x1D7FF)));
-}
-
-/**
- * xmlUCSIsMathematicalOperators:
- * @code: UCS code point
- *
- * Check whether the character is part of MathematicalOperators UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMathematicalOperators(int code) {
-    return(((code >= 0x2200) && (code <= 0x22FF)));
-}
-
-/**
- * xmlUCSIsMiscellaneousMathematicalSymbolsA:
- * @code: UCS code point
- *
- * Check whether the character is part of MiscellaneousMathematicalSymbols-A UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMiscellaneousMathematicalSymbolsA(int code) {
-    return(((code >= 0x27C0) && (code <= 0x27EF)));
-}
-
-/**
- * xmlUCSIsMiscellaneousMathematicalSymbolsB:
- * @code: UCS code point
- *
- * Check whether the character is part of MiscellaneousMathematicalSymbols-B UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMiscellaneousMathematicalSymbolsB(int code) {
-    return(((code >= 0x2980) && (code <= 0x29FF)));
-}
-
-/**
- * xmlUCSIsMiscellaneousSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of MiscellaneousSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMiscellaneousSymbols(int code) {
-    return(((code >= 0x2600) && (code <= 0x26FF)));
-}
-
-/**
- * xmlUCSIsMiscellaneousSymbolsandArrows:
- * @code: UCS code point
- *
- * Check whether the character is part of MiscellaneousSymbolsandArrows UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMiscellaneousSymbolsandArrows(int code) {
-    return(((code >= 0x2B00) && (code <= 0x2BFF)));
-}
-
-/**
- * xmlUCSIsMiscellaneousTechnical:
- * @code: UCS code point
- *
- * Check whether the character is part of MiscellaneousTechnical UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMiscellaneousTechnical(int code) {
-    return(((code >= 0x2300) && (code <= 0x23FF)));
-}
-
-/**
- * xmlUCSIsMongolian:
- * @code: UCS code point
- *
- * Check whether the character is part of Mongolian UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMongolian(int code) {
-    return(((code >= 0x1800) && (code <= 0x18AF)));
-}
-
-/**
- * xmlUCSIsMusicalSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of MusicalSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMusicalSymbols(int code) {
-    return(((code >= 0x1D100) && (code <= 0x1D1FF)));
-}
-
-/**
- * xmlUCSIsMyanmar:
- * @code: UCS code point
- *
- * Check whether the character is part of Myanmar UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsMyanmar(int code) {
-    return(((code >= 0x1000) && (code <= 0x109F)));
-}
-
-/**
- * xmlUCSIsNumberForms:
- * @code: UCS code point
- *
- * Check whether the character is part of NumberForms UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsNumberForms(int code) {
-    return(((code >= 0x2150) && (code <= 0x218F)));
-}
-
-/**
- * xmlUCSIsOgham:
- * @code: UCS code point
- *
- * Check whether the character is part of Ogham UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsOgham(int code) {
-    return(((code >= 0x1680) && (code <= 0x169F)));
-}
-
-/**
- * xmlUCSIsOldItalic:
- * @code: UCS code point
- *
- * Check whether the character is part of OldItalic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsOldItalic(int code) {
-    return(((code >= 0x10300) && (code <= 0x1032F)));
-}
-
-/**
- * xmlUCSIsOpticalCharacterRecognition:
- * @code: UCS code point
- *
- * Check whether the character is part of OpticalCharacterRecognition UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsOpticalCharacterRecognition(int code) {
-    return(((code >= 0x2440) && (code <= 0x245F)));
-}
-
-/**
- * xmlUCSIsOriya:
- * @code: UCS code point
- *
- * Check whether the character is part of Oriya UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsOriya(int code) {
-    return(((code >= 0x0B00) && (code <= 0x0B7F)));
-}
-
-/**
- * xmlUCSIsOsmanya:
- * @code: UCS code point
- *
- * Check whether the character is part of Osmanya UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsOsmanya(int code) {
-    return(((code >= 0x10480) && (code <= 0x104AF)));
-}
-
-/**
- * xmlUCSIsPhoneticExtensions:
- * @code: UCS code point
- *
- * Check whether the character is part of PhoneticExtensions UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsPhoneticExtensions(int code) {
-    return(((code >= 0x1D00) && (code <= 0x1D7F)));
-}
-
-/**
- * xmlUCSIsPrivateUse:
- * @code: UCS code point
- *
- * Check whether the character is part of PrivateUse UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsPrivateUse(int code) {
-    return(((code >= 0xE000) && (code <= 0xF8FF)) ||
-           ((code >= 0xF0000) && (code <= 0xFFFFF)) ||
-           ((code >= 0x100000) && (code <= 0x10FFFF)));
-}
-
-/**
- * xmlUCSIsPrivateUseArea:
- * @code: UCS code point
- *
- * Check whether the character is part of PrivateUseArea UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsPrivateUseArea(int code) {
-    return(((code >= 0xE000) && (code <= 0xF8FF)));
-}
-
-/**
- * xmlUCSIsRunic:
- * @code: UCS code point
- *
- * Check whether the character is part of Runic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsRunic(int code) {
-    return(((code >= 0x16A0) && (code <= 0x16FF)));
-}
-
-/**
- * xmlUCSIsShavian:
- * @code: UCS code point
- *
- * Check whether the character is part of Shavian UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsShavian(int code) {
-    return(((code >= 0x10450) && (code <= 0x1047F)));
-}
-
-/**
- * xmlUCSIsSinhala:
- * @code: UCS code point
- *
- * Check whether the character is part of Sinhala UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSinhala(int code) {
-    return(((code >= 0x0D80) && (code <= 0x0DFF)));
-}
-
-/**
- * xmlUCSIsSmallFormVariants:
- * @code: UCS code point
- *
- * Check whether the character is part of SmallFormVariants UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSmallFormVariants(int code) {
-    return(((code >= 0xFE50) && (code <= 0xFE6F)));
-}
-
-/**
- * xmlUCSIsSpacingModifierLetters:
- * @code: UCS code point
- *
- * Check whether the character is part of SpacingModifierLetters UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSpacingModifierLetters(int code) {
-    return(((code >= 0x02B0) && (code <= 0x02FF)));
-}
-
-/**
- * xmlUCSIsSpecials:
- * @code: UCS code point
- *
- * Check whether the character is part of Specials UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSpecials(int code) {
-    return(((code >= 0xFFF0) && (code <= 0xFFFF)));
-}
-
-/**
- * xmlUCSIsSuperscriptsandSubscripts:
- * @code: UCS code point
- *
- * Check whether the character is part of SuperscriptsandSubscripts UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSuperscriptsandSubscripts(int code) {
-    return(((code >= 0x2070) && (code <= 0x209F)));
-}
-
-/**
- * xmlUCSIsSupplementalArrowsA:
- * @code: UCS code point
- *
- * Check whether the character is part of SupplementalArrows-A UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSupplementalArrowsA(int code) {
-    return(((code >= 0x27F0) && (code <= 0x27FF)));
-}
-
-/**
- * xmlUCSIsSupplementalArrowsB:
- * @code: UCS code point
- *
- * Check whether the character is part of SupplementalArrows-B UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSupplementalArrowsB(int code) {
-    return(((code >= 0x2900) && (code <= 0x297F)));
-}
-
-/**
- * xmlUCSIsSupplementalMathematicalOperators:
- * @code: UCS code point
- *
- * Check whether the character is part of SupplementalMathematicalOperators UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSupplementalMathematicalOperators(int code) {
-    return(((code >= 0x2A00) && (code <= 0x2AFF)));
-}
-
-/**
- * xmlUCSIsSupplementaryPrivateUseAreaA:
- * @code: UCS code point
- *
- * Check whether the character is part of SupplementaryPrivateUseArea-A UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSupplementaryPrivateUseAreaA(int code) {
-    return(((code >= 0xF0000) && (code <= 0xFFFFF)));
-}
-
-/**
- * xmlUCSIsSupplementaryPrivateUseAreaB:
- * @code: UCS code point
- *
- * Check whether the character is part of SupplementaryPrivateUseArea-B UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSupplementaryPrivateUseAreaB(int code) {
-    return(((code >= 0x100000) && (code <= 0x10FFFF)));
-}
-
-/**
- * xmlUCSIsSyriac:
- * @code: UCS code point
- *
- * Check whether the character is part of Syriac UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsSyriac(int code) {
-    return(((code >= 0x0700) && (code <= 0x074F)));
-}
-
-/**
- * xmlUCSIsTagalog:
- * @code: UCS code point
- *
- * Check whether the character is part of Tagalog UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTagalog(int code) {
-    return(((code >= 0x1700) && (code <= 0x171F)));
-}
-
-/**
- * xmlUCSIsTagbanwa:
- * @code: UCS code point
- *
- * Check whether the character is part of Tagbanwa UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTagbanwa(int code) {
-    return(((code >= 0x1760) && (code <= 0x177F)));
-}
-
-/**
- * xmlUCSIsTags:
- * @code: UCS code point
- *
- * Check whether the character is part of Tags UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTags(int code) {
-    return(((code >= 0xE0000) && (code <= 0xE007F)));
-}
-
-/**
- * xmlUCSIsTaiLe:
- * @code: UCS code point
- *
- * Check whether the character is part of TaiLe UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTaiLe(int code) {
-    return(((code >= 0x1950) && (code <= 0x197F)));
-}
-
-/**
- * xmlUCSIsTaiXuanJingSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of TaiXuanJingSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTaiXuanJingSymbols(int code) {
-    return(((code >= 0x1D300) && (code <= 0x1D35F)));
-}
-
-/**
- * xmlUCSIsTamil:
- * @code: UCS code point
- *
- * Check whether the character is part of Tamil UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTamil(int code) {
-    return(((code >= 0x0B80) && (code <= 0x0BFF)));
-}
-
-/**
- * xmlUCSIsTelugu:
- * @code: UCS code point
- *
- * Check whether the character is part of Telugu UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTelugu(int code) {
-    return(((code >= 0x0C00) && (code <= 0x0C7F)));
-}
-
-/**
- * xmlUCSIsThaana:
- * @code: UCS code point
- *
- * Check whether the character is part of Thaana UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsThaana(int code) {
-    return(((code >= 0x0780) && (code <= 0x07BF)));
-}
-
-/**
- * xmlUCSIsThai:
- * @code: UCS code point
- *
- * Check whether the character is part of Thai UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsThai(int code) {
-    return(((code >= 0x0E00) && (code <= 0x0E7F)));
-}
-
-/**
- * xmlUCSIsTibetan:
- * @code: UCS code point
- *
- * Check whether the character is part of Tibetan UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsTibetan(int code) {
-    return(((code >= 0x0F00) && (code <= 0x0FFF)));
-}
-
-/**
- * xmlUCSIsUgaritic:
- * @code: UCS code point
- *
- * Check whether the character is part of Ugaritic UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsUgaritic(int code) {
-    return(((code >= 0x10380) && (code <= 0x1039F)));
-}
-
-/**
- * xmlUCSIsUnifiedCanadianAboriginalSyllabics:
- * @code: UCS code point
- *
- * Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsUnifiedCanadianAboriginalSyllabics(int code) {
-    return(((code >= 0x1400) && (code <= 0x167F)));
-}
-
-/**
- * xmlUCSIsVariationSelectors:
- * @code: UCS code point
- *
- * Check whether the character is part of VariationSelectors UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsVariationSelectors(int code) {
-    return(((code >= 0xFE00) && (code <= 0xFE0F)));
-}
-
-/**
- * xmlUCSIsVariationSelectorsSupplement:
- * @code: UCS code point
- *
- * Check whether the character is part of VariationSelectorsSupplement UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsVariationSelectorsSupplement(int code) {
-    return(((code >= 0xE0100) && (code <= 0xE01EF)));
-}
-
-/**
- * xmlUCSIsYiRadicals:
- * @code: UCS code point
- *
- * Check whether the character is part of YiRadicals UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsYiRadicals(int code) {
-    return(((code >= 0xA490) && (code <= 0xA4CF)));
-}
-
-/**
- * xmlUCSIsYiSyllables:
- * @code: UCS code point
- *
- * Check whether the character is part of YiSyllables UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsYiSyllables(int code) {
-    return(((code >= 0xA000) && (code <= 0xA48F)));
-}
-
-/**
- * xmlUCSIsYijingHexagramSymbols:
- * @code: UCS code point
- *
- * Check whether the character is part of YijingHexagramSymbols UCS Block
- *
- * Returns 1 if true 0 otherwise
- */
-static int
-xmlUCSIsYijingHexagramSymbols(int code) {
-    return(((code >= 0x4DC0) && (code <= 0x4DFF)));
-}
-
-/**
- * xmlUCSIsCatC:
- * @code: UCS code point
- *
- * Check whether the character is part of C UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatC(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlCG));
-}
-
-/**
- * xmlUCSIsCatCc:
- * @code: UCS code point
- *
- * Check whether the character is part of Cc UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatCc(int code) {
-    return(((code >= 0x0) && (code <= 0x1f)) ||
-           ((code >= 0x7f) && (code <= 0x9f)));
-}
-
-/**
- * xmlUCSIsCatCf:
- * @code: UCS code point
- *
- * Check whether the character is part of Cf UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatCf(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlCfG));
-}
-
-/**
- * xmlUCSIsCatCo:
- * @code: UCS code point
- *
- * Check whether the character is part of Co UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatCo(int code) {
-    return((code == 0xe000) ||
-           (code == 0xf8ff) ||
-           (code == 0xf0000) ||
-           (code == 0xffffd) ||
-           (code == 0x100000) ||
-           (code == 0x10fffd));
-}
-
-/**
- * xmlUCSIsCatCs:
- * @code: UCS code point
- *
- * Check whether the character is part of Cs UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatCs(int code) {
-    return((code == 0xd800) ||
-           ((code >= 0xdb7f) && (code <= 0xdb80)) ||
-           ((code >= 0xdbff) && (code <= 0xdc00)) ||
-           (code == 0xdfff));
-}
-
-/**
- * xmlUCSIsCatL:
- * @code: UCS code point
- *
- * Check whether the character is part of L UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatL(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLG));
-}
-
-/**
- * xmlUCSIsCatLl:
- * @code: UCS code point
- *
- * Check whether the character is part of Ll UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatLl(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLlG));
-}
-
-/**
- * xmlUCSIsCatLm:
- * @code: UCS code point
- *
- * Check whether the character is part of Lm UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatLm(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLmG));
-}
-
-/**
- * xmlUCSIsCatLo:
- * @code: UCS code point
- *
- * Check whether the character is part of Lo UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatLo(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLoG));
-}
-
-/**
- * xmlUCSIsCatLt:
- * @code: UCS code point
- *
- * Check whether the character is part of Lt UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatLt(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLtG));
-}
-
-/**
- * xmlUCSIsCatLu:
- * @code: UCS code point
- *
- * Check whether the character is part of Lu UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatLu(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlLuG));
-}
-
-/**
- * xmlUCSIsCatM:
- * @code: UCS code point
- *
- * Check whether the character is part of M UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatM(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlMG));
-}
-
-/**
- * xmlUCSIsCatMc:
- * @code: UCS code point
- *
- * Check whether the character is part of Mc UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatMc(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlMcG));
-}
-
-/**
- * xmlUCSIsCatMe:
- * @code: UCS code point
- *
- * Check whether the character is part of Me UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatMe(int code) {
-    return(((code >= 0x488) && (code <= 0x489)) ||
-           (code == 0x6de) ||
-           ((code >= 0x20dd) && (code <= 0x20e0)) ||
-           ((code >= 0x20e2) && (code <= 0x20e4)));
-}
-
-/**
- * xmlUCSIsCatMn:
- * @code: UCS code point
- *
- * Check whether the character is part of Mn UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatMn(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlMnG));
-}
-
-/**
- * xmlUCSIsCatN:
- * @code: UCS code point
- *
- * Check whether the character is part of N UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatN(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlNG));
-}
-
-/**
- * xmlUCSIsCatNd:
- * @code: UCS code point
- *
- * Check whether the character is part of Nd UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatNd(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlNdG));
-}
-
-/**
- * xmlUCSIsCatNl:
- * @code: UCS code point
- *
- * Check whether the character is part of Nl UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatNl(int code) {
-    return(((code >= 0x16ee) && (code <= 0x16f0)) ||
-           ((code >= 0x2160) && (code <= 0x2183)) ||
-           (code == 0x3007) ||
-           ((code >= 0x3021) && (code <= 0x3029)) ||
-           ((code >= 0x3038) && (code <= 0x303a)) ||
-           (code == 0x1034a));
-}
-
-/**
- * xmlUCSIsCatNo:
- * @code: UCS code point
- *
- * Check whether the character is part of No UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatNo(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlNoG));
-}
-
-/**
- * xmlUCSIsCatP:
- * @code: UCS code point
- *
- * Check whether the character is part of P UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatP(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlPG));
-}
-
-/**
- * xmlUCSIsCatPc:
- * @code: UCS code point
- *
- * Check whether the character is part of Pc UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPc(int code) {
-    return((code == 0x5f) ||
-           ((code >= 0x203f) && (code <= 0x2040)) ||
-           (code == 0x2054) ||
-           (code == 0x30fb) ||
-           ((code >= 0xfe33) && (code <= 0xfe34)) ||
-           ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
-           (code == 0xff3f) ||
-           (code == 0xff65));
-}
-
-/**
- * xmlUCSIsCatPd:
- * @code: UCS code point
- *
- * Check whether the character is part of Pd UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPd(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlPdG));
-}
-
-/**
- * xmlUCSIsCatPe:
- * @code: UCS code point
- *
- * Check whether the character is part of Pe UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPe(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlPeG));
-}
-
-/**
- * xmlUCSIsCatPf:
- * @code: UCS code point
- *
- * Check whether the character is part of Pf UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPf(int code) {
-    return((code == 0xbb) ||
-           (code == 0x2019) ||
-           (code == 0x201d) ||
-           (code == 0x203a));
-}
-
-/**
- * xmlUCSIsCatPi:
- * @code: UCS code point
- *
- * Check whether the character is part of Pi UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPi(int code) {
-    return((code == 0xab) ||
-           (code == 0x2018) ||
-           ((code >= 0x201b) && (code <= 0x201c)) ||
-           (code == 0x201f) ||
-           (code == 0x2039));
-}
-
-/**
- * xmlUCSIsCatPo:
- * @code: UCS code point
- *
- * Check whether the character is part of Po UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPo(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlPoG));
-}
-
-/**
- * xmlUCSIsCatPs:
- * @code: UCS code point
- *
- * Check whether the character is part of Ps UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatPs(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlPsG));
-}
-
-/**
- * xmlUCSIsCatS:
- * @code: UCS code point
- *
- * Check whether the character is part of S UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatS(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlSG));
-}
-
-/**
- * xmlUCSIsCatSc:
- * @code: UCS code point
- *
- * Check whether the character is part of Sc UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatSc(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlScG));
-}
-
-/**
- * xmlUCSIsCatSk:
- * @code: UCS code point
- *
- * Check whether the character is part of Sk UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatSk(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlSkG));
-}
-
-/**
- * xmlUCSIsCatSm:
- * @code: UCS code point
- *
- * Check whether the character is part of Sm UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatSm(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlSmG));
-}
-
-/**
- * xmlUCSIsCatSo:
- * @code: UCS code point
- *
- * Check whether the character is part of So UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatSo(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlSoG));
-}
-
-/**
- * xmlUCSIsCatZ:
- * @code: UCS code point
- *
- * Check whether the character is part of Z UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatZ(int code) {
-    return(xmlCharInRange((unsigned int)code, &xmlZG));
-}
-
-/**
- * xmlUCSIsCatZl:
- * @code: UCS code point
- *
- * Check whether the character is part of Zl UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatZl(int code) {
-    return((code == 0x2028));
-}
-
-/**
- * xmlUCSIsCatZp:
- * @code: UCS code point
- *
- * Check whether the character is part of Zp UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatZp(int code) {
-    return((code == 0x2029));
-}
-
-/**
- * xmlUCSIsCatZs:
- * @code: UCS code point
- *
- * Check whether the character is part of Zs UCS Category
- *
- * Returns 1 if true 0 otherwise
- */
-int
-xmlUCSIsCatZs(int code) {
-    return((code == 0x20) ||
-           (code == 0xa0) ||
-           (code == 0x1680) ||
-           (code == 0x180e) ||
-           ((code >= 0x2000) && (code <= 0x200a)) ||
-           (code == 0x202f) ||
-           (code == 0x205f) ||
-           (code == 0x3000));
-}
-
-static const xmlUnicodeRange xmlUnicodeBlocks[] = {  {"AegeanNumbers", xmlUCSIsAegeanNumbers},
-  {"AlphabeticPresentationForms", xmlUCSIsAlphabeticPresentationForms},
-  {"Arabic", xmlUCSIsArabic},
-  {"ArabicPresentationForms-A", xmlUCSIsArabicPresentationFormsA},
-  {"ArabicPresentationForms-B", xmlUCSIsArabicPresentationFormsB},
-  {"Armenian", xmlUCSIsArmenian},
-  {"Arrows", xmlUCSIsArrows},
-  {"BasicLatin", xmlUCSIsBasicLatin},
-  {"Bengali", xmlUCSIsBengali},
-  {"BlockElements", xmlUCSIsBlockElements},
-  {"Bopomofo", xmlUCSIsBopomofo},
-  {"BopomofoExtended", xmlUCSIsBopomofoExtended},
-  {"BoxDrawing", xmlUCSIsBoxDrawing},
-  {"BraillePatterns", xmlUCSIsBraillePatterns},
-  {"Buhid", xmlUCSIsBuhid},
-  {"ByzantineMusicalSymbols", xmlUCSIsByzantineMusicalSymbols},
-  {"CJKCompatibility", xmlUCSIsCJKCompatibility},
-  {"CJKCompatibilityForms", xmlUCSIsCJKCompatibilityForms},
-  {"CJKCompatibilityIdeographs", xmlUCSIsCJKCompatibilityIdeographs},
-  {"CJKCompatibilityIdeographsSupplement", xmlUCSIsCJKCompatibilityIdeographsSupplement},
-  {"CJKRadicalsSupplement", xmlUCSIsCJKRadicalsSupplement},
-  {"CJKSymbolsandPunctuation", xmlUCSIsCJKSymbolsandPunctuation},
-  {"CJKUnifiedIdeographs", xmlUCSIsCJKUnifiedIdeographs},
-  {"CJKUnifiedIdeographsExtensionA", xmlUCSIsCJKUnifiedIdeographsExtensionA},
-  {"CJKUnifiedIdeographsExtensionB", xmlUCSIsCJKUnifiedIdeographsExtensionB},
-  {"Cherokee", xmlUCSIsCherokee},
-  {"CombiningDiacriticalMarks", xmlUCSIsCombiningDiacriticalMarks},
-  {"CombiningDiacriticalMarksforSymbols", xmlUCSIsCombiningDiacriticalMarksforSymbols},
-  {"CombiningHalfMarks", xmlUCSIsCombiningHalfMarks},
-  {"CombiningMarksforSymbols", xmlUCSIsCombiningMarksforSymbols},
-  {"ControlPictures", xmlUCSIsControlPictures},
-  {"CurrencySymbols", xmlUCSIsCurrencySymbols},
-  {"CypriotSyllabary", xmlUCSIsCypriotSyllabary},
-  {"Cyrillic", xmlUCSIsCyrillic},
-  {"CyrillicSupplement", xmlUCSIsCyrillicSupplement},
-  {"Deseret", xmlUCSIsDeseret},
-  {"Devanagari", xmlUCSIsDevanagari},
-  {"Dingbats", xmlUCSIsDingbats},
-  {"EnclosedAlphanumerics", xmlUCSIsEnclosedAlphanumerics},
-  {"EnclosedCJKLettersandMonths", xmlUCSIsEnclosedCJKLettersandMonths},
-  {"Ethiopic", xmlUCSIsEthiopic},
-  {"GeneralPunctuation", xmlUCSIsGeneralPunctuation},
-  {"GeometricShapes", xmlUCSIsGeometricShapes},
-  {"Georgian", xmlUCSIsGeorgian},
-  {"Gothic", xmlUCSIsGothic},
-  {"Greek", xmlUCSIsGreek},
-  {"GreekExtended", xmlUCSIsGreekExtended},
-  {"GreekandCoptic", xmlUCSIsGreekandCoptic},
-  {"Gujarati", xmlUCSIsGujarati},
-  {"Gurmukhi", xmlUCSIsGurmukhi},
-  {"HalfwidthandFullwidthForms", xmlUCSIsHalfwidthandFullwidthForms},
-  {"HangulCompatibilityJamo", xmlUCSIsHangulCompatibilityJamo},
-  {"HangulJamo", xmlUCSIsHangulJamo},
-  {"HangulSyllables", xmlUCSIsHangulSyllables},
-  {"Hanunoo", xmlUCSIsHanunoo},
-  {"Hebrew", xmlUCSIsHebrew},
-  {"HighPrivateUseSurrogates", xmlUCSIsHighPrivateUseSurrogates},
-  {"HighSurrogates", xmlUCSIsHighSurrogates},
-  {"Hiragana", xmlUCSIsHiragana},
-  {"IPAExtensions", xmlUCSIsIPAExtensions},
-  {"IdeographicDescriptionCharacters", xmlUCSIsIdeographicDescriptionCharacters},
-  {"Kanbun", xmlUCSIsKanbun},
-  {"KangxiRadicals", xmlUCSIsKangxiRadicals},
-  {"Kannada", xmlUCSIsKannada},
-  {"Katakana", xmlUCSIsKatakana},
-  {"KatakanaPhoneticExtensions", xmlUCSIsKatakanaPhoneticExtensions},
-  {"Khmer", xmlUCSIsKhmer},
-  {"KhmerSymbols", xmlUCSIsKhmerSymbols},
-  {"Lao", xmlUCSIsLao},
-  {"Latin-1Supplement", xmlUCSIsLatin1Supplement},
-  {"LatinExtended-A", xmlUCSIsLatinExtendedA},
-  {"LatinExtended-B", xmlUCSIsLatinExtendedB},
-  {"LatinExtendedAdditional", xmlUCSIsLatinExtendedAdditional},
-  {"LetterlikeSymbols", xmlUCSIsLetterlikeSymbols},
-  {"Limbu", xmlUCSIsLimbu},
-  {"LinearBIdeograms", xmlUCSIsLinearBIdeograms},
-  {"LinearBSyllabary", xmlUCSIsLinearBSyllabary},
-  {"LowSurrogates", xmlUCSIsLowSurrogates},
-  {"Malayalam", xmlUCSIsMalayalam},
-  {"MathematicalAlphanumericSymbols", xmlUCSIsMathematicalAlphanumericSymbols},
-  {"MathematicalOperators", xmlUCSIsMathematicalOperators},
-  {"MiscellaneousMathematicalSymbols-A", xmlUCSIsMiscellaneousMathematicalSymbolsA},
-  {"MiscellaneousMathematicalSymbols-B", xmlUCSIsMiscellaneousMathematicalSymbolsB},
-  {"MiscellaneousSymbols", xmlUCSIsMiscellaneousSymbols},
-  {"MiscellaneousSymbolsandArrows", xmlUCSIsMiscellaneousSymbolsandArrows},
-  {"MiscellaneousTechnical", xmlUCSIsMiscellaneousTechnical},
-  {"Mongolian", xmlUCSIsMongolian},
-  {"MusicalSymbols", xmlUCSIsMusicalSymbols},
-  {"Myanmar", xmlUCSIsMyanmar},
-  {"NumberForms", xmlUCSIsNumberForms},
-  {"Ogham", xmlUCSIsOgham},
-  {"OldItalic", xmlUCSIsOldItalic},
-  {"OpticalCharacterRecognition", xmlUCSIsOpticalCharacterRecognition},
-  {"Oriya", xmlUCSIsOriya},
-  {"Osmanya", xmlUCSIsOsmanya},
-  {"PhoneticExtensions", xmlUCSIsPhoneticExtensions},
-  {"PrivateUse", xmlUCSIsPrivateUse},
-  {"PrivateUseArea", xmlUCSIsPrivateUseArea},
-  {"Runic", xmlUCSIsRunic},
-  {"Shavian", xmlUCSIsShavian},
-  {"Sinhala", xmlUCSIsSinhala},
-  {"SmallFormVariants", xmlUCSIsSmallFormVariants},
-  {"SpacingModifierLetters", xmlUCSIsSpacingModifierLetters},
-  {"Specials", xmlUCSIsSpecials},
-  {"SuperscriptsandSubscripts", xmlUCSIsSuperscriptsandSubscripts},
-  {"SupplementalArrows-A", xmlUCSIsSupplementalArrowsA},
-  {"SupplementalArrows-B", xmlUCSIsSupplementalArrowsB},
-  {"SupplementalMathematicalOperators", xmlUCSIsSupplementalMathematicalOperators},
-  {"SupplementaryPrivateUseArea-A", xmlUCSIsSupplementaryPrivateUseAreaA},
-  {"SupplementaryPrivateUseArea-B", xmlUCSIsSupplementaryPrivateUseAreaB},
-  {"Syriac", xmlUCSIsSyriac},
-  {"Tagalog", xmlUCSIsTagalog},
-  {"Tagbanwa", xmlUCSIsTagbanwa},
-  {"Tags", xmlUCSIsTags},
-  {"TaiLe", xmlUCSIsTaiLe},
-  {"TaiXuanJingSymbols", xmlUCSIsTaiXuanJingSymbols},
-  {"Tamil", xmlUCSIsTamil},
-  {"Telugu", xmlUCSIsTelugu},
-  {"Thaana", xmlUCSIsThaana},
-  {"Thai", xmlUCSIsThai},
-  {"Tibetan", xmlUCSIsTibetan},
-  {"Ugaritic", xmlUCSIsUgaritic},
-  {"UnifiedCanadianAboriginalSyllabics", xmlUCSIsUnifiedCanadianAboriginalSyllabics},
-  {"VariationSelectors", xmlUCSIsVariationSelectors},
-  {"VariationSelectorsSupplement", xmlUCSIsVariationSelectorsSupplement},
-  {"YiRadicals", xmlUCSIsYiRadicals},
-  {"YiSyllables", xmlUCSIsYiSyllables},
-  {"YijingHexagramSymbols", xmlUCSIsYijingHexagramSymbols}};
-
-static const xmlUnicodeRange xmlUnicodeCats[] = {
-  {"C", xmlUCSIsCatC},
-  {"Cc", xmlUCSIsCatCc},
-  {"Cf", xmlUCSIsCatCf},
-  {"Co", xmlUCSIsCatCo},
-  {"Cs", xmlUCSIsCatCs},
-  {"L", xmlUCSIsCatL},
-  {"Ll", xmlUCSIsCatLl},
-  {"Lm", xmlUCSIsCatLm},
-  {"Lo", xmlUCSIsCatLo},
-  {"Lt", xmlUCSIsCatLt},
-  {"Lu", xmlUCSIsCatLu},
-  {"M", xmlUCSIsCatM},
-  {"Mc", xmlUCSIsCatMc},
-  {"Me", xmlUCSIsCatMe},
-  {"Mn", xmlUCSIsCatMn},
-  {"N", xmlUCSIsCatN},
-  {"Nd", xmlUCSIsCatNd},
-  {"Nl", xmlUCSIsCatNl},
-  {"No", xmlUCSIsCatNo},
-  {"P", xmlUCSIsCatP},
-  {"Pc", xmlUCSIsCatPc},
-  {"Pd", xmlUCSIsCatPd},
-  {"Pe", xmlUCSIsCatPe},
-  {"Pf", xmlUCSIsCatPf},
-  {"Pi", xmlUCSIsCatPi},
-  {"Po", xmlUCSIsCatPo},
-  {"Ps", xmlUCSIsCatPs},
-  {"S", xmlUCSIsCatS},
-  {"Sc", xmlUCSIsCatSc},
-  {"Sk", xmlUCSIsCatSk},
-  {"Sm", xmlUCSIsCatSm},
-  {"So", xmlUCSIsCatSo},
-  {"Z", xmlUCSIsCatZ},
-  {"Zl", xmlUCSIsCatZl},
-  {"Zp", xmlUCSIsCatZp},
-  {"Zs", xmlUCSIsCatZs}};
-
-static const xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, 128};
-static const xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36};
-
-/**
- * xmlUCSIsBlock:
- * @code: UCS code point
- * @block: UCS block name
- *
- * Check whether the character is part of the UCS Block
- *
- * Returns 1 if true, 0 if false and -1 on unknown block
- */
-int
-xmlUCSIsBlock(int code, const char *block) {
-    xmlIntFunc *func;
-
-    func = xmlUnicodeLookup(&xmlUnicodeBlockTbl, block);
-    if (func == NULL)
-	return (-1);
-    return (func(code));
-}
-
-/**
- * xmlUCSIsCat:
- * @code: UCS code point
- * @cat: UCS Category name
- *
- * Check whether the character is part of the UCS Category
- *
- * Returns 1 if true, 0 if false and -1 on unknown category
- */
-int
-xmlUCSIsCat(int code, const char *cat) {
-    xmlIntFunc *func;
-
-    func = xmlUnicodeLookup(&xmlUnicodeCatTbl, cat);
-    if (func == NULL)
-	return (-1);
-    return (func(code));
-}
-
-#endif /* LIBXML_REGEXP_ENABLED */
diff -pruN 2.14.6+dfsg-0.1/xmlwriter.c 2.15.0+dfsg-0.3/xmlwriter.c
--- 2.14.6+dfsg-0.1/xmlwriter.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xmlwriter.c	2025-09-15 11:55:59.000000000 +0000
@@ -5,7 +5,7 @@
  * For license and disclaimer see the license and disclaimer of
  * libxml2.
  *
- * alfred@mickautsch.de
+ * Author: Alfred Mickautsch
  */
 
 #define IN_LIBXML
@@ -112,12 +112,11 @@ static int
                                        xmlTextWriterStackEntry * p);
 
 /**
- * xmlWriterErrMsg:
- * @ctxt:  a writer context
- * @error:  the error number
- * @msg:  the error message
- *
  * Handle a writer error
+ *
+ * @param ctxt  a writer context
+ * @param error  the error number
+ * @param msg  the error message
  */
 static void
 xmlWriterErrMsg(xmlTextWriterPtr ctxt, xmlParserErrors error,
@@ -134,13 +133,12 @@ xmlWriterErrMsg(xmlTextWriterPtr ctxt, x
 }
 
 /**
- * xmlWriterErrMsgInt:
- * @ctxt:  a writer context
- * @error:  the error number
- * @msg:  the error message
- * @val:  an int
- *
  * Handle a writer error
+ *
+ * @param ctxt  a writer context
+ * @param error  the error number
+ * @param msg  the error message
+ * @param val  an int
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlWriterErrMsgInt(xmlTextWriterPtr ctxt, xmlParserErrors error,
@@ -157,17 +155,15 @@ xmlWriterErrMsgInt(xmlTextWriterPtr ctxt
 }
 
 /**
- * xmlNewTextWriter:
- * @out:  an xmlOutputBufferPtr
- *
- * Create a new xmlNewTextWriter structure using an xmlOutputBufferPtr
- * NOTE: the @out parameter will be deallocated when the writer is closed
+ * Create a new xmlTextWriter structure using an xmlOutputBuffer
+ * NOTE: the `out` parameter will be deallocated when the writer is closed
  *       (if the call succeed.)
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param out  an xmlOutputBuffer
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
-xmlNewTextWriter(xmlOutputBufferPtr out)
+xmlTextWriter *
+xmlNewTextWriter(xmlOutputBuffer *out)
 {
     xmlTextWriterPtr ret;
 
@@ -219,15 +215,13 @@ xmlNewTextWriter(xmlOutputBufferPtr out)
 }
 
 /**
- * xmlNewTextWriterFilename:
- * @uri:  the URI of the resource for the output
- * @compression:  compress the output?
- *
- * Create a new xmlNewTextWriter structure with @uri as output
+ * Create a new xmlTextWriter structure with `uri` as output
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param uri  the URI of the resource for the output
+ * @param compression  compress the output?
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
+xmlTextWriter *
 xmlNewTextWriterFilename(const char *uri, int compression)
 {
     xmlTextWriterPtr ret;
@@ -254,17 +248,15 @@ xmlNewTextWriterFilename(const char *uri
 }
 
 /**
- * xmlNewTextWriterMemory:
- * @buf:  xmlBufferPtr
- * @compression:  compress the output?
- *
- * Create a new xmlNewTextWriter structure with @buf as output
+ * Create a new xmlTextWriter structure with `buf` as output
  * TODO: handle compression
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param buf  xmlBuffer
+ * @param compression  compress the output?
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
-xmlNewTextWriterMemory(xmlBufferPtr buf, int compression ATTRIBUTE_UNUSED)
+xmlTextWriter *
+xmlNewTextWriterMemory(xmlBuffer *buf, int compression ATTRIBUTE_UNUSED)
 {
     xmlTextWriterPtr ret;
     xmlOutputBufferPtr out;
@@ -290,19 +282,17 @@ xmlNewTextWriterMemory(xmlBufferPtr buf,
 }
 
 /**
- * xmlNewTextWriterPushParser:
- * @ctxt: xmlParserCtxtPtr to hold the new XML document tree
- * @compression:  compress the output?
- *
- * Create a new xmlNewTextWriter structure with @ctxt as output
- * NOTE: the @ctxt context will be freed with the resulting writer
+ * Create a new xmlTextWriter structure with `ctxt` as output
+ * NOTE: the `ctxt` context will be freed with the resulting writer
  *       (if the call succeeds).
  * TODO: handle compression
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param ctxt  xmlParserCtxt to hold the new XML document tree
+ * @param compression  compress the output?
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
-xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt,
+xmlTextWriter *
+xmlNewTextWriterPushParser(xmlParserCtxt *ctxt,
                            int compression ATTRIBUTE_UNUSED)
 {
     xmlTextWriterPtr ret;
@@ -337,16 +327,14 @@ xmlNewTextWriterPushParser(xmlParserCtxt
 }
 
 /**
- * xmlNewTextWriterDoc:
- * @doc: address of a xmlDocPtr to hold the new XML document tree
- * @compression:  compress the output?
- *
- * Create a new xmlNewTextWriter structure with @*doc as output
+ * Create a new xmlTextWriter structure with `doc` as output
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param doc  address of a xmlDoc to hold the new XML document tree
+ * @param compression  compress the output?
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
-xmlNewTextWriterDoc(xmlDocPtr * doc, int compression)
+xmlTextWriter *
+xmlNewTextWriterDoc(xmlDoc ** doc, int compression)
 {
     xmlTextWriterPtr ret;
     xmlSAXHandler saxHandler;
@@ -396,18 +384,16 @@ xmlNewTextWriterDoc(xmlDocPtr * doc, int
 }
 
 /**
- * xmlNewTextWriterTree:
- * @doc: xmlDocPtr
- * @node: xmlNodePtr or NULL for doc->children
- * @compression:  compress the output?
- *
- * Create a new xmlNewTextWriter structure with @doc as output
- * starting at @node
+ * Create a new xmlTextWriter structure with `doc` as output
+ * starting at `node`
  *
- * Returns the new xmlTextWriterPtr or NULL in case of error
+ * @param doc  xmlDoc
+ * @param node  xmlNode or NULL for doc->children
+ * @param compression  compress the output?
+ * @returns the new xmlTextWriter or NULL in case of error
  */
-xmlTextWriterPtr
-xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, int compression)
+xmlTextWriter *
+xmlNewTextWriterTree(xmlDoc *doc, xmlNode *node, int compression)
 {
     xmlTextWriterPtr ret;
     xmlSAXHandler saxHandler;
@@ -453,13 +439,12 @@ xmlNewTextWriterTree(xmlDocPtr doc, xmlN
 }
 
 /**
- * xmlFreeTextWriter:
- * @writer:  the xmlTextWriterPtr
- *
  * Deallocate all the resources associated to the writer
+ *
+ * @param writer  the xmlTextWriter
  */
 void
-xmlFreeTextWriter(xmlTextWriterPtr writer)
+xmlFreeTextWriter(xmlTextWriter *writer)
 {
     if (writer == NULL)
         return;
@@ -490,18 +475,16 @@ xmlFreeTextWriter(xmlTextWriterPtr write
 }
 
 /**
- * xmlTextWriterStartDocument:
- * @writer:  the xmlTextWriterPtr
- * @version:  the xml version ("1.0") or NULL for default ("1.0")
- * @encoding:  the encoding or NULL for default
- * @standalone: "yes" or "no" or NULL for default
- *
  * Start a new xml document
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param version  the xml version ("1.0") or NULL for default ("1.0")
+ * @param encoding  the encoding or NULL for default
+ * @param standalone  "yes" or "no" or NULL for default
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartDocument(xmlTextWriterPtr writer, const char *version,
+xmlTextWriterStartDocument(xmlTextWriter *writer, const char *version,
                            const char *encoding, const char *standalone)
 {
     int count;
@@ -612,16 +595,14 @@ xmlTextWriterStartDocument(xmlTextWriter
 }
 
 /**
- * xmlTextWriterEndDocument:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml document. All open elements are closed, and
  * the content is flushed to the output.
  *
- * Returns the bytes written or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written or -1 in case of error
  */
 int
-xmlTextWriterEndDocument(xmlTextWriterPtr writer)
+xmlTextWriterEndDocument(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -703,15 +684,13 @@ xmlTextWriterEndDocument(xmlTextWriterPt
 }
 
 /**
- * xmlTextWriterStartComment:
- * @writer:  the xmlTextWriterPtr
- *
  * Start an xml comment.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartComment(xmlTextWriterPtr writer)
+xmlTextWriterStartComment(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -787,15 +766,13 @@ xmlTextWriterStartComment(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterEndComment:
- * @writer:  the xmlTextWriterPtr
- *
  * End the current xml comment.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndComment(xmlTextWriterPtr writer)
+xmlTextWriterEndComment(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -843,17 +820,15 @@ xmlTextWriterEndComment(xmlTextWriterPtr
 }
 
 /**
- * xmlTextWriterWriteFormatComment:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write an xml comment.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatComment(xmlTextWriter *writer,
                                 const char *format, ...)
 {
     int rc;
@@ -868,17 +843,15 @@ xmlTextWriterWriteFormatComment(xmlTextW
 }
 
 /**
- * xmlTextWriterWriteVFormatComment:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write an xml comment.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatComment(xmlTextWriter *writer,
                                  const char *format, va_list argptr)
 {
     int rc;
@@ -901,16 +874,14 @@ xmlTextWriterWriteVFormatComment(xmlText
 }
 
 /**
- * xmlTextWriterWriteComment:
- * @writer:  the xmlTextWriterPtr
- * @content:  comment string
- *
  * Write an xml comment.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param content  comment string
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteComment(xmlTextWriterPtr writer, const xmlChar * content)
+xmlTextWriterWriteComment(xmlTextWriter *writer, const xmlChar * content)
 {
     int count;
     int sum;
@@ -933,16 +904,14 @@ xmlTextWriterWriteComment(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterStartElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  element name
- *
  * Start an xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  element name
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartElement(xmlTextWriterPtr writer, const xmlChar * name)
+xmlTextWriterStartElement(xmlTextWriter *writer, const xmlChar * name)
 {
     int count;
     int sum;
@@ -1028,18 +997,16 @@ xmlTextWriterStartElement(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterStartElementNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix or NULL
- * @name:  element local name
- * @namespaceURI:  namespace URI or NULL
- *
  * Start an xml element with namespace support.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix or NULL
+ * @param name  element local name
+ * @param namespaceURI  namespace URI or NULL
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartElementNS(xmlTextWriterPtr writer,
+xmlTextWriterStartElementNS(xmlTextWriter *writer,
                             const xmlChar * prefix, const xmlChar * name,
                             const xmlChar * namespaceURI)
 {
@@ -1096,15 +1063,13 @@ xmlTextWriterStartElementNS(xmlTextWrite
 }
 
 /**
- * xmlTextWriterEndElement:
- * @writer:  the xmlTextWriterPtr
- *
  * End the current xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndElement(xmlTextWriterPtr writer)
+xmlTextWriterEndElement(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -1188,15 +1153,13 @@ xmlTextWriterEndElement(xmlTextWriterPtr
 }
 
 /**
- * xmlTextWriterFullEndElement:
- * @writer:  the xmlTextWriterPtr
- *
  * End the current xml element. Writes an end tag even if the element is empty
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterFullEndElement(xmlTextWriterPtr writer)
+xmlTextWriterFullEndElement(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -1271,17 +1234,15 @@ xmlTextWriterFullEndElement(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWriteFormatRaw:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted raw xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, const char *format,
+xmlTextWriterWriteFormatRaw(xmlTextWriter *writer, const char *format,
                             ...)
 {
     int rc;
@@ -1296,17 +1257,15 @@ xmlTextWriterWriteFormatRaw(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWriteVFormatRaw:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted raw xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, const char *format,
+xmlTextWriterWriteVFormatRaw(xmlTextWriter *writer, const char *format,
                              va_list argptr)
 {
     int rc;
@@ -1326,18 +1285,16 @@ xmlTextWriterWriteVFormatRaw(xmlTextWrit
 }
 
 /**
- * xmlTextWriterWriteRawLen:
- * @writer:  the xmlTextWriterPtr
- * @content:  text string
- * @len:  length of the text string
- *
  * Write an xml text.
  * TODO: what about entities and special chars??
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param content  text string
+ * @param len  length of the text string
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, const xmlChar * content,
+xmlTextWriterWriteRawLen(xmlTextWriter *writer, const xmlChar * content,
                          int len)
 {
     int count;
@@ -1382,32 +1339,28 @@ xmlTextWriterWriteRawLen(xmlTextWriterPt
 }
 
 /**
- * xmlTextWriterWriteRaw:
- * @writer:  the xmlTextWriterPtr
- * @content:  text string
- *
  * Write a raw xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param content  text string
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteRaw(xmlTextWriterPtr writer, const xmlChar * content)
+xmlTextWriterWriteRaw(xmlTextWriter *writer, const xmlChar * content)
 {
     return xmlTextWriterWriteRawLen(writer, content, xmlStrlen(content));
 }
 
 /**
- * xmlTextWriterWriteFormatString:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatString(xmlTextWriterPtr writer, const char *format,
+xmlTextWriterWriteFormatString(xmlTextWriter *writer, const char *format,
                                ...)
 {
     int rc;
@@ -1425,17 +1378,15 @@ xmlTextWriterWriteFormatString(xmlTextWr
 }
 
 /**
- * xmlTextWriterWriteVFormatString:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatString(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatString(xmlTextWriter *writer,
                                 const char *format, va_list argptr)
 {
     int rc;
@@ -1455,16 +1406,14 @@ xmlTextWriterWriteVFormatString(xmlTextW
 }
 
 /**
- * xmlTextWriterWriteString:
- * @writer:  the xmlTextWriterPtr
- * @content:  text string
- *
  * Write an xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param content  text string
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteString(xmlTextWriterPtr writer, const xmlChar * content)
+xmlTextWriterWriteString(xmlTextWriter *writer, const xmlChar * content)
 {
     int count;
     int sum;
@@ -1515,15 +1464,13 @@ xmlTextWriterWriteString(xmlTextWriterPt
 }
 
 /**
- * xmlOutputBufferWriteBase64:
- * @out: the xmlOutputBufferPtr
- * @data:   binary data
- * @len:  the number of bytes to encode
- *
  * Write base64 encoded data to an xmlOutputBuffer.
  * Adapted from John Walker's base64.c (http://www.fourmilab.ch/).
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param out  the xmlOutputBuffer
+ * @param data  binary data
+ * @param len  the number of bytes to encode
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 static int
 xmlOutputBufferWriteBase64(xmlOutputBufferPtr out, int len,
@@ -1597,18 +1544,16 @@ xmlOutputBufferWriteBase64(xmlOutputBuff
 }
 
 /**
- * xmlTextWriterWriteBase64:
- * @writer: the xmlTextWriterPtr
- * @data:   binary data
- * @start:  the position within the data of the first byte to encode
- * @len:  the number of bytes to encode
- *
  * Write an base64 encoded xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param data  binary data
+ * @param start  the position within the data of the first byte to encode
+ * @param len  the number of bytes to encode
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteBase64(xmlTextWriterPtr writer, const char *data,
+xmlTextWriterWriteBase64(xmlTextWriter *writer, const char *data,
                          int start, int len)
 {
     int count;
@@ -1645,15 +1590,12 @@ xmlTextWriterWriteBase64(xmlTextWriterPt
 }
 
 /**
- * xmlOutputBufferWriteBinHex:
- * @out: the xmlOutputBufferPtr
- * @data:   binary data
- * @len:  the number of bytes to encode
- *
  * Write hqx encoded data to an xmlOutputBuffer.
- * ::todo
  *
- * Returns the bytes written (may be 0 because of buffering)
+ * @param out  the xmlOutputBuffer
+ * @param data  binary data
+ * @param len  the number of bytes to encode
+ * @returns the bytes written (may be 0 because of buffering)
  * or -1 in case of error
  */
 static int
@@ -1690,18 +1632,16 @@ xmlOutputBufferWriteBinHex(xmlOutputBuff
 }
 
 /**
- * xmlTextWriterWriteBinHex:
- * @writer: the xmlTextWriterPtr
- * @data:   binary data
- * @start:  the position within the data of the first byte to encode
- * @len:  the number of bytes to encode
- *
  * Write a BinHex encoded xml text.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param data  binary data
+ * @param start  the position within the data of the first byte to encode
+ * @param len  the number of bytes to encode
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, const char *data,
+xmlTextWriterWriteBinHex(xmlTextWriter *writer, const char *data,
                          int start, int len)
 {
     int count;
@@ -1738,16 +1678,14 @@ xmlTextWriterWriteBinHex(xmlTextWriterPt
 }
 
 /**
- * xmlTextWriterStartAttribute:
- * @writer:  the xmlTextWriterPtr
- * @name:  element name
- *
  * Start an xml attribute.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  element name
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartAttribute(xmlTextWriterPtr writer, const xmlChar * name)
+xmlTextWriterStartAttribute(xmlTextWriter *writer, const xmlChar * name)
 {
     int count;
     int sum;
@@ -1802,18 +1740,16 @@ xmlTextWriterStartAttribute(xmlTextWrite
 }
 
 /**
- * xmlTextWriterStartAttributeNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix or NULL
- * @name:  element local name
- * @namespaceURI:  namespace URI or NULL
- *
  * Start an xml attribute with namespace support.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix or NULL
+ * @param name  element local name
+ * @param namespaceURI  namespace URI or NULL
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartAttributeNS(xmlTextWriterPtr writer,
+xmlTextWriterStartAttributeNS(xmlTextWriter *writer,
                               const xmlChar * prefix, const xmlChar * name,
                               const xmlChar * namespaceURI)
 {
@@ -1894,15 +1830,13 @@ xmlTextWriterStartAttributeNS(xmlTextWri
 }
 
 /**
- * xmlTextWriterEndAttribute:
- * @writer:  the xmlTextWriterPtr
- *
  * End the current xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndAttribute(xmlTextWriterPtr writer)
+xmlTextWriterEndAttribute(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -1941,18 +1875,16 @@ xmlTextWriterEndAttribute(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterWriteFormatAttribute:
- * @writer:  the xmlTextWriterPtr
- * @name:  attribute name
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml attribute.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  attribute name
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatAttribute(xmlTextWriter *writer,
                                   const xmlChar * name, const char *format,
                                   ...)
 {
@@ -1968,18 +1900,16 @@ xmlTextWriterWriteFormatAttribute(xmlTex
 }
 
 /**
- * xmlTextWriterWriteVFormatAttribute:
- * @writer:  the xmlTextWriterPtr
- * @name:  attribute name
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml attribute.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  attribute name
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatAttribute(xmlTextWriter *writer,
                                    const xmlChar * name,
                                    const char *format, va_list argptr)
 {
@@ -2000,17 +1930,15 @@ xmlTextWriterWriteVFormatAttribute(xmlTe
 }
 
 /**
- * xmlTextWriterWriteAttribute:
- * @writer:  the xmlTextWriterPtr
- * @name:  attribute name
- * @content:  attribute content
- *
  * Write an xml attribute.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  attribute name
+ * @param content  attribute content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteAttribute(xmlTextWriterPtr writer, const xmlChar * name,
+xmlTextWriterWriteAttribute(xmlTextWriter *writer, const xmlChar * name,
                             const xmlChar * content)
 {
     int count;
@@ -2034,20 +1962,18 @@ xmlTextWriterWriteAttribute(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWriteFormatAttributeNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  attribute local name
- * @namespaceURI:  namespace URI
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml attribute.with namespace support
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  attribute local name
+ * @param namespaceURI  namespace URI
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatAttributeNS(xmlTextWriter *writer,
                                     const xmlChar * prefix,
                                     const xmlChar * name,
                                     const xmlChar * namespaceURI,
@@ -2066,20 +1992,18 @@ xmlTextWriterWriteFormatAttributeNS(xmlT
 }
 
 /**
- * xmlTextWriterWriteVFormatAttributeNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  attribute local name
- * @namespaceURI:  namespace URI
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml attribute.with namespace support
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  attribute local name
+ * @param namespaceURI  namespace URI
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatAttributeNS(xmlTextWriter *writer,
                                      const xmlChar * prefix,
                                      const xmlChar * name,
                                      const xmlChar * namespaceURI,
@@ -2103,19 +2027,17 @@ xmlTextWriterWriteVFormatAttributeNS(xml
 }
 
 /**
- * xmlTextWriterWriteAttributeNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  attribute local name
- * @namespaceURI:  namespace URI
- * @content:  attribute content
- *
  * Write an xml attribute.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  attribute local name
+ * @param namespaceURI  namespace URI
+ * @param content  attribute content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteAttributeNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteAttributeNS(xmlTextWriter *writer,
                               const xmlChar * prefix, const xmlChar * name,
                               const xmlChar * namespaceURI,
                               const xmlChar * content)
@@ -2144,18 +2066,16 @@ xmlTextWriterWriteAttributeNS(xmlTextWri
 }
 
 /**
- * xmlTextWriterWriteFormatElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  element name
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  element name
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatElement(xmlTextWriter *writer,
                                 const xmlChar * name, const char *format,
                                 ...)
 {
@@ -2171,18 +2091,16 @@ xmlTextWriterWriteFormatElement(xmlTextW
 }
 
 /**
- * xmlTextWriterWriteVFormatElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  element name
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  element name
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatElement(xmlTextWriter *writer,
                                  const xmlChar * name, const char *format,
                                  va_list argptr)
 {
@@ -2203,17 +2121,15 @@ xmlTextWriterWriteVFormatElement(xmlText
 }
 
 /**
- * xmlTextWriterWriteElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  element name
- * @content:  element content
- *
  * Write an xml element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  element name
+ * @param content  element content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteElement(xmlTextWriterPtr writer, const xmlChar * name,
+xmlTextWriterWriteElement(xmlTextWriter *writer, const xmlChar * name,
                           const xmlChar * content)
 {
     int count;
@@ -2239,20 +2155,18 @@ xmlTextWriterWriteElement(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterWriteFormatElementNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  element local name
- * @namespaceURI:  namespace URI
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml element with namespace support.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  element local name
+ * @param namespaceURI  namespace URI
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatElementNS(xmlTextWriter *writer,
                                   const xmlChar * prefix,
                                   const xmlChar * name,
                                   const xmlChar * namespaceURI,
@@ -2271,20 +2185,18 @@ xmlTextWriterWriteFormatElementNS(xmlTex
 }
 
 /**
- * xmlTextWriterWriteVFormatElementNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  element local name
- * @namespaceURI:  namespace URI
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml element with namespace support.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  element local name
+ * @param namespaceURI  namespace URI
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatElementNS(xmlTextWriter *writer,
                                    const xmlChar * prefix,
                                    const xmlChar * name,
                                    const xmlChar * namespaceURI,
@@ -2308,19 +2220,17 @@ xmlTextWriterWriteVFormatElementNS(xmlTe
 }
 
 /**
- * xmlTextWriterWriteElementNS:
- * @writer:  the xmlTextWriterPtr
- * @prefix:  namespace prefix
- * @name:  element local name
- * @namespaceURI:  namespace URI
- * @content:  element content
- *
  * Write an xml element with namespace support.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param prefix  namespace prefix
+ * @param name  element local name
+ * @param namespaceURI  namespace URI
+ * @param content  element content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteElementNS(xmlTextWriterPtr writer,
+xmlTextWriterWriteElementNS(xmlTextWriter *writer,
                             const xmlChar * prefix, const xmlChar * name,
                             const xmlChar * namespaceURI,
                             const xmlChar * content)
@@ -2350,16 +2260,14 @@ xmlTextWriterWriteElementNS(xmlTextWrite
 }
 
 /**
- * xmlTextWriterStartPI:
- * @writer:  the xmlTextWriterPtr
- * @target:  PI target
- *
  * Start an xml PI.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param target  PI target
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartPI(xmlTextWriterPtr writer, const xmlChar * target)
+xmlTextWriterStartPI(xmlTextWriter *writer, const xmlChar * target)
 {
     int count;
     int sum;
@@ -2447,15 +2355,13 @@ xmlTextWriterStartPI(xmlTextWriterPtr wr
 }
 
 /**
- * xmlTextWriterEndPI:
- * @writer:  the xmlTextWriterPtr
- *
  * End the current xml PI.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndPI(xmlTextWriterPtr writer)
+xmlTextWriterEndPI(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -2498,18 +2404,16 @@ xmlTextWriterEndPI(xmlTextWriterPtr writ
 }
 
 /**
- * xmlTextWriterWriteFormatPI:
- * @writer:  the xmlTextWriterPtr
- * @target:  PI target
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted PI.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param target  PI target
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, const xmlChar * target,
+xmlTextWriterWriteFormatPI(xmlTextWriter *writer, const xmlChar * target,
                            const char *format, ...)
 {
     int rc;
@@ -2524,18 +2428,16 @@ xmlTextWriterWriteFormatPI(xmlTextWriter
 }
 
 /**
- * xmlTextWriterWriteVFormatPI:
- * @writer:  the xmlTextWriterPtr
- * @target:  PI target
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml PI.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param target  PI target
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatPI(xmlTextWriter *writer,
                             const xmlChar * target, const char *format,
                             va_list argptr)
 {
@@ -2556,17 +2458,15 @@ xmlTextWriterWriteVFormatPI(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWritePI:
- * @writer:  the xmlTextWriterPtr
- * @target:  PI target
- * @content:  PI content
- *
  * Write an xml PI.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param target  PI target
+ * @param content  PI content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWritePI(xmlTextWriterPtr writer, const xmlChar * target,
+xmlTextWriterWritePI(xmlTextWriter *writer, const xmlChar * target,
                      const xmlChar * content)
 {
     int count;
@@ -2592,15 +2492,13 @@ xmlTextWriterWritePI(xmlTextWriterPtr wr
 }
 
 /**
- * xmlTextWriterStartCDATA:
- * @writer:  the xmlTextWriterPtr
- *
  * Start an xml CDATA section.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartCDATA(xmlTextWriterPtr writer)
+xmlTextWriterStartCDATA(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -2671,15 +2569,13 @@ xmlTextWriterStartCDATA(xmlTextWriterPtr
 }
 
 /**
- * xmlTextWriterEndCDATA:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml CDATA section.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndCDATA(xmlTextWriterPtr writer)
+xmlTextWriterEndCDATA(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -2714,17 +2610,15 @@ xmlTextWriterEndCDATA(xmlTextWriterPtr w
 }
 
 /**
- * xmlTextWriterWriteFormatCDATA:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted xml CDATA.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, const char *format,
+xmlTextWriterWriteFormatCDATA(xmlTextWriter *writer, const char *format,
                               ...)
 {
     int rc;
@@ -2739,17 +2633,15 @@ xmlTextWriterWriteFormatCDATA(xmlTextWri
 }
 
 /**
- * xmlTextWriterWriteVFormatCDATA:
- * @writer:  the xmlTextWriterPtr
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted xml CDATA.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, const char *format,
+xmlTextWriterWriteVFormatCDATA(xmlTextWriter *writer, const char *format,
                                va_list argptr)
 {
     int rc;
@@ -2769,16 +2661,14 @@ xmlTextWriterWriteVFormatCDATA(xmlTextWr
 }
 
 /**
- * xmlTextWriterWriteCDATA:
- * @writer:  the xmlTextWriterPtr
- * @content:  CDATA content
- *
  * Write an xml CDATA.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param content  CDATA content
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, const xmlChar * content)
+xmlTextWriterWriteCDATA(xmlTextWriter *writer, const xmlChar * content)
 {
     int count;
     int sum;
@@ -2803,18 +2693,16 @@ xmlTextWriterWriteCDATA(xmlTextWriterPtr
 }
 
 /**
- * xmlTextWriterStartDTD:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- *
  * Start an xml DTD.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartDTD(xmlTextWriterPtr writer,
+xmlTextWriterStartDTD(xmlTextWriter *writer,
                       const xmlChar * name,
                       const xmlChar * pubid, const xmlChar * sysid)
 {
@@ -2943,15 +2831,13 @@ xmlTextWriterStartDTD(xmlTextWriterPtr w
 }
 
 /**
- * xmlTextWriterEndDTD:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml DTD.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndDTD(xmlTextWriterPtr writer)
+xmlTextWriterEndDTD(xmlTextWriter *writer)
 {
     int loop;
     int count;
@@ -3020,20 +2906,18 @@ xmlTextWriterEndDTD(xmlTextWriterPtr wri
 }
 
 /**
- * xmlTextWriterWriteFormatDTD:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a DTD with a formatted markup declarations part.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatDTD(xmlTextWriter *writer,
                             const xmlChar * name,
                             const xmlChar * pubid,
                             const xmlChar * sysid, const char *format, ...)
@@ -3051,20 +2935,18 @@ xmlTextWriterWriteFormatDTD(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWriteVFormatDTD:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a DTD with a formatted markup declarations part.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatDTD(xmlTextWriter *writer,
                              const xmlChar * name,
                              const xmlChar * pubid,
                              const xmlChar * sysid,
@@ -3087,19 +2969,17 @@ xmlTextWriterWriteVFormatDTD(xmlTextWrit
 }
 
 /**
- * xmlTextWriterWriteDTD:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @subset:  string content of the DTD
- *
  * Write a DTD.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param subset  string content of the DTD
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTD(xmlTextWriter *writer,
                       const xmlChar * name,
                       const xmlChar * pubid,
                       const xmlChar * sysid, const xmlChar * subset)
@@ -3127,16 +3007,14 @@ xmlTextWriterWriteDTD(xmlTextWriterPtr w
 }
 
 /**
- * xmlTextWriterStartDTDElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD element
- *
  * Start an xml DTD element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD element
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, const xmlChar * name)
+xmlTextWriterStartDTDElement(xmlTextWriter *writer, const xmlChar * name)
 {
     int count;
     int sum;
@@ -3215,15 +3093,13 @@ xmlTextWriterStartDTDElement(xmlTextWrit
 }
 
 /**
- * xmlTextWriterEndDTDElement:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml DTD element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndDTDElement(xmlTextWriterPtr writer)
+xmlTextWriterEndDTDElement(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -3266,18 +3142,16 @@ xmlTextWriterEndDTDElement(xmlTextWriter
 }
 
 /**
- * xmlTextWriterWriteFormatDTDElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD element
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted DTD element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD element
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatDTDElement(xmlTextWriter *writer,
                                    const xmlChar * name,
                                    const char *format, ...)
 {
@@ -3293,18 +3167,16 @@ xmlTextWriterWriteFormatDTDElement(xmlTe
 }
 
 /**
- * xmlTextWriterWriteVFormatDTDElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD element
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted DTD element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD element
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatDTDElement(xmlTextWriter *writer,
                                     const xmlChar * name,
                                     const char *format, va_list argptr)
 {
@@ -3325,17 +3197,15 @@ xmlTextWriterWriteVFormatDTDElement(xmlT
 }
 
 /**
- * xmlTextWriterWriteDTDElement:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD element
- * @content:  content of the element
- *
  * Write a DTD element.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD element
+ * @param content  content of the element
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDElement(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDElement(xmlTextWriter *writer,
                              const xmlChar * name, const xmlChar * content)
 {
     int count;
@@ -3364,16 +3234,14 @@ xmlTextWriterWriteDTDElement(xmlTextWrit
 }
 
 /**
- * xmlTextWriterStartDTDAttlist:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD ATTLIST
- *
  * Start an xml DTD ATTLIST.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD ATTLIST
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, const xmlChar * name)
+xmlTextWriterStartDTDAttlist(xmlTextWriter *writer, const xmlChar * name)
 {
     int count;
     int sum;
@@ -3452,15 +3320,13 @@ xmlTextWriterStartDTDAttlist(xmlTextWrit
 }
 
 /**
- * xmlTextWriterEndDTDAttlist:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml DTD attribute list.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndDTDAttlist(xmlTextWriterPtr writer)
+xmlTextWriterEndDTDAttlist(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -3503,18 +3369,16 @@ xmlTextWriterEndDTDAttlist(xmlTextWriter
 }
 
 /**
- * xmlTextWriterWriteFormatDTDAttlist:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD ATTLIST
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted DTD ATTLIST.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD ATTLIST
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatDTDAttlist(xmlTextWriter *writer,
                                    const xmlChar * name,
                                    const char *format, ...)
 {
@@ -3530,18 +3394,16 @@ xmlTextWriterWriteFormatDTDAttlist(xmlTe
 }
 
 /**
- * xmlTextWriterWriteVFormatDTDAttlist:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD ATTLIST
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted DTD ATTLIST.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD ATTLIST
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriter *writer,
                                     const xmlChar * name,
                                     const char *format, va_list argptr)
 {
@@ -3562,17 +3424,15 @@ xmlTextWriterWriteVFormatDTDAttlist(xmlT
 }
 
 /**
- * xmlTextWriterWriteDTDAttlist:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the DTD ATTLIST
- * @content:  content of the ATTLIST
- *
  * Write a DTD ATTLIST.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the DTD ATTLIST
+ * @param content  content of the ATTLIST
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDAttlist(xmlTextWriter *writer,
                              const xmlChar * name, const xmlChar * content)
 {
     int count;
@@ -3601,17 +3461,15 @@ xmlTextWriterWriteDTDAttlist(xmlTextWrit
 }
 
 /**
- * xmlTextWriterStartDTDEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD ATTLIST
- *
  * Start an xml DTD ATTLIST.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD ATTLIST
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
+xmlTextWriterStartDTDEntity(xmlTextWriter *writer,
                             int pe, const xmlChar * name)
 {
     int count;
@@ -3703,15 +3561,13 @@ xmlTextWriterStartDTDEntity(xmlTextWrite
 }
 
 /**
- * xmlTextWriterEndDTDEntity:
- * @writer:  the xmlTextWriterPtr
- *
  * End an xml DTD entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterEndDTDEntity(xmlTextWriterPtr writer)
+xmlTextWriterEndDTDEntity(xmlTextWriter *writer)
 {
     int count;
     int sum;
@@ -3760,19 +3616,17 @@ xmlTextWriterEndDTDEntity(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterWriteFormatDTDInternalEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD entity
- * @format:  format string (see printf)
- * @...:  extra parameters for the format
- *
  * Write a formatted DTD internal entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD entity
+ * @param format  format string (see printf)
+ * @param ...  extra parameters for the format
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
+xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriter *writer,
                                           int pe,
                                           const xmlChar * name,
                                           const char *format, ...)
@@ -3790,19 +3644,17 @@ xmlTextWriterWriteFormatDTDInternalEntit
 }
 
 /**
- * xmlTextWriterWriteVFormatDTDInternalEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD entity
- * @format:  format string (see printf)
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Write a formatted DTD internal entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD entity
+ * @param format  format string (see printf)
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
+xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriter *writer,
                                            int pe,
                                            const xmlChar * name,
                                            const char *format,
@@ -3825,21 +3677,19 @@ xmlTextWriterWriteVFormatDTDInternalEnti
 }
 
 /**
- * xmlTextWriterWriteDTDEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD entity
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @ndataid:  the xml notation name.
- * @content:  content of the entity
- *
  * Write a DTD entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD entity
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param ndataid  the xml notation name.
+ * @param content  content of the entity
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDEntity(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDEntity(xmlTextWriter *writer,
                             int pe,
                             const xmlChar * name,
                             const xmlChar * pubid,
@@ -3861,18 +3711,16 @@ xmlTextWriterWriteDTDEntity(xmlTextWrite
 }
 
 /**
- * xmlTextWriterWriteDTDInternalEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD entity
- * @content:  content of the entity
- *
  * Write a DTD internal entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD entity
+ * @param content  content of the entity
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDInternalEntity(xmlTextWriter *writer,
                                     int pe,
                                     const xmlChar * name,
                                     const xmlChar * content)
@@ -3903,20 +3751,18 @@ xmlTextWriterWriteDTDInternalEntity(xmlT
 }
 
 /**
- * xmlTextWriterWriteDTDExternalEntity:
- * @writer:  the xmlTextWriterPtr
- * @pe:  TRUE if this is a parameter entity, FALSE if not
- * @name:  the name of the DTD entity
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @ndataid:  the xml notation name.
+ * Write a DTD external entity. The entity must have been started with #xmlTextWriterStartDTDEntity
  *
- * Write a DTD external entity. The entity must have been started with xmlTextWriterStartDTDEntity
- *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pe  TRUE if this is a parameter entity, FALSE if not
+ * @param name  the name of the DTD entity
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param ndataid  the xml notation name.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDExternalEntity(xmlTextWriter *writer,
                                     int pe,
                                     const xmlChar * name,
                                     const xmlChar * pubid,
@@ -3953,18 +3799,16 @@ xmlTextWriterWriteDTDExternalEntity(xmlT
 }
 
 /**
- * xmlTextWriterWriteDTDExternalEntityContents:
- * @writer:  the xmlTextWriterPtr
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- * @ndataid:  the xml notation name.
- *
  * Write the contents of a DTD external entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @param ndataid  the xml notation name.
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriter *writer,
                                             const xmlChar * pubid,
                                             const xmlChar * sysid,
                                             const xmlChar * ndataid)
@@ -4085,18 +3929,16 @@ xmlTextWriterWriteDTDExternalEntityConte
 }
 
 /**
- * xmlTextWriterWriteDTDNotation:
- * @writer:  the xmlTextWriterPtr
- * @name:  the name of the xml notation
- * @pubid:  the public identifier, which is an alternative to the system identifier
- * @sysid:  the system identifier, which is the URI of the DTD
- *
  * Write a DTD entity.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @param name  the name of the xml notation
+ * @param pubid  the public identifier, which is an alternative to the system identifier
+ * @param sysid  the system identifier, which is the URI of the DTD
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
+xmlTextWriterWriteDTDNotation(xmlTextWriter *writer,
                               const xmlChar * name,
                               const xmlChar * pubid, const xmlChar * sysid)
 {
@@ -4208,15 +4050,13 @@ xmlTextWriterWriteDTDNotation(xmlTextWri
 }
 
 /**
- * xmlTextWriterFlush:
- * @writer:  the xmlTextWriterPtr
- *
  * Flush the output buffer.
  *
- * Returns the bytes written (may be 0 because of buffering) or -1 in case of error
+ * @param writer  the xmlTextWriter
+ * @returns the bytes written (may be 0 because of buffering) or -1 in case of error
  */
 int
-xmlTextWriterFlush(xmlTextWriterPtr writer)
+xmlTextWriterFlush(xmlTextWriter *writer)
 {
     int count;
 
@@ -4232,17 +4072,15 @@ xmlTextWriterFlush(xmlTextWriterPtr writ
 }
 
 /**
- * xmlTextWriterClose:
- * @writer:  the xmlTextWriterPtr
- *
  * Flushes and closes the output buffer.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
  *
- * Returns an xmlParserErrors code.
+ * @param writer  the xmlTextWriter
+ * @returns an xmlParserErrors code.
  */
 int
-xmlTextWriterClose(xmlTextWriterPtr writer)
+xmlTextWriterClose(xmlTextWriter *writer)
 {
     int result;
 
@@ -4265,10 +4103,9 @@ xmlTextWriterClose(xmlTextWriterPtr writ
  */
 
 /**
- * xmlFreeTextWriterStackEntry:
- * @lk:  the xmlLinkPtr
- *
  * Free callback for the xmlList.
+ *
+ * @param lk  the xmlLink
  */
 static void
 xmlFreeTextWriterStackEntry(xmlLinkPtr lk)
@@ -4285,13 +4122,11 @@ xmlFreeTextWriterStackEntry(xmlLinkPtr l
 }
 
 /**
- * xmlCmpTextWriterStackEntry:
- * @data0:  the first data
- * @data1:  the second data
- *
  * Compare callback for the xmlList.
  *
- * Returns -1, 0, 1
+ * @param data0  the first data
+ * @param data1  the second data
+ * @returns -1, 0, 1
  */
 static int
 xmlCmpTextWriterStackEntry(const void *data0, const void *data1)
@@ -4319,10 +4154,9 @@ xmlCmpTextWriterStackEntry(const void *d
  */
 
 /**
- * xmlTextWriterOutputNSDecl:
- * @writer:  the xmlTextWriterPtr
- *
  * Output the current namespace declarations.
+ *
+ * @param writer  the xmlTextWriter
  */
 static int
 xmlTextWriterOutputNSDecl(xmlTextWriterPtr writer)
@@ -4364,10 +4198,9 @@ xmlTextWriterOutputNSDecl(xmlTextWriterP
 }
 
 /**
- * xmlFreeTextWriterNsStackEntry:
- * @lk:  the xmlLinkPtr
- *
  * Free callback for the xmlList.
+ *
+ * @param lk  the xmlLink
  */
 static void
 xmlFreeTextWriterNsStackEntry(xmlLinkPtr lk)
@@ -4387,13 +4220,11 @@ xmlFreeTextWriterNsStackEntry(xmlLinkPtr
 }
 
 /**
- * xmlCmpTextWriterNsStackEntry:
- * @data0:  the first data
- * @data1:  the second data
- *
  * Compare callback for the xmlList.
  *
- * Returns -1, 0, 1
+ * @param data0  the first data
+ * @param data1  the second data
+ * @returns -1, 0, 1
  */
 static int
 xmlCmpTextWriterNsStackEntry(const void *data0, const void *data1)
@@ -4423,14 +4254,12 @@ xmlCmpTextWriterNsStackEntry(const void
 }
 
 /**
- * xmlTextWriterWriteDocCallback:
- * @context:  the xmlBufferPtr
- * @str:  the data to write
- * @len:  the length of the data
- *
  * Write callback for the xmlOutputBuffer with target xmlBuffer
  *
- * Returns -1, 0, 1
+ * @param context  the xmlBuffer
+ * @param str  the data to write
+ * @param len  the length of the data
+ * @returns -1, 0, 1
  */
 static int
 xmlTextWriterWriteDocCallback(void *context, const char *str, int len)
@@ -4450,12 +4279,10 @@ xmlTextWriterWriteDocCallback(void *cont
 }
 
 /**
- * xmlTextWriterCloseDocCallback:
- * @context:  the xmlBufferPtr
- *
  * Close callback for the xmlOutputBuffer with target xmlBuffer
  *
- * Returns -1, 0, 1
+ * @param context  the xmlBuffer
+ * @returns -1, 0, 1
  */
 static int
 xmlTextWriterCloseDocCallback(void *context)
@@ -4475,13 +4302,11 @@ xmlTextWriterCloseDocCallback(void *cont
 }
 
 /**
- * xmlTextWriterVSprintf:
- * @format:  see printf
- * @argptr:  pointer to the first member of the variable argument list.
- *
  * Utility function for formatted output
  *
- * Returns a new xmlChar buffer with the data or NULL on error. This buffer must be freed.
+ * @param format  see printf
+ * @param argptr  pointer to the first member of the variable argument list.
+ * @returns a new xmlChar buffer with the data or NULL on error. This buffer must be freed.
  */
 static xmlChar *
 xmlTextWriterVSprintf(const char *format, va_list argptr)
@@ -4519,10 +4344,9 @@ xmlTextWriterVSprintf(const char *format
 }
 
 /**
- * xmlTextWriterStartDocumentCallback:
- * @ctx: the user data (XML parser context)
- *
  * called at the start of document processing.
+ *
+ * @param ctx  the user data (XML parser context)
  */
 static void
 xmlTextWriterStartDocumentCallback(void *ctx)
@@ -4568,16 +4392,14 @@ xmlTextWriterStartDocumentCallback(void
 }
 
 /**
- * xmlTextWriterSetIndent:
- * @writer:  the xmlTextWriterPtr
- * @indent:  do indentation?
- *
  * Set indentation output. indent = 0 do not indentation. indent > 0 do indentation.
  *
- * Returns -1 on error or 0 otherwise.
+ * @param writer  the xmlTextWriter
+ * @param indent  do indentation?
+ * @returns -1 on error or 0 otherwise.
  */
 int
-xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent)
+xmlTextWriterSetIndent(xmlTextWriter *writer, int indent)
 {
     if ((writer == NULL) || (indent < 0))
         return -1;
@@ -4589,16 +4411,14 @@ xmlTextWriterSetIndent(xmlTextWriterPtr
 }
 
 /**
- * xmlTextWriterSetIndentString:
- * @writer:  the xmlTextWriterPtr
- * @str:  the xmlChar string
- *
  * Set string indentation.
  *
- * Returns -1 on error or 0 otherwise.
+ * @param writer  the xmlTextWriter
+ * @param str  the xmlChar string
+ * @returns -1 on error or 0 otherwise.
  */
 int
-xmlTextWriterSetIndentString(xmlTextWriterPtr writer, const xmlChar * str)
+xmlTextWriterSetIndentString(xmlTextWriter *writer, const xmlChar * str)
 {
     if ((writer == NULL) || (!str))
         return -1;
@@ -4614,16 +4434,14 @@ xmlTextWriterSetIndentString(xmlTextWrit
 }
 
 /**
- * xmlTextWriterSetQuoteChar:
- * @writer:  the xmlTextWriterPtr
- * @quotechar:  the quote character
- *
  * Set the character used for quoting attributes.
  *
- * Returns -1 on error or 0 otherwise.
+ * @param writer  the xmlTextWriter
+ * @param quotechar  the quote character
+ * @returns -1 on error or 0 otherwise.
  */
 int
-xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar)
+xmlTextWriterSetQuoteChar(xmlTextWriter *writer, xmlChar quotechar)
 {
     if ((writer == NULL) || ((quotechar != '\'') && (quotechar != '"')))
         return -1;
@@ -4634,12 +4452,10 @@ xmlTextWriterSetQuoteChar(xmlTextWriterP
 }
 
 /**
- * xmlTextWriterWriteIndent:
- * @writer:  the xmlTextWriterPtr
- *
  * Write indent string.
  *
- * Returns -1 on error or the number of strings written.
+ * @param writer  the xmlTextWriter
+ * @returns -1 on error or the number of strings written.
  */
 static int
 xmlTextWriterWriteIndent(xmlTextWriterPtr writer)
@@ -4662,13 +4478,11 @@ xmlTextWriterWriteIndent(xmlTextWriterPt
 }
 
 /**
- * xmlTextWriterHandleStateDependencies:
- * @writer:  the xmlTextWriterPtr
- * @p:  the xmlTextWriterStackEntry
- *
  * Write state dependent strings.
  *
- * Returns -1 on error or the number of characters written.
+ * @param writer  the xmlTextWriter
+ * @param p  the xmlTextWriterStackEntry
+ * @returns -1 on error or the number of characters written.
  */
 static int
 xmlTextWriterHandleStateDependencies(xmlTextWriterPtr writer,
diff -pruN 2.14.6+dfsg-0.1/xpath.c 2.15.0+dfsg-0.3/xpath.c
--- 2.14.6+dfsg-0.1/xpath.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xpath.c	2025-09-15 11:55:59.000000000 +0000
@@ -10,8 +10,7 @@
  *
  * See Copyright for the status of this software
  *
- * Author: daniel@veillard.com
- *
+ * Author: Daniel Veillard
  */
 
 /* To avoid EBCDIC trouble when parsing on zOS */
@@ -47,6 +46,7 @@
 #include "private/buf.h"
 #include "private/error.h"
 #include "private/memory.h"
+#include "private/parser.h"
 #include "private/xpath.h"
 
 /* Disabled for now */
@@ -57,16 +57,13 @@
 #endif
 
 /**
- * WITH_TIM_SORT:
- *
  * Use the Timsort algorithm provided in timsort.h to sort
  * nodeset as this is a great improvement over the old Shell sort
- * used in xmlXPathNodeSetSort()
+ * used in #xmlXPathNodeSetSort
  */
 #define WITH_TIM_SORT
 
 /*
-* XP_OPTIMIZED_NON_ELEM_COMPARISON:
 * If defined, this will use xmlXPathCmpNodesExt() instead of
 * xmlXPathCmpNodes(). The new function is optimized comparison of
 * non-element nodes; actually it will speed up comparison only if
@@ -77,14 +74,12 @@
 #define XP_OPTIMIZED_NON_ELEM_COMPARISON
 
 /*
-* XP_OPTIMIZED_FILTER_FIRST:
 * If defined, this will optimize expressions like "key('foo', 'val')[b][1]"
 * in a way, that it stop evaluation at the first node.
 */
 #define XP_OPTIMIZED_FILTER_FIRST
 
 /*
- * XPATH_MAX_STEPS:
  * when compiling an XPath expression we arbitrary limit the maximum
  * number of step operation in the compiled expression. 1000000 is
  * an insanely large value which should never be reached under normal
@@ -93,7 +88,6 @@
 #define XPATH_MAX_STEPS 1000000
 
 /*
- * XPATH_MAX_STACK_DEPTH:
  * when evaluating an XPath expression we arbitrary limit the maximum
  * number of object allowed to be pushed on the stack. 1000000 is
  * an insanely large value which should never be reached under normal
@@ -102,7 +96,6 @@
 #define XPATH_MAX_STACK_DEPTH 1000000
 
 /*
- * XPATH_MAX_NODESET_LENGTH:
  * when evaluating an XPath expression nodesets are created and we
  * arbitrary limit the maximum length of those node set. 10000000 is
  * an insanely large value which should never be reached under normal
@@ -112,7 +105,6 @@
 #define XPATH_MAX_NODESET_LENGTH 10000000
 
 /*
- * XPATH_MAX_RECRUSION_DEPTH:
  * Maximum amount of nested functions calls when parsing or evaluating
  * expressions
  */
@@ -182,9 +174,7 @@ double xmlXPathPINF = 0.0;
 double xmlXPathNINF = 0.0;
 
 /**
- * xmlXPathInit:
- *
- * DEPRECATED: Alias for xmlInitParser.
+ * @deprecated Alias for #xmlInitParser.
  */
 void
 xmlXPathInit(void) {
@@ -204,8 +194,6 @@ xmlXPathSFComputeHash(const xmlChar *nam
 }
 
 /**
- * xmlInitXPathInternal:
- *
  * Initialize the XPath environment
  */
 ATTRIBUTE_NO_SANITIZE("float-divide-by-zero")
@@ -253,12 +241,10 @@ xmlInitXPathInternal(void) {
  ************************************************************************/
 
 /**
- * xmlXPathIsNaN:
- * @val:  a double value
- *
  * Checks whether a double is a NaN.
  *
- * Returns 1 if the value is a NaN, 0 otherwise
+ * @param val  a double value
+ * @returns 1 if the value is a NaN, 0 otherwise
  */
 int
 xmlXPathIsNaN(double val) {
@@ -270,12 +256,10 @@ xmlXPathIsNaN(double val) {
 }
 
 /**
- * xmlXPathIsInf:
- * @val:  a double value
- *
  * Checks whether a double is an infinity.
  *
- * Returns 1 if the value is +Infinite, -1 if -Infinite, 0 otherwise
+ * @param val  a double value
+ * @returns 1 if the value is +Infinite, -1 if -Infinite, 0 otherwise
  */
 int
 xmlXPathIsInf(double val) {
@@ -313,14 +297,12 @@ xmlXPathNodeSetClear(xmlNodeSetPtr set,
 #ifdef XP_OPTIMIZED_NON_ELEM_COMPARISON
 
 /**
- * xmlXPathCmpNodesExt:
- * @node1:  the first node
- * @node2:  the second node
- *
  * Compare two nodes w.r.t document order.
  * This one is optimized for handling of non-element nodes.
  *
- * Returns -2 in case of error 1 if first point < second point, 0 if
+ * @param node1  the first node
+ * @param node2  the second node
+ * @returns -2 in case of error 1 if first point < second point, 0 if
  *         it's the same node, -1 otherwise
  */
 static int
@@ -610,13 +592,11 @@ turtle_comparison:
 #define SORT_NAME libxml_domnode
 #define SORT_TYPE xmlNodePtr
 /**
- * wrap_cmp:
- * @x: a node
- * @y: another node
- *
  * Comparison function for the Timsort implementation
  *
- * Returns -2 in case of error -1 if first point < second point, 0 if
+ * @param x  a node
+ * @param y  another node
+ * @returns -2 in case of error -1 if first point < second point, 0 if
  *         it's the same node, +1 otherwise
  */
 static
@@ -645,10 +625,9 @@ int wrap_cmp( xmlNodePtr x, xmlNodePtr y
  ************************************************************************/
 
 /**
- * XP_ERRORNULL:
- * @X:  the error code
- *
  * Macro to raise an XPath error and return NULL.
+ *
+ * @param X  the error code
  */
 #define XP_ERRORNULL(X)							\
     { xmlXPathErr(ctxt, X); return(NULL); }
@@ -657,45 +636,44 @@ int wrap_cmp( xmlNodePtr x, xmlNodePtr y
  * The array xmlXPathErrorMessages corresponds to the enum xmlXPathError
  */
 static const char* const xmlXPathErrorMessages[] = {
-    "Ok\n",
-    "Number encoding\n",
-    "Unfinished literal\n",
-    "Start of literal\n",
-    "Expected $ for variable reference\n",
-    "Undefined variable\n",
-    "Invalid predicate\n",
-    "Invalid expression\n",
-    "Missing closing curly brace\n",
-    "Unregistered function\n",
-    "Invalid operand\n",
-    "Invalid type\n",
-    "Invalid number of arguments\n",
-    "Invalid context size\n",
-    "Invalid context position\n",
-    "Memory allocation error\n",
-    "Syntax error\n",
-    "Resource error\n",
-    "Sub resource error\n",
-    "Undefined namespace prefix\n",
-    "Encoding error\n",
-    "Char out of XML range\n",
-    "Invalid or incomplete context\n",
-    "Stack usage error\n",
-    "Forbidden variable\n",
-    "Operation limit exceeded\n",
-    "Recursion limit exceeded\n",
-    "?? Unknown error ??\n"	/* Must be last in the list! */
+    "Ok",
+    "Number encoding",
+    "Unfinished literal",
+    "Start of literal",
+    "Expected $ for variable reference",
+    "Undefined variable",
+    "Invalid predicate",
+    "Invalid expression",
+    "Missing closing curly brace",
+    "Unregistered function",
+    "Invalid operand",
+    "Invalid type",
+    "Invalid number of arguments",
+    "Invalid context size",
+    "Invalid context position",
+    "Memory allocation error",
+    "Syntax error",
+    "Resource error",
+    "Sub resource error",
+    "Undefined namespace prefix",
+    "Encoding error",
+    "Char out of XML range",
+    "Invalid or incomplete context",
+    "Stack usage error",
+    "Forbidden variable",
+    "Operation limit exceeded",
+    "Recursion limit exceeded",
+    "?? Unknown error ??"	/* Must be last in the list! */
 };
 #define MAXERRNO ((int)(sizeof(xmlXPathErrorMessages) /	\
 		   sizeof(xmlXPathErrorMessages[0])) - 1)
 /**
- * xmlXPathErrMemory:
- * @ctxt:  an XPath context
- *
  * Handle a memory allocation failure.
+ *
+ * @param ctxt  an XPath context
  */
 void
-xmlXPathErrMemory(xmlXPathContextPtr ctxt)
+xmlXPathErrMemory(xmlXPathContext *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -704,13 +682,12 @@ xmlXPathErrMemory(xmlXPathContextPtr ctx
 }
 
 /**
- * xmlXPathPErrMemory:
- * @ctxt:  an XPath parser context
- *
  * Handle a memory allocation failure.
+ *
+ * @param ctxt  an XPath parser context
  */
 void
-xmlXPathPErrMemory(xmlXPathParserContextPtr ctxt)
+xmlXPathPErrMemory(xmlXPathParserContext *ctxt)
 {
     if (ctxt == NULL)
         return;
@@ -719,15 +696,16 @@ xmlXPathPErrMemory(xmlXPathParserContext
 }
 
 /**
- * xmlXPathErr:
- * @ctxt:  a XPath parser context
- * @code:  the error code
- *
  * Handle an XPath error
+ *
+ * @param ctxt  a XPath parser context
+ * @param code  the error code
+ * @param fmt  format string for error message
+ * @param ...  extra args
  */
-void
-xmlXPathErr(xmlXPathParserContextPtr ctxt, int code)
-{
+static void
+xmlXPathErrFmt(xmlXPathParserContext *ctxt, int code, const char *fmt, ...) {
+    va_list ap;
     xmlStructuredErrorFunc schannel = NULL;
     xmlGenericErrorFunc channel = NULL;
     void *data = NULL;
@@ -777,38 +755,49 @@ xmlXPathErr(xmlXPathParserContextPtr ctx
         data = xmlGenericErrorContext;
     }
 
-    res = xmlRaiseError(schannel, channel, data, NULL, node, XML_FROM_XPATH,
-                        code + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK,
-                        XML_ERR_ERROR, NULL, 0,
-                        (const char *) ctxt->base, NULL, NULL,
-                        ctxt->cur - ctxt->base, 0,
-                        "%s", xmlXPathErrorMessages[code]);
+    va_start(ap, fmt);
+    res = xmlVRaiseError(schannel, channel, data, NULL, node, XML_FROM_XPATH,
+                         code + XML_XPATH_EXPRESSION_OK - XPATH_EXPRESSION_OK,
+                         XML_ERR_ERROR, NULL, 0,
+                         (const char *) ctxt->base, NULL, NULL,
+                         ctxt->cur - ctxt->base, 0,
+                         fmt, ap);
+    va_end(ap);
     if (res < 0)
         xmlXPathPErrMemory(ctxt);
 }
 
 /**
- * xmlXPatherror:
- * @ctxt:  the XPath Parser context
- * @file:  the file name
- * @line:  the line number
- * @no:  the error number
+ * Handle an XPath error
  *
+ * @param ctxt  a XPath parser context
+ * @param code  the error code
+ */
+void
+xmlXPathErr(xmlXPathParserContext *ctxt, int code) {
+    xmlXPathErrFmt(ctxt, code, "%s\n", xmlXPathErrorMessages[code]);
+}
+
+/**
  * Formats an error message.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param file  the file name
+ * @param line  the line number
+ * @param no  the error number
  */
 void
-xmlXPatherror(xmlXPathParserContextPtr ctxt, const char *file ATTRIBUTE_UNUSED,
+xmlXPatherror(xmlXPathParserContext *ctxt, const char *file ATTRIBUTE_UNUSED,
               int line ATTRIBUTE_UNUSED, int no) {
     xmlXPathErr(ctxt, no);
 }
 
 /**
- * xmlXPathCheckOpLimit:
- * @ctxt:  the XPath Parser context
- * @opCount:  the number of operations to be added
- *
  * Adds opCount to the running total of operations and returns -1 if the
  * operation limit is exceeded. Returns 0 otherwise.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param opCount  the number of operations to be added
  */
 static int
 xmlXPathCheckOpLimit(xmlXPathParserContextPtr ctxt, unsigned long opCount) {
@@ -943,11 +932,9 @@ xmlXPathFreeObjectEntry(void *obj, const
  ************************************************************************/
 
 /**
- * xmlXPathNewCompExpr:
- *
  * Create a new Xpath component
  *
- * Returns the newly allocated xmlXPathCompExprPtr or NULL in case of error
+ * @returns the newly allocated xmlXPathCompExpr or NULL in case of error
  */
 static xmlXPathCompExprPtr
 xmlXPathNewCompExpr(void) {
@@ -975,13 +962,12 @@ xmlXPathNewCompExpr(void) {
 }
 
 /**
- * xmlXPathFreeCompExpr:
- * @comp:  an XPATH comp
+ * Free up the memory allocated by `comp`
  *
- * Free up the memory allocated by @comp
+ * @param comp  an XPATH comp
  */
 void
-xmlXPathFreeCompExpr(xmlXPathCompExprPtr comp)
+xmlXPathFreeCompExpr(xmlXPathCompExpr *comp)
 {
     xmlXPathStepOpPtr op;
     int i;
@@ -1026,20 +1012,18 @@ xmlXPathFreeCompExpr(xmlXPathCompExprPtr
 }
 
 /**
- * xmlXPathCompExprAdd:
- * @comp:  the compiled expression
- * @ch1: first child index
- * @ch2: second child index
- * @op:  an op
- * @value:  the first int value
- * @value2:  the second int value
- * @value3:  the third int value
- * @value4:  the first string value
- * @value5:  the second string value
- *
  * Add a step to an XPath Compiled Expression
  *
- * Returns -1 in case of failure, the index otherwise
+ * @param ctxt  XPath parser context
+ * @param ch1  first child index
+ * @param ch2  second child index
+ * @param op  an op
+ * @param value  the first int value
+ * @param value2  the second int value
+ * @param value3  the third int value
+ * @param value4  the first string value
+ * @param value5  the second string value
+ * @returns -1 in case of failure, the index otherwise
  */
 static int
 xmlXPathCompExprAdd(xmlXPathParserContextPtr ctxt, int ch1, int ch2,
@@ -1232,15 +1216,14 @@ xmlXPathDebugDumpValueTree(FILE *output,
 }
 
 /**
- * xmlXPathDebugDumpObject:
- * @output:  the FILE * to dump the output
- * @cur:  the object to inspect
- * @depth:  indentation level
- *
  * Dump the content of the object for debugging purposes
+ *
+ * @param output  the FILE * to dump the output
+ * @param cur  the object to inspect
+ * @param depth  indentation level
  */
 void
-xmlXPathDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth) {
+xmlXPathDebugDumpObject(FILE *output, xmlXPathObject *cur, int depth) {
     int i;
     char shift[100];
 
@@ -1481,15 +1464,14 @@ finish:
 }
 
 /**
- * xmlXPathDebugDumpCompExpr:
- * @output:  the FILE * for the output
- * @comp:  the precompiled XPath expression
- * @depth:  the indentation level.
- *
  * Dumps the tree of the compiled XPath expression.
+ *
+ * @param output  the FILE * for the output
+ * @param comp  the precompiled XPath expression
+ * @param depth  the indentation level.
  */
 void
-xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExprPtr comp,
+xmlXPathDebugDumpCompExpr(FILE *output, xmlXPathCompExpr *comp,
 	                  int depth) {
     int i;
     char shift[100];
@@ -1524,11 +1506,9 @@ xmlXPathDebugDumpCompExpr(FILE *output,
  ************************************************************************/
 
 /**
- * xmlXPathNewCache:
- *
  * Create a new object cache
  *
- * Returns the xmlXPathCache just allocated.
+ * @returns the xmlXPathCache just allocated.
  */
 static xmlXPathContextCachePtr
 xmlXPathNewCache(void)
@@ -1576,29 +1556,25 @@ xmlXPathFreeCache(xmlXPathContextCachePt
 }
 
 /**
- * xmlXPathContextSetCache:
- *
- * @ctxt:  the XPath context
- * @active: enables/disables (creates/frees) the cache
- * @value: a value with semantics dependent on @options
- * @options: options (currently only the value 0 is used)
- *
  * Creates/frees an object cache on the XPath context.
  * If activates XPath objects (xmlXPathObject) will be cached internally
  * to be reused.
- * @options:
- *   0: This will set the XPath object caching:
- *      @value:
- *        This will set the maximum number of XPath objects
- *        to be cached per slot
- *        There are two slots for node-set and misc objects.
- *        Use <0 for the default number (100).
- *   Other values for @options have currently no effect.
  *
- * Returns 0 if the setting succeeded, and -1 on API or internal errors.
+ * `options` must be set to 0 to enable XPath object caching.
+ * Other values for `options` have currently no effect.
+ *
+ * `value` sets the maximum number of XPath objects to be cached per slot.
+ * There are two slots for node-set and misc objects.
+ * Use <0 for the default number (100).
+ *
+ * @param ctxt  the XPath context
+ * @param active  enables/disables (creates/frees) the cache
+ * @param value  a value with semantics dependent on `options`
+ * @param options  options (currently only the value 0 is used)
+ * @returns 0 if the setting succeeded, and -1 on API or internal errors.
  */
 int
-xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
+xmlXPathContextSetCache(xmlXPathContext *ctxt,
 			int active,
 			int value,
 			int options)
@@ -1630,16 +1606,14 @@ xmlXPathContextSetCache(xmlXPathContextP
 }
 
 /**
- * xmlXPathCacheWrapNodeSet:
- * @pctxt: the XPath context
- * @val:  the NodePtr value
- *
- * This is the cached version of xmlXPathWrapNodeSet().
- * Wrap the Nodeset @val in a new xmlXPathObjectPtr
- *
- * Returns the created or reused object.
+ * This is the cached version of #xmlXPathWrapNodeSet.
+ * Wrap the Nodeset `val` in a new xmlXPathObject
  *
  * In case of error the node set is destroyed and NULL is returned.
+ *
+ * @param pctxt  the XPath context
+ * @param val  the NodePtr value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheWrapNodeSet(xmlXPathParserContextPtr pctxt, xmlNodeSetPtr val)
@@ -1669,14 +1643,12 @@ xmlXPathCacheWrapNodeSet(xmlXPathParserC
 }
 
 /**
- * xmlXPathCacheWrapString:
- * @pctxt the XPath context
- * @val:  the xmlChar * value
+ * This is the cached version of #xmlXPathWrapString.
+ * Wraps the `val` string into an XPath object.
  *
- * This is the cached version of xmlXPathWrapString().
- * Wraps the @val string into an XPath object.
- *
- * Returns the created or reused object.
+ * @param pctxt  the XPath context
+ * @param val  the xmlChar * value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheWrapString(xmlXPathParserContextPtr pctxt, xmlChar *val)
@@ -1704,15 +1676,13 @@ xmlXPathCacheWrapString(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCacheNewNodeSet:
- * @pctxt the XPath context
- * @val:  the NodePtr value
- *
- * This is the cached version of xmlXPathNewNodeSet().
- * Acquire an xmlXPathObjectPtr of type NodeSet and initialize
- * it with the single Node @val
- *
- * Returns the created or reused object.
+ * This is the cached version of #xmlXPathNewNodeSet.
+ * Acquire an xmlXPathObject of type NodeSet and initialize
+ * it with the single Node `val`
+ *
+ * @param pctxt  the XPath context
+ * @param val  the NodePtr value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheNewNodeSet(xmlXPathParserContextPtr pctxt, xmlNodePtr val)
@@ -1774,14 +1744,12 @@ xmlXPathCacheNewNodeSet(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCacheNewString:
- * @pctxt the XPath context
- * @val:  the xmlChar * value
+ * This is the cached version of #xmlXPathNewString.
+ * Acquire an xmlXPathObject of type string and of value `val`
  *
- * This is the cached version of xmlXPathNewString().
- * Acquire an xmlXPathObjectPtr of type string and of value @val
- *
- * Returns the created or reused object.
+ * @param pctxt  the XPath context
+ * @param val  the xmlChar * value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheNewString(xmlXPathParserContextPtr pctxt, const xmlChar *val)
@@ -1819,14 +1787,12 @@ xmlXPathCacheNewString(xmlXPathParserCon
 }
 
 /**
- * xmlXPathCacheNewCString:
- * @pctxt the XPath context
- * @val:  the char * value
- *
- * This is the cached version of xmlXPathNewCString().
- * Acquire an xmlXPathObjectPtr of type string and of value @val
+ * This is the cached version of #xmlXPathNewCString.
+ * Acquire an xmlXPathObject of type string and of value `val`
  *
- * Returns the created or reused object.
+ * @param pctxt  the XPath context
+ * @param val  the char * value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheNewCString(xmlXPathParserContextPtr pctxt, const char *val)
@@ -1835,14 +1801,12 @@ xmlXPathCacheNewCString(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCacheNewBoolean:
- * @pctxt the XPath context
- * @val:  the boolean value
+ * This is the cached version of #xmlXPathNewBoolean.
+ * Acquires an xmlXPathObject of type boolean and of value `val`
  *
- * This is the cached version of xmlXPathNewBoolean().
- * Acquires an xmlXPathObjectPtr of type boolean and of value @val
- *
- * Returns the created or reused object.
+ * @param pctxt  the XPath context
+ * @param val  the boolean value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheNewBoolean(xmlXPathParserContextPtr pctxt, int val)
@@ -1871,14 +1835,12 @@ xmlXPathCacheNewBoolean(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCacheNewFloat:
- * @pctxt the XPath context
- * @val:  the double value
- *
- * This is the cached version of xmlXPathNewFloat().
- * Acquires an xmlXPathObjectPtr of type double and of value @val
+ * This is the cached version of #xmlXPathNewFloat.
+ * Acquires an xmlXPathObject of type double and of value `val`
  *
- * Returns the created or reused object.
+ * @param pctxt  the XPath context
+ * @param val  the double value
+ * @returns the created or reused object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheNewFloat(xmlXPathParserContextPtr pctxt, double val)
@@ -1907,14 +1869,12 @@ xmlXPathCacheNewFloat(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCacheObjectCopy:
- * @pctxt the XPath context
- * @val:  the original object
- *
- * This is the cached version of xmlXPathObjectCopy().
+ * This is the cached version of #xmlXPathObjectCopy.
  * Acquire a copy of a given object
  *
- * Returns a created or reused created object.
+ * @param pctxt  the XPath context
+ * @param val  the original object
+ * @returns a created or reused created object.
  */
 static xmlXPathObjectPtr
 xmlXPathCacheObjectCopy(xmlXPathParserContextPtr pctxt, xmlXPathObjectPtr val)
@@ -1960,13 +1920,11 @@ xmlXPathCacheObjectCopy(xmlXPathParserCo
  ************************************************************************/
 
 /**
- * xmlXPathCastToNumberInternal:
- * @ctxt:  parser context
- * @val:  an XPath object
- *
  * Converts an XPath object to its number value
  *
- * Returns the number value
+ * @param ctxt  parser context
+ * @param val  an XPath object
+ * @returns the number value
  */
 static double
 xmlXPathCastToNumberInternal(xmlXPathParserContextPtr ctxt,
@@ -2011,15 +1969,13 @@ xmlXPathCastToNumberInternal(xmlXPathPar
 }
 
 /**
- * xmlXPathValuePop:
- * @ctxt: an XPath evaluation context
- *
  * Pops the top XPath object from the value stack
  *
- * Returns the XPath object just removed
+ * @param ctxt  an XPath evaluation context
+ * @returns the XPath object just removed
  */
-xmlXPathObjectPtr
-xmlXPathValuePop(xmlXPathParserContextPtr ctxt)
+xmlXPathObject *
+xmlXPathValuePop(xmlXPathParserContext *ctxt)
 {
     xmlXPathObjectPtr ret;
 
@@ -2037,19 +1993,17 @@ xmlXPathValuePop(xmlXPathParserContextPt
 }
 
 /**
- * xmlXPathValuePush:
- * @ctxt:  an XPath evaluation context
- * @value:  the XPath object
- *
  * Pushes a new XPath object on top of the value stack. If value is NULL,
  * a memory error is recorded in the parser context.
  *
- * Returns the number of items on the value stack, or -1 in case of error.
- *
  * The object is destroyed in case of error.
+ *
+ * @param ctxt  an XPath evaluation context
+ * @param value  the XPath object
+ * @returns the number of items on the value stack, or -1 in case of error.
  */
 int
-xmlXPathValuePush(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr value)
+xmlXPathValuePush(xmlXPathParserContext *ctxt, xmlXPathObject *value)
 {
     if (ctxt == NULL) return(-1);
     if (value == NULL) {
@@ -2085,16 +2039,14 @@ xmlXPathValuePush(xmlXPathParserContextP
 }
 
 /**
- * xmlXPathPopBoolean:
- * @ctxt:  an XPath parser context
- *
  * Pops a boolean from the stack, handling conversion if needed.
- * Check error with #xmlXPathCheckError.
+ * Check error with xmlXPathCheckError.
  *
- * Returns the boolean
+ * @param ctxt  an XPath parser context
+ * @returns the boolean
  */
 int
-xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt) {
+xmlXPathPopBoolean (xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr obj;
     int ret;
 
@@ -2112,16 +2064,14 @@ xmlXPathPopBoolean (xmlXPathParserContex
 }
 
 /**
- * xmlXPathPopNumber:
- * @ctxt:  an XPath parser context
- *
  * Pops a number from the stack, handling conversion if needed.
- * Check error with #xmlXPathCheckError.
+ * Check error with xmlXPathCheckError.
  *
- * Returns the number
+ * @param ctxt  an XPath parser context
+ * @returns the number
  */
 double
-xmlXPathPopNumber (xmlXPathParserContextPtr ctxt) {
+xmlXPathPopNumber (xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr obj;
     double ret;
 
@@ -2139,16 +2089,14 @@ xmlXPathPopNumber (xmlXPathParserContext
 }
 
 /**
- * xmlXPathPopString:
- * @ctxt:  an XPath parser context
- *
  * Pops a string from the stack, handling conversion if needed.
- * Check error with #xmlXPathCheckError.
+ * Check error with xmlXPathCheckError.
  *
- * Returns the string
+ * @param ctxt  an XPath parser context
+ * @returns the string
  */
 xmlChar *
-xmlXPathPopString (xmlXPathParserContextPtr ctxt) {
+xmlXPathPopString (xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr obj;
     xmlChar * ret;
 
@@ -2165,16 +2113,14 @@ xmlXPathPopString (xmlXPathParserContext
 }
 
 /**
- * xmlXPathPopNodeSet:
- * @ctxt:  an XPath parser context
- *
  * Pops a node-set from the stack, handling conversion if needed.
- * Check error with #xmlXPathCheckError.
+ * Check error with xmlXPathCheckError.
  *
- * Returns the node-set
+ * @param ctxt  an XPath parser context
+ * @returns the node-set
  */
-xmlNodeSetPtr
-xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt) {
+xmlNodeSet *
+xmlXPathPopNodeSet (xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr obj;
     xmlNodeSetPtr ret;
 
@@ -2195,16 +2141,14 @@ xmlXPathPopNodeSet (xmlXPathParserContex
 }
 
 /**
- * xmlXPathPopExternal:
- * @ctxt:  an XPath parser context
- *
  * Pops an external object from the stack, handling conversion if needed.
- * Check error with #xmlXPathCheckError.
+ * Check error with xmlXPathCheckError.
  *
- * Returns the object
+ * @param ctxt  an XPath parser context
+ * @returns the object
  */
 void *
-xmlXPathPopExternal (xmlXPathParserContextPtr ctxt) {
+xmlXPathPopExternal (xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr obj;
     void * ret;
 
@@ -2250,13 +2194,6 @@ xmlXPathPopExternal (xmlXPathParserConte
 #define SKIP(val) ctxt->cur += (val)
 #define NXT(val) ctxt->cur[(val)]
 #define CUR_PTR ctxt->cur
-#define CUR_CHAR(l) xmlXPathCurrentChar(ctxt, &l)
-
-#define COPY_BUF(b, i, v)						\
-    if (v < 0x80) b[i++] = v;						\
-    else i += xmlCopyCharMultiByte(&b[i],v)
-
-#define NEXTL(l)  ctxt->cur += l
 
 #define SKIP_BLANKS							\
     while (IS_BLANK_CH(*(ctxt->cur))) NEXT
@@ -2281,12 +2218,11 @@ xmlXPathPopExternal (xmlXPathParserConte
 #define EXPONENT_DIGITS (3 + 2)
 
 /**
- * xmlXPathFormatNumber:
- * @number:     number to format
- * @buffer:     output buffer
- * @buffersize: size of output buffer
- *
  * Convert the number into a string representation.
+ *
+ * @param number  number to format
+ * @param buffer  output buffer
+ * @param buffersize  size of output buffer
  */
 static void
 xmlXPathFormatNumber(double number, char buffer[], int buffersize)
@@ -2414,20 +2350,18 @@ xmlXPathFormatNumber(double number, char
  ************************************************************************/
 
 /**
- * xmlXPathOrderDocElems:
- * @doc:  an input document
- *
  * 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->content
  * field, the value stored is actually - the node number (starting at -1)
  * to be able to differentiate from line numbers.
  *
- * Returns the number of elements found in the document or -1 in case
+ * @param doc  an input document
+ * @returns the number of elements found in the document or -1 in case
  *    of error.
  */
 long
-xmlXPathOrderDocElems(xmlDocPtr doc) {
+xmlXPathOrderDocElems(xmlDoc *doc) {
     XML_INTPTR_T count = 0;
     xmlNodePtr cur;
 
@@ -2465,17 +2399,15 @@ xmlXPathOrderDocElems(xmlDocPtr doc) {
 }
 
 /**
- * xmlXPathCmpNodes:
- * @node1:  the first node
- * @node2:  the second node
- *
  * Compare two nodes w.r.t document order
  *
- * Returns -2 in case of error 1 if first point < second point, 0 if
+ * @param node1  the first node
+ * @param node2  the second node
+ * @returns -2 in case of error 1 if first point < second point, 0 if
  *         it's the same node, -1 otherwise
  */
 int
-xmlXPathCmpNodes(xmlNodePtr node1, xmlNodePtr node2) {
+xmlXPathCmpNodes(xmlNode *node1, xmlNode *node2) {
     int depth1, depth2;
     int attr1 = 0, attr2 = 0;
     xmlNodePtr attrNode1 = NULL, attrNode2 = NULL;
@@ -2612,13 +2544,12 @@ xmlXPathCmpNodes(xmlNodePtr node1, xmlNo
 }
 
 /**
- * xmlXPathNodeSetSort:
- * @set:  the node set
- *
  * Sort the node set in document order
+ *
+ * @param set  the node set
  */
 void
-xmlXPathNodeSetSort(xmlNodeSetPtr set) {
+xmlXPathNodeSetSort(xmlNodeSet *set) {
 #ifndef WITH_TIM_SORT
     int i, j, incr, len;
     xmlNodePtr tmp;
@@ -2661,15 +2592,13 @@ xmlXPathNodeSetSort(xmlNodeSetPtr set) {
 
 #define XML_NODESET_DEFAULT	10
 /**
- * xmlXPathNodeSetDupNs:
- * @node:  the parent node of the namespace XPath node
- * @ns:  the libxml namespace declaration node.
- *
  * Namespace node in libxml don'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.
  *
- * Returns the newly created object.
+ * @param node  the parent node of the namespace XPath node
+ * @param ns  the libxml namespace declaration node.
+ * @returns the newly created object.
  */
 static xmlNodePtr
 xmlXPathNodeSetDupNs(xmlNodePtr node, xmlNsPtr ns) {
@@ -2708,15 +2637,14 @@ xmlXPathNodeSetDupNs(xmlNodePtr node, xm
 }
 
 /**
- * xmlXPathNodeSetFreeNs:
- * @ns:  the XPath namespace node found in a nodeset.
- *
  * Namespace nodes in libxml don'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
+ *
+ * @param ns  the XPath namespace node found in a nodeset.
  */
 void
-xmlXPathNodeSetFreeNs(xmlNsPtr ns) {
+xmlXPathNodeSetFreeNs(xmlNs *ns) {
     if ((ns == NULL) || (ns->type != XML_NAMESPACE_DECL))
 	return;
 
@@ -2730,15 +2658,13 @@ xmlXPathNodeSetFreeNs(xmlNsPtr ns) {
 }
 
 /**
- * xmlXPathNodeSetCreate:
- * @val:  an initial xmlNodePtr, or NULL
- *
- * Create a new xmlNodeSetPtr of type double and of value @val
+ * Create a new xmlNodeSet of type double and of value `val`
  *
- * Returns the newly created object.
+ * @param val  an initial xmlNode, or NULL
+ * @returns the newly created object.
  */
-xmlNodeSetPtr
-xmlXPathNodeSetCreate(xmlNodePtr val) {
+xmlNodeSet *
+xmlXPathNodeSetCreate(xmlNode *val) {
     xmlNodeSetPtr ret;
 
     ret = (xmlNodeSetPtr) xmlMalloc(sizeof(xmlNodeSet));
@@ -2771,16 +2697,14 @@ xmlXPathNodeSetCreate(xmlNodePtr val) {
 }
 
 /**
- * xmlXPathNodeSetContains:
- * @cur:  the node-set
- * @val:  the node
+ * checks whether `cur` contains `val`
  *
- * checks whether @cur contains @val
- *
- * Returns true (1) if @cur contains @val, false (0) otherwise
+ * @param cur  the node-set
+ * @param val  the node
+ * @returns true (1) if `cur` contains `val`, false (0) otherwise
  */
 int
-xmlXPathNodeSetContains (xmlNodeSetPtr cur, xmlNodePtr val) {
+xmlXPathNodeSetContains (xmlNodeSet *cur, xmlNode *val) {
     int i;
 
     if ((cur == NULL) || (val == NULL)) return(0);
@@ -2826,17 +2750,15 @@ xmlXPathNodeSetGrow(xmlNodeSetPtr cur) {
 }
 
 /**
- * xmlXPathNodeSetAddNs:
- * @cur:  the initial node set
- * @node:  the hosting node
- * @ns:  a the namespace node
- *
  * add a new namespace node to an existing NodeSet
  *
- * Returns 0 in case of success and -1 in case of error
+ * @param cur  the initial node set
+ * @param node  the hosting node
+ * @param ns  a the namespace node
+ * @returns 0 in case of success and -1 in case of error
  */
 int
-xmlXPathNodeSetAddNs(xmlNodeSetPtr cur, xmlNodePtr node, xmlNsPtr ns) {
+xmlXPathNodeSetAddNs(xmlNodeSet *cur, xmlNode *node, xmlNs *ns) {
     int i;
     xmlNodePtr nsNode;
 
@@ -2872,16 +2794,14 @@ xmlXPathNodeSetAddNs(xmlNodeSetPtr cur,
 }
 
 /**
- * xmlXPathNodeSetAdd:
- * @cur:  the initial node set
- * @val:  a new xmlNodePtr
+ * add a new xmlNode to an existing NodeSet
  *
- * add a new xmlNodePtr to an existing NodeSet
- *
- * Returns 0 in case of success, and -1 in case of error
+ * @param cur  the initial node set
+ * @param val  a new xmlNode
+ * @returns 0 in case of success, and -1 in case of error
  */
 int
-xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val) {
+xmlXPathNodeSetAdd(xmlNodeSet *cur, xmlNode *val) {
     int i;
 
     if ((cur == NULL) || (val == NULL)) return(-1);
@@ -2914,17 +2834,15 @@ xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xm
 }
 
 /**
- * xmlXPathNodeSetAddUnique:
- * @cur:  the initial node set
- * @val:  a new xmlNodePtr
- *
- * add a new xmlNodePtr to an existing NodeSet, optimized version
+ * add a new xmlNode to an existing NodeSet, optimized version
  * when we are sure the node is not already in the set.
  *
- * Returns 0 in case of success and -1 in case of failure
+ * @param cur  the initial node set
+ * @param val  a new xmlNode
+ * @returns 0 in case of success and -1 in case of failure
  */
 int
-xmlXPathNodeSetAddUnique(xmlNodeSetPtr cur, xmlNodePtr val) {
+xmlXPathNodeSetAddUnique(xmlNodeSet *cur, xmlNode *val) {
     if ((cur == NULL) || (val == NULL)) return(-1);
 
     /* @@ with_ns to check whether namespace nodes should be looked at @@ */
@@ -2949,19 +2867,17 @@ xmlXPathNodeSetAddUnique(xmlNodeSetPtr c
 }
 
 /**
- * xmlXPathNodeSetMerge:
- * @val1:  the first NodeSet or NULL
- * @val2:  the second NodeSet
- *
- * Merges two nodesets, all nodes from @val2 are added to @val1
- * if @val1 is NULL, a new set is created and copied from @val2
+ * Merges two nodesets, all nodes from `val2` are added to `val1`
+ * if `val1` is NULL, a new set is created and copied from `val2`
  *
- * Returns @val1 once extended or NULL in case of error.
+ * Frees `val1` in case of error.
  *
- * Frees @val1 in case of error.
+ * @param val1  the first NodeSet or NULL
+ * @param val2  the second NodeSet
+ * @returns `val1` once extended or NULL in case of error.
  */
-xmlNodeSetPtr
-xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2) {
+xmlNodeSet *
+xmlXPathNodeSetMerge(xmlNodeSet *val1, xmlNodeSet *val2) {
     int i, j, initNr, skip;
     xmlNodePtr n1, n2;
 
@@ -3028,16 +2944,14 @@ error:
 
 
 /**
- * xmlXPathNodeSetMergeAndClear:
- * @set1:  the first NodeSet or NULL
- * @set2:  the second NodeSet
- *
- * Merges two nodesets, all nodes from @set2 are added to @set1.
+ * Merges two nodesets, all nodes from `set2` are added to `set1`.
  * Checks for duplicate nodes. Clears set2.
  *
- * Returns @set1 once extended or NULL in case of error.
+ * Frees `set1` in case of error.
  *
- * Frees @set1 in case of error.
+ * @param set1  the first NodeSet or NULL
+ * @param set2  the second NodeSet
+ * @returns `set1` once extended or NULL in case of error.
  */
 static xmlNodeSetPtr
 xmlXPathNodeSetMergeAndClear(xmlNodeSetPtr set1, xmlNodeSetPtr set2)
@@ -3093,16 +3007,14 @@ error:
 }
 
 /**
- * xmlXPathNodeSetMergeAndClearNoDupls:
- * @set1:  the first NodeSet or NULL
- * @set2:  the second NodeSet
- *
- * Merges two nodesets, all nodes from @set2 are added to @set1.
+ * Merges two nodesets, all nodes from `set2` are added to `set1`.
  * Doesn't check for duplicate nodes. Clears set2.
  *
- * Returns @set1 once extended or NULL in case of error.
+ * Frees `set1` in case of error.
  *
- * Frees @set1 in case of error.
+ * @param set1  the first NodeSet or NULL
+ * @param set2  the second NodeSet
+ * @returns `set1` once extended or NULL in case of error.
  */
 static xmlNodeSetPtr
 xmlXPathNodeSetMergeAndClearNoDupls(xmlNodeSetPtr set1, xmlNodeSetPtr set2)
@@ -3131,14 +3043,13 @@ error:
 }
 
 /**
- * xmlXPathNodeSetDel:
- * @cur:  the initial node set
- * @val:  an xmlNodePtr
+ * Removes an xmlNode from an existing NodeSet
  *
- * Removes an xmlNodePtr from an existing NodeSet
+ * @param cur  the initial node set
+ * @param val  an xmlNode
  */
 void
-xmlXPathNodeSetDel(xmlNodeSetPtr cur, xmlNodePtr val) {
+xmlXPathNodeSetDel(xmlNodeSet *cur, xmlNode *val) {
     int i;
 
     if (cur == NULL) return;
@@ -3163,14 +3074,13 @@ xmlXPathNodeSetDel(xmlNodeSetPtr cur, xm
 }
 
 /**
- * xmlXPathNodeSetRemove:
- * @cur:  the initial node set
- * @val:  the index to remove
- *
  * Removes an entry from an existing NodeSet list.
+ *
+ * @param cur  the initial node set
+ * @param val  the index to remove
  */
 void
-xmlXPathNodeSetRemove(xmlNodeSetPtr cur, int val) {
+xmlXPathNodeSetRemove(xmlNodeSet *cur, int val) {
     if (cur == NULL) return;
     if (val >= cur->nodeNr) return;
     if ((cur->nodeTab[val] != NULL) &&
@@ -3183,13 +3093,12 @@ xmlXPathNodeSetRemove(xmlNodeSetPtr cur,
 }
 
 /**
- * xmlXPathFreeNodeSet:
- * @obj:  the xmlNodeSetPtr to free
- *
  * Free the NodeSet compound (not the actual nodes !).
+ *
+ * @param obj  the xmlNodeSet to free
  */
 void
-xmlXPathFreeNodeSet(xmlNodeSetPtr obj) {
+xmlXPathFreeNodeSet(xmlNodeSet *obj) {
     if (obj == NULL) return;
     if (obj->nodeTab != NULL) {
 	int i;
@@ -3205,13 +3114,13 @@ xmlXPathFreeNodeSet(xmlNodeSetPtr obj) {
 }
 
 /**
- * xmlXPathNodeSetClearFromPos:
- * @set: the node set to be cleared
- * @pos: the start position to clear from
- *
  * Clears the list from temporary XPath objects (e.g. namespace nodes
- * are feed) starting with the entry at @pos, but does *not* free the list
- * itself. Sets the length of the list to @pos.
+ * are feed) starting with the entry at `pos`, but does *not* free the list
+ * itself. Sets the length of the list to `pos`.
+ *
+ * @param set  the node set to be cleared
+ * @param pos  the start position to clear from
+ * @param hasNsNodes  the node set might contain namespace nodes
  */
 static void
 xmlXPathNodeSetClearFromPos(xmlNodeSetPtr set, int pos, int hasNsNodes)
@@ -3233,12 +3142,12 @@ xmlXPathNodeSetClearFromPos(xmlNodeSetPt
 }
 
 /**
- * xmlXPathNodeSetClear:
- * @set:  the node set to clear
- *
  * Clears the list from all temporary XPath objects (e.g. namespace nodes
  * are feed), but does *not* free the list itself. Sets the length of the
  * list to 0.
+ *
+ * @param set  the node set to clear
+ * @param hasNsNodes  the node set might contain namespace nodes
  */
 static void
 xmlXPathNodeSetClear(xmlNodeSetPtr set, int hasNsNodes)
@@ -3247,12 +3156,11 @@ xmlXPathNodeSetClear(xmlNodeSetPtr set,
 }
 
 /**
- * xmlXPathNodeSetKeepLast:
- * @set: the node set to be cleared
- *
  * Move the last node to the first position and clear temporary XPath objects
  * (e.g. namespace nodes) from all other nodes. Sets the length of the list
  * to 1.
+ *
+ * @param set  the node set to be cleared
  */
 static void
 xmlXPathNodeSetKeepLast(xmlNodeSetPtr set)
@@ -3273,16 +3181,14 @@ xmlXPathNodeSetKeepLast(xmlNodeSetPtr se
 }
 
 /**
- * xmlXPathNewNodeSet:
- * @val:  the NodePtr value
- *
- * Create a new xmlXPathObjectPtr of type NodeSet and initialize
- * it with the single Node @val
+ * Create a new xmlXPathObject of type NodeSet and initialize
+ * it with the single Node `val`
  *
- * Returns the newly created object.
+ * @param val  the NodePtr value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPathNewNodeSet(xmlNodePtr val) {
+xmlXPathObject *
+xmlXPathNewNodeSet(xmlNode *val) {
     xmlXPathObjectPtr ret;
 
     ret = (xmlXPathObjectPtr) xmlMalloc(sizeof(xmlXPathObject));
@@ -3301,16 +3207,14 @@ xmlXPathNewNodeSet(xmlNodePtr val) {
 }
 
 /**
- * xmlXPathNewValueTree:
- * @val:  the NodePtr value
+ * Create a new xmlXPathObject of type Value Tree (XSLT) and initialize
+ * it with the tree root `val`
  *
- * Create a new xmlXPathObjectPtr of type Value Tree (XSLT) and initialize
- * it with the tree root @val
- *
- * Returns the newly created object.
+ * @param val  the NodePtr value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPathNewValueTree(xmlNodePtr val) {
+xmlXPathObject *
+xmlXPathNewValueTree(xmlNode *val) {
     xmlXPathObjectPtr ret;
 
     ret = xmlXPathNewNodeSet(val);
@@ -3322,16 +3226,14 @@ xmlXPathNewValueTree(xmlNodePtr val) {
 }
 
 /**
- * xmlXPathNewNodeSetList:
- * @val:  an existing NodeSet
- *
- * Create a new xmlXPathObjectPtr of type NodeSet and initialize
- * it with the Nodeset @val
+ * Create a new xmlXPathObject of type NodeSet and initialize
+ * it with the Nodeset `val`
  *
- * Returns the newly created object.
+ * @param val  an existing NodeSet
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPathNewNodeSetList(xmlNodeSetPtr val)
+xmlXPathObject *
+xmlXPathNewNodeSetList(xmlNodeSet *val)
 {
     xmlXPathObjectPtr ret;
 
@@ -3354,17 +3256,15 @@ xmlXPathNewNodeSetList(xmlNodeSetPtr val
 }
 
 /**
- * xmlXPathWrapNodeSet:
- * @val:  the NodePtr value
- *
- * Wrap the Nodeset @val in a new xmlXPathObjectPtr
- *
- * Returns the newly created object.
+ * Wrap the Nodeset `val` in a new xmlXPathObject
  *
  * In case of error the node set is destroyed and NULL is returned.
+ *
+ * @param val  the NodePtr value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPathWrapNodeSet(xmlNodeSetPtr val) {
+xmlXPathObject *
+xmlXPathWrapNodeSet(xmlNodeSet *val) {
     xmlXPathObjectPtr ret;
 
     ret = (xmlXPathObjectPtr) xmlMalloc(sizeof(xmlXPathObject));
@@ -3379,31 +3279,28 @@ xmlXPathWrapNodeSet(xmlNodeSetPtr val) {
 }
 
 /**
- * xmlXPathFreeNodeSetList:
- * @obj:  an existing NodeSetList object
+ * Free up the xmlXPathObject `obj` but don't deallocate the objects in
+ * the list contrary to #xmlXPathFreeObject.
  *
- * Free up the xmlXPathObjectPtr @obj but don't deallocate the objects in
- * the list contrary to xmlXPathFreeObject().
+ * @param obj  an existing NodeSetList object
  */
 void
-xmlXPathFreeNodeSetList(xmlXPathObjectPtr obj) {
+xmlXPathFreeNodeSetList(xmlXPathObject *obj) {
     if (obj == NULL) return;
     xmlFree(obj);
 }
 
 /**
- * xmlXPathDifference:
- * @nodes1:  a node-set
- * @nodes2:  a node-set
- *
  * Implements the EXSLT - Sets difference() function:
  *    node-set set:difference (node-set, node-set)
  *
- * Returns the difference between the two node sets, or nodes1 if
+ * @param nodes1  a node-set
+ * @param nodes2  a node-set
+ * @returns the difference between the two node sets, or nodes1 if
  *         nodes2 is empty
  */
-xmlNodeSetPtr
-xmlXPathDifference (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathDifference (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     xmlNodeSetPtr ret;
     int i, l1;
     xmlNodePtr cur;
@@ -3432,18 +3329,16 @@ xmlXPathDifference (xmlNodeSetPtr nodes1
 }
 
 /**
- * xmlXPathIntersection:
- * @nodes1:  a node-set
- * @nodes2:  a node-set
- *
  * Implements the EXSLT - Sets intersection() function:
  *    node-set set:intersection (node-set, node-set)
  *
- * Returns a node set comprising the nodes that are within both the
+ * @param nodes1  a node-set
+ * @param nodes2  a node-set
+ * @returns a node set comprising the nodes that are within both the
  *         node sets passed as arguments
  */
-xmlNodeSetPtr
-xmlXPathIntersection (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathIntersection (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     xmlNodeSetPtr ret = xmlXPathNodeSetCreate(NULL);
     int i, l1;
     xmlNodePtr cur;
@@ -3470,17 +3365,15 @@ xmlXPathIntersection (xmlNodeSetPtr node
 }
 
 /**
- * xmlXPathDistinctSorted:
- * @nodes:  a node-set, sorted by document order
- *
  * Implements the EXSLT - Sets distinct() function:
  *    node-set set:distinct (node-set)
  *
- * Returns a subset of the nodes contained in @nodes, or @nodes if
+ * @param nodes  a node-set, sorted by document order
+ * @returns a subset of the nodes contained in `nodes`, or `nodes` if
  *         it is empty
  */
-xmlNodeSetPtr
-xmlXPathDistinctSorted (xmlNodeSetPtr nodes) {
+xmlNodeSet *
+xmlXPathDistinctSorted (xmlNodeSet *nodes) {
     xmlNodeSetPtr ret;
     xmlHashTablePtr hash;
     int i, l;
@@ -3519,19 +3412,17 @@ error:
 }
 
 /**
- * xmlXPathDistinct:
- * @nodes:  a node-set
- *
  * Implements the EXSLT - Sets distinct() function:
  *    node-set set:distinct (node-set)
- * @nodes is sorted by document order, then #exslSetsDistinctSorted
+ * `nodes` is sorted by document order, then exslSetsDistinctSorted
  * is called with the sorted node-set
  *
- * Returns a subset of the nodes contained in @nodes, or @nodes if
+ * @param nodes  a node-set
+ * @returns a subset of the nodes contained in `nodes`, or `nodes` if
  *         it is empty
  */
-xmlNodeSetPtr
-xmlXPathDistinct (xmlNodeSetPtr nodes) {
+xmlNodeSet *
+xmlXPathDistinct (xmlNodeSet *nodes) {
     if (xmlXPathNodeSetIsEmpty(nodes))
 	return(nodes);
 
@@ -3540,18 +3431,16 @@ xmlXPathDistinct (xmlNodeSetPtr nodes) {
 }
 
 /**
- * xmlXPathHasSameNodes:
- * @nodes1:  a node-set
- * @nodes2:  a node-set
- *
  * Implements the EXSLT - Sets has-same-nodes function:
  *    boolean set:has-same-node(node-set, node-set)
  *
- * Returns true (1) if @nodes1 shares any node with @nodes2, false (0)
+ * @param nodes1  a node-set
+ * @param nodes2  a node-set
+ * @returns true (1) if `nodes1` shares any node with `nodes2`, false (0)
  *         otherwise
  */
 int
-xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlXPathHasSameNodes (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     int i, l;
     xmlNodePtr cur;
 
@@ -3569,19 +3458,17 @@ xmlXPathHasSameNodes (xmlNodeSetPtr node
 }
 
 /**
- * xmlXPathNodeLeadingSorted:
- * @nodes: a node-set, sorted by document order
- * @node: a node
- *
  * Implements the EXSLT - Sets leading() function:
  *    node-set set:leading (node-set, node-set)
  *
- * Returns the nodes in @nodes that precede @node in document order,
- *         @nodes if @node is NULL or an empty node-set if @nodes
- *         doesn't contain @node
+ * @param nodes  a node-set, sorted by document order
+ * @param node  a node
+ * @returns the nodes in `nodes` that precede `node` in document order,
+ *         `nodes` if `node` is NULL or an empty node-set if `nodes`
+ *         doesn't contain `node`
  */
-xmlNodeSetPtr
-xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, xmlNodePtr node) {
+xmlNodeSet *
+xmlXPathNodeLeadingSorted (xmlNodeSet *nodes, xmlNode *node) {
     int i, l;
     xmlNodePtr cur;
     xmlNodeSetPtr ret;
@@ -3610,39 +3497,35 @@ xmlXPathNodeLeadingSorted (xmlNodeSetPtr
 }
 
 /**
- * xmlXPathNodeLeading:
- * @nodes:  a node-set
- * @node:  a node
- *
  * Implements the EXSLT - Sets leading() function:
  *    node-set set:leading (node-set, node-set)
- * @nodes is sorted by document order, then #exslSetsNodeLeadingSorted
+ * `nodes` is sorted by document order, then exslSetsNodeLeadingSorted
  * is called.
  *
- * Returns the nodes in @nodes that precede @node in document order,
- *         @nodes if @node is NULL or an empty node-set if @nodes
- *         doesn't contain @node
+ * @param nodes  a node-set
+ * @param node  a node
+ * @returns the nodes in `nodes` that precede `node` in document order,
+ *         `nodes` if `node` is NULL or an empty node-set if `nodes`
+ *         doesn't contain `node`
  */
-xmlNodeSetPtr
-xmlXPathNodeLeading (xmlNodeSetPtr nodes, xmlNodePtr node) {
+xmlNodeSet *
+xmlXPathNodeLeading (xmlNodeSet *nodes, xmlNode *node) {
     xmlXPathNodeSetSort(nodes);
     return(xmlXPathNodeLeadingSorted(nodes, node));
 }
 
 /**
- * xmlXPathLeadingSorted:
- * @nodes1:  a node-set, sorted by document order
- * @nodes2:  a node-set, sorted by document order
- *
  * Implements the EXSLT - Sets leading() function:
  *    node-set set:leading (node-set, node-set)
  *
- * Returns 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't contain @nodes2
+ * @param nodes1  a node-set, sorted by document order
+ * @param nodes2  a node-set, sorted by document order
+ * @returns 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't contain `nodes2`
  */
-xmlNodeSetPtr
-xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathLeadingSorted (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     if (xmlXPathNodeSetIsEmpty(nodes2))
 	return(nodes1);
     return(xmlXPathNodeLeadingSorted(nodes1,
@@ -3650,21 +3533,19 @@ xmlXPathLeadingSorted (xmlNodeSetPtr nod
 }
 
 /**
- * xmlXPathLeading:
- * @nodes1:  a node-set
- * @nodes2:  a node-set
- *
  * 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.
+ * `nodes1` and `nodes2` are sorted by document order, then
+ * exslSetsLeadingSorted is called.
  *
- * Returns 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't contain @nodes2
+ * @param nodes1  a node-set
+ * @param nodes2  a node-set
+ * @returns 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't contain `nodes2`
  */
-xmlNodeSetPtr
-xmlXPathLeading (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathLeading (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     if (xmlXPathNodeSetIsEmpty(nodes2))
 	return(nodes1);
     if (xmlXPathNodeSetIsEmpty(nodes1))
@@ -3676,19 +3557,17 @@ xmlXPathLeading (xmlNodeSetPtr nodes1, x
 }
 
 /**
- * xmlXPathNodeTrailingSorted:
- * @nodes: a node-set, sorted by document order
- * @node: a node
- *
  * Implements the EXSLT - Sets trailing() function:
  *    node-set set:trailing (node-set, node-set)
  *
- * Returns the nodes in @nodes that follow @node in document order,
- *         @nodes if @node is NULL or an empty node-set if @nodes
- *         doesn't contain @node
+ * @param nodes  a node-set, sorted by document order
+ * @param node  a node
+ * @returns the nodes in `nodes` that follow `node` in document order,
+ *         `nodes` if `node` is NULL or an empty node-set if `nodes`
+ *         doesn't contain `node`
  */
-xmlNodeSetPtr
-xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, xmlNodePtr node) {
+xmlNodeSet *
+xmlXPathNodeTrailingSorted (xmlNodeSet *nodes, xmlNode *node) {
     int i, l;
     xmlNodePtr cur;
     xmlNodeSetPtr ret;
@@ -3718,39 +3597,35 @@ xmlXPathNodeTrailingSorted (xmlNodeSetPt
 }
 
 /**
- * xmlXPathNodeTrailing:
- * @nodes:  a node-set
- * @node:  a node
- *
  * Implements the EXSLT - Sets trailing() function:
  *    node-set set:trailing (node-set, node-set)
- * @nodes is sorted by document order, then #xmlXPathNodeTrailingSorted
+ * `nodes` is sorted by document order, then #xmlXPathNodeTrailingSorted
  * is called.
  *
- * Returns the nodes in @nodes that follow @node in document order,
- *         @nodes if @node is NULL or an empty node-set if @nodes
- *         doesn't contain @node
+ * @param nodes  a node-set
+ * @param node  a node
+ * @returns the nodes in `nodes` that follow `node` in document order,
+ *         `nodes` if `node` is NULL or an empty node-set if `nodes`
+ *         doesn't contain `node`
  */
-xmlNodeSetPtr
-xmlXPathNodeTrailing (xmlNodeSetPtr nodes, xmlNodePtr node) {
+xmlNodeSet *
+xmlXPathNodeTrailing (xmlNodeSet *nodes, xmlNode *node) {
     xmlXPathNodeSetSort(nodes);
     return(xmlXPathNodeTrailingSorted(nodes, node));
 }
 
 /**
- * xmlXPathTrailingSorted:
- * @nodes1:  a node-set, sorted by document order
- * @nodes2:  a node-set, sorted by document order
- *
  * Implements the EXSLT - Sets trailing() function:
  *    node-set set:trailing (node-set, node-set)
  *
- * Returns 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't contain @nodes2
+ * @param nodes1  a node-set, sorted by document order
+ * @param nodes2  a node-set, sorted by document order
+ * @returns 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't contain `nodes2`
  */
-xmlNodeSetPtr
-xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathTrailingSorted (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     if (xmlXPathNodeSetIsEmpty(nodes2))
 	return(nodes1);
     return(xmlXPathNodeTrailingSorted(nodes1,
@@ -3758,21 +3633,19 @@ xmlXPathTrailingSorted (xmlNodeSetPtr no
 }
 
 /**
- * xmlXPathTrailing:
- * @nodes1:  a node-set
- * @nodes2:  a node-set
- *
  * Implements the EXSLT - Sets trailing() function:
  *    node-set set:trailing (node-set, node-set)
- * @nodes1 and @nodes2 are sorted by document order, then
+ * `nodes1` and `nodes2` are sorted by document order, then
  * #xmlXPathTrailingSorted is called.
  *
- * Returns 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't contain @nodes2
+ * @param nodes1  a node-set
+ * @param nodes2  a node-set
+ * @returns 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't contain `nodes2`
  */
-xmlNodeSetPtr
-xmlXPathTrailing (xmlNodeSetPtr nodes1, xmlNodeSetPtr nodes2) {
+xmlNodeSet *
+xmlXPathTrailing (xmlNodeSet *nodes1, xmlNodeSet *nodes2) {
     if (xmlXPathNodeSetIsEmpty(nodes2))
 	return(nodes1);
     if (xmlXPathNodeSetIsEmpty(nodes1))
@@ -3790,34 +3663,30 @@ xmlXPathTrailing (xmlNodeSetPtr nodes1,
  ************************************************************************/
 
 /**
- * xmlXPathRegisterFunc:
- * @ctxt:  the XPath context
- * @name:  the function name
- * @f:  the function implementation or NULL
- *
- * Register a new function. If @f is NULL it unregisters the function
+ * Register a new function. If `f` is NULL it unregisters the function
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  the XPath context
+ * @param name  the function name
+ * @param f  the function implementation or NULL
+ * @returns 0 in case of success, -1 in case of error
  */
 int
-xmlXPathRegisterFunc(xmlXPathContextPtr ctxt, const xmlChar *name,
+xmlXPathRegisterFunc(xmlXPathContext *ctxt, const xmlChar *name,
 		     xmlXPathFunction f) {
     return(xmlXPathRegisterFuncNS(ctxt, name, NULL, f));
 }
 
 /**
- * xmlXPathRegisterFuncNS:
- * @ctxt:  the XPath context
- * @name:  the function name
- * @ns_uri:  the function namespace URI
- * @f:  the function implementation or NULL
+ * Register a new function. If `f` is NULL it unregisters the function
  *
- * Register a new function. If @f is NULL it unregisters the function
- *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  the XPath context
+ * @param name  the function name
+ * @param ns_uri  the function namespace URI
+ * @param f  the function implementation or NULL
+ * @returns 0 in case of success, -1 in case of error
  */
 int
-xmlXPathRegisterFuncNS(xmlXPathContextPtr ctxt, const xmlChar *name,
+xmlXPathRegisterFuncNS(xmlXPathContext *ctxt, const xmlChar *name,
 		       const xmlChar *ns_uri, xmlXPathFunction f) {
     int ret;
     void *payload;
@@ -3846,15 +3715,14 @@ xmlXPathRegisterFuncNS(xmlXPathContextPt
 }
 
 /**
- * xmlXPathRegisterFuncLookup:
- * @ctxt:  the XPath context
- * @f:  the lookup function
- * @funcCtxt:  the lookup data
- *
  * Registers an external mechanism to do function lookup.
+ *
+ * @param ctxt  the XPath context
+ * @param f  the lookup function
+ * @param funcCtxt  the lookup data
  */
 void
-xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
+xmlXPathRegisterFuncLookup (xmlXPathContext *ctxt,
 			    xmlXPathFuncLookupFunc f,
 			    void *funcCtxt) {
     if (ctxt == NULL)
@@ -3864,33 +3732,29 @@ xmlXPathRegisterFuncLookup (xmlXPathCont
 }
 
 /**
- * xmlXPathFunctionLookup:
- * @ctxt:  the XPath context
- * @name:  the function name
- *
  * Search in the Function array of the context for the given
  * function.
  *
- * Returns the xmlXPathFunction or NULL if not found
+ * @param ctxt  the XPath context
+ * @param name  the function name
+ * @returns the xmlXPathFunction or NULL if not found
  */
 xmlXPathFunction
-xmlXPathFunctionLookup(xmlXPathContextPtr ctxt, const xmlChar *name) {
+xmlXPathFunctionLookup(xmlXPathContext *ctxt, const xmlChar *name) {
     return(xmlXPathFunctionLookupNS(ctxt, name, NULL));
 }
 
 /**
- * xmlXPathFunctionLookupNS:
- * @ctxt:  the XPath context
- * @name:  the function name
- * @ns_uri:  the function namespace URI
- *
  * Search in the Function array of the context for the given
  * function.
  *
- * Returns the xmlXPathFunction or NULL if not found
+ * @param ctxt  the XPath context
+ * @param name  the function name
+ * @param ns_uri  the function namespace URI
+ * @returns the xmlXPathFunction or NULL if not found
  */
 xmlXPathFunction
-xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name,
+xmlXPathFunctionLookupNS(xmlXPathContext *ctxt, const xmlChar *name,
 			 const xmlChar *ns_uri) {
     xmlXPathFunction ret;
     void *payload;
@@ -3935,13 +3799,12 @@ xmlXPathFunctionLookupNS(xmlXPathContext
 }
 
 /**
- * xmlXPathRegisteredFuncsCleanup:
- * @ctxt:  the XPath context
- *
  * Cleanup the XPath context data associated to registered functions
+ *
+ * @param ctxt  the XPath context
  */
 void
-xmlXPathRegisteredFuncsCleanup(xmlXPathContextPtr ctxt) {
+xmlXPathRegisteredFuncsCleanup(xmlXPathContext *ctxt) {
     if (ctxt == NULL)
 	return;
 
@@ -3956,38 +3819,34 @@ xmlXPathRegisteredFuncsCleanup(xmlXPathC
  ************************************************************************/
 
 /**
- * xmlXPathRegisterVariable:
- * @ctxt:  the XPath context
- * @name:  the variable name
- * @value:  the variable value or NULL
- *
- * Register a new variable value. If @value is NULL it unregisters
+ * Register a new variable value. If `value` is NULL it unregisters
  * the variable
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  the XPath context
+ * @param name  the variable name
+ * @param value  the variable value or NULL
+ * @returns 0 in case of success, -1 in case of error
  */
 int
-xmlXPathRegisterVariable(xmlXPathContextPtr ctxt, const xmlChar *name,
-			 xmlXPathObjectPtr value) {
+xmlXPathRegisterVariable(xmlXPathContext *ctxt, const xmlChar *name,
+			 xmlXPathObject *value) {
     return(xmlXPathRegisterVariableNS(ctxt, name, NULL, value));
 }
 
 /**
- * xmlXPathRegisterVariableNS:
- * @ctxt:  the XPath context
- * @name:  the variable name
- * @ns_uri:  the variable namespace URI
- * @value:  the variable value or NULL
- *
- * Register a new variable value. If @value is NULL it unregisters
+ * Register a new variable value. If `value` is NULL it unregisters
  * the variable
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  the XPath context
+ * @param name  the variable name
+ * @param ns_uri  the variable namespace URI
+ * @param value  the variable value or NULL
+ * @returns 0 in case of success, -1 in case of error
  */
 int
-xmlXPathRegisterVariableNS(xmlXPathContextPtr ctxt, const xmlChar *name,
+xmlXPathRegisterVariableNS(xmlXPathContext *ctxt, const xmlChar *name,
 			   const xmlChar *ns_uri,
-			   xmlXPathObjectPtr value) {
+			   xmlXPathObject *value) {
     if (ctxt == NULL)
 	return(-1);
     if (name == NULL)
@@ -4005,15 +3864,14 @@ xmlXPathRegisterVariableNS(xmlXPathConte
 }
 
 /**
- * xmlXPathRegisterVariableLookup:
- * @ctxt:  the XPath context
- * @f:  the lookup function
- * @data:  the lookup data
- *
  * register an external mechanism to do variable lookup
+ *
+ * @param ctxt  the XPath context
+ * @param f  the lookup function
+ * @param data  the lookup data
  */
 void
-xmlXPathRegisterVariableLookup(xmlXPathContextPtr ctxt,
+xmlXPathRegisterVariableLookup(xmlXPathContext *ctxt,
 	 xmlXPathVariableLookupFunc f, void *data) {
     if (ctxt == NULL)
 	return;
@@ -4022,17 +3880,15 @@ xmlXPathRegisterVariableLookup(xmlXPathC
 }
 
 /**
- * xmlXPathVariableLookup:
- * @ctxt:  the XPath context
- * @name:  the variable name
- *
  * Search in the Variable array of the context for the given
  * variable value.
  *
- * Returns a copy of the value or NULL if not found
+ * @param ctxt  the XPath context
+ * @param name  the variable name
+ * @returns a copy of the value or NULL if not found
  */
-xmlXPathObjectPtr
-xmlXPathVariableLookup(xmlXPathContextPtr ctxt, const xmlChar *name) {
+xmlXPathObject *
+xmlXPathVariableLookup(xmlXPathContext *ctxt, const xmlChar *name) {
     if (ctxt == NULL)
 	return(NULL);
 
@@ -4047,18 +3903,16 @@ xmlXPathVariableLookup(xmlXPathContextPt
 }
 
 /**
- * xmlXPathVariableLookupNS:
- * @ctxt:  the XPath context
- * @name:  the variable name
- * @ns_uri:  the variable namespace URI
- *
  * Search in the Variable array of the context for the given
  * variable value.
  *
- * Returns the a copy of the value or NULL if not found
+ * @param ctxt  the XPath context
+ * @param name  the variable name
+ * @param ns_uri  the variable namespace URI
+ * @returns the a copy of the value or NULL if not found
  */
-xmlXPathObjectPtr
-xmlXPathVariableLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name,
+xmlXPathObject *
+xmlXPathVariableLookupNS(xmlXPathContext *ctxt, const xmlChar *name,
 			 const xmlChar *ns_uri) {
     if (ctxt == NULL)
 	return(NULL);
@@ -4080,13 +3934,12 @@ xmlXPathVariableLookupNS(xmlXPathContext
 }
 
 /**
- * xmlXPathRegisteredVariablesCleanup:
- * @ctxt:  the XPath context
- *
  * Cleanup the XPath context data associated to registered variables
+ *
+ * @param ctxt  the XPath context
  */
 void
-xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt) {
+xmlXPathRegisteredVariablesCleanup(xmlXPathContext *ctxt) {
     if (ctxt == NULL)
 	return;
 
@@ -4095,18 +3948,16 @@ xmlXPathRegisteredVariablesCleanup(xmlXP
 }
 
 /**
- * xmlXPathRegisterNs:
- * @ctxt:  the XPath context
- * @prefix:  the namespace prefix cannot be NULL or empty string
- * @ns_uri:  the namespace name
- *
- * Register a new namespace. If @ns_uri is NULL it unregisters
+ * Register a new namespace. If `ns_uri` is NULL it unregisters
  * the namespace
  *
- * Returns 0 in case of success, -1 in case of error
+ * @param ctxt  the XPath context
+ * @param prefix  the namespace prefix cannot be NULL or empty string
+ * @param ns_uri  the namespace name
+ * @returns 0 in case of success, -1 in case of error
  */
 int
-xmlXPathRegisterNs(xmlXPathContextPtr ctxt, const xmlChar *prefix,
+xmlXPathRegisterNs(xmlXPathContext *ctxt, const xmlChar *prefix,
 			   const xmlChar *ns_uri) {
     xmlChar *copy;
 
@@ -4143,17 +3994,15 @@ xmlXPathRegisterNs(xmlXPathContextPtr ct
 }
 
 /**
- * xmlXPathNsLookup:
- * @ctxt:  the XPath context
- * @prefix:  the namespace prefix value
- *
  * Search in the namespace declaration array of the context for the given
  * namespace name associated to the given prefix
  *
- * Returns the value or NULL if not found
+ * @param ctxt  the XPath context
+ * @param prefix  the namespace prefix value
+ * @returns the value or NULL if not found
  */
 const xmlChar *
-xmlXPathNsLookup(xmlXPathContextPtr ctxt, const xmlChar *prefix) {
+xmlXPathNsLookup(xmlXPathContext *ctxt, const xmlChar *prefix) {
     if (ctxt == NULL)
 	return(NULL);
     if (prefix == NULL)
@@ -4176,13 +4025,12 @@ xmlXPathNsLookup(xmlXPathContextPtr ctxt
 }
 
 /**
- * xmlXPathRegisteredNsCleanup:
- * @ctxt:  the XPath context
- *
  * Cleanup the XPath context data associated to registered variables
+ *
+ * @param ctxt  the XPath context
  */
 void
-xmlXPathRegisteredNsCleanup(xmlXPathContextPtr ctxt) {
+xmlXPathRegisteredNsCleanup(xmlXPathContext *ctxt) {
     if (ctxt == NULL)
 	return;
 
@@ -4199,14 +4047,12 @@ xmlXPathRegisteredNsCleanup(xmlXPathCont
 /* Allocations are terrible, one needs to optimize all this !!! */
 
 /**
- * xmlXPathNewFloat:
- * @val:  the double value
- *
- * Create a new xmlXPathObjectPtr of type double and of value @val
+ * Create a new xmlXPathObject of type double and of value `val`
  *
- * Returns the newly created object.
+ * @param val  the double value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathNewFloat(double val) {
     xmlXPathObjectPtr ret;
 
@@ -4220,14 +4066,12 @@ xmlXPathNewFloat(double val) {
 }
 
 /**
- * xmlXPathNewBoolean:
- * @val:  the boolean value
- *
- * Create a new xmlXPathObjectPtr of type boolean and of value @val
+ * Create a new xmlXPathObject of type boolean and of value `val`
  *
- * Returns the newly created object.
+ * @param val  the boolean value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathNewBoolean(int val) {
     xmlXPathObjectPtr ret;
 
@@ -4241,14 +4085,12 @@ xmlXPathNewBoolean(int val) {
 }
 
 /**
- * xmlXPathNewString:
- * @val:  the xmlChar * value
+ * Create a new xmlXPathObject of type string and of value `val`
  *
- * Create a new xmlXPathObjectPtr of type string and of value @val
- *
- * Returns the newly created object.
+ * @param val  the xmlChar * value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathNewString(const xmlChar *val) {
     xmlXPathObjectPtr ret;
 
@@ -4268,16 +4110,14 @@ xmlXPathNewString(const xmlChar *val) {
 }
 
 /**
- * xmlXPathWrapString:
- * @val:  the xmlChar * value
- *
- * Wraps the @val string into an XPath object.
+ * Wraps the `val` string into an XPath object.
  *
- * Returns the newly created object.
+ * Frees `val` in case of error.
  *
- * Frees @val in case of error.
+ * @param val  the xmlChar * value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathWrapString (xmlChar *val) {
     xmlXPathObjectPtr ret;
 
@@ -4293,40 +4133,34 @@ xmlXPathWrapString (xmlChar *val) {
 }
 
 /**
- * xmlXPathNewCString:
- * @val:  the char * value
- *
- * Create a new xmlXPathObjectPtr of type string and of value @val
+ * Create a new xmlXPathObject of type string and of value `val`
  *
- * Returns the newly created object.
+ * @param val  the char * value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathNewCString(const char *val) {
     return(xmlXPathNewString(BAD_CAST val));
 }
 
 /**
- * xmlXPathWrapCString:
- * @val:  the char * value
- *
  * Wraps a string into an XPath object.
  *
- * Returns the newly created object.
+ * @param val  the char * value
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathWrapCString (char * val) {
     return(xmlXPathWrapString((xmlChar *)(val)));
 }
 
 /**
- * xmlXPathWrapExternal:
- * @val:  the user data
- *
- * Wraps the @val data into an XPath object.
+ * Wraps the `val` data into an XPath object.
  *
- * Returns the newly created object.
+ * @param val  the user data
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
+xmlXPathObject *
 xmlXPathWrapExternal (void *val) {
     xmlXPathObjectPtr ret;
 
@@ -4340,15 +4174,13 @@ xmlXPathWrapExternal (void *val) {
 }
 
 /**
- * xmlXPathObjectCopy:
- * @val:  the original object
- *
  * allocate a new copy of a given object
  *
- * Returns the newly created object.
+ * @param val  the original object
+ * @returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPathObjectCopy(xmlXPathObjectPtr val) {
+xmlXPathObject *
+xmlXPathObjectCopy(xmlXPathObject *val) {
     xmlXPathObjectPtr ret;
 
     if (val == NULL)
@@ -4391,13 +4223,12 @@ xmlXPathObjectCopy(xmlXPathObjectPtr val
 }
 
 /**
- * xmlXPathFreeObject:
- * @obj:  the object to free
+ * Free up an xmlXPathObject object.
  *
- * Free up an xmlXPathObjectPtr object.
+ * @param obj  the object to free
  */
 void
-xmlXPathFreeObject(xmlXPathObjectPtr obj) {
+xmlXPathFreeObject(xmlXPathObject *obj) {
     if (obj == NULL) return;
     if ((obj->type == XPATH_NODESET) || (obj->type == XPATH_XSLT_TREE)) {
         if (obj->nodesetval != NULL)
@@ -4415,11 +4246,11 @@ xmlXPathFreeObjectEntry(void *obj, const
 }
 
 /**
- * xmlXPathReleaseObject:
- * @obj:  the xmlXPathObjectPtr to free or to cache
- *
  * Depending on the state of the cache this frees the given
  * XPath object or stores it in the cache.
+ *
+ * @param ctxt  XPath context
+ * @param obj  the xmlXPathObject to free or to cache
  */
 static void
 xmlXPathReleaseObject(xmlXPathContextPtr ctxt, xmlXPathObjectPtr obj)
@@ -4514,12 +4345,10 @@ free_obj:
  ************************************************************************/
 
 /**
- * xmlXPathCastBooleanToString:
- * @val:  a boolean
- *
  * Converts a boolean to its string value.
  *
- * Returns a newly allocated string.
+ * @param val  a boolean
+ * @returns a newly allocated string.
  */
 xmlChar *
 xmlXPathCastBooleanToString (int val) {
@@ -4532,12 +4361,10 @@ xmlXPathCastBooleanToString (int val) {
 }
 
 /**
- * xmlXPathCastNumberToString:
- * @val:  a number
- *
  * Converts a number to its string value.
  *
- * Returns a newly allocated string.
+ * @param val  a number
+ * @returns a newly allocated string.
  */
 xmlChar *
 xmlXPathCastNumberToString (double val) {
@@ -4567,28 +4394,24 @@ xmlXPathCastNumberToString (double val)
 }
 
 /**
- * xmlXPathCastNodeToString:
- * @node:  a node
- *
  * Converts a node to its string value.
  *
- * Returns a newly allocated string.
+ * @param node  a node
+ * @returns a newly allocated string.
  */
 xmlChar *
-xmlXPathCastNodeToString (xmlNodePtr node) {
+xmlXPathCastNodeToString (xmlNode *node) {
     return(xmlNodeGetContent(node));
 }
 
 /**
- * xmlXPathCastNodeSetToString:
- * @ns:  a node-set
- *
  * Converts a node-set to its string value.
  *
- * Returns a newly allocated string.
+ * @param ns  a node-set
+ * @returns a newly allocated string.
  */
 xmlChar *
-xmlXPathCastNodeSetToString (xmlNodeSetPtr ns) {
+xmlXPathCastNodeSetToString (xmlNodeSet *ns) {
     if ((ns == NULL) || (ns->nodeNr == 0) || (ns->nodeTab == NULL))
 	return(xmlStrdup((const xmlChar *) ""));
 
@@ -4598,16 +4421,14 @@ xmlXPathCastNodeSetToString (xmlNodeSetP
 }
 
 /**
- * xmlXPathCastToString:
- * @val:  an XPath object
- *
  * Converts an existing object to its string() equivalent
  *
- * Returns the allocated string value of the object, NULL in case of error.
- *         It's up to the caller to free the string memory with xmlFree().
+ * @param val  an XPath object
+ * @returns the allocated string value of the object, NULL in case of error.
+ *         It's up to the caller to free the string memory with #xmlFree.
  */
 xmlChar *
-xmlXPathCastToString(xmlXPathObjectPtr val) {
+xmlXPathCastToString(xmlXPathObject *val) {
     xmlChar *ret = NULL;
 
     if (val == NULL)
@@ -4638,16 +4459,14 @@ xmlXPathCastToString(xmlXPathObjectPtr v
 }
 
 /**
- * xmlXPathConvertString:
- * @val:  an XPath object
- *
  * Converts an existing object to its string() equivalent
  *
- * Returns the new object, the old one is freed (or the operation
- *         is done directly on @val)
+ * @param val  an XPath object
+ * @returns the new object, the old one is freed (or the operation
+ *         is done directly on `val`)
  */
-xmlXPathObjectPtr
-xmlXPathConvertString(xmlXPathObjectPtr val) {
+xmlXPathObject *
+xmlXPathConvertString(xmlXPathObject *val) {
     xmlChar *res = NULL;
 
     if (val == NULL)
@@ -4679,12 +4498,10 @@ xmlXPathConvertString(xmlXPathObjectPtr
 }
 
 /**
- * xmlXPathCastBooleanToNumber:
- * @val:  a boolean
- *
  * Converts a boolean to its number value
  *
- * Returns the number value
+ * @param val  a boolean
+ * @returns the number value
  */
 double
 xmlXPathCastBooleanToNumber(int val) {
@@ -4694,12 +4511,10 @@ xmlXPathCastBooleanToNumber(int val) {
 }
 
 /**
- * xmlXPathCastStringToNumber:
- * @val:  a string
- *
  * Converts a string to its number value
  *
- * Returns the number value
+ * @param val  a string
+ * @returns the number value
  */
 double
 xmlXPathCastStringToNumber(const xmlChar * val) {
@@ -4707,12 +4522,11 @@ xmlXPathCastStringToNumber(const xmlChar
 }
 
 /**
- * xmlXPathNodeToNumberInternal:
- * @node:  a node
- *
  * Converts a node to its number value
  *
- * Returns the number value
+ * @param ctxt  XPath parser context
+ * @param node  a node
+ * @returns the number value
  */
 static double
 xmlXPathNodeToNumberInternal(xmlXPathParserContextPtr ctxt, xmlNodePtr node) {
@@ -4733,28 +4547,24 @@ xmlXPathNodeToNumberInternal(xmlXPathPar
 }
 
 /**
- * xmlXPathCastNodeToNumber:
- * @node:  a node
- *
  * Converts a node to its number value
  *
- * Returns the number value
+ * @param node  a node
+ * @returns the number value
  */
 double
-xmlXPathCastNodeToNumber (xmlNodePtr node) {
+xmlXPathCastNodeToNumber (xmlNode *node) {
     return(xmlXPathNodeToNumberInternal(NULL, node));
 }
 
 /**
- * xmlXPathCastNodeSetToNumber:
- * @ns:  a node-set
- *
  * Converts a node-set to its number value
  *
- * Returns the number value
+ * @param ns  a node-set
+ * @returns the number value
  */
 double
-xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns) {
+xmlXPathCastNodeSetToNumber (xmlNodeSet *ns) {
     xmlChar *str;
     double ret;
 
@@ -4767,29 +4577,25 @@ xmlXPathCastNodeSetToNumber (xmlNodeSetP
 }
 
 /**
- * xmlXPathCastToNumber:
- * @val:  an XPath object
- *
  * Converts an XPath object to its number value
  *
- * Returns the number value
+ * @param val  an XPath object
+ * @returns the number value
  */
 double
-xmlXPathCastToNumber(xmlXPathObjectPtr val) {
+xmlXPathCastToNumber(xmlXPathObject *val) {
     return(xmlXPathCastToNumberInternal(NULL, val));
 }
 
 /**
- * xmlXPathConvertNumber:
- * @val:  an XPath object
- *
  * Converts an existing object to its number() equivalent
  *
- * Returns the new object, the old one is freed (or the operation
- *         is done directly on @val)
+ * @param val  an XPath object
+ * @returns the new object, the old one is freed (or the operation
+ *         is done directly on `val`)
  */
-xmlXPathObjectPtr
-xmlXPathConvertNumber(xmlXPathObjectPtr val) {
+xmlXPathObject *
+xmlXPathConvertNumber(xmlXPathObject *val) {
     xmlXPathObjectPtr ret;
 
     if (val == NULL)
@@ -4802,12 +4608,10 @@ xmlXPathConvertNumber(xmlXPathObjectPtr
 }
 
 /**
- * xmlXPathCastNumberToBoolean:
- * @val:  a number
- *
  * Converts a number to its boolean value
  *
- * Returns the boolean value
+ * @param val  a number
+ * @returns the boolean value
  */
 int
 xmlXPathCastNumberToBoolean (double val) {
@@ -4817,12 +4621,10 @@ xmlXPathCastNumberToBoolean (double val)
 }
 
 /**
- * xmlXPathCastStringToBoolean:
- * @val:  a string
- *
  * Converts a string to its boolean value
  *
- * Returns the boolean value
+ * @param val  a string
+ * @returns the boolean value
  */
 int
 xmlXPathCastStringToBoolean (const xmlChar *val) {
@@ -4832,30 +4634,26 @@ xmlXPathCastStringToBoolean (const xmlCh
 }
 
 /**
- * xmlXPathCastNodeSetToBoolean:
- * @ns:  a node-set
- *
  * Converts a node-set to its boolean value
  *
- * Returns the boolean value
+ * @param ns  a node-set
+ * @returns the boolean value
  */
 int
-xmlXPathCastNodeSetToBoolean (xmlNodeSetPtr ns) {
+xmlXPathCastNodeSetToBoolean (xmlNodeSet *ns) {
     if ((ns == NULL) || (ns->nodeNr == 0))
 	return(0);
     return(1);
 }
 
 /**
- * xmlXPathCastToBoolean:
- * @val:  an XPath object
- *
  * Converts an XPath object to its boolean value
  *
- * Returns the boolean value
+ * @param val  an XPath object
+ * @returns the boolean value
  */
 int
-xmlXPathCastToBoolean (xmlXPathObjectPtr val) {
+xmlXPathCastToBoolean (xmlXPathObject *val) {
     int ret = 0;
 
     if (val == NULL)
@@ -4887,16 +4685,14 @@ xmlXPathCastToBoolean (xmlXPathObjectPtr
 
 
 /**
- * xmlXPathConvertBoolean:
- * @val:  an XPath object
- *
  * Converts an existing object to its boolean() equivalent
  *
- * Returns the new object, the old one is freed (or the operation
- *         is done directly on @val)
+ * @param val  an XPath object
+ * @returns the new object, the old one is freed (or the operation
+ *         is done directly on `val`)
  */
-xmlXPathObjectPtr
-xmlXPathConvertBoolean(xmlXPathObjectPtr val) {
+xmlXPathObject *
+xmlXPathConvertBoolean(xmlXPathObject *val) {
     xmlXPathObjectPtr ret;
 
     if (val == NULL)
@@ -4915,15 +4711,13 @@ xmlXPathConvertBoolean(xmlXPathObjectPtr
  ************************************************************************/
 
 /**
- * xmlXPathNewContext:
- * @doc:  the XML document
- *
  * Create a new xmlXPathContext
  *
- * Returns the xmlXPathContext just allocated. The caller will need to free it.
+ * @param doc  the XML document
+ * @returns the xmlXPathContext just allocated. The caller will need to free it.
  */
-xmlXPathContextPtr
-xmlXPathNewContext(xmlDocPtr doc) {
+xmlXPathContext *
+xmlXPathNewContext(xmlDoc *doc) {
     xmlXPathContextPtr ret;
 
     ret = (xmlXPathContextPtr) xmlMalloc(sizeof(xmlXPathContext));
@@ -4960,13 +4754,12 @@ xmlXPathNewContext(xmlDocPtr doc) {
 }
 
 /**
- * xmlXPathFreeContext:
- * @ctxt:  the context to free
- *
  * Free up an xmlXPathContext
+ *
+ * @param ctxt  the context to free
  */
 void
-xmlXPathFreeContext(xmlXPathContextPtr ctxt) {
+xmlXPathFreeContext(xmlXPathContext *ctxt) {
     if (ctxt == NULL) return;
 
     if (ctxt->cache != NULL)
@@ -4979,18 +4772,16 @@ xmlXPathFreeContext(xmlXPathContextPtr c
 }
 
 /**
- * xmlXPathSetErrorHandler:
- * @ctxt:  the XPath context
- * @handler:  error handler
- * @data:  user data which will be passed to the handler
- *
  * Register a callback function that will be called on errors and
  * warnings. If handler is NULL, the error handler will be deactivated.
  *
- * Available since 2.13.0.
+ * @since 2.13.0
+ * @param ctxt  the XPath context
+ * @param handler  error handler
+ * @param data  user data which will be passed to the handler
  */
 void
-xmlXPathSetErrorHandler(xmlXPathContextPtr ctxt,
+xmlXPathSetErrorHandler(xmlXPathContext *ctxt,
                         xmlStructuredErrorFunc handler, void *data) {
     if (ctxt == NULL)
         return;
@@ -5006,16 +4797,14 @@ xmlXPathSetErrorHandler(xmlXPathContextP
  ************************************************************************/
 
 /**
- * xmlXPathNewParserContext:
- * @str:  the XPath expression
- * @ctxt:  the XPath context
- *
  * Create a new xmlXPathParserContext
  *
- * Returns the xmlXPathParserContext just allocated.
+ * @param str  the XPath expression
+ * @param ctxt  the XPath context
+ * @returns the xmlXPathParserContext just allocated.
  */
-xmlXPathParserContextPtr
-xmlXPathNewParserContext(const xmlChar *str, xmlXPathContextPtr ctxt) {
+xmlXPathParserContext *
+xmlXPathNewParserContext(const xmlChar *str, xmlXPathContext *ctxt) {
     xmlXPathParserContextPtr ret;
 
     ret = (xmlXPathParserContextPtr) xmlMalloc(sizeof(xmlXPathParserContext));
@@ -5043,13 +4832,11 @@ xmlXPathNewParserContext(const xmlChar *
 }
 
 /**
- * xmlXPathCompParserContext:
- * @comp:  the XPath compiled expression
- * @ctxt:  the XPath context
- *
  * Create a new xmlXPathParserContext when processing a compiled expression
  *
- * Returns the xmlXPathParserContext just allocated.
+ * @param comp  the XPath compiled expression
+ * @param ctxt  the XPath context
+ * @returns the xmlXPathParserContext just allocated.
  */
 static xmlXPathParserContextPtr
 xmlXPathCompParserContext(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctxt) {
@@ -5084,15 +4871,17 @@ xmlXPathCompParserContext(xmlXPathCompEx
 }
 
 /**
- * xmlXPathFreeParserContext:
- * @ctxt:  the context to free
- *
  * Free up an xmlXPathParserContext
+ *
+ * @param ctxt  the context to free
  */
 void
-xmlXPathFreeParserContext(xmlXPathParserContextPtr ctxt) {
+xmlXPathFreeParserContext(xmlXPathParserContext *ctxt) {
     int i;
 
+    if (ctxt == NULL)
+        return;
+
     if (ctxt->valueTab != NULL) {
         for (i = 0; i < ctxt->valueNr; i++) {
             if (ctxt->context)
@@ -5121,13 +4910,11 @@ xmlXPathFreeParserContext(xmlXPathParser
  ************************************************************************/
 
 /**
- * xmlXPathNodeValHash:
- * @node:  a node pointer
- *
  * Function computing the beginning of the string value of the node,
  * used to speed up comparisons
  *
- * Returns an int usable as a hash
+ * @param node  a node pointer
+ * @returns an int usable as a hash
  */
 static unsigned int
 xmlXPathNodeValHash(xmlNodePtr node) {
@@ -5234,13 +5021,11 @@ xmlXPathNodeValHash(xmlNodePtr node) {
 }
 
 /**
- * xmlXPathStringHash:
- * @string:  a string
- *
  * Function computing the beginning of the string value of the node,
  * used to speed up comparisons
  *
- * Returns an int usable as a hash
+ * @param string  a string
+ * @returns an int usable as a hash
  */
 static unsigned int
 xmlXPathStringHash(const xmlChar * string) {
@@ -5252,18 +5037,11 @@ xmlXPathStringHash(const xmlChar * strin
 }
 
 /**
- * xmlXPathCompareNodeSetFloat:
- * @ctxt:  the XPath Parser context
- * @inf:  less than (1) or greater than (0)
- * @strict:  is the comparison strict
- * @arg:  the node set
- * @f:  the value
- *
  * Implement the compare operation between a nodeset and a number
- *     @ns < @val    (1, 1, ...
- *     @ns <= @val   (1, 0, ...
- *     @ns > @val    (0, 1, ...
- *     @ns >= @val   (0, 0, ...
+ *     `ns` < `val`    (1, 1, ...
+ *     `ns` <= `val`   (1, 0, ...
+ *     `ns` > `val`    (0, 1, ...
+ *     `ns` >= `val`   (0, 0, ...
  *
  * If one object to be compared is a node-set and the other is a number,
  * then the comparison will be true if and only if there is a node in the
@@ -5271,7 +5049,12 @@ xmlXPathStringHash(const xmlChar * strin
  * to be compared and on the result of converting the string-value of that
  * node to a number using the number function is true.
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  the XPath Parser context
+ * @param inf  less than (1) or greater than (0)
+ * @param strict  is the comparison strict
+ * @param arg  the node set
+ * @param f  the value
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathCompareNodeSetFloat(xmlXPathParserContextPtr ctxt, int inf, int strict,
@@ -5309,25 +5092,23 @@ xmlXPathCompareNodeSetFloat(xmlXPathPars
 }
 
 /**
- * xmlXPathCompareNodeSetString:
- * @ctxt:  the XPath Parser context
- * @inf:  less than (1) or greater than (0)
- * @strict:  is the comparison strict
- * @arg:  the node set
- * @s:  the value
- *
  * Implement the compare operation between a nodeset and a string
- *     @ns < @val    (1, 1, ...
- *     @ns <= @val   (1, 0, ...
- *     @ns > @val    (0, 1, ...
- *     @ns >= @val   (0, 0, ...
+ *     `ns` < `val`    (1, 1, ...
+ *     `ns` <= `val`   (1, 0, ...
+ *     `ns` > `val`    (0, 1, ...
+ *     `ns` >= `val`   (0, 0, ...
  *
  * If one object to be compared is a node-set and the other is a string,
  * then the comparison will be true if and only if there is a node in
  * the node-set such that the result of performing the comparison on the
  * string-value of the node and the other string is true.
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  the XPath Parser context
+ * @param inf  less than (1) or greater than (0)
+ * @param strict  is the comparison strict
+ * @param arg  the node set
+ * @param s  the value
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathCompareNodeSetString(xmlXPathParserContextPtr ctxt, int inf, int strict,
@@ -5365,12 +5146,6 @@ xmlXPathCompareNodeSetString(xmlXPathPar
 }
 
 /**
- * xmlXPathCompareNodeSets:
- * @inf:  less than (1) or greater than (0)
- * @strict:  is the comparison strict
- * @arg1:  the first node set object
- * @arg2:  the second node set object
- *
  * Implement the compare operation on nodesets:
  *
  * If both objects to be compared are node-sets, then the comparison
@@ -5391,6 +5166,12 @@ xmlXPathCompareNodeSetString(xmlXPathPar
  *
  * Conclusion all nodes need to be converted first to their string value
  * and then the comparison must be done when possible
+ *
+ * @param ctxt  XPath parser context
+ * @param inf  less than (1) or greater than (0)
+ * @param strict  is the comparison strict
+ * @param arg1  the first node set object
+ * @param arg2  the second node set object
  */
 static int
 xmlXPathCompareNodeSets(xmlXPathParserContextPtr ctxt, int inf, int strict,
@@ -5468,25 +5249,23 @@ xmlXPathCompareNodeSets(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCompareNodeSetValue:
- * @ctxt:  the XPath Parser context
- * @inf:  less than (1) or greater than (0)
- * @strict:  is the comparison strict
- * @arg:  the node set
- * @val:  the value
- *
  * Implement the compare operation between a nodeset and a value
- *     @ns < @val    (1, 1, ...
- *     @ns <= @val   (1, 0, ...
- *     @ns > @val    (0, 1, ...
- *     @ns >= @val   (0, 0, ...
+ *     `ns` < `val`    (1, 1, ...
+ *     `ns` <= `val`   (1, 0, ...
+ *     `ns` > `val`    (0, 1, ...
+ *     `ns` >= `val`   (0, 0, ...
  *
  * If one object to be compared is a node-set and the other is a boolean,
  * then the comparison will be true if and only if the result of performing
  * the comparison on the boolean and on the result of converting
  * the node-set to a boolean using the boolean function is true.
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  the XPath Parser context
+ * @param inf  less than (1) or greater than (0)
+ * @param strict  is the comparison strict
+ * @param arg  the node set
+ * @param val  the value
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathCompareNodeSetValue(xmlXPathParserContextPtr ctxt, int inf, int strict,
@@ -5517,18 +5296,17 @@ xmlXPathCompareNodeSetValue(xmlXPathPars
 }
 
 /**
- * xmlXPathEqualNodeSetString:
- * @arg:  the nodeset object argument
- * @str:  the string to compare to.
- * @neq:  flag to show whether for '=' (0) or '!=' (1)
- *
- * Implement the equal operation on XPath objects content: @arg1 == @arg2
+ * Implement the equal operation on XPath objects content: `arg1` == `arg2`
  * If one object to be compared is a node-set and the other is a string,
  * then the comparison will be true if and only if there is a node in
  * the node-set such that the result of performing the comparison on the
  * string-value of the node and the other string is true.
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  XPath parser context
+ * @param arg  the nodeset object argument
+ * @param str  the string to compare to.
+ * @param neq  flag to show whether for '=' (0) or '!=' (1)
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathEqualNodeSetString(xmlXPathParserContextPtr ctxt,
@@ -5574,19 +5352,18 @@ xmlXPathEqualNodeSetString(xmlXPathParse
 }
 
 /**
- * xmlXPathEqualNodeSetFloat:
- * @arg:  the nodeset object argument
- * @f:  the float to compare to
- * @neq:  flag to show whether to compare '=' (0) or '!=' (1)
- *
- * Implement the equal operation on XPath objects content: @arg1 == @arg2
+ * Implement the equal operation on XPath objects content: `arg1` == `arg2`
  * If one object to be compared is a node-set and the other is a number,
  * then the comparison will be true if and only if there is a node in
  * the node-set such that the result of performing the comparison on the
  * number to be compared and on the result of converting the string-value
  * of that node to a number using the number function is true.
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  XPath parser context
+ * @param arg  the nodeset object argument
+ * @param f  the float to compare to
+ * @param neq  flag to show whether to compare '=' (0) or '!=' (1)
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathEqualNodeSetFloat(xmlXPathParserContextPtr ctxt,
@@ -5636,13 +5413,8 @@ xmlXPathEqualNodeSetFloat(xmlXPathParser
 
 
 /**
- * xmlXPathEqualNodeSets:
- * @arg1:  first nodeset object argument
- * @arg2:  second nodeset object argument
- * @neq:   flag to show whether to test '=' (0) or '!=' (1)
- *
  * Implement the equal / not equal operation on XPath nodesets:
- * @arg1 == @arg2  or  @arg1 != @arg2
+ * `arg1` == `arg2`  or  `arg1` != `arg2`
  * If both objects to be compared are node-sets, then the comparison
  * will be true if and only if there is a node in the first node-set and
  * a node in the second node-set such that the result of performing the
@@ -5650,7 +5422,11 @@ xmlXPathEqualNodeSetFloat(xmlXPathParser
  *
  * (needless to say, this is a costly operation)
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  XPath parser context
+ * @param arg1  first nodeset object argument
+ * @param arg2  second nodeset object argument
+ * @param neq  flag to show whether to test '=' (0) or '!=' (1)
+ * @returns 0 or 1 depending on the results of the test.
  */
 static int
 xmlXPathEqualNodeSets(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr arg1,
@@ -5917,15 +5693,13 @@ xmlXPathEqualValuesCommon(xmlXPathParser
 }
 
 /**
- * xmlXPathEqualValues:
- * @ctxt:  the XPath Parser context
- *
- * Implement the equal operation on XPath objects content: @arg1 == @arg2
+ * Implement the equal operation on XPath objects content: `arg1` == `arg2`
  *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  the XPath Parser context
+ * @returns 0 or 1 depending on the results of the test.
  */
 int
-xmlXPathEqualValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathEqualValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg1, arg2, argtmp;
     int ret = 0;
 
@@ -5992,15 +5766,13 @@ xmlXPathEqualValues(xmlXPathParserContex
 }
 
 /**
- * xmlXPathNotEqualValues:
- * @ctxt:  the XPath Parser context
+ * Implement the equal operation on XPath objects content: `arg1` == `arg2`
  *
- * Implement the equal operation on XPath objects content: @arg1 == @arg2
- *
- * Returns 0 or 1 depending on the results of the test.
+ * @param ctxt  the XPath Parser context
+ * @returns 0 or 1 depending on the results of the test.
  */
 int
-xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathNotEqualValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg1, arg2, argtmp;
     int ret = 0;
 
@@ -6067,16 +5839,11 @@ xmlXPathNotEqualValues(xmlXPathParserCon
 }
 
 /**
- * xmlXPathCompareValues:
- * @ctxt:  the XPath Parser context
- * @inf:  less than (1) or greater than (0)
- * @strict:  is the comparison strict
- *
  * Implement the compare operation on XPath objects:
- *     @arg1 < @arg2    (1, 1, ...
- *     @arg1 <= @arg2   (1, 0, ...
- *     @arg1 > @arg2    (0, 1, ...
- *     @arg1 >= @arg2   (0, 0, ...
+ *     `arg1` < `arg2`    (1, 1, ...
+ *     `arg1` <= `arg2`   (1, 0, ...
+ *     `arg1` > `arg2`    (0, 1, ...
+ *     `arg1` >= `arg2`   (0, 0, ...
  *
  * When neither object to be compared is a node-set and the operator is
  * <=, <, >=, >, then the objects are compared by converted both objects
@@ -6088,10 +5855,13 @@ xmlXPathNotEqualValues(xmlXPathParserCon
  * number. The >= comparison will be true if and only if the first number
  * is greater than or equal to the second number.
  *
- * Returns 1 if the comparison succeeded, 0 if it failed
+ * @param ctxt  the XPath Parser context
+ * @param inf  less than (1) or greater than (0)
+ * @param strict  is the comparison strict
+ * @returns 1 if the comparison succeeded, 0 if it failed
  */
 int
-xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict) {
+xmlXPathCompareValues(xmlXPathParserContext *ctxt, int inf, int strict) {
     int ret = 0, arg1i = 0, arg2i = 0;
     xmlXPathObjectPtr arg1, arg2;
 
@@ -6196,15 +5966,14 @@ error:
 }
 
 /**
- * xmlXPathValueFlipSign:
- * @ctxt:  the XPath Parser context
- *
  * Implement the unary - operation on an XPath object
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt) {
+xmlXPathValueFlipSign(xmlXPathParserContext *ctxt) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return;
     CAST_TO_NUMBER;
     CHECK_TYPE(XPATH_NUMBER);
@@ -6212,15 +5981,14 @@ xmlXPathValueFlipSign(xmlXPathParserCont
 }
 
 /**
- * xmlXPathAddValues:
- * @ctxt:  the XPath Parser context
- *
  * Implement the add operation on XPath objects:
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathAddValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathAddValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg;
     double val;
 
@@ -6235,15 +6003,14 @@ xmlXPathAddValues(xmlXPathParserContextP
 }
 
 /**
- * xmlXPathSubValues:
- * @ctxt:  the XPath Parser context
- *
  * Implement the subtraction operation on XPath objects:
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathSubValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathSubValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg;
     double val;
 
@@ -6258,15 +6025,14 @@ xmlXPathSubValues(xmlXPathParserContextP
 }
 
 /**
- * xmlXPathMultValues:
- * @ctxt:  the XPath Parser context
- *
  * Implement the multiply operation on XPath objects:
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathMultValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathMultValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg;
     double val;
 
@@ -6281,16 +6047,15 @@ xmlXPathMultValues(xmlXPathParserContext
 }
 
 /**
- * xmlXPathDivValues:
- * @ctxt:  the XPath Parser context
- *
- * Implement the div operation on XPath objects @arg1 / @arg2:
+ * Implement the div operation on XPath objects `arg1` / `arg2`.
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 ATTRIBUTE_NO_SANITIZE("float-divide-by-zero")
 void
-xmlXPathDivValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathDivValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg;
     double val;
 
@@ -6305,15 +6070,14 @@ xmlXPathDivValues(xmlXPathParserContextP
 }
 
 /**
- * xmlXPathModValues:
- * @ctxt:  the XPath Parser context
- *
- * Implement the mod operation on XPath objects: @arg1 / @arg2
+ * Implement the mod operation on XPath objects: `arg1` / `arg2`
  * The numeric operators convert their operands to numbers as if
  * by calling the number function.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathModValues(xmlXPathParserContextPtr ctxt) {
+xmlXPathModValues(xmlXPathParserContext *ctxt) {
     xmlXPathObjectPtr arg;
     double arg1, arg2;
 
@@ -6343,39 +6107,35 @@ xmlXPathModValues(xmlXPathParserContextP
  * Initially it must be called with NULL, and it indicates
  * termination on the axis by returning NULL.
  */
-typedef xmlNodePtr (*xmlXPathTraversalFunction)
-                    (xmlXPathParserContextPtr ctxt, xmlNodePtr cur);
+typedef xmlNode *(*xmlXPathTraversalFunction)
+                    (xmlXPathParserContext *ctxt, xmlNode *cur);
 
 /*
- * xmlXPathTraversalFunctionExt:
  * A traversal function enumerates nodes along an axis.
  * Initially it must be called with NULL, and it indicates
  * termination on the axis by returning NULL.
- * The context node of the traversal is specified via @contextNode.
+ * The context node of the traversal is specified via `contextNode`.
  */
-typedef xmlNodePtr (*xmlXPathTraversalFunctionExt)
-                    (xmlNodePtr cur, xmlNodePtr contextNode);
+typedef xmlNode *(*xmlXPathTraversalFunctionExt)
+                    (xmlNode *cur, xmlNode *contextNode);
 
 /*
- * xmlXPathNodeSetMergeFunction:
- * Used for merging node sets in xmlXPathCollectAndTest().
+ * Used for merging node sets in #xmlXPathCollectAndTest.
  */
-typedef xmlNodeSetPtr (*xmlXPathNodeSetMergeFunction)
-		    (xmlNodeSetPtr, xmlNodeSetPtr);
+typedef xmlNodeSet *(*xmlXPathNodeSetMergeFunction)
+		    (xmlNodeSet *, xmlNodeSet *);
 
 
 /**
- * xmlXPathNextSelf:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "self" direction
  * The self axis contains just the context node itself
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextSelf(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextSelf(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL)
         return(ctxt->context->node);
@@ -6383,17 +6143,15 @@ xmlXPathNextSelf(xmlXPathParserContextPt
 }
 
 /**
- * xmlXPathNextChild:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "child" direction
  * The child axis contains the children of the context node in document order.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextChild(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextChild(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL) {
 	if (ctxt->context->node == NULL) return(NULL);
@@ -6431,14 +6189,12 @@ xmlXPathNextChild(xmlXPathParserContextP
 }
 
 /**
- * xmlXPathNextChildElement:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "child" direction and nodes of type element.
  * The child axis contains the children of the context node in document order.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
 static xmlNodePtr
 xmlXPathNextChildElement(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
@@ -6503,18 +6259,16 @@ xmlXPathNextChildElement(xmlXPathParserC
 }
 
 /**
- * xmlXPathNextDescendant:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "descendant" 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.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextDescendant(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL) {
 	if (ctxt->context->node == NULL)
@@ -6566,20 +6320,18 @@ xmlXPathNextDescendant(xmlXPathParserCon
 }
 
 /**
- * xmlXPathNextDescendantOrSelf:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "descendant-or-self" 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
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextDescendantOrSelf(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL)
         return(ctxt->context->node);
@@ -6594,17 +6346,15 @@ xmlXPathNextDescendantOrSelf(xmlXPathPar
 }
 
 /**
- * xmlXPathNextParent:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "parent" direction
  * The parent axis contains the parent of the context node, if there is one.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextParent(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextParent(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     /*
      * the parent of an attribute or namespace node is the element
@@ -6660,10 +6410,6 @@ xmlXPathNextParent(xmlXPathParserContext
 }
 
 /**
- * xmlXPathNextAncestor:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "ancestor" 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's
@@ -6671,10 +6417,12 @@ xmlXPathNextParent(xmlXPathParserContext
  * parent is the first node on the axis, and the parent's parent is the second
  * node on the axis
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextAncestor(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     /*
      * the parent of an attribute or namespace node is the element
@@ -6779,20 +6527,18 @@ xmlXPathNextAncestor(xmlXPathParserConte
 }
 
 /**
- * xmlXPathNextAncestorOrSelf:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "ancestor-or-self" 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's parent the second;
  * parent here is defined the same as with the parent axis.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextAncestorOrSelf(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL)
         return(ctxt->context->node);
@@ -6800,18 +6546,16 @@ xmlXPathNextAncestorOrSelf(xmlXPathParse
 }
 
 /**
- * xmlXPathNextFollowingSibling:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "following-sibling" direction
  * The following-sibling axis contains the following siblings of the context
  * node in document order.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextFollowingSibling(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) ||
 	(ctxt->context->node->type == XML_NAMESPACE_DECL))
@@ -6824,19 +6568,17 @@ xmlXPathNextFollowingSibling(xmlXPathPar
 }
 
 /**
- * xmlXPathNextPrecedingSibling:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "preceding-sibling" 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.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextPrecedingSibling(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if ((ctxt->context->node->type == XML_ATTRIBUTE_NODE) ||
 	(ctxt->context->node->type == XML_NAMESPACE_DECL))
@@ -6854,20 +6596,18 @@ xmlXPathNextPrecedingSibling(xmlXPathPar
 }
 
 /**
- * xmlXPathNextFollowing:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "following" 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
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextFollowing(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if ((cur != NULL) && (cur->type  != XML_ATTRIBUTE_NODE) &&
         (cur->type != XML_NAMESPACE_DECL) && (cur->children != NULL))
@@ -6898,13 +6638,12 @@ xmlXPathNextFollowing(xmlXPathParserCont
 }
 
 /*
- * xmlXPathIsAncestor:
- * @ancestor:  the ancestor node
- * @node:  the current node
+ * @param ancestor  the ancestor node
+ * @param node  the current node
  *
- * Check that @ancestor is a @node's ancestor
+ * Check that `ancestor` is a `node`'s ancestor
  *
- * returns 1 if @ancestor is a @node's ancestor, 0 otherwise.
+ * @returns 1 if `ancestor` is a `node`'s ancestor, 0 otherwise.
  */
 static int
 xmlXPathIsAncestor(xmlNodePtr ancestor, xmlNodePtr node) {
@@ -6927,20 +6666,18 @@ xmlXPathIsAncestor(xmlNodePtr ancestor,
 }
 
 /**
- * xmlXPathNextPreceding:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "preceding" 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
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur)
+xmlNode *
+xmlXPathNextPreceding(xmlXPathParserContext *ctxt, xmlNode *cur)
 {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (cur == NULL) {
@@ -6976,10 +6713,6 @@ xmlXPathNextPreceding(xmlXPathParserCont
 }
 
 /**
- * xmlXPathNextPrecedingInternal:
- * @ctxt:  the XPath Parser context
- * @cur:  the current node in the traversal
- *
  * Traversal function for the "preceding" 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
@@ -6988,7 +6721,9 @@ xmlXPathNextPreceding(xmlXPathParserCont
  * This is a faster implementation but internal only since it requires a
  * state kept in the parser context: ctxt->ancestor.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current node in the traversal
+ * @returns the next element following that axis
  */
 static xmlNodePtr
 xmlXPathNextPrecedingInternal(xmlXPathParserContextPtr ctxt,
@@ -7032,10 +6767,6 @@ xmlXPathNextPrecedingInternal(xmlXPathPa
 }
 
 /**
- * xmlXPathNextNamespace:
- * @ctxt:  the XPath Parser context
- * @cur:  the current attribute in the traversal
- *
  * Traversal function for the "namespace" 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
@@ -7043,10 +6774,12 @@ xmlXPathNextPrecedingInternal(xmlXPathPa
  *
  * We keep the XML namespace node at the end of the list.
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current attribute in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextNamespace(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (ctxt->context->node->type != XML_ELEMENT_NODE) return(NULL);
     if (cur == NULL) {
@@ -7076,17 +6809,15 @@ xmlXPathNextNamespace(xmlXPathParserCont
 }
 
 /**
- * xmlXPathNextAttribute:
- * @ctxt:  the XPath Parser context
- * @cur:  the current attribute in the traversal
- *
  * Traversal function for the "attribute" direction
  * TODO: support DTD inherited default attributes
  *
- * Returns the next element following that axis
+ * @param ctxt  the XPath Parser context
+ * @param cur  the current attribute in the traversal
+ * @returns the next element following that axis
  */
-xmlNodePtr
-xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+xmlNode *
+xmlXPathNextAttribute(xmlXPathParserContext *ctxt, xmlNode *cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (ctxt->context->node == NULL)
 	return(NULL);
@@ -7116,13 +6847,12 @@ xmlXPathNextAttribute(xmlXPathParserCont
  ************************************************************************/
 
 /**
- * xmlXPathRoot:
- * @ctxt:  the XPath Parser context
- *
  * Initialize the context to the root of the document
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathRoot(xmlXPathParserContextPtr ctxt) {
+xmlXPathRoot(xmlXPathParserContext *ctxt) {
     if ((ctxt == NULL) || (ctxt->context == NULL))
 	return;
     xmlXPathValuePush(ctxt, xmlXPathCacheNewNodeSet(ctxt,
@@ -7138,16 +6868,15 @@ xmlXPathRoot(xmlXPathParserContextPtr ct
 
 
 /**
- * xmlXPathLastFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the last() XPath function
  *    number last()
  * The last function returns the number of nodes in the context node list.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathLastFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(0);
     if (ctxt->context->contextSize >= 0) {
 	xmlXPathValuePush(ctxt,
@@ -7158,18 +6887,17 @@ xmlXPathLastFunction(xmlXPathParserConte
 }
 
 /**
- * xmlXPathPositionFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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().
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathPositionFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(0);
     if (ctxt->context->proximityPosition >= 0) {
 	xmlXPathValuePush(ctxt, xmlXPathCacheNewFloat(ctxt,
@@ -7180,15 +6908,14 @@ xmlXPathPositionFunction(xmlXPathParserC
 }
 
 /**
- * xmlXPathCountFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the count() XPath function
  *    number count(node-set)
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathCountFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
 
     CHECK_ARITY(1);
@@ -7207,13 +6934,11 @@ xmlXPathCountFunction(xmlXPathParserCont
 }
 
 /**
- * xmlXPathGetElementsByIds:
- * @doc:  the document
- * @ids:  a whitespace separated list of IDs
- *
  * Selects elements by their unique ID.
  *
- * Returns a node-set of selected elements.
+ * @param doc  the document
+ * @param ids  a whitespace separated list of IDs
+ * @returns a node-set of selected elements.
  */
 static xmlNodeSetPtr
 xmlXPathGetElementsByIds (xmlDocPtr doc, const xmlChar *ids) {
@@ -7270,10 +6995,6 @@ xmlXPathGetElementsByIds (xmlDocPtr doc,
 }
 
 /**
- * xmlXPathIdFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the id() XPath function
  *    node-set id(object)
  * The id function selects elements by their unique ID
@@ -7286,9 +7007,12 @@ xmlXPathGetElementsByIds (xmlDocPtr doc,
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathIdFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlChar *tokens;
     xmlNodeSetPtr ret;
     xmlXPathObjectPtr obj;
@@ -7337,10 +7061,6 @@ xmlXPathIdFunction(xmlXPathParserContext
 }
 
 /**
- * xmlXPathLocalNameFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the local-name() XPath function
  *    string local-name(node-set?)
  * The local-name function returns a string containing the local part
@@ -7348,9 +7068,12 @@ xmlXPathIdFunction(xmlXPathParserContext
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathLocalNameFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
 
     if (ctxt == NULL) return;
@@ -7393,10 +7116,6 @@ xmlXPathLocalNameFunction(xmlXPathParser
 }
 
 /**
- * xmlXPathNamespaceURIFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the namespace-uri() XPath function
  *    string namespace-uri(node-set?)
  * The namespace-uri function returns a string containing the
@@ -7405,9 +7124,12 @@ xmlXPathLocalNameFunction(xmlXPathParser
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathNamespaceURIFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
 
     if (ctxt == NULL) return;
@@ -7444,10 +7166,6 @@ xmlXPathNamespaceURIFunction(xmlXPathPar
 }
 
 /**
- * xmlXPathNameFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the name() XPath function
  *    string name(node-set?)
  * The name function returns a string containing a QName representing
@@ -7464,6 +7182,9 @@ xmlXPathNamespaceURIFunction(xmlXPathPar
  * defaults to the context node.
  * Libxml keep the original prefix so the "real qualified name" used is
  * returned.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 static void
 xmlXPathNameFunction(xmlXPathParserContextPtr ctxt, int nargs)
@@ -7521,10 +7242,6 @@ xmlXPathNameFunction(xmlXPathParserConte
 
 
 /**
- * xmlXPathStringFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the string() XPath function
  *    string string(object?)
  * The string function converts an object to a string as follows:
@@ -7555,9 +7272,12 @@ xmlXPathNameFunction(xmlXPathParserConte
  *
  * If the argument is omitted, it defaults to a node-set with the
  * context node as its only member.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathStringFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
     xmlChar *stringval;
 
@@ -7584,19 +7304,18 @@ xmlXPathStringFunction(xmlXPathParserCon
 }
 
 /**
- * xmlXPathStringLengthFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathStringLengthFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
 
     if (nargs == 0) {
@@ -7626,16 +7345,15 @@ xmlXPathStringLengthFunction(xmlXPathPar
 }
 
 /**
- * xmlXPathConcatFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the concat() XPath function
  *    string concat(string, string, string*)
  * The concat function returns the concatenation of its arguments.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathConcatFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur, newobj;
     xmlChar *tmp;
 
@@ -7672,17 +7390,16 @@ xmlXPathConcatFunction(xmlXPathParserCon
 }
 
 /**
- * xmlXPathContainsFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathContainsFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr hay, needle;
 
     CHECK_ARITY(2);
@@ -7706,17 +7423,16 @@ xmlXPathContainsFunction(xmlXPathParserC
 }
 
 /**
- * xmlXPathStartsWithFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathStartsWithFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr hay, needle;
     int n;
 
@@ -7742,10 +7458,6 @@ xmlXPathStartsWithFunction(xmlXPathParse
 }
 
 /**
- * xmlXPathSubstringFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the substring() XPath function
  *    string substring(string, number, number?)
  * The substring function returns the substring of the first argument
@@ -7768,9 +7480,12 @@ xmlXPathStartsWithFunction(xmlXPathParse
  *  - substring("12345", 1, 0 div 0) returns ""
  *  - substring("12345", -42, 1 div 0) returns "12345"
  *  - substring("12345", -1 div 0, 1 div 0) returns ""
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathSubstringFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr str, start, len;
     double le=0, in;
     int i = 1, j = INT_MAX;
@@ -7845,10 +7560,6 @@ xmlXPathSubstringFunction(xmlXPathParser
 }
 
 /**
- * xmlXPathSubstringBeforeFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the substring-before() XPath function
  *    string substring-before(string, string)
  * The substring-before function returns the substring of the first
@@ -7856,9 +7567,12 @@ xmlXPathSubstringFunction(xmlXPathParser
  * 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("1999/04/01","/") returns 1999.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathSubstringBeforeFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr str = NULL;
     xmlXPathObjectPtr find = NULL;
     const xmlChar *point;
@@ -7890,10 +7604,6 @@ error:
 }
 
 /**
- * xmlXPathSubstringAfterFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the substring-after() XPath function
  *    string substring-after(string, string)
  * The substring-after function returns the substring of the first
@@ -7902,9 +7612,12 @@ error:
  * if the first argument string does not contain the second argument
  * string. For example, substring-after("1999/04/01","/") returns 04/01,
  * and substring-after("1999/04/01","19") returns 99/04/01.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathSubstringAfterFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr str = NULL;
     xmlXPathObjectPtr find = NULL;
     const xmlChar *point;
@@ -7936,10 +7649,6 @@ error:
 }
 
 /**
- * xmlXPathNormalizeFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the normalize-space() XPath function
  *    string normalize-space(string?)
  * The normalize-space function returns the argument string with white
@@ -7948,9 +7657,12 @@ error:
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathNormalizeFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlChar *source, *target;
     int blank;
 
@@ -7994,10 +7706,6 @@ xmlXPathNormalizeFunction(xmlXPathParser
 }
 
 /**
- * xmlXPathTranslateFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the translate() XPath function
  *    string translate(string, string, string)
  * The translate function returns the first argument string with
@@ -8008,14 +7716,18 @@ xmlXPathNormalizeFunction(xmlXPathParser
  * 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("--aaa--","abc-","ABC")
- * returns "AAA". If a character occurs more than once in second
+ * string are removed. For example,
+ * translate("--aaa--","abc-","ABC") returns "AAA".
+ * If a character occurs more than once in second
  * argument string, then the first occurrence determines the replacement
  * character. If the third argument string is longer than the second
  * argument string, then excess characters are ignored.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathTranslateFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr str = NULL;
     xmlXPathObjectPtr from = NULL;
     xmlXPathObjectPtr to = NULL;
@@ -8104,10 +7816,6 @@ error:
 }
 
 /**
- * xmlXPathBooleanFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the boolean() XPath function
  *    boolean boolean(object)
  * The boolean function converts its argument to a boolean as follows:
@@ -8115,9 +7823,12 @@ error:
  *      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
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathBooleanFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
 
     CHECK_ARITY(1);
@@ -8133,17 +7844,16 @@ xmlXPathBooleanFunction(xmlXPathParserCo
 }
 
 /**
- * xmlXPathNotFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the not() XPath function
  *    boolean not(boolean)
  * The not function returns true if its argument is false,
  * and false otherwise.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathNotFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(1);
     CAST_TO_BOOLEAN;
     CHECK_TYPE(XPATH_BOOLEAN);
@@ -8151,38 +7861,32 @@ xmlXPathNotFunction(xmlXPathParserContex
 }
 
 /**
- * xmlXPathTrueFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the true() XPath function
  *    boolean true()
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathTrueFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(0);
     xmlXPathValuePush(ctxt, xmlXPathCacheNewBoolean(ctxt, 1));
 }
 
 /**
- * xmlXPathFalseFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the false() XPath function
  *    boolean false()
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathFalseFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(0);
     xmlXPathValuePush(ctxt, xmlXPathCacheNewBoolean(ctxt, 0));
 }
 
 /**
- * xmlXPathLangFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the lang() XPath function
  *    boolean lang(string)
  * The lang function returns true or false depending on whether the
@@ -8192,15 +7896,18 @@ xmlXPathFalseFunction(xmlXPathParserCont
  * 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
- * returns false. If there is such an attribute, then lang returns
+ * has an xml:lang attribute. If there is no such attribute, then
+ * lang returns false. If there is such an attribute, then lang returns
  * true if the attribute value is equal to the argument ignoring case,
  * or if there is some suffix starting with - such that the attribute
  * value is equal to the argument ignoring that suffix of the attribute
  * value and ignoring case.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathLangFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr val;
     xmlNodePtr cur;
     xmlChar *theLang;
@@ -8238,15 +7945,14 @@ not_equal:
 }
 
 /**
- * xmlXPathNumberFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * Implement the number() XPath function
  *    number number(object?)
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathNumberFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
     double res;
 
@@ -8279,17 +7985,16 @@ xmlXPathNumberFunction(xmlXPathParserCon
 }
 
 /**
- * xmlXPathSumFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathSumFunction(xmlXPathParserContext *ctxt, int nargs) {
     xmlXPathObjectPtr cur;
     int i;
     double res = 0.0;
@@ -8312,17 +8017,16 @@ xmlXPathSumFunction(xmlXPathParserContex
 }
 
 /**
- * xmlXPathFloorFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathFloorFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(1);
     CAST_TO_NUMBER;
     CHECK_TYPE(XPATH_NUMBER);
@@ -8331,17 +8035,16 @@ xmlXPathFloorFunction(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCeilingFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathCeilingFunction(xmlXPathParserContext *ctxt, int nargs) {
     CHECK_ARITY(1);
     CAST_TO_NUMBER;
     CHECK_TYPE(XPATH_NUMBER);
@@ -8355,18 +8058,17 @@ xmlXPathCeilingFunction(xmlXPathParserCo
 }
 
 /**
- * xmlXPathRoundFunction:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
  * 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 closest to positive infinity is returned.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param nargs  the number of arguments
  */
 void
-xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+xmlXPathRoundFunction(xmlXPathParserContext *ctxt, int nargs) {
     double f;
 
     CHECK_ARITY(1);
@@ -8401,160 +8103,42 @@ static void xmlXPathCompileExpr(xmlXPath
 static void xmlXPathCompPredicate(xmlXPathParserContextPtr ctxt, int filter);
 static void xmlXPathCompLocationPath(xmlXPathParserContextPtr ctxt);
 static void xmlXPathCompRelativeLocationPath(xmlXPathParserContextPtr ctxt);
-static xmlChar * xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt,
-	                                  int qualified);
-
-/**
- * xmlXPathCurrentChar:
- * @ctxt:  the XPath parser context
- * @cur:  pointer to the beginning of the char
- * @len:  pointer to the length of the char read
- *
- * The current char value, if using UTF-8 this may actually span multiple
- * bytes in the input buffer.
- *
- * Returns the current char value and its length
- */
-
-static int
-xmlXPathCurrentChar(xmlXPathParserContextPtr ctxt, int *len) {
-    unsigned char c;
-    unsigned int val;
-    const xmlChar *cur;
-
-    if (ctxt == NULL)
-	return(0);
-    cur = ctxt->cur;
-
-    /*
-     * We are supposed to handle UTF8, check it's valid
-     * From rfc2044: encoding of the Unicode values on UTF-8:
-     *
-     * UCS-4 range (hex.)           UTF-8 octet sequence (binary)
-     * 0000 0000-0000 007F   0xxxxxxx
-     * 0000 0080-0000 07FF   110xxxxx 10xxxxxx
-     * 0000 0800-0000 FFFF   1110xxxx 10xxxxxx 10xxxxxx
-     *
-     * Check for the 0x110000 limit too
-     */
-    c = *cur;
-    if (c & 0x80) {
-	if ((cur[1] & 0xc0) != 0x80)
-	    goto encoding_error;
-	if ((c & 0xe0) == 0xe0) {
-
-	    if ((cur[2] & 0xc0) != 0x80)
-		goto encoding_error;
-	    if ((c & 0xf0) == 0xf0) {
-		if (((c & 0xf8) != 0xf0) ||
-		    ((cur[3] & 0xc0) != 0x80))
-		    goto encoding_error;
-		/* 4-byte code */
-		*len = 4;
-		val = (cur[0] & 0x7) << 18;
-		val |= (cur[1] & 0x3f) << 12;
-		val |= (cur[2] & 0x3f) << 6;
-		val |= cur[3] & 0x3f;
-	    } else {
-	      /* 3-byte code */
-		*len = 3;
-		val = (cur[0] & 0xf) << 12;
-		val |= (cur[1] & 0x3f) << 6;
-		val |= cur[2] & 0x3f;
-	    }
-	} else {
-	  /* 2-byte code */
-	    *len = 2;
-	    val = (cur[0] & 0x1f) << 6;
-	    val |= cur[1] & 0x3f;
-	}
-	if (!IS_CHAR(val)) {
-	    XP_ERROR0(XPATH_INVALID_CHAR_ERROR);
-	}
-	return(val);
-    } else {
-	/* 1-byte code */
-	*len = 1;
-	return(*cur);
-    }
-encoding_error:
-    /*
-     * If we detect an UTF8 error that probably means that the
-     * input encoding didn't get properly advertised in the
-     * declaration header. Report the error and switch the encoding
-     * to ISO-Latin-1 (if you don't like this policy, just declare the
-     * encoding !)
-     */
-    *len = 0;
-    XP_ERROR0(XPATH_ENCODING_ERROR);
-}
 
 /**
- * xmlXPathParseNCName:
- * @ctxt:  the XPath Parser context
- *
- * parse an XML namespace non qualified name.
+ * Parse an XML non-colonized name.
  *
- * [NS 3] NCName ::= (Letter | '_') (NCNameChar)*
- *
- * [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' |
- *                       CombiningChar | Extender
- *
- * Returns the namespace name or NULL
+ * @param ctxt  the XPath Parser context
+ * @returns the nc name or NULL
  */
 
 xmlChar *
-xmlXPathParseNCName(xmlXPathParserContextPtr ctxt) {
-    const xmlChar *in;
+xmlXPathParseNCName(xmlXPathParserContext *ctxt) {
+    const xmlChar *end;
     xmlChar *ret;
-    int count = 0;
 
     if ((ctxt == NULL) || (ctxt->cur == NULL)) return(NULL);
-    /*
-     * Accelerator for simple ASCII names
-     */
-    in = ctxt->cur;
-    if (((*in >= 0x61) && (*in <= 0x7A)) ||
-	((*in >= 0x41) && (*in <= 0x5A)) ||
-	(*in == '_')) {
-	in++;
-	while (((*in >= 0x61) && (*in <= 0x7A)) ||
-	       ((*in >= 0x41) && (*in <= 0x5A)) ||
-	       ((*in >= 0x30) && (*in <= 0x39)) ||
-	       (*in == '_') || (*in == '.') ||
-	       (*in == '-'))
-	    in++;
-	if ((*in == ' ') || (*in == '>') || (*in == '/') ||
-            (*in == '[') || (*in == ']') || (*in == ':') ||
-            (*in == '@') || (*in == '*')) {
-	    count = in - ctxt->cur;
-	    if (count == 0)
-		return(NULL);
-	    ret = xmlStrndup(ctxt->cur, count);
-            if (ret == NULL)
-                xmlXPathPErrMemory(ctxt);
-	    ctxt->cur = in;
-	    return(ret);
-	}
+
+    end = xmlScanName(ctxt->cur, XML_MAX_NAME_LENGTH, XML_SCAN_NC);
+    if (end == NULL) {
+        XP_ERRORNULL(XPATH_EXPR_ERROR);
     }
-    return(xmlXPathParseNameComplex(ctxt, 0));
+    if (end == ctxt->cur)
+        return(NULL);
+
+    ret = xmlStrndup(ctxt->cur, end - ctxt->cur);
+    if (ret == NULL)
+        xmlXPathPErrMemory(ctxt);
+    ctxt->cur = end;
+    return(ret);
 }
 
 
 /**
- * xmlXPathParseQName:
- * @ctxt:  the XPath Parser context
- * @prefix:  a xmlChar **
- *
- * parse an XML qualified name
- *
- * [NS 5] QName ::= (Prefix ':')? LocalPart
+ * Parse an XML qualified name
  *
- * [NS 6] Prefix ::= NCName
- *
- * [NS 7] LocalPart ::= NCName
- *
- * Returns the function returns the local part, and prefix is updated
+ * @param ctxt  the XPath Parser context
+ * @param prefix  a xmlChar **
+ * @returns the function returns the local part, and prefix is updated
  *   to get the Prefix if any.
  */
 
@@ -8573,147 +8157,36 @@ xmlXPathParseQName(xmlXPathParserContext
 }
 
 /**
- * xmlXPathParseName:
- * @ctxt:  the XPath Parser context
- *
  * parse an XML name
  *
- * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
- *                  CombiningChar | Extender
- *
- * [5] Name ::= (Letter | '_' | ':') (NameChar)*
- *
- * Returns the namespace name or NULL
+ * @param ctxt  the XPath Parser context
+ * @returns the name or NULL
  */
 
 xmlChar *
-xmlXPathParseName(xmlXPathParserContextPtr ctxt) {
-    const xmlChar *in;
+xmlXPathParseName(xmlXPathParserContext *ctxt) {
+    const xmlChar *end;
     xmlChar *ret;
-    size_t count = 0;
 
     if ((ctxt == NULL) || (ctxt->cur == NULL)) return(NULL);
-    /*
-     * Accelerator for simple ASCII names
-     */
-    in = ctxt->cur;
-    if (((*in >= 0x61) && (*in <= 0x7A)) ||
-	((*in >= 0x41) && (*in <= 0x5A)) ||
-	(*in == '_') || (*in == ':')) {
-	in++;
-	while (((*in >= 0x61) && (*in <= 0x7A)) ||
-	       ((*in >= 0x41) && (*in <= 0x5A)) ||
-	       ((*in >= 0x30) && (*in <= 0x39)) ||
-	       (*in == '_') || (*in == '-') ||
-	       (*in == ':') || (*in == '.'))
-	    in++;
-	if ((*in > 0) && (*in < 0x80)) {
-	    count = in - ctxt->cur;
-            if (count > XML_MAX_NAME_LENGTH) {
-                ctxt->cur = in;
-                XP_ERRORNULL(XPATH_EXPR_ERROR);
-            }
-	    ret = xmlStrndup(ctxt->cur, count);
-            if (ret == NULL)
-                xmlXPathPErrMemory(ctxt);
-	    ctxt->cur = in;
-	    return(ret);
-	}
-    }
-    return(xmlXPathParseNameComplex(ctxt, 1));
-}
-
-static xmlChar *
-xmlXPathParseNameComplex(xmlXPathParserContextPtr ctxt, int qualified) {
-    xmlChar *ret;
-    xmlChar buf[XML_MAX_NAMELEN + 5];
-    int len = 0, l;
-    int c;
 
-    /*
-     * Handler for more complex cases
-     */
-    c = CUR_CHAR(l);
-    if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
-        (c == '[') || (c == ']') || (c == '@') || /* accelerators */
-        (c == '*') || /* accelerators */
-	(!IS_LETTER(c) && (c != '_') &&
-         ((!qualified) || (c != ':')))) {
-	return(NULL);
+    end = xmlScanName(ctxt->cur, XML_MAX_NAME_LENGTH, 0);
+    if (end == NULL) {
+        XP_ERRORNULL(XPATH_EXPR_ERROR);
     }
+    if (end == ctxt->cur)
+        return(NULL);
 
-    while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
-	   ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
-            (c == '.') || (c == '-') ||
-	    (c == '_') || ((qualified) && (c == ':')) ||
-	    (IS_COMBINING(c)) ||
-	    (IS_EXTENDER(c)))) {
-	COPY_BUF(buf,len,c);
-	NEXTL(l);
-	c = CUR_CHAR(l);
-	if (len >= XML_MAX_NAMELEN) {
-	    /*
-	     * Okay someone managed to make a huge name, so he's ready to pay
-	     * for the processing speed.
-	     */
-	    xmlChar *buffer;
-	    int max = len * 2;
-
-            if (len > XML_MAX_NAME_LENGTH) {
-                XP_ERRORNULL(XPATH_EXPR_ERROR);
-            }
-	    buffer = xmlMalloc(max);
-	    if (buffer == NULL) {
-                xmlXPathPErrMemory(ctxt);
-                return(NULL);
-	    }
-	    memcpy(buffer, buf, len);
-	    while ((IS_LETTER(c)) || (IS_DIGIT(c)) || /* test bigname.xml */
-		   (c == '.') || (c == '-') ||
-		   (c == '_') || ((qualified) && (c == ':')) ||
-		   (IS_COMBINING(c)) ||
-		   (IS_EXTENDER(c))) {
-		if (len + 10 > max) {
-                    xmlChar *tmp;
-                    int newSize;
-
-                    newSize = xmlGrowCapacity(max, 1, 1, XML_MAX_NAME_LENGTH);
-                    if (newSize < 0) {
-                        xmlFree(buffer);
-                        xmlXPathErr(ctxt, XPATH_EXPR_ERROR);
-                        return(NULL);
-                    }
-		    tmp = xmlRealloc(buffer, newSize);
-		    if (tmp == NULL) {
-                        xmlFree(buffer);
-                        xmlXPathPErrMemory(ctxt);
-                        return(NULL);
-		    }
-                    buffer = tmp;
-		    max = newSize;
-		}
-		COPY_BUF(buffer,len,c);
-		NEXTL(l);
-		c = CUR_CHAR(l);
-	    }
-	    buffer[len] = 0;
-	    return(buffer);
-	}
-    }
-    if (len == 0)
-	return(NULL);
-    ret = xmlStrndup(buf, len);
+    ret = xmlStrndup(ctxt->cur, end - ctxt->cur);
     if (ret == NULL)
         xmlXPathPErrMemory(ctxt);
+    ctxt->cur = end;
     return(ret);
 }
 
 #define MAX_FRAC 20
 
 /**
- * xmlXPathStringEvalNumber:
- * @str:  A string to scan
- *
  *  [30a]  Float  ::= Number ('e' Digits?)?
  *
  *  [30]   Number ::=   Digits ('.' Digits?)?
@@ -8724,7 +8197,8 @@ xmlXPathParseNameComplex(xmlXPathParserC
  * In complement of the Number expression, this function also handles
  * negative values : '-' Number.
  *
- * Returns the double value.
+ * @param str  A string to scan
+ * @returns the double value.
  */
 double
 xmlXPathStringEvalNumber(const xmlChar *str) {
@@ -8818,15 +8292,13 @@ xmlXPathStringEvalNumber(const xmlChar *
 }
 
 /**
- * xmlXPathCompNumber:
- * @ctxt:  the XPath Parser context
- *
  *  [30]   Number ::=   Digits ('.' Digits?)?
  *                    | '.' Digits
  *  [31]   Digits ::=   [0-9]+
  *
  * Compile a Number, then push it on the stack
  *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompNumber(xmlXPathParserContextPtr ctxt)
@@ -8918,15 +8390,13 @@ xmlXPathCompNumber(xmlXPathParserContext
 }
 
 /**
- * xmlXPathParseLiteral:
- * @ctxt:  the XPath Parser context
- *
  * Parse a Literal
  *
  *  [29]   Literal ::=   '"' [^"]* '"'
  *                    | "'" [^']* "'"
  *
- * Returns the value found or NULL in case of error
+ * @param ctxt  the XPath Parser context
+ * @returns the value found or NULL in case of error
  */
 static xmlChar *
 xmlXPathParseLiteral(xmlXPathParserContextPtr ctxt) {
@@ -8963,15 +8433,14 @@ xmlXPathParseLiteral(xmlXPathParserConte
 }
 
 /**
- * xmlXPathCompLiteral:
- * @ctxt:  the XPath Parser context
- *
  * Parse a Literal and push it on the stack.
  *
  *  [29]   Literal ::=   '"' [^"]* '"'
  *                    | "'" [^']* "'"
  *
- * TODO: xmlXPathCompLiteral memory allocation could be improved.
+ * TODO: Memory allocation could be improved.
+ *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompLiteral(xmlXPathParserContextPtr ctxt) {
@@ -8992,9 +8461,6 @@ xmlXPathCompLiteral(xmlXPathParserContex
 }
 
 /**
- * xmlXPathCompVariableReference:
- * @ctxt:  the XPath Parser context
- *
  * Parse a VariableReference, evaluate it and push it on the stack.
  *
  * The variable bindings consist of a mapping from variable names
@@ -9007,6 +8473,7 @@ xmlXPathCompLiteral(xmlXPathParserContex
  * always the same as those used to evaluate the containing expression.
  *
  *  [36]   VariableReference ::=   '$' QName
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompVariableReference(xmlXPathParserContextPtr ctxt) {
@@ -9035,9 +8502,6 @@ xmlXPathCompVariableReference(xmlXPathPa
 }
 
 /**
- * xmlXPathIsNodeType:
- * @name:  a name string
- *
  * Is the name given a NodeType one.
  *
  *  [38]   NodeType ::=   'comment'
@@ -9045,7 +8509,8 @@ xmlXPathCompVariableReference(xmlXPathPa
  *                    | 'processing-instruction'
  *                    | 'node'
  *
- * Returns 1 if true 0 otherwise
+ * @param name  a name string
+ * @returns 1 if true 0 otherwise
  */
 int
 xmlXPathIsNodeType(const xmlChar *name) {
@@ -9064,14 +8529,13 @@ xmlXPathIsNodeType(const xmlChar *name)
 }
 
 /**
- * xmlXPathCompFunctionCall:
- * @ctxt:  the XPath Parser context
- *
  *  [16]   FunctionCall ::=   FunctionName '(' ( Argument ( ',' Argument)*)? ')'
  *  [17]   Argument ::=   Expr
  *
  * Compile a function call, the evaluation of all arguments are
  * pushed on the stack
+ *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompFunctionCall(xmlXPathParserContextPtr ctxt) {
@@ -9135,9 +8599,6 @@ xmlXPathCompFunctionCall(xmlXPathParserC
 }
 
 /**
- * xmlXPathCompPrimaryExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [15]   PrimaryExpr ::=   VariableReference
  *                | '(' Expr ')'
  *                | Literal
@@ -9145,6 +8606,8 @@ xmlXPathCompFunctionCall(xmlXPathParserC
  *                | FunctionCall
  *
  * Compile a primary expression.
+ *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompPrimaryExpr(xmlXPathParserContextPtr ctxt) {
@@ -9171,9 +8634,6 @@ xmlXPathCompPrimaryExpr(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCompFilterExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [20]   FilterExpr ::=   PrimaryExpr
  *               | FilterExpr Predicate
  *
@@ -9183,6 +8643,8 @@ xmlXPathCompPrimaryExpr(xmlXPathParserCo
  * be filtered does not evaluate to a node-set. The context node list
  * used for evaluating the expression in square brackets is the node-set
  * to be filtered listed in document order.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9200,70 +8662,40 @@ xmlXPathCompFilterExpr(xmlXPathParserCon
 }
 
 /**
- * xmlXPathScanName:
- * @ctxt:  the XPath Parser context
- *
  * Trickery: parse an XML name but without consuming the input flow
  * Needed to avoid insanity in the parser state.
  *
- * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' |
- *                  CombiningChar | Extender
- *
- * [5] Name ::= (Letter | '_' | ':') (NameChar)*
- *
- * [6] Names ::= Name (S Name)*
- *
- * Returns the Name parsed or NULL
+ * @param ctxt  the XPath Parser context
+ * @returns the Name parsed or NULL
  */
 
 static xmlChar *
 xmlXPathScanName(xmlXPathParserContextPtr ctxt) {
-    int l;
-    int c;
-    const xmlChar *cur;
+    const xmlChar *end;
     xmlChar *ret;
 
-    cur = ctxt->cur;
-
-    c = CUR_CHAR(l);
-    if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
-	(!IS_LETTER(c) && (c != '_') &&
-         (c != ':'))) {
-	return(NULL);
+    end = xmlScanName(ctxt->cur, XML_MAX_NAME_LENGTH, 0);
+    if (end == NULL) {
+        XP_ERRORNULL(XPATH_EXPR_ERROR);
     }
+    if (end == ctxt->cur)
+        return(NULL);
 
-    while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */
-	   ((IS_LETTER(c)) || (IS_DIGIT(c)) ||
-            (c == '.') || (c == '-') ||
-	    (c == '_') || (c == ':') ||
-	    (IS_COMBINING(c)) ||
-	    (IS_EXTENDER(c)))) {
-	NEXTL(l);
-	c = CUR_CHAR(l);
-    }
-    ret = xmlStrndup(cur, ctxt->cur - cur);
+    ret = xmlStrndup(ctxt->cur, end - ctxt->cur);
     if (ret == NULL)
         xmlXPathPErrMemory(ctxt);
-    ctxt->cur = cur;
     return(ret);
 }
 
 /**
- * xmlXPathCompPathExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [19]   PathExpr ::=   LocationPath
  *               | FilterExpr
  *               | FilterExpr '/' RelativeLocationPath
  *               | FilterExpr '//' RelativeLocationPath
  *
  * Compile a path expression.
- * The / operator and // operators combine an arbitrary expression
- * and a relative location path. It is an error if the expression
- * does not evaluate to a node-set.
- * The / operator does composition in the same way as when / is
- * used in a location path. As in location paths, // is short for
- * /descendant-or-self::node()/.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9380,13 +8812,12 @@ xmlXPathCompPathExpr(xmlXPathParserConte
 }
 
 /**
- * xmlXPathCompUnionExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [18]   UnionExpr ::=   PathExpr
  *               | UnionExpr '|' PathExpr
  *
  * Compile an union expression.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9409,13 +8840,12 @@ xmlXPathCompUnionExpr(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCompUnaryExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [27]   UnaryExpr ::=   UnionExpr
  *                   | '-' UnaryExpr
  *
  * Compile an unary expression.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9442,9 +8872,6 @@ xmlXPathCompUnaryExpr(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCompMultiplicativeExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [26]   MultiplicativeExpr ::=   UnaryExpr
  *                   | MultiplicativeExpr MultiplyOperator UnaryExpr
  *                   | MultiplicativeExpr 'div' UnaryExpr
@@ -9452,6 +8879,8 @@ xmlXPathCompUnaryExpr(xmlXPathParserCont
  *  [34]   MultiplyOperator ::=   '*'
  *
  * Compile an Additive expression.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9484,14 +8913,13 @@ xmlXPathCompMultiplicativeExpr(xmlXPathP
 }
 
 /**
- * xmlXPathCompAdditiveExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [25]   AdditiveExpr ::=   MultiplicativeExpr
  *                   | AdditiveExpr '+' MultiplicativeExpr
  *                   | AdditiveExpr '-' MultiplicativeExpr
  *
  * Compile an Additive expression.
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9516,9 +8944,6 @@ xmlXPathCompAdditiveExpr(xmlXPathParserC
 }
 
 /**
- * xmlXPathCompRelationalExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [24]   RelationalExpr ::=   AdditiveExpr
  *                 | RelationalExpr '<' AdditiveExpr
  *                 | RelationalExpr '>' AdditiveExpr
@@ -9531,6 +8956,8 @@ xmlXPathCompAdditiveExpr(xmlXPathParserC
  *
  * Compile a Relational expression, then push the result
  * on the stack
+ *
+ * @param ctxt  the XPath Parser context
  */
 
 static void
@@ -9557,9 +8984,6 @@ xmlXPathCompRelationalExpr(xmlXPathParse
 }
 
 /**
- * xmlXPathCompEqualityExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [23]   EqualityExpr ::=   RelationalExpr
  *                 | EqualityExpr '=' RelationalExpr
  *                 | EqualityExpr '!=' RelationalExpr
@@ -9571,6 +8995,7 @@ xmlXPathCompRelationalExpr(xmlXPathParse
  *
  * Compile an Equality expression.
  *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompEqualityExpr(xmlXPathParserContextPtr ctxt) {
@@ -9594,14 +9019,12 @@ xmlXPathCompEqualityExpr(xmlXPathParserC
 }
 
 /**
- * xmlXPathCompAndExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [22]   AndExpr ::=   EqualityExpr
  *                 | AndExpr 'and' EqualityExpr
  *
  * Compile an AND expression.
  *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompAndExpr(xmlXPathParserContextPtr ctxt) {
@@ -9620,14 +9043,14 @@ xmlXPathCompAndExpr(xmlXPathParserContex
 }
 
 /**
- * xmlXPathCompileExpr:
- * @ctxt:  the XPath Parser context
- *
  *  [14]   Expr ::=   OrExpr
  *  [21]   OrExpr ::=   AndExpr
  *                 | OrExpr 'or' AndExpr
  *
  * Parse and compile an expression
+ *
+ * @param ctxt  the XPath Parser context
+ * @param sort  whether to sort the resulting node set
  */
 static void
 xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) {
@@ -9670,14 +9093,13 @@ xmlXPathCompileExpr(xmlXPathParserContex
 }
 
 /**
- * xmlXPathCompPredicate:
- * @ctxt:  the XPath Parser context
- * @filter:  act as a filter
- *
  *  [8]   Predicate ::=   '[' PredicateExpr ']'
  *  [9]   PredicateExpr ::=   Expr
  *
  * Compile a predicate expression
+ *
+ * @param ctxt  the XPath Parser context
+ * @param filter  act as a filter
  */
 static void
 xmlXPathCompPredicate(xmlXPathParserContextPtr ctxt, int filter) {
@@ -9720,12 +9142,7 @@ xmlXPathCompPredicate(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCompNodeTest:
- * @ctxt:  the XPath Parser context
- * @test:  pointer to a xmlXPathTestVal
- * @type:  pointer to a xmlXPathTypeVal
- * @prefix:  placeholder for a possible name prefix
- *
+ * ```
  * [7] NodeTest ::=   NameTest
  *		    | NodeType '(' ')'
  *		    | 'processing-instruction' '(' Literal ')'
@@ -9737,8 +9154,14 @@ xmlXPathCompPredicate(xmlXPathParserCont
  *		   | 'text'
  *		   | 'processing-instruction'
  *		   | 'node'
+ * ```
  *
- * Returns the name found and updates @test, @type and @prefix appropriately
+ * @param ctxt  the XPath Parser context
+ * @param test  pointer to a xmlXPathTestVal
+ * @param type  pointer to a xmlXPathTypeVal
+ * @param prefix  placeholder for a possible name prefix
+ * @param name  current name token (optional)
+ * @returns the name found and updates `test`, `type` and `prefix` appropriately
  */
 static xmlChar *
 xmlXPathCompNodeTest(xmlXPathParserContextPtr ctxt, xmlXPathTestVal *test,
@@ -9845,9 +9268,6 @@ xmlXPathCompNodeTest(xmlXPathParserConte
 }
 
 /**
- * xmlXPathIsAxisName:
- * @name:  a preparsed name token
- *
  * [6] AxisName ::=   'ancestor'
  *                  | 'ancestor-or-self'
  *                  | 'attribute'
@@ -9862,7 +9282,8 @@ xmlXPathCompNodeTest(xmlXPathParserConte
  *                  | 'preceding-sibling'
  *                  | 'self'
  *
- * Returns the axis or 0
+ * @param name  a preparsed name token
+ * @returns the axis or 0
  */
 static xmlXPathAxisVal
 xmlXPathIsAxisName(const xmlChar *name) {
@@ -9913,9 +9334,6 @@ xmlXPathIsAxisName(const xmlChar *name)
 }
 
 /**
- * xmlXPathCompStep:
- * @ctxt:  the XPath Parser context
- *
  * [4] Step ::=   AxisSpecifier NodeTest Predicate*
  *                  | AbbreviatedStep
  *
@@ -9933,16 +9351,8 @@ xmlXPathIsAxisName(const xmlChar *name)
  *                     | 'range-to' '(' Expr ')' Predicate*
  *
  * Compile one step in a Location Path
- * A location step of . is short for self::node(). This is
- * particularly useful in conjunction with //. For example, the
- * location path .//para is short for
- * self::node()/descendant-or-self::node()/child::para
- * and so will select all para descendant elements of the context
- * node.
- * Similarly, a location step of .. is short for parent::node().
- * For example, ../title is short for parent::node()/child::title
- * and so will select the title children of the parent of the context
- * node.
+ *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompStep(xmlXPathParserContextPtr ctxt) {
@@ -10003,7 +9413,8 @@ xmlXPathCompStep(xmlXPathParserContextPt
         if ((prefix != NULL) && (ctxt->context != NULL) &&
 	    (ctxt->context->flags & XML_XPATH_CHECKNS)) {
 	    if (xmlXPathNsLookup(ctxt->context, prefix) == NULL) {
-		xmlXPathErr(ctxt, XPATH_UNDEF_PREFIX_ERROR);
+		xmlXPathErrFmt(ctxt, XPATH_UNDEF_PREFIX_ERROR,
+                               "Undefined namespace prefix: %s\n", prefix);
 	    }
 	}
 
@@ -10024,15 +9435,14 @@ xmlXPathCompStep(xmlXPathParserContextPt
 }
 
 /**
- * xmlXPathCompRelativeLocationPath:
- * @ctxt:  the XPath Parser context
- *
  *  [3]   RelativeLocationPath ::=   Step
  *                     | RelativeLocationPath '/' Step
  *                     | AbbreviatedRelativeLocationPath
  *  [11]  AbbreviatedRelativeLocationPath ::=   RelativeLocationPath '//' Step
  *
  * Compile a relative location path.
+ *
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompRelativeLocationPath
@@ -10067,9 +9477,6 @@ xmlXPathCompRelativeLocationPath
 }
 
 /**
- * xmlXPathCompLocationPath:
- * @ctxt:  the XPath Parser context
- *
  *  [1]   LocationPath ::=   RelativeLocationPath
  *                     | AbsoluteLocationPath
  *  [2]   AbsoluteLocationPath ::=   '/' RelativeLocationPath?
@@ -10079,13 +9486,7 @@ xmlXPathCompRelativeLocationPath
  *
  * Compile a location path
  *
- * // is short for /descendant-or-self::node()/. For example,
- * //para is short for /descendant-or-self::node()/child::para and
- * so will select any para element in the document (even a para element
- * that is a document element will be selected by //para since the
- * document element node is a child of the root node); div//para is
- * short for div/descendant-or-self::node()/child::para and so will
- * select all para descendants of div children.
+ * @param ctxt  the XPath Parser context
  */
 static void
 xmlXPathCompLocationPath(xmlXPathParserContextPtr ctxt) {
@@ -10124,17 +9525,16 @@ static int
 xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op);
 
 /**
- * xmlXPathNodeSetFilter:
- * @ctxt:  the XPath Parser context
- * @set: the node set to filter
- * @filterOpIndex: the index of the predicate/filter op
- * @minPos: minimum position in the filtered set (1-based)
- * @maxPos: maximum position in the filtered set (1-based)
- * @hasNsNodes: true if the node set may contain namespace nodes
- *
  * Filter a node set, keeping only nodes for which the predicate expression
  * matches. Afterwards, keep only nodes between minPos and maxPos in the
  * filtered result.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param set  the node set to filter
+ * @param filterOpIndex  the index of the predicate/filter op
+ * @param minPos  minimum position in the filtered set (1-based)
+ * @param maxPos  maximum position in the filtered set (1-based)
+ * @param hasNsNodes  true if the node set may contain namespace nodes
  */
 static void
 xmlXPathNodeSetFilter(xmlXPathParserContextPtr ctxt,
@@ -10258,17 +9658,16 @@ xmlXPathNodeSetFilter(xmlXPathParserCont
 }
 
 /**
- * xmlXPathCompOpEvalPredicate:
- * @ctxt:  the XPath Parser context
- * @op: the predicate op
- * @set: the node set to filter
- * @minPos: minimum position in the filtered set (1-based)
- * @maxPos: maximum position in the filtered set (1-based)
- * @hasNsNodes: true if the node set may contain namespace nodes
- *
  * Filter a node set, keeping only nodes for which the sequence of predicate
  * expressions matches. Afterwards, keep only nodes between minPos and maxPos
  * in the filtered result.
+ *
+ * @param ctxt  the XPath Parser context
+ * @param op  the predicate op
+ * @param set  the node set to filter
+ * @param minPos  minimum position in the filtered set (1-based)
+ * @param maxPos  maximum position in the filtered set (1-based)
+ * @param hasNsNodes  true if the node set may contain namespace nodes
  */
 static void
 xmlXPathCompOpEvalPredicate(xmlXPathParserContextPtr ctxt,
@@ -10429,7 +9828,9 @@ xmlXPathNodeCollectAndTest(xmlXPathParse
         URI = xmlXPathNsLookup(xpctxt, prefix);
         if (URI == NULL) {
 	    xmlXPathReleaseObject(xpctxt, obj);
-            XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR);
+            xmlXPathErrFmt(ctxt, XPATH_UNDEF_PREFIX_ERROR,
+                           "Undefined namespace prefix: %s\n", prefix);
+            return 0;
 	}
     }
     /*
@@ -10959,15 +10360,13 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathPa
 			      xmlXPathStepOpPtr op, xmlNodePtr * first);
 
 /**
- * xmlXPathCompOpEvalFirst:
- * @ctxt:  the XPath parser context with the compiled expression
- * @op:  an XPath compiled operation
- * @first:  the first elem found so far
- *
  * Evaluate the Precompiled XPath operation searching only the first
  * element in document order
  *
- * Returns the number of examined objects.
+ * @param ctxt  the XPath parser context with the compiled expression
+ * @param op  an XPath compiled operation
+ * @param first  the first elem found so far
+ * @returns the number of examined objects.
  */
 static int
 xmlXPathCompOpEvalFirst(xmlXPathParserContextPtr ctxt,
@@ -11099,15 +10498,13 @@ xmlXPathCompOpEvalFirst(xmlXPathParserCo
 }
 
 /**
- * xmlXPathCompOpEvalLast:
- * @ctxt:  the XPath parser context with the compiled expression
- * @op:  an XPath compiled operation
- * @last:  the last elem found so far
- *
  * Evaluate the Precompiled XPath operation searching only the last
  * element in document order
  *
- * Returns the number of nodes traversed
+ * @param ctxt  the XPath parser context with the compiled expression
+ * @param op  an XPath compiled operation
+ * @param last  the last elem found so far
+ * @returns the number of nodes traversed
  */
 static int
 xmlXPathCompOpEvalLast(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op,
@@ -11310,12 +10707,11 @@ xmlXPathCompOpEvalFilterFirst(xmlXPathPa
 #endif /* XP_OPTIMIZED_FILTER_FIRST */
 
 /**
- * xmlXPathCompOpEval:
- * @ctxt:  the XPath parser context with the compiled expression
- * @op:  an XPath compiled operation
- *
  * Evaluate the Precompiled XPath operation
- * Returns the number of nodes traversed
+ *
+ * @param ctxt  the XPath parser context with the compiled expression
+ * @param op  an XPath compiled operation
+ * @returns the number of nodes traversed
  */
 static int
 xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
@@ -11490,21 +10886,30 @@ xmlXPathCompOpEval(xmlXPathParserContext
                         xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
                 if (op->value5 == NULL) {
 		    val = xmlXPathVariableLookup(ctxt->context, op->value4);
-		    if (val == NULL)
-			XP_ERROR0(XPATH_UNDEF_VARIABLE_ERROR);
+		    if (val == NULL) {
+                        xmlXPathErrFmt(ctxt, XPATH_UNDEF_VARIABLE_ERROR,
+                                       "Undefined variable: %s\n", op->value4);
+                        return 0;
+                    }
                     xmlXPathValuePush(ctxt, val);
 		} else {
                     const xmlChar *URI;
 
                     URI = xmlXPathNsLookup(ctxt->context, op->value5);
                     if (URI == NULL) {
-                        XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR);
-                        break;
+                        xmlXPathErrFmt(ctxt, XPATH_UNDEF_PREFIX_ERROR,
+                                       "Undefined namespace prefix: %s\n",
+                                       op->value5);
+                        return 0;
                     }
 		    val = xmlXPathVariableLookupNS(ctxt->context,
                                                        op->value4, URI);
-		    if (val == NULL)
-			XP_ERROR0(XPATH_UNDEF_VARIABLE_ERROR);
+		    if (val == NULL) {
+                        xmlXPathErrFmt(ctxt, XPATH_UNDEF_VARIABLE_ERROR,
+                                       "Undefined variable: %s:%s\n",
+                                       op->value5, op->value4);
+                        return 0;
+                    }
                     xmlXPathValuePush(ctxt, val);
                 }
                 break;
@@ -11533,19 +10938,32 @@ xmlXPathCompOpEval(xmlXPathParserContext
                 else {
                     const xmlChar *URI = NULL;
 
-                    if (op->value5 == NULL)
-                        func =
-                            xmlXPathFunctionLookup(ctxt->context,
-                                                   op->value4);
-                    else {
+                    if (op->value5 == NULL) {
+                        func = xmlXPathFunctionLookup(ctxt->context,
+                                                      op->value4);
+                        if (func == NULL) {
+                            xmlXPathErrFmt(ctxt, XPATH_UNKNOWN_FUNC_ERROR,
+                                           "Unregistered function: %s\n",
+                                           op->value4);
+                            return 0;
+                        }
+                    } else {
                         URI = xmlXPathNsLookup(ctxt->context, op->value5);
-                        if (URI == NULL)
-                            XP_ERROR0(XPATH_UNDEF_PREFIX_ERROR);
+                        if (URI == NULL) {
+                            xmlXPathErrFmt(ctxt, XPATH_UNDEF_PREFIX_ERROR,
+                                           "Undefined namespace prefix: %s\n",
+                                           op->value5);
+                            return 0;
+                        }
                         func = xmlXPathFunctionLookupNS(ctxt->context,
                                                         op->value4, URI);
+                        if (func == NULL) {
+                            xmlXPathErrFmt(ctxt, XPATH_UNKNOWN_FUNC_ERROR,
+                                           "Unregistered function: %s:%s\n",
+                                           op->value5, op->value4);
+                            return 0;
+                        }
                     }
-                    if (func == NULL)
-                        XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR);
                     op->cache = func;
                     op->cacheURI = (void *) URI;
                 }
@@ -11713,12 +11131,12 @@ xmlXPathCompOpEval(xmlXPathParserContext
 }
 
 /**
- * xmlXPathCompOpEvalToBoolean:
- * @ctxt:  the XPath parser context
- *
  * Evaluates if the expression evaluates to true.
  *
- * Returns 1 if true, 0 if false and -1 on API or internal errors.
+ * @param ctxt  the XPath parser context
+ * @param op  the step operation
+ * @param isPredicate  whether a predicate is evaluated
+ * @returns 1 if true, 0 if false and -1 on API or internal errors.
  */
 static int
 xmlXPathCompOpEvalToBoolean(xmlXPathParserContextPtr ctxt,
@@ -11805,10 +11223,9 @@ start:
 
 #ifdef XPATH_STREAMING
 /**
- * xmlXPathRunStreamEval:
- * @pctxt:  the XPath parser context with the compiled expression
- *
  * Evaluate the Precompiled Streamable XPath expression in the given context.
+ *
+ * @param pctxt  the XPath parser context with the compiled expression
  */
 static int
 xmlXPathRunStreamEval(xmlXPathParserContextPtr pctxt, xmlPatternPtr comp,
@@ -12037,11 +11454,10 @@ return_1:
 #endif /* XPATH_STREAMING */
 
 /**
- * xmlXPathRunEval:
- * @ctxt:  the XPath parser context with the compiled expression
- * @toBool:  evaluate to a boolean result
- *
  * Evaluate the Precompiled XPath expression in the given context.
+ *
+ * @param ctxt  the XPath parser context with the compiled expression
+ * @param toBool  evaluate to a boolean result
  */
 static int
 xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool)
@@ -12124,10 +11540,6 @@ xmlXPathRunEval(xmlXPathParserContextPtr
  ************************************************************************/
 
 /**
- * xmlXPathEvalPredicate:
- * @ctxt:  the XPath context
- * @res:  the Predicate Expression evaluation result
- *
  * 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
@@ -12137,10 +11549,12 @@ xmlXPathRunEval(xmlXPathParserContextPtr
  * is not a number, then the result will be converted as if by a call
  * to the boolean function.
  *
- * Returns 1 if predicate is true, 0 otherwise
+ * @param ctxt  the XPath context
+ * @param res  the Predicate Expression evaluation result
+ * @returns 1 if predicate is true, 0 otherwise
  */
 int
-xmlXPathEvalPredicate(xmlXPathContextPtr ctxt, xmlXPathObjectPtr res) {
+xmlXPathEvalPredicate(xmlXPathContext *ctxt, xmlXPathObject *res) {
     if ((ctxt == NULL) || (res == NULL)) return(0);
     switch (res->type) {
         case XPATH_BOOLEAN:
@@ -12162,10 +11576,6 @@ xmlXPathEvalPredicate(xmlXPathContextPtr
 }
 
 /**
- * xmlXPathEvaluatePredicateResult:
- * @ctxt:  the XPath Parser context
- * @res:  the Predicate Expression evaluation result
- *
  * 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
@@ -12175,11 +11585,13 @@ xmlXPathEvalPredicate(xmlXPathContextPtr
  * is not a number, then the result will be converted as if by a call
  * to the boolean function.
  *
- * Returns 1 if predicate is true, 0 otherwise
+ * @param ctxt  the XPath Parser context
+ * @param res  the Predicate Expression evaluation result
+ * @returns 1 if predicate is true, 0 otherwise
  */
 int
-xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt,
-                                xmlXPathObjectPtr res) {
+xmlXPathEvaluatePredicateResult(xmlXPathParserContext *ctxt,
+                                xmlXPathObject *res) {
     if ((ctxt == NULL) || (res == NULL)) return(0);
     switch (res->type) {
         case XPATH_BOOLEAN:
@@ -12206,13 +11618,11 @@ xmlXPathEvaluatePredicateResult(xmlXPath
 
 #ifdef XPATH_STREAMING
 /**
- * xmlXPathTryStreamCompile:
- * @ctxt: an XPath context
- * @str:  the XPath expression
- *
  * Try to compile the XPath expression as a streamable subset.
  *
- * Returns the compiled expression or NULL if failed to compile.
+ * @param ctxt  an XPath context
+ * @param str  the XPath expression
+ * @returns the compiled expression or NULL if failed to compile.
  */
 static xmlXPathCompExprPtr
 xmlXPathTryStreamCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
@@ -12369,22 +11779,23 @@ xmlXPathOptimizeExpression(xmlXPathParse
 }
 
 /**
- * xmlXPathCtxtCompile:
- * @ctxt: an XPath context
- * @str:  the XPath expression
- *
  * Compile an XPath expression
  *
- * Returns the xmlXPathCompExprPtr resulting from the compilation or NULL.
+ * @param ctxt  an XPath context
+ * @param str  the XPath expression
+ * @returns the xmlXPathCompExpr resulting from the compilation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathCompExprPtr
-xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
+xmlXPathCompExpr *
+xmlXPathCtxtCompile(xmlXPathContext *ctxt, const xmlChar *str) {
     xmlXPathParserContextPtr pctxt;
     xmlXPathContextPtr tmpctxt = NULL;
     xmlXPathCompExprPtr comp;
     int oldDepth = 0;
 
+    if (str == NULL)
+        return(NULL);
+
 #ifdef XPATH_STREAMING
     comp = xmlXPathTryStreamCompile(ctxt, str);
     if (comp != NULL)
@@ -12453,30 +11864,26 @@ xmlXPathCtxtCompile(xmlXPathContextPtr c
 }
 
 /**
- * xmlXPathCompile:
- * @str:  the XPath expression
- *
  * Compile an XPath expression
  *
- * Returns the xmlXPathCompExprPtr resulting from the compilation or NULL.
+ * @param str  the XPath expression
+ * @returns the xmlXPathCompExpr resulting from the compilation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathCompExprPtr
+xmlXPathCompExpr *
 xmlXPathCompile(const xmlChar *str) {
     return(xmlXPathCtxtCompile(NULL, str));
 }
 
 /**
- * xmlXPathCompiledEvalInternal:
- * @comp:  the compiled XPath expression
- * @ctxt:  the XPath context
- * @resObj: the resulting XPath object or NULL
- * @toBool: 1 if only a boolean result is requested
- *
  * Evaluate the Precompiled XPath expression in the given context.
- * The caller has to free @resObj.
+ * The caller has to free `resObj`.
  *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * @param comp  the compiled XPath expression
+ * @param ctxt  the XPath context
+ * @param resObjPtr  the resulting XPath object or NULL
+ * @param toBool  1 if only a boolean result is requested
+ * @returns the xmlXPathObject resulting from the evaluation or NULL.
  *         the caller has to free the object.
  */
 static int
@@ -12519,17 +11926,15 @@ xmlXPathCompiledEvalInternal(xmlXPathCom
 }
 
 /**
- * xmlXPathCompiledEval:
- * @comp:  the compiled XPath expression
- * @ctx:  the XPath context
- *
  * Evaluate the Precompiled XPath expression in the given context.
  *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * @param comp  the compiled XPath expression
+ * @param ctx  the XPath context
+ * @returns the xmlXPathObject resulting from the evaluation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathObjectPtr
-xmlXPathCompiledEval(xmlXPathCompExprPtr comp, xmlXPathContextPtr ctx)
+xmlXPathObject *
+xmlXPathCompiledEval(xmlXPathCompExpr *comp, xmlXPathContext *ctx)
 {
     xmlXPathObjectPtr res = NULL;
 
@@ -12538,34 +11943,31 @@ xmlXPathCompiledEval(xmlXPathCompExprPtr
 }
 
 /**
- * xmlXPathCompiledEvalToBoolean:
- * @comp:  the compiled XPath expression
- * @ctxt:  the XPath context
- *
  * Applies the XPath boolean() function on the result of the given
  * compiled expression.
  *
- * Returns 1 if the expression evaluated to true, 0 if to false and
+ * @param comp  the compiled XPath expression
+ * @param ctxt  the XPath context
+ * @returns 1 if the expression evaluated to true, 0 if to false and
  *         -1 in API and internal errors.
  */
 int
-xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
-			      xmlXPathContextPtr ctxt)
+xmlXPathCompiledEvalToBoolean(xmlXPathCompExpr *comp,
+			      xmlXPathContext *ctxt)
 {
     return(xmlXPathCompiledEvalInternal(comp, ctxt, NULL, 1));
 }
 
 /**
- * xmlXPathEvalExpr:
- * @ctxt:  the XPath Parser context
- *
- * DEPRECATED: Internal function, don't use.
- *
  * Parse and evaluate an XPath expression in the given context,
  * then push the result on the context stack
+ *
+ * @deprecated Internal function, don't use.
+ *
+ * @param ctxt  the XPath Parser context
  */
 void
-xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
+xmlXPathEvalExpr(xmlXPathParserContext *ctxt) {
 #ifdef XPATH_STREAMING
     xmlXPathCompExprPtr comp;
 #endif
@@ -12615,17 +12017,15 @@ xmlXPathEvalExpr(xmlXPathParserContextPt
 }
 
 /**
- * xmlXPathEval:
- * @str:  the XPath expression
- * @ctx:  the XPath context
- *
  * Evaluate the XPath Location Path in the given context.
  *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * @param str  the XPath expression
+ * @param ctx  the XPath context
+ * @returns the xmlXPathObject resulting from the evaluation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathObjectPtr
-xmlXPathEval(const xmlChar *str, xmlXPathContextPtr ctx) {
+xmlXPathObject *
+xmlXPathEval(const xmlChar *str, xmlXPathContext *ctx) {
     xmlXPathParserContextPtr ctxt;
     xmlXPathObjectPtr res;
 
@@ -12655,17 +12055,15 @@ xmlXPathEval(const xmlChar *str, xmlXPat
 }
 
 /**
- * xmlXPathSetContextNode:
- * @node: the node to to use as the context node
- * @ctx:  the XPath context
- *
  * Sets 'node' as the context node. The node must be in the same
  * document as that associated with the context.
  *
- * Returns -1 in case of error or 0 if successful
+ * @param node  the node to to use as the context node
+ * @param ctx  the XPath context
+ * @returns -1 in case of error or 0 if successful
  */
 int
-xmlXPathSetContextNode(xmlNodePtr node, xmlXPathContextPtr ctx) {
+xmlXPathSetContextNode(xmlNode *node, xmlXPathContext *ctx) {
     if ((node == NULL) || (ctx == NULL))
         return(-1);
 
@@ -12677,19 +12075,17 @@ xmlXPathSetContextNode(xmlNodePtr node,
 }
 
 /**
- * xmlXPathNodeEval:
- * @node: the node to to use as the context node
- * @str:  the XPath expression
- * @ctx:  the XPath context
- *
  * Evaluate the XPath Location Path in the given context. The node 'node'
  * is set as the context node. The context node is not restored.
  *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * @param node  the node to to use as the context node
+ * @param str  the XPath expression
+ * @param ctx  the XPath context
+ * @returns the xmlXPathObject resulting from the evaluation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathObjectPtr
-xmlXPathNodeEval(xmlNodePtr node, const xmlChar *str, xmlXPathContextPtr ctx) {
+xmlXPathObject *
+xmlXPathNodeEval(xmlNode *node, const xmlChar *str, xmlXPathContext *ctx) {
     if (str == NULL)
         return(NULL);
     if (xmlXPathSetContextNode(node, ctx) < 0)
@@ -12698,30 +12094,27 @@ xmlXPathNodeEval(xmlNodePtr node, const
 }
 
 /**
- * xmlXPathEvalExpression:
- * @str:  the XPath expression
- * @ctxt:  the XPath context
+ * Alias for #xmlXPathEval.
  *
- * Alias for xmlXPathEval().
- *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
+ * @param str  the XPath expression
+ * @param ctxt  the XPath context
+ * @returns the xmlXPathObject resulting from the evaluation or NULL.
  *         the caller has to free the object.
  */
-xmlXPathObjectPtr
-xmlXPathEvalExpression(const xmlChar *str, xmlXPathContextPtr ctxt) {
+xmlXPathObject *
+xmlXPathEvalExpression(const xmlChar *str, xmlXPathContext *ctxt) {
     return(xmlXPathEval(str, ctxt));
 }
 
 /**
- * xmlXPathRegisterAllFunctions:
- * @ctxt:  the XPath context
+ * Registers all default XPath functions in this context
  *
- * DEPRECATED: No-op since 2.14.0.
+ * @deprecated No-op since 2.14.0.
  *
- * Registers all default XPath functions in this context
+ * @param ctxt  the XPath context
  */
 void
-xmlXPathRegisterAllFunctions(xmlXPathContextPtr ctxt ATTRIBUTE_UNUSED)
+xmlXPathRegisterAllFunctions(xmlXPathContext *ctxt ATTRIBUTE_UNUSED)
 {
 }
 
diff -pruN 2.14.6+dfsg-0.1/xpointer.c 2.15.0+dfsg-0.3/xpointer.c
--- 2.14.6+dfsg-0.1/xpointer.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xpointer.c	2025-09-15 11:55:59.000000000 +0000
@@ -11,7 +11,7 @@
  *
  * See Copyright for the status of this software.
  *
- * daniel@veillard.com
+ * Author: Daniel Veillard
  */
 
 /* To avoid EBCDIC trouble when parsing on zOS */
@@ -54,11 +54,12 @@
  ************************************************************************/
 
 /**
- * xmlXPtrErr:
- * @ctxt:  an XPTR evaluation context
- * @extra:  extra information
- *
  * Handle an XPointer error
+ *
+ * @param ctxt  an XPTR evaluation context
+ * @param code  error code
+ * @param msg  error message
+ * @param extra  extra information
  */
 static void LIBXML_ATTR_FORMAT(3,0)
 xmlXPtrErr(xmlXPathParserContextPtr ctxt, int code,
@@ -115,11 +116,9 @@ xmlXPtrErr(xmlXPathParserContextPtr ctxt
  ************************************************************************/
 
 /**
- * xmlXPtrGetNthChild:
- * @cur:  the node
- * @no:  the child number
- *
- * Returns the @no'th element child of @cur or NULL
+ * @param cur  the node
+ * @param no  the child number
+ * @returns the `no`'th element child of `cur` or NULL
  */
 static xmlNodePtr
 xmlXPtrGetNthChild(xmlNodePtr cur, int no) {
@@ -182,9 +181,8 @@ static void xmlXPtrEvalChildSeq(xmlXPath
 #define NEXT ((*ctxt->cur) ?  ctxt->cur++: ctxt->cur)
 
 /*
- * xmlXPtrGetChildNo:
- * @ctxt:  the XPointer Parser context
- * @index:  the child number
+ * @param ctxt  the XPointer Parser context
+ * @param index  the child number
  *
  * Move the current node of the nodeset on the stack to the
  * given child if found
@@ -214,10 +212,6 @@ xmlXPtrGetChildNo(xmlXPathParserContextP
 }
 
 /**
- * xmlXPtrEvalXPtrPart:
- * @ctxt:  the XPointer Parser context
- * @name:  the preparsed Scheme for the XPtrPart
- *
  * XPtrPart ::= 'xpointer' '(' XPtrExpr ')'
  *            | Scheme '(' SchemeSpecificExpr ')'
  *
@@ -245,6 +239,9 @@ xmlXPtrGetChildNo(xmlXPathParserContextP
  * string and if the scheme is 'xpointer' it will call the XPath interpreter.
  *
  * TODO: there is no new scheme registration mechanism
+ *
+ * @param ctxt  the XPointer Parser context
+ * @param name  the preparsed Scheme for the XPtrPart
  */
 
 static void
@@ -382,10 +379,6 @@ xmlXPtrEvalXPtrPart(xmlXPathParserContex
 }
 
 /**
- * xmlXPtrEvalFullXPtr:
- * @ctxt:  the XPointer Parser context
- * @name:  the preparsed Scheme for the first XPtrPart
- *
  * FullXPtr ::= XPtrPart (S? XPtrPart)*
  *
  * As the specs says:
@@ -407,6 +400,9 @@ xmlXPtrEvalXPtrPart(xmlXPathParserContex
  *
  * Parse and evaluate a Full XPtr i.e. possibly a cascade of XPath based
  * expressions or other schemes.
+ *
+ * @param ctxt  the XPointer Parser context
+ * @param name  the preparsed Scheme for the first XPtrPart
  */
 static void
 xmlXPtrEvalFullXPtr(xmlXPathParserContextPtr ctxt, xmlChar *name) {
@@ -462,15 +458,14 @@ xmlXPtrEvalFullXPtr(xmlXPathParserContex
 }
 
 /**
- * xmlXPtrEvalChildSeq:
- * @ctxt:  the XPointer Parser context
- * @name:  a possible ID name of the child sequence
- *
  *  ChildSeq ::= '/1' ('/' [0-9]*)*
  *             | Name ('/' [0-9]*)+
  *
  * Parse and evaluate a Child Sequence. This routine also handle the
  * case of a Bare Name used to get a document ID.
+ *
+ * @param ctxt  the XPointer Parser context
+ * @param name  a possible ID name of the child sequence
  */
 static void
 xmlXPtrEvalChildSeq(xmlXPathParserContextPtr ctxt, xmlChar *name) {
@@ -514,14 +509,13 @@ xmlXPtrEvalChildSeq(xmlXPathParserContex
 
 
 /**
- * xmlXPtrEvalXPointer:
- * @ctxt:  the XPointer Parser context
- *
  *  XPointer ::= Name
  *             | ChildSeq
  *             | FullXPtr
  *
  * Parse and evaluate an XPointer
+ *
+ * @param ctxt  the XPointer Parser context
  */
 static void
 xmlXPtrEvalXPointer(xmlXPathParserContextPtr ctxt) {
@@ -569,18 +563,17 @@ xmlXPtrEvalXPointer(xmlXPathParserContex
  ************************************************************************/
 
 /**
- * xmlXPtrNewContext:
- * @doc:  the XML document
- * @here:  the node that directly contains the XPointer being evaluated or NULL
- * @origin:  the element from which a user or program initiated traversal of
- *           the link, or NULL.
- *
  * Create a new XPointer context
  *
- * Returns the xmlXPathContext just allocated.
+ * @deprecated Same as xmlXPathNewContext.
+ *
+ * @param doc  the XML document
+ * @param here  unused
+ * @param origin  unused
+ * @returns the xmlXPathContext just allocated.
  */
-xmlXPathContextPtr
-xmlXPtrNewContext(xmlDocPtr doc, xmlNodePtr here, xmlNodePtr origin) {
+xmlXPathContext *
+xmlXPtrNewContext(xmlDoc *doc, xmlNode *here, xmlNode *origin) {
     xmlXPathContextPtr ret;
     (void) here;
     (void) origin;
@@ -593,17 +586,18 @@ xmlXPtrNewContext(xmlDocPtr doc, xmlNode
 }
 
 /**
- * xmlXPtrEval:
- * @str:  the XPointer expression
- * @ctx:  the XPointer context
+ * Evaluate an XPointer expression.
  *
- * Evaluate the XPath Location Path in the given context.
+ * This function can only return nodesets. The caller has to
+ * free the object.
  *
- * Returns the xmlXPathObjectPtr resulting from the evaluation or NULL.
- *         the caller has to free the object.
+ * @param str  an XPointer expression
+ * @param ctx  an XPath context
+ * @returns the xmlXPathObject resulting from the evaluation or NULL
+ * in case of error.
  */
-xmlXPathObjectPtr
-xmlXPtrEval(const xmlChar *str, xmlXPathContextPtr ctx) {
+xmlXPathObject *
+xmlXPtrEval(const xmlChar *str, xmlXPathContext *ctx) {
     xmlXPathParserContextPtr ctxt;
     xmlXPathObjectPtr res = NULL, tmp;
     xmlXPathObjectPtr init = NULL;
diff -pruN 2.14.6+dfsg-0.1/xstc/Makefile.am 2.15.0+dfsg-0.3/xstc/Makefile.am
--- 2.14.6+dfsg-0.1/xstc/Makefile.am	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xstc/Makefile.am	1970-01-01 00:00:00.000000000 +0000
@@ -1,132 +0,0 @@
-#
-# Definition for the tests from W3C
-#
-PYSCRIPTS=nist-test.py ms-test.py sun-test.py
-TESTDIR=Tests
-TESTDIRS=$(TESTDIR)/msxsdtest $(TESTDIR)/suntest $(TESTDIR)/Datatypes
-TARBALL=xsts-2002-01-16.tar.gz
-TARBALL_2=xsts-2004-01-14.tar.gz
-TSNAME=xmlschema2002-01-16
-TSNAME_2=xmlschema2004-01-14
-TARBALLURL=http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME)/$(TARBALL)
-TARBALLURL_2=http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME_2)/$(TARBALL_2)
-MSTESTDEF=MSXMLSchema1-0-20020116.testSet
-SUNTESTDEF=SunXMLSchema1-0-20020116.testSet
-NISTTESTDEF=NISTXMLSchema1-0-20020116.testSet
-NISTTESTDEF_2=NISTXMLSchemaDatatypes.testSet
-
-#
-# The local data and scripts
-#
-EXTRA_DIST=xstc.py xstc-to-python.xsl
-#
-# Nothing is done by make, only make tests and
-# only if Python and Schemas are enabled.
-#
-all:
-
-#
-# Rule to load the test description and extract the information
-#
-$(TESTDIRS) Tests/Metadata/$(NISTTESTDEF_2) Tests/Metadata/$(MSTTESTDEF) Tests/Metadata/$(SUNTESTDEF):
-	-@(if [ ! -d Tests ] ; then \
-	   mkdir Tests ; \
-	   fi)
-	-@(if [ ! -f $(TARBALL_2) ] ; then \
-	   if [ -f $(srcdir)/$(TARBALL_2) ] ; then \
-	   $(LN_S) $(srcdir)/$(TARBALL_2) $(TARBALL_2) ; else \
-	   echo "Missing the test suite description (2004-01-14), trying to fetch it" ;\
-	   if [ -x "$(WGET)" ] ; then \
-	   $(WGET) $(TARBALLURL_2) ; \
-	   else echo "Dont' know how to fetch $(TARBALLURL_2)" ; fi ; fi ; fi)
-	-@(if [ -f $(TARBALL_2) ] ; then \
-	   echo -n "extracting test data (NIST)..." ; \
-	   $(TAR) -xzf $(TARBALL_2) --wildcards '*/Datatypes' '*/Metadata/$(NISTTESTDEF_2)' ; \
-	   echo "done" ; \
-	   fi)
-	-@(if [ ! -f $(TARBALL) ] ; then \
-	   if [ -f $(srcdir)/$(TARBALL) ] ; then \
-	   $(LN_S) $(srcdir)/$(TARBALL) $(TARBALL) ; else \
-	   echo "Missing the test suite description (2002-01-16), trying to fetch it" ;\
-	   if [ -x "$(WGET)" ] ; then \
-	   $(WGET) $(TARBALLURL) ; \
-	   else echo "Dont' know how to fetch $(TARBALLURL)" ; fi ; fi ; fi)
-	-@(if [ -f $(TARBALL) ] ; then \
-	   echo -n "extracting test data (Sun, Microsoft)..." ; \
-	   $(TAR) -C Tests -xzf $(TARBALL) --wildcards '*/suntest' '*/msxsdtest' '*/$(MSTESTDEF)' '*/$(SUNTESTDEF)' ; \
-	   if [ -d Tests/suntest ] ; then rm -r Tests/suntest ; fi ; \
-	   if [ -d Tests/msxsdtest ] ; then rm -r Tests/msxsdtest ; fi ; \
-	   mv Tests/xmlschema2002-01-16/* Tests ; \
-	   mv Tests/*.testSet Tests/Metadata ; \
-	   rm -r Tests/xmlschema2002-01-16 ; \
-	   echo "done" ; \
-	   fi)
-
-#
-# The python tests are generated via XSLT
-#
-nist-test.py: Tests/Metadata/$(NISTTESTDEF_2) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (NIST)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor NIST-2 \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(NISTTESTDEF_2) > $@ ; \
-	  chmod +x $@ ; fi )
-
-ms-test.py: Tests/Metadata/$(MSTTESTDEF) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (Microsoft)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor MS \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(MSTESTDEF) > $@ ; \
-	  chmod +x $@ ; fi )
-
-sun-test.py: Tests/Metadata/$(SUNTESTDEF) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (Sun)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor SUN \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(SUNTESTDEF) > $@ ; \
-	  chmod +x $@ ; fi )
-
-#
-# The actual test run if present. PYTHONPATH is updated to make sure
-# we run the version from the loacl build and not preinstalled bindings
-#
-pytests: $(PYSCRIPTS) $(TESTDIRS)
-	-@(if [ -x nist-test.py -a -d $(TESTDIR)/Datatypes ] ; then 		\
-	   echo "## Running XML Schema tests (NIST)";			\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) nist-test.py -s -b $(srcdir) ; fi)
-	-@(if [ -x sun-test.py -a -d $(TESTDIR)/suntest ] ; then 			\
-	   echo "## Running Schema tests (Sun)";				\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) sun-test.py -s -b $(srcdir) ; fi)
-	-@(if [ -x ms-test.py -a -d $(TESTDIR)/msxsdtest ] ; then 			\
-	   echo "## Running Schema tests (Microsoft)";			\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) ms-test.py -s -b $(srcdir) ; fi)
-
-tests:
-	-@(if [ -x $(PYTHON) ] ; then 					\
-	   $(MAKE) pytests ; fi);
-
-#
-# Heavy, works well only on RHEL3
-#
-valgrind:
-	-@(if [ -x $(PYTHON) ] ; then 					\
-	   echo '## Running the regression tests under Valgrind' ;	\
-	   $(MAKE) CHECKER='valgrind -q' pytests ; fi);
-
-CLEANFILES=$(PYSCRIPTS) test.log
-
diff -pruN 2.14.6+dfsg-0.1/xstc/Makefile.in 2.15.0+dfsg-0.3/xstc/Makefile.in
--- 2.14.6+dfsg-0.1/xstc/Makefile.in	2025-09-08 14:35:34.000000000 +0000
+++ 2.15.0+dfsg-0.3/xstc/Makefile.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,651 +0,0 @@
-# Makefile.in generated by automake 1.16.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2021 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = xstc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
-	$(top_srcdir)/m4/ax_recursive_eval.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/VERSION \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-CSCOPE = @CSCOPE@
-CTAGS = @CTAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ETAGS = @ETAGS@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FILECMD = @FILECMD@
-GREP = @GREP@
-HISTORY_CFLAGS = @HISTORY_CFLAGS@
-HISTORY_LIBS = @HISTORY_LIBS@
-ICONV_CFLAGS = @ICONV_CFLAGS@
-ICU_CFLAGS = @ICU_CFLAGS@
-ICU_DEFS = @ICU_DEFS@
-ICU_LIBS = @ICU_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBXML_MAJOR_VERSION = @LIBXML_MAJOR_VERSION@
-LIBXML_MICRO_VERSION = @LIBXML_MICRO_VERSION@
-LIBXML_MINOR_VERSION = @LIBXML_MINOR_VERSION@
-LIBXML_VERSION = @LIBXML_VERSION@
-LIBXML_VERSION_EXTRA = @LIBXML_VERSION_EXTRA@
-LIBXML_VERSION_INFO = @LIBXML_VERSION_INFO@
-LIBXML_VERSION_NUMBER = @LIBXML_VERSION_NUMBER@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-LZMA_CFLAGS = @LZMA_CFLAGS@
-LZMA_LIBS = @LZMA_LIBS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MODULE_EXTENSION = @MODULE_EXTENSION@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RDL_CFLAGS = @RDL_CFLAGS@
-RDL_LIBS = @RDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TAR = @TAR@
-THREAD_LIBS = @THREAD_LIBS@
-VERSION = @VERSION@
-WGET = @WGET@
-WITH_C14N = @WITH_C14N@
-WITH_CATALOG = @WITH_CATALOG@
-WITH_DEBUG = @WITH_DEBUG@
-WITH_HTML = @WITH_HTML@
-WITH_HTTP = @WITH_HTTP@
-WITH_ICONV = @WITH_ICONV@
-WITH_ICU = @WITH_ICU@
-WITH_ISO8859X = @WITH_ISO8859X@
-WITH_LZMA = @WITH_LZMA@
-WITH_MODULES = @WITH_MODULES@
-WITH_OUTPUT = @WITH_OUTPUT@
-WITH_PATTERN = @WITH_PATTERN@
-WITH_PUSH = @WITH_PUSH@
-WITH_READER = @WITH_READER@
-WITH_REGEXPS = @WITH_REGEXPS@
-WITH_RELAXNG = @WITH_RELAXNG@
-WITH_SAX1 = @WITH_SAX1@
-WITH_SCHEMAS = @WITH_SCHEMAS@
-WITH_SCHEMATRON = @WITH_SCHEMATRON@
-WITH_THREADS = @WITH_THREADS@
-WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
-WITH_VALID = @WITH_VALID@
-WITH_WRITER = @WITH_WRITER@
-WITH_XINCLUDE = @WITH_XINCLUDE@
-WITH_XPATH = @WITH_XPATH@
-WITH_XPTR = @WITH_XPTR@
-WITH_ZLIB = @WITH_ZLIB@
-XML_CFLAGS = @XML_CFLAGS@
-XML_INCLUDEDIR = @XML_INCLUDEDIR@
-XML_LIBDIR = @XML_LIBDIR@
-XML_LIBS = @XML_LIBS@
-XML_PRIVATE_CFLAGS = @XML_PRIVATE_CFLAGS@
-XML_PRIVATE_LIBS = @XML_PRIVATE_LIBS@
-XML_STATIC_CFLAGS = @XML_STATIC_CFLAGS@
-XSLTPROC = @XSLTPROC@
-Z_CFLAGS = @Z_CFLAGS@
-Z_LIBS = @Z_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-#
-# Definition for the tests from W3C
-#
-PYSCRIPTS = nist-test.py ms-test.py sun-test.py
-TESTDIR = Tests
-TESTDIRS = $(TESTDIR)/msxsdtest $(TESTDIR)/suntest $(TESTDIR)/Datatypes
-TARBALL = xsts-2002-01-16.tar.gz
-TARBALL_2 = xsts-2004-01-14.tar.gz
-TSNAME = xmlschema2002-01-16
-TSNAME_2 = xmlschema2004-01-14
-TARBALLURL = http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME)/$(TARBALL)
-TARBALLURL_2 = http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME_2)/$(TARBALL_2)
-MSTESTDEF = MSXMLSchema1-0-20020116.testSet
-SUNTESTDEF = SunXMLSchema1-0-20020116.testSet
-NISTTESTDEF = NISTXMLSchema1-0-20020116.testSet
-NISTTESTDEF_2 = NISTXMLSchemaDatatypes.testSet
-
-#
-# The local data and scripts
-#
-EXTRA_DIST = xstc.py xstc-to-python.xsl
-CLEANFILES = $(PYSCRIPTS) test.log
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign xstc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign xstc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-distdir: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-#
-# Nothing is done by make, only make tests and
-# only if Python and Schemas are enabled.
-#
-all:
-
-#
-# Rule to load the test description and extract the information
-#
-$(TESTDIRS) Tests/Metadata/$(NISTTESTDEF_2) Tests/Metadata/$(MSTTESTDEF) Tests/Metadata/$(SUNTESTDEF):
-	-@(if [ ! -d Tests ] ; then \
-	   mkdir Tests ; \
-	   fi)
-	-@(if [ ! -f $(TARBALL_2) ] ; then \
-	   if [ -f $(srcdir)/$(TARBALL_2) ] ; then \
-	   $(LN_S) $(srcdir)/$(TARBALL_2) $(TARBALL_2) ; else \
-	   echo "Missing the test suite description (2004-01-14), trying to fetch it" ;\
-	   if [ -x "$(WGET)" ] ; then \
-	   $(WGET) $(TARBALLURL_2) ; \
-	   else echo "Dont' know how to fetch $(TARBALLURL_2)" ; fi ; fi ; fi)
-	-@(if [ -f $(TARBALL_2) ] ; then \
-	   echo -n "extracting test data (NIST)..." ; \
-	   $(TAR) -xzf $(TARBALL_2) --wildcards '*/Datatypes' '*/Metadata/$(NISTTESTDEF_2)' ; \
-	   echo "done" ; \
-	   fi)
-	-@(if [ ! -f $(TARBALL) ] ; then \
-	   if [ -f $(srcdir)/$(TARBALL) ] ; then \
-	   $(LN_S) $(srcdir)/$(TARBALL) $(TARBALL) ; else \
-	   echo "Missing the test suite description (2002-01-16), trying to fetch it" ;\
-	   if [ -x "$(WGET)" ] ; then \
-	   $(WGET) $(TARBALLURL) ; \
-	   else echo "Dont' know how to fetch $(TARBALLURL)" ; fi ; fi ; fi)
-	-@(if [ -f $(TARBALL) ] ; then \
-	   echo -n "extracting test data (Sun, Microsoft)..." ; \
-	   $(TAR) -C Tests -xzf $(TARBALL) --wildcards '*/suntest' '*/msxsdtest' '*/$(MSTESTDEF)' '*/$(SUNTESTDEF)' ; \
-	   if [ -d Tests/suntest ] ; then rm -r Tests/suntest ; fi ; \
-	   if [ -d Tests/msxsdtest ] ; then rm -r Tests/msxsdtest ; fi ; \
-	   mv Tests/xmlschema2002-01-16/* Tests ; \
-	   mv Tests/*.testSet Tests/Metadata ; \
-	   rm -r Tests/xmlschema2002-01-16 ; \
-	   echo "done" ; \
-	   fi)
-
-#
-# The python tests are generated via XSLT
-#
-nist-test.py: Tests/Metadata/$(NISTTESTDEF_2) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (NIST)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor NIST-2 \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(NISTTESTDEF_2) > $@ ; \
-	  chmod +x $@ ; fi )
-
-ms-test.py: Tests/Metadata/$(MSTTESTDEF) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (Microsoft)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor MS \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(MSTESTDEF) > $@ ; \
-	  chmod +x $@ ; fi )
-
-sun-test.py: Tests/Metadata/$(SUNTESTDEF) xstc-to-python.xsl
-	-@(if [ -x $(XSLTPROC) ] ; then \
-	  echo "Rebuilding script (Sun)" $@ ; \
-	  $(XSLTPROC) --nonet --stringparam vendor SUN \
-	                     $(srcdir)/xstc-to-python.xsl \
-	                     $(srcdir)/Tests/Metadata/$(SUNTESTDEF) > $@ ; \
-	  chmod +x $@ ; fi )
-
-#
-# The actual test run if present. PYTHONPATH is updated to make sure
-# we run the version from the loacl build and not preinstalled bindings
-#
-pytests: $(PYSCRIPTS) $(TESTDIRS)
-	-@(if [ -x nist-test.py -a -d $(TESTDIR)/Datatypes ] ; then 		\
-	   echo "## Running XML Schema tests (NIST)";			\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) nist-test.py -s -b $(srcdir) ; fi)
-	-@(if [ -x sun-test.py -a -d $(TESTDIR)/suntest ] ; then 			\
-	   echo "## Running Schema tests (Sun)";				\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) sun-test.py -s -b $(srcdir) ; fi)
-	-@(if [ -x ms-test.py -a -d $(TESTDIR)/msxsdtest ] ; then 			\
-	   echo "## Running Schema tests (Microsoft)";			\
-	   PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
-	   export PYTHONPATH;						\
-	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;	\
-	   export LD_LIBRARY_PATH;					\
-	   $(CHECKER) $(PYTHON) ms-test.py -s -b $(srcdir) ; fi)
-
-tests:
-	-@(if [ -x $(PYTHON) ] ; then 					\
-	   $(MAKE) pytests ; fi);
-
-#
-# Heavy, works well only on RHEL3
-#
-valgrind:
-	-@(if [ -x $(PYTHON) ] ; then 					\
-	   echo '## Running the regression tests under Valgrind' ;	\
-	   $(MAKE) CHECKER='valgrind -q' pytests ; fi);
-
-# 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.
-.NOEXPORT:
diff -pruN 2.14.6+dfsg-0.1/xstc/xstc-to-python.xsl 2.15.0+dfsg-0.3/xstc/xstc-to-python.xsl
--- 2.14.6+dfsg-0.1/xstc/xstc-to-python.xsl	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xstc/xstc-to-python.xsl	1970-01-01 00:00:00.000000000 +0000
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xsl:stylesheet 
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-	xmlns:ts="TestSuite" version="1.0"
-	xmlns:xl="http://www.w3.org/1999/xlink">
-	<xsl:param name="vendor" select="'NIST'"/>
-    <xsl:output method="text"/>   
-
-    <xsl:template match="/">
-        <xsl:text>#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-#
-# This file is generated from the W3C test suite description file.
-#
-
-import xstc
-from xstc import XSTCTestRunner, XSTCTestGroup, XSTCSchemaTest, XSTCInstanceTest
-
-xstc.vendor = "</xsl:text><xsl:value-of select="$vendor"/><xsl:text>"
-
-r = XSTCTestRunner()
-
-# Group definitions.
-                                 
-</xsl:text>
-		      
-        <xsl:apply-templates select="ts:testSet/ts:testGroup" mode="group-def"/>
-<xsl:text>
-
-# Test definitions.
-
-</xsl:text>
-		<xsl:apply-templates select="ts:testSet/ts:testGroup" mode="test-def"/>
-        <xsl:text>
-           
-r.run()    
-
-</xsl:text>
-            
-    </xsl:template>       
-
-	<!-- groupName, descr -->
-    <xsl:template match="ts:testGroup" mode="group-def">
-		<xsl:text>r.addGroup(XSTCTestGroup("</xsl:text>
-		<!-- group -->
-		<xsl:value-of select="@name"/><xsl:text>", "</xsl:text>
-		<!-- main schema -->
-		<xsl:value-of select="ts:schemaTest[1]/ts:schemaDocument/@xl:href"/><xsl:text>", """</xsl:text>
-		<!-- group-description -->
-		<xsl:call-template name="str">
-			<xsl:with-param name="str" select="ts:annotation/ts:documentation/text()"/>
-		</xsl:call-template>
-		<xsl:text>"""))
-</xsl:text>
-	</xsl:template>
-	
-	<xsl:template name="str">
-		<xsl:param name="str"/>
-		<xsl:choose>
-			<xsl:when test="contains($str, '&quot;')">
-				<xsl:call-template name="str">
-					<xsl:with-param name="str" select="substring-before($str, '&quot;')"/>
-				</xsl:call-template>
-				<xsl:text>'</xsl:text>
-				<xsl:call-template name="str">
-					<xsl:with-param name="str" select="substring-after($str, '&quot;')"/>
-				</xsl:call-template>
-			
-			</xsl:when>
-			<xsl:otherwise>
-				<xsl:value-of select="$str"/>
-			</xsl:otherwise>
-		</xsl:choose>
-	</xsl:template>
-
-	<xsl:template match="ts:testGroup" mode="test-def">	    
-		<xsl:param name="group" select="@name"/>
-		<xsl:for-each select="ts:schemaTest">
-			<!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->
-			<xsl:text>r.addTest(XSTCSchemaTest("</xsl:text>
-			<!-- group -->
-			<xsl:value-of select="$group"/><xsl:text>", "</xsl:text>
-			<!-- test-name -->
-			<xsl:value-of select="@name"/><xsl:text>", </xsl:text>
-			<!-- accepted -->
-			<xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>
-			<!-- filename -->			
-			<xsl:value-of select="ts:schemaDocument/@xl:href"/><xsl:text>", </xsl:text>
-			<!-- validity -->
-			<xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>
-			<!-- test-description -->
-			<xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))
-</xsl:text>
-		</xsl:for-each>
-		<xsl:for-each select="ts:instanceTest">
-			<!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->
-			<xsl:text>r.addTest(XSTCInstanceTest("</xsl:text>
-			<!-- group -->
-			<xsl:value-of select="$group"/><xsl:text>", "</xsl:text>
-			<!-- test-name -->
-			<xsl:value-of select="@name"/><xsl:text>", </xsl:text>
-			<!-- accepted -->
-			<xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>
-			<!-- filename -->			
-			<xsl:value-of select="ts:instanceDocument/@xl:href"/><xsl:text>", </xsl:text>
-			<!-- validity -->
-			<xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>
-			<!-- test-description -->
-			<xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))
-</xsl:text>
-		</xsl:for-each>
-	</xsl:template>                     
-        
-</xsl:stylesheet>
\ No newline at end of file
diff -pruN 2.14.6+dfsg-0.1/xstc/xstc.py 2.15.0+dfsg-0.3/xstc/xstc.py
--- 2.14.6+dfsg-0.1/xstc/xstc.py	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xstc/xstc.py	1970-01-01 00:00:00.000000000 +0000
@@ -1,693 +0,0 @@
-#!/usr/bin/env python3
-
-#
-# This is the MS subset of the W3C test suite for XML Schemas.
-# This file is generated from the MS W3c test suite description file.
-#
-
-import sys, os
-import optparse
-import libxml2
-
-opa = optparse.OptionParser()
-
-opa.add_option("-b", "--base", action="store", type="string", dest="baseDir",
-			   default="",
-			   help="""The base directory; i.e. the parent folder of the
-			   "nisttest", "suntest" and "msxsdtest" directories.""")
-
-opa.add_option("-o", "--out", action="store", type="string", dest="logFile",
-			   default="test.log",
-			   help="The filepath of the log file to be created")
-
-opa.add_option("--log", action="store_true", dest="enableLog",
-			   default=False,
-			   help="Create the log file")
-
-opa.add_option("--no-test-out", action="store_true", dest="disableTestStdOut",
-			   default=False,
-			   help="Don't output test results")
-
-opa.add_option("-s", "--silent", action="store_true", dest="silent", default=False,
-			   help="Disables display of all tests")
-
-opa.add_option("-v", "--verbose", action="store_true", dest="verbose",
-			   default=False,
-			   help="Displays all tests (only if --silent is not set)")
-
-opa.add_option("-x", "--max", type="int", dest="maxTestCount",
-			   default="-1",
-			   help="The maximum number of tests to be run")
-
-opa.add_option("-t", "--test", type="string", dest="singleTest",
-			   default=None,
-			   help="Runs the specified test only")
-			   
-opa.add_option("--tsw", "--test-starts-with", type="string", dest="testStartsWith",
-			   default=None,
-			   help="Runs the specified test(s), starting with the given string")
-
-opa.add_option("--rieo", "--report-internal-errors-only", action="store_true",
-			   dest="reportInternalErrOnly", default=False,
-			   help="Display erroneous tests of type 'internal' only")
-
-opa.add_option("--rueo", "--report-unimplemented-errors-only", action="store_true",
-			   dest="reportUnimplErrOnly", default=False,
-			   help="Display erroneous tests of type 'unimplemented' only")
-
-opa.add_option("--rmleo", "--report-mem-leak-errors-only", action="store_true",
-			   dest="reportMemLeakErrOnly", default=False,
-			   help="Display erroneous tests of type 'memory leak' only")
-
-opa.add_option("-c", "--combines", type="string", dest="combines",
-			   default=None,
-			   help="Combines to be run (all if omitted)")
-			   
-opa.add_option("--csw", "--csw", type="string", dest="combineStartsWith",
-			   default=None,
-			   help="Combines to be run (all if omitted)")			   
-
-opa.add_option("--rc", "--report-combines", action="store_true",
-			   dest="reportCombines", default=False,
-			   help="Display combine reports")
-
-opa.add_option("--rec", "--report-err-combines", action="store_true",
-			   dest="reportErrCombines", default=False,
-			   help="Display erroneous combine reports only")
-
-opa.add_option("--debug", action="store_true",
-			   dest="debugEnabled", default=False,
-			   help="Displays debug messages")
-
-opa.add_option("--info", action="store_true",
-			   dest="info", default=False,
-			   help="Displays info on the suite only. Does not run any test.")
-opa.add_option("--sax", action="store_true",
-			   dest="validationSAX", default=False,
-			   help="Use SAX2-driven validation.")
-opa.add_option("--tn", action="store_true",
-			   dest="displayTestName", default=False,
-			   help="Display the test name in every case.")
-
-(options, args) = opa.parse_args()
-
-if options.combines is not None:
-	options.combines = options.combines.split()
-
-################################################
-# The vars below are not intended to be changed.
-#
-
-msgSchemaNotValidButShould =  "The schema should be valid."
-msgSchemaValidButShouldNot = "The schema should be invalid."
-msgInstanceNotValidButShould = "The instance should be valid."
-msgInstanceValidButShouldNot = "The instance should be invalid."
-vendorNIST = "NIST"
-vendorNIST_2 = "NIST-2"
-vendorSUN  = "SUN"
-vendorMS   = "MS"
-
-###################
-# Helper functions.
-#
-vendor = None
-
-def handleError(test, msg):
-	global options
-	if not options.silent:
-		test.addLibLog("'%s'   LIB: %s" % (test.name, msg))
-	if msg.find("Unimplemented") > -1:
-		test.failUnimplemented()
-	elif msg.find("Internal") > -1:
-		test.failInternal()
-		
-	
-def fixFileNames(fileName):
-	if (fileName is None) or (fileName == ""):
-		return ""
-	dirs = fileName.split("/")
-	if dirs[1] != "Tests":
-		fileName = os.path.join(".", "Tests")
-		for dir in dirs[1:]:
-			fileName = os.path.join(fileName, dir)	
-	return fileName
-
-class XSTCTestGroup:
-	def __init__(self, name, schemaFileName, descr):
-		global vendor, vendorNIST_2
-		self.name = name
-		self.descr = descr
-		self.mainSchema = True
-		self.schemaFileName = fixFileNames(schemaFileName)
-		self.schemaParsed = False
-		self.schemaTried = False
-
-	def setSchema(self, schemaFileName, parsed):
-		if not self.mainSchema:			
-			return
-		self.mainSchema = False
-		self.schemaParsed = parsed
-		self.schemaTried = True
-
-class XSTCTestCase:
-
-		   # <!-- groupName, Name, Accepted, File, Val, Descr
-	def __init__(self, isSchema, groupName, name, accepted, file, val, descr):
-		global options
-		#
-		# Constructor.
-		#
-		self.testRunner = None
-		self.isSchema = isSchema
-		self.groupName = groupName
-		self.name = name
-		self.accepted = accepted		
-		self.fileName = fixFileNames(file)
-		self.val = val
-		self.descr = descr
-		self.failed = False
-		self.combineName = None
-
-		self.log = []
-		self.libLog = []
-		self.initialMemUsed = 0
-		self.memLeak = 0
-		self.excepted = False
-		self.bad = False
-		self.unimplemented = False
-		self.internalErr = False
-		self.noSchemaErr = False
-		self.failed = False
-		#
-		# Init the log.
-		#
-		if not options.silent:
-			if self.descr is not None:
-				self.log.append("'%s'   descr: %s\n" % (self.name, self.descr))		
-			self.log.append("'%s'   exp validity: %d\n" % (self.name, self.val))
-
-	def initTest(self, runner):
-		global vendorNIST, vendorSUN, vendorMS, vendorNIST_2, options, vendor
-		#
-		# Get the test-group.
-		#
-		self.runner = runner
-		self.group = runner.getGroup(self.groupName)				
-		if vendor == vendorMS or vendor == vendorSUN:
-			#
-			# Use the last given directory for the combine name.
-			#
-			dirs = self.fileName.split("/")
-			self.combineName = dirs[len(dirs) -2]					
-		elif vendor == vendorNIST:
-			#
-			# NIST files are named in the following form:
-			# "NISTSchema-short-pattern-1.xsd"
-			#						
-			tokens = self.name.split("-")
-			self.combineName = tokens[1]
-		elif vendor == vendorNIST_2:
-			#
-			# Group-names have the form: "atomic-normalizedString-length-1"
-			#
-			tokens = self.groupName.split("-")
-			self.combineName = "%s-%s" % (tokens[0], tokens[1])
-		else:
-			self.combineName = "unknown"
-			raise Exception("Could not compute the combine name of a test.")
-		if (not options.silent) and (self.group.descr is not None):
-			self.log.append("'%s'   group-descr: %s\n" % (self.name, self.group.descr))
-		
-
-	def addLibLog(self, msg):		
-		"""This one is intended to be used by the error handler
-		function"""
-		global options		
-		if not options.silent:
-			self.libLog.append(msg)
-
-	def fail(self, msg):
-		global options
-		self.failed = True
-		if not options.silent:
-			self.log.append("'%s' ( FAILED: %s\n" % (self.name, msg))
-
-	def failNoSchema(self):
-		global options
-		self.failed = True
-		self.noSchemaErr = True
-		if not options.silent:
-			self.log.append("'%s' X NO-SCHEMA\n" % (self.name))
-
-	def failInternal(self):
-		global options
-		self.failed = True
-		self.internalErr = True
-		if not options.silent:
-			self.log.append("'%s' * INTERNAL\n" % self.name)
-
-	def failUnimplemented(self):
-		global options
-		self.failed = True
-		self.unimplemented = True
-		if not options.silent:
-			self.log.append("'%s' ? UNIMPLEMENTED\n" % self.name)
-
-	def failCritical(self, msg):
-		global options
-		self.failed = True
-		self.bad = True
-		if not options.silent:
-			self.log.append("'%s' ! BAD: %s\n" % (self.name, msg))
-
-	def failExcept(self, e):
-		global options
-		self.failed = True
-		self.excepted = True
-		if not options.silent:
-			self.log.append("'%s' # EXCEPTION: %s\n" % (self.name, e.__str__()))
-
-	def setUp(self):
-		#
-		# Set up Libxml2.
-		#
-		self.initialMemUsed = libxml2.debugMemory(1)
-		libxml2.initParser()
-		libxml2.lineNumbersDefault(1)
-		libxml2.registerErrorHandler(handleError, self)
-
-	def tearDown(self):
-		libxml2.schemaCleanupTypes()
-		libxml2.cleanupParser()
-		self.memLeak = libxml2.debugMemory(1) - self.initialMemUsed
-
-	def isIOError(self, file, docType):
-		err = None
-		try:
-			err = libxml2.lastError()
-		except:
-			# Suppress exceptions.
-			pass
-		if (err is None):
-			return False
-		if err.domain() == libxml2.XML_FROM_IO:
-			self.failCritical("failed to access the %s resource '%s'\n" % (docType, file))
-
-	def debugMsg(self, msg):
-		global options
-		if options.debugEnabled:
-			sys.stdout.write("'%s'   DEBUG: %s\n" % (self.name, msg))
-
-	def finalize(self):
-		global options
-		"""Adds additional info to the log."""
-		#
-		# Add libxml2 messages.
-		#
-		if not options.silent:
-			self.log.extend(self.libLog)
-			#
-			# Add memory leaks.
-			#
-			if self.memLeak != 0:
-				self.log.append("%s + memory leak: %d bytes\n" % (self.name, self.memLeak))
-
-	def run(self):
-		"""Runs a test."""
-		global options
-
-		##filePath = os.path.join(options.baseDir, self.fileName)
-		# filePath = "%s/%s/%s/%s" % (options.baseDir, self.test_Folder, self.schema_Folder, self.schema_File)
-		if options.displayTestName:
-			sys.stdout.write("'%s'\n" % self.name)
-		try:
-			self.validate()
-		except (Exception, libxml2.parserError, libxml2.treeError) as e:
-			self.failExcept(e)
-			
-def parseSchema(fileName):
-	schema = None
-	ctxt = libxml2.schemaNewParserCtxt(fileName)
-	try:
-		try:
-			schema = ctxt.schemaParse()
-		except:
-			pass
-	finally:		
-		del ctxt
-		return schema
-				
-
-class XSTCSchemaTest(XSTCTestCase):
-
-	def __init__(self, groupName, name, accepted, file, val, descr):
-		XSTCTestCase.__init__(self, 1, groupName, name, accepted, file, val, descr)
-
-	def validate(self):
-		global msgSchemaNotValidButShould, msgSchemaValidButShouldNot
-		schema = None
-		filePath = self.fileName
-		# os.path.join(options.baseDir, self.fileName)
-		valid = 0
-		try:
-			#
-			# Parse the schema.
-			#
-			self.debugMsg("loading schema: %s" % filePath)
-			schema = parseSchema(filePath)
-			self.debugMsg("after loading schema")						
-			if schema is None:
-				self.debugMsg("schema is None")
-				self.debugMsg("checking for IO errors...")
-				if self.isIOError(filePath, "schema"):
-					return
-			self.debugMsg("checking schema result")
-			if (schema is None and self.val) or (schema is not None and self.val == 0):
-				self.debugMsg("schema result is BAD")
-				if (schema == None):
-					self.fail(msgSchemaNotValidButShould)
-				else:
-					self.fail(msgSchemaValidButShouldNot)
-			else:
-				self.debugMsg("schema result is OK")
-		finally:
-			self.group.setSchema(self.fileName, schema is not None)
-			del schema
-
-class XSTCInstanceTest(XSTCTestCase):
-
-	def __init__(self, groupName, name, accepted, file, val, descr):
-		XSTCTestCase.__init__(self, 0, groupName, name, accepted, file, val, descr)
-
-	def validate(self):
-		instance = None
-		schema = None
-		filePath = self.fileName
-		# os.path.join(options.baseDir, self.fileName)
-
-		if not self.group.schemaParsed and self.group.schemaTried:
-			self.failNoSchema()
-			return
-					
-		self.debugMsg("loading instance: %s" % filePath)
-		parserCtxt = libxml2.newParserCtxt()
-		if (parserCtxt is None):
-			# TODO: Is this one necessary, or will an exception
-			# be already raised?
-			raise Exception("Could not create the instance parser context.")
-		if not options.validationSAX:
-			try:
-				try:
-					instance = parserCtxt.ctxtReadFile(filePath, None, libxml2.XML_PARSE_NOWARNING)
-				except:
-					# Suppress exceptions.
-					pass
-			finally:
-				del parserCtxt
-			self.debugMsg("after loading instance")
-			if instance is None:
-				self.debugMsg("instance is None")
-				self.failCritical("Failed to parse the instance for unknown reasons.")
-				return		
-		try:
-			#
-			# Validate the instance.
-			#
-			self.debugMsg("loading schema: %s" % self.group.schemaFileName)
-			schema = parseSchema(self.group.schemaFileName)
-			try:
-				validationCtxt = schema.schemaNewValidCtxt()
-				#validationCtxt = libxml2.schemaNewValidCtxt(None)
-				if (validationCtxt is None):
-					self.failCritical("Could not create the validation context.")
-					return
-				try:
-					self.debugMsg("validating instance")
-					if options.validationSAX:
-						instance_Err = validationCtxt.schemaValidateFile(filePath, 0)
-					else:
-						instance_Err = validationCtxt.schemaValidateDoc(instance)
-					self.debugMsg("after instance validation")
-					self.debugMsg("instance-err: %d" % instance_Err)
-					if (instance_Err != 0 and self.val == 1) or (instance_Err == 0 and self.val == 0):
-						self.debugMsg("instance result is BAD")
-						if (instance_Err != 0):
-							self.fail(msgInstanceNotValidButShould)
-						else:
-							self.fail(msgInstanceValidButShouldNot)
-
-					else:
-								self.debugMsg("instance result is OK")
-				finally:
-					del validationCtxt
-			finally:
-				del schema
-		finally:
-			if instance is not None:
-				instance.freeDoc()
-
-
-####################
-# Test runner class.
-#
-
-class XSTCTestRunner:
-
-	CNT_TOTAL = 0
-	CNT_RAN = 1
-	CNT_SUCCEEDED = 2
-	CNT_FAILED = 3
-	CNT_UNIMPLEMENTED = 4
-	CNT_INTERNAL = 5
-	CNT_BAD = 6
-	CNT_EXCEPTED = 7
-	CNT_MEMLEAK = 8
-	CNT_NOSCHEMA = 9
-	CNT_NOTACCEPTED = 10
-	CNT_SCHEMA_TEST = 11
-
-	def __init__(self):
-		self.logFile = None
-		self.counters = self.createCounters()
-		self.testList = []
-		self.combinesRan = {}
-		self.groups = {}
-		self.curGroup = None
-
-	def createCounters(self):
-		counters = {self.CNT_TOTAL:0, self.CNT_RAN:0, self.CNT_SUCCEEDED:0,
-		self.CNT_FAILED:0, self.CNT_UNIMPLEMENTED:0, self.CNT_INTERNAL:0, self.CNT_BAD:0,
-		self.CNT_EXCEPTED:0, self.CNT_MEMLEAK:0, self.CNT_NOSCHEMA:0, self.CNT_NOTACCEPTED:0,
-		self.CNT_SCHEMA_TEST:0}
-
-		return counters
-
-	def addTest(self, test):
-		self.testList.append(test)
-		test.initTest(self)
-
-	def getGroup(self, groupName):
-		return self.groups[groupName]
-
-	def addGroup(self, group):
-		self.groups[group.name] = group
-
-	def updateCounters(self, test, counters):
-		if test.memLeak != 0:
-			counters[self.CNT_MEMLEAK] += 1
-		if not test.failed:
-			counters[self.CNT_SUCCEEDED] +=1
-		if test.failed:
-			counters[self.CNT_FAILED] += 1
-		if test.bad:
-			counters[self.CNT_BAD] += 1
-		if test.unimplemented:
-			counters[self.CNT_UNIMPLEMENTED] += 1
-		if test.internalErr:
-			counters[self.CNT_INTERNAL] += 1
-		if test.noSchemaErr:
-			counters[self.CNT_NOSCHEMA] += 1
-		if test.excepted:
-			counters[self.CNT_EXCEPTED] += 1
-		if not test.accepted:
-			counters[self.CNT_NOTACCEPTED] += 1
-		if test.isSchema:
-			counters[self.CNT_SCHEMA_TEST] += 1
-		return counters
-
-	def displayResults(self, out, all, combName, counters):
-		out.write("\n")
-		if all:
-			if options.combines is not None:
-				out.write("combine(s): %s\n" % str(options.combines))
-		elif combName is not None:
-			out.write("combine : %s\n" % combName)
-		out.write("  total           : %d\n" % counters[self.CNT_TOTAL])
-		if all or options.combines is not None:
-			out.write("  ran             : %d\n" % counters[self.CNT_RAN])
-			out.write("    (schemata)    : %d\n" % counters[self.CNT_SCHEMA_TEST])
-		# out.write("    succeeded       : %d\n" % counters[self.CNT_SUCCEEDED])
-		out.write("  not accepted    : %d\n" % counters[self.CNT_NOTACCEPTED])
-		if counters[self.CNT_FAILED] > 0:		    
-			out.write("    failed                  : %d\n" % counters[self.CNT_FAILED])
-			out.write("     -> internal            : %d\n" % counters[self.CNT_INTERNAL])
-			out.write("     -> unimpl.             : %d\n" % counters[self.CNT_UNIMPLEMENTED])
-			out.write("     -> skip-invalid-schema : %d\n" % counters[self.CNT_NOSCHEMA])
-			out.write("     -> bad                 : %d\n" % counters[self.CNT_BAD])
-			out.write("     -> exceptions          : %d\n" % counters[self.CNT_EXCEPTED])
-			out.write("    memory leaks            : %d\n" % counters[self.CNT_MEMLEAK])
-
-	def displayShortResults(self, out, all, combName, counters):
-		out.write("Ran %d of %d tests (%d schemata):" % (counters[self.CNT_RAN],
-				  counters[self.CNT_TOTAL], counters[self.CNT_SCHEMA_TEST]))
-		# out.write("    succeeded       : %d\n" % counters[self.CNT_SUCCEEDED])
-		if counters[self.CNT_NOTACCEPTED] > 0:
-			out.write(" %d not accepted" % (counters[self.CNT_NOTACCEPTED]))
-		if counters[self.CNT_FAILED] > 0 or counters[self.CNT_MEMLEAK] > 0:
-			if counters[self.CNT_FAILED] > 0:
-				out.write(" %d failed" % (counters[self.CNT_FAILED]))
-				out.write(" (")
-				if counters[self.CNT_INTERNAL] > 0:
-					out.write(" %d internal" % (counters[self.CNT_INTERNAL]))
-				if counters[self.CNT_UNIMPLEMENTED] > 0:
-					out.write(" %d unimplemented" % (counters[self.CNT_UNIMPLEMENTED]))
-				if counters[self.CNT_NOSCHEMA] > 0:
-					out.write(" %d skip-invalid-schema" % (counters[self.CNT_NOSCHEMA]))
-				if counters[self.CNT_BAD] > 0:
-					out.write(" %d bad" % (counters[self.CNT_BAD]))
-				if counters[self.CNT_EXCEPTED] > 0:
-					out.write(" %d exception" % (counters[self.CNT_EXCEPTED]))
-				out.write(" )")
-			if counters[self.CNT_MEMLEAK] > 0:
-				out.write(" %d leaks" % (counters[self.CNT_MEMLEAK]))			
-			out.write("\n")
-		else:
-			out.write(" all passed\n")
-
-	def reportCombine(self, combName):
-		global options
-
-		counters = self.createCounters()
-		#
-		# Compute evaluation counters.
-		#
-		for test in self.combinesRan[combName]:
-			counters[self.CNT_TOTAL] += 1
-			counters[self.CNT_RAN] += 1
-			counters = self.updateCounters(test, counters)
-		if options.reportErrCombines and (counters[self.CNT_FAILED] == 0) and (counters[self.CNT_MEMLEAK] == 0):
-			pass
-		else:
-			if options.enableLog:
-				self.displayResults(self.logFile, False, combName, counters)				
-			self.displayResults(sys.stdout, False, combName, counters)
-
-	def displayTestLog(self, test):
-		sys.stdout.writelines(test.log)
-		sys.stdout.write("~~~~~~~~~~\n")
-
-	def reportTest(self, test):
-		global options
-
-		error = test.failed or test.memLeak != 0
-		#
-		# Only erroneous tests will be written to the log,
-		# except @verbose is switched on.
-		#
-		if options.enableLog and (options.verbose or error):
-			self.logFile.writelines(test.log)
-			self.logFile.write("~~~~~~~~~~\n")
-		#
-		# if not @silent, only erroneous tests will be
-		# written to stdout, except @verbose is switched on.
-		#
-		if not options.silent:
-			if options.reportInternalErrOnly and test.internalErr:
-				self.displayTestLog(test)
-			if options.reportMemLeakErrOnly and test.memLeak != 0:
-				self.displayTestLog(test)
-			if options.reportUnimplErrOnly and test.unimplemented:
-				self.displayTestLog(test)
-			if (options.verbose or error) and (not options.reportInternalErrOnly) and (not options.reportMemLeakErrOnly) and (not options.reportUnimplErrOnly):
-				self.displayTestLog(test)
-
-
-	def addToCombines(self, test):
-		found = False
-		if test.combineName in self.combinesRan:
-			self.combinesRan[test.combineName].append(test)
-		else:
-			self.combinesRan[test.combineName] = [test]
-
-	def run(self):
-
-		global options
-
-		if options.info:
-			for test in self.testList:
-				self.addToCombines(test)
-			sys.stdout.write("Combines: %d\n" % len(self.combinesRan))
-			sys.stdout.write("%s\n" % self.combinesRan.keys())
-			return
-
-		if options.enableLog:
-			self.logFile = open(options.logFile, "w")
-		try:
-			for test in self.testList:
-				self.counters[self.CNT_TOTAL] += 1
-				#
-				# Filter tests.
-				#
-				if options.singleTest is not None and options.singleTest != "":
-					if (test.name != options.singleTest):
-						continue
-				elif options.combines is not None:
-					if not options.combines.__contains__(test.combineName):
-						continue
-				elif options.testStartsWith is not None:
-					if not test.name.startswith(options.testStartsWith):
-						continue
-				elif options.combineStartsWith is not None:
-					if not test.combineName.startswith(options.combineStartsWith):
-						continue
-				
-				if options.maxTestCount != -1 and self.counters[self.CNT_RAN] >= options.maxTestCount:
-					break
-				self.counters[self.CNT_RAN] += 1
-				#
-				# Run the thing, dammit.
-				#
-				try:
-					test.setUp()
-					try:
-						test.run()
-					finally:
-						test.tearDown()
-				finally:
-					#
-					# Evaluate.
-					#
-					test.finalize()
-					self.reportTest(test)
-					if options.reportCombines or options.reportErrCombines:
-						self.addToCombines(test)
-					self.counters = self.updateCounters(test, self.counters)
-		finally:
-			if options.reportCombines or options.reportErrCombines:
-				#
-				# Build a report for every single combine.
-				#
-				# TODO: How to sort a dict?
-				#
-				self.combinesRan.keys().sort(None)
-				for key in self.combinesRan.keys():
-					self.reportCombine(key)
-
-			#
-			# Display the final report.
-			#
-			if options.silent:
-				self.displayShortResults(sys.stdout, True, None, self.counters)
-			else:
-				sys.stdout.write("===========================\n")
-				self.displayResults(sys.stdout, True, None, self.counters)
diff -pruN 2.14.6+dfsg-0.1/xzlib.c 2.15.0+dfsg-0.3/xzlib.c
--- 2.14.6+dfsg-0.1/xzlib.c	2025-09-08 14:35:30.000000000 +0000
+++ 2.15.0+dfsg-0.3/xzlib.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,821 +0,0 @@
-/**
- * xzlib.c: front end for the transparent support of lzma compression
- *          at the I/O layer, based on an example file from lzma project
- *
- * See Copyright for the status of this software.
- *
- * Anders F Bjorklund <afb@users.sourceforge.net>
- */
-#define IN_LIBXML
-#include "libxml.h"
-#ifdef LIBXML_LZMA_ENABLED
-
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#ifdef _WIN32
-  #include <io.h>
-#else
-  #include <unistd.h>
-#endif
-
-#ifdef LIBXML_ZLIB_ENABLED
-#include <zlib.h>
-#endif
-#ifdef LIBXML_LZMA_ENABLED
-#include <lzma.h>
-#endif
-
-#include "private/xzlib.h"
-#include <libxml/xmlmemory.h>
-
-/* values for xz_state how */
-#define LOOK 0                  /* look for a gzip/lzma header */
-#define COPY 1                  /* copy input directly */
-#define GZIP 2                  /* decompress a gzip stream */
-#define LZMA 3                  /* decompress a lzma stream */
-
-/* internal lzma file state data structure */
-typedef struct {
-    int mode;                   /* see lzma modes above */
-    int fd;                     /* file descriptor */
-    char *path;                 /* path or fd for error messages */
-    uint64_t pos;               /* current position in uncompressed data */
-    unsigned int size;          /* buffer size, zero if not allocated yet */
-    unsigned int want;          /* requested buffer size, default is BUFSIZ */
-    unsigned char *in;          /* input buffer */
-    unsigned char *out;         /* output buffer (double-sized when reading) */
-    unsigned char *next;        /* next output data to deliver or write */
-    unsigned int have;          /* amount of output data unused at next */
-    int eof;                    /* true if end of input file reached */
-    uint64_t start;             /* where the lzma data started, for rewinding */
-    uint64_t raw;               /* where the raw data started, for seeking */
-    int how;                    /* 0: get header, 1: copy, 2: decompress */
-    int direct;                 /* true if last read direct, false if lzma */
-    /* seek request */
-    uint64_t skip;              /* amount to skip (already rewound if backwards) */
-    int seek;                   /* true if seek request pending */
-    /* error information */
-    int err;                    /* error code */
-    char *msg;                  /* error message */
-    /* lzma stream */
-    int init;                   /* is the inflate stream initialized */
-    lzma_stream strm;           /* stream structure in-place (not a pointer) */
-    char padding1[32];          /* padding allowing to cope with possible
-                                   extensions of above structure without
-				   too much side effect */
-#ifdef LIBXML_ZLIB_ENABLED
-    /* zlib inflate or deflate stream */
-    z_stream zstrm;             /* stream structure in-place (not a pointer) */
-#endif
-    char padding2[32];          /* padding allowing to cope with possible
-                                   extensions of above structure without
-				   too much side effect */
-} xz_state, *xz_statep;
-
-static void
-xz_error(xz_statep state, int err, const char *msg)
-{
-    /* free previously allocated message and clear */
-    if (state->msg != NULL) {
-        if (state->err != LZMA_MEM_ERROR)
-            xmlFree(state->msg);
-        state->msg = NULL;
-    }
-
-    /* set error code, and if no message, then done */
-    state->err = err;
-    if (msg == NULL)
-        return;
-
-    /* for an out of memory error, save as static string */
-    if (err == LZMA_MEM_ERROR) {
-        state->msg = (char *) msg;
-        return;
-    }
-
-    /* construct error message with path */
-    state->msg = xmlMalloc(strlen(state->path) + strlen(msg) + 3);
-    if (state->msg == NULL) {
-        state->err = LZMA_MEM_ERROR;
-        state->msg = (char *) "out of memory";
-        return;
-    }
-    strcpy(state->msg, state->path);
-    strcat(state->msg, ": ");
-    strcat(state->msg, msg);
-}
-
-static void
-xz_reset(xz_statep state)
-{
-    state->have = 0;            /* no output data available */
-    state->eof = 0;             /* not at end of file */
-    state->how = LOOK;          /* look for gzip header */
-    state->direct = 1;          /* default for empty file */
-    state->seek = 0;            /* no seek request pending */
-    xz_error(state, LZMA_OK, NULL);     /* clear error */
-    state->pos = 0;             /* no uncompressed data yet */
-    state->strm.avail_in = 0;   /* no input data yet */
-#ifdef LIBXML_ZLIB_ENABLED
-    state->zstrm.avail_in = 0;  /* no input data yet */
-#endif
-}
-
-static xzFile
-xz_open(const char *path, int fd, const char *mode ATTRIBUTE_UNUSED)
-{
-    xz_statep state;
-    off_t offset;
-
-    /* allocate xzFile structure to return */
-    state = xmlMalloc(sizeof(xz_state));
-    if (state == NULL)
-        return NULL;
-    state->size = 0;            /* no buffers allocated yet */
-    state->want = BUFSIZ;       /* requested buffer size */
-    state->msg = NULL;          /* no error message yet */
-    state->init = 0;            /* initialization of zlib data */
-
-    /* save the path name for error messages */
-    state->path = xmlMalloc(strlen(path) + 1);
-    if (state->path == NULL) {
-        xmlFree(state);
-        return NULL;
-    }
-    strcpy(state->path, path);
-
-    /* open the file with the appropriate mode (or just use fd) */
-    state->fd = fd != -1 ? fd : open(path,
-#ifdef O_LARGEFILE
-                                     O_LARGEFILE |
-#endif
-#ifdef O_BINARY
-                                     O_BINARY |
-#endif
-                                     O_RDONLY, 0666);
-    if (state->fd == -1) {
-        xmlFree(state->path);
-        xmlFree(state);
-        return NULL;
-    }
-
-    /* save the current position for rewinding (only if reading) */
-    offset = lseek(state->fd, 0, SEEK_CUR);
-    if (offset == -1)
-        state->start = 0;
-    else
-        state->start = offset;
-
-    /* initialize stream */
-    xz_reset(state);
-
-    /* return stream */
-    return (xzFile) state;
-}
-
-static int
-xz_compressed(xzFile f) {
-    xz_statep state;
-
-    if (f == NULL)
-        return(-1);
-    state = (xz_statep) f;
-    if (state->init <= 0)
-        return(-1);
-
-    switch (state->how) {
-        case COPY:
-	    return(0);
-	case GZIP:
-#ifdef LIBXML_ZLIB_ENABLED
-            /* Don't use lzma for gzip */
-	    return(0);
-#else
-	    return(1);
-#endif
-	case LZMA:
-	    return(1);
-    }
-    return(-1);
-}
-
-xzFile
-__libxml2_xzopen(const char *path, const char *mode)
-{
-    return xz_open(path, -1, mode);
-}
-
-xzFile
-__libxml2_xzdopen(const char *path, int fd, const char *mode)
-{
-    return xz_open(path, fd, mode);
-}
-
-static int
-xz_load(xz_statep state, unsigned char *buf, unsigned int len,
-        unsigned int *have)
-{
-    int ret;
-
-    *have = 0;
-    do {
-        ret = read(state->fd, buf + *have, len - *have);
-        if (ret <= 0)
-            break;
-        *have += ret;
-    } while (*have < len);
-    if (ret < 0) {
-        xz_error(state, -1, strerror(errno));
-        return -1;
-    }
-    if (ret == 0)
-        state->eof = 1;
-    return 0;
-}
-
-static int
-xz_avail(xz_statep state)
-{
-    lzma_stream *strm = &(state->strm);
-
-    if (state->err != LZMA_OK)
-        return -1;
-    if (state->eof == 0) {
-        /* avail_in is size_t, which is not necessary sizeof(unsigned) */
-        unsigned tmp = strm->avail_in;
-
-        if (xz_load(state, state->in, state->size, &tmp) == -1) {
-            strm->avail_in = tmp;
-            return -1;
-        }
-        strm->avail_in = tmp;
-        strm->next_in = state->in;
-    }
-    return 0;
-}
-
-#ifdef LIBXML_ZLIB_ENABLED
-static int
-xz_avail_zstrm(xz_statep state)
-{
-    int ret;
-    state->strm.avail_in = state->zstrm.avail_in;
-    state->strm.next_in = state->zstrm.next_in;
-    ret = xz_avail(state);
-    state->zstrm.avail_in = (uInt) state->strm.avail_in;
-    state->zstrm.next_in = (Bytef *) state->strm.next_in;
-    return ret;
-}
-#endif
-
-static int
-is_format_xz(xz_statep state)
-{
-    lzma_stream *strm = &(state->strm);
-
-    return strm->avail_in >= 6 && memcmp(state->in, "\3757zXZ", 6) == 0;
-}
-
-static int
-is_format_lzma(xz_statep state)
-{
-    lzma_stream *strm = &(state->strm);
-
-    lzma_filter filter;
-    lzma_options_lzma *opt;
-    uint32_t dict_size;
-    uint64_t uncompressed_size;
-    size_t i;
-
-    if (strm->avail_in < 13)
-        return 0;
-
-    filter.id = LZMA_FILTER_LZMA1;
-    if (lzma_properties_decode(&filter, NULL, state->in, 5) != LZMA_OK)
-        return 0;
-
-    opt = filter.options;
-    dict_size = opt->dict_size;
-    free(opt); /* we can't use xmlFree on a string returned by zlib */
-
-    /* A hack to ditch tons of false positives: We allow only dictionary
-     * sizes that are 2^n or 2^n + 2^(n-1) or UINT32_MAX. LZMA_Alone
-     * created only files with 2^n, but accepts any dictionary size.
-     * If someone complains, this will be reconsidered.
-     */
-    if (dict_size != UINT32_MAX) {
-        uint32_t d;
-
-        if (dict_size == 0)
-            return 0;
-
-        d = dict_size - 1;
-        d |= d >> 2;
-        d |= d >> 3;
-        d |= d >> 4;
-        d |= d >> 8;
-        d |= d >> 16;
-        ++d;
-        if (d != dict_size || dict_size == 0)
-            return 0;
-    }
-
-    /* Another hack to ditch false positives: Assume that if the
-     * uncompressed size is known, it must be less than 256 GiB.
-     * Again, if someone complains, this will be reconsidered.
-     */
-    uncompressed_size = 0;
-    for (i = 0; i < 8; ++i)
-        uncompressed_size |= (uint64_t) (state->in[5 + i]) << (i * 8);
-
-    if (uncompressed_size != UINT64_MAX
-        && uncompressed_size > (UINT64_C(1) << 38))
-        return 0;
-
-    return 1;
-}
-
-#ifdef LIBXML_ZLIB_ENABLED
-
-/* Get next byte from input, or -1 if end or error. */
-#define NEXT() ((strm->avail_in == 0 && xz_avail(state) == -1) ? -1 : \
-                (strm->avail_in == 0 ? -1 : \
-                 (strm->avail_in--, *(strm->next_in)++)))
-/* Same thing, but from zstrm */
-#define NEXTZ() ((strm->avail_in == 0 && xz_avail_zstrm(state) == -1) ? -1 : \
-                (strm->avail_in == 0 ? -1 : \
-                 (strm->avail_in--, *(strm->next_in)++)))
-
-/* Get a four-byte little-endian integer and return 0 on success and the value
-   in *ret.  Otherwise -1 is returned and *ret is not modified. */
-static int
-gz_next4(xz_statep state, unsigned long *ret)
-{
-    int ch;
-    unsigned long val;
-    z_streamp strm = &(state->zstrm);
-
-    val = NEXTZ();
-    val += (unsigned) NEXTZ() << 8;
-    val += (unsigned long) NEXTZ() << 16;
-    ch = NEXTZ();
-    if (ch == -1)
-        return -1;
-    val += (unsigned long) ch << 24;
-    *ret = val;
-    return 0;
-}
-#endif
-
-static int
-xz_head(xz_statep state)
-{
-    lzma_stream *strm = &(state->strm);
-    lzma_stream init = LZMA_STREAM_INIT;
-    int flags;
-    unsigned len;
-
-    /* Avoid unused variable warning if features are disabled. */
-    (void) flags;
-    (void) len;
-
-    /* allocate read buffers and inflate memory */
-    if (state->size == 0) {
-        /* allocate buffers */
-        state->in = xmlMalloc(state->want);
-        state->out = xmlMalloc(state->want << 1);
-        if (state->in == NULL || state->out == NULL) {
-            if (state->out != NULL)
-                xmlFree(state->out);
-            if (state->in != NULL)
-                xmlFree(state->in);
-            xz_error(state, LZMA_MEM_ERROR, "out of memory");
-            return -1;
-        }
-        state->size = state->want;
-
-        /* allocate decoder memory */
-        state->strm = init;
-        state->strm.avail_in = 0;
-        state->strm.next_in = NULL;
-        if (lzma_auto_decoder(&state->strm, 100000000, 0) != LZMA_OK) {
-            xmlFree(state->out);
-            xmlFree(state->in);
-            state->size = 0;
-            xz_error(state, LZMA_MEM_ERROR, "out of memory");
-            return -1;
-        }
-#ifdef LIBXML_ZLIB_ENABLED
-        /* allocate inflate memory */
-        state->zstrm.zalloc = Z_NULL;
-        state->zstrm.zfree = Z_NULL;
-        state->zstrm.opaque = Z_NULL;
-        state->zstrm.avail_in = 0;
-        state->zstrm.next_in = Z_NULL;
-        if (state->init == 0) {
-            if (inflateInit2(&(state->zstrm), -15) != Z_OK) {/* raw inflate */
-                xmlFree(state->out);
-                xmlFree(state->in);
-                state->size = 0;
-                xz_error(state, LZMA_MEM_ERROR, "out of memory");
-                return -1;
-            }
-            state->init = 1;
-        }
-#endif
-    }
-
-    /* get some data in the input buffer */
-    if (strm->avail_in == 0) {
-        if (xz_avail(state) == -1)
-            return -1;
-        if (strm->avail_in == 0)
-            return 0;
-    }
-
-    /* look for the xz magic header bytes */
-    if (is_format_xz(state) || is_format_lzma(state)) {
-        state->how = LZMA;
-        state->direct = 0;
-        return 0;
-    }
-#ifdef LIBXML_ZLIB_ENABLED
-    /* look for the gzip magic header bytes 31 and 139 */
-    if (strm->next_in[0] == 31) {
-        strm->avail_in--;
-        strm->next_in++;
-        if (strm->avail_in == 0 && xz_avail(state) == -1)
-            return -1;
-        if (strm->avail_in && strm->next_in[0] == 139) {
-            /* we have a gzip header, woo hoo! */
-            strm->avail_in--;
-            strm->next_in++;
-
-            /* skip rest of header */
-            if (NEXT() != 8) {  /* compression method */
-                xz_error(state, LZMA_DATA_ERROR,
-                         "unknown compression method");
-                return -1;
-            }
-            flags = NEXT();
-            if (flags & 0xe0) { /* reserved flag bits */
-                xz_error(state, LZMA_DATA_ERROR,
-                         "unknown header flags set");
-                return -1;
-            }
-            NEXT();             /* modification time */
-            NEXT();
-            NEXT();
-            NEXT();
-            NEXT();             /* extra flags */
-            NEXT();             /* operating system */
-            if (flags & 4) {    /* extra field */
-                len = (unsigned) NEXT();
-                len += (unsigned) NEXT() << 8;
-                while (len--)
-                    if (NEXT() < 0)
-                        break;
-            }
-            if (flags & 8)      /* file name */
-                while (NEXT() > 0) ;
-            if (flags & 16)     /* comment */
-                while (NEXT() > 0) ;
-            if (flags & 2) {    /* header crc */
-                NEXT();
-                NEXT();
-            }
-            /* an unexpected end of file is not checked for here -- it will be
-             * noticed on the first request for uncompressed data */
-
-            /* set up for decompression */
-            inflateReset(&state->zstrm);
-            state->zstrm.adler = crc32(0L, Z_NULL, 0);
-            state->how = GZIP;
-            state->direct = 0;
-            return 0;
-        } else {
-            /* not a gzip file -- save first byte (31) and fall to raw i/o */
-            state->out[0] = 31;
-            state->have = 1;
-        }
-    }
-#endif
-
-    /* doing raw i/o, save start of raw data for seeking, copy any leftover
-     * input to output -- this assumes that the output buffer is larger than
-     * the input buffer, which also assures space for gzungetc() */
-    state->raw = state->pos;
-    state->next = state->out;
-    if (strm->avail_in) {
-        memcpy(state->next + state->have, strm->next_in, strm->avail_in);
-        state->have += strm->avail_in;
-        strm->avail_in = 0;
-    }
-    state->how = COPY;
-    state->direct = 1;
-    return 0;
-}
-
-static int
-xz_decomp(xz_statep state)
-{
-    int ret;
-    unsigned had;
-    unsigned long crc, len;
-    lzma_stream *strm = &(state->strm);
-
-    lzma_action action = LZMA_RUN;
-
-    /* Avoid unused variable warning if features are disabled. */
-    (void) crc;
-    (void) len;
-
-    /* fill output buffer up to end of deflate stream */
-    had = strm->avail_out;
-    do {
-        /* get more input for inflate() */
-        if (strm->avail_in == 0 && xz_avail(state) == -1)
-            return -1;
-        if (strm->avail_in == 0) {
-            xz_error(state, LZMA_DATA_ERROR, "unexpected end of file");
-            return -1;
-        }
-        if (state->eof)
-            action = LZMA_FINISH;
-
-        /* decompress and handle errors */
-#ifdef LIBXML_ZLIB_ENABLED
-        if (state->how == GZIP) {
-            state->zstrm.avail_in = (uInt) state->strm.avail_in;
-            state->zstrm.next_in = (Bytef *) state->strm.next_in;
-            state->zstrm.avail_out = (uInt) state->strm.avail_out;
-            state->zstrm.next_out = (Bytef *) state->strm.next_out;
-            ret = inflate(&state->zstrm, Z_NO_FLUSH);
-            if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) {
-                xz_error(state, Z_STREAM_ERROR,
-                         "internal error: inflate stream corrupt");
-                return -1;
-            }
-            /*
-             * FIXME: Remapping a couple of error codes and falling through
-             * to the LZMA error handling looks fragile.
-             */
-            if (ret == Z_MEM_ERROR)
-                ret = LZMA_MEM_ERROR;
-            if (ret == Z_DATA_ERROR)
-                ret = LZMA_DATA_ERROR;
-            if (ret == Z_STREAM_END)
-                ret = LZMA_STREAM_END;
-            state->strm.avail_in = state->zstrm.avail_in;
-            state->strm.next_in = state->zstrm.next_in;
-            state->strm.avail_out = state->zstrm.avail_out;
-            state->strm.next_out = state->zstrm.next_out;
-        } else                  /* state->how == LZMA */
-#endif
-            ret = lzma_code(strm, action);
-        if (ret == LZMA_MEM_ERROR) {
-            xz_error(state, LZMA_MEM_ERROR, "out of memory");
-            return -1;
-        }
-        if (ret == LZMA_DATA_ERROR) {
-            xz_error(state, LZMA_DATA_ERROR, "compressed data error");
-            return -1;
-        }
-        if (ret == LZMA_PROG_ERROR) {
-            xz_error(state, LZMA_PROG_ERROR, "compression error");
-            return -1;
-        }
-        if ((state->how != GZIP) &&
-            (ret != LZMA_OK) && (ret != LZMA_STREAM_END)) {
-            xz_error(state, ret, "lzma error");
-            return -1;
-        }
-    } while (strm->avail_out && ret != LZMA_STREAM_END);
-
-    /* update available output and crc check value */
-    state->have = had - strm->avail_out;
-    state->next = strm->next_out - state->have;
-#ifdef LIBXML_ZLIB_ENABLED
-    state->zstrm.adler =
-        crc32(state->zstrm.adler, state->next, state->have);
-#endif
-
-    if (ret == LZMA_STREAM_END) {
-#ifdef LIBXML_ZLIB_ENABLED
-        if (state->how == GZIP) {
-            if (gz_next4(state, &crc) == -1 || gz_next4(state, &len) == -1) {
-                xz_error(state, LZMA_DATA_ERROR, "unexpected end of file");
-                return -1;
-            }
-            if (crc != state->zstrm.adler) {
-                xz_error(state, LZMA_DATA_ERROR, "incorrect data check");
-                return -1;
-            }
-            if (len != (state->zstrm.total_out & 0xffffffffL)) {
-                xz_error(state, LZMA_DATA_ERROR, "incorrect length check");
-                return -1;
-            }
-            state->strm.avail_in = 0;
-            state->strm.next_in = NULL;
-            state->strm.avail_out = 0;
-            state->strm.next_out = NULL;
-        } else
-#endif
-        if (strm->avail_in != 0 || !state->eof) {
-            xz_error(state, LZMA_DATA_ERROR, "trailing garbage");
-            return -1;
-        }
-        state->how = LOOK;      /* ready for next stream, once have is 0 (leave
-                                 * state->direct unchanged to remember how) */
-    }
-
-    /* good decompression */
-    return 0;
-}
-
-static int
-xz_make(xz_statep state)
-{
-    lzma_stream *strm = &(state->strm);
-
-    if (state->how == LOOK) {   /* look for lzma / gzip header */
-        if (xz_head(state) == -1)
-            return -1;
-        if (state->have)        /* got some data from xz_head() */
-            return 0;
-    }
-    if (state->how == COPY) {   /* straight copy */
-        if (xz_load(state, state->out, state->size << 1, &(state->have)) ==
-            -1)
-            return -1;
-        state->next = state->out;
-    } else if (state->how == LZMA || state->how == GZIP) {      /* decompress */
-        strm->avail_out = state->size << 1;
-        strm->next_out = state->out;
-        if (xz_decomp(state) == -1)
-            return -1;
-    }
-    return 0;
-}
-
-static int
-xz_skip(xz_statep state, uint64_t len)
-{
-    unsigned n;
-
-    /* skip over len bytes or reach end-of-file, whichever comes first */
-    while (len)
-        /* skip over whatever is in output buffer */
-        if (state->have) {
-            n = (uint64_t) state->have > len ?
-                (unsigned) len : state->have;
-            state->have -= n;
-            state->next += n;
-            state->pos += n;
-            len -= n;
-        }
-
-    /* output buffer empty -- return if we're at the end of the input */
-        else if (state->eof && state->strm.avail_in == 0)
-            break;
-
-    /* need more data to skip -- load up output buffer */
-        else {
-            /* get more output, looking for header if required */
-            if (xz_make(state) == -1)
-                return -1;
-        }
-    return 0;
-}
-
-int
-__libxml2_xzcompressed(xzFile f) {
-    xz_head(f);
-
-    return xz_compressed(f);
-}
-
-int
-__libxml2_xzread(xzFile file, void *buf, unsigned len)
-{
-    unsigned got, n;
-    xz_statep state;
-    lzma_stream *strm;
-
-    /* get internal structure */
-    if (file == NULL)
-        return -1;
-    state = (xz_statep) file;
-    strm = &(state->strm);
-
-    /* check that we're reading and that there's no error */
-    if (state->err != LZMA_OK)
-        return -1;
-
-    /* since an int is returned, make sure len fits in one, otherwise return
-     * with an error (this avoids the flaw in the interface) */
-    if ((int) len < 0) {
-        xz_error(state, LZMA_BUF_ERROR,
-                 "requested length does not fit in int");
-        return -1;
-    }
-
-    /* if len is zero, avoid unnecessary operations */
-    if (len == 0)
-        return 0;
-
-    /* process a skip request */
-    if (state->seek) {
-        state->seek = 0;
-        if (xz_skip(state, state->skip) == -1)
-            return -1;
-    }
-
-    /* get len bytes to buf, or less than len if at the end */
-    got = 0;
-    do {
-        /* first just try copying data from the output buffer */
-        if (state->have) {
-            n = state->have > len ? len : state->have;
-            memcpy(buf, state->next, n);
-            state->next += n;
-            state->have -= n;
-        }
-
-        /* output buffer empty -- return if we're at the end of the input */
-        else if (state->eof && strm->avail_in == 0)
-            break;
-
-        /* need output data -- for small len or new stream load up our output
-         * buffer */
-        else if (state->how == LOOK || len < (state->size << 1)) {
-            /* get more output, looking for header if required */
-            if (xz_make(state) == -1)
-                return -1;
-            continue;           /* no progress yet -- go back to memcpy() above */
-            /* the copy above assures that we will leave with space in the
-             * output buffer, allowing at least one gzungetc() to succeed */
-        }
-
-        /* large len -- read directly into user buffer */
-        else if (state->how == COPY) {  /* read directly */
-            if (xz_load(state, buf, len, &n) == -1)
-                return -1;
-        }
-
-        /* large len -- decompress directly into user buffer */
-        else {                  /* state->how == LZMA */
-            strm->avail_out = len;
-            strm->next_out = buf;
-            if (xz_decomp(state) == -1)
-                return -1;
-            n = state->have;
-            state->have = 0;
-        }
-
-        /* update progress */
-        len -= n;
-        buf = (char *) buf + n;
-        got += n;
-        state->pos += n;
-    } while (len);
-
-    /* return number of bytes read into user buffer (will fit in int) */
-    return (int) got;
-}
-
-int
-__libxml2_xzclose(xzFile file)
-{
-    int ret;
-    xz_statep state;
-
-    /* get internal structure */
-    if (file == NULL)
-        return LZMA_DATA_ERROR;
-    state = (xz_statep) file;
-
-    /* free memory and close file */
-    if (state->size) {
-        lzma_end(&(state->strm));
-#ifdef LIBXML_ZLIB_ENABLED
-        if (state->init == 1)
-            inflateEnd(&(state->zstrm));
-        state->init = 0;
-#endif
-        xmlFree(state->out);
-        xmlFree(state->in);
-    }
-    xmlFree(state->path);
-    if ((state->msg != NULL) && (state->err != LZMA_MEM_ERROR))
-        xmlFree(state->msg);
-    ret = close(state->fd);
-    xmlFree(state);
-    return ret ? ret : LZMA_OK;
-}
-#endif /* LIBXML_LZMA_ENABLED */
